diff --git a/common/character_interactions/00_modifiy_vassal_contract.txt b/common/character_interactions/00_modifiy_vassal_contract.txt index 7081278c..bb6cbe59 100644 --- a/common/character_interactions/00_modifiy_vassal_contract.txt +++ b/common/character_interactions/00_modifiy_vassal_contract.txt @@ -142,69 +142,69 @@ auto_accept = yes on_accept = { - hidden_effect = { - # Struggle Catalysts - ## We work these out first so they're not invalidated by the actual effect block. - if = { - limit = { - catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } - scope:actor = { - any_character_struggle = { - involvement = involved - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - } - } - scope:actor = { - every_character_struggle = { - involvement = involved - limit = { - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - activate_struggle_catalyst = { - catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection - character = scope:actor - } - } - } - } - if = { - limit = { - catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } - scope:actor = { - any_character_struggle = { - involvement = involved - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - } - } - scope:actor = { - every_character_struggle = { - involvement = involved - limit = { - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - activate_struggle_catalyst = { - catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - character = scope:actor - } - } - } - } - - # Improving contract catalyst +# hidden_effect = { +# # Struggle Catalysts +# ## We work these out first so they're not invalidated by the actual effect block. +# if = { +# limit = { +# catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } +# scope:actor = { +# any_character_struggle = { +# involvement = involved +# activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +# CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection +# CHAR = scope:recipient +# } +# } +# } +# } +# scope:actor = { +# every_character_struggle = { +# involvement = involved +# limit = { +# activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +# CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection +# CHAR = scope:recipient +# } +# } +# activate_struggle_catalyst = { +# catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection +# character = scope:actor +# } +# } +# } +# } +# if = { +# limit = { +# catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } +# scope:actor = { +# any_character_struggle = { +# involvement = involved +# activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +# CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# CHAR = scope:recipient +# } +# } +# } +# } +# scope:actor = { +# every_character_struggle = { +# involvement = involved +# limit = { +# activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +# CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# CHAR = scope:recipient +# } +# } +# activate_struggle_catalyst = { +# catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# character = scope:actor +# } +# } +# } +# } +# +# # Improving contract catalyst # if = { # limit = { # scope:recipient.count_obligation_improvements_for_vassal > 0 @@ -238,7 +238,7 @@ # } # } # } - } +# } # Enact changes. scope:actor = { @@ -892,81 +892,17 @@ admin_liege_modify_vassal_contract_interaction = { auto_accept = yes on_accept = { - hidden_effect = { - # Struggle Catalysts - ## We work these out first so they're not invalidated by the actual effect block. - if = { - limit = { - catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } - scope:actor = { - any_character_struggle = { - involvement = involved - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - } - } - scope:actor = { - every_character_struggle = { - involvement = involved - limit = { - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - activate_struggle_catalyst = { - catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection - character = scope:actor - } - } - } - } - if = { - limit = { - catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } - scope:actor = { - any_character_struggle = { - involvement = involved - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - } - } - scope:actor = { - every_character_struggle = { - involvement = involved - limit = { - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - activate_struggle_catalyst = { - catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - character = scope:actor - } - } - } - } - - # Improving contract catalyst - if = { +# hidden_effect = { +# # Struggle Catalysts +# ## We work these out first so they're not invalidated by the actual effect block. +# if = { # limit = { -# scope:recipient.count_obligation_improvements_for_vassal > 0 +# catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } # scope:actor = { -# is_diff_faith_or_culture_trigger = { -# CHAR = scope:recipient -# STATUS = involved -# } # any_character_struggle = { # involvement = involved # activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { -# CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal +# CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection # CHAR = scope:recipient # } # } @@ -977,18 +913,82 @@ admin_liege_modify_vassal_contract_interaction = { # involvement = involved # limit = { # activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { -# CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal +# CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection # CHAR = scope:recipient # } # } # activate_struggle_catalyst = { -# catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal +# catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection # character = scope:actor # } # } # } # } - } +# if = { +# limit = { +# catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } +# scope:actor = { +# any_character_struggle = { +# involvement = involved +# activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +# CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# CHAR = scope:recipient +# } +# } +# } +# } +# scope:actor = { +# every_character_struggle = { +# involvement = involved +# limit = { +# activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +# CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# CHAR = scope:recipient +# } +# } +# activate_struggle_catalyst = { +# catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# character = scope:actor +# } +# } +# } +# } +# +# # Improving contract catalyst +# if = { +## limit = { +## scope:recipient.count_obligation_improvements_for_vassal > 0 +## scope:actor = { +## is_diff_faith_or_culture_trigger = { +## CHAR = scope:recipient +## STATUS = involved +## } +## any_character_struggle = { +## involvement = involved +## activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +## CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal +## CHAR = scope:recipient +## } +## } +## } +## } +## scope:actor = { +## every_character_struggle = { +## involvement = involved +## limit = { +## activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +## CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal +## CHAR = scope:recipient +## } +## } +## activate_struggle_catalyst = { +## catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal +## character = scope:actor +## } +## } +## } +## } +# } # Enact changes. scope:actor = { @@ -1596,81 +1596,17 @@ nomad_liege_modify_vassal_contract_interaction = { auto_accept = yes on_accept = { - hidden_effect = { - # Struggle Catalysts - ## We work these out first so they're not invalidated by the actual effect block. - if = { - limit = { - catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } - scope:actor = { - any_character_struggle = { - involvement = involved - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - } - } - scope:actor = { - every_character_struggle = { - involvement = involved - limit = { - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - activate_struggle_catalyst = { - catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection - character = scope:actor - } - } - } - } - if = { - limit = { - catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } - scope:actor = { - any_character_struggle = { - involvement = involved - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - } - } - scope:actor = { - every_character_struggle = { - involvement = involved - limit = { - activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { - CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - CHAR = scope:recipient - } - } - activate_struggle_catalyst = { - catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection - character = scope:actor - } - } - } - } - - # Improving contract catalyst +# hidden_effect = { +# # Struggle Catalysts +# ## We work these out first so they're not invalidated by the actual effect block. # if = { # limit = { -# scope:recipient.count_obligation_improvements_for_vassal > 0 +# catalyst_granted_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } # scope:actor = { -# is_diff_faith_or_culture_trigger = { -# CHAR = scope:recipient -# STATUS = involved -# } # any_character_struggle = { # involvement = involved # activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { -# CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal +# CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection # CHAR = scope:recipient # } # } @@ -1681,18 +1617,82 @@ nomad_liege_modify_vassal_contract_interaction = { # involvement = involved # limit = { # activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { -# CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal +# CATALYST = catalyst_granted_powerful_diff_faith_vassal_religious_protection # CHAR = scope:recipient # } # } # activate_struggle_catalyst = { -# catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal +# catalyst = catalyst_granted_powerful_diff_faith_vassal_religious_protection # character = scope:actor # } # } # } # } - } +# if = { +# limit = { +# catalyst_revoked_powerful_diff_faith_vassal_religious_protection_preliminary_trigger = { CHAR = scope:recipient } +# scope:actor = { +# any_character_struggle = { +# involvement = involved +# activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +# CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# CHAR = scope:recipient +# } +# } +# } +# } +# scope:actor = { +# every_character_struggle = { +# involvement = involved +# limit = { +# activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +# CATALYST = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# CHAR = scope:recipient +# } +# } +# activate_struggle_catalyst = { +# catalyst = catalyst_revoked_powerful_diff_faith_vassal_religious_protection +# character = scope:actor +# } +# } +# } +# } +# +# # Improving contract catalyst +## if = { +## limit = { +## scope:recipient.count_obligation_improvements_for_vassal > 0 +## scope:actor = { +## is_diff_faith_or_culture_trigger = { +## CHAR = scope:recipient +## STATUS = involved +## } +## any_character_struggle = { +## involvement = involved +## activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +## CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal +## CHAR = scope:recipient +## } +## } +## } +## } +## scope:actor = { +## every_character_struggle = { +## involvement = involved +## limit = { +## activate_struggle_catalyst_secondary_character_involvement_involved_trigger = { +## CATALYST = catalyst_grant_privilege_to_diff_faith_culture_vassal +## CHAR = scope:recipient +## } +## } +## activate_struggle_catalyst = { +## catalyst = catalyst_grant_privilege_to_diff_faith_culture_vassal +## character = scope:actor +## } +## } +## } +## } +# } # Enact changes. scope:actor = { diff --git a/common/coat_of_arms/dynamic_definitions/00_dynamic_coas.txt b/common/coat_of_arms/dynamic_definitions/00_dynamic_coas.txt new file mode 100644 index 00000000..f7ba41ec --- /dev/null +++ b/common/coat_of_arms/dynamic_definitions/00_dynamic_coas.txt @@ -0,0 +1,94 @@ +#k_england = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# coa_england_switches_to_france_coa_trigger = yes +# } +# coat_of_arms = k_england_france +# } +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = k_england_norman +# } +#} +# +#e_north_sea = { +# item = { +# trigger = { +# holder = title:k_denmark.holder +# } +# coat_of_arms = e_north_sea +# } +# item = { +# trigger = { +# holder = title:k_norway.holder +# } +# coat_of_arms = e_north_sea_norway +# } +# item = { +# trigger = { +# holder = title:k_england.holder +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = e_north_sea_england_normandy +# } +# item = { +# trigger = { +# OR = { +# AND = { +# holder = title:k_england.holder +# exists = global_var:danelaw_became_england +# } +# holder = title:k_daneland.holder +# } +# } +# coat_of_arms = e_north_sea_england_danelaw +# } +# item = { +# trigger = { +# holder = title:k_england.holder +# } +# coat_of_arms = e_north_sea_england_wessex +# } +#} +# +##FP2 +# +#e_spain = { +# item = { +# trigger = { +# OR = { +# holder.faith.religion = religion:islam_religion +# holder.culture = { +# OR = { +# has_coa_gfx = arabic_group_coa_gfx +# has_coa_gfx = berber_group_coa_gfx +# } +# } +# } +# } +# coat_of_arms = e_spain_islamic +# } +#} +# +#k_viet = { +# item = { +# trigger = { +# holder.top_liege.culture = { +# has_cultural_pillar = heritage_chinese +# } +# } +# coat_of_arms = k_viet +# } +# item = { +# trigger = { +# holder.top_liege.culture = { +# has_cultural_pillar = heritage_viet +# } +# } +# coat_of_arms = k_dai_viet +# } +#} +# \ No newline at end of file diff --git a/common/coat_of_arms/dynamic_definitions/00_norman_coas.txt b/common/coat_of_arms/dynamic_definitions/00_norman_coas.txt new file mode 100644 index 00000000..148767c1 --- /dev/null +++ b/common/coat_of_arms/dynamic_definitions/00_norman_coas.txt @@ -0,0 +1,181 @@ +#c_hereford = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_hereford_norman +# } +#} +#c_westmorland = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_westmorland_norman +# } +#} +#c_somerset = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_somerset_norman +# } +#} +#c_hampton = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_hampton_norman +# } +#} +#c_leicestershire = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_leicestershire_norman +# } +#} +#c_northamptonshire = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_northamptonshire_norman +# } +#} +#c_east_riding = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_east_riding_norman +# } +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_east_riding_norse +# } +#} +#c_warwickshire = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_warwickshire_norman +# } +#} +#c_gloucestershire = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_gloucestershire_norman +# } +#} +#c_wiltshire = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_wiltshire_norman +# } +#} +#c_norfolk = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_norfolk_norman +# } +#} +#c_lancashire = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_lancashire_norman +# } +#} +#c_north_riding = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_north_riding_norman +# } +#} +#d_norfolk = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = d_norfolk_norman +# } +#} +#d_lancaster = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = d_lancaster_norman +# } +#} +#d_canterbury = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = d_canterbury_norman +# } +#} +#d_bedford = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = d_bedford_norman +# } +#} +#d_york = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = d_york_norman +# } +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_york_norse +# } +#} +#c_pembrokeshire = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_pembrokeshire_norman +# } +#} +#c_glamorgan = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_glamorgan_norman +# } +#} +#c_monmouthshire = { +# item = { +# trigger = { +# coa_switch_to_norman_trigger = yes +# } +# coat_of_arms = c_monmouthshire_norman +# } +#} +# \ No newline at end of file diff --git a/common/coat_of_arms/dynamic_definitions/00_norse_coas.txt b/common/coat_of_arms/dynamic_definitions/00_norse_coas.txt new file mode 100644 index 00000000..0368e0a9 --- /dev/null +++ b/common/coat_of_arms/dynamic_definitions/00_norse_coas.txt @@ -0,0 +1,776 @@ +#e_scandinavia = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = e_scandinavia_norse +# } +#} +#k_sweden = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = k_sweden_norse +# } +#} +#d_svealand = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_svealand_norse +# } +#} +#c_upland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_upland_norse +# } +#} +#c_gastrikland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_gastrikland_norse +# } +#} +#c_sodermannaland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_sodermannaland_norse +# } +#} +#c_aland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_aland_norse +# } +#} +#d_bergslagen = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_bergslagen_norse +# } +#} +#c_vastmanland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_vastmanland_norse +# } +#} +#c_varmland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_varmland_norse +# } +#} +#c_dalarna = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_dalarna_norse +# } +#} +#c_dalabergslagen = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_dalabergslagen_norse +# } +#} +#d_vastergotland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_vastergotland_norse +# } +#} +#c_vastergotland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_vastergotland_norse +# } +#} +#c_skara = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_skara_norse +# } +#} +#c_dal = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_dal_norse +# } +#} +#c_nordmark = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_nordmark_norse +# } +#} +#d_ostergotland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_ostergotland_norse +# } +#} +#c_ostergotland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_ostergotland_norse +# } +#} +#c_kinda = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_kinda_norse +# } +#} +#c_narke = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_narke_norse +# } +#} +#d_smaland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_smaland_norse +# } +#} +#c_more = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_more_norse +# } +#} +#c_sevede = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_sevede_norse +# } +#} +#c_varend = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_varend_norse +# } +#} +#c_njudung = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_njudung_norse +# } +#} +#c_finnveden = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_finnveden_norse +# } +#} +#c_oland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_oland_norse +# } +#} +#d_norrland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_norrland_norse +# } +#} +#c_halsingland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_halsingland_norse +# } +#} +#c_medelpad = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_medelpad_norse +# } +#} +#c_angermanland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_angermanland_norse +# } +#} +#d_gotland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_gotland_norse +# } +#} +#c_gutland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_gutland_norse +# } +#} +#k_norway = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = k_norway_norse +# } +#} +#d_viken = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_viken_norse +# } +#} +#c_vingulmork = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_vingulmork_norse +# } +#} +#c_raniriki = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_raniriki_norse +# } +#} +#c_vestfold = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_vestfold_norse +# } +#} +#c_telemark = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_telemark_norse +# } +#} +#d_agder = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_agder_norse +# } +#} +#c_nedenes = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_nedenes_norse +# } +#} +#c_agdeside = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_agdeside_norse +# } +#} +#d_vestlandi = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_vestlandi_norse +# } +#} +#c_rogalandi = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_rogalandi_norse +# } +#} +#c_hordalandi = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_hordalandi_norse +# } +#} +#c_sogn = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_sogn_norse +# } +#} +#d_trandalog = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_trandalog_norse +# } +#} +#c_trandheim = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_trandheim_norse +# } +#} +#c_norwegian_more = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_norwegian_more_norse +# } +#} +#c_firdafylki = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_firdafylki_norse +# } +#} +#d_dalir = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_dalir_norse +# } +#} +#c_hedmork = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_hedmork_norse +# } +#} +#c_gudbrandsdalir = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_gudbrandsdalir_norse +# } +#} +#c_eystridalir = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_eystridalir_norse +# } +#} +#c_gauldala = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_gauldala_norse +# } +#} +#d_halogaland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_halogaland_norse +# } +#} +#c_vastvag = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_vastvag_norse +# } +#} +#c_bothin = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_bothin_norse +# } +#} +#c_namdalfylki = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_namdalfylki_norse +# } +#} +#d_iceland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_iceland_norse +# } +#} +#c_vestisland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_vestisland_norse +# } +#} +#c_nordrland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_nordrland_norse +# } +#} +#c_austisland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_austisland_norse +# } +#} +#c_sudurland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_sudurland_norse +# } +#} +#d_northern_isles = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_northern_isles_norse +# } +#} +#c_orkney = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_orkney_norse +# } +#} +#c_faereyar = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_faereyar_norse +# } +#} +#c_shetland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_shetland_norse +# } +#} +#d_jamtland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_jamtland_norse +# } +#} +#c_jamtfir = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_jamtfir_norse +# } +#} +#c_morarna = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_morarna_norse +# } +#} +#c_helgum = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_helgum_norse +# } +#} +#c_harjadalen = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_harjadalen_norse +# } +#} +#k_denmark = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = k_denmark_norse +# } +#} +#d_sjaelland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_sjaelland_norse +# } +#} +#c_sjaelland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_sjaelland_norse +# } +#} +#c_fyn = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_fyn_norse +# } +#} +#c_lolland_falster = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_lolland_falster_norse +# } +#} +#d_skane = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_skane_norse +# } +#} +#c_skane = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_skane_norse +# } +#} +#c_halland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_halland_norse +# } +#} +#c_bornholm = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_bornholm_norse +# } +#} +#c_blekinge = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_blekinge_norse +# } +#} +#d_jylland = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_jylland_norse +# } +#} +#c_aarhus = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_aarhus_norse +# } +#} +#c_viborg = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_viborg_norse +# } +#} +#c_ringkobing = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_ringkobing_norse +# } +#} +#c_aalborg = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_aalborg_norse +# } +#} +#d_slesvig = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_slesvig_norse +# } +#} +#c_slesvig = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_slesvig_norse +# } +#} +#c_vorbasse = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_vorbasse_norse +# } +#} +#c_ribe = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_ribe_norse +# } +#} +#d_western_isles = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = d_western_isles_norse +# } +#} +#c_inner_hebrides = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_inner_hebrides_norse +# } +#} +#c_dublin = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_dublin_norse +# } +#} +#c_argyll = { +# item = { +# trigger = { +# coa_switch_to_norse_trigger = yes +# } +# coat_of_arms = c_argyll_norse +# } +#} \ No newline at end of file diff --git a/common/combat_phase_events/00_knight_phase_events.txt b/common/combat_phase_events/00_knight_phase_events.txt new file mode 100644 index 00000000..b2739f99 --- /dev/null +++ b/common/combat_phase_events/00_knight_phase_events.txt @@ -0,0 +1,1892 @@ +knight_none = { + type = knight + + chance = { + base = 2000 + modifier = { + factor = 1.5 + has_perk = stalwart_leader_perk + is_ai = no + } + modifier = { + factor = 1.15 + has_perk = stalwart_leader_perk + is_ai = yes + } + modifier = { + factor = 1.25 + is_acclaimed = yes + } + modifier = { + factor = 1.25 + dynasty ?= { + has_dynasty_perk = warfare_legacy_3 + } + } + + # Wounded knights hang back + modifier = { + factor = 1.1 + has_trait_rank = { + trait = wounded + rank = 1 + } + } + modifier = { + factor = 1.2 + has_trait_rank = { + trait = wounded + rank = 2 + } + } + modifier = { + factor = 1.3 + OR = { + has_trait_rank = { + trait = wounded + rank = 3 + } + has_trait = maimed + } + } + } +} + +knight_berserker_attack = { + type = knight + + is_valid = { + has_trait = berserker + scope:combat_side.enemy_side = { + any_side_knight = { + is_alive = yes + this.prowess <= root.prowess_for_combat_event_opponent + } + } + } + + chance = { + base = 30 + modifier = { + factor = 1.5 + has_perk = stalwart_leader_perk + is_ai = no + } + modifier = { + factor = 1.15 + has_perk = stalwart_leader_perk + is_ai = yes + } + modifier = { + factor = 1.25 + is_acclaimed = yes + } + modifier = { + factor = 1.25 + dynasty ?= { + has_dynasty_perk = warfare_legacy_3 + } + } + + modifier = { + factor = 2 + has_trait = wrathful + } + modifier = { + factor = 10 + has_trait = giant + } + modifier = { + factor = 1.25 + has_trait_rank = { + trait = wounded + rank = 1 + } + } + modifier = { + factor = 1.25 + has_trait_rank = { + trait = wounded + rank = 2 + } + } + modifier = { + factor = 1.25 + has_trait_rank = { + trait = wounded + rank = 3 + } + } + modifier = { + factor = 0.25 + OR = { + has_trait = one_legged + has_trait = disfigured + has_trait = one_eyed + has_trait = maimed + } + } + } + + effect = { + save_scope_as = knight + if = { + limit = { + scope:combat_side.enemy_side = { + any_side_knight = { + is_alive = yes + this.prowess <= scope:knight.prowess_for_combat_event_opponent + } + } + } + scope:combat_side.enemy_side = { + random_side_knight = { + limit = { + is_alive = yes + this.prowess <= scope:knight.prowess_for_combat_event_opponent + } + weight = { + base = 100 + modifier = { + factor = 0.75 + is_acclaimed = yes + } + modifier = { + factor = 0.75 + has_perk = stalwart_leader_perk + } + modifier = { + factor = 0.75 + dynasty ?= { + has_dynasty_perk = warfare_legacy_3 + } + } + } + save_temporary_scope_as = enemy_knight + } + } + if = { + limit = { + scope:knight = { is_alive = yes } + scope:enemy_knight = { is_alive = yes } + } + add_prestige = knight_prestige_gain_on_kill + knight_increase_prowess_chance_effect = yes + berserker_kill_version_randomization_effect = yes + scope:enemy_knight = { + accolade = { add_glory = minimal_glory_gain } + } + } + } + } +} + +knight_become_berserker = { + type = knight + + is_valid = { + faith = { + has_doctrine = tenet_warmonger + } + OR = { + culture = { has_cultural_pillar = heritage_north_germanic } + religion = religion:folkgerman_religion + } + NOR = { + has_trait = craven + has_trait = berserker + has_trait = calm + } + } + + chance = { + base = 30 + modifier = { + factor = 1.5 + has_perk = stalwart_leader_perk + is_ai = no + } + modifier = { + factor = 1.15 + has_perk = stalwart_leader_perk + is_ai = yes + } + modifier = { + factor = 1.25 + is_acclaimed = yes + } + modifier = { + factor = 1.25 + dynasty ?= { + has_dynasty_perk = warfare_legacy_3 + } + } + modifier = { + factor = 5 + has_trait = wrathful + } + modifier = { + factor = 5 + has_trait = giant + } + modifier = { + factor = 3 + has_trait = impatient + } + modifier = { + factor = 2 + has_trait = sadistic + } + modifier = { + factor = 2 + has_trait = brave + } + modifier = { + factor = 2 + has_trait = ambitious + } + modifier = { + factor = 2 + culture = { has_cultural_pillar = heritage_north_germanic } + } + modifier = { + factor = 0.5 + has_trait = content + } + modifier = { + factor = 0.25 + has_trait = compassionate + } + modifier = { + factor = 0.25 + has_trait = temperate + } + modifier = { + factor = 0.25 + has_trait = lazy + } + modifier = { + factor = 0.25 + has_trait = patient + } + modifier = { + factor = 0.5 + has_trait_rank = { + trait = wounded + rank = 1 + } + } + modifier = { + factor = 0.5 + has_trait_rank = { + trait = wounded + rank = 2 + } + } + modifier = { + factor = 0.25 + has_trait_rank = { + trait = wounded + rank = 3 + } + } + modifier = { + factor = 0.5 + OR = { + has_trait = one_legged + has_trait = disfigured + has_trait = one_eyed + has_trait = maimed + } + } + } + + effect = { + save_scope_as = knight + if = { + limit = { + scope:combat_side.enemy_side = { + any_side_knight = { + this.prowess <= scope:knight.prowess_for_combat_event_opponent + } + } + } + scope:combat_side.enemy_side = { + random_side_knight = { + limit = { + this.prowess <= scope:knight.prowess_for_combat_event_opponent + } + weight = { + base = 100 + modifier = { + factor = 0.75 + is_acclaimed = yes + } + modifier = { + factor = 0.75 + has_perk = stalwart_leader_perk + } + modifier = { + factor = 0.75 + dynasty ?= { + has_dynasty_perk = warfare_legacy_3 + } + } + } + save_temporary_scope_as = enemy_knight + } + } + if = { + limit = { + scope:knight = { is_alive = yes } + scope:enemy_knight = { is_alive = yes } + } + scope:combat_side = { + battle_event = { + key = "berserker_rage_killed_enemy" + left_portrait = scope:knight + right_portrait = scope:enemy_knight + type = death + target_right = yes + } + } + add_prestige = knight_prestige_gain_on_kill + knight_increase_prowess_chance_effect = yes + add_trait = berserker + scope:enemy_knight = { + death = { + death_reason = death_head_ripped_off + killer = scope:knight + } + } + } + } + else = { + if = { + limit = { + scope:knight = { is_alive = yes } + } + scope:combat_side = { + battle_event = { + key = "berserker_rage_no_enemy" + left_portrait = scope:knight + type = death + target_right = yes + } + } + add_trait = berserker + } + } + accolade ?= { + add_glory = minimal_glory_gain + } + } +} + +knight_shieldmaiden_attack = { + type = knight + + is_valid = { + has_trait = shieldmaiden + scope:combat_side.enemy_side = { + any_side_knight = { + is_alive = yes + this.prowess <= root.prowess_for_combat_event_opponent + } + } + } + + chance = { + base = 30 + modifier = { + factor = 1.5 + has_perk = stalwart_leader_perk + is_ai = no + } + modifier = { + factor = 1.15 + has_perk = stalwart_leader_perk + is_ai = yes + } + modifier = { + factor = 1.25 + is_acclaimed = yes + } + modifier = { + factor = 1.25 + dynasty ?= { + has_dynasty_perk = warfare_legacy_3 + } + } + modifier = { + factor = 2 + has_trait = wrathful + } + modifier = { + factor = 10 + has_trait = giant + } + modifier = { + factor = 1.25 + has_trait_rank = { + trait = wounded + rank = 1 + } + } + modifier = { + factor = 1.25 + has_trait_rank = { + trait = wounded + rank = 2 + } + } + modifier = { + factor = 1.25 + has_trait_rank = { + trait = wounded + rank = 3 + } + } + modifier = { + factor = 0.25 + OR = { + has_trait = one_legged + has_trait = disfigured + has_trait = one_eyed + has_trait = maimed + } + } + } + + effect = { + save_scope_as = knight + if = { + limit = { + scope:combat_side.enemy_side = { + any_side_knight = { + is_alive = yes + this.prowess <= scope:knight.prowess_for_combat_event_opponent + } + } + } + scope:combat_side.enemy_side = { + random_side_knight = { + limit = { + is_alive = yes + this.prowess <= scope:knight.prowess_for_combat_event_opponent + } + weight = { + base = 100 + modifier = { + factor = 0.75 + is_acclaimed = yes + } + modifier = { + factor = 0.75 + has_perk = stalwart_leader_perk + } + modifier = { + factor = 0.75 + dynasty ?= { + has_dynasty_perk = warfare_legacy_3 + } + } + } + save_temporary_scope_as = enemy_knight + } + } + if = { + limit = { + scope:knight = { is_alive = yes } + scope:enemy_knight = { is_alive = yes } + } + add_prestige = knight_prestige_gain_on_kill + knight_increase_prowess_chance_effect = yes + shieldmaiden_kill_version_randomisation_effect = yes + scope:enemy_knight = { + # Shieldmaidens are especially good at earning glory. + accolade ?= { add_glory = minor_glory_gain } + } + } + } + } +} + +knight_becomes_incapable = { + type = knight + + is_valid = { + is_incapable = no + } + + chance = { + # This is just random bad luck of suffering a serious head injury. + base = 1 + } + + effect = { + save_scope_as = knight + # Long as we're alive, conk 'em out. + if = { + limit = { is_alive = yes } + add_trait = incapable + create_character_memory = { type = became_incapable_due_to_battle_concussion } + # We have to do this weird double-scoping due to some kind of dark pact with Code, else things won't work. + scope:new_memory = { save_scope_as = battle_memory } + scope:battle_memory = { + set_variable = { + name = battle_location + value = scope:knight.location + } + } + } + } +} + +knight_wounded = { + type = knight + + is_valid = { + NOT = { + has_trait_rank = { + trait = wounded + rank = 3 + } + } + } + + chance = { + base = 100 + modifier = { + factor = { # Prowess directly reduces chance of injury/death + value = 40 # Value at which 'immortality' happens + subtract = prowess + if = { + limit = { + has_court_position = garuda_court_position + } + add = garuda_prowess_svalue + } + divide = 40 + min = 0.1 # Everyone dies. + } + } + modifier = { # Reduce chance when outnumbering the enemy + factor = { + value = scope:combat_side.enemy_side.side_strength + divide = scope:combat_side.side_strength + multiply = 1.4 # Outnumbering 2-1 reduces chance by 30% + max = 1 + } + scope:combat_side.side_strength > scope:combat_side.enemy_side.side_strength + } + modifier = { + factor = 1.05 + culture = { + has_cultural_parameter = knights_slightly_more_prone_to_injury + } + } + modifier = { + factor = 1.1 + faith = { + has_doctrine_parameter = death_is_glory + } + } + modifier = { + factor = 4 + has_court_position = garuda_court_position + } + modifier = { + factor = 2 + has_trait = brave + } + modifier = { + factor = 0.5 + has_trait = craven + } + #House Knight defends family + ## Low decrease chance. + modifier = { + factor = accolade_defends_family_actual_low_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_low + + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_low + } + } + } + # Not cumulative with subsequent ranks. + NOR = { + any_side_knight = { + accolade ?= { + OR = { + has_accolade_parameter = accolade_defends_family_medium + has_accolade_parameter = accolade_defends_family_high + } + } + } + any_side_commander = { + accolade ?= { + OR = { + has_accolade_parameter = accolade_defends_family_medium + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + } + ## Medium decrease chance. + modifier = { + factor = accolade_defends_family_actual_medium_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_medium + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_medium + } + } + } + # Not cumulative with the subsequent rank. + NOR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + ## High decrease chance. + modifier = { + factor = accolade_defends_family_actual_high_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + } + + effect = { + save_scope_as = knight + if = { + limit = { + scope:combat_side.enemy_side = { + any_side_knight = { + this.prowess >= scope:knight.prowess_for_combat_event_opponent + } + } + } + scope:combat_side.enemy_side = { + random_side_knight = { + limit = { + this.prowess >= scope:knight.prowess_for_combat_event_opponent + } + save_temporary_scope_as = enemy_knight + add_prestige = knight_prestige_gain_on_wound_inverse + knight_increase_prowess_chance_effect = yes + } + } + scope:combat_side = { + battle_event = { + key = "knight_wounded_by_enemy" + left_portrait = scope:knight + right_portrait = scope:enemy_knight + type = wound + } + } + increase_wounds_effect = { REASON = fight } + # Scope:enemy_knight gets some glory. + scope:enemy_knight = { + if = { + limit = { + is_acclaimed = yes + } + accolade = { add_glory = minimal_glory_gain } + } + } + } + else = { + scope:combat_side = { + battle_event = { + key = "knight_wounded_no_enemy" + left_portrait = scope:knight + type = wound + } + } + increase_wounds_effect = { REASON = fight } + } + } +} + +knight_maimed = { + type = knight + + is_valid = { + NAND = { + has_trait = one_legged + has_trait = disfigured + has_trait = one_eyed + has_trait = maimed + } + } + + chance = { + base = 40 + modifier = { + factor = { # Prowess directly reduces chance of injury/death + value = 30 # Value at which 'immortality' happens + subtract = prowess + if = { + limit = { + has_court_position = garuda_court_position + } + add = garuda_prowess_svalue + } + divide = 30 + min = 0.1 # Everyone dies. + } + } + modifier = { # Reduce chance when outnumbering the enemy + factor = { + value = scope:combat_side.enemy_side.side_strength + divide = scope:combat_side.side_strength + multiply = 1.4 # Outnumbering 2-1 reduces chance by 30% + max = 1 + } + scope:combat_side.side_strength > scope:combat_side.enemy_side.side_strength + } + modifier = { # No deaths when vastly outnumbering the enemy + factor = 0 + scope:combat_side.side_strength > scope:combat_side.enemy_side.vastly_outnumbered_combat_side_threshold + } + modifier = { + factor = 1.05 + culture = { + has_cultural_parameter = knights_slightly_more_prone_to_injury + } + } + modifier = { + factor = 1.1 + faith = { + has_doctrine_parameter = death_is_glory + } + } + modifier = { + factor = 3 + has_court_position = garuda_court_position + } + modifier = { + factor = 2 + has_trait = brave + } + modifier = { + factor = 0.5 + has_trait = craven + } + #House Knight defends family + ## Low decrease chance. + modifier = { + factor = accolade_defends_family_actual_low_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_low + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_low + } + } + } + # Not cumulative with subsequent ranks. + NOR = { + any_side_knight = { + accolade ?= { + OR = { + has_accolade_parameter = accolade_defends_family_medium + has_accolade_parameter = accolade_defends_family_high + } + } + } + any_side_commander = { + accolade ?= { + OR = { + has_accolade_parameter = accolade_defends_family_medium + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + } + ## Medium decrease chance. + modifier = { + factor = accolade_defends_family_actual_medium_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_medium + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_medium + } + } + } + # Not cumulative with the subsequent rank. + NOR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + ## High decrease chance. + modifier = { + factor = accolade_defends_family_actual_high_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + } + + effect = { + save_scope_as = knight + if = { + limit = { + scope:combat_side.enemy_side = { + any_side_knight = { + this.prowess >= scope:knight.prowess_for_combat_event_opponent + } + } + } + scope:combat_side.enemy_side = { + random_side_knight = { + limit = { + this.prowess >= scope:knight.prowess_for_combat_event_opponent + } + save_temporary_scope_as = enemy_knight + add_prestige = knight_prestige_gain_on_wound_inverse + knight_increase_prowess_chance_effect = yes + } + } + scope:combat_side = { + battle_event = { + key = "knight_maimed_by_enemy" + left_portrait = scope:knight + right_portrait = scope:enemy_knight + type = wound + } + } + maimed_in_battle_effect = yes + # Scope:enemy_knight gets some glory. + scope:enemy_knight = { + accolade ?= { add_glory = minimal_glory_gain } + } + } + else = { + scope:combat_side = { + battle_event = { + key = "knight_maimed_no_enemy" + left_portrait = scope:knight + type = wound + } + } + maimed_in_battle_effect = yes + } + } +} + +knight_killed = { + type = knight + + chance = { + base = 30 + modifier = { + factor = { # Prowess directly reduces chance of injury/death + value = 30 # Value at which 'immortality' happens + subtract = prowess + if = { + limit = { + has_court_position = garuda_court_position + } + add = garuda_prowess_svalue + } + divide = 30 + min = 0.1 # Everyone dies. + } + } + modifier = { # Reduce chance when outnumbering the enemy + factor = { + value = scope:combat_side.enemy_side.side_strength + divide = scope:combat_side.side_strength + multiply = 1.4 # Outnumbering 2-1 reduces chance by 30% + max = 1 + } + scope:combat_side.side_strength > scope:combat_side.enemy_side.side_strength + } + modifier = { # No deaths when vastly outnumbering the enemy + factor = 0 + scope:combat_side.side_strength > scope:combat_side.enemy_side.vastly_outnumbered_combat_side_threshold + } + modifier = { + factor = 1.05 + culture = { + has_cultural_parameter = knights_slightly_more_prone_to_injury + } + } + modifier = { + factor = 1.1 + faith = { + has_doctrine_parameter = death_is_glory + } + } + modifier = { + factor = 3 + has_court_position = garuda_court_position + } + modifier = { + factor = 2 + has_trait = brave + } + modifier = { + factor = 0.5 + has_trait = craven + } + modifier = { + factor = 4 + has_trait_rank = { + trait = wounded + rank = 3 + } + } + # Accolades. + ## Low increase chance. + modifier = { + factor = accolade_hostile_knight_death_in_battle_actual_low_value + scope:combat_side.enemy_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_increase_hostile_knight_death_low + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_increase_hostile_knight_death_low + } + } + } + # Not cumulative with subsequent ranks. + NOR = { + any_side_knight = { + accolade ?= { + OR = { + has_accolade_parameter = accolade_increase_hostile_knight_death_medium + has_accolade_parameter = accolade_increase_hostile_knight_death_high + } + } + } + any_side_commander = { + accolade ?= { + OR = { + has_accolade_parameter = accolade_increase_hostile_knight_death_medium + has_accolade_parameter = accolade_increase_hostile_knight_death_high + } + } + } + } + } + } + ## Medium increase chance. + modifier = { + factor = accolade_hostile_knight_death_in_battle_actual_medium_value + scope:combat_side.enemy_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_increase_hostile_knight_death_medium + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_increase_hostile_knight_death_medium + } + } + } + # Not cumulative with the subsequent rank. + NOR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_increase_hostile_knight_death_high + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_increase_hostile_knight_death_high + } + } + } + } + } + ## High increase chance. + modifier = { + factor = accolade_hostile_knight_death_in_battle_actual_high_value + scope:combat_side.enemy_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_increase_hostile_knight_death_high + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_increase_hostile_knight_death_high + } + } + } + } + } + #House Knight defends family + ## Low decrease chance. + modifier = { + factor = accolade_defends_family_actual_low_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_low + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_low + } + } + } + # Not cumulative with subsequent ranks. + NOR = { + any_side_knight = { + accolade ?= { + OR = { + has_accolade_parameter = accolade_defends_family_medium + has_accolade_parameter = accolade_defends_family_high + } + } + } + any_side_commander = { + accolade ?= { + OR = { + has_accolade_parameter = accolade_defends_family_medium + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + } + ## Medium decrease chance. + modifier = { + factor = accolade_defends_family_actual_medium_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_medium + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_medium + } + } + } + # Not cumulative with the subsequent rank. + NOR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + ## High decrease chance. + modifier = { + factor = accolade_defends_family_actual_high_value + exists = house + exists = liege.house + house = liege.house + scope:combat_side = { + OR = { + any_side_knight = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + any_side_commander = { + accolade ?= { + has_accolade_parameter = accolade_defends_family_high + } + } + } + } + } + } + + effect = { + save_scope_as = knight + if = { + limit = { + has_variable = hold_court_8050_knight + employer = { + has_variable = hold_court_8050_promise + var:hold_court_8050_promise = PREV + } + } + save_scope_as = knight + location = { save_scope_as = battle_location } + var:hold_court_8050_knight = { save_scope_as = vassal } + remove_variable = hold_court_8050_knight + employer = { + remove_variable = hold_court_8050_promise + trigger_event = { + id = hold_court.8053 + days = 1 + } + } + } + save_died_in_battle_variables_effect = { + ENEMY = scope:combat_side.enemy_side.side_primary_participant + LEADER = scope:combat_side.side_primary_participant + LOCATION = scope:combat_side.combat.location + } + if = { + limit = { + scope:combat_side.enemy_side = { + any_side_knight = { + this.prowess >= scope:knight.prowess_for_combat_event_opponent + } + } + } + scope:combat_side.enemy_side = { + random_side_knight = { + limit = { + this.prowess >= scope:knight.prowess_for_combat_event_opponent + } + save_temporary_scope_as = enemy_knight + add_prestige = knight_prestige_gain_on_kill_inverse + knight_increase_prowess_chance_effect = yes + # Scope:enemy_knight gets some glory. + scope:enemy_knight = { + if = { + limit = { + is_acclaimed = yes + } + accolade = { add_glory = minor_glory_gain } + } + } + } + } + + if = { + limit = { + scope:knight = { is_alive = yes } + scope:enemy_knight = { is_alive = yes } + } + scope:combat_side = { + battle_event = { + key = "knight_killed_by_enemy" + left_portrait = scope:knight + right_portrait = scope:enemy_knight + type = death + } + # For after-battle messaging + add_to_variable_list = { + name = slain_side_knights + target = scope:knight + } + } + if = { + limit ={ + exists = house + exists = scope:enemy_knight.house + } + house = { + change_house_relation_effect = { + HOUSE = scope:enemy_knight.house + VALUE = house_relation_damage_medium_value + REASON = killed + CHAR = scope:enemy_knight + TARGET_CHAR = scope:knight + TITLE = scope:dummy_gender + } + } + } + if = { + limit = { + scope:enemy_knight = { + faith = { + has_doctrine = tenet_cranial_trophies + } + } + } + tgp_cranial_trophies_beheading_effect = { + KILLER = scope:enemy_knight + DEAD = scope:knight + } + } + death = { + death_reason = death_battle + killer = scope:enemy_knight + } + } + } + else = { + scope:combat_side = { + battle_event = { + key = "knight_killed_no_enemy" + left_portrait = scope:knight + type = death + } + # For after-battle messaging + add_to_variable_list = { + name = slain_side_knights + target = scope:knight + } + } + death = { + death_reason = death_battle + } + } + if = { + limit = { + is_acclaimed = yes + } + accolade = { + add_glory = minor_glory_gain + } + } + #Mongol severed head content + if = { + limit = { + exists = liege + is_knight_of = liege + OR = { + is_acclaimed = yes + is_close_family_of = liege + is_consort_of = liege + is_powerful_vassal_of = liege + has_relation_blood_brother = liege + } + liege = { + NOR = { + has_variable = beheaded_warrior + has_character_flag = beheaded_warrior_cooldown + } + OR = { + faith.religion = faith:tengri_pagan.religion + AND = { + culture = { + OR = { + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_turkic + } + } + has_trait = nomadic_philosophy + } + } + } + scope:combat_side = { + any_side_participant = { + this = root.liege + } + } + } + liege = { + set_variable = { + name = beheaded_warrior + value = root + } + set_variable = { + name = beheaded_warrior_foe + value = scope:combat_side.enemy_side.side_primary_participant + } + set_variable = { + name = beheaded_warrior_location + value = scope:combat_side.combat.location + } + if = { + limit = { + root = { is_powerful_vassal_of = liege } + } + set_variable = { + name = beheaded_warrior_powerful_vassal + value = root + } + } + else_if = { + limit = { + root = { is_councillor_of = liege } + } + set_variable = { + name = beheaded_warrior_councillor + value = root + } + } + if = { + limit = { + root = { + is_acclaimed = yes + } + } + set_variable = { + name = beheaded_warrior_accolade + value = root.accolade + } + } + } + } + } +} + +knight_qualify_for_accolade = { + type = knight + + is_valid = { + knight_army = { + any_army_maa_regiment = { count > 0 } + } + can_be_acclaimed = yes + prowess >= accolade_prowess_requirement_value + # accolade attributes are below max cap + # possibly: no other MAA accolade attributes? TODO LB + } + + chance = { + base = 5 + modifier = { + factor = liege.accolade_progress + } + modifier = { + factor = 1.5 + has_perk = stalwart_leader_perk + is_ai = no + } + modifier = { + factor = 1.15 + has_perk = stalwart_leader_perk + is_ai = yes + } + modifier = { + factor = 2.5 + is_acclaimed = yes + } + modifier = { + factor = 1.25 + dynasty ?= { + has_dynasty_perk = warfare_legacy_3 + } + } + modifier = { + factor = 1.5 + has_trait = brave + } + modifier = { + factor = 1.5 + has_trait = ambitious + } + modifier = { + factor = 0.75 + has_trait = content + } + modifier = { + factor = 0.75 + has_trait = lazy + } + modifier = { + factor = 0.5 + has_trait_rank = { + trait = wounded + rank = 1 + } + } + modifier = { + factor = 0.5 + has_trait_rank = { + trait = wounded + rank = 2 + } + } + modifier = { + factor = 0.25 + has_trait_rank = { + trait = wounded + rank = 3 + } + } + modifier = { + factor = 0.5 + has_trait = maimed + } + } + + effect = { + save_scope_as = acclaimed_knight + liege = { # reset liege accolade progress + set_variable = { + name = accolade_progress + value = 0 + } + } + random_list = { + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = skirmishers + } + } + skirmisher_attribute_trigger = no # don't bother unlocking if already eligible + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:skirmishers + } + set_variable = { + name = skirmisher_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = skirmisher_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = archers + NOR = { + is_maa_type = crossbowmen + is_maa_type = shenbigong + is_maa_type = accolade_maa_crossbowers + } + } + } + archer_attribute_trigger = no + } + modifier = { + factor = { # archers who AREN'T crossbows + value = knight_army.army_number_maa_regiments_of_base_type:archers + subtract = knight_army.army_number_maa_regiments_of_type:crossbowmen + subtract = knight_army.army_number_maa_regiments_of_type:shenbigong + subtract = knight_army.army_number_maa_regiments_of_type:accolade_maa_crossbowers + } + } + set_variable = { + name = archer_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = archer_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + OR = { + is_maa_type = crossbowmen + is_maa_type = shenbigong + is_maa_type = accolade_maa_crossbowers + } + } + } + crossbowmen_attribute_trigger = no + } + modifier = { + factor = { + value = knight_army.army_number_maa_regiments_of_type:crossbowmen + add = knight_army.army_number_maa_regiments_of_type:shenbigong + add = knight_army.army_number_maa_regiments_of_type:accolade_maa_crossbowers + } + } + set_variable = { + name = crossbowmen_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = crossbowmen_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = pikemen + } + } + pike_attribute_trigger = no + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:pikemen + } + set_variable = { + name = pike_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = pike_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = heavy_infantry + } + } + vanguard_attribute_trigger = no + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:heavy_infantry + } + set_variable = { + name = vanguard_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = vanguard_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = light_cavalry + } + } + outrider_attribute_trigger = no + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:light_cavalry + } + set_variable = { + name = outrider_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = outrider_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = heavy_cavalry + } + } + lancer_attribute_trigger = no + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:heavy_cavalry + } + set_variable = { + name = lancer_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = lancer_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = camel_cavalry + } + } + camelry_attribute_trigger = no + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:camel_cavalry + } + set_variable = { + name = camelry_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = camelry_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = elephant_cavalry + } + } + elephantry_attribute_trigger = no + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:elephant_cavalry + } + set_variable = { + name = elephantry_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = elephantry_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = archer_cavalry + } + } + horse_archer_attribute_trigger = no + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:archer_cavalry + } + set_variable = { + name = horse_archer_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = horse_archer_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + knight_army = { + any_army_maa_regiment = { + is_unit_type = gunpowder + } + } + gunpowder_attribute_trigger = no + } + modifier = { + factor = knight_army.army_number_maa_regiments_of_base_type:gunpowder + } + set_variable = { + name = gunpowder_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = gunpowder_attribute.battle_message_tt + + } + } + } + 10 = { + trigger = { + scope:combat_side.enemy_side = { + any_side_participant = { + faith = { + faith_hostility_level = { + target = root.faith + value >= faith_evil_level + } + } + } + } + fanatic_attribute_trigger = no + } + modifier = { # otherwise it would get diluted by maa unlocks in large armies + factor = { + value = knight_army.army_number_maa_regiments + divide = 2 + } + } + set_variable = { + name = fanatic_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = fanatic_attribute.battle_message_tt + + } + } + } + 50 = { + trigger = { + scope:combat_side = { # currently outnumbered 3 to 2 + side_army_size >= { + value = enemy_side.side_army_size + multiply = 0.66 + } + } + valiant_attribute_trigger = no + } + modifier = { # otherwise it would get diluted by maa unlocks in large armies + factor = { + value = knight_army.army_number_maa_regiments + divide = 2 + } + } + set_variable = { + name = valiant_attribute_unlock + value = yes + } + liege = { + send_interface_message = { + type = msg_accolade_eligibility + title = maa_accolade_unlock.t + left_icon = scope:acclaimed_knight + custom_tooltip = valiant_attribute.battle_message_tt + + } + } + } + } + } +} diff --git a/common/culture/cultures/NEOW_alan.txt b/common/culture/cultures/NEOW_alan.txt index 2f36502d..bba4c580 100644 --- a/common/culture/cultures/NEOW_alan.txt +++ b/common/culture/cultures/NEOW_alan.txt @@ -3,7 +3,7 @@ ossetian = { ethos = ethos_communal heritage = heritage_alan - language = language_ossetian + language = NEOW_language_ossetian martial_custom = martial_custom_male_only traditions = { tradition_horse_lords diff --git a/common/culture/cultures/NEOW_kipchak.txt b/common/culture/cultures/NEOW_kipchak.txt index 2dada181..eeee25ba 100644 --- a/common/culture/cultures/NEOW_kipchak.txt +++ b/common/culture/cultures/NEOW_kipchak.txt @@ -3,7 +3,7 @@ kumyk = { ethos = ethos_bellicose heritage = heritage_kipchak - language = language_kipchak_cuman + language = NEOW_language_kipchak_cuman martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -32,7 +32,7 @@ nogai = { ethos = ethos_bellicose heritage = heritage_kipchak - language = language_kipchak_nogai + language = NEOW_language_kipchak_nogai martial_custom = martial_custom_male_only traditions = { tradition_horse_lords @@ -59,7 +59,7 @@ balkar = { ethos = ethos_bellicose heritage = heritage_kipchak - language = language_kipchak_cuman + language = NEOW_language_kipchak_cuman martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -88,7 +88,7 @@ karachay = { ethos = ethos_stoic heritage = heritage_kipchak - language = language_kipchak_cuman + language = NEOW_language_kipchak_cuman martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -97,7 +97,7 @@ karachay = { tradition_pastoralists } - name_list = name_list_karachay_balkar + name_list = name_list_NEOW_turkish coa_gfx = { turkic_group_coa_gfx steppe_coa_gfx } building_gfx = { steppe_building_gfx } @@ -156,7 +156,7 @@ NEOW_crimean_tatar = { # VOlGAR tartat -place holder to be worked on ethos = ethos_bureaucratic heritage = heritage_kipchak - language = language_kipchak_bulgar + language = language_kipchak_cuman martial_custom = martial_custom_male_only traditions = { tradition_astute_diplomats @@ -194,7 +194,7 @@ NEOW_kazakh = { # Placeholder to be worked on ethos = ethos_stoic heritage = heritage_kipchak - language = language_kipchak_cuman + language = NEOW_language_kipchak_nogai martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -204,7 +204,7 @@ NEOW_kazakh = { # Placeholder to be worked on tradition_consanguinity_dynastic } - name_list = name_list_karachay_balkar + name_list = name_list_NEOW_turkish coa_gfx = { turkic_group_coa_gfx steppe_coa_gfx } building_gfx = { steppe_building_gfx } @@ -225,7 +225,7 @@ NEOW_bashkir = { # Placeholder to be worked on ethos = ethos_stoic heritage = heritage_kipchak - language = language_kipchak_cuman + language = NEOW_language_kipchak_cuman martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -235,7 +235,7 @@ NEOW_bashkir = { # Placeholder to be worked on tradition_consanguinity_dynastic } - name_list = name_list_karachay_balkar + name_list = name_list_NEOW_turkish coa_gfx = { turkic_group_coa_gfx steppe_coa_gfx } building_gfx = { steppe_building_gfx } @@ -256,7 +256,7 @@ NEOW_chuvash = { # Placeholder to be worked on ethos = ethos_stoic heritage = heritage_kipchak - language = language_kipchak_cuman + language = NEOW_language_kipchak_cuman martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -266,7 +266,7 @@ NEOW_chuvash = { # Placeholder to be worked on tradition_consanguinity_dynastic } - name_list = name_list_karachay_balkar + name_list = name_list_NEOW_turkish coa_gfx = { turkic_group_coa_gfx steppe_coa_gfx } building_gfx = { steppe_building_gfx } diff --git a/common/culture/cultures/NEOW_northeast_caucasian.txt b/common/culture/cultures/NEOW_northeast_caucasian.txt index 0c7a0c6e..3727d663 100644 --- a/common/culture/cultures/NEOW_northeast_caucasian.txt +++ b/common/culture/cultures/NEOW_northeast_caucasian.txt @@ -3,7 +3,7 @@ lezgin = { ethos = ethos_stoic heritage = heritage_northeast_caucasian - language = language_lezgin + language = NEOW_language_lezgin martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -32,7 +32,7 @@ avar = { ethos = ethos_bellicose heritage = heritage_northeast_caucasian - language = language_avar + language = NEOW_language_avar martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -61,7 +61,7 @@ dargin = { ethos = ethos_bellicose heritage = heritage_northeast_caucasian - language = language_dargwa + language = NEOW_language_dargwa martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -90,7 +90,7 @@ nakh = { ethos = ethos_bellicose heritage = heritage_northeast_caucasian - language = language_vainakh + language = NEOW_language_vainakh martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -104,7 +104,7 @@ nakh = { fallback = tradition_faith_bound } - name_list = name_list_nakh + name_list = name_list_NEOW_turkish coa_gfx = { steppe_coa_gfx western_coa_gfx } building_gfx = { steppe_building_gfx } diff --git a/common/culture/cultures/NEOW_northwest_caucasian.txt b/common/culture/cultures/NEOW_northwest_caucasian.txt index 43f22f53..35735bb1 100644 --- a/common/culture/cultures/NEOW_northwest_caucasian.txt +++ b/common/culture/cultures/NEOW_northwest_caucasian.txt @@ -3,7 +3,7 @@ kabardian = { ethos = ethos_spiritual heritage = heritage_northwest_caucasian - language = language_circassian + language = NEOW_language_circassian martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves @@ -33,7 +33,7 @@ adyghean = { ethos = ethos_communal heritage = heritage_northwest_caucasian - language = language_circassian + language = NEOW_language_circassian martial_custom = martial_custom_male_only traditions = { tradition_caucasian_wolves diff --git a/common/culture/name_equivalency/00_NEOW_female_names.txt b/common/culture/name_equivalency/00_NEOW_female_names.txt index 7beb40e2..3512721f 100644 --- a/common/culture/name_equivalency/00_NEOW_female_names.txt +++ b/common/culture/name_equivalency/00_NEOW_female_names.txt @@ -33,7 +33,7 @@ anastasia_female = { Anast_a_act_zia Anast_a_act_zie Anastasi_e_act_ Anastasia A andrea_female = { Andere Andr_e_act_e Andra Andrea Andreia Andreja Andreua Andrine Andriveto } andreamaria_female = { Andreua_spc_Mar_i_act_a } angela_female = { _A_act_nchela _A_act_ngela _A_grv_ngela _A_hat_ngela Aela Aelia Aelig And_e_crn_la Ang_e_grv_lo_female Angela Angelina Angelita Angjelina Angyla Anxhela Engelina Gotzone } -angeles_female = { _A_act_nchels _A_act_ngeles _A_grv_ngels } +angeles_female = { _A_act_nchels _A_act_ngeles _A_act_nxeles _A_grv_ngels } angelica_female = { Ang_e_act_lica Angelica Angelico_female Angelika Angelique Lieke } anisa_female = { Anesa Anisa } anna_female = { Aina Ainne Ana Ana_i_uml_s Anais Ane Anet Aneta Aneto Anette Anika Anila Anita Anja Anka Anke Ann Anna Annaig Anne Anneke Anneken Annette Anni Annica Annick Annicka Annie Annigje Annika Anniken Anny Ano Anouk Antje Anu Hana Hanah Hanka Hanna Hannah Hanne Naig Nu_s_crn_a Onn_a_hat_h } @@ -53,7 +53,7 @@ annamaria_female = { Amei Ane_spc_Miren Anna_spc_Maria Annamaria Anna-Vari Annem annapilar_female = { Ana_spc_Pilar } annarosa_female = { Annerose Anne-Rose } annasophia_female = { Anne-Sophie Ann-Sophie Ano-Souf_i_grv_o } -antonia_female = { Ant_o_act_nia Ant_o_grv_nia Anthonia Antoinette Antona Antonella Antoneta Antonetta Antonia Antonieta Antonietta Antonija Antouneto Antoynytty T_o_grv_nio_female Teuntje Tounieto } +antonia_female = { Ant_i_act_a Ant_o_act_nia Ant_o_grv_nia Anthonia Antoinette Antona Antonella Antoneta Antonetta Antoni_n_tld_a Antonia Antonieta Antonietta Antonija Antouneto Antoynytty T_o_grv_nio_female Teuntje Tounieto } anunciacion_female = { Anuntxi } aouda_female = { Aouda A_u_hat_dha } aphrodite_female = { Af_e_uml_rdita Aferdita Affrhodyty } @@ -131,7 +131,7 @@ colette_female = { Colette Coul_e_grv_to } concepcion_female = { Concei_c_ced__a_tld_o Concepci_o_act_ Concepci_o_act_n Concetta Conxita Sorkunde } constance_female = { Constaince Constance Constancy Constanze Coustan_c_ced_o Konstanse } consuelo_female = { Consuelo } -coralie_female = { Coral_i_act_ Coural_i_grv_o } +coral_female = { Coral Coral_i_act_ Coralia Coural_i_grv_o } cordelia_female = { Corhddylya } corinne_female = { Corina Corinna Corinne Courino } cornelia_female = { Corn_e_act_lia Cornelia Korn_e_act_lia Kornelia Neeltje Nele } @@ -172,7 +172,7 @@ elvira_female = { Albira Elv_i_act_ra Elvi Elvira Elvy Elwyrha } emeline_female = { Emblyn Emelino } emerald_female = { Emerald Esmeraudo } emily_female = { _E_act_milie Em_i_act_lia Em_i_act_lie Emelie Emil_i_act_a Emil_i_grv_o_female Emili_female Emilia Emiliano_female Emilie Emily Emmy Emylly Emyly Emylyy Milia } -emma_female = { Em_a_grv_ Ema Emma Emmai Imke Ymkje } +emma_female = { Em_a_grv_ Ema Emma Emmai Enma Imke Ymkje } emmanuella_female = { Emanuela Emanuelo_female Emmanuelle Manjola Manuela Manuello } encarnacion_female = { Encarnaci_o_act_n Encarnazi_o_act_n } enid_female = { Enid Enydd } @@ -184,7 +184,7 @@ esther_female = { Esfyrh Est_e_grv_r Ester Estera Esther } estibaliz_female = { Est_i_act_baliz Estibaliz Estitxu } ethel_female = { Etela Ethel } eugenia_female = { _E_act_ug_e_grv_nio _Z_crn_enja Eug_e_act_nia Eug_e_act_nie Eug_e_grv_nia Eukene Evgenia Owena } -eulalia_female = { _E_act_ul_a_grv_lio Eul_a_act_lia Eul_a_grv_lia Laia Olaia } +eulalia_female = { _E_act_ul_a_grv_lio Eul_a_act_lia Eul_a_grv_lia Laia Olaia Olalla } euphemia_female = { Euphemia Yufimia } eurydice_female = { Eur_i_act_dice } eva_female = { _E_grv_ve _E_grv_vo Eevi Efa Eva Evi Ewa Ewya Ieva } @@ -216,7 +216,7 @@ frida_female = { Fr_i_act_da Frida Frieda } gabriela_female = { Gabi Gabriela Gabriele Gabriella Gabrielle Gabrielo_female Gabrijela Gaby Grabiela } gael_female = { Ga_e_grv_lo Ga_e_uml_lle } gaia_female = { Kaja_Gaia } -gemma_female = { Chema Gema Gemma Gemmai Gymma Jemma } +gemma_female = { Chema Gema Gemma Gemmai Gymma Jemma Xema } genevieve_female = { Genevi_e_grv_ve Genevivo Genoveva Gineto } georgia_female = { Georgette Georgia Georgiana Georgina Gyorhgya Ji_r_crn_ina Jordina Jorgina Jourgeto Yuria } geralda_female = { Geraldina Geraldine Geraldino_female Gyrhalddyny } @@ -283,7 +283,7 @@ jahan_female = { Jihane } jamila_female = { Jamila } jawhar_female = { Cevahir } jennifer_female = { Gueni_e_grv_vro Guynyvyry Guynywyrhy Gwenhwyfar Gwenifer Gwynhwyffar Jenifer Jenifry Jennie Jennifer Jenny Jennyfer } -jessica_female = { Jesika Jessic_a_grv_ Jessica Jessicai Jessie Jessika Jyssyca Jyssyka Jyssyy } +jessica_female = { J_e_act_ssica Jesika Jessic_a_grv_ Jessica Jessicai Jessie Jessika Jyssyca Jyssyka Jyssyy } jesusa_female = { Iosune Josune } joachima_female = { Chuaquina Joaquima Joaquina } joan_female = { _Z_crn_aneta Chanig Chuana Hanneke Ibane Ioana Ione Ivana Ivanka Ivica_female J_o_act_hanna J_o_act_n_i_act_na J_o_act_na Jaine Jana Jane Janed Janedig Janet Janeto_female Janice Janina Janine Janja Janka Janna Janne Janneke Jannetje Janni Jannicke Jannie Jannigje Janny Jano_female Jansje Jantina Jantje Jany Jayne Jean_female Jeanette Jeanne Jeannette Jeannick Jeannine Jenna Jenny Joain Joainnai Joan Joana Joane Joanna Joanne Joanny Johana Johanna Johanne Johanny Jona Jone Jonna Jowanet Jwan Jyan Shena Sian Si_o_hat_n_Jane Siani Sioned Siwan Sywan V_a_hat_nia Vanja Yanet Yanna Yoana Zhaneta } @@ -291,7 +291,7 @@ joanamaria_female = { Jano-Mar_i_grv_o Johanna-Maria Jone_spc_Miren } jocelyn_female = { Joceline Jocelyne Joucelino_female } joelle_female = { Jo_e_uml_lle Jouelo_female } jordana_female = { Jordan_female } -josepha_female = { Chusefina Chusepa Giuseppina Gjyzepina J_o_act_usefino Jo_z_crn_efa Jo_z_crn_ica Jos_e_act_phine Josebe Josef_i_act_na Josefa Josefin Josefina Josefine Josepa Josepha Josephina Josephine Josipina Josyffyny Jozef_i_act_na Pepita } +josepha_female = { Chusefina Chusepa Giuseppina Gjyzepina J_o_act_usefino Jo_z_crn_efa Jo_z_crn_ica Jos_e_act_phine Josebe Josef_i_act_na Josefa Josefin Josefina Josefine Josepa Josepha Josephina Josephine Josipina Josyffyny Jozef_i_act_na Pepita Xosefina } josette_female = { Josette Jouseto_female } josiane_female = { Josiane Jousiano } judith_female = { Chudit Jitka Juddit Judit Judita Judite Judith Judyf Jutta Jwdy Jytte Yuditha } @@ -347,9 +347,9 @@ maqbula_female = { Makbule } mar_female = { Mar } marcella_female = { Marcela Marcelino_female Marcelle Marcello_female } margaret_female = { Gaid Gr_e_act_ta Greta Grete Gretel Grethe Grietje Grit Gryt M_a_act_regydd M_e_act_gane M_e_hat_g_pst_n Mairgairet Mared Maret Margalida Margaret Margareta Margarete Margaretha Margarethe Margarido Margarita Margaritta Margaux Marge Marged Margery Margit Margita Margitta Margot Margr_e_act_t Margret Margrete Margrethe Margrit Marguerite Marhgarhyt Marit Marite Marjorie Marjour_i_grv_o Mark_e_act_ta Meeta Megain Megano Mererid Merete Merethe Metka Mette Peggy Reet Reetta Rita } -maria_female = { M_a_act_ria M_a_grv_riam M_i_act_riam Ma_s_crn_a Maaike Maarja Maddi Mai Maie Maiken Maila Maili Mair Maire Mairi Maive Maj Maja Majken Mali Manca Manon Manoun Mar_i_act_a Mar_i_grv_o_female Mare Marhya Marhyy Mari Mari_e_uml_lle Maria Mariam Mariama Marie Mariechen Marieke Mariella Marietta Marija Marije Marijke Marika Marion Mariona Marioun Maris Mariska Mariso_female Marita Marja Marjeta Marju Maru_s_crn_a Maru_s_crn_ka Mary Maureen May Maya Megan Meryem Meta Mia Mie Mija Miren Mirene Miriam Miriama Mirian Mirja Mirjam Miryam Moirai Molli Mollie Moll_i_hat_ My Myriam Polly Ria } +maria_female = { M_a_act_ria M_a_grv_riam M_i_act_riam Ma_s_crn_a Maaike Maarja Maddi Mai Maie Maiken Maila Maili Mair Maire Mairi Maive Maj Maja Majken Mali Manca Manon Manoun Mar_i_act_a Mar_i_grv_o_female Mare Marhya Marhyy Mari Mari_e_uml_lle Maria Mariam Mariama Marie Mariechen Marieke Mariella Marietta Marija Marije Marijke Marika Marion Mariona Marioun Maris Mariska Mariso_female Marita Marja Marjeta Marju Maru_s_crn_a Maru_s_crn_ka Maruxa Mary Maureen May Maya Megan Meryem Meta Mia Mie Mija Miren Mirene Miriam Miriama Mirian Mirja Mirjam Miryam Moirai Molli Mollie Moll_i_hat_ My Myriam Polly Ria } mariaangel_female = { Mar_i_grv_o-Ange Mariangela } -mariaangeles_female = { Mar_i_act_a_spc__A_act_nchels Maria_spc__A_grv_ngels } +mariaangeles_female = { Mar_i_act_a_spc__A_act_nchels Mar_i_act_a_spc__A_act_ngeles Mar_i_act_a_spc__A_act_nxeles Maria_spc__A_grv_ngels } mariaanna_female = { Mar_i_grv_o-Ano Maria_spc_Anna Mariannick Marie-Annick Maryannick Rianne } mariaantonia_female = { Mar_i_act_a_spc_Antona Mar_i_grv_o-Antouneto Maria_spc_Antonieta Maria_spc_Antonietta Marie-Antoinette } mariaascension_female = { Mar_i_act_a_spc_Ascensi_o_act_n Miren_spc_Jasone } @@ -381,7 +381,7 @@ mariagrace_female = { Maria_spc_da_spc_Gra_c_ced_a Maria_spc_Grazia } mariagwen_female = { Ma_i_uml_wenn Maewenn Maiwen Maiwenn Mari-Gwenn } mariahelena_female = { Mar_i_act_a_spc_Elena Mar_i_act_a_spc_Lena Mar_i_grv_o-Eleno Mari-Leena Marilena Marja-Leena May-Helen Miren_spc_Elene } mariaimmaculata_female = { Mar_i_act_a_spc_Immaculata Mar_i_act_a_spc_Inmaculada } -mariajesus_female = { Mar_i_act_a_spc_Ches_u_act_s Mar_i_act_a_spc_Jes_u_act_s Maria_spc_Jes_u_act_s Miren_spc_Josune } +mariajesus_female = { Mar_i_act_a_spc_Ches_u_act_s Mar_i_act_a_spc_Jes_u_act_s Mar_i_act_a_spc_Xes_u_act_s Maria_spc_Jes_u_act_s Miren_spc_Josune } mariajoanna_female = { Mar_i_act_a_spc_Juana Mar_i_grv_o-Jano } mariajoseph_female = { Mar_i_act_a_spc_Chus_e_act_ Mar_i_act_a_spc_Jos_e_act_ Mar_i_grv_o-J_o_act_us_e_grv_ Maria_spc_Jos_e_act_ Maria_spc_Josep Mari-Jozeb } mariajosepha_female = { Mar_i_act_a_spc_Chusepa Maria_spc_Josefa Maria_spc_Josepa } @@ -408,7 +408,7 @@ mariarosa_female = { Mar_i_act_a_spc_Rosa Mari-Rose Mari-Rouz Mar_i_grv_o-Roso M mariarosario_female = { Mar_i_act_a_spc_Rosario } mariasofia_female = { Mar_i_act_a_spc_Sonia } mariasoledad_female = { Mar_i_act_a_spc_Soledad Mar_i_act_a_spc_Soledat Marisol Miren_spc_Bakarne } -mariatheresa_female = { Maite Mar_i_act_a_spc_Teresa Mar_i_act_a_spc_Tresa Mar_i_grv_o-Ter_e_grv_so Maria_spc_Teresa Maria_spc_Theresia Maria-Tereza Marie-Th_e_act_r_e_grv_se Marie-Theresa Mayte Miren_spc_Teresa } +mariatheresa_female = { Maite Mar_i_act_a_spc_Tareixa Mar_i_act_a_spc_Teresa Mar_i_act_a_spc_Tresa Mar_i_grv_o-Ter_e_grv_so Maria_spc_Teresa Maria_spc_Theresia Maria-Tereza Marie-Th_e_act_r_e_grv_se Marie-Theresa Mayte Miren_spc_Teresa } mariavictoria_female = { Mar_i_act_a_spc_Victoria Mar_i_act_a_spc_Vitoria Maria_spc_Vict_o_grv_ria } mariayvonne_female = { Marivon Marivono } marilyn_female = { Maril_e_grv_no_female } @@ -559,7 +559,7 @@ theodora_female = { Feodora Theodora } theodorica_female = { Dirkje } theodosia_female = { Thyoddosya } theofila_female = { Te_o_act_fila } -theresa_female = { Ter_e_act_zia Ter_e_grv_so Tere Teresa Terese Tereza Terezie Terezija Tess Tessa Th_e_act_r_e_grv_se Theresa Therese Theresia Tracey Tracy Tresa Tyrhysa } +theresa_female = { Tareixa Ter_e_act_zia Ter_e_grv_so Tere Teresa Terese Tereza Terezie Terezija Tess Tessa Th_e_act_r_e_grv_se Theresa Therese Theresia Tracey Tracy Tresa Tyrhysa } thomasina_female = { Tamzin } thora_female = { _TH__o_act_ra _TH__o_act_rd_i_act_s Tone Tonje Tora Torny } thorfrid_female = { Tove Turid Tuva } @@ -576,7 +576,7 @@ vanessa_female = { Nessa Vanesa Vanessa Vanesso_female } venus_female = { Wynus } vera_female = { V_e_crn_ra Veera Vera Veruschka Viera Wera } verena_female = { Verena } -veronica_female = { V_e_act_ronique Ver_o_grv_nica Veronica Veronicai Veronika Verounico } +veronica_female = { V_e_act_ronique Ver_o_act_nica Ver_o_grv_nica Veronica Veronicai Veronika Verounico } victoria_female = { Fict_o_act_ria Garai_n_tld_e Vent_u_grv_ri_female Vict_o_grv_ria Victoria Victoriai Viktoria Viktorie Viktorija Vit_o_grv_ri_female Vitoria Vitourino_female Viktoriya Wyctorhya Wyyctwrya } vibeke_female = { Vibeke Wibke Wiebke } vincentia_female = { Vincenza Vincenzina Vizenta } diff --git a/common/culture/name_equivalency/00_NEOW_male_names.txt b/common/culture/name_equivalency/00_NEOW_male_names.txt index d7e350b1..440e5170 100644 --- a/common/culture/name_equivalency/00_NEOW_male_names.txt +++ b/common/culture/name_equivalency/00_NEOW_male_names.txt @@ -31,7 +31,7 @@ adham_male = { Et_pst_hem Ethem } adib_male = { Edip } adil_male = { Adel Adil } adnan_male = { Adnan Ednan } -adrian_male = { Addryan Adrhyan Adri_a_act_n Adri_a_grv_ Adriaan Adrian Adriano Adrianus Adrien Adrion Adrijan } +adrian_male = { Addryan Adrhyan Adri_a_act_n Adri_a_grv_ Adriaan Adrian Adriano Adrianus Adrien Adrion Adrijan Hadri_a_act_n } advith_male = { Aahvitt Adviff Advith Ehvith } aeneas_male = { Anej Enea } agapetus_male = { Agapit } @@ -46,7 +46,7 @@ alan_male = { Al_pst_un Alain Alan Alen Alin Allan Allen Alun Arlan } alauddin_male = { Alaattin } albanus_male = { Alb_a_grv_ Alban Albano Auban } alberic_male = { Aubrey Aubrhyy } -albert_male = { _A_hat_lbert Adalbert Adalberto Aelbert Alb_e_crn_r_c_act_ Albeht Alber_pst_ Albert Alberto Albertus Alberzh Albet Albirt Albrecht Alpertti Aubert } +albert_male = { _A_hat_lbert Adalbert Adalberto Aelbert Alb_e_crn_r_c_act_ Albeht Alber_pst_ Albert Alberte_male Alberto Albertus Alberzh Albet Albirt Albrecht Alpertti Aubert } albinus_male = { Alb_i_act_n Albin Albino Alpo Aubin Bine } alcide_male = { Alcides } alex_male = { _A_act_lex _A_grv_lex Aahlex Ahl_i_hat_x Alec Alecs Aleks Alex Alick Allex Arlegz } @@ -75,8 +75,9 @@ anas_male = { Enes Enis Eniss } anastasius_male = { Anast_a_act_cio Anastas Anastasio Tasio } anatolius_male = { Anat_o_act_lio Anat_o_grv_li Anatol } andrew_male = { An_pst_dru_e_hat_ Ander Anders Andi Andr_e_act_ Andr_e_act_s Andra Andra_z_crn_ Andras Andre Andrea_male Andreas Andrej Andres Andreu Andrew Andrey Andri_e_act_u Andrias Andries Andru Andrus Andy Anroo Antero Anti Antti Atte Handrij Handrijas Ond_r_crn_ej Ondrej } -angel_male = { _A_act_nchel _A_act_ngel _A_grv_ngel _A_hat_ngelo Ael Aingeru Ange Angelo Anjel Anxhelo Engjell Gotzon } +angel_male = { _A_act_nchel _A_act_ngel _A_grv_ngel _A_hat_ngelo Ael Aingeru Ange Angelo Anjel Anxhelo Anxo Engjell Gotzon } angellouis_male = { _A_act_nchel_spc_Lo_i_act_s _A_act_ngel_spc_Luis } +angelmaria_male = { Anxo_spc_Mar_i_act_a } angus_male = { Angus } anselm_male = { Ans_e_grv_ume Anselmo Anssi Ansylm } anthony_male = { An_pst_nwy Andon Andoni Ant_o_act_n Ant_o_act_nio Ant_o_grv_ni Ante Anthoni Anthonie Anthonius Anthony Anthuhnee Anthuni Antny Antoine Anton Antoni Antonie Antonio Antonius Antony Antoon Antton Antxon Entonio Ndoc Ndue T_o_grv_ni T_o_tld_nis T_o_tld_nn T_o_tld_nu Teun Teunis Teunus Theunis Ton Tone Toni Tonny Tony Toon } @@ -111,7 +112,7 @@ ataullah_male = { Ataullah Taullah } athanasius_male = { Athanasiy Thanas } attila_male = { Atila Atilla Atle Atli Attila } attilius_male = { At_i_act_lio Attilio } -augustine_male = { Agost_i_act_n Agostinho Agostino Agust_i_act_ Agust_i_act_n Agustin August_i_act_n Augustin Augustinus Awgust Awstin Haw_s_crn_tyn } +augustine_male = { Agost_i_act_n Agosti_n_tld_o Agostinho Agostino Agust_i_act_ Agust_i_act_n Agustin August_i_act_n Augustin Augustinus Awgust Awstin Haw_s_crn_tyn } augustus_male = { _A_act_g_u_act_st Aguste Agustis Aku August Augusto Augustus Aukusti Avgust Awgust Awgust_i_hat_z Awgustus Awgystws Ohgurtus } aurelius_male = { _A_act_rel_i_act_us Aur_e_act_lio Aurel Aureli Aurelio } aurelian_male = { Aurelian } @@ -140,7 +141,7 @@ bayram_male = { Bajram Bayram } becket_male = { Becet Becket Bek_i_hat_t Bekit Br_e_brv_kat } bedivere_male = { Beddiveer Bedivere Bedivuh Bedwyr Behdihvuh Bwdiv_pst_rah } bela_male = { Belo } -benedict_male = { Be_n_crn_adik Bendiks Bendt Benead Benedetto Benedict Benedikt Benet Benezet Bengt Benito Benny Beno_i_hat_t Bent Bento Pentti } +benedict_male = { Be_n_crn_adik Bendiks Bendt Benead Benedetto Benedict Benedikt Benet Benezet Bengt Benito Benny Beno_i_hat_t Bent Bento Bieito Pentti } benjamin_male = { B_a_hat_nzhumyn Ben Bencham_i_act_n Beniamin Beniamino Benjaimin Benjam_i_act_n Benjamim Benjamin Benjemen Benjuhmin Binjummen } bentley_male = { B_a_hat_ntlyy Bahn_pst_ly Bantlee Bentlee Bentley } benvenuto_male = { Benvingut Bienvenido } @@ -154,7 +155,7 @@ bertrand_male = { Beltram Bertram Bertrand } bilal_male = { Bilal Bylal Byllall } birger_male = { B_o_stk_rge B_o_uml_rje Birger Birgir } bjorn_male = { Bj_o_stk_rn Bj_o_stk_rner Bj_o_uml_rn Bjarne Bjarni } -blasius_male = { B_l_stk_a_z_crn_ij Biagio Bl_a_grv_si Bla_z_crn_ Bla_z_crn_ej Blai Blaise Blazyj } +blasius_male = { B_l_stk_a_z_crn_ij Biagio Bl_a_grv_si Bla_z_crn_ Bla_z_crn_ej Blai Blaise Blazyj Brais } bogdan_male = { Bogdan Bohdan } bogumil_male = { Bohumil } boguslav_male = { Bohuslav } @@ -162,7 +163,7 @@ boleslav_male = { Boleslav } bonadventure_male = { Bonaventura } boniface_male = { Bonif_a_act_c Boniface Bonifazio Bounif_a_grv_ci } boris_male = { Boris Borut Borys } -borja_male = { Borcha Borja } +borja_male = { Borcha Borja Borxa } bozhidar_male = { Bo_z_crn_idar Bo_z_crn_o } brandon_male = { Br_a_hat_n_pst__o_hat_n Brandan Brandon Brannoon Brendun } brendan_male = { Brand_a_grv_ni Brendan } @@ -178,14 +179,14 @@ burhanuddin_male = { Burhanettin } burkhard_male = { Burkhard } cadwaladr_male = { Caddwaladrh Cadwaladr } cadwallon_male = { Cadwallon Cadwalun Cadwuhlun Cawdwallon } -caesar_male = { _C_ced_ezar C_e_act_sar C_e_grv_sar Cesar Cesare Kesar } +caesar_male = { _C_ced_ezar C_e_act_sar C_e_grv_sar Ces_a_act_reo Cesar Cesare Kesar } caetano_male = { Caetano Cayetano Gaet_a_grv_ Gaiet_a_grv_ Gaietan } caleb_male = { Caleb Kaileb } calixtus_male = { Calist Kallist } calvin_male = { Callwyn } cameron_male = { Kaimeron Kamyron } camillus_male = { Camihe Camil Camill Camille Camillo Camilo Kamil_Camillus } -candidus_male = { C_a_hat_ndido Kandido } +candidus_male = { C_a_act_ndido C_a_hat_ndido Kandido } canute_male = { Knud Knu_c_act_ Knut } caradog_male = { Caradog Carhaddog } carloman_male = { Carhloman } @@ -199,7 +200,7 @@ celestine_male = { Celestin Celestino } celso_male = { Cels Celso } chakrabarti_male = { Chahkrabartwy Chakrehbahteh } charles_male = { Carl Carle Carles Carlo Carlos Ch_a_hat_hrlz Chahlz Charhlys Carel Charle Charles Charlez Charlie Charllys Charls Charlz Kaarel Kaarle Kaarlo Kale Kalle Karel Karl Karlos Karol Korla Sharlys Siarl } -charlesalbert_male = { Carlos_spc_Alberto } +charlesalbert_male = { Carlos_spc_Alberte Carlos_spc_Alberto } charlesandrew_male = { Carlos_spc_Andr_e_act_s } charlesanthony_male = { Carlos_spc_Ant_o_act_n } charlesedward_male = { Carl-Edvard Carlos_spc_Eduardo } @@ -241,9 +242,9 @@ daron_male = { D_ae_ren Daar_pst_n Daron Daroon Darun Dayrun } darwish_male = { Dervish } david_male = { D_a_act_vid D_a_grv_vi Da_eth_i Dafydd Daivie Daivudd Danvid Daut Dav_i_act_ Dav_i_act__eth_ Daveth David Davide Davy Deivad Dewi Divi Taavi } dawlat_male = { Devlet } -delphinus_male = { Delf_i_act_ Delfim } +delphinus_male = { Delf_i_act_ Delf_i_act_n Delfim } denethor_male = { Denafor Denethor Denethuh Denuhthaw Dwn_pst_thar } -denis_male = { D_e_act_nis Danis Ddennis Ddynnys Denez Denis Dennis Denys Dinis Dion_i_act_s Dion_i_act_sio Dion_y_act_z Dionisio Dionys } +denis_male = { D_e_act_nis Danis Ddennis Ddynnys Den_i_act_s Denez Denis Dennis Denys Dinis Dion_i_act_s Dion_i_act_sio Dion_y_act_z Dionisio Dionys } dermot_male = { Dermod } desiderius_male = { Deidi_e_act_ Desider Dezider Didier } detlev_male = { Delf Detlef Detleff Detlev Detlof Detlov Ditlev D_z_act_etlaf } @@ -274,7 +275,7 @@ eleutherius_male = { Eleut_e_act_rio Lefter } eligius_male = { Aloi El_o_act_i Eloi Eloy } elijah_male = { _I_dot_lyas Eelis El_i_act_as El_i_grv_o Eli_a_act__s_crn_ Elies Elia Elias Eliaz I_l_crn_ja Il_pst_iya Ilaz Ilja Iljas Iljaz Ilyes Lyes } elio_male = { _E_act_lio Elio } -eliseus_male = { El_i_act_sio Eliseo Yelisey } +eliseus_male = { El_i_act_sio Eliseo Eliseu Yelisey } elliot_male = { Elliot Ellioth Elliott Ellyot Elywt } elros_male = { Elrhos Elros } elof_male = { Elof Eluf Elov Elow } @@ -293,7 +294,7 @@ ertughrul_male = { Ertu_g_brv_rul } erwin_male = { Erv_i_act_n Ervin Erwein Erwin } eskil_male = { Eskil Esko } ethan_male = { Ethan Izan } -eugene_male = { _E_act_ug_e_grv_ni Eug_e_act_nio Eugen Eugene Eugeni Eugenio Eujen Euken Euj_e_crn_n Ev_z_crn_en Evgeniy Ewgyny Ja_u_brv_hien Ja_u_brv_hienij Uchenio Yauhen } +eugene_male = { _E_act_ug_e_grv_ni Eug_e_act_nio Eugen Eugene Eugeni Eugenio Eujen Euken Euj_e_crn_n Ev_z_crn_en Evgeniy Ewgyny Ja_u_brv_hien Ja_u_brv_hienij Uchenio Ux_i_act_o Yauhen } euphemius_male = { Yufimiy } eusebius_male = { Eus_e_act_bio Eusebi Eusebio } eustace_male = { Eustace Eustache } @@ -303,6 +304,7 @@ ewald_male = { Evald Ewald } eyjolfur_male = { Ejolf Eyj_o_act_lfur } eystein_male = { _O_stk_ystein Eysteinn } eyvind_male = { _O_stk_yvind Even Eyvind } +ezechiel_male = { Ezequiel } ezra_male = { Ezra } fabian_male = { Fabi_a_act_n Fabi_a_grv_ Fabian Fabiano Fabien Fabjan Ffabyan } fabius_male = { F_a_act_bio Fabio } @@ -320,8 +322,8 @@ fatih_male = { Fatih } faustinus_male = { Faustin Faustino } fawzi_male = { Faouzi Fevzi } felician_male = { Felician Feliciano } -felix_male = { F_e_act_lix F_e_grv_lis F_e_grv_lix Feliks Felix } -ferdinand_male = { F_e_crn_rdi_n_act_at Ferdinand Ferdinando Fernand Fernando Ferr_a_act_n Ferran Nande } +felix_male = { F_e_act_lix F_e_grv_lis F_e_grv_lix Feliks Felix Fiz } +ferdinand_male = { F_e_crn_rdi_n_act_at Ferdinand Ferdinando Fern_a_act_n Fernand Fernando Ferr_a_act_n Ferran Nande } fergus_male = { Fergus Ffyrhgus } fidel_male = { Fedele Fidel Fidelino Fidelis } finlay_male = { Ffynnlay } @@ -338,11 +340,11 @@ francisanthony_male = { Francescantonio } francisemmanuel_male = { Francho_spc_Manuel Francisco_spc_Manuel } francisjesus_male = { Francisco_spc_Jes_u_act_s } francisjohn_male = { Francesc_spc_Joan Patxi_spc_Joseba } -francisjoseph_male = { Francesc_spc_Josep Francho_spc_Chus_e_act_ Francisco_spc_Jos_e_act_ Franz_spc_Josef Franz-Josef } +francisjoseph_male = { Francesc_spc_Josep Francho_spc_Chus_e_act_ Francisco_spc_Jos_e_act_ Francisco_spc_Xos_e_act_ Franz_spc_Josef Franz-Josef } francismichael_male = { Francisco_spc_Miguel Frank-Michael Franz_spc_Michael } francisofassisi_male = { Francesc_spc_d_pst_Ass_i_act_s } francispaula_male = { Francesc_spc_de_spc_Paula } -francisxavier_male = { Franc_e_act_s-Savi_e_act_ Francesc_spc_Xavier Francesco_spc_Saverio Francho_spc_Chabier Francisco_spc_Javier Franti_s_crn_ek_spc_Xaver Frantzisko_spc_Xabier Patxi_spc_Xabier } +francisxavier_male = { Franc_e_act_s-Savi_e_act_ Francesc_spc_Xavier Francesco_spc_Saverio Francho_spc_Chabier Francisco_spc_Javier Francisco_spc_Xabier Franti_s_crn_ek_spc_Xaver Frantzisko_spc_Xabier Patxi_spc_Xabier } frederick_male = { Bed_r_crn_ich Bjedrich Federico Ffred Ffrhydyrhyc Ffryddyryc Ffryddyryk Fiete Fietje Fr_e_act_d_e_act_ric Freark Fred Fredderick Freddie Freddy Frederi Frederic Frederick Frederico Frederig Frederik Fredi Fredrik Freerk Frerich Fri_eth_rik Fric Fridrich Frieder Friedrich Frits Fritz Fryco Priit } frederickhenry_male = { Fritz-Heiner } friedemann_male = { Friedemann Frjedom_e_crn_n } @@ -360,12 +362,12 @@ gaston_male = { Gaston } gawayn_male = { Gaivin Gavin Gawayn Gawyyn } genghis_male = { Cengiz } geoffrey_male = { Bogum_e_crn_r Bohum_e_crn_r Gaufre Geoffrei Geoffrey Geoffroy Godefroy Godffrhyy Godfrey Goffredo Gottfried Govert Gyoffrhyy Gyoffryy Gyr_eth_ir Jaufret Jeff Jeffrey Sieffre } -george_male = { _O_uml_rjan Chorche G_o_uml_ran G_o_uml_rgen Georg George Georges Giorgio Gjergj Gjergji Gorch Gorka Gyorgy Gyorhgy Hieorhij J_o_grv_rgi J_o_stk_rgen J_o_stk_rn J_o_uml_ran J_o_uml_rg J_o_uml_rn J_u_uml_rgen J_u_uml_ri Ji_r_crn__i_act_ Jord Jordi Jordy Jorge Jori Joris Jorj Jorn Jorres Jory Juraj Jure Jurgi Jurij Jurjen Juro Jury Jyri Jyrki Schorsch Si_o_hat_r Siorus Youri Yrj_o_uml_ Yuriy } +george_male = { _O_uml_rjan Chorche G_o_uml_ran G_o_uml_rgen Georg George Georges Giorgio Gjergj Gjergji Gorch Gorka Gyorgy Gyorhgy Hieorhij J_o_grv_rgi J_o_stk_rgen J_o_stk_rn J_o_uml_ran J_o_uml_rg J_o_uml_rn J_u_uml_rgen J_u_uml_ri Ji_r_crn__i_act_ Jord Jordi Jordy Jorge Jori Joris Jorj Jorn Jorres Jory Juraj Jure Jurgi Jurij Jurjen Juro Jury Jyri Jyrki Schorsch Si_o_hat_r Siorus Xurxo Youri Yrj_o_uml_ Yuriy } georgejames_male = { Jordi_spc_Jaume } georgejoseph_male = { Jordi_spc_Josep } gerald_male = { G_e_act_rald G_e_crn_ralt Geraildd Gerald Gerallt Gerold Giraud Guerau Gyraldd Gyralldd Gyrhaldd } gerard_male = { Cherardo Geart Geert Gerard Gerardo Gerardus Gerd Gerhard Gerhardus Gerhart Gerit Gerrit Gert Girard Jorrit Jurre Jurrit Jurryt Kert } -german_male = { Cherm_a_act_n Garmon Germ_a_act_n Germ_a_grv_ German Germano Kerman } +german_male = { Cherm_a_act_n Garmon Germ_a_act_n Germ_a_grv_ German Germano Kerman Xerm_a_act_n } gerontius_male = { Geraint Gerens Gerontius Gyraynt Gyrhaynt } gervasius_male = { Gerv_a_act_sio Gervasi } geza_male = { Gejza } @@ -443,7 +445,7 @@ humphrey_male = { Humfrhyy Humffryy Humphrei Humphrey Hwmffryy } husni_male = { Housni Hysni } hussam_male = { Houssam } hussein_male = { H_u_dot_seyin Hocine Houssen Hysen } -hyacinth_male = { Giacinto Jacint Jacinto } +hyacinth_male = { Giacinto Jacint Jacinto Xacinto } hyde_male = { _AE_id Hahyd Haid Hyde } hyginus_male = { Higini Igino } hywel_male = { Hoel Howel Howell Hywel } @@ -457,7 +459,7 @@ ingmar_male = { Ingemar Ingimar } ingvar_male = { Ihar Igor Ingvar Ingwer } inge_male = { Inge_male Ingi } inigo_male = { _I_act__n_tld_igo Eneko I_n_tld_igo } -innocent_male = { Innocenzo Inoc_e_hat_ncio } +innocent_male = { Innocenzo Inoc_e_hat_ncio Inocencio } irenaeus_male = { Erino Ireneo Ireni_e_act_u } irfan_male = { _I_dot_rfan Erfan } isaac_male = { _I_dot_shak Iikka Iiro Isaac Isaak Isaiaic Isak Iisakki } @@ -477,18 +479,18 @@ jafar_male = { Cafer Xhafer } jahan_male = { Cihan } jahangir_male = { Cihangir } jahid_male = { Cahit } -jair_male = { Chair Jairo } +jair_male = { Chair Jairo Xairo } jalal_male = { Celal Xhelal } jalaluddin_male = { Celalettin Xheladin } jalil_male = { Jalyl } jamal_male = { Cemal Djamel Jamel Xhemal } jamaluddin_male = { Jamel_spc_Eddine } -james_male = { Chaime Diago Diego Diogo Giacomo Iago Iakov Jaak Jaakko Jaap Jacob Jacobo Jacobus Jacques Jago Jagoba Jaicob Jaime Jaimes Jaka Jakes Jakez Jakob Jakub Jakup Jaky James Jamie Jamys Jamyy Jaque Jaume Jeppe Jim Jimi Jimmy Kaupo Koop Santi Santiago Thiago Tiago Xanti Xhimi Yago Yakup } +james_male = { Chaime Diago Diego Diogo Giacomo Iago Iakov Jaak Jaakko Jaap Jacob Jacobo Jacobus Jacques Jago Jagoba Jaicob Jaime Jaimes Jaka Jakes Jakez Jakob Jakub Jakup Jaky James Jamie Jamys Jamyy Jaque Jaume Jeppe Jim Jimi Jimmy Kaupo Koop Santi Santiago Thiago Tiago Xacobe Xaime Xanti Xhimi Yago Yakup } jamesgeorge_male = { Jacob-G_o_uml_ran } jamesjoseph_male = { Jaume_spc_Josep } jamesyves_male = { Jacques-Yves Jaque-Ives } jamil_male = { Cemil Xhemil } -januarius_male = { Gener Gennaro Gianuario Janu_a_act_rio } +januarius_male = { Gener Gennaro Gianuario Janu_a_act_rio Xenaro } jared_male = { Jarydd } jasmin_male = { Gelsomino } jason_male = { Jason Jasoun } @@ -499,37 +501,37 @@ jawid_male = { Cavit Xhavit Xhevit } jekyll_male = { Jycyll Jykyll } jeremy_male = { Geremia Jarkko Jarmo Jarno J_e_act_r_e_act_my Jere Jerem Jerem_i_grv_a Jeremy Jorma Jyrymyah } jesse_male = { Jesse } -jesus_male = { Ches_u_act_s Iosu Isa Issa Jes_u_act_s Josu Yosu } +jesus_male = { Ches_u_act_s Iosu Isa Issa Jes_u_act_s Josu Xes_u_act_s Yosu } jesusangel_male = { Ches_u_act_s_spc__A_act_nchel Jes_u_act_s_spc__A_act_ngel } jesusanthony_male = { Ches_u_act_s_spc_Ant_o_act_n Jes_u_act_s_spc_Antonio } jesusemmanuel_male = { Ches_u_act_s_spc_Manuel Jes_u_act_s_spc_Manuel } -jesusmaria_male = { Ches_u_act_s_spc_Mar_i_act_a Jes_u_act_s_spc_Mar_i_act_a } +jesusmaria_male = { Ches_u_act_s_spc_Mar_i_act_a Jes_u_act_s_spc_Mar_i_act_a Xes_u_act_s_spc_Mar_i_act_a } jesusmichael_male = { Ches_u_act_s_spc_Miguel } jesusxavier_male = { Ches_u_act_s_spc_Chabier } jihad_male = { Cihat } -joachim_male = { Achim Aki Chuaqu_i_act_n Gioacchino Iokin J_a_act_chym J_o_act_chymj Jaakkima Joachim Joakim Joakin Joaqu_i_act_n Joaquim Jochem Jochen Jochum Jogchum Jokin Jokum Jouachin Quim } +joachim_male = { Achim Aki Chuaqu_i_act_n Gioacchino Iokin J_a_act_chym J_o_act_chymj Jaakkima Joachim Joakim Joakin Joaqu_i_act_n Joaquim Jochem Jochen Jochum Jogchum Jokin Jokum Jouachin Quim Xaqu_i_act_n } job_male = { Ejup Ey_u_uml_p Eyy_u_uml_p Job } -joel_male = { Choel Jo_e_uml_l Joel Jou_e_grv_l } -john_male = { _Z_crn_an An_z_crn_e An_z_crn_ej Ants Chuan D_z_crn_oni Efan Evan Giovanni Gjin Gjon Hampus Hanjo Hann Hannes Hanno Hanns Hannu Hans Hanu_s_crn_ Hanzo Hasse Honza Iain Ian Iban Ieuan Ifan Ioan Ion Iv_a_act_n Ivan Iwan J_a_act_n J_o_act_hann J_o_act_hannes J_o_act_n J_o_uml_ns Jaan Jaanus Jac Jack Jak Jake Jaky Jan Jan_z_crn_e Janar Janek Janez Jani Janick Janko Jann Janne_male Jannes Jannick Jannik Jaouen Jeen Jean Jehannes Jens Jo_a_tld_o Joan_male Joanes Joannes Johan Johann Johannes John Johnny Jon Joni Jonny Jouni Jowan Juan Juha Juhan Juhana Juhani Juho Jukk Jukka Juku Jussi Manex Sean Shane Shaun Si_o_hat_n Sjon Xhani Xhon Yahya Yan Yann Yannick Yannig Yoan Yoann Yohan Yohann Yon Xon } +joel_male = { Choel Jo_e_uml_l Joel Jou_e_grv_l Xoel } +john_male = { _Z_crn_an An_z_crn_e An_z_crn_ej Ants Chuan D_z_crn_oni Efan Evan Giovanni Gjin Gjon Hampus Hanjo Hann Hannes Hanno Hanns Hannu Hans Hanu_s_crn_ Hanzo Hasse Honza Iain Ian Iban Ieuan Ifan Ioan Ion Iv_a_act_n Ivan Iwan J_a_act_n J_o_act_hann J_o_act_hannes J_o_act_n J_o_uml_ns Jaan Jaanus Jac Jack Jak Jake Jaky Jan Jan_z_crn_e Janar Janek Janez Jani Janick Janko Jann Janne_male Jannes Jannick Jannik Jaouen Jeen Jean Jehannes Jens Jo_a_tld_o Joan_male Joanes Joannes Johan Johann Johannes John Johnny Jon Joni Jonny Jouni Jowan Juan Juha Juhan Juhana Juhani Juho Jukk Jukka Juku Jussi Manex Sean Shane Shaun Si_o_hat_n Sjon Xhani Xhon Yahya Yan Yann Yannick Yannig Yoan Yoann Yohan Yohann Yon Xo_a_act_n Xon } johnandrew_male = { Ion_spc_Ander Joan_spc_Andreu Jon_spc_Ander Juan_spc_Andr_e_act_s } johnanthony_male = { Chuan_spc_Ant_o_act_n Giovannantonio Joan_spc_Antoni Jon_spc_Andoni Juan_spc_Antonio } johnbaptist_male = { Gianbattista Giovanni_spc_Battista Jan-Batisto Jean-Baptiste Joan_spc_Baptista Johann_spc_Baptist Johann-Baptist Jon_spc_Ugutz Yann-Vadezour } johnbernard_male = { Jan-Bernat } -johncharles_male = { Chuan_spc_Carlos Giancarlo Hans-Karl Jan-Carle Joan_spc_Carles Jon_spc_Karlos Juan_spc_Carlos Juku-Kalle Yann-Charlez } +johncharles_male = { Chuan_spc_Carlos Giancarlo Hans-Karl Jan-Carle Joan_spc_Carles Jon_spc_Karlos Juan_spc_Carlos Juku-Kalle Xo_a_act_n_spc_Carlos Yann-Charlez } johnchristian_male = { Hans-Christian } johnchristopher_male = { Jan-Crist_o_grv_u } johnclaudius_male = { Gianclaudio Jan-Gl_a_grv_udi Jean-Claude Yann-Glaod } -johnemmanuel_male = { Chuan_spc_Manuel Joan_spc_Manel Jon_scp_Imanol Juan_spc_Manuel } +johnemmanuel_male = { Chuan_spc_Manuel Joan_spc_Manel Jon_scp_Imanol Juan_spc_Manuel Xo_a_act_n_spc_Manuel } johneric_male = { Jan-Eric Jan-Erik John-Erik } -johnfrancis_male = { Chuan_spc_Francho Gianfranco Jan-Franc_e_act_s Joan_spc_Francesc Juan_spc_Francisco Yann-Fa_n_tld_ch } +johnfrancis_male = { Chuan_spc_Francho Gianfranco Jan-Franc_e_act_s Joan_spc_Francesc Juan_spc_Francisco Xo_a_act_n_spc_Francisco Yann-Fa_n_tld_ch } johnfrederick_male = { Jann-Fiete } johngeorge_male = { Hansgeorg Hans-Georg Hansj_o_uml_rg Hans-J_o_uml_rg Hans-J_o_uml_rn Hans-J_u_uml_rgen Hansj_u_uml_rgen Joan_spc_Jordi } johnhenry_male = { Hanns-Heinz Hans-Heinrich Hans-Hinrich Jaan-Hendrik Jan-Hendrik Jan-Henrik } -johnignatius_male = { Chuan_spc_Ignacio Jon_spc_I_n_tld_aki Juan_spc_Ignacio } +johnignatius_male = { Chuan_spc_Ignacio Jon_spc_I_n_tld_aki Juan_spc_Ignacio Xo_a_act_n_spc_Ignacio } johnjames_male = { Jan-Jaque Juan_spc_Diego Yann-Jakez } johnjoachim_male = { Hanns-Joachim Hans-Joachim Hansjochen } -johnjoseph_male = { Chuan_spc_Chus_e_act_ Hans-Josef Iv_a_act_n_spc_Jos_e_act_ Joan_spc_Josep Jon_spc_Joseba Juan_spc_Jos_e_act_ } -johnlouis_male = { Chuan_spc_Lu_i_act_s Gianluigi Hansludwig Jan-Lou_i_uml_s Jon_spc_Koldo Juan_spc_Luis Yann-Loeiz } +johnjoseph_male = { Chuan_spc_Chus_e_act_ Hans-Josef Iv_a_act_n_spc_Jos_e_act_ Joan_spc_Josep Jon_spc_Joseba Juan_spc_Jos_e_act_ Xo_a_act_n_spc_Xos_e_act_ } +johnlouis_male = { Chuan_spc_Lu_i_act_s Gianluigi Hansludwig Jan-Lou_i_uml_s Jon_spc_Koldo Juan_spc_Luis Xo_a_act_n_spc_Lois Yann-Loeiz } johnluke_male = { Gianluca Jan-Lu Jean-Luc Yann-Luk } johnmark_male = { Jan-Marc Joan_spc_Marc Yann-Vark } johnmartin_male = { Hans-Martin Hansmartin } @@ -547,35 +549,37 @@ johnyves_male = { Jan-Ives Jean-Yvon Yann-Erwan } jonah_male = { J_o_act_nas Jon_a_act__s_crn_ Jona_Jonah Jonah Jonas Joona Joonas Youn_e_grv_s Yunis Yunus } jonathan_male = { Johnafan Jonafan Jonaitain Jonat_a_act_n Jonatan Jonathan Jounatan } jordan_male = { Jord_a_grv_ Jordan Jorddain Jorddan Jorhddan Jourdan } -joseph_male = { Chus_e_act_ Giuseppe Ioseba Iosif Jazep J_o_act_us_e_grv_ Jo_z_crn_e Jo_z_crn_ef Job_Joseph Joe Joep Joey Joosep Jos Jos_e_act_ Jose Joseba Josef Josep Joseph Josephus Josif Josip Josyff Joxe Jozeb Jozef Jusuf Juuso Pino Youssef Yusuf Zef } +joseph_male = { Chus_e_act_ Giuseppe Ioseba Iosif Jazep J_o_act_us_e_grv_ Jo_z_crn_e Jo_z_crn_ef Job_Joseph Joe Joep Joey Joosep Jos Jos_e_act_ Jose Joseba Josef Josep Joseph Josephus Josif Josip Josyff Joxe Jozeb Jozef Jusuf Juuso Pino Xos_e_act_ Youssef Yusuf Zef } josephalbert_male = { Chus_e_act__spc_Alberto Jos_e_act__spc_Alberto } josephandrew_male = { Chus_e_act__spc_Andr_e_act_s Jos_e_act__spc_Andr_e_act_s } -josephangel_male = { Chus_e_act__spc__A_act_nchel Jos_e_act__spc__A_act_ngel Joseba_spc_Gotzon Josep_spc__A_grv_ngel } -josephanthony_male = { Chus_e_act__spc_Ant_o_act_n Giuseppantonio Jos_e_act__spc_Antonio Joseba_spc_Andoni Josep_spc_Antoni } -josephcharles_male = { Chus_e_act__spc_Carlos Jos_e_act__spc_Carlos } -josephemmanuel_male = { Chus_e_act__spc_Manuel Jos_e_act__spc_Manuel Joseba_spc_Imanol Josep_spc_Manel } -josephferdinand_male = { Jos_e_act__spc_Fernando } +josephangel_male = { Chus_e_act__spc__A_act_nchel Jos_e_act__spc__A_act_ngel Joseba_spc_Gotzon Josep_spc__A_grv_ngel Xos_e_act__spc_Anxo } +josephanthony_male = { Chus_e_act__spc_Ant_o_act_n Giuseppantonio Jos_e_act__spc_Antonio Joseba_spc_Andoni Josep_spc_Antoni Xos_e_act__spc_Ant_o_act_n } +josephcharles_male = { Chus_e_act__spc_Carlos Jos_e_act__spc_Carlos Xos_e_act__spc_Carlos } +josephemmanuel_male = { Chus_e_act__spc_Manuel Jos_e_act__spc_Manuel Joseba_spc_Imanol Josep_spc_Manel Xos_e_act__spc_Manoel Xos_e_act__spc_Manuel } +josephferdinand_male = { Jos_e_act__spc_Fernando Xos_e_act__spc_Fernando } josephfrancis_male = { Chus_e_act__spc_Francho Jos_e_act__spc_Francisco } josephhenry_male = { Chus_e_act__spc_Enrique Jos_e_act__spc_Enrique } -josephignatius_male = { Chus_e_act__spc_Ignacio Jos_e_act__spc_Ignacio Joseba_spc_I_n_tld_aki } +josephignatius_male = { Chus_e_act__spc_Ignacio Jos_e_act__spc_Ignacio Joseba_spc_I_n_tld_aki Xos_e_act__spc_Ignacio } +josephjames_male = { Xos_e_act__spc_Diego } josephjoachim_male = { Chus_e_act__spc_Chuaqu_i_act_n Joseba_spc_Jokin } -josephlouis_male = { Chus_e_act__spc_Lo_i_act_s Jos_e_act__spc_Luis Joseba_spc_Koldo Josep_spc_Lluís } +josephjohn_male = { Xos_e_act__spc_Xo_a_act_n } +josephlouis_male = { Chus_e_act__spc_Lo_i_act_s Jos_e_act__spc_Luis Joseba_spc_Koldo Josep_spc_Lluís Xos_e_act__spc_Lois } josephmary_male = { Chus_e_act__spc_Mar_i_act_a Jos_e_act__spc_Mar_i_act_a Jose_spc_Mari Joseba_spc_Mirena Josep_spc_Maria Joxe_spc_Mari Jozeb-Mari Txema } josephmichael_male = { Chus_e_act__spc_Miguel Jos_e_act__spc_Miguel Joseba_spc_Mikel Josep_spc_Miquel } -josephraymond_male = { Chus_e_act__spc_Ram_o_act_n Jos_e_act__spc_Ram_o_act_n Joseba_spc_Erramun Josep_spc_Ramon } +josephraymond_male = { Chus_e_act__spc_Ram_o_act_n Jos_e_act__spc_Ram_o_act_n Joseba_spc_Erramun Josep_spc_Ramon Xos_e_act__spc_Ram_o_act_n } josephvincent_male = { Chus_e_act__spc_Viz_e_act_n } josephxavier_male = { Chus_e_act__spc_Chabier Jos_e_act__spc_Javier Joseba_spc_Xabier } joshua_male = { Chosu_e_act_ Joschua Josh Joshua Joshuai Josu_e_act_ Josu_e_grv_ } josiah_male = { Josia } jost_male = { Jo_s_crn_t Jobst Joost Jost } judicael_male = { Ithel Judica_e_uml_l Judikael } -jules_male = { Chulio Giulio J_u_act_l_i_act_us J_u_act_lio J_u_grv_li Jule Jules Juli Julio Julius Jullys Julys Yuliy } +jules_male = { Chulio Giulio J_u_act_l_i_act_us J_u_act_lio J_u_grv_li Jule Jules Juli Julio Julius Jullys Julys Xulio Yuliy } julescaesar_male = { Chulio_spc_C_e_act_sar Julio_spc_C_e_act_sar } -julian_male = { Chuli_a_act_n Giuliano Julen Juli_a_act_n Juli_a_grv__name Juli_a_tld_o Juliain Julian Julien Juluan Julyan Xhuliano } +julian_male = { Chuli_a_act_n Giuliano Julen Juli_a_act_n Juli_a_grv__name Juli_a_tld_o Juliain Julian Julien Juluan Julyan Xhuliano Xi_a_act_n Xiao } junayd_male = { C_u_uml_neyt } justin_male = { Giustino Iestyn Just_i_act_n Justin Justino Justyn } justinian_male = { Iwstinian } -justus_male = { Just Justo Justus } +justus_male = { Just Justo Justus Xusto } kai_male = { Cai Cay Kai Kaj Kay } kalevi_male = { Kalev Kalevi } kamal_male = { Kemal Qemal } @@ -604,7 +608,7 @@ lambert_male = { Lambert Lamberto Lambertus Lammert Lamprecht } lancelot_male = { Laincelot Lancelot Lanse_l_bar_ut Lanselot Lansuhlot } latif_male = { Latif Latuf } lauge_male = { Lage Lauge } -lawrence_male = { _L_stk_awrjenc L_a_act_rus Laiwrence Laora_n_tld_s Lars Lasse Lassi Laur_e_grv_ns Laurence_male Laurens Laurent Laurentius Laurhyncy Lauri Laurie Lawrence Lawrynsy Llauryncy Lloren_c_ced_ Lorenz Lorenzo Lori_e_act_n Louren_c_ced_o Lourens Louw Lovro Renzo Vav_r_crn_inec Vavrinec } +lawrence_male = { _L_stk_awrjenc L_a_act_rus Laiwrence Laora_n_tld_s Lars Lasse Lassi Laur_e_grv_ns Laurence_male Laurens Laurent Laurentius Laurhyncy Lauri Laurie Lawrence Lawrynsy Llauryncy Lloren_c_ced_ Lorenz Lorenzo Lori_e_act_n Louren_c_ced_o Lourens Lourenzo Louw Lovro Renzo Vav_r_crn_inec Vavrinec } leander_male = { Lander Leander Leandre Leandro } leif_male = { Leif } lenaig_male = { L_e_act_na_i_uml_c Lenaig } @@ -619,9 +623,9 @@ linus_male = { Linus } lionel_male = { Leonel Lionel Liounel Llyonyll Lyonyl } lloyd_male = { Lloydd Loydd } lothar_male = { Clotaire Lota_r_act_ Lothar } -louis_male = { _L_crn_udov_i_act_t Alo_i_act_sio Alois Alojz Alojzij Alojs Aloys Aloysius Koldo _L_stk_ud_z_act_ik L_u_act__eth_v_i_act_k Lew Lewis Llu_i_act_s Llywys Lo_i_act_s Lo_i_uml_c Lo_i_uml_g Lo_i_uml_s Lodewijk Loeiz Lojze Lou_i_uml_s Louis Love Lovis Lu_i_act_s Lud_e_crn_k Ludev_i_act_t Ludovic Ludv_i_act_k Ludvig Ludwig Lui Luigi Luis Luiz Lutz Lwddowyyc Lywys } +louis_male = { _L_crn_udov_i_act_t Alo_i_act_sio Alois Alojz Alojzij Alojs Aloys Aloysius Koldo _L_stk_ud_z_act_ik L_u_act__eth_v_i_act_k Lew Lewis Llu_i_act_s Llywys Lo_i_act_s Lo_i_uml_c Lo_i_uml_g Lo_i_uml_s Lodewijk Loeiz Lois_male Lojze Lou_i_uml_s Louis Love Lovis Lu_i_act_s Lud_e_crn_k Ludev_i_act_t Ludovic Ludv_i_act_k Ludvig Ludwig Lui Luigi Luis Luiz Lutz Lwddowyyc Lywys } louisalbert_male = { Lo_i_act_s_spc_Alberto Luis_spc_Alberto } -louisangel_male = { Lo_i_act_s_spc__A_act_nchel } +louisangel_male = { Lo_i_act_s_spc__A_act_nchel Lois_spc_Anxo } louisanthony_male = { Lo_i_act_s_spc_Ant_o_act_n Luis_spc_Antonio } louischarles_male = { Lo_i_act_s_spc_Carlos Luis_spc_Carlos } louisemmanuel_male = { Lo_i_act_s_spc_Manuel Luis_spc_Manuel } @@ -659,7 +663,7 @@ marinus_male = { Marin Marino Marinus } marius_male = { M_a_act_rio M_a_act_rius M_a_grv_ri_male M_a_grv_rius Marhyus Mario Marij_o_act_ Marius } mark_male = { Mairk Marc Marco Marcos Marcus Marek Margh Margo_male Margus Marhc Mark Mark_u_act_s Markko Markku Marko Markos Markus } markanthony_male = { Marc_spc_Antoni Marco_spc_Antonio } -martial_male = { Mar_c_ced_al Marciau } +martial_male = { Mar_c_ced_al Marcial Marciau } martin_male = { M_a_uml_rt Maarten Mairtin Marhtyn Maro_s_crn_ Mart Mart_i_act_ Mart_i_act_n Marteinn Marten Martim Martin Martinus Martijn Martti Martyn Mattin M_e_crn_to M_e_crn_r_c_act_in M_e_crn_rko Mertyn Mjertyn Morten } marwan_male = { Marouane Marwan } masud_male = { Masoud Mesut } @@ -679,7 +683,7 @@ mercury_male = { Myrhcurhy } merlin_male = { Merlijn Merlin Myrddin Myrhlyn Myrlyn } methodius_male = { Metod Metod_e_crn_j } michael_male = { Chiel Maic Maik Maikel Meical Meik Mich_e_grv_u Michael Michaiel Micha_l_stk_ Micha_s_act_ Michal Michel Michele Michiel Mick Micka_e_uml_l Miguel Miha Mihael Mihajlo Mihal Mihangel Mihhail Mihkel Miho Miika Miikka Mika Mikael Mike Mikel Mikhayl Mikk Mikke Mikkel Mikko Miqu_e_grv_u Miquel Misha Misha_e_uml_l Miska Mitchell Mitxel Mixel Mychayl Mychayll Myghal Myshayl Mytchyll } -michaelangel_male = { Michelangelo Mikel_spc_Anjel Mikel_spc_Gotzon Miguel_spc__A_act_nchel Miguel_spc__A_act_ngel Miquel_spc__A_grv_ngel } +michaelangel_male = { Michelangelo Mikel_spc_Anjel Mikel_spc_Gotzon Miguel_spc__A_act_nchel Miguel_spc__A_act_ngel Miguel_spc_Anxo Miquel_spc__A_grv_ngel } michaelanthony_male = { Michelantonio Miguel_spc_Ant_o_act_n } milan_male = { Lan Milan Milijan } miroslav_male = { M_e_crn_ros_l_stk_aw Mirek Miro Miroslav } @@ -729,7 +733,7 @@ nihad_male = { Nihat } nimatullah_male = { Nimetullah } niyazi_male = { Nijazi Niyazi } nizamuddin_male = { Nizamettin } -noah_male = { N_o_act_i Noah Nou_e_grv_ Nuhi } +noah_male = { N_o_act_i No_e_act_ Noah Nou_e_grv_ Nuhi } noel_male = { Calendau Noel } norbert_male = { Norbert Norberto Norbjer_c_act_ Nourbert } norman_male = { Norhman Norman Normyn Nwrman } @@ -763,7 +767,7 @@ paul_male = { P_a_act_ll P_a_rng_l Paavali Paavo Pablo Paiul Pal Palle Palo Paol paulinus_male = { Paolino Paul_i_act_ Paulin Paulino } pauljohn_male = { Paul_spc_Johannes } pauljoseph_male = { Pablo_spc_Jos_e_act_ } -pelagius_male = { Pel_a_act_gio Pelagius } +pelagius_male = { Paio Pel_a_act_gio Pelagius } percival_male = { Percivail Percival Percy Pyrcywyall Pyrhcywyal Pyrsyval } peter_male = { Kepa P_a_uml_r P_e_act_tur P_e_grv_ire P_e_crn_tr P_e_crn_t_s_crn_ P_e_hat_r P_e_uml_ter Peder Pedr Pedro Peedo Peep Peer Peet Peeter Peetu Pehr Peio Pelle Pekka Pello Per Peran Pere Periko Pero Peru Peter Petja Petr Petri Petro Petrok Petrus Petter Petteri Piatro Piatru_s_act_ Pier Piero Pierre Piers Pierrick Piet Pietari Pieter Pietro Pirro Piter Pjet_e_uml_r Pyke Pyrh Pyt Pytyr Pytyrh Pyyrs } peteranthony_male = { P_e_grv_ire-Ant_o_grv_ni Pero_spc_Ant_o_act_n } @@ -826,8 +830,8 @@ ridwan_male = { R_i_dot_dvan Redouane Ridvan } robert_male = { Bob Bobby R_o_act_bert Rhobert Rhobyn Rhobyrht Rob Robert Rob_e_crn_rt Roberto Robertus Robin Robyrt Roope Roparzh Roubert Rupert Rupprecht } robinhood_male = { Raahbinhuwd Robinhood Robynhud Robynud } roch_male = { Kaljo Kalju Roc Rocco Rochus Rocky Rok } -roderick_male = { Rhodri Rhydderch Rodarik Rodderick Rodehrick Roderic Roderick Roderig Rodrigo Roudrigo Rui Ruy } -roger_male = { R_o_uml_tger R_u_uml_diger Rhogyrh Rog_e_act_rio Rogel_mdn_li Roger Rogier Rogyr Roje Rougi_e_act_ Rutger } +roderick_male = { Rhodri Rhydderch Roi Rodarik Rodderick Rodehrick Roderic Roderick Roderig Rodrigo Roudrigo Rui Ruy } +roger_male = { R_o_uml_tger R_u_uml_diger Rhogyrh Rog_e_act_rio Rogel_mdn_li Roger Rogier Rogyr Roje Rougi_e_act_ Roxelio Rutger } roland_male = { Orlando Rholandd Roland Rolando Rollandd Rouland Wrlanddo } roman_male = { Raman Rhoman Rhufon Rom_a_act_n Rom_a_grv_ Romain Roman Romano Romek Rouman } romeo_male = { Romeo Romeu } @@ -867,7 +871,7 @@ sebastian_male = { _S_crn_ebesti_a_act_n Bas Basti_a_act_n Bastiaan Bastian Bo_s secundinus_male = { Secundino } secundus_male = { Secondo Segundo } seraphin_male = { Seraf_i_act_n Serafim Serafino } -sergius_male = { S_e_grv_rgi Serchio Serge Sergei Sergej Sergi Sergio Serigi Serj Serxhio Siarhiej } +sergius_male = { S_e_grv_rgi Serchio Serge Sergei Sergej Sergi Sergio Serigi Serj Serxhio Serxio Siarhiej } severinus_male = { S_o_uml_nke S_o_stk_ren S_o_uml_ren Sever_i_act_n Severiano Severin Severino } severus_male = { Seferus Severi Sywyrhus } shaban_male = { Shaban } @@ -901,7 +905,7 @@ solomon_male = { S_u_act_leyman Sal_o_act_mon Salomon Seleven Selyf Slimane Soul spartacus_male = { Spartak Spartakus } spencer_male = { Spynsyr } spiridon_male = { Spiro } -stanislaus_male = { Estanislau Stane Stanis_l_stk_a_u_brv_ Staschko Stanij Stanislav Stanislaw } +stanislaus_male = { Estanislau Stane Stanis_l_stk_a_u_brv_ Staschko Stanij Stanislas Stanislav Stanislaw } stanley_male = { Stainlei Stanlyy } stavros_male = { Stavri } stein_male = { Steen Steinn Sten } @@ -993,10 +997,10 @@ wajdi_male = { Vecdi } walid_male_male = { Veli } walid_male = { Walid } walter_male = { Gauchi_e_act_ Gauthier Gualter Gwallter Valter Valtteri Wa_l_stk_tar Wailter Walltyr Walt Walter Walther Waltteri Waltyr Waltyrh Wout Wouter } -wenceslaus_male = { V_a_act_clav V_e_crn_nceslav Viacheslav Viachasla_u_brv_ Vysheslav Wenceslao Wenzel } +wenceslaus_male = { V_a_act_clav V_e_crn_nceslav Venceslau Viacheslav Viachasla_u_brv_ Vysheslav Wenceslao Wenzel } werner_male = { V_a_uml_rner Verner Werner Wessel } wilfried_male = { Wilfred Wilfrid Wilfried Vilfred } -william_male = { Bill Billy Gilen Guilherme Guill_e_act_n Guillaume Guillem Gwilym Liam Llyam Lomig Lyam Guih_e_grv_n Guih_e_grv_ume Guillermo Gwilherm Gwillam Jami Pim Vil_e_act_m Vilhelm Vilhj_a_act_lmur Vilho Vili Viliam Viljami Viljem Viljo Vilko Ville Villem Villi Villu Villy Vilyam Wilhelm Wilhelmus Wiljam Wiljo Wilken Will Wille Willem Willi Williaim William Willm Wilm Willy Wim Wylem Wyli Wyllyam } +william_male = { Bill Billy Gilen Guilherme Guill_e_act_n Guillaume Guillem Gwilym Liam Llyam Lomig Lyam Guih_e_grv_n Guih_e_grv_ume Guillerme Guillermo Gwilherm Gwillam Jami Pim Vil_e_act_m Vilhelm Vilhj_a_act_lmur Vilho Vili Viliam Viljami Viljem Viljo Vilko Ville Villem Villi Villu Villy Vilyam Wilhelm Wilhelmus Wiljam Wiljo Wilken Will Wille Willem Willi Williaim William Willm Wilm Willy Wim Wylem Wyli Wyllyam } wissam_male = { Wissam Wissem } wittekind_male = { Wittekind Witki_n_act_t } wojtek_male = { Vojt_e_crn_ch Vojta Vojtech } diff --git a/common/culture/name_lists/NEOW_french.txt b/common/culture/name_lists/NEOW_french.txt index f4231d18..eda8be6b 100644 --- a/common/culture/name_lists/NEOW_french.txt +++ b/common/culture/name_lists/NEOW_french.txt @@ -268,7 +268,7 @@ Patrice Paul Philippe Pierre Quentin Raoul Rapha_e_uml_l Raymond Ren_e_act_ Renaud Richard Roland Robert Robin Roger Romain - S_e_act_bastien Saladin Salomon Serge Simon St_e_act_phane Swann Sylvain + S_e_act_bastien Saladin Salomon Serge Simon St_e_act_phane Stanislas Swann Sylvain Tanguy Th_e_act_o Thez Thibault Thierry Thomas Timoth_e_act_e Tristan Ulysse Vercing_e_act_torix Victor Vincent diff --git a/common/culture/name_lists/NEOW_galician.txt b/common/culture/name_lists/NEOW_galician.txt new file mode 100644 index 00000000..731adb36 --- /dev/null +++ b/common/culture/name_lists/NEOW_galician.txt @@ -0,0 +1,309 @@ +name_list_NEOW_galician = { + + cadet_dynasty_names = { + "dynn__A_act_lvarez" + "dynn_A_n_tld__o_act_n" + "dynn_Acu_n_tld_a" + "dynn_Agui_o_act_n" + "dynn_Alonso" + "dynn_Ares" + "dynn_Arias" + "dynn_Barreiro" + "dynn_Blanco" + "dynn_Botana" + "dynn_Calvo" + "dynn_Cambeiro" + "dynn_Cancela" + "dynn_Carreira" + "dynn_Carril" + "dynn_Casal" + "dynn_Castro" + "dynn_Codesido" + "dynn_Conde" + "dynn_Costoya" + "dynn_Cotelo" + "dynn_Crujeiras" + "dynn_D_a_act_vila" + "dynn_D_i_act_az" + { "dynnp_de" "dynn_Dios" }" + { "dynnp_de" "dynn_Frutos" }" + "dynn_Deiros" + "dynn_Dom_i_act_nguez" + "dynn_Fandi_n_tld_o" + "dynn_Feij_o_act_o" + "dynn_Fern_a_act_ndez" + "dynn_Ferro" + "dynn_Figueroa" + "dynn_Fontal" + "dynn_Fraga" + "dynn_G_o_act_mez" + "dynn_Garc_i_act_a" + "dynn_Garea" + "dynn_Gayoso" + "dynn_Gonz_a_act_lez" + "dynn_Gude" + "dynn_Iglesias" + "dynn_Lema" + "dynn_L_o_act_pez" + "dynn_M_e_act_ndez" + "dynn_M_i_act_guez" + "dynn_Mari_n_tld_o" + "dynn_Mart_i_act_nez" + "dynn_Mato" + "dynn_Mej_i_act_a" + "dynn_Mella" + "dynn_Mera" + "dynn_Montenegro" + "dynn_Montero" + "dynn_Mosquera" + "dynn_Mu_n_tld_iz" + "dynn_N_u_act__n_tld_ez" + "dynn_Neira" + "dynn_Ocampo" + "dynn_Olveira" + "dynn_P_e_act_rez" + "dynn_Pamp_i_act_n" + "dynn_Parada" + "dynn_Pardo" + "dynn_Paz" + "dynn_Pazos" + "dynn_Pena" + "dynn_Pereira" + "dynn_Pombo" + "dynn_Pose" + "dynn_Puga" + "dynn_Quintela" + "dynn_R_u_act_a" + "dynn_Rama" + "dynn_Ramos" + "dynn_Rendo" + "dynn_Rey" + "dynn_Rial" + "dynn_Rivas" + "dynn_Rodr_i_act_guez" + "dynn_Rouco" + "dynn_S_a_act_nchez" + "dynn_Sampedro" + "dynn_Sanda" + "dynn_Sant_i_act_n" + "dynn_Santamarina" + "dynn_Santos" + "dynn_Seoane" + "dynn_Silva" + "dynn_Silvela" + "dynn_Souto" + "dynn_Su_a_act_rez" + "dynn_Taboada" + "dynn_Tojo" + "dynn_V_a_act_zquez" + "dynn_Varela" + "dynn_Veiga" + "dynn_Verdes" + "dynn_Vidal" + "dynn_Villar" + } + + dynasty_names = { + "dynn__A_act_lvarez" + "dynn_A_n_tld__o_act_n" + "dynn_Acu_n_tld_a" + "dynn_Agui_o_act_n" + "dynn_Alonso" + "dynn_Ares" + "dynn_Arias" + "dynn_Barreiro" + "dynn_Blanco" + "dynn_Botana" + "dynn_Calvo" + "dynn_Cambeiro" + "dynn_Cancela" + "dynn_Carreira" + "dynn_Carril" + "dynn_Casal" + "dynn_Castro" + "dynn_Codesido" + "dynn_Conde" + "dynn_Costoya" + "dynn_Cotelo" + "dynn_Crujeiras" + "dynn_D_a_act_vila" + "dynn_D_i_act_az" + { "dynnp_de" "dynn_Dios" }" + { "dynnp_de" "dynn_Frutos" }" + "dynn_Deiros" + "dynn_Dom_i_act_nguez" + "dynn_Fandi_n_tld_o" + "dynn_Feij_o_act_o" + "dynn_Fern_a_act_ndez" + "dynn_Ferro" + "dynn_Figueroa" + "dynn_Fontal" + "dynn_Fraga" + "dynn_G_o_act_mez" + "dynn_Garc_i_act_a" + "dynn_Garea" + "dynn_Gayoso" + "dynn_Gonz_a_act_lez" + "dynn_Gude" + "dynn_Iglesias" + "dynn_Lema" + "dynn_L_o_act_pez" + "dynn_M_e_act_ndez" + "dynn_M_i_act_guez" + "dynn_Mari_n_tld_o" + "dynn_Mart_i_act_nez" + "dynn_Mato" + "dynn_Mej_i_act_a" + "dynn_Mella" + "dynn_Mera" + "dynn_Montenegro" + "dynn_Montero" + "dynn_Mosquera" + "dynn_Mu_n_tld_iz" + "dynn_N_u_act__n_tld_ez" + "dynn_Neira" + "dynn_Ocampo" + "dynn_Olveira" + "dynn_P_e_act_rez" + "dynn_Pamp_i_act_n" + "dynn_Parada" + "dynn_Pardo" + "dynn_Paz" + "dynn_Pazos" + "dynn_Pena" + "dynn_Pereira" + "dynn_Pombo" + "dynn_Pose" + "dynn_Puga" + "dynn_Quintela" + "dynn_R_u_act_a" + "dynn_Rama" + "dynn_Ramos" + "dynn_Rendo" + "dynn_Rey" + "dynn_Rial" + "dynn_Rivas" + "dynn_Rodr_i_act_guez" + "dynn_Rouco" + "dynn_S_a_act_nchez" + "dynn_Sampedro" + "dynn_Sanda" + "dynn_Sant_i_act_n" + "dynn_Santamarina" + "dynn_Santos" + "dynn_Seoane" + "dynn_Silva" + "dynn_Silvela" + "dynn_Souto" + "dynn_Su_a_act_rez" + "dynn_Taboada" + "dynn_Tojo" + "dynn_V_a_act_zquez" + "dynn_Varela" + "dynn_Veiga" + "dynn_Verdes" + "dynn_Vidal" + "dynn_Villar" + } + + male_names = { + 2 = { + _A_act_lex _A_act_lvaro + _O_act_scar + Aar_o_act_n Abel Afonso Aitor Alberte_male Alexandre Andr_e_act_ Ant_o_act_n Antonio Anxo + Borxa Brais Bruno + C_e_act_sar Carlos Christian Cristi_a_act_n + Daniel David Diego Duarte + Edgar Eloi + Fernando Francisco Francisco_spc_Xabier Francisco_spc_Xos_e_act_ + Gabriel Gael Gonzalo Guillerme + Hadri_a_act_n Heitor Henrique Hugo + Iago Ignacio Isaac Ismael Iv_a_act_n + Jonathan + Kevin + Lois_male Lucas + Manuel Marcos Mario Mart_i_act_n Mateo Miguel Miguel_spc_Anxo + Nicol_a_act_s No_e_act_ Noel + Paulo Pedro + Ra_u_act_l Rafael Ram_o_act_n Ricardo Roi Roberto Rodrigo Rub_e_act_n + Samuel Santiago Serxio + V_i_act_tor + Xabier Xes_u_act_s Xo_a_act_n Xo_a_act_n_spc_Carlos Xo_a_act_n_spc_Lois Xo_a_act_n_spc_Manuel Xo_a_act_n_spc_Xos_e_act_ Xoel Xos_e_act_ Xos_e_act__spc_Ant_o_act_n Xos_e_act__spc_Anxo Xos_e_act__spc_Carlos Xos_e_act__spc_Lois Xos_e_act__spc_Manuel Xos_e_act__spc_Mar_i_act_a Xos_e_act__spc_Ram_o_act_n Xulio Xurxo + Yago + } + 1 = { + Agosti_n_tld_o Alberte_spc_Manuel Albino Alfredo Amador Amancio Anacleto Anxo_spc_Mar_i_act_a Armando Armindo Arsenio Artur Avelino + Benigno Bernardino Bieito + C_a_act_ndido Caetano Camilo Carlos_spc_Alberte Casimiro Celestino Celso Ces_a_act_reo Claudio Cosme + Dami_a_act_n Daniel_spc_Xos_e_act_ Dar_i_act_o Delf_i_act_n Delio Den_i_act_s Domingos Donato + Edelmiro Eliseu Emilio Emilio_spc_Xos_e_act_ Estanislau Ezequiel + Federico Fern_a_act_n Fiz Francisco_spc_Manuel + Gregorio Gumersindo Gustavo + Herminio + Ian Ignacio_spc_Xabier Inocencio + Laureano Lois_spc_Anxo Lourenzo Luciano + Manoel Manuel_spc_Antonio Manuel_spc_Henrique Manuel_spc_Xaime Marcelino Marcial Mariano Mauro Maximino Micaela Modesto + Nicasio + Paio Pastor Perfecto + Ram_o_act_n_spc_Anxo Ramiro Rodolfo Roxelio + Seraf_i_act_n Serxio_spc_Xos_e_act_ Severino + Telesforo Telmo Tom_e_act_ + Ubaldo Ux_i_act_o + V_i_act_tor_spc_Manuel Valdo Valent_i_act_n Venancio Venceslau Vicente + Wilson + Xacinto Xacobe Xaime Xairo Xaqu_i_act_n Xavier Xenaro Xerm_a_act_n Xes_u_act_s_spc_Mar_i_act_a Xi_a_act_n Xiao Xo_a_act_n_spc_Alberte Xos_e_act__spc_Armando Xos_e_act__spc_Diego Xo_a_act_n_spc_Ignacio Xo_a_act_n_spc_Francisco Xos_e_act__spc_Fernando Xos_e_act__spc_Ignacio Xos_e_act__spc_Manoel Xos_e_act__spc_Xo_a_act_n Xusto + } + } + female_names = { + 2 = { + Alba Alexandra Alicia Ana Ant_i_act_a + Beatriz Bel_e_act_n + Carme Carolina Cristina + Estela + Irene + J_e_act_ssica + Lorena + Mar_i_act_a Mar_i_act_a_spc_Tareixa Mar_i_act_a_spc_Xes_u_act_s Marta Mateo + Nerea Noelia + Olalla + Patricia Paula Pilar + Raquel Rosa_spc_Mar_i_act_a + Sara Sof_i_act_a Sonia + Tamara + Ver_o_act_nica Vitoria + } + 1 = { + _A_act_nxeles + Antoni_n_tld_a + B_a_act_rbara Bego_n_tld_a Branca + Carmela Coralia + Desir_e_act_e + Edelmira Elisa Emilia Enma Ester + Hayd_e_act_e + Inmaculada + Lu_i_act_sa Lu_i_act_sa_spc_Mar_i_act_a Luz + Maia Malena Mar_i_act_a_spc__A_act_nxeles Mar_i_act_a_spc_Bel_e_act_n Mar_i_act_a_spc_Cristina Mar_i_act_a_spc_Luz Mar_i_act_a_spc_Olga Mar_i_act_a_spc_Paz Mar_i_act_a_spc_Vitoria Maruxa Matilde + Olaia Olga Olimpia Olivia + Paz + Ramona Rosa + Saleta + Tareixa + Xema Ximena Xosefina + } + } + dynasty_of_location_prefix = "dynnp_von" + + # Chance of male children being named after their paternal or maternal grandfather, or their father. Sum must not exceed 100. + pat_grf_name_chance = 60 + mat_grf_name_chance = 10 + father_name_chance = 10 + + # Chance of female children being named after their paternal or maternal grandmother, or their mother. Sum must not exceed 100. + pat_grm_name_chance = 10 + mat_grm_name_chance = 60 + mother_name_chance = 10 + + + mercenary_names = { + } +} diff --git a/common/culture/name_lists/NEOW_normaund.txt b/common/culture/name_lists/NEOW_normaund.txt index 1f995f23..31fd8ca5 100644 --- a/common/culture/name_lists/NEOW_normaund.txt +++ b/common/culture/name_lists/NEOW_normaund.txt @@ -312,7 +312,7 @@ Patrice Paul Philippe Pierre Quentin Raoul Rapha_e_uml_l Raymond Ren_e_act_ Renaud Richard Roland Robert Robin Roger Romain - S_e_act_bastien Saladin Salomon Sam Serge Simon St_e_act_phane Swann Sylvain + S_e_act_bastien Saladin Salomon Sam Serge Simon St_e_act_phane Stanislas Swann Sylvain Tanguy Th_e_act_o Thez Thibault Thierry Thomas Timoth_e_act_e Tristan Ulysse Vercing_e_act_torix Victor Vincent diff --git a/common/culture/pillars/NEOW_heritage.txt b/common/culture/pillars/NEOW_heritage.txt index e04f4d3a..5420fe7d 100644 --- a/common/culture/pillars/NEOW_heritage.txt +++ b/common/culture/pillars/NEOW_heritage.txt @@ -228,4 +228,13 @@ heritage_northwest_caucasian = { } } audio_parameter = european +} +heritage_northeast_caucasian = { + type = heritage + is_shown = { + heritage_is_shown_trigger = { + HERITAGE = heritage_northeast_caucasian + } + } + audio_parameter = european } \ No newline at end of file diff --git a/common/culture/pillars/NEOW_language.txt b/common/culture/pillars/NEOW_language.txt index ab376689..21ef6e2d 100644 --- a/common/culture/pillars/NEOW_language.txt +++ b/common/culture/pillars/NEOW_language.txt @@ -2225,11 +2225,11 @@ language_kipchak_bulgar = { color = { 129 45 45 } } -language_kipchak_cuman = { +NEOW_language_kipchak_cuman = { type = language is_shown = { language_is_shown_trigger = { - LANGUAGE = language_kipchak_cuman + LANGUAGE = NEOW_language_kipchak_cuman } } parameters = { @@ -2238,24 +2238,24 @@ language_kipchak_cuman = { ai_will_do = { value = 10 if = { - limit = { has_cultural_pillar = language_kipchak_cuman } + limit = { has_cultural_pillar = NEOW_language_kipchak_cuman } multiply = 10 } } color = { 89 5 65 } } -language_kipchak_nogai = { +NEOW_language_kipchak_nogai = { type = language is_shown = { language_is_shown_trigger = { - LANGUAGE = language_kipchak_nogai + LANGUAGE = NEOW_language_kipchak_nogai } } ai_will_do = { value = 10 if = { - limit = { has_cultural_pillar = language_kipchak_nogai } + limit = { has_cultural_pillar = NEOW_language_kipchak_nogai } multiply = 10 } } @@ -2620,102 +2620,102 @@ language_aromanian = { color = { 210 120 255 } } -language_lezgin = { +NEOW_language_lezgin = { type = language is_shown = { language_is_shown_trigger = { - LANGUAGE = language_lezgin + LANGUAGE = NEOW_language_lezgin } } ai_will_do = { value = 10 if = { - limit = { has_cultural_pillar = language_lezgin } + limit = { has_cultural_pillar = NEOW_language_lezgin } multiply = 10 } } color = {0.3 0.8 0.7} } -language_avar = { +NEOW_language_avar = { type = language is_shown = { language_is_shown_trigger = { - LANGUAGE = language_avar + LANGUAGE = NEOW_language_avar } } ai_will_do = { value = 10 if = { - limit = { has_cultural_pillar = language_avar } + limit = { has_cultural_pillar = NEOW_language_avar } multiply = 10 } } color = {0.2 0.6 0.2} } -language_dargwa = { +NEOW_language_dargwa = { type = language is_shown = { language_is_shown_trigger = { - LANGUAGE = language_dargwa + LANGUAGE = NEOW_language_dargwa } } ai_will_do = { value = 10 if = { - limit = { has_cultural_pillar = language_dargwa } + limit = { has_cultural_pillar = NEOW_language_dargwa } multiply = 10 } } color = {0.5 1.0 0.5} } -language_vainakh = { +NEOW_language_vainakh = { type = language is_shown = { language_is_shown_trigger = { - LANGUAGE = language_vainakh + LANGUAGE = NEOW_language_vainakh } } ai_will_do = { value = 10 if = { - limit = { has_cultural_pillar = language_vainakh } + limit = { has_cultural_pillar = NEOW_language_vainakh } multiply = 10 } } color = {0.3 0.8 0.8} } -language_circassian = { +NEOW_language_circassian = { type = language is_shown = { language_is_shown_trigger = { - LANGUAGE = language_circassian + LANGUAGE = NEOW_language_circassian } } ai_will_do = { value = 10 if = { - limit = { has_cultural_pillar = language_circassian } + limit = { has_cultural_pillar = NEOW_language_circassian } multiply = 10 } } color = {0.2 0.9 0.2} } -language_ossetian = { +NEOW_language_ossetian = { type = language is_shown = { language_is_shown_trigger = { - LANGUAGE = language_ossetian + LANGUAGE = NEOW_language_ossetian } } ai_will_do = { value = 10 if = { - limit = { has_cultural_pillar = language_ossetian } + limit = { has_cultural_pillar = NEOW_language_ossetian } multiply = 10 } } diff --git a/common/culture/traditions/00_combat_traditions.txt b/common/culture/traditions/00_combat_traditions.txt new file mode 100644 index 00000000..5225b952 --- /dev/null +++ b/common/culture/traditions/00_combat_traditions.txt @@ -0,0 +1,2750 @@ +############################## +# COMBAT CULTURAL TRADITIONS # +############################## + +tradition_winter_warriors = { + category = combat + + layers = { + 0 = learning + 1 = western + 4 = fight.dds + } + + can_pick = { + culture_not_pacifistic_trigger = yes + culture_in_winter_geographical_region_trigger = yes + } + parameters = { + winter_soldier_trait_more_common = yes + winter_trait_bonuses = yes + can_recruit_winter_specialist = yes + resistant_to_winter_privation = yes + } + character_modifier = { + taiga_travel_danger = taiga_low_danger_reduction + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + any_county_province = { + OR = { + geographical_region = world_europe_north + geographical_region = world_europe_east + geographical_region = world_siberia + geographical_region = world_asia_north_east + geographical_region = world_asia_sakhalin_hokkaido + geographical_region = world_steppe + geographical_region = world_tibet + } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = winter_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_winter_warriors } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + culture = scope:character.culture + any_county_province = { + OR = { + geographical_region = world_europe_north + geographical_region = world_europe_west + geographical_region = world_europe_east + geographical_region = world_steppe + geographical_region = world_tibet + } + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_forest_fighters = { + category = combat + + layers = { + 0 = martial + 1 = western + 4 = forest.dds + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_forest_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + } + } + } + } + parameters = { + forest_fighter_trait_more_common = yes + forest_trait_bonuses = yes + can_recruit_forest_specialist = yes + forest_nomadic_cultrad_stationing_bonus = yes + } + character_modifier = { + forest_travel_danger = forest_low_danger_reduction + taiga_travel_danger = taiga_low_danger_reduction + } + province_modifier = { + forest_levy_size = 0.1 + taiga_levy_size = 0.1 + forest_supply_limit_mult = 0.25 + taiga_supply_limit_mult = 0.25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = forest_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_forest_fighters } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 200 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.2 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + } + } + } + multiply = 2 + } + } +} + +tradition_mountaineers = { + category = combat + + layers = { + 0 = martial + 1 = western + 4 = mountain.dds + } + + is_shown = { #Replaced by Horn Mountain Skirmishing & Caucasian Wolves + NOR = { +# has_cultural_pillar = heritage_somalian +# has_cultural_pillar = heritage_east_african +# this = culture:georgian +# any_parent_culture_or_above = { +# this = culture:georgian +# } + has_cultural_tradition = tradition_caucasian_wolves + has_cultural_tradition = tradition_horn_mountain_skirmishing + } + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + parameters = { + rough_terrain_expert_trait_more_common = yes + mountain_trait_bonuses = yes + can_recruit_mountain_specialist = yes + resistant_to_mountain_privation = yes + mountains_nomadic_cultrad_stationing_bonus = yes + } + character_modifier = { + mountains_travel_danger = mountains_low_danger_reduction + desert_mountains_travel_danger = desert_mountains_low_danger_reduction + } + province_modifier = { + mountains_levy_size = 0.1 + desert_mountains_levy_size = 0.1 + mountains_supply_limit_mult = 0.25 + desert_mountains_supply_limit_mult = 0.25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mountaineers } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 200 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.2 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + scope:character.culture ?= { + any_culture_county = { + percent > 0.6 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + multiply = 6 + } + else_if = { + limit = { + scope:character.culture ?= { + any_culture_county = { + percent > 0.4 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + multiply = 2 + } + } +} + +tradition_warriors_of_the_dry = { + category = combat + + layers = { + 0 = martial + 1 = mena + 4 = desert.dds + } + + is_shown = { #Replaced by Mubarizuns + NOT = { has_cultural_pillar = heritage_arabic } + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_dryland_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + NOT = { has_cultural_tradition = tradition_mubarizuns } #To prevent stacking after hybridization + } + parameters = { + desert_warrior_trait_more_common = yes + dry_trait_bonuses = yes + can_recruit_dry_specialist = yes + desert_nomadic_cultrad_stationing_bonus = yes + } + character_modifier = { + desert_travel_danger = desert_low_danger_reduction + drylands_travel_danger = drylands_low_danger_reduction + desert_mountains_travel_danger = desert_mountains_low_danger_reduction + } + province_modifier = { + drylands_levy_size = 0.1 + desert_levy_size = 0.1 + drylands_supply_limit_mult = 0.25 + desert_supply_limit_mult = 0.25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = dry_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_warriors_of_the_dry } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 200 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.2 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + scope:character.culture ?= { + any_culture_county = { + percent > 0.6 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + multiply = 6 + } + else_if = { + limit = { + scope:character.culture ?= { + any_culture_county = { + percent > 0.4 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + multiply = 2 + } + } +} + +tradition_highland_warriors = { + category = combat + + layers = { + 0 = intrigue + 1 = western + 4 = mountain.dds + } + + is_shown = { #Replaced by Upland Skirmishing + NOR = { + has_cultural_pillar = heritage_west_african + has_cultural_tradition = tradition_upland_skirmishing + } + } + can_pick = { + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_hills_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + + parameters = { + rough_terrain_expert_trait_more_common = yes + hill_trait_bonuses = yes + can_recruit_hill_specialist = yes + hills_nomadic_cultrad_stationing_bonus = yes + } + province_modifier = { + hills_levy_size = 0.1 + hills_supply_limit_mult = 0.25 + } + character_modifier = { + hills_travel_danger = hills_low_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = hill_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_highland_warriors } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.2 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + scope:character.culture ?= { + any_culture_county = { + percent > 0.6 + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + multiply = 6 + } + else_if = { + limit = { + scope:character.culture ?= { + any_culture_county = { + percent > 0.4 + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + multiply = 2 + } + } +} + +tradition_jungle_warriors = { + category = combat + + layers = { + 0 = intrigue + 1 = mena + 4 = jungle.dds + } + + is_shown = { #Replaced by Bush Hunting + NOR = { + has_cultural_pillar = heritage_akan + has_cultural_pillar = heritage_yoruba + has_cultural_tradition = tradition_bush_hunting + } + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_jungle_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = jungle + } + } + } + } + parameters = { + jungle_stalker_trait_more_common = yes + jungle_trait_bonuses = yes + can_recruit_jungle_specialist = yes + } + character_modifier = { + jungle_travel_danger = jungle_low_danger_reduction + } + province_modifier = { + jungle_levy_size = 0.1 + jungle_supply_limit_mult = 0.25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = jungle + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = jungle_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_jungle_warriors } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.2 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = jungle + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + scope:character.culture ?= { + any_culture_county = { + percent > 0.6 + county_has_province_with_terrain = { + terrain = jungle + } + } + } + } + multiply = 6 + } + else_if = { + limit = { + scope:character.culture ?= { + any_culture_county = { + percent > 0.4 + county_has_province_with_terrain = { + terrain = jungle + } + } + } + } + multiply = 2 + } + } +} + +tradition_only_the_strong = { + category = combat + + layers = { + 0 = martial + 1 = mena + 4 = soldiers2.dds + } + + can_pick = { + custom_description = { + text = culture_not_egalitarian + NOT = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + } + + parameters = { + minimum_prowess_for_knights = yes + blademaster_trait_bonuses = yes + prowess_from_martial_education = yes + } + province_modifier = { + levy_size = -0.25 + } + character_modifier = { + men_at_arms_recruitment_cost = 0.25 + knight_effectiveness_mult = 1 + knight_limit = 2 + accolade_glory_gain_mult = 0.2 + men_at_arms_limit = -2 + men_at_arms_cap = -1 + maa_damage_mult = 0.1 + maa_toughness_mult = 0.15 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_stoic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_knight = { + count >= 6 + prowess >= 12 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = knights_with_prowess_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_only_the_strong } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + scope:character = { + NOR = { + prowess >= 12 + has_trait = strong + has_trait = physique_good + } + } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + any_courtier = { + count >= 10 + prowess >= 12 + } + } + } + multiply = 4 + } + } +} + +tradition_warriors_by_merit = { + category = combat + + layers = { + 0 = martial + 1 = mediterranean + 4 = soldiers2.dds + } + + can_pick = { + + } + + parameters = { + high_prowess_ignores_knight_restrictions = yes + blademaster_traits_more_common = yes + } + character_modifier = { + prowess_per_prestige_level = 2 + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_egalitarian_or_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_courtier = { + count >= 5 + prowess >= 10 + is_adult = yes + NOT = { + can_be_knight_trigger = { ARMY_OWNER = prev } + } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = courtiers_with_prowess_who_cant_be_knight_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_warriors_by_merit } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 150 + if = { + limit = { + NOR = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + scope:character = { + NOT = { + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = this } + } + } + } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 4 + } + } +} + +tradition_warrior_monks = { + category = combat + + layers = { + 0 = martial + 1 = indian + 4 = temple.dds + } + + can_pick = { + NOT = { + culture_tradition:tradition_tgp_warrior_monks = { is_in_list = traits } + } + } + + parameters = { + prowess_from_religious_traits = yes + culture_clergy_can_fight = yes + monastery_prowess_martial_bonus = yes + } + character_modifier = { + prowess_per_piety_level = 1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + scope:character = { + save_temporary_scope_as = culture_head_link + faith = { + any_faith_character = { + count >= 15 + culture = scope:culture_head_link.culture + prowess >= 10 + OR = { + is_clergy = yes + has_education_learning_trigger = yes + } + } + } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_faith_clergy_prowess_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_warrior_monks } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + multiply = 0.25 + } + } +} + +tradition_talent_acquisition = { + category = combat + + layers = { + 0 = diplo + 1 = mena + 4 = greeting.dds + } + + can_pick = { + + } + + parameters = { + can_recruit_prisoners_easily = yes + better_knights_from_decision = yes + pardoning_gives_loyalty = yes + } + character_modifier = { + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_egalitarian_or_courtly_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + save_temporary_scope_as = culture_head_link + any_prisoner = { + count >= 10 + NOR = { + is_courtier_of = scope:culture_head_link + is_foreign_court_or_pool_guest_of = scope:culture_head_link + } + OR = { + martial >= 12 + diplomacy >= 12 + stewardship >= 12 + intrigue >= 12 + learning >= 12 + prowess >= 12 + } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = skilled_prisoners_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_talent_acquisition } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + multiply = 0.5 + } + } +} + +tradition_strength_in_numbers = { + category = combat + + layers = { + 0 = martial + 1 = mena + 4 = soldiers3.dds + } + + parameters = { + strength_in_numbers_maa_limit_bonus = yes + strength_in_numbers_heavy_maa_ban = yes + } + + province_modifier = { + levy_size = 0.25 + } + character_modifier = { + supply_limit_mult = 0.5 + herd_conversion = 0.04 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = skirmishers + value >= 500 + } + number_maa_soldiers_of_base_type = { + type = archers + value >= 500 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_small_soldiers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_strength_in_numbers } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 5 # The AI shouldn't really pick this very often + if = { + limit = { + OR = { + culture_has_heavy_infantry_maa = yes + culture_has_pikemen_maa = yes + culture_has_heavy_cavalry_maa = yes + } + } + multiply = 0 + } + } +} + +tradition_frugal_armorsmiths = { + category = combat + + layers = { + 0 = steward + 1 = western + 4 = shield.dds + } + + parameters = { + frugal_blacksmith_invite_knight_decision_cooldown = yes + frugal_blacksmith_better_invite_knight_decision = yes + frugal_blacksmith_cheaper_invite_knight_decision = yes + frugal_blacksmith_cheaper_recruit_to_court = yes + } + + character_modifier = { + levy_size = 0.1 + knight_limit = 5 + men_at_arms_limit = 3 + army_maintenance_mult = -0.25 + men_at_arms_recruitment_cost = -0.25 + knight_effectiveness_mult = -0.4 + levy_toughness = -2 + heavy_cavalry_toughness_mult = -0.3 + pikemen_toughness_mult = -0.15 + heavy_infantry_toughness_mult = -0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = skirmishers + value >= 500 + } + number_maa_soldiers_of_base_type = { + type = archers + value >= 500 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_small_soldiers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_frugal_armorsmiths } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 5 # The AI shouldn't really pick this very often + if = { + limit = { + scope:character = { + OR = { + number_maa_soldiers_of_base_type = { + type = heavy_infantry + value >= 100 + } + number_maa_soldiers_of_base_type = { + type = pikemen + value >= 100 + } + number_maa_soldiers_of_base_type = { + type = heavy_cavalry + value >= 1 + } + number_maa_soldiers_of_base_type = { + type = elephant_cavalry + value >= 1 + } + } + } + } + multiply = 0 + } + if = { + limit = { + OR = { + culture_has_heavy_infantry_maa = yes + culture_has_pikemen_maa = yes + culture_has_heavy_cavalry_maa = yes + } + } + multiply = 0 + } + } +} + +tradition_malleable_invaders = { + category = combat + + layers = { + 0 = martial + 1 = mena + 4 = diplomacy.dds + } + + is_shown = { + has_dlc_feature = hybridize_culture + } + can_pick = { + culture_in_non_sedentary_geographical_region_trigger = yes + culture_not_pacifistic_trigger = yes + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + } + + parameters = { + easier_to_hybridize = yes + cheaper_to_hybridize = yes + cheaper_convert_to_local_culture = yes + } + character_modifier = { + faith_conversion_piety_cost_mult = -0.2 + different_faith_county_opinion_mult = -0.2 + + ai_war_chance = 0.5 + ai_war_cooldown = -0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_egalitarian_or_bureaucratic_desc + } + } + if = { + limit = { + NOR = { + culture_pillar:heritage_turkic = { is_in_list = traits } + culture_pillar:heritage_mongolic = { is_in_list = traits } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = turkic_or_mongolic_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_malleable_invaders } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 0 + } +} + +tradition_quarrelsome = { + category = combat + + layers = { + 0 = martial + 1 = mediterranean + 4 = speech.dds + } + + can_pick = { + culture_not_pacifistic_trigger = yes + } + + parameters = { + can_use_conquest_cbs = yes + cb_lower_prestige_level_requirement = yes + cheaper_cbs = yes + disloyal_trait_less_spurned = yes + disloyal_trait_more_common = yes + } + character_modifier = { + monthly_county_control_growth_factor = -0.4 + + ai_honor = -20 + ai_war_chance = 0.5 + ai_war_cooldown = -0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + is_at_war = yes + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_at_war_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_quarrelsome } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + limit = { + NOT = { + scope:character = { + government_has_flag = government_is_tribal + } + } + } + multiply = 0.25 + } + if = { + limit = { + NOR = { + culture_pillar:heritage_turkic = { is_in_list = traits } + culture_pillar:heritage_mongolic = { is_in_list = traits } + is_divergent_culture = yes + } + } + multiply = 0 + } + } +} + +tradition_swords_for_hire = { + category = combat + + layers = { + 0 = martial + 1 = indian + 4 = swords.dds + } + + is_shown = { + NOT = { has_cultural_tradition = tradition_ep3_audacious_cadets } + } + + can_pick = { + + } + + parameters = { + wanderers_gain_extra_combat_skills = yes + mercenary_courtiers_gain_extra_skills = yes + more_likely_to_leave_court = yes + unlocks_contract_assistance = yes + unlock_voluntary_laampdom = yes + more_likely_to_be_laamps = yes + } + culture_modifier = { + mercenary_count_mult = 1 + } + character_modifier = { + same_culture_mercenary_hire_cost_mult = -0.15 + character_travel_speed_mult = 0.1 + character_travel_safety_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_courtly_or_communal_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = education_martial_4 + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_martial_edu_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_swords_for_hire } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + limit = { + has_cultural_pillar = heritage_central_germanic + } + multiply = 2 + } + } +} + +tradition_reverence_for_veterans = { + category = combat + + layers = { + 0 = martial + 1 = mediterranean + 4 = knight.dds + } + + parameters = { + wounds_and_scars_give_bonuses = yes + guardians_can_transfer_commander_traits = yes + warrior_lodges_lift_restrictions = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_egalitarian_or_stoic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + OR = { + has_trait = scarred + has_trait = maimed + has_trait = one_eyed + has_trait = one_legged + has_trait = disfigured + } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_scars_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_reverence_for_veterans } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { # Generally good & flavorful + value = 400 + } +} + +tradition_stalwart_defenders = { + category = combat + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = shield.dds + } + + parameters = { + can_end_defensive_wars_earlier = yes + more_fame_for_successful_defensive_wars = yes + more_gold_for_successful_defensive_wars = yes + next_level_fortification = yes + stalwart_defenders_internal_yurt_unlock = yes + } + character_modifier = { + defender_advantage = 5 + controlled_province_advantage = 5 + nomadic_horde_toughness_mult = 0.15 + } + province_modifier = { + garrison_size = 0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_courtly_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + any_county_province = { + has_building_or_higher = march_01 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = march_building_desc + } + } + if = { + limit = { + has_variable = defensive_traditionalist_discount + } + add = { + value = traditionalist_discount + desc = traditionalist_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_stalwart_defenders } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + scope:character = { + sub_realm_size <= medium_realm_size + } + } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 2 + } + } +} + +tradition_battlefield_looters = { + category = combat + + layers = { + 0 = martial + 1 = mediterranean + 4 = swords.dds + } + + parameters = { + gain_gold_from_battles = yes + less_prestige_from_battles = yes + } + character_modifier = { + max_loot_mult = 0.75 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_bureaucratic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = reaver + + } + } + } + trigger_else = { + NOR = { + culture_pillar:heritage_turkic = { is_in_list = traits } + culture_pillar:heritage_mongolic = { is_in_list = traits } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_reaver_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_battlefield_looters } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 75 + if = { + limit = { + NOR = { + culture_pillar:heritage_turkic = { is_in_list = traits } + culture_pillar:heritage_mongolic = { is_in_list = traits } + scope:character = { + government_has_flag = government_is_tribal + } + } + } + multiply = 0 + } + } +} + +tradition_hit_and_run = { + category = combat + + layers = { + 0 = martial + 1 = mediterranean + 4 = soldiers4.dds + } + + is_shown = { + NOR = { #Replaced by Konni Raids (tradition_hussar) + has_cultural_pillar = heritage_south_slavic + has_cultural_pillar = heritage_magyar + has_cultural_pillar = heritage_west_slavic + } + } + can_pick = { + trigger_if = { + limit = { + OR = { + NOT = { exists = scope:replacing } + NOT = { scope:replacing = culture_tradition:tradition_hussar } + } + } + NOT = { has_cultural_tradition = tradition_hussar } #To prevent stacking after hybridization + } + } + + # Iberian: Concurso Tactics + character_modifier = { + nomadic_horde_damage_mult = 0.05 + nomadic_horde_screen_mult = 0.05 + skirmishers_damage_mult = 0.2 + skirmishers_screen_mult = 0.25 + light_cavalry_damage_mult = 0.2 + light_cavalry_screen_mult = 0.25 + retreat_losses = -0.1 + hard_casualty_modifier = -0.1 + } + + parameters = { + hit_run_nomadic_cultrad_stationing_bonus = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_egalitarian_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = skirmishers + value >= 500 + } + number_maa_soldiers_of_base_type = { + type = light_cavalry + value >= 500 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_skirmishers_and_light_cav_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_hit_and_run } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + NOR = { + culture_has_skirmisher_maa = yes + culture_has_light_cavalry_maa = yes + } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 4 + } + } +} + +tradition_stand_and_fight = { + category = combat + + is_shown = { + NOR = { #Replaced by Mobile Guards + has_cultural_pillar = heritage_israelite + has_cultural_tradition = tradition_mobile_guards + } + } + + layers = { + 0 = martial + 1 = indian + 4 = battle.dds + } + + character_modifier = { + levy_toughness = 2 + maa_toughness_mult = 0.1 + heavy_infantry_toughness_mult = 0.1 + heavy_cavalry_toughness_mult = 0.1 + pikemen_toughness_mult = 0.2 + hard_casualty_modifier = 0.4 + defender_advantage = 8 + } + + parameters = { + stand_fight_nomadic_cultrad_stationing_bonus = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_spiritual_or_stoic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = heavy_infantry + value >= 500 + } + number_maa_soldiers_of_base_type = { + type = pikemen + value >= 500 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_heavy_inf_and_pikemen_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_stand_and_fight } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOR = { + culture_has_heavy_infantry_maa = yes + culture_has_heavy_cavalry_maa = yes + culture_has_pikemen_maa = yes + } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 2 + } + } +} + +tradition_adaptive_skirmishing = { + category = combat + + layers = { + 0 = intrigue + 1 = western + 4 = soldiers4.dds + } + + parameters = { + next_level_military_camps = yes + skirmisher_nomadic_cultrad_stationing_bonus = yes + } + + character_modifier = { + enemy_terrain_advantage = -0.25 + archers_damage_mult = 0.15 + archers_toughness_mult = 0.15 + archers_maintenance_mult = -0.05 + skirmishers_damage_mult = 0.15 + skirmishers_toughness_mult = 0.2 + skirmishers_maintenance_mult = -0.05 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_spiritual_or_stoic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = skirmishers + value >= 500 + } + number_maa_soldiers_of_base_type = { + type = archers + value >= 500 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_small_soldiers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_adaptive_skirmishing } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + scope:character = { + OR = { + number_maa_soldiers_of_base_type = { + type = heavy_infantry + value >= 200 + } + number_maa_soldiers_of_base_type = { + type = pikemen + value >= 200 + } + } + } + } + multiply = 0 + } + if = { + limit = { + OR = { + culture_has_heavy_infantry_maa = yes + culture_has_heavy_cavalry_maa = yes + } + } + multiply = 0 + } + else_if = { + limit = { + NOR = { + culture_has_archer_maa = yes + culture_has_skirmisher_maa = yes + } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 2 + } + } +} + +tradition_formation_fighting = { + category = combat + + layers = { + 0 = martial + 1 = mediterranean + 4 = soldiers3.dds + } + + layers = { + 0 = martial + } + + parameters = { + next_level_barracks = yes + formation_fighting_strategist = yes + formation_nomadic_cultrad_stationing_bonus = yes + } + + character_modifier = { + counter_efficiency = 0.15 + pursue_efficiency = -0.15 + archers_damage_mult = 0.1 + archers_toughness_mult = 0.15 + pikemen_damage_mult = 0.15 + pikemen_toughness_mult = 0.2 + nomadic_horde_toughness_mult = 0.05 + nomadic_horde_damage_mult = 0.05 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_courtly_or_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = pikemen + value >= 500 + } + number_maa_soldiers_of_base_type = { + type = archers + value >= 500 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_archers_and_pikemen_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_formation_fighting } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + scope:character = { + OR = { + number_maa_soldiers_of_base_type = { + type = light_cavalry + value >= 300 + } + number_maa_soldiers_of_base_type = { + type = skirmishers + value >= 400 + } + } + } + } + multiply = 0 + } + if = { + limit = { + OR = { + culture_has_skirmisher_maa = yes + culture_has_light_cavalry_maa = yes + } + } + multiply = 0 + } + else_if = { + limit = { + NOR = { + culture_has_archer_maa = yes + culture_has_pikemen_maa = yes + } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 4 + } + } +} + +tradition_horse_breeder = { + category = combat + + layers = { + 0 = steward + 1 = mena + 4 = horses.dds + } + + is_shown = { + OR = { + culture_has_light_cavalry_maa = yes + culture_has_heavy_cavalry_maa = yes + culture_has_archer_cavalry_maa = yes + scope:character = { + mpo_can_recruit_nomad_maa_trigger = yes + } + } + } + + parameters = { + next_level_stables = yes + horse_breeder_internal_yurt_unlock = yes + } + + character_modifier = { + herd_conversion = 0.02 + light_cavalry_maintenance_mult = -0.15 + light_cavalry_recruitment_cost_mult = -0.25 + heavy_cavalry_maintenance_mult = -0.15 + heavy_cavalry_recruitment_cost_mult = -0.25 + archer_cavalry_maintenance_mult = -0.15 + archer_cavalry_recruitment_cost_mult = -0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + scope:character = { + NOR = { # Culture Head need to have a 8 sized regiment of either Light/Heavy/Archer Cavalry + number_maa_soldiers_of_base_type = { + type = light_cavalry + value >= 800 + } + number_maa_soldiers_of_base_type = { + type = heavy_cavalry + value >= 400 + } + number_maa_soldiers_of_base_type = { + type = archer_cavalry + value >= 800 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_cavalry_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_horse_breeder } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { # Reduce chance if the culture has access to other "cavalry" types + OR = { + has_innovation = innovation_war_camels + has_innovation = innovation_elephantry + } + } + multiply = 0.2 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 2 + } + } +} + +tradition_longbow_competitions = { + category = combat + layers = { + 0 = martial + 1 = western + 4 = bow.dds + } + + is_shown = { + OR = { + has_cultural_pillar = heritage_west_germanic + has_cultural_pillar = heritage_brythonic + has_cultural_pillar = heritage_goidelic + } + } + can_pick = { + OR = { + has_cultural_pillar = heritage_west_germanic + has_cultural_pillar = heritage_brythonic + has_cultural_pillar = heritage_goidelic + } + } + + parameters = { + unlock_maa_longbowmen = yes + archer_era_improvement = yes + } + character_modifier = { + archers_max_size_add = 4 + heavy_cavalry_max_size_add = -2 + pikemen_max_size_add = -2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_bureaucratic_desc + } + } + # Certain number of archer MaA requirement. + if = { + limit = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = archers + # Remember to sync the below with longbow_competitions_minimum_archer_maa_value. + value < 1200 + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_lacks_archer_maa_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_longbow_competitions } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 800 + if = { + limit = { + OR = { + culture_has_pikemen_maa = yes + culture_has_heavy_cavalry_maa = yes + } + } + multiply = 0 + } + } +} diff --git a/common/culture/traditions/00_maa_traditions.txt b/common/culture/traditions/00_maa_traditions.txt new file mode 100644 index 00000000..05616f8c --- /dev/null +++ b/common/culture/traditions/00_maa_traditions.txt @@ -0,0 +1,2278 @@ +####################### +# CULTURAL TRADITIONS # +####################### + +###################### +# MAA Traditions # +###################### + +tradition_futuwaa = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = soldiers.dds + } + + is_shown = { + has_cultural_pillar = heritage_iranian + NOR = { #Replaces Martial Admiration + has_cultural_tradition = tradition_chanson_de_geste + has_cultural_tradition = tradition_druzhina + has_cultural_tradition = tradition_martial_admiration + } + } + can_pick = { + has_cultural_pillar = heritage_iranian + NOR = { #Replaces Martial Admiration + has_cultural_tradition = tradition_chanson_de_geste + has_cultural_tradition = tradition_druzhina + has_cultural_tradition = tradition_martial_admiration + } + } + + parameters = { + unlock_maa_ayyar = yes + can_use_sparring_duel = yes + martial_education_more_valued = yes + prowess_traits_more_valued = yes + blademaster_trait_bonuses = yes + craven_and_content_traits_looked_down_upon = yes + knights_slightly_more_prone_to_injury = yes + unlock_voluntary_laampdom = yes + } + character_modifier = { + knight_limit = 2 + negate_prowess_penalty_add = 5 + accolade_glory_gain_mult = 0.2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_courtly_or_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_knight = { + count >= 6 + prowess >= 12 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = knights_with_prowess_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_futuwaa } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 400 } +} + +tradition_mubarizuns = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = soldiers.dds + } + + #Can pick this if you have arabic heritage. + is_shown = { #Replaces Warriors of the Dry + has_cultural_pillar = heritage_arabic + } + can_pick = { + culture_not_pacifistic_trigger = yes + trigger_if = { + limit = { + OR = { + NOT = { exists = scope:replacing } + NOT = { scope:replacing = culture_tradition:tradition_warriors_of_the_dry } + } + } + NOT = { has_cultural_tradition = tradition_warriors_of_the_dry } #To prevent stacking after hybridization + } + } + + parameters = { + unlock_maa_mubarizun = yes + desert_warrior_trait_more_common = yes + dry_trait_bonuses = yes + can_recruit_dry_specialist = yes + } + character_modifier = { + drylands_levy_size = 0.1 + desert_levy_size = 0.1 + drylands_supply_limit_mult = 0.25 + desert_supply_limit_mult = 0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = dry_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mubarizuns } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_desert_ribat = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = city2.dds + } + + is_shown = { + has_cultural_pillar = heritage_berber + } + can_pick = { + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_dryland_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + + parameters = { + unlock_maa_mulaththamun = yes #Mulaththamun + desert_warrior_trait_more_common = yes + dry_trait_bonuses = yes + can_recruit_dry_specialist = yes + mystic_trait_more_common = yes + } + character_modifier = { + prowess_per_piety_level = 1 + desert_travel_danger = desert_low_danger_reduction + drylands_travel_danger = drylands_low_danger_reduction + desert_mountains_travel_danger = desert_mountains_low_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_spiritual_or_stoic_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = dry_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_desert_ribat } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = drylands + terrain = desert + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_land_of_the_bow = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = bow.dds + } + + is_shown = { + has_cultural_pillar = heritage_east_african + } + can_pick = { + has_cultural_pillar = heritage_east_african + } + + parameters = { + unlock_maa_archers_of_the_nile = yes + hunting_archery_building_bonuses = yes + } + county_modifier = { + floodplains_levy_size = 0.1 + } + province_modifier = { + garrison_size = 0.25 + } + character_modifier = { + defender_advantage = 5 + archers_damage_mult = 0.2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = archers + value >= 800 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_archers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_land_of_the_bow } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = floodplains + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_druzhina = { + category = regional + + layers = { + 0 = martial + 1 = western + 4 = shield.dds + } + + #East Slavic + #This replaces Martial Admiration + is_shown = { + has_cultural_pillar = heritage_east_slavic + NOR = { #Replaces Martial Admiration + has_cultural_tradition = tradition_futuwaa + has_cultural_tradition = tradition_chanson_de_geste + has_cultural_tradition = tradition_martial_admiration + } + } + can_pick = { + has_cultural_pillar = heritage_east_slavic + NOR = { #Replaces Martial Admiration + has_cultural_tradition = tradition_futuwaa + has_cultural_tradition = tradition_chanson_de_geste + has_cultural_tradition = tradition_martial_admiration + } + } + + parameters = { + unlock_maa_druzhina = yes + martial_education_more_valued = yes + prowess_traits_more_valued = yes + blademaster_trait_bonuses = yes + craven_and_content_traits_looked_down_upon = yes + knights_slightly_more_prone_to_injury = yes + can_duel_rivals = yes + } + character_modifier = { + knight_limit = 2 + negate_prowess_penalty_add = 5 + accolade_glory_gain_mult = 0.2 + heavy_infantry_toughness_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_stoic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_knight = { + count >= 6 + prowess >= 12 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = knights_with_prowess_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_druzhina } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 400 } +} + +tradition_hussar = { #Konni Raids + category = regional + + layers = { + 0 = martial + 1 = western + 4 = rider.dds + } + + #This replaces Hit and Run + is_shown = { + OR = { + has_cultural_pillar = heritage_south_slavic + has_cultural_pillar = heritage_magyar + has_cultural_pillar = heritage_west_slavic + } + } + can_pick = { + trigger_if = { + limit = { + OR = { + NOT = { exists = scope:replacing } + NOT = { scope:replacing = culture_tradition:tradition_hit_and_run } + } + } + NOT = { has_cultural_tradition = tradition_hit_and_run } #To prevent stacking after hybridization + } + } + + parameters = { + unlock_maa_hussar = yes + } + character_modifier = { + skirmishers_screen_mult = 0.2 + light_cavalry_damage_mult = 0.2 + light_cavalry_screen_mult = 0.2 + retreat_losses = -0.1 + hard_casualty_modifier = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = light_cavalry + value >= 500 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_light_cavalry_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_hussar } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 400 } +} + +tradition_horn_mountain_skirmishing = { + category = regional + + layers = { + 0 = steward + 1 = mena + 4 = desert_mountains.dds + } + + #In the Horn of Africa this replaces the Mountaineers tradition + is_shown = { + OR ={ + has_cultural_pillar = heritage_somalian + has_cultural_pillar = heritage_east_african + } + NOR = { + has_cultural_tradition = tradition_mountaineers + has_cultural_tradition = tradition_caucasian_wolves + } + } + can_pick = { + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + + parameters = { + unlock_maa_horn_warrior = yes + rough_terrain_expert_trait_more_common = yes + mountain_trait_bonuses = yes + can_recruit_mountain_specialist = yes + } + province_modifier = { + mountains_levy_size = 0.1 + desert_mountains_levy_size = 0.1 + mountains_supply_limit_mult = 0.25 + desert_mountains_supply_limit_mult = 0.25 + } + character_modifier = { + mountains_travel_danger = mountains_medium_danger_reduction + desert_mountains_travel_danger = desert_mountains_medium_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_horn_mountain_skirmishing } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_bush_hunting = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = jungle.dds + } + + #Replaces Jungle Warriors + is_shown = { + OR = { + has_cultural_pillar = heritage_akan + has_cultural_pillar = heritage_yoruba + } + NOT = { has_cultural_tradition = tradition_jungle_warriors } + } + can_pick = { + } + + parameters = { + unlock_maa_bush_hunter = yes + jungle_trait_bonuses = yes + dry_trait_bonuses = yes + can_recruit_jungle_specialist = yes + } + character_modifier = { + archers_damage_mult = 0.2 + jungle_supply_limit_mult = 0.25 + jungle_travel_danger = jungle_medium_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_or_egalitarian_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = jungle + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = jungle_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_bush_hunting } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = jungle + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_mobile_guards = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = forest.dds + } + + #Replaces Stand and Fight + is_shown = { + has_cultural_pillar = heritage_israelite + NOT = { has_cultural_tradition = tradition_stand_and_fight } + } + can_pick = { + } + + parameters = { + unlock_maa_shomer = yes + } + character_modifier = { + maa_toughness_mult = 0.1 + heavy_infantry_toughness_mult = 0.2 + heavy_infantry_maintenance_mult = 0.1 + heavy_cavalry_toughness_mult = 0.2 + heavy_cavalry_maintenance_mult = 0.1 + pikemen_toughness_mult = 0.2 + pikemen_maintenance_mult = 0.1 + hard_casualty_modifier = 0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = skirmishers + value >= 800 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_skirmishers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mobile_guards } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOR = { + culture_has_heavy_infantry_maa = yes + culture_has_heavy_cavalry_maa = yes + culture_has_pikemen_maa = yes + } + OR = { + culture_has_skirmisher_maa = yes + culture_has_archer_maa = yes + culture_has_light_cavalry_maa = yes + culture_has_archer_cavalry_maa = yes + scope:character = { + mpo_can_recruit_nomad_maa_trigger = yes + } + } + } + multiply = 0.25 + } + } +} + +tradition_khadga_puja = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = soldiers2.dds + } + + is_shown = { + has_cultural_pillar = heritage_indo_aryan + } + can_pick = { + custom_description = { + text = culture_not_egalitarian + NOT = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + } + + parameters = { + martial_education_more_valued = yes + unlock_maa_khandayat = yes + blademaster_trait_bonuses = yes + craven_and_content_traits_looked_down_upon = yes + } + province_modifier = { + } + character_modifier = { + knight_effectiveness_mult = 0.1 + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_stoic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_knight = { + count >= 6 + prowess >= 12 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = knights_with_prowess_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_khadga_puja } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + } +} + +tradition_garuda_warriors = { + category = regional + + layers = { + 0 = martial + 1 = indian + 4 = soldiers2.dds + } + + is_shown = { + has_cultural_pillar = heritage_dravidian + } + can_pick = { + } + + parameters = { + unlock_maa_garudas = yes + unlock_garuda_warrior_title = yes + martial_education_more_valued = yes + prowess_traits_more_valued = yes + craven_and_content_traits_looked_down_upon = yes + loyal_trait_more_valued = yes + } + character_modifier = { + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_stoic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_knight = { + count >= 6 + prowess >= 12 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = knights_with_prowess_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_garuda_warriors } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + } +} + +tradition_burman_royal_army = { + category = regional + + layers = { + 0 = martial + 1 = indian + 4 = elephant.dds + } + + is_shown = { + has_cultural_pillar = heritage_burman + } + can_pick = { + has_cultural_pillar = heritage_burman + } + + parameters = { + unlock_maa_palace_guards = yes + jungle_stalker_trait_more_common = yes + jungle_trait_bonuses = yes + can_recruit_jungle_specialist = yes + } + character_modifier = { + elephant_cavalry_damage_mult = 0.2 + elephant_cavalry_toughness_mult = 0.2 + jungle_travel_danger = jungle_medium_danger_reduction + accolade_glory_gain_mult = 0.1 + } + province_modifier = { + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + number_maa_soldiers_of_base_type = { + type = elephant_cavalry + value >= 5 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_has_elephants_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_burman_royal_army } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + } +} + +tradition_mountain_herding = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = desert_mountains.dds + } + + #Replaces Mountain Homes + is_shown = { + OR ={ + has_cultural_pillar = heritage_arabic + has_cultural_pillar = heritage_berber + } + } + can_pick = { + OR ={ + has_cultural_pillar = heritage_arabic + has_cultural_pillar = heritage_berber + } + culture_not_pacifistic_trigger = yes + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + + parameters = { + unlock_maa_abudrar = yes + rough_terrain_expert_trait_more_common = yes + desert_warrior_trait_more_common = yes + mountain_trait_bonuses = yes + can_recruit_mountain_specialist = yes + } + character_modifier = { + mountains_travel_danger = mountains_high_danger_reduction + desert_mountains_travel_danger = desert_mountains_high_danger_reduction + } + county_modifier = { + desert_mountains_development_growth_factor = 0.35 + } + province_modifier = { + desert_mountains_construction_gold_cost = -0.1 + desert_mountains_holding_construction_gold_cost = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = desert_mountains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mountain_herding } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = desert_mountains + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_forest_wardens = { + category = regional + + layers = { + 0 = martial + 1 = western + 4 = forest.dds + } + + #Replaces Forest Folk + is_shown = { + OR = { + has_cultural_pillar = heritage_balto_finnic + has_cultural_pillar = heritage_volga_finnic + has_cultural_pillar = heritage_ugro_permian + has_cultural_pillar = heritage_baltic + } + NOT = { has_cultural_tradition = tradition_forest_folk } + } + can_pick = { + OR = { + has_cultural_pillar = heritage_balto_finnic + has_cultural_pillar = heritage_volga_finnic + has_cultural_pillar = heritage_ugro_permian + has_cultural_pillar = heritage_baltic + } + custom_description = { + text = culture_in_forest_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + } + } + } + } + + parameters = { + unlock_maa_metsanvartija = yes + logging_camps_building_bonuses = yes + can_recruit_forest_specialist = yes + forest_fighter_trait_more_common = yes + forest_hunt_success_chance = yes + watermills_forestries_unlock = yes + } + character_modifier = { + forest_travel_danger = forest_high_danger_reduction + taiga_travel_danger = taiga_high_danger_reduction + } + county_modifier = { + forest_development_growth_factor = 0.15 + taiga_development_growth_factor = 0.15 + } + province_modifier = { + forest_construction_gold_cost = -0.1 + taiga_construction_gold_cost = -0.1 + forest_holding_construction_gold_cost = -0.1 + taiga_holding_construction_gold_cost = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = forest_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_forest_wardens } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_upland_skirmishing = { + category = regional + + layers = { + 0 = martial + 1 = western + 4 = forest.dds + } + + #Replaces Highland Warriors + is_shown = { + has_cultural_pillar = heritage_west_african + NOT = { has_cultural_tradition = tradition_highland_warriors } + } + can_pick = { + has_cultural_pillar = heritage_west_african + custom_description = { + text = culture_in_hills_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + + parameters = { + unlock_maa_guinea_warrior = yes + hill_farms_building_bonuses = yes + + rough_terrain_expert_trait_more_common = yes + hill_trait_bonuses = yes + can_recruit_hill_specialist = yes + } + character_modifier = { + hills_travel_danger = hills_medium_danger_reduction + forest_travel_danger = forest_medium_danger_reduction + } + province_modifier = { + hills_levy_size = 0.1 + hills_supply_limit_mult = 0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_or_egalitarian_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = hill_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_upland_skirmishing } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_strong_kinship = { #There can be only one! + category = regional + + layers = { + 0 = martial + 1 = western + 4 = conversation.dds + } + + is_shown = { + OR = { + this = culture:gaelic + this = culture:scottish + any_parent_culture_or_above = { + OR = { + this = culture:gaelic + this = culture:scottish + } + } + } + } + can_pick = { + OR = { + this = culture:gaelic + this = culture:scottish + any_parent_culture_or_above = { + OR = { + this = culture:gaelic + this = culture:scottish + } + } + } + } + + parameters = { + unlock_schiltron_innovation = yes + bonuses_from_patriarch_matriarch_trait = yes + cultural_house_personal_scheme_success_chance = yes + landing_house_members_give_prestige = yes + penalty_for_revoking_titles_from_house_members = yes + loyal_trait_more_common = yes + } + character_modifier = { + dynasty_house_opinion = 15 + opinion_of_liege = -10 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_bureaucratic_desc + } + } + if = { + limit = { + exists = scope:character.house + NOT = { + scope:character.house = { + any_house_member = { + count >= 3 + has_relation_friend = scope:character + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = house_friends_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_strong_kinship } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + } +} + +tradition_amharic_highlanders = { #Ethiopian Unique Tradition, replaces hill dwellers, Unlocks MAA innovation & Castration + category = realm + + layers = { + 0 = steward + 1 = mena + 4 = mountain.dds + } + + is_shown = { + NOT = { has_cultural_tradition = tradition_hill_dwellers } + always = no +# OR = { +# this = culture:ethiopian +# any_parent_culture_or_above = { +# this = culture:ethiopian +# } +# } + } + can_pick = { + NOT = { has_cultural_tradition = tradition_hill_dwellers } + always = no +# OR = { +# this = culture:ethiopian +# any_parent_culture_or_above = { +# this = culture:ethiopian +# } +# } + custom_description = { + text = culture_in_hills_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + + parameters = { + unlock_sarawit_innovation = yes + can_castrate_prisoners = yes + hill_farms_building_bonuses = yes + } + county_modifier = { + hills_development_growth_factor = 0.2 + } + province_modifier = { + hills_construction_gold_cost = -0.1 + hills_holding_construction_gold_cost = -0.1 + } + character_modifier = { + hills_advantage = 5 + hills_travel_danger = hills_high_danger_reduction + mountains_travel_danger = mountains_low_danger_reduction + desert_mountains_travel_danger = desert_mountains_low_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = hill_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_amharic_highlanders } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.2 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = hills + } + } + } + } + } + multiply = 0 + } + } +} + + +tradition_polders = { #Dutch Unique Tradition, bonuses to buildings along coastline, Unlocks MAA innovation + category = realm + + layers = { + 0 = steward + 1 = mena + 4 = svamp.dds + } + + is_shown = { + OR = { + this = culture:dutch + any_parent_culture_or_above = { + this = culture:dutch + } + } + } + can_pick = { + OR = { + this = culture:dutch + any_parent_culture_or_above = { + this = culture:dutch + } + } + custom_description = { + text = culture_on_coast_desc + any_culture_county = { + has_coastal_province = yes + } + } + } + + parameters = { + unlock_adaptive_militia_innovation = yes + coastal_agriculture_building_bonuses = yes + coastal_holding_bonuses = yes + } + character_modifier = { + skirmishers_damage_mult = 0.2 + skirmishers_screen_mult = 0.2 + coastal_sea_travel_danger = low_sea_danger_reduction + wetlands_travel_danger = wetlands_medium_danger_reduction + floodplains_travel_danger = floodplains_medium_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_bureaucratic_or_stoic_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + has_coastal_province = yes + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = coastal_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_polders } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + has_coastal_province = yes + } + } + } + } + multiply = 0 + } + if = { + limit = { + scope:character = { + any_sub_realm_county = { + percent >= 0.6 + has_coastal_province = yes + } + } + } + multiply = 3 + } + } +} + +tradition_caucasian_wolves = { + category = regional + + layers = { + 0 = steward + 1 = mena + 4 = mountain.dds + } + + #For Georgians this replaces the Mountaineers tradition + is_shown = { +# OR = { +# this = culture:georgian +# any_parent_culture_or_above = { +# this = culture:georgian +# } +# } + NOR = { + has_cultural_tradition = tradition_mountaineers + has_cultural_tradition = tradition_horn_mountain_skirmishing + } + } + can_pick = { + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + + parameters = { + unlock_maa_monaspa = yes + rough_terrain_expert_trait_more_common = yes + mountain_trait_bonuses = yes + can_recruit_mountain_specialist = yes + } + province_modifier = { + mountains_levy_size = 0.1 + desert_mountains_levy_size = 0.1 + mountains_supply_limit_mult = 0.25 + desert_mountains_supply_limit_mult = 0.25 + } + character_modifier = { + mountains_travel_danger = mountains_medium_danger_reduction + desert_mountains_travel_danger = desert_mountains_medium_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_communal_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_caucasian_wolves } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 1000 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_hird = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = viking.dds + } + + is_shown = { #Replaces Warrior Culture + NOR = { + has_cultural_tradition = tradition_warrior_culture + has_cultural_tradition = tradition_fp1_coastal_warriors + } + OR = { + AND = { + has_cultural_pillar = heritage_north_germanic + has_fp1_dlc_trigger = no + } + any_parent_culture_or_above = { + OR = { + this = culture:old_saxon + this = culture:norse #For instance Norman culture + } + } + } + } + can_pick = { + culture_not_pacifistic_trigger = yes + scope:character = { + government_has_flag = government_is_tribal + } + } + + parameters = { + unlock_maa_huscarls = yes + strong_traits_more_valued = yes + strong_traits_more_common = yes + weak_traits_looked_down_upon = yes + rowdy_trait_more_common = yes + pensive_trait_less_common = yes + cultrad_unlocks_t2_redouble_guards = yes + unlock_voluntary_laampdom = yes + more_likely_to_be_laamps = yes + } + character_modifier = { + cultural_head_fascination_mult = -0.05 + knight_limit = 1 + prowess = 2 + ai_boldness = 25 + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + OR = { + has_trait = strong + has_trait = physique_good + } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = strong_rulers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_hird } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + + +tradition_chanson_de_geste = { +#Replaces Martial Admiration + category = regional + + layers = { + 0 = martial + 1 = indian + 4 = knight.dds + } + + is_shown = { + has_cultural_pillar = heritage_frankish + NOR = { #Replaces Martial Admiration + has_cultural_tradition = tradition_futuwaa + has_cultural_tradition = tradition_druzhina + has_cultural_tradition = tradition_martial_admiration + } + } + can_pick = { + has_cultural_pillar = heritage_frankish + NOR = { #Replaces Martial Admiration + has_cultural_tradition = tradition_futuwaa + has_cultural_tradition = tradition_druzhina + has_cultural_tradition = tradition_martial_admiration + } + } + + parameters = { + unlock_valets_innovation = yes + poet_trait_gives_bonuses = yes + poet_trait_more_common = yes + martial_education_more_valued = yes + prowess_traits_more_valued = yes + blademaster_trait_bonuses = yes + craven_and_content_traits_looked_down_upon = yes + knights_slightly_more_prone_to_injury = yes + can_duel_rivals = yes + can_host_joust_contests = yes + knight_errant_trait_bonuses = yes + } + character_modifier = { + knight_limit = 2 + negate_prowess_penalty_add = 5 # Wounded knights fight better! + accolade_glory_gain_mult = 0.2 + owned_legend_spread_mult = 0.05 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_courtly_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_knight = { + count >= 6 + prowess >= 12 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = knights_with_prowess_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_chanson_de_geste } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 400 } +} diff --git a/common/culture/traditions/00_realm_traditions.txt b/common/culture/traditions/00_realm_traditions.txt index bd36edf4..d6c5f92a 100644 --- a/common/culture/traditions/00_realm_traditions.txt +++ b/common/culture/traditions/00_realm_traditions.txt @@ -945,12 +945,12 @@ tradition_female_only_inheritance = { has_cultural_pillar = heritage_akan has_cultural_pillar = heritage_west_african has_cultural_pillar = heritage_yoruba - any_parent_culture_or_above = { - OR = { - this = culture:nubian - this = culture:daju - } - } +# any_parent_culture_or_above = { +# OR = { +# this = culture:nubian +# this = culture:daju +# } +# } scope:character.faith = { has_doctrine_parameter = female_dominated_law } diff --git a/common/culture/traditions/00_regional_traditions.txt b/common/culture/traditions/00_regional_traditions.txt new file mode 100644 index 00000000..6a473489 --- /dev/null +++ b/common/culture/traditions/00_regional_traditions.txt @@ -0,0 +1,1564 @@ +################################ +# REGIONAL CULTURAL TRADITIONS # +################################ + +tradition_byzantine_succession = { + category = regional + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = crown.dds + } + + is_shown = { + OR = { + has_cultural_pillar = heritage_byzantine + scope:character = { + has_title = title:e_byzantium + } + } + #replaced by new Byzantine traditions + has_ep3_dlc_trigger = no + } + can_pick = { + has_cultural_pillar = heritage_byzantine + scope:character = { + has_title = title:e_byzantium + } + custom_tooltip = { + text = cannot_have_tradition_court_eunuchs + NOT = { culture_tradition:tradition_court_eunuchs = { is_in_list = traits } } + } + custom_tooltip = { + text = cannot_have_tradition_merciful_blindings + NOT = { culture_tradition:tradition_merciful_blindings = { is_in_list = traits } } + } + } + + parameters = { + can_blind_prisoners = yes + can_castrate_prisoners = yes + eunuch_trait_bonuses = yes + can_appoint_chief_eunuch = yes + physical_disfigurement_blocks_inheritance = yes # Blocks claimant factions, claim wars, and reduce score in elective and acclamation. Also includes infertility for tooltip reasons. + children_can_be_born_in_the_purple = yes + disloyal_trait_more_common = yes + byzantine_faction_differences = yes + #byzantine_faction_preffered_claimants = yes + } + character_modifier = { + eligible_child_opinion = 20 + short_reign_duration_mult = 0.5 + hostile_scheme_phase_duration_add = medium_scheme_phase_duration_bonus_value + ai_amenity_target_baseline = 0.75 + ai_amenity_spending = 1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_or_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + has_title = title:c_byzantion + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = byzantion_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_byzantine_succession } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 1000 } +} + +tradition_lords_of_the_elephant = { + category = regional + + layers = { + 0 = learning + 1 = indian + 4 = elephant.dds + } + + is_shown = { + OR = { + any_culture_county = { + title_province = { + geographical_region = world_innovation_elephants + } + } + has_innovation = innovation_elephantry + } + } + can_pick = { + has_innovation = innovation_elephantry + } + + parameters = { + can_recruit_jungle_specialist = yes + elephant_pens_building_bonuses = yes + elephant_bonuses_for_rank_4_education = yes + } + character_modifier = { + elephant_cavalry_recruitment_cost_mult = -0.15 + elephant_cavalry_maintenance_mult = -0.15 + elephant_cavalry_toughness_mult = 0.2 + elephant_cavalry_damage_mult = 0.4 + jungle_travel_danger = jungle_medium_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_courtly_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + any_county_province = { + count >= 3 + has_building_or_higher = elephant_pens_02 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = elephant_pens_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_lords_of_the_elephant } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 1000 + if = { + limit = { + NOR = { + has_cultural_pillar = heritage_indo_aryan + has_cultural_pillar = heritage_dravidian + } + } + multiply = 0 + } + } +} + +tradition_african_tolerance = { + category = regional + + layers = { + 0 = diplo + 1 = mena + 4 = diplomat.dds + } + + is_shown = { + OR = { # For cultures with any heritage from western or central Africa + has_cultural_pillar = heritage_berber + has_cultural_pillar = heritage_west_african + has_cultural_pillar = heritage_central_african + has_cultural_pillar = heritage_sahelian + has_cultural_pillar = heritage_senegambian + has_cultural_pillar = heritage_akan + has_cultural_pillar = heritage_yoruba + } + NOT = { + culture_tradition:tradition_steppe_tolerance = { is_in_list = traits } + } + } + can_pick = { + } + + parameters = { + less_likely_to_force_conversion = yes + } + character_modifier = { + different_faith_opinion = 10 + different_faith_county_opinion_mult = -0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_or_egalitarian_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_culture_global = { + count >= 5 + cultural_acceptance = { target = prev value >= 50 } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = five_accepted_cultures_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_african_tolerance } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + OR = { + culture_tradition:tradition_zealous_people = { is_in_list = traits } + culture_tradition:tradition_by_the_sword = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + +tradition_the_witenagemot = { + category = regional + + layers = { + 0 = diplo + 1 = western + 4 = council.dds + } + + is_shown = { + OR = { + has_cultural_pillar = heritage_west_germanic + has_cultural_pillar = heritage_brythonic + has_cultural_pillar = heritage_goidelic + } + } + can_pick = { + OR = { + has_cultural_pillar = heritage_west_germanic + has_cultural_pillar = heritage_brythonic + has_cultural_pillar = heritage_goidelic + } + } + + parameters = { + witenagemot_succession_enabled = yes + } + character_modifier = { + monthly_prestige_gain_per_happy_powerful_vassal_mult = 0.04 + realm_priest_opinion = 15 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_bureaucratic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_councillor = { + percent = 1 + opinion = { + target = prev + value >= 0 + } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = councillor_with_negative_opinion_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_the_witenagemot } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + OR = { + culture_tradition:tradition_things = { is_in_list = traits } + culture_tradition:tradition_fp3_jirga = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + +tradition_things = { + category = regional + + layers = { + 0 = learning + 1 = western + 4 = council.dds + } + + is_shown = { + has_cultural_pillar = heritage_north_germanic + } + can_pick = { + has_cultural_pillar = heritage_north_germanic + } + + parameters = { + scandinavian_elective_enabled = yes + trait_county_opinion_modifiers = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_bureaucratic_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + county_opinion < 0 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = counties_with_low_county_opinion_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_things } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { + OR = { + culture_tradition:tradition_the_witenagemot = { is_in_list = traits } + culture_tradition:tradition_fp3_jirga = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + +tradition_caravaneers = { + category = regional + + layers = { + 0 = diplo + 1 = mena + 4 = camel.dds + } + + is_shown = { + always = no + } + + parameters = { + wanderers_gain_extra_economic_skills = yes + more_likely_to_leave_court = yes + second_caravanserai = yes + unlock_voluntary_laampdom = yes + } + + character_modifier = { + movement_speed = 0.05 + diplomatic_range_mult = 0.2 + character_travel_safety_mult = 0.2 + character_travel_speed_mult = 0.2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_egalitarian_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_caravaneers } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 600 } +} + +tradition_horse_lords = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = horses.dds + } + + is_shown = { + OR = { + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_turkic + } + NOT = { + has_dlc_feature = khans_of_the_steppe + } + } + + can_pick = { + custom_description = { + text = culture_in_steppe_desc + any_culture_county = { + percent >= 0.4 + any_county_province = { + geographical_region = world_steppe + } + } + } + } + + parameters = { + unlock_maa_horse_archers = yes + can_recruit_open_specialist = yes + unlock_horse_pastures_building = yes + steppe_hunt_success_chance = yes + unlock_voluntary_laampdom = yes + } + + character_modifier = { + light_cavalry_damage_mult = 0.1 + light_cavalry_screen_mult = 0.1 + supply_duration = 1 + movement_speed = 0.1 + character_travel_speed_mult = 0.2 + character_travel_safety_mult = 0.2 + movement_speed_land_raiding = 0.3 + hostile_county_attrition_raiding = -0.25 + provisions_use_mult = -0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_communal_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_horse_lords } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + #if = { + # limit = { + # NOR = { + # has_cultural_pillar = heritage_turkic + # has_cultural_pillar = heritage_mongolic + # } + # } + # add = { + # value = tradition_unfulfilled_criteria_penalty + # desc = steppe_heritage_reduction_desc + # } + #} + } + } + + ai_will_do = { + value = 400 + } +} + +tradition_saharan_nomads = { + category = regional + + layers = { + 0 = learning + 1 = mena + 4 = desert.dds + } + + is_shown = { + any_culture_county = { + title_province = { + geographical_region = custom_sahara_proper + } + } + } + can_pick = { + any_culture_county = { + title_province = { + geographical_region = custom_sahara_proper + } + } + } + + parameters = { + desert_hunt_success_chance = yes + resistant_to_desert_privation = yes + } + character_modifier = { + light_cavalry_maintenance_mult = -0.25 + light_cavalry_recruitment_cost_mult = -0.25 + oasis_development_growth_factor = 0.1 + movement_speed = 0.1 + character_travel_speed = 10 + desert_travel_danger = desert_high_danger_reduction + drylands_travel_danger = drylands_high_danger_reduction + desert_mountains_travel_danger = desert_mountains_high_danger_reduction + movement_speed_land_raiding = 0.2 + hostile_county_attrition_raiding = -0.3 + + # Nullify the maluses from world_africa_sahara_provisions_usage_multiplier_modifier. + desert_provisions_use_mult = -0.66 + desert_mountains_provisions_use_mult = -0.66 + desert_supply_limit_mult = 0.5 + desert_mountains_supply_limit_mult = 0.5 + desert_fertility_growth_mult = medium_culture_county_fertility_value_mult + oasis_fertility_growth_mult = high_culture_county_fertility_value_mult + } + province_modifier = { + oasis_construction_gold_cost = -0.15 + desert_construction_gold_cost = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + any_county_province = { + geographical_region = custom_sahara_proper + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = sahara_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_saharan_nomads } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 400 } +} + +tradition_visigothic_codes = { + category = regional + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = crown.dds + } + + is_shown = { + always = no +# OR = { +# this = culture:visigothic +# this = culture:basque +# any_parent_culture_or_above = { +# OR = { +# this = culture:visigothic +# this = culture:basque +# } +# } +# } + } + can_pick = { +# OR = { +# this = culture:visigothic +# this = culture:basque +# any_parent_culture_or_above = { +# OR = { +# this = culture:visigothic +# this = culture:basque +# } +# } +# } +# scope:character = { +# has_religion = religion:christianity_religion #The Visigothic code is strongly associated with Christian canon law. +# } + } + + parameters = { + can_enact_high_partition_succession_law = yes + gender_equal_inheritance = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_egalitarian_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NAND = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + is_male = yes + } + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + is_female = yes + } + } + } + trigger_else = { + always = yes + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = three_gender_rulers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_visigothic_codes } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 200 } +} + +tradition_himalayan_settlers = { + category = regional + + layers = { + 0 = learning + 1 = indian + 4 = mountain.dds + } + + is_shown = { #Replaces Mountain Homes + OR = { + has_cultural_pillar = heritage_tibetan + has_cultural_pillar = heritage_qiangic + any_culture_county = { + title_province = { + geographical_region = world_himalaya + } + } + } + } + can_pick = { + OR = { + has_cultural_pillar = heritage_tibetan + has_cultural_pillar = heritage_qiangic + any_culture_county = { + title_province = { + geographical_region = world_himalaya + } + } + } + } + + parameters = { + unlock_maa_mountaineer = yes + rough_terrain_expert_trait_more_common = yes + mountain_trait_bonuses = yes + can_recruit_mountain_specialist = yes + resistant_to_mountain_privation = yes + } + + character_modifier = { + mountains_development_growth_factor = 0.2 + mountains_travel_danger = mountains_high_danger_reduction + movement_speed_land_raiding = 0.15 + hostile_county_attrition_raiding = -0.2 + } + province_modifier = { + mountains_construction_gold_cost = -0.1 + mountains_holding_construction_gold_cost = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + title_province = { + geographical_region = world_himalaya + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_in_himalaya_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_himalayan_settlers } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.4 + title_province = { + geographical_region = world_himalaya + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_desert_nomads = { + category = regional + + layers = { + 0 = martial + 1 = mena + 4 = camel.dds + } + + is_shown = { + OR = { + this = culture:bedouin + any_parent_culture_or_above = { + this = culture:bedouin + } + any_parent_culture = { + has_cultural_tradition = tradition_desert_nomads + } + } + } + can_pick = { + custom_tooltip = { + text = culture_in_camel_region_desc + any_culture_county = { + any_county_province = { + geographical_region = world_innovation_camels + } + } + } + } + + parameters = { + desert_warrior_trait_is_better = yes + desert_hunt_success_chance = yes + resistant_to_desert_privation = yes + } + character_modifier = { + camel_cavalry_maintenance_mult = -0.2 + camel_cavalry_recruitment_cost_mult = -0.2 + character_travel_speed = 10 + desert_travel_danger = desert_high_danger_reduction + drylands_travel_danger = drylands_high_danger_reduction + desert_mountains_travel_danger = desert_mountains_high_danger_reduction + movement_speed_land_raiding = 0.2 + hostile_county_attrition_raiding = -0.3 + } + province_modifier = { + desert_tax_mult = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= camel_percentage_multiplier_value + any_county_province = { + geographical_region = world_innovation_camels + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_in_camel_region_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_desert_nomads } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.5 + any_county_province = { + geographical_region = world_innovation_camels + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_mountaineer_ruralism = { + category = regional + + layers = { + 0 = martial + 1 = western + 4 = mountain.dds + } + + is_shown = { + has_cultural_pillar = heritage_west_slavic + NOR = { + has_cultural_tradition = tradition_himalayan_settlers + has_cultural_tradition = tradition_mountain_homes + any_culture_county = { + title_province = { + geographical_region = world_himalaya + } + } + } + } + + can_pick = { + has_cultural_pillar = heritage_west_slavic + NOT = { + has_cultural_tradition = tradition_mountain_homes + } + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + + parameters = { + unlock_maa_zbrojnosh = yes + quarries_building_bonuses = yes + hill_farms_building_bonuses = yes + rough_terrain_expert_trait_more_common = yes + mountain_trait_bonuses = yes + can_recruit_mountain_specialist = yes + } + + character_modifier = { + mountains_travel_danger = mountains_high_danger_reduction + hills_travel_danger = hills_high_danger_reduction + } + + county_modifier = { + hills_development_growth_factor = 0.1 + mountains_development_growth_factor = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = mountains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_true_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mountaineer_ruralism } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = mountains + terrain = hills + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + county_has_province_with_terrain = { + terrain = mountains + terrain = hills + } + } + } + multiply = 8 + } + } +} + +tradition_steppe_tolerance = { + category = regional + + layers = { + 0 = intrigue + 1 = mena + 4 = greeting.dds + } + + is_shown = { + NOR = { + culture_tradition:tradition_african_tolerance = { is_in_list = traits } + culture_tradition:tradition_religion_blending = { is_in_list = traits } + } + OR = { + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_turkic + } + } + can_pick = { + custom_tooltip = { + text = culture_in_steppe_desc + any_culture_county = { + percent >= 0.4 + any_county_province = { + geographical_region = world_steppe + } + } + } + } + + parameters = { #easily convert and don't force conversion + more_easily_converted = yes + less_likely_to_force_conversion = yes + } + + character_modifier = { # easier to self-convert and create or reform faith + faith_creation_piety_cost_mult = -0.2 + faith_conversion_piety_cost_mult = -0.2 + different_faith_opinion = 10 + different_faith_county_opinion_mult = -0.25 # reduced penalty for different faiths (note this appears confusing in the UI right now) + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_egalitarian_or_communal_desc + } + } + # No extra cost here, since we have a fairly restrictive can_pick block. + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_steppe_tolerance } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + multiply = 0.25 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + county_has_province_with_terrain = { + terrain = steppe + } + } + } + multiply = 8 + } + } +} + +tradition_nubian_warrior_queens = { + category = regional + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = crown.dds + } + + is_shown = { + NOT = { has_game_rule = inversed_gender_equality } + always = no +# any_parent_culture_or_above = { +# OR = { +# this = culture:nubian +# this = culture:daju +# } +# } + } + can_pick = { +# any_parent_culture_or_above = { +# OR = { +# this = culture:nubian +# this = culture:daju +# } +# } + } + + parameters = { + gender_equal_inheritance = yes + female_only_inheritance = yes + female_preference_inheritance = yes + prowess_from_martial_education = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_egalitarian_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NAND = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier > tier_barony + is_male = yes + } + any_ruler = { + count >= 3 + culture = prev + primary_title.tier > tier_barony + is_female = yes + } + } + } + trigger_else = { + always = yes + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = three_gender_rulers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_nubian_warrior_queens } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 200 } +} + +tradition_nubian_warrior_kings = { + category = regional + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = crown.dds + } + + is_shown = { + has_game_rule = inversed_gender_equality + any_parent_culture_or_above = { + OR = { + this = culture:nubian + this = culture:daju + } + } + } + can_pick = { + any_parent_culture_or_above = { + OR = { + this = culture:nubian + this = culture:daju + } + } + } + + parameters = { + gender_equal_inheritance = yes + male_only_inheritance = yes + male_preference_inheritance = yes + prowess_from_martial_education = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_egalitarian_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NAND = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier > tier_barony + is_male = yes + } + any_ruler = { + count >= 3 + culture = prev + primary_title.tier > tier_barony + is_female = yes + } + } + } + trigger_else = { + always = yes + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = three_gender_rulers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_nubian_warrior_kings } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 200 } +} diff --git a/common/culture/traditions/00_ritual_traditions.txt b/common/culture/traditions/00_ritual_traditions.txt new file mode 100644 index 00000000..b638d5b1 --- /dev/null +++ b/common/culture/traditions/00_ritual_traditions.txt @@ -0,0 +1,1794 @@ +############################## +# RITUAL CULTURAL TRADITIONS # +############################## + +tradition_monogamous = { + category = ritual + + layers = { + 0 = learning + 1 = western + 4 = knight.dds + } + + can_pick = { + custom_tooltip = { + text = only_one_marriage_tradition_allowed + trigger_if = { + limit = { + OR = { + NOT = { exists = scope:replacing } + NOR = { + scope:replacing = culture_tradition:tradition_polygamous + scope:replacing = culture_tradition:tradition_concubines + } + } + } + NOR = { + culture_tradition:tradition_polygamous = { is_in_list = traits } + culture_tradition:tradition_concubines = { is_in_list = traits } + } + } + } + } + can_pick_for_hybridization = { + custom_tooltip = { + text = only_one_marriage_tradition_allowed + NOT = { # Only blocks polygamous to avoid duplicate warnings, but is blocked by concubines + culture_tradition:tradition_polygamous = { is_in_list = traits } + } + } + } + + parameters = { + number_of_spouses = 1 + romance_scheme_bonus_vs_spouse = yes + } + + character_modifier = { + spouse_opinion = 10 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + scope:character.faith = { + has_doctrine = doctrine_monogamy + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = cheaper_tradition_from_faith + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_monogamous } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 0 } +} + +tradition_polygamous = { + category = ritual + + layers = { + 0 = diplo + 1 = mena + 4 = temple.dds + } + + can_pick = { + custom_tooltip = { + text = only_one_marriage_tradition_allowed + trigger_if = { + limit = { + OR = { + NOT = { exists = scope:replacing } + NOR = { + scope:replacing = culture_tradition:tradition_monogamous + scope:replacing = culture_tradition:tradition_concubines + } + } + } + NOR = { + culture_tradition:tradition_monogamous = { is_in_list = traits } + culture_tradition:tradition_concubines = { is_in_list = traits } + } + } + } + } + can_pick_for_hybridization = { + custom_tooltip = { + text = only_one_marriage_tradition_allowed + NOT = { # Only blocks concubines to avoid duplicate warnings, but is blocked by monogamous + culture_tradition:tradition_concubines = { is_in_list = traits } + } + } + } + + parameters = { + number_of_spouses = 4 + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + scope:character.faith = { + OR = { + has_doctrine = doctrine_polygamy + has_doctrine = doctrine_concubines + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = cheaper_tradition_from_faith + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_polygamous } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 0 } +} + +tradition_concubines = { + category = ritual + + layers = { + 0 = intrigue + 1 = indian + 4 = greeting.dds + } + + can_pick = { + custom_tooltip = { + text = only_one_marriage_tradition_allowed + trigger_if = { + limit = { + OR = { + NOT = { exists = scope:replacing } + NOR = { + scope:replacing = culture_tradition:tradition_monogamous + scope:replacing = culture_tradition:tradition_polygamous + } + } + } + NOR = { + culture_tradition:tradition_monogamous = { is_in_list = traits } + culture_tradition:tradition_polygamous = { is_in_list = traits } + } + } + } + } + can_pick_for_hybridization = { + custom_tooltip = { + text = only_one_marriage_tradition_allowed + NOT = { # Only blocks monogamous to avoid duplicate warnings, but is blocked by polygamous + culture_tradition:tradition_monogamous = { is_in_list = traits } + } + } + } + + parameters = { + number_of_spouses = 1 + number_of_consorts = 3 + + number_of_consorts_hegemony = 5 + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + scope:character.faith = { + OR = { + has_doctrine = doctrine_polygamy + has_doctrine = doctrine_concubines + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = cheaper_tradition_from_faith + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_concubines } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 0 } +} + +tradition_sacred_mountains = { + category = ritual + + layers = { + 0 = learning + 1 = mediterranean + 4 = mountain.dds + } + + is_shown = { + NOR = { + has_cultural_pillar = heritage_somalian + has_cultural_pillar = heritage_east_african + has_cultural_pillar = heritage_tibetan + has_cultural_pillar = heritage_qiangic + any_culture_county = { + title_province = { + geographical_region = world_himalaya + } + } + has_cultural_tradition = tradition_himalayan_settlers + } + scope:character = { government_has_flag = government_is_tribal } + } + can_pick = { + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + + parameters = { + piety_gain_on_building_complete_in_mountains = yes + zealous_people_internal_yurt_unlock = yes + } + + character_modifier = { + mountains_fertility_decline_mult = -0.1 + desert_mountains_fertility_decline_mult = -0.1 + } + + province_modifier = { + desert_mountains_tax_mult = 0.05 + mountains_tax_mult = 0.05 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_sacred_mountains } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { culture_pillar:ethos_spiritual = { is_in_list = traits } } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + piety_level >= 3 + } + } + multiply = scope:character.piety_level + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + county_has_province_with_terrain = { + terrain = mountains + terrain = desert_mountains + } + } + } + multiply = 2 + } + } +} + +tradition_sacred_groves = { + category = ritual + + layers = { + 0 = learning + 1 = western + 4 = forest.dds + } + + is_shown = { + scope:character = { government_has_flag = government_is_tribal } + } + can_pick = { + custom_description = { + text = culture_in_forest_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + terrain = jungle + } + } + } + } + + parameters = { + piety_gain_on_building_complete_in_forest_taiga = yes + } + province_modifier = { + forest_tax_mult = 0.05 + taiga_tax_mult = 0.05 + jungle_tax_mult = 0.05 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + terrain = jungle + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = forest_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_sacred_groves } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { culture_pillar:ethos_spiritual = { is_in_list = traits } } + } + multiply = 0.25 + } + else_if = { + limit = { + scope:character ?= { + piety_level >= 3 + } + } + multiply = scope:character.piety_level + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + terrain = jungle + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + county_has_province_with_terrain = { + terrain = forest + terrain = taiga + terrain = jungle + } + } + } + multiply = 4 + } + } +} + +tradition_culinary_art = { + category = ritual + + layers = { + 0 = diplo + 1 = indian + 4 = food.dds + } + + can_pick = { + custom_tooltip = { + text = culture_in_farmlands_or_floodplains_terrain_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = farmlands + terrain = floodplains + } + } + } + } + + parameters = { + more_expensive_feasts = yes + refined_feasts = yes + renown_from_feasts = yes + characters_are_better_food_tasters = yes + better_food_tasters = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + count >= 5 + county_has_province_with_terrain = { + terrain = farmlands + terrain = floodplains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_in_farmlands_or_floodplains_terrain_count_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_culinary_art } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + count >= 2 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = farmlands + terrain = floodplains + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_festivities = { + category = ritual + + layers = { + 0 = diplo + 1 = indian + 4 = food.dds + } + + parameters = { + more_frequent_feasts = yes + reveler_traits_more_common = yes + reveler_traits_more_valued = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_stoic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_reveler + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_reveler_lifestyle_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_festivities } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character ?= { + has_trait = lifestyle_reveler + } + } + } + multiply = 0.5 + } + else = { + multiply = 2 + } + } +} + +tradition_sorcerous_metallurgy = { + category = ritual + + layers = { + 0 = learning + 1 = mediterranean + 4 = tools.dds + } + + is_shown = { + } + + can_pick = { + scope:character = { + faith = { + NOR = { + has_doctrine_parameter = witchcraft_illegal + has_doctrine_parameter = witchcraft_shunned + } + } + } + } + + parameters = { + more_expensive_weapon_inspiration = yes + improved_weapon_inspiration = yes + building_barracks_piety_bonuses = yes + sorcerous_metallurgy_internal_yurt_unlock = yes + nomadic_metal_artifact_unlock = yes + } + + character_modifier = { + prowess_per_piety_level = 2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_or_communal_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = witch + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = three_witch_rulers_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_sorcerous_metallurgy } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + has_trait = witch + } + } + } + multiply = 0.5 + } + else = { + multiply = 8 + } + } +} + +tradition_mystical_ancestors = { + category = ritual + + layers = { + 0 = learning + 1 = mediterranean + 4 = philosopher.dds + } + + is_shown = { + any_parent_culture_or_above = { + has_cultural_tradition = tradition_mystical_ancestors + } + } + + can_pick = { #Can pick if your culture has mystical ancestors in its history + custom_tooltip = { + text = any_ancestor_culture_was_mystical + any_parent_culture_or_above = { + has_cultural_tradition = tradition_mystical_ancestors + } + } + } + + parameters = { + cannot_disherit = yes + landing_house_members_gives_renown = yes + piety_penalty_for_revoking_titles_from_house_members = yes + } + + character_modifier = { + dynasty_opinion = 10 + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + } + if = { + limit = { + NOT = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mystical_ancestors } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 1000 } +} + +tradition_religion_blending = { + category = ritual + + layers = { + 0 = diplo + 1 = mediterranean + 4 = temple.dds + } + + is_shown = { + NOT = { + culture_tradition:tradition_steppe_tolerance = { is_in_list = traits } + } + } + can_pick = { + custom_tooltip = { + text = rulers_following_different_faiths_trigger_desc + scope:character = { + any_vassal = { + count >= 2 + culture = prev.culture + faith != prev.faith + } + } + } + } + + parameters = { + more_easily_converted = yes + } + + character_modifier = { + faith_creation_piety_cost_mult = -0.2 + faith_conversion_piety_cost_mult = -0.2 + ignore_opinion_of_different_faith = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_vassal = { + count >= 5 + culture = prev.culture + faith != prev.faith + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_following_different_faiths_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_religion_blending } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + any_vassal = { + count >= 5 + culture = prev.culture + faith != prev.faith + } + } + } + } + multiply = 0 + } + } +} + +tradition_religious_patronage = { + category = ritual + + layers = { + 0 = steward + 1 = indian + 4 = temple.dds + } + + can_pick = { + custom_tooltip = { + any_culture_county = { + percent >= 0.2 + any_county_province = { + has_holding_type = church_holding + } + } + text = 20_percent_churches + } + } + + parameters = { + extra_piety_from_temple_construction = yes + renown_from_temple_construction = yes + consolidate_rule_decision = yes + } + character_modifier = { + monthly_piety_from_buildings_mult = 0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + faith = scope:character.faith + has_trait = zealous + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_same_faith_zealous_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_religious_patronage } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + if = { + limit = { + scope:character = { + government_has_flag = government_is_tribal + } + } + multiply = 0 + } + } +} + +tradition_medicinal_plants = { + category = ritual + + layers = { + 0 = learning + 1 = indian + 4 = forest.dds + } + + parameters = { + herbalist_traits_more_common = yes + herbalist_trait_gives_bonuses = yes + } + + character_modifier = { + owned_hostile_scheme_success_chance_add = 5 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_bureaucratic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_herbalist + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_lifestyle_herbalist_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_medicinal_plants } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + scope:character ?= { + NOT = { + has_trait = lifestyle_herbalist + } + } + } + multiply = 0.75 + } + else = { + multiply = 4 + } + } +} + +tradition_sacred_hunts = { + category = ritual + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = hunter.dds + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_tooltip = { + text = cannot_have_tradition_vegetarianism + NOT = { culture_tradition:tradition_vegetarianism = { is_in_list = traits } } + } + } + + parameters = { + sacred_hunts = yes + hunting_traits_more_pious = yes + zealous_people_internal_yurt_unlock = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_spiritual_or_stoic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_hunter + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_hunter_lifestyle_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_sacred_hunts } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + multiply = 0.5 + } + } +} + +tradition_faith_bound = { + category = ritual + + layers = { + 0 = learning + 1 = indian + 4 = crown.dds + } + + parameters = { + same_faith_inheritance_only = yes + } + character_modifier = { + opinion_of_different_faith = -10 + ai_zeal = 25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + any_ruler = { + culture = prev + THIS != scope:character + faith = scope:character.faith + primary_title.tier >= tier_county + } + } + NOT = { + any_ruler = { + percent >= 0.9 + culture = prev + primary_title.tier >= tier_county + faith = scope:character.faith + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_same_faith_desc + } + } + if = { + limit = { + OR = { + has_variable = defensive_traditionalist_discount + has_variable = aggressive_traditionalist_discount + } + } + add = { + value = traditionalist_discount + desc = traditionalist_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_faith_bound } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 0 + if = { + limit = { + scope:character = { + has_trait = zealous + } + } + add = 100 + } + } +} + +tradition_by_the_sword = { + category = ritual + + layers = { + 0 = learning + 1 = mena + 4 = swords.dds + } + + can_pick = { + custom_tooltip = { + text = faith_not_allowed_holy_war_desc + scope:character = { + faith = { + NOT = { has_doctrine_parameter = holy_wars_forbidden } # Pacifists cannot Holy War + } + } + } + } + + parameters = { + no_limit_to_kingdom_level_holy_wars = yes + cb_lower_piety_level_requirement = yes + } + character_modifier = { + diplomacy_per_piety_level = -1 + martial_per_piety_level = 1 + different_faith_opinion = -15 + monthly_piety_gain_mult = -0.2 + ai_zeal = 25 + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOT = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + faith = scope:character.faith + has_trait = zealous + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_same_faith_zealous_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_by_the_sword } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 0 + if = { + limit = { + scope:character ?= { + has_trait = zealous + ai_has_warlike_personality = yes + any_neighboring_top_liege_realm_owner = { + count >= 2 + primary_title.tier >= tier_kingdom + faith != prev.faith + } + } + } + add = 1000 + } + } +} + +tradition_language_scholars = { + category = ritual + + layers = { + 0 = intrigue + 1 = indian + 4 = philosopher.dds + } + + parameters = { + piety_from_language_schemes = yes + language_success_chance_per_piety_level = yes + languages_speed_up_claims = yes + rulers_want_to_learn_languages_of_coreligionists = yes + } + character_modifier = { + learn_language_scheme_phase_duration_add = medium_scheme_phase_duration_bonus_value + } + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bureaucratic_spiritual_or_egalitarian_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + piety_level >= 3 + num_of_known_languages >= 3 + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = piety_level_kown_languages_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_language_scholars } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 100 + } +} + +# This is the free version of runestones. +tradition_runestones = { + category = ritual + + layers = { + 0 = steward + 1 = western + 4 = runestone.dds + } + + # Runestones are available in a slightly reduced form in the base title, so we let you access this tradition regardless of whether you have FP1 or not. + is_shown = { + has_cultural_pillar = heritage_north_germanic + } + can_pick = { + custom_tooltip = { + text = cannot_have_tradition_fp1_northern_stories + NOT = { culture_tradition:tradition_fp1_northern_stories = { is_in_list = traits } } + } + } + + parameters = { + has_access_to_runestones = yes + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_bureaucratic_desc + } + } + # Poet, Arrogant, or Journaller requirement. + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + OR = { + has_trait = lifestyle_poet + has_trait = arrogant + has_trait = journaller + } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_lacks_storytelling_traits_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_runestones } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + } +} + +tradition_merciful_blindings = { + category = ritual + + layers = { + 0 = intrigue + 1 = mediterranean + 4 = tools.dds + } + + can_pick = { + custom_tooltip = { + text = cannot_have_tradition_byzantine_succession + NOT = { culture_tradition:tradition_byzantine_succession = { is_in_list = traits } } + } + } + + parameters = { + can_blind_prisoners = yes + merciful_blinding = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_or_courtly_desc + } + } + if = { + limit = { + scope:character = { + NOT = { + any_prisoner = { + scope:character = { + OR = { + has_banish_reason = prev + has_execute_reason = prev + } + } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = no_prisoner_with_harsh_reason_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_merciful_blindings } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { # Reduce chance of picking this if the culture has another use of prisoners already + culture_tradition:tradition_talent_acquisition = { is_in_list = traits } + } + multiply = 0.5 + } + } +} diff --git a/common/culture/traditions/01_fp1_traditions.txt b/common/culture/traditions/01_fp1_traditions.txt new file mode 100644 index 00000000..6ad0f646 --- /dev/null +++ b/common/culture/traditions/01_fp1_traditions.txt @@ -0,0 +1,602 @@ +########################### +# FP1 CULTURAL TRADITIONS +########################### + +####################### +# Norse Specific +####################### + +tradition_fp1_coastal_warriors = { + category = combat + + layers = { + 0 = martial + 1 = western + 4 = viking.dds + } + + is_shown = { + # DLC check. + has_fp1_dlc_trigger = yes + NOT = { has_cultural_tradition = tradition_hird } + has_cultural_pillar = heritage_north_germanic + } + + can_pick = { + # Must be of a suitable heritage. + custom_tooltip = { + text = northern_germanic_heritage_trigger + has_cultural_pillar = heritage_north_germanic + } + # And have a coastal presence. + custom_description = { + text = culture_on_coast_desc + any_culture_county = { + has_coastal_province = yes + } + } + # Shouldn't be combined with the following traditions: + custom_tooltip = { + text = cannot_have_tradition_warrior_culture + NOT = { culture_tradition:tradition_warrior_culture = { is_in_list = traits } } + } + custom_tooltip = { + text = cannot_have_tradition_seafaring + NOT = { culture_tradition:tradition_seafaring = { is_in_list = traits } } + } + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + custom_tooltip = { + text = cannot_have_tradition_maritime_way_of_life + NOT = { culture_tradition:tradition_maritime_way_of_life = { is_in_list = traits } } + } + } + + parameters = { + unlock_maa_bondi = yes + unlock_maa_vigmen = yes + unlock_maa_varangian_veterans = yes + unlock_maa_huscarls = yes + strong_traits_more_valued = yes + strong_traits_more_common = yes + trade_ports_stationed_maa_bonus = yes + trade_ports_enabled_for_tribals = yes + unlock_voluntary_laampdom = yes + more_likely_to_be_laamps = yes + } + + character_modifier = { + sea_travel_danger = medium_sea_danger_reduction + coastal_sea_travel_danger = medium_sea_danger_reduction + taiga_provisions_use_mult = -0.1 + forest_provisions_use_mult = -0.1 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = culture_not_bellicose + } + } + # Gotta be a heavily coastal culture not to get a surcharge. + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + has_coastal_province = yes + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = coastal_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp1_coastal_warriors } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + has_coastal_province = yes + } + } + } + } + multiply = 0 + } + } +} + +tradition_fp1_performative_honour = { + category = societal + + layers = { + 0 = diplo + 1 = western + 4 = shieldmaiden.dds + } + + is_shown = { + # DLC check. + has_fp1_dlc_trigger = yes + has_cultural_pillar = heritage_north_germanic + } + + can_pick = { + # Must be of a suitable heritage. + custom_tooltip = { + text = northern_germanic_heritage_trigger + has_cultural_pillar = heritage_north_germanic + } + # Shouldn't be combined with the following traditions: + custom_tooltip = { + text = cannot_have_tradition_fp1_trials_by_combat + NOT = { culture_tradition:tradition_fp1_trials_by_combat = { is_in_list = traits } } + } + custom_tooltip = { + text = cannot_have_tradition_fp1_the_right_to_prove + NOT = { culture_tradition:tradition_fp1_the_right_to_prove = { is_in_list = traits } } + } + } + + parameters = { + has_access_to_shieldmaidens = yes + has_access_to_trials_by_combat = yes + craven_trait_costs_prestige = yes + weak_traits_looked_down_upon = yes + } + + character_modifier = { + knight_limit = 1 + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_courtier = { + count >= 5 + prowess >= 10 + is_adult = yes + NOT = { can_be_knight_trigger = { ARMY_OWNER = prev } } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = courtiers_with_prowess_who_cant_be_knight_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp1_performative_honour } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 100 } +} + +tradition_fp1_northern_stories = { + category = societal + + layers = { + 0 = diplo + 1 = western + 4 = runestone.dds + } + + is_shown = { + # DLC check. + has_fp1_dlc_trigger = yes + has_cultural_pillar = heritage_north_germanic + } + + can_pick = { + # Must be of a suitable heritage. + custom_tooltip = { + text = northern_germanic_heritage_trigger + has_cultural_pillar = heritage_north_germanic + } + # Shouldn't be combined with the following traditions: + custom_tooltip = { + text = cannot_have_tradition_runestones + NOT = { culture_tradition:tradition_runestones = { is_in_list = traits } } + } + custom_tooltip = { + text = cannot_have_tradition_poetry + NOT = { culture_tradition:tradition_poetry = { is_in_list = traits } } + } + custom_tooltip = { + text = cannot_have_tradition_storytellers + NOT = { culture_tradition:tradition_storytellers = { is_in_list = traits } } + } + } + + parameters = { + has_access_to_runestones = yes + poet_trait_gives_bonuses = yes + poet_trait_more_common = yes + better_ward_education = yes + tells_stories = yes + better_court_poets = yes + } + + character_modifier = { + owned_scheme_secrecy_add = -15 + owned_legend_spread_mult = 0.1 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_bureaucratic_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_poet + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_poet_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp1_northern_stories } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 100 } +} + +####################### +# Generic +####################### + +tradition_fp1_trials_by_combat = { + category = societal + + layers = { + 0 = intrigue + 1 = western + 4 = fight.dds + } + + is_shown = { + # DLC check. + has_fp1_dlc_trigger = yes + has_cultural_pillar = heritage_north_germanic + } + + can_pick = { + custom_tooltip = { + text = cannot_have_tradition_fp1_performative_honour + NOT = { culture_tradition:tradition_fp1_performative_honour = { is_in_list = traits } } + } + } + + parameters = { + has_access_to_trials_by_combat = yes + blademaster_traits_give_learning = yes + craven_trait_costs_prestige = yes + } + + character_modifier = { + knight_limit = 1 + accolade_glory_gain_mult = 0.1 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_stoic_or_courtly_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + OR = { + has_trait = education_martial_4 + has_trait = education_martial_5 + } + learning >= 10 + } + } + } + trigger_else_if = { + limit = { + scope:character = { + OR = { + has_trait = education_martial_4 + has_trait = education_martial_5 + } + learning >= 10 + } + } + always = no + } + trigger_else_if = { + limit = { + scope:character.culture = { + OR = { + has_cultural_pillar = heritage_brythonic + has_cultural_pillar = heritage_central_germanic + has_cultural_pillar = heritage_frankish + has_cultural_pillar = heritage_goidelic + has_cultural_pillar = heritage_iberian + has_cultural_pillar = heritage_latin + has_cultural_pillar = heritage_west_germanic + } + } + } + always = no + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_martial_edu_and_learning_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp1_trials_by_combat } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { value = 100 } +} + +tradition_fp1_the_right_to_prove = { + category = societal + + layers = { + 0 = intrigue + 1 = western + 4 = shieldmaiden.dds + } + + is_shown = { + # DLC check. + has_fp1_dlc_trigger = yes + } + + can_pick = { + custom_tooltip = { + text = cannot_have_tradition_fp1_performative_honour + NOT = { culture_tradition:tradition_fp1_performative_honour = { is_in_list = traits } } + } + } + + parameters = { + has_access_to_shieldmaidens = yes + } + + character_modifier = { + knight_limit = -2 + knight_effectiveness_mult = 0.25 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + + # Egalitarian, provided you're moving *up* the scale. Somewhat less so when moving down. + culture_pillar:ethos_egalitarian = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_egalitarian_or_communal_desc + } + } + if = { + limit = { + NOT = { + scope:character = { + any_courtier = { + count >= 5 + prowess >= 10 + is_adult = yes + NOT = { can_be_knight_trigger = { ARMY_OWNER = prev } } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = courtiers_with_prowess_who_cant_be_knight_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp1_the_right_to_prove } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + any_courtier = { + count >= 5 + prowess >= 10 + is_adult = yes + NOT = { can_be_knight_trigger = { ARMY_OWNER = prev } } + } + } + } + } + multiply = 0 + } + } +} diff --git a/common/culture/traditions/03_fp2_traditions.txt b/common/culture/traditions/03_fp2_traditions.txt new file mode 100644 index 00000000..1b83e526 --- /dev/null +++ b/common/culture/traditions/03_fp2_traditions.txt @@ -0,0 +1,433 @@ +########################### +# FP2 CULTURAL TRADITIONS +########################### + +####################### +# Aragonese Specific +####################### + +tradition_fp2_state_ransoming = { + category = realm + + layers = { + 0 = steward + 1 = western + 4 = state_ransoming.dds + } + + is_shown = { + # DLC check. + has_fp2_dlc_trigger = yes + } + + # Anyone can take this. + + parameters = { + knights_die_less_but_are_captured_more = yes + characters_more_likely_to_be_captured_in_sieges = yes + can_demand_higher_ransoms_from_lower_tiers = yes + } + + character_modifier = { + hard_casualty_modifier = -0.5 + monthly_war_income_mult = -0.25 + } + + county_modifier = { + # Naturally, people are more keen to turn up to serve. + levy_size = 0.1 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_communal_desc + } + } + # Heritage or language + if = { + limit = { + NOR = { + has_cultural_pillar = heritage_iberian + culture_head ?= { knows_language = language_iberian } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = lack_iberian_heritage_or_language_penalty_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp2_state_ransoming } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + # General replacement stuff. + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + } +} + +####################### +# Castilian Specific +####################### + +tradition_fp2_strategy_gamers = { + category = ritual + + layers = { + 0 = diplo + 1 = western + 4 = board_gamers.dds + } + + is_shown = { + # DLC check. + has_fp2_dlc_trigger = yes + } + + # Anyone can take this. + + parameters = { + commanders_likelier_to_gain_commander_traits = yes + may_challenge_to_board_games = yes + may_wager_land_on_board_games = yes + withering_mind_less_likely = yes + } + + character_modifier = { + movement_speed = 0.1 + prowess = medium_skill_penalty + martial = medium_skill_bonus + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_courtly_desc + } + } + # Either high martial, high learning, or a chess board required. + if = { + limit = { exists = culture_head } + if = { + limit = { + culture_head = { + NOR = { + martial >= very_high_skill_rating + learning >= very_high_skill_rating + any_character_artifact = { has_variable = can_be_used_for_board_games } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = lack_martial_learning_or_chess_board_penalty_desc + } + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp2_strategy_gamers } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 0 + + if = { + limit = { exists = culture_head } + culture_head = { + # Absolute nerds. + if = { + limit = { + martial >= extremely_high_skill_rating + learning >= extremely_high_skill_rating + has_trait = scholar + } + add = 100 + } + # People who got suckered in & accidentally started a trend. + if = { + limit = { + any_character_artifact = { has_variable = can_be_used_for_board_games } + } + add = 100 + } + } + } + } +} + +####################### +# Andalusian Specific +####################### + +tradition_fp2_malleable_subjects = { + category = realm + + layers = { + 0 = intrigue + 1 = mena + 4 = malleable_subjects.dds + } + + is_shown = { + # DLC check. + has_fp2_dlc_trigger = yes + has_cultural_pillar = heritage_iberian + } + + can_pick = { + # Must be of a suitable heritage. + custom_tooltip = { + text = iberian_heritage_trigger + has_cultural_pillar = heritage_iberian + } + } + + parameters = { + doesnt_care_about_culture_faith_in_factions = yes + wants_to_learn_liege_language = yes + harder_to_convert_county_culture_without_heritage = yes + easier_to_convert_county_culture_with_heritage = yes + powerful_foreign_knights_find_you_attractive = yes + # ^[blushes] + } + + character_modifier = { + mercenary_hire_cost_mult = -0.5 + vassal_levy_contribution_mult = 0.25 + different_culture_opinion = 10 + ignore_negative_opinion_of_culture = yes + } + + culture_modifier = { + mercenary_count_mult = 2 + cultural_acceptance_gain_mult = 0.25 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_egalitarian_or_courtly_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp2_malleable_subjects } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 0 + # Players might want this, but the AI never does. + } +} + +####################### +# Generic +####################### + +tradition_fp2_ritualised_friendship = { + category = societal + + layers = { + 0 = diplo + 1 = western + 4 = ritualised_friendship.dds + } + + is_shown = { + # DLC check. + #has_fp2_dlc_trigger = yes + } + + can_pick = { + # Must have at least one friend. No friendless losers. Especially you, Nick. + custom_tooltip = { + text = need_at_least_one_friend + culture_head ?= { + any_relation = { type = friend } + } + } + } + + parameters = { + automatic_befriend_access = yes + may_propose_best_friendship = yes + strong_hooks_and_stress_effects_best_friends = yes + may_select_friendship_synergy_bonus = yes + } + + character_modifier = { + scheme_phase_duration_against_friend_add = 20 + scheme_phase_duration_against_best_friend_add = 40 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # No ethos requirement: everyone likes friends. + # Need at least three friends. + if = { + limit = { exists = culture_head } + if = { + limit = { + culture_head = { + any_relation = { + type = friend + count < 3 + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = guess_you_need_more_friends_desc + } + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_fp2_ritualised_friendship } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 0 + + if = { + limit = { exists = culture_head } + culture_head = { + # Some traits make you want to codify this more... + if = { + limit = { has_trait = gregarious } + add = 50 + } + if = { + limit = { has_trait = just } + add = 25 + } + if = { + limit = { has_trait = compassionate } + add = 25 + } + # ... but arbitrary characters have zero interest in anything nearly so formal + if = { + limit = { has_trait = arbitrary } + add = -200 + } + # We don't modify down for shy because, if anything, you'd expect a shy person to be more serious about the few friends they *do* have. + # Having lots of friends makes you more likely to want this. + if = { + limit = { + any_relation = { + type = friend + count >= 4 + } + } + add = 50 + } + # As does having a best friend already. + if = { + limit = { + any_relation = { type = best_friend } + } + add = 25 + } + # And certain lifestyles also make you want to focus on this. + if = { + limit = { has_focus = martial_chivalry_focus } + add = 10 + } + } + } + } +} diff --git a/common/culture/traditions/04_ep2_traditions.txt b/common/culture/traditions/04_ep2_traditions.txt new file mode 100644 index 00000000..3e115fdb --- /dev/null +++ b/common/culture/traditions/04_ep2_traditions.txt @@ -0,0 +1,106 @@ +########################### +# EP2 CULTURAL TRADITIONS +########################### + +####################### +# Generic +####################### + +tradition_ep2_avid_falconers = { + category = societal + + layers = { + 0 = diplo + 1 = mena + 4 = hunter.dds + } + + is_shown = { + # DLC check. + has_dlc_feature = tours_and_tournaments + } + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_tooltip = { + text = cannot_have_tradition_vegetarianism + NOT = { culture_tradition:tradition_vegetarianism = { is_in_list = traits } } + } + } + + parameters = { + more_frequent_hunts = yes + hunting_traits_more_valued = yes + falconer_traits_more_common = yes + always_unlock_legendary_hunting_lodge = yes + } + + province_modifier = { + stationed_maa_pursuit_mult = 0.15 + } + + cost = { + prestige = { + # Base cost. + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + # Ethos requirement. + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_stoic_or_courtly_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_ep2_avid_falconers } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + # General replacement stuff. + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + + if = { + limit = { exists = culture_head } + culture_head = { + # Some traits make you want to codify this more... + if = { + limit = { has_trait = arrogant } + add = 25 + } + if = { + limit = { has_trait = diligent } + add = 25 + } + # ... and others less. + if = { + limit = { has_trait = lazy } + add = -50 + } + if = { + limit = { has_trait = humble } + add = -25 + } + } + } + } +} diff --git a/common/culture/traditions/06_ce1_traditions.txt b/common/culture/traditions/06_ce1_traditions.txt new file mode 100644 index 00000000..7ad3514c --- /dev/null +++ b/common/culture/traditions/06_ce1_traditions.txt @@ -0,0 +1,122 @@ +########################### +# EP2 CULTURAL TRADITIONS +########################### + +####################### +# Generic +####################### + +tradition_ce1_ritual_washing = { + category = ritual + + layers = { + 0 = diplo + 1 = mena + 4 = ritual_washing.dds + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.1 + } + + parameters = { + better_disease_resistance = yes + diligent_trait_more_common = yes + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + employs_court_position = court_physician_court_position + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = doesnt_employ_court_physician_desc + } + } + #Discounts + if = { + limit = { + scope:character = { + OR = { + has_trait = lifestyle_physician + has_trait = whole_of_body + } + } + } + add = { + value = tradition_trait_discount + desc = cheaper_tradition_physician_or_whole_of_body + } + } + if = { + limit = { + has_cultural_pillar = heritage_north_germanic + } + add = { + value = tradition_heritage_discount + desc = cheaper_tradition_norse_washing + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_ce1_ritual_washing } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + scope:character = { + has_perk = wash_your_hands_perk + } + } + add = 100 + } + } +} diff --git a/common/culture/traditions/07_ep3_traditions.txt b/common/culture/traditions/07_ep3_traditions.txt index d886b3a2..b9becd5b 100644 --- a/common/culture/traditions/07_ep3_traditions.txt +++ b/common/culture/traditions/07_ep3_traditions.txt @@ -16,12 +16,13 @@ tradition_ep3_indomitable_azatani = { } is_shown = { - OR = { - this = culture:armenian - any_parent_culture_or_above = { - this = culture:armenian - } - } + always = no +# OR = { +# this = culture:armenian +# any_parent_culture_or_above = { +# this = culture:armenian +# } +# } # DLC check. has_ep3_dlc_trigger = yes NOT = { @@ -145,12 +146,13 @@ tradition_ep3_audacious_cadets = { } is_shown = { - OR = { - this = culture:norman - any_parent_culture_or_above = { - this = culture:norman - } - } + always = no +# OR = { +# this = culture:norman +# any_parent_culture_or_above = { +# this = culture:norman +# } +# } # DLC check. has_ep3_dlc_trigger = yes NOT = { diff --git a/common/culture/traditions/09_ach_traditions.txt b/common/culture/traditions/09_ach_traditions.txt new file mode 100644 index 00000000..6c22b8db --- /dev/null +++ b/common/culture/traditions/09_ach_traditions.txt @@ -0,0 +1,33 @@ +####################### +# CULTURAL TRADITIONS # +####################### + +###################### +# ACH Traditions # +###################### + +oath_mend_the_fracture_tradition = { + category = regional + + is_shown = { #only added from decision + always = no + } + + parameters = { + synergy_cultures_counties_development = yes + synergy_cultures_maa_spawn = yes + synergy_cultures_opinion_gain = yes + synergy_cultures_positive_chance_desc = yes + } + + character_modifier = { + development_growth_factor = 0.2 + diplomacy = 1 + } + + layers = { + 0 = steward + 1 = mediterranean + 4 = hostages.dds + } +} \ No newline at end of file diff --git a/common/culture/traditions/09_mpo_traditions.txt b/common/culture/traditions/09_mpo_traditions.txt new file mode 100644 index 00000000..d7607bc2 --- /dev/null +++ b/common/culture/traditions/09_mpo_traditions.txt @@ -0,0 +1,393 @@ +####################### +# CULTURAL TRADITIONS # +####################### + +###################### +# MPO Traditions # +###################### + +tradition_mpo_iron_cavalry = { + category = regional + + layers = { + 0 = martial + 1 = steppe + 4 = iron_cavalry.dds + } + + is_shown = { + has_mpo_dlc_trigger = yes + OR = { + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_turkic + has_cultural_pillar = heritage_magyar + scope:character = { + mpo_can_recruit_nomad_maa_trigger = yes + } + } + } + + + can_pick = { + culture_not_pacifistic_trigger = yes + custom_tooltip = { + text = culture_head_archer_cavalry_desc + scope:character = { + max_number_maa_soldiers_of_base_type = { + type = archer_cavalry + value >= 600 + } + } + } + trigger_if = { + limit = { + scope:character = { government_has_flag = government_is_nomadic } + } + scope:character.domicile ?= { + has_domicile_building_or_higher = paiza_metal_trade_yurt_01 + } + } + trigger_else = { + scope:character = { + has_trait = nomadic_philosophy + } + } + } + + parameters = { + unlock_maa_cataphract_archers = yes + martial_traits_give_out_hcav_bonus = yes + metalworkers_internal_yurt_unlock = yes + } + character_modifier = { + heavy_cavalry_toughness_mult = 0.2 + archer_cavalry_toughness_mult = 0.2 + light_cavalry_toughness_mult = 0.1 + herd_conversion = -0.01 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + multiply = 4 + desc = BASE + format = "BASE_VALUE_FORMAT" + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mpo_iron_cavalry } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { # Reduce chance slightly if the culture has access to other "cavalry" types + OR = { + has_innovation = innovation_war_camels + has_innovation = innovation_elephantry + } + } + multiply = 0.4 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 4 + } + } +} + +tradition_mpo_wolves_of_the_deep_steppe = { + category = regional + + layers = { + 0 = martial + 1 = steppe + 4 = wolves_of_the_deep_steppe.dds + } + + is_shown = { + has_mpo_dlc_trigger = yes + OR = { + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_turkic + has_cultural_pillar = heritage_magyar + scope:character = { + mpo_can_recruit_nomad_maa_trigger = yes + } + } + } + + can_pick = { + culture_not_pacifistic_trigger = yes + scope:character = { + government_has_flag = government_is_nomadic + } + } + + parameters = { + unlock_maa_mangudai = yes + } + character_modifier = { + prowess = 4 + herd_capacity_mult = 0.2 + herd_conversion = 0.01 + nomadic_horde_damage_mult = 0.1 + nomadic_horde_pursuit_mult = 0.1 + archer_cavalry_damage_mult = 0.15 + archer_cavalry_pursuit_mult = 0.2 + mountains_fertility_growth_mult = medium_culture_county_fertility_value_mult + mountains_travel_danger = mountains_medium_danger_reduction + hills_travel_danger = hills_medium_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + multiply = 4 + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + has_cultural_pillar = heritage_mongolic + } + multiply = { + value = 0.5 + desc = heritage_mongolic_name + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mpo_wolves_of_the_deep_steppe } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { # Reduce chance slightly if the culture has access to other "cavalry" types + OR = { + has_innovation = innovation_war_camels + has_innovation = innovation_elephantry + } + } + multiply = 0.4 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 4 + } + } +} + +tradition_devoted_horsemanship = { + category = regional + + layers = { + 0 = martial + 1 = steppe + 4 = horses.dds + } + + is_shown = { + OR = { + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_turkic + has_cultural_pillar = heritage_magyar + scope:character = { + mpo_can_recruit_nomad_maa_trigger = yes + } + } + } + + can_pick = { + OR = { + has_cultural_pillar = heritage_mongolic + has_cultural_pillar = heritage_turkic + has_cultural_pillar = heritage_magyar + scope:character = { + mpo_can_recruit_nomad_maa_trigger = yes + } + scope:character = { + has_trait = nomadic_philosophy + } + } + } + + parameters = { + unlock_maa_horse_archers = yes + can_recruit_open_specialist = yes + unlock_horse_pastures_building = yes + unlock_voluntary_laampdom = yes + stewardship_traits_give_out_cav_bonus = yes + unlock_maa_tarkhan = yes + } + + character_modifier = { + movement_speed = 0.1 + character_travel_speed_mult = 0.2 + movement_speed_land_raiding = 0.2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + multiply = 2 + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_communal_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_devoted_horsemanship } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + } +} + +tradition_mpo_northern_tribes = { + category = regional + + layers = { + 0 = steward + 1 = steppe + 4 = northern_tribes.dds + } + + can_pick_for_hybridization = { + custom_tooltip = { + text = cannot_hybridize_northern_tribes + always = no + } + } + + is_shown = { + has_mpo_dlc_trigger = yes + any_culture_county = { + OR = { + has_county_modifier = mpo_siberian_permafrost_modifier + has_county_modifier = mpo_siberian_permafrost_modifier_bad + } + } + } + can_pick = { + any_culture_county = { + percent >= 0.2 + has_county_modifier = mpo_siberian_permafrost_modifier_bad + } + } + + parameters = { + unlock_maa_maturkan_warriors = yes + permafrost_modifier_mechanic = yes + permafrost_modifier_removal_condition = yes + permafrost_unlock_tribal_building = yes + permafrost_cannot_become_feudal = yes + } + character_modifier = { + taiga_advantage = 4 + winter_advantage = 4 + taiga_travel_danger = taiga_medium_danger_reduction + hills_travel_danger = hills_medium_danger_reduction + taiga_construction_gold_cost = -0.2 + forest_construction_gold_cost = -0.2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + multiply = 2 + desc = BASE + format = "BASE_VALUE_FORMAT" + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_mpo_northern_tribes } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.5 + OR = { + has_county_modifier = mpo_siberian_permafrost_modifier + has_county_modifier = mpo_siberian_permafrost_modifier_bad + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mpo_northern_tribes_percentage_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 0 #ai either has it on game start or should not pursue it + } +} diff --git a/common/culture/traditions/tgp_traditions.txt b/common/culture/traditions/tgp_traditions.txt new file mode 100644 index 00000000..5ab45896 --- /dev/null +++ b/common/culture/traditions/tgp_traditions.txt @@ -0,0 +1,2347 @@ +tradition_tgp_bushido = { + category = regional + + layers = { + 0 = martial + 1 = asian + 4 = samurai.dds + } + + is_shown = { + culture_head = { + top_liege = { has_character_flag = shogun_flag } + has_government = japan_feudal_government + } + } + can_pick = { + culture_head = { + top_liege = { has_character_flag = shogun_flag } + has_government = japan_feudal_government + } + # Mutually exclusive with Imperial Peace and other Horse Archer MaA + NOR = { + culture_tradition:tradition_horse_lords = { is_in_list = traits } + culture_tradition:tradition_devoted_horsemanship = { is_in_list = traits } + culture_tradition:tradition_tgp_imperial_peace = { is_in_list = traits } + culture_tradition:tradition_tgp_imperial_peace = { is_in_list = traits } + } + } + + parameters = { + unlock_mounted_samurai_units = yes + unlock_infantry_samurai_units = yes + must_pledge_loyalty_to_liege = yes + honorable_trait_bonuses = yes + prowess_from_martial_education = yes + stalwart_leader_non_admin_duels = yes + non_admin_close_family_non_martial_gender_knights_in_defensive_wars = yes + } + + character_modifier = { + character_opinion_from_high_prowess_add = 2 + character_opinion_from_low_prowess_add = -1 + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + } + } + + ai_will_do = { + value = 1000 # AI should always try to pick this when they can + } +} + +tradition_tgp_rice_cultivators = { + category = realm + + layers = { + 0 = steward + 1 = asian + 4 = svamp.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + NOT = { + culture_tradition:tradition_intensive_farming = { is_in_list = traits } + } + } + + can_pick = { + custom_tooltip = { + text = culture_in_terraced_hills_terrain_desc + any_culture_county = { + any_county_province = { + terrain = terraced_hills + } + } + } + } + + parameters = { + rice_cultivators_next_level_paddy_fields = yes + rice_cultivators_can_construct_paddy_fields_in_hills_and_jungle = yes + } + + county_modifier = { + terraced_hills_development_growth_factor = 0.3 + terraced_hills_construction_gold_cost = -0.1 + terraced_hills_levy_size = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = culture_not_bellicose + } + } + if = { + limit = { + NOT = { + any_culture_county = { + count >= 3 + any_county_province = { + terrain = terraced_hills + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_in_terraced_hills_terrain_count_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + culture = scope:character.culture + any_county_province = { + terrain = terraced_hills + } + } + } + } + } + multiply = 0 + } + if = { + limit = { + scope:character = { + government_has_flag = government_is_tribal + } + } + multiply = 0 + } + } +} + +tradition_tgp_imperial_peace = { + category = regional + + layers = { + 0 = martial + 1 = asian + 4 = samurai.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + culture_head = { + government_is_japanese_trigger = yes + } + } + + can_pick = { + # Mutually exclusive with Bushido and other Horse Archer MaA + NOR = { + culture_tradition:tradition_horse_lords = { is_in_list = traits } + culture_tradition:tradition_devoted_horsemanship = { is_in_list = traits } + culture_tradition:tradition_tgp_imperial_peace = { is_in_list = traits } + culture_tradition:tradition_tgp_bushido = { is_in_list = traits } + } + } + + parameters = { + unlock_mounted_samurai_units = yes + prowess_from_martial_education = yes + non_admin_close_family_non_martial_gender_knights_in_defensive_wars = yes + stalwart_leader_non_admin_duels = yes + } + + character_modifier = { + defender_holding_advantage = 2 + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + # Only Courtly cultures should pick this + limit = { NOT = { culture_pillar:ethos_courtly = { is_in_list = traits } } } + multiply = 0 + } + if = { + # AI should avoid stacking traditions for courtly court positions + limit = { culture_tradition:tradition_music_theory = { is_in_list = traits } } + multiply = 0.25 + } + } +} + +tradition_tgp_defiant_ambushers = { + category = regional + + layers = { + 0 = martial + 1 = asian + 4 = samurai.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + has_cultural_pillar = heritage_ainuic + } + + can_pick = { + # Mutually exclusive with other Horse Archer MaA + NOR = { + culture_tradition:tradition_horse_lords = { is_in_list = traits } + culture_tradition:tradition_devoted_horsemanship = { is_in_list = traits } + culture_tradition:tradition_tgp_imperial_peace = { is_in_list = traits } + culture_tradition:tradition_tgp_bushido = { is_in_list = traits } + } + } + + parameters = { + unlock_emishi_horse_archers_units = yes + harder_to_convert_county_culture = yes + county_peasant_and_populist_factions_more_common = yes + } + + character_modifier = { + movement_speed_land_raiding = 0.2 + raid_speed = 0.1 + levy_reinforcement_rate_even_if_baron = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + # Only Courtly cultures should pick this + limit = { NOT = { culture_pillar:ethos_courtly = { is_in_list = traits } } } + multiply = 0 + } + if = { + # AI should avoid stacking traditions for courtly court positions + limit = { culture_tradition:tradition_music_theory = { is_in_list = traits } } + multiply = 0.25 + } + } +} + +tradition_tgp_warrior_monks = { + category = regional + + layers = { + 0 = martial + 1 = asian + 4 = warrior_monk.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + culture_head = { + faith = { has_doctrine = special_doctrine_immaterial_harmony } + has_religion = religion:buddhism_religion + } + } + + can_pick = { + # Mutually exclusive with other Warrior Monk + NOT = { + culture_tradition:tradition_warrior_monks = { is_in_list = traits } + } + } + + parameters = { + unlock_warrior_monk_units = yes + prowess_from_religious_traits = yes + culture_clergy_can_fight = yes + monastery_prowess_martial_bonus = yes + } + character_modifier = { + prowess_per_piety_level = 1 + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + # Only Courtly cultures should pick this + limit = { NOT = { culture_pillar:ethos_courtly = { is_in_list = traits } } } + multiply = 0 + } + if = { + # AI should avoid stacking traditions for courtly court positions + limit = { culture_tradition:tradition_music_theory = { is_in_list = traits } } + multiply = 0.25 + } + } +} + +tradition_tgp_ephemeral_grace = { + category = regional + + layers = { + 0 = diplo + 1 = asian + 4 = calligraphy.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + culture_head = { + OR = { + faith = { has_doctrine = special_doctrine_immaterial_harmony } + has_religion = religion:shintoism_religion + } + } + } + + can_pick = { + # Mutually exclusive with Poetry and Gardening + NOT = { culture_tradition:tradition_poetry = { is_in_list = traits } } + NOT = { culture_tradition:tradition_gardening = { is_in_list = traits } } + } + + parameters = { + stress_loss_bonus_from_harmonious_traits = yes + poet_trait_gives_bonuses = yes + poet_trait_more_common = yes + can_appoint_court_gardener = yes + can_recruit_gardeners = yes + ai_romance_scheme_increase = yes + poet_trait_romance_bonuses = yes + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + has_trait = lifestyle_poet + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_poet_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_poetry_travel_discount + } + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 50 + if = { + # Only Courtly cultures should pick this + limit = { NOT = { culture_pillar:ethos_courtly = { is_in_list = traits } } } + multiply = 0 + } + if = { + # AI should avoid stacking traditions for courtly court positions + limit = { culture_tradition:tradition_music_theory = { is_in_list = traits } } + multiply = 0.25 + } + } +} + +tradition_tgp_inward_perfection = { + category = regional + + layers = { + 0 = diplo + 1 = asian + 4 = instrument.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + has_east_asian_heritage_pillar_trigger = yes + } + + can_pick = { + # Mutually exclusive with other Isolationist + NOR = { + culture_tradition:tradition_isolationist = { is_in_list = traits } + culture_tradition:tradition_cultural_primacy = { is_in_list = traits } + } + } + + parameters = { + reduced_marriage_acceptance_outside_culture = yes + reduced_marriage_acceptance_distant_realms = yes + ai_doesnt_marry_outside_culture = yes + harder_to_hybridize = yes + may_challenge_to_board_games = yes + } + + culture_modifier = { + culture_innovation_progress_chance_from_spread_add = -20 + } + + character_modifier = { + character_innovation_progress_chance_from_fascination_add = 10 + monthly_lifestyle_xp_gain_mult = 0.05 + diplomatic_range_mult = -0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_communal_or_stoic_desc + } + } + } + } + + ai_will_do = { + value = 50 + } +} + +tradition_cultural_primacy = { + category = regional + + layers = { + 0 = diplo + 1 = asian + 4 = instrument.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + scope:character = { + OR = { + culture = { has_cultural_pillar = heritage_chinese } + has_title = title:h_china #Always available to new emperors + } + } + } + + can_pick = { + # Mutually exclusive with other Isolationist + NOR = { + culture_tradition:tradition_isolationist = { is_in_list = traits } + culture_tradition:tradition_tgp_inward_perfection = { is_in_list = traits } + } + } + + parameters = { + innovation_from_learning_traits = yes + courtiers_less_likely_to_leave_same_culture_court = yes + less_likely_to_culture_convert = yes + + reduced_marriage_acceptance_outside_culture = yes + reduced_marriage_acceptance_distant_realms = yes + ai_doesnt_marry_outside_culture = yes + harder_to_hybridize = yes + may_challenge_to_board_games = yes + } + + character_modifier = { + monthly_piety_gain_per_legitimacy_level_add = 0.15 + court_grandeur_baseline_add = 5 + + monthly_lifestyle_xp_gain_mult = 0.05 + opinion_of_different_culture = -15 + different_culture_opinion = -15 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_spiritual_communal_or_stoic_desc + } + } + } + } + + ai_will_do = { + value = 50 + } +} + +tradition_maritime_way_of_life = { + category = regional + + layers = { + 0 = diplo + 1 = asian + 4 = boat.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + OR = { + has_cultural_pillar = heritage_austronesian + scope:character = { + any_sub_realm_county = { + culture = { has_cultural_pillar = heritage_austronesian } + } + } + } + } + + can_pick = { + has_cultural_pillar = heritage_austronesian + custom_description = { + text = percentage_of_culture_on_coast_desc + any_culture_county = { + percent >= 0.5 + any_county_province = { + is_coastal = yes + } + } + } + } + + parameters = { + can_travel_along_rivers = yes + coastal_tribe_bonuses = yes #Maa bonuses for coastal tribal + unlock_maa_pesilat = yes + } + character_modifier = { + embarkation_cost_mult = -0.85 + naval_movement_speed_mult = 0.25 + coastal_sea_travel_danger = medium_sea_danger_reduction + sea_travel_danger = medium_sea_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_bureaucratic_or_spiritual_desc + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.7 + any_county_province = { + is_coastal = yes + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = high_coastal_percentage_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_seafaring_travel_discount + } + + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { # Make stacking more less common + limit = { + OR = { + culture_tradition:tradition_maritime_mercantilism = { is_in_list = traits } + culture_tradition:tradition_fishermen = { is_in_list = traits } + } + } + multiply = 2 + } + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.3 + any_county_province = { + is_coastal = yes + } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + any_county_province = { + is_coastal = yes + } + } + } + multiply = 8 + } + } +} + +tradition_tgp_hydraulic_builders = { + category = regional + + layers = { + 0 = steward + 1 = asian + 4 = wat.dds + } + + can_pick = { + scope:character = { government_has_flag = government_is_mandala } + } + + is_shown = { + has_tgp_dlc_trigger = yes + scope:character = { government_has_flag = government_is_mandala } + OR = { + has_cultural_pillar = heritage_mon_khmer + scope:character = { + any_sub_realm_county = { + culture = { has_cultural_pillar = heritage_mon_khmer } + } + } + } + } + + parameters = { + sacred_pool_additional_bonuses = yes + may_build_sacred_pools_ahead_of_time = yes + unlocks_waterworks_buildings = yes + waterworks_additional_bonuses = yes + } + county_modifier = { + wetlands_development_growth_factor = 0.25 + wetlands_construction_gold_cost = -0.1 + terraced_hills_development_growth_factor = 0.1 + terraced_hills_construction_gold_cost = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_or_spiritual_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_tgp_hydraulic_builders } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + count >= 2 + culture = scope:character.culture + any_county_province = { + has_holding_type = temple_citadel_holding + } + } + } + } + } + multiply = 0 + } + } +} + +tradition_tgp_fortified_strongholds = { + category = regional + + layers = { + 0 = steward + 1 = asian + 4 = wall.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + scope:character = { government_has_flag = government_is_mandala } + OR = { + has_cultural_pillar = heritage_tai + has_cultural_pillar = heritage_burman + scope:character = { + any_sub_realm_county = { + culture = { + OR = { + has_cultural_pillar = heritage_tai + has_cultural_pillar = heritage_burman + } + } + } + } + } + } + + parameters = { + founding_temple_citadels_gives_more_piety = yes + warmonger_city_founders = yes + temple_citadel_fort_level_bonus = yes + temple_citadel_control_bonus = yes + } + county_modifier = { + temple_citadel_holding_holding_build_gold_cost = -0.2 + temple_citadel_holding_holding_build_speed = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_courtly_spiritual_or_stoic_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_tgp_fortified_strongholds } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + } +} + +tradition_tgp_religious_hospitality = { + category = regional + + layers = { + 0 = learning + 1 = asian + 4 = wat.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + scope:character = { government_has_flag = government_is_mandala } + } + + parameters = { + invite_courtiers_reasons = yes + less_cost_to_invite_religious_exiles = yes + development_gain_from_religious_exiles_is_doubled = yes + ai_uses_religious_exiles = yes + } + + character_modifier = { + different_faith_opinion = 20 + faith_conversion_piety_cost_mult = -0.25 + different_faith_county_opinion_mult = -0.5 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_egalitarian_or_spiritual_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_tgp_religious_hospitality } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { # Avoid stacking similar traditions + culture_tradition:tradition_culture_blending = { is_in_list = traits } + culture_tradition:tradition_xenophilic = { is_in_list = traits } + culture_tradition:tradition_religion_blending = { is_in_list = traits } + } + multiply = 0.25 + } + } +} + +tradition_tgp_esoteric_power = { + category = regional + + layers = { + 0 = steward + 1 = asian + 4 = kris.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + scope:character = { government_has_flag = government_is_mandala } + OR = { + has_cultural_pillar = heritage_austronesian + scope:character = { + any_sub_realm_county = { + culture = { + has_cultural_pillar = heritage_austronesian + } + } + } + } + } + + parameters = { + increases_effect_of_mandala_realm_contracts = yes + may_commission_kris = yes + piety_level_affect_artifact_quality = yes + unlock_maa_pesilat = yes + } + character_modifier = { + jungle_travel_danger = jungle_medium_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_tgp_esoteric_power } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 # Good tradition for Mandalas + } +} + +tradition_tgp_barangay_confederations = { + category = regional + + layers = { + 0 = diplo + 1 = asian + 4 = wall.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + scope:character = { government_has_flag = government_is_tribal } + OR = { + has_cultural_pillar = heritage_austronesian + scope:character = { + any_sub_realm_county = { + culture = { + has_cultural_pillar = heritage_austronesian + } + } + } + } + } + + parameters = { + forming_confederations_is_easier = yes + invite_to_confederation_extra_reasons = yes + confederation_tribal_authority = yes + mandala_tributaries = yes + religious_relations_is_empowered = yes + } + character_modifier = { + fellow_confederation_member_opinion = 10 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_egalitarian = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_communal_egalitarian_or_stoic_desc + } + } + + if = { + limit = { + any_culture_county = { + percent <= 0.5 + is_coastal_county = yes + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = not_a_coastal_culture + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_tgp_barangay_confederations } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + ai_will_do = { + value = 300 + if = { + limit = { + scope:character.primary_title ?= { + tier = tier_duchy + } + } + multiply = 0.5 + } + if = { + limit = { + scope:character.primary_title ?= { + tier >= tier_kingdom + } + } + multiply = 0 + } + } +} + +tradition_nudists = { + category = societal + + layers = { + 0 = diplo + 1 = asian + 4 = jungle.dds + } + + parameters = { + naked_culture_active = yes + lustful_trait_less_common = yes + } + county_modifier = { + jungle_development_growth_factor = 0.2 + jungle_supply_limit_mult = 1 + jungle_provisions_use_mult = -0.75 + jungle_barter_goods_mult = 0.15 + } + + character_modifier = { + stress_gain_mult = -0.1 + jungle_advantage = 5 + jungle_travel_danger = jungle_medium_danger_reduction + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + has_cultural_pillar = ethos_courtly + has_cultural_pillar = ethos_communal + has_cultural_pillar = ethos_spiritual + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 3 + culture = prev + primary_title.tier >= tier_county + OR = { + has_completed_inspiration = yes + any_courtier_or_guest = { + OR = { + has_completed_inspiration = yes + exists = inspiration + } + } + } + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = has_courtier_or_guest_with_inspiration_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 0 + } +} + +tradition_tgp_mountain_island = { + category = regional + + layers = { + 0 = steward + 1 = asian + 4 = mountain.dds + } + + is_shown = { + NOR = { #This is replaced by Himalayan Settlers, Mountaineer Ruralism and Mountain Herding. + has_cultural_tradition = tradition_himalayan_settlers + has_cultural_tradition = tradition_mountaineer_ruralism + has_cultural_tradition = tradition_mountain_homes + has_cultural_pillar = heritage_arabic + has_cultural_pillar = heritage_berber + has_cultural_pillar = heritage_tibetan + has_cultural_pillar = heritage_qiangic + has_cultural_pillar = heritage_west_slavic + any_culture_county = { + title_province = { + geographical_region = world_himalaya + } + } + } + any_culture_county = { + title_province = { + geographical_region = world_asia_japan + } + } + } + can_pick = { + custom_description = { + text = culture_in_mountains_desc + any_culture_county = { + any_county_province = { + OR = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + # Mutually exclusive with other Mountaineers + NOT = { + culture_tradition:tradition_mountaineers = { is_in_list = traits } + } + } + + parameters = { + prestige_gain_on_building_complete_in_mountains_forest = yes + } + character_modifier = { + coastal_sea_travel_danger = medium_sea_danger_reduction + mountains_travel_danger = mountains_medium_danger_reduction + hills_travel_danger = hills_medium_danger_reduction + forest_travel_danger = forest_medium_danger_reduction + } + county_modifier = { + hills_development_growth_factor = 0.05 + mountains_development_growth_factor = 0.2 + } + province_modifier = { + mountains_construction_gold_cost = -0.1 + mountains_holding_construction_gold_cost = -0.1 + forest_construction_gold_cost = -0.1 + forest_holding_construction_gold_cost = -0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = culture_not_bellicose + } + } + if = { + limit = { + NOT = { + any_culture_county = { + percent >= 0.3 + any_county_province = { + OR = { + terrain = mountains + terrain = desert_mountains + } + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = mountain_percentage_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_tgp_mountain_island } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + percent >= 0.2 + culture = scope:character.culture + any_county_province = { terrain = mountains } + } + } + } + } + multiply = 0 + } + else_if = { + limit = { + any_culture_county = { + percent >= 0.6 + any_county_province = { terrain = mountains } + } + } + multiply = 8 + } + } +} + +tradition_stratified_society = { + category = regional + + layers = { + 0 = diplo + 1 = asian + 4 = officials.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + culture_head = { + government_allows = merit + } + has_cultural_pillar = heritage_korean + } + + parameters = { + family_shares_merit = yes + family_skips_exams = yes + marrying_into_the_ruling_family_gives_influence = yes + } + + county_modifier = { + } + + character_modifier = { + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_spiritual_or_stoic_desc + } + } + } + } + + ai_will_do = { + value = 50 + } +} + +tradition_fortress_mastery = { + category = regional + + layers = { + 0 = martial + 1 = asian + 4 = marching_soldiers.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + OR = { + has_cultural_pillar = heritage_korean + has_cultural_pillar = heritage_buyeo + } + } + + parameters = { + unlock_maa_gakgung_archers = yes + castle_fortifications_increase = yes + governor_trait_gives_counter_resistance = yes + } + + county_modifier = { + } + + character_modifier = { + archers_recruitment_cost_mult = -0.1 + same_heritage_county_advantage_add = 4 + prowess_per_merit_level = 1 + archers_max_size_add = 1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + culture_pillar:ethos_stoic = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_spiritual_or_stoic_desc + } + } + } + } + + ai_will_do = { + value = 50 + } +} + +tradition_tgp_art_of_war = { + category = regional + + layers = { + 0 = martial + 1 = asian + 4 = marching_soldiers.dds + } + + is_shown = { + OR = { +# this = culture:han +# any_parent_culture_or_above = { +# this = culture:han +# } + has_cultural_pillar = heritage_chinese + } + # DLC check. + has_tgp_dlc_trigger = yes + } + can_pick = { + } + + parameters = { + unlock_shenbigong_innovation = yes + unlock_zhanmadao = yes + unlock_burenjia = yes + unlock_maa_black_armor_cavalry = yes + guardians_can_transfer_commander_traits = yes + prowess_from_martial_education = yes + military_governor_appointment_score = yes + } + + character_modifier = { + martial_per_merit_level = 0.35 #Formal Military Education + monthly_merit_per_title_maa_value = 0.002 + heavy_infantry_max_size_add = 2 + counter_efficiency = 0.1 + men_at_arms_maintenance = 0.2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bellicose_or_bureaucratic_desc + } + } + if = { #Teaching a military Curriculum + limit = { + NOT = { + any_culture_county = { + count >= 5 + any_county_province = { + has_building_or_higher = examination_hall_01 + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = duchies_with_examination_halls_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_tgp_art_of_war } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { # Admin should be more into this + scope:character = { + government_allows = administrative + } + } + multiply = 2 + } + else_if = { + limit = { + scope:character ?= { + ai_has_warlike_personality = yes + } + } + multiply = 4 + } + } + +} + +tradition_tgp_court_machinations = { + category = regional + + layers = { + 0 = intrigue + 1 = asian + 4 = officials.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + has_cultural_pillar = heritage_chinese + scope:character = { + has_title = title:h_china + } + } + can_pick = { + custom_tooltip = { + text = only_one_marriage_tradition_allowed + trigger_if = { + limit = { + OR = { + NOT = { exists = scope:replacing } + NOR = { + scope:replacing = culture_tradition:tradition_monogamous + scope:replacing = culture_tradition:tradition_polygamous + scope:replacing = culture_tradition:tradition_concubines + scope:replacing = culture_tradition:tradition_court_eunuchs + } + } + } + NOR = { + culture_tradition:tradition_monogamous = { is_in_list = traits } + culture_tradition:tradition_polygamous = { is_in_list = traits } + culture_tradition:tradition_concubines = { is_in_list = traits } + culture_tradition:tradition_court_eunuchs = { is_in_list = traits } + } + } + } + + } + + can_pick_for_hybridization = { + custom_tooltip = { + text = only_one_marriage_tradition_allowed + NOT = { # Only blocks monogamous to avoid duplicate warnings, but is blocked by polygamous + culture_tradition:tradition_monogamous = { is_in_list = traits } + } + } + } + + parameters = { + number_of_consorts_hegemony = 20 + number_of_consorts = 3 + number_of_spouses = 1 + can_appoint_chief_eunuch = yes + court_machinations_eunuch_trait_bonuses = yes + courtiers_more_likely_to_join_hostile_schemes_in_court = yes + eunuch_powerful_scheme_agents = yes + can_castrate_prisoners = yes + cultrad_unlocks_t4_bounties_for_whispers = yes + } + + character_modifier = { + owned_political_scheme_success_chance_add = 10 + } + + cost = { + prestige = { + add = { + value = tradition_double_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bureaucratic_courtly_or_spiritual_desc + } + } + if = { + limit = { + has_dlc_feature = royal_court + OR = { + scope:character = { has_royal_court = no } + NOT = { + scope:character = { + court_grandeur_current_level >= very_high_court_grandeur_level + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_head_court_grandeur_desc + } + } + if = { + limit = { + NOT = { + scope:character.faith = { + OR = { + has_doctrine = doctrine_polygamy + has_doctrine = doctrine_concubines + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = cheaper_tradition_from_faith + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 200 + if = { + limit = { # Admin should be more into this + scope:character = { + government_allows = administrative + } + } + multiply = 2 + } + } +} + + +#Scholar Officials +tradition_scholar_officials = { + category = regional + + layers = { + 0 = intrigue + 1 = asian + 4 = confucius.dds + } + + is_shown = { #Available to Chinese cultures and to cultures influenced by China + has_tgp_dlc_trigger = yes + scope:character = { + OR = { + culture = { has_cultural_pillar = heritage_chinese } + has_trait = confucian_education + government_has_flag = government_has_merit + has_title = title:h_china #Always available to new emperors + } + } + } + + can_pick = { + custom_description = { + text = culture_not_bellicose + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + NOT = { has_cultural_tradition = tradition_warrior_culture } + } + + parameters = { + can_always_convert_to_confucianism = yes + can_author_books = yes + + + wants_to_learn_chinese = yes + learn_language_success_chance_for_others = yes + + scholar_official_trait_bonuses = yes #Values loyal and confucian education + loyal_trait_more_common = yes + doesnt_care_about_culture_faith_in_factions = yes + } + + character_modifier = { + monthly_learning_lifestyle_xp_gain_mult = 0.2 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bureaucratic_courtly_or_spiritual_desc + } + } + if = { + limit = { + scope:character = { + has_trait = scholar + } + } + multiply = { + value = 0.75 + #desc = + } + } + if = { + limit = { + scope:character = { + has_trait = confucian_education + } + } + multiply = { + value = 0.5 + #desc = + } + } + } + } +} + +tradition_sinophilic = { + category = regional + + layers = { + 0 = intrigue + 1 = asian + 4 = calligraphy.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + NOT = { has_cultural_pillar = heritage_chinese } #Can't be Sinophilic when you're Chinese +# culture:han.culture_head ?= { +# in_diplomatic_range = scope:character +# } + } + + parameters = { + more_successful_kowtows = yes + may_adopt_silk_road_innovations = yes + } + + character_modifier = { + artifact_decay_reduction_mult = -0.15 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_bureaucratic = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_bureaucratic_courtly_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = scholar + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_scholar_desc + } + } + } + } +} + +tradition_tgp_japanese_houses = { + category = regional + + layers = { + 0 = diplo + 1 = asian + 4 = fan.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + NOT = { + has_game_rule = no_adoption + } + culture_head = { # Only eastern Buddhists and regional faiths + faith = { has_doctrine = special_doctrine_immaterial_harmony } + } + } + + can_pick = { + # Mutually exclusive with other Adopters + NOT = { + culture_tradition:tradition_noble_adoption = { is_in_list = traits } + culture_tradition:tradition_ep3_cultivated_sophistication = { is_in_list = traits } + } + } + + parameters = { + adultery_always_accepted = yes + allows_noble_family_adoption = yes + free_adoption = yes + wider_adoption = yes + better_ward_education = yes + number_of_spouses = 4 + } + + character_modifier = { + house_relation_change_mult = 0.25 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_tgp_japanese_houses } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + } +} + +tradition_cultivation = { + category = regional + + layers = { + 0 = learning + 1 = asian + 4 = calligraphy.dds + } + + is_shown = { #Available to Chinese cultures and to cultures influenced by China + has_tgp_dlc_trigger = yes + scope:character = { + OR = { + culture = { has_cultural_pillar = heritage_chinese } + has_trait = confucian_education + government_has_flag = government_has_merit + has_title = title:h_china #Always available to new emperors + } + } + } + + can_pick = { + custom_description = { + text = culture_not_bellicose + NOT = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + } + NOT = { has_cultural_tradition = tradition_warrior_culture } + } + + parameters = { + can_always_convert_to_taoism = yes + mystic_trait_from_education = yes + mystic_trait_more_common = yes + less_likely_to_gain_elder_health_traits = yes + } + character_modifier = { + life_expectancy = 5 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + NOR = { + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = not_courtly_communal_or_spiritual_desc + } + } + if = { + limit = { + trigger_if = { + limit = { + scope:character = { + is_ai = no + } + } + NOT = { + any_ruler = { + count >= 5 + culture = prev + primary_title.tier >= tier_county + has_trait = scholar + } + } + } + trigger_else = { + always = no + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = rulers_with_scholar_desc + } + } + + if = { + limit = { + scope:character = { + has_variable = tradition_philosopher_culture_travel_discount + } + } + + add = { + value = tradition_travel_discount + desc = tradition_travel_discount_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_philosopher_culture } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 100 + if = { + limit = { + NOR = { + culture_pillar:ethos_communal = { is_in_list = traits } + culture_pillar:ethos_courtly = { is_in_list = traits } + culture_pillar:ethos_spiritual = { is_in_list = traits } + } + } + multiply = 0 + } + } +} + + +tradition_intensive_farming = { + category = regional + + layers = { + 0 = steward + 1 = asian + 4 = svamp.dds + } + + is_shown = { + has_tgp_dlc_trigger = yes + OR = { + has_cultural_pillar = heritage_chinese + any_parent_culture_or_above = { + has_cultural_pillar = heritage_chinese + } + } + NOR = { + culture_tradition:tradition_agrarian = { is_in_list = traits } + culture_tradition:tradition_tgp_rice_cultivators = { is_in_list = traits } + } + } + + can_pick = { + custom_tooltip = { + text = culture_in_farmlands_or_floodplains_terrain_desc + any_culture_county = { + county_has_province_with_terrain = { + terrain = farmlands + terrain = floodplains + } + } + } + custom_tooltip = { + text = cultrad_not_nomadic_government_type + scope:character = { + NOT = { + government_has_flag = government_is_nomadic + } + } + } + } + + parameters = { + content_trait_more_common = yes + martial_education_worse_outcomes = yes + hard_working_traits_more_valued = yes + rice_cultivators_next_level_paddy_fields = yes + } + character_modifier = { + men_at_arms_recruitment_cost = 0.25 + levy_maintenance = 0.025 + } + county_modifier = { + farmlands_development_growth_factor = 0.3 + farmlands_tax_mult = 0.05 + farmlands_levy_size = 0.1 + terraced_hills_development_growth_factor = 0.3 + terraced_hills_tax_mult = 0.05 + terraced_hills_levy_size = 0.1 + } + + cost = { + prestige = { + add = { + value = tradition_base_cost + desc = BASE + format = "BASE_VALUE_FORMAT" + } + if = { + limit = { + culture_pillar:ethos_bellicose = { is_in_list = traits } + } + add = { + value = tradition_incompatible_ethos_penalty + desc = culture_not_bellicose + } + } + if = { + limit = { + NOT = { + any_culture_county = { + count >= 5 + county_has_province_with_terrain = { + terrain = farmlands + terrain = floodplains + } + } + } + } + add = { + value = tradition_unfulfilled_criteria_penalty + desc = culture_in_farmlands_or_floodplains_terrain_count_desc + } + } + + if = { + limit = { + culture_tradition_reduction_trigger = { TRADITION = tradition_agrarian } + } + multiply = { + value = 0.5 + desc = inspired_by_culture_desc + } + } + + multiply = tradition_replacement_cost_if_relevant + } + } + + ai_will_do = { + value = 400 + if = { + limit = { + NOT = { + scope:character = { + any_sub_realm_county = { + count >= 2 + culture = scope:character.culture + county_has_province_with_terrain = { + terrain = farmlands + terrain = floodplains + } + } + } + } + } + multiply = 0 + } + if = { + limit = { + scope:character = { + government_has_flag = government_is_tribal + } + } + multiply = 0 + } + } +} diff --git a/common/customizable_localization/00_language_custom_loc.txt b/common/customizable_localization/00_language_custom_loc.txt index 0e99c800..5ff3004d 100644 --- a/common/customizable_localization/00_language_custom_loc.txt +++ b/common/customizable_localization/00_language_custom_loc.txt @@ -182,21 +182,21 @@ GetFaithSacredLanguageCharacter = { localization_key = language_pali_name #Pali } - text = { - trigger = { - OR = { - faith = faith:lamaism - religion = religion:bon_religion - AND = { - faith = faith:vajrayana - culture = { - has_cultural_pillar = heritage_tibetan - } - } - } - } - localization_key = language_classical_tibetan_name #Classical Tibetan - } +# text = { +# trigger = { +# OR = { +# faith = faith:lamaism +# religion = religion:bon_religion +# AND = { +# faith = faith:vajrayana +# culture = { +# has_cultural_pillar = heritage_tibetan +# } +# } +# } +# } +# localization_key = language_classical_tibetan_name #Classical Tibetan +# } text = { trigger = { diff --git a/common/customizable_localization/00_ruler_transition_loc.txt b/common/customizable_localization/00_ruler_transition_loc.txt index 53056f20..83d58a1b 100644 --- a/common/customizable_localization/00_ruler_transition_loc.txt +++ b/common/customizable_localization/00_ruler_transition_loc.txt @@ -1106,13 +1106,13 @@ HeirMessageInterface = { NOT = { government_has_flag = government_is_theocracy } } } - text = { - localization_key = SUCCESSION_EVENT_WINDOW_HEIR_TRAIT_VARANGIAN - trigger = { - is_adult = yes - has_trait = varangian - } - } +# text = { +# localization_key = SUCCESSION_EVENT_WINDOW_HEIR_TRAIT_VARANGIAN +# trigger = { +# is_adult = yes +# has_trait = varangian +# } +# } text = { localization_key = SUCCESSION_EVENT_WINDOW_HEIR_TRAIT_LUNATIC trigger = { diff --git a/common/decisions/10_nomad_culture_and_faith_decisions.txt b/common/decisions/10_nomad_culture_and_faith_decisions.txt index e075466f..f8cf1b97 100644 --- a/common/decisions/10_nomad_culture_and_faith_decisions.txt +++ b/common/decisions/10_nomad_culture_and_faith_decisions.txt @@ -1,100 +1,100 @@ -### Embrace Tengriism ### -embrace_tengriism_decision = { - picture = { - reference = "gfx/interface/illustrations/event_scenes/mpo_temple_steppe.dds" - } - decision_group_type = nomad_minor - desc = embrace_tengriism_decision_desc - selection_tooltip = embrace_tengriism_decision_tooltip - - is_shown = { - is_playable_character = yes - government_has_flag = government_is_nomadic - OR = { - culture = { has_cultural_pillar = heritage_mongolic } - culture = { has_cultural_pillar = heritage_turkic } - domicile.domicile_culture = { has_cultural_pillar = heritage_mongolic } - domicile.domicile_culture = { has_cultural_pillar = heritage_turkic } - } - NOT = { - faith = faith:tengri_pagan - } - #Cheaper to just switch to domicile's tengriism - trigger_if = { - limit = { - exists = domicile.domicile_faith - } - NOT = { domicile.domicile_faith = faith:tengri_pagan } - } - } - - is_valid_showing_failures_only = { - is_physically_able_adult = yes - is_at_war = no - custom_tooltip = { - text = not_of_a_steppe_faith_tt - NOT = { - religion = religion:tengrism_religion - } - } - } - - cost = { - piety = { - value = { - add = major_piety_value - if = { # Cost increases if you're reverting to pagan - limit = { - faith = { - NOT = { - has_doctrine_parameter = unreformed - } - } - } - multiply = 4 - } - } - } - } - - effect = { - root.domicile.domicile_culture = { save_scope_as = domicile_culture } - set_character_faith = faith:tengri_pagan - domicile = { - set_domicile_faith = faith:tengri_pagan - } - every_held_title = { - limit = { - tier = tier_county - is_landless_type_title = no - culture = scope:domicile_culture - } - set_county_faith = faith:tengri_pagan - } - # Spouses convert - every_spouse = { - limit = { - is_courtier_of = root - NOT = { faith = root.faith } - } - add_to_list = spouses_and_family_to_convert - } - # Family at court also convert - every_close_or_extended_family_member = { - limit = { - is_courtier_of = root - NOT = { faith = root.faith } - } - add_to_list = spouses_and_family_to_convert - } - every_in_list = { - list = spouses_and_family_to_convert - set_character_faith = faith:tengri_pagan - } - } - - ai_check_interval = 0 -} +#### Embrace Tengriism ### +#embrace_tengriism_decision = { +# picture = { +# reference = "gfx/interface/illustrations/event_scenes/mpo_temple_steppe.dds" +# } +# decision_group_type = nomad_minor +# desc = embrace_tengriism_decision_desc +# selection_tooltip = embrace_tengriism_decision_tooltip +# +# is_shown = { +# is_playable_character = yes +# government_has_flag = government_is_nomadic +# OR = { +# culture = { has_cultural_pillar = heritage_mongolic } +# culture = { has_cultural_pillar = heritage_turkic } +# domicile.domicile_culture = { has_cultural_pillar = heritage_mongolic } +# domicile.domicile_culture = { has_cultural_pillar = heritage_turkic } +# } +# NOT = { +# faith = faith:tengri_pagan +# } +# #Cheaper to just switch to domicile's tengriism +# trigger_if = { +# limit = { +# exists = domicile.domicile_faith +# } +# NOT = { domicile.domicile_faith = faith:tengri_pagan } +# } +# } +# +# is_valid_showing_failures_only = { +# is_physically_able_adult = yes +# is_at_war = no +# custom_tooltip = { +# text = not_of_a_steppe_faith_tt +# NOT = { +# religion = religion:tengrism_religion +# } +# } +# } +# +# cost = { +# piety = { +# value = { +# add = major_piety_value +# if = { # Cost increases if you're reverting to pagan +# limit = { +# faith = { +# NOT = { +# has_doctrine_parameter = unreformed +# } +# } +# } +# multiply = 4 +# } +# } +# } +# } +# +# effect = { +# root.domicile.domicile_culture = { save_scope_as = domicile_culture } +# set_character_faith = faith:tengri_pagan +# domicile = { +# set_domicile_faith = faith:tengri_pagan +# } +# every_held_title = { +# limit = { +# tier = tier_county +# is_landless_type_title = no +# culture = scope:domicile_culture +# } +# set_county_faith = faith:tengri_pagan +# } +# # Spouses convert +# every_spouse = { +# limit = { +# is_courtier_of = root +# NOT = { faith = root.faith } +# } +# add_to_list = spouses_and_family_to_convert +# } +# # Family at court also convert +# every_close_or_extended_family_member = { +# limit = { +# is_courtier_of = root +# NOT = { faith = root.faith } +# } +# add_to_list = spouses_and_family_to_convert +# } +# every_in_list = { +# list = spouses_and_family_to_convert +# set_character_faith = faith:tengri_pagan +# } +# } +# +# ai_check_interval = 0 +#} ### Spread [ROOT.Char.GetFaith.GetNameNoTooltip] to your People ### proselytize_to_your_people_decision = { diff --git a/common/decisions/80_major_decisions.txt b/common/decisions/80_major_decisions.txt index b4840257..9b70473e 100644 --- a/common/decisions/80_major_decisions.txt +++ b/common/decisions/80_major_decisions.txt @@ -3214,80 +3214,80 @@ set_de_jure_capital_decision = { base = 100 } } - -# Restore Carthage - -restore_carthage_decision = { - picture = { - reference = "gfx/interface/illustrations/decisions/decision_dynasty_house.dds" - } - decision_group_type = major - - ai_check_interval_by_tier = { - barony = 0 - county = 0 - duchy = 0 - kingdom = 120 - empire = 0 - hegemony = 0 - } - - desc = restore_carthage_decision_desc - selection_tooltip = restore_carthage_decision_tooltip - - is_shown = { - is_ruler = yes - is_playable_character = yes - - OR = { - culture = { has_cultural_pillar = heritage_syriac } - culture = culture:levantine - } - - # Not repeatable. - NOT = { - is_target_in_global_variable_list = { - name = unavailable_unique_decisions - target = flag:flag_restored_carthage - } - } - } - - is_valid = { - is_independent_ruler = yes - highest_held_title_tier < tier_empire - - prestige_level >= 4 - - completely_controls_region = custom_carthage - completely_controls_region = custom_tripolitania - completely_controls_region = custom_mauretania - completely_controls_region = custom_carthago_nova - - } - - is_valid_showing_failures_only = { - top_liege = this - is_available_adult = yes - } - - cost = { - gold = { - value = 1200 - } - } - - effect = { - save_scope_as = founder - show_as_tooltip = { restore_carthage_scripted_effect = yes } - - hidden_effect = { - add_to_global_variable_list = { - name = unavailable_unique_decisions - target = flag:flag_restored_carthage - } - } - - trigger_event = major_decisions.3300 - } -} +# +## Restore Carthage +# +#restore_carthage_decision = { +# picture = { +# reference = "gfx/interface/illustrations/decisions/decision_dynasty_house.dds" +# } +# decision_group_type = major +# +# ai_check_interval_by_tier = { +# barony = 0 +# county = 0 +# duchy = 0 +# kingdom = 120 +# empire = 0 +# hegemony = 0 +# } +# +# desc = restore_carthage_decision_desc +# selection_tooltip = restore_carthage_decision_tooltip +# +# is_shown = { +# is_ruler = yes +# is_playable_character = yes +# +# OR = { +# culture = { has_cultural_pillar = heritage_syriac } +# culture = culture:levantine +# } +# +# # Not repeatable. +# NOT = { +# is_target_in_global_variable_list = { +# name = unavailable_unique_decisions +# target = flag:flag_restored_carthage +# } +# } +# } +# +# is_valid = { +# is_independent_ruler = yes +# highest_held_title_tier < tier_empire +# +# prestige_level >= 4 +# +# completely_controls_region = custom_carthage +# completely_controls_region = custom_tripolitania +# completely_controls_region = custom_mauretania +# completely_controls_region = custom_carthago_nova +# +# } +# +# is_valid_showing_failures_only = { +# top_liege = this +# is_available_adult = yes +# } +# +# cost = { +# gold = { +# value = 1200 +# } +# } +# +# effect = { +# save_scope_as = founder +# show_as_tooltip = { restore_carthage_scripted_effect = yes } +# +# hidden_effect = { +# add_to_global_variable_list = { +# name = unavailable_unique_decisions +# target = flag:flag_restored_carthage +# } +# } +# +# trigger_event = major_decisions.3300 +# } +#} diff --git a/common/decisions/NEOW_artifact_decisions.txt b/common/decisions/NEOW_artifact_decisions.txt index 6a173a7f..ff001c8e 100644 --- a/common/decisions/NEOW_artifact_decisions.txt +++ b/common/decisions/NEOW_artifact_decisions.txt @@ -70,7 +70,7 @@ reforge_crown_wenceslas_decision = { } } - ai_check_interval = { 500 } + ai_check_interval = 500 ai_will_do = { value = 15 } diff --git a/common/modifier_definition_formats/NEOW_definitions.txt b/common/modifier_definition_formats/NEOW_definitions.txt new file mode 100644 index 00000000..b8f3553a --- /dev/null +++ b/common/modifier_definition_formats/NEOW_definitions.txt @@ -0,0 +1,99 @@ +tells_attrition_mult = { + decimals = 0 + color = bad + percent = yes +} + +tells_cancel_negative_supply = { + prefix = MOD_SUPPLY_PREFIX + decimals = 0 +} + +tells_advantage = { + prefix = MOD_ADVANTAGE_PREFIX + decimals = 0 +} + +tells_min_combat_roll = { + decimals = 0 +} + +tells_max_combat_roll = { + decimals = 0 +} + +tells_development_growth = { + prefix = MOD_DEVELOPMENT_PREFIX + decimals = 1 +} + +tells_development_growth_factor = { + prefix = MOD_DEVELOPMENT_PREFIX + decimals = 1 + percent = yes +} + +tells_construction_gold_cost = { + decimals = 0 + color = bad + prefix = MOD_GOLD_PREFIX + percent = yes +} + +tells_holding_construction_gold_cost = { + decimals = 0 + color = bad + prefix = MOD_GOLD_PREFIX + percent = yes +} + +tells_construction_piety_cost = { + decimals = 0 + color = bad + prefix = MOD_PIETY_PREFIX + percent = yes +} + +tells_holding_construction_piety_cost = { + decimals = 0 + color = bad + prefix = MOD_PIETY_PREFIX + percent = yes +} + +tells_construction_prestige_cost = { + decimals = 0 + color = bad + prefix = MOD_PRESTIGE_PREFIX + percent = yes +} + +tells_holding_construction_prestige_cost = { + decimals = 0 + color = bad + prefix = MOD_PRESTIGE_PREFIX + percent = yes +} + +tells_supply_limit = { + prefix = MOD_SUPPLY_PREFIX + decimals = 0 +} + +tells_supply_limit_mult = { + prefix = MOD_SUPPLY_PREFIX + decimals = 0 + percent = yes +} + +tells_tax_mult = { + decimals = 0 + prefix = MOD_GOLD_PREFIX + percent = yes +} + +tells_levy_size = { + decimals = 0 + prefix = MOD_SOLDIER_PREFIX + percent = yes +} \ No newline at end of file diff --git a/common/modifier_definition_formats/NEOW_religion_definitions b/common/modifier_definition_formats/NEOW_religion_definitions.txt similarity index 100% rename from common/modifier_definition_formats/NEOW_religion_definitions rename to common/modifier_definition_formats/NEOW_religion_definitions.txt diff --git a/common/modifier_definition_formats/NEOW_unit_definitions.txt b/common/modifier_definition_formats/NEOW_unit_definitions.txt new file mode 100644 index 00000000..43cde09d --- /dev/null +++ b/common/modifier_definition_formats/NEOW_unit_definitions.txt @@ -0,0 +1,945 @@ + +##Gun Cavalry + +gun_cavalry_max_size_add = { + decimals = 0 +} + +gun_cavalry_max_size_mult = { + decimals = 0 + percent = yes +} + +gun_cavalry_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +gun_cavalry_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +gun_cavalry_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +gun_cavalry_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +gun_cavalry_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +gun_cavalry_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +gun_cavalry_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +gun_cavalry_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +gun_cavalry_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +gun_cavalry_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +gun_cavalry_maintenance_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +gun_cavalry_recruitment_cost_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +stationed_gun_cavalry_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +stationed_gun_cavalry_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +stationed_gun_cavalry_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +stationed_gun_cavalry_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +stationed_gun_cavalry_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +stationed_gun_cavalry_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +stationed_gun_cavalry_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +stationed_gun_cavalry_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +stationed_gun_cavalry_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +stationed_gun_cavalry_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +###Super Heavy + +chemical_weapons_max_size_add = { + decimals = 0 +} + +chemical_weapons_max_size_mult = { + decimals = 0 + percent = yes +} + +chemical_weapons_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +chemical_weapons_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +chemical_weapons_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +chemical_weapons_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +chemical_weapons_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +chemical_weapons_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_maintenance_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +chemical_weapons_recruitment_cost_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +stationed_chemical_weapons_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +stationed_chemical_weapons_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +stationed_chemical_weapons_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +stationed_chemical_weapons_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +stationed_chemical_weapons_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +stationed_chemical_weapons_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +stationed_chemical_weapons_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +stationed_chemical_weapons_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +stationed_chemical_weapons_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +stationed_chemical_weapons_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + + +##Chemical + +chemical_weapons_max_size_add = { + decimals = 0 +} + +chemical_weapons_max_size_mult = { + decimals = 0 + percent = yes +} + +chemical_weapons_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +chemical_weapons_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +chemical_weapons_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +chemical_weapons_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +chemical_weapons_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +chemical_weapons_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +chemical_weapons_maintenance_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +chemical_weapons_recruitment_cost_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +stationed_chemical_weapons_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +stationed_chemical_weapons_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +stationed_chemical_weapons_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +stationed_chemical_weapons_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +stationed_chemical_weapons_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +stationed_chemical_weapons_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +stationed_chemical_weapons_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +stationed_chemical_weapons_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +stationed_chemical_weapons_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +stationed_chemical_weapons_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +##Airship + +airship_max_size_add = { + decimals = 0 +} + +airship_max_size_mult = { + decimals = 0 + percent = yes +} + +airship_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +airship_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +airship_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +airship_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +airship_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +airship_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +airship_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +airship_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +airship_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +airship_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +airship_maintenance_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +airship_recruitment_cost_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +stationed_airship_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +stationed_airship_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +stationed_airship_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +stationed_airship_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +stationed_airship_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +stationed_airship_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +stationed_airship_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +stationed_airship_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +stationed_airship_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +stationed_airship_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +##Peasant Militia + + +peasant_militia_max_size_add = { + decimals = 0 +} + +peasant_militia_max_size_mult = { + decimals = 0 + percent = yes +} + +peasant_militia_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +peasant_militia_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +peasant_militia_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +peasant_militia_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +peasant_militia_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +peasant_militia_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +peasant_militia_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +peasant_militia_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +peasant_militia_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +peasant_militia_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +peasant_militia_maintenance_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +peasant_militia_recruitment_cost_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +stationed_peasant_militia_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +stationed_peasant_militia_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +stationed_peasant_militia_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +stationed_peasant_militia_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +stationed_peasant_militia_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +stationed_peasant_militia_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +stationed_peasant_militia_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +stationed_peasant_militia_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +stationed_peasant_militia_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +stationed_peasant_militia_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + + +horse_archers_max_size_add = { + decimals = 0 +} + +horse_archers_max_size_mult = { + decimals = 0 + percent = yes +} + +horse_archers_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +horse_archers_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +horse_archers_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +horse_archers_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +horse_archers_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +horse_archers_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +horse_archers_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +horse_archers_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +horse_archers_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +horse_archers_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +horse_archers_maintenance_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +horse_archers_recruitment_cost_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +stationed_horse_archers_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +stationed_horse_archers_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +stationed_horse_archers_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +stationed_horse_archers_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +stationed_horse_archers_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +stationed_horse_archers_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +stationed_horse_archers_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +stationed_horse_archers_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +stationed_horse_archers_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +stationed_horse_archers_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + + +nomadic_horde_max_size_add = { + decimals = 0 +} + +nomadic_horde_max_size_mult = { + decimals = 0 + percent = yes +} + +nomadic_horde_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +nomadic_horde_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} + +nomadic_horde_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +nomadic_horde_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +nomadic_horde_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +nomadic_horde_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +nomadic_horde_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +nomadic_horde_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +nomadic_horde_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +nomadic_horde_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +nomadic_horde_maintenance_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +nomadic_horde_recruitment_cost_mult = { + decimals = 2 + prefix = MOD_GOLD_PREFIX + color = bad + percent = yes +} + +stationed_nomadic_horde_damage_add = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 +} + +stationed_nomadic_horde_damage_mult = { + prefix = MOD_DAMAGE_PREFIX + decimals = 0 + percent = yes +} + +stationed_nomadic_horde_toughness_add = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 +} + +stationed_nomadic_horde_toughness_mult = { + prefix = MOD_TOUGHNESS_PREFIX + decimals = 0 + percent = yes +} + +stationed_nomadic_horde_pursuit_add = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 +} + +stationed_nomadic_horde_pursuit_mult = { + prefix = MOD_PURSUIT_PREFIX + decimals = 0 + percent = yes +} + +stationed_nomadic_horde_screen_add = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 +} + +stationed_nomadic_horde_screen_mult = { + prefix = MOD_SCREEN_PREFIX + decimals = 0 + percent = yes +} + +stationed_nomadic_horde_siege_value_add = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 1 +} + +stationed_nomadic_horde_siege_value_mult = { + prefix = MOD_SIEGE_PROGRESS_PREFIX + decimals = 0 + percent = yes +} \ No newline at end of file diff --git a/common/modifiers/07_ep3_modifiers.txt b/common/modifiers/07_ep3_modifiers.txt new file mode 100644 index 00000000..002627d3 --- /dev/null +++ b/common/modifiers/07_ep3_modifiers.txt @@ -0,0 +1,3064 @@ +############################################### +# #Estate modifiers + +ep3_estate_hired_agents_modifier = { + icon = intrigue_positive + + owned_hostile_scheme_success_chance_max_add = 3 + owned_hostile_scheme_success_chance_growth_add = 3 + hostile_scheme_phase_duration_add = microscopic_scheme_phase_duration_bonus_value + + scale = { + value = influence_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_PER_INFLUENCE_LEVEL + display_mode = scaled + } +} + +ep3_estate_bolster_security_modifier = { + icon = intrigue_positive + + enemy_hostile_scheme_success_chance_add = -4 + enemy_hostile_scheme_phase_duration_add = microscopic_scheme_phase_duration_malus_value + + scale = { + value = influence_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_PER_INFLUENCE_LEVEL + display_mode = scaled + } +} + +ep3_estate_governor_patrols_modifier = { + icon = martial_positive + + defender_holding_advantage = 10 + monthly_county_control_growth_add = 0.5 +} + +ep3_estate_granary_modifier = { + icon = treat_positive + + monthly_income = 0.1 + + scale = { + value = granary_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_ESTATE_FACTORS + display_mode = scaled + } +} + +############################################### +# Eparch modifiers + +ep3_eparch_county_opinion_modifier = { + icon = county_modifier_opinion_positive + + county_opinion_add = 10 + + scale = { + value = eparch_aptitude_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_EPARCH_APTITUDE + display_mode = scaled + } +} + +ep3_eparch_troops_modifier = { + icon = martial_positive + + stationed_maa_damage_mult = 0.1 + stationed_maa_toughness_mult = 0.05 + stationed_maa_siege_value_mult = 0.12 + + scale = { + value = eparch_aptitude_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_EPARCH_APTITUDE + display_mode = scaled + } +} + +ep3_eparch_control_modifier = { + icon = county_modifier_control_positive + + monthly_county_control_growth_add = 0.3 + + scale = { + value = eparch_aptitude_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_EPARCH_APTITUDE + display_mode = scaled + } +} + +ep3_eparch_development_modifier = { + icon = county_modifier_development_positive + + development_growth = 0.1 + + scale = { + value = eparch_aptitude_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_EPARCH_APTITUDE + display_mode = scaled + } +} + +ep3_eparch_fortified_capital_modifier = { + icon = travel_safety_positive + + fort_level = 1 + garrison_size = 0.05 + + scale = { + value = eparch_aptitude_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_EPARCH_APTITUDE + display_mode = scaled + } +} + +ep3_eparch_somewhat_fortified_capital_modifier = { + icon = travel_safety_positive + + fort_level = 2 +} + +ep3_eparch_plague_protection_modifier = { + icon = treatment_positive + + epidemic_resistance = 5 + epidemic_travel_danger = -2 + + scale = { + value = eparch_aptitude_modifier_scaling_value + desc = MODIFIER_DEFINITION_VALUE_EPARCH_APTITUDE + display_mode = scaled + } +} + +ep3_eparch_physician_at_work_modifier = { + icon = treatment_positive + + epidemic_resistance = 5 + development_decline_factor = -0.15 + + scale = { + value = { + value = 1 + if = { + limit = { + exists = scope:physician + } + add = scope:physician.aptitude:court_physician_court_position + } + desc = MODIFIER_DEFINITION_MAIN_DESC_EPARCH_APTITUDE + } + desc = MODIFIER_DEFINITION_VALUE_EPARCH_APTITUDE + display_mode = scaled + } +} + +ep3_eparch_university_influence_modifier = { + icon = influence_positive + + monthly_influence_mult = 0.1 + # Has custom effects +} + +############################################### +# #Governance modifiers + +ep3_governance_tax_relief = { + icon = stewardship_mixed + + tax_mult = -0.1 + development_growth_factor = 0.25 + county_opinion_add = 20 +} + +ep3_governance_stationed_troops = { + icon = martial_positive + + tax_mult = 0.1 + monthly_county_control_growth_factor = 0.2 + stationed_maa_damage_mult = 0.1 + fort_level = 2 +} + +ep3_governance_festivities = { + icon = county_modifier_opinion_positive + + tax_mult = 0.05 + monthly_county_control_growth_factor = 0.1 + county_opinion_add = 25 +} + +ep3_governance_infrastructure = { + icon = economy_positive + + build_gold_cost = -0.15 + build_speed = -0.15 + holding_build_gold_cost = -0.1 + holding_build_speed = -0.1 +} + +ep3_governance_harvest = { + icon = food_positive + + county_opinion_add = 10 + development_growth_factor = 0.05 + travel_danger = -4 + epidemic_resistance = 2 +} + +ep3_governance_great_harvest = { + icon = food_positive + + county_opinion_add = 20 + development_growth_factor = 0.1 + travel_danger = -8 + epidemic_resistance = 6 +} + +ep3_governance_mercenary_troops = { + icon = martial_mixed + + men_at_arms_maintenance = -0.2 + knight_effectiveness_mult = 0.2 + maa_damage_mult = 0.1 + county_opinion_add = -15 + monthly_prestige_gain_mult = -0.2 +} + +ep3_governance_workforce = { + icon = economy_positive + + county_opinion_add = 10 + development_growth_factor = 0.1 + build_gold_cost = -0.1 + build_speed = -0.1 +} + +ep3_governance_rampant_bandits = { + icon = travel_safety_negative + + county_opinion_add = -10 + travel_danger = 20 + monthly_county_control_decline_add = -0.2 +} + +ep3_settled_troops_province_modifier = { + icon = martial_positive + stationed_maa_damage_mult = 0.3 + stationed_maa_toughness_mult = 0.3 + stationed_maa_siege_value_mult = 0.3 +} + +ep3_longer_breaks_province_modifier = { + icon = martial_negative + stationed_maa_damage_mult = -0.1 + stationed_maa_toughness_mult = -0.1 +} + +ep3_better_paid_soldiers_modifier = { + icon = martial_mixed + men_at_arms_maintenance = 0.1 + maa_damage_mult = 0.15 +} + +ep3_mismanaged_administration_modifier = { + icon = economy_negative + tax_mult = -0.1 + monthly_county_control_decline_add = -0.2 +} + +ep3_contract_infrastructure_modifier = { + icon = county_modifier_development_positive + development_growth_factor = 0.2 + travel_danger = -10 +} + +ep3_invested_military_modifier = { + icon = martial_positive + stationed_maa_damage_mult = 0.1 + stationed_maa_toughness_mult = 0.1 +} + +ep3_food_distribution_modifier = { + icon = food_positive + county_opinion_add = 20 + monthly_county_control_growth_add = 0.15 +} + +ep3_peasant_border_raids_modifier = { + icon = goods_mixed + monthly_county_control_decline_add = -0.2 + garrison_size = 0.2 + hostile_raid_time = 0.4 +} + +ep3_peasant_workers_modifier = { + icon = food_mixed + tax_mult = 0.2 + county_opinion_add = -20 + development_growth_factor = 0.1 +} + +ep3_abundant_game_modifier = { + icon = hunt_positive + development_growth_factor = 0.15 +} + +ep3_wild_predators_modifier = { + icon = hunt_negative + development_growth_factor = -0.25 +} + +ep3_ferocious_pets_modifier = { + icon = beast_mixed + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_malus_value + dread_gain_mult = 0.25 + monthly_influence_mult = 0.1 + tax_mult = -0.15 +} + +ep3_church_investigation_modifier = { + icon = flame_mixed + holding_build_piety_cost = -0.5 + church_holding_build_speed = -0.3 + county_opinion_add = -25 + tax_mult = 0.2 +} + +ep3_rationalist_gov_modifier = { + icon = learning_mixed + learning = 2 + county_opinion_add = -10 + monthly_piety_gain_mult = -0.1 +} + +ep3_local_practices_modifier = { + icon = county_modifier_control_positive + county_opinion_add = 20 + monthly_county_control_growth_factor = 0.2 +} + +ep3_treasure_invest_modifier = { + icon = county_modifier_development_positive + development_growth_factor = 0.2 + build_gold_cost = -0.1 + travel_danger = -5 +} + +ep3_treasure_distributed_modifier = { + icon = county_modifier_development_positive + development_growth_factor = 0.2 +} + +ep3_lands_reinstated_modifier = { + icon = administrative_positive + levy_size = 0.2 + tax_mult = 0.1 + county_opinion_add = 10 +} + +ep3_land_confiscate_modifier = { + icon = goods_positive + domicile_build_speed = -0.1 + domicile_build_gold_cost = -0.1 +} + +ep3_religiously_pacified_modifier = { + icon = piety_positive + county_opinion_add = 20 + supply_limit_mult = 0.25 + levy_reinforcement_rate = 0.25 + travel_danger = -10 +} + +ep3_doom_repressed_modifier = { + icon = county_modifier_opinion_mixed + county_opinion_add = -20 + monthly_county_control_growth_factor = 0.2 +} + +ep3_religious_debate_modifier = { + icon = learning_positive + learning = 2 + monthly_influence_mult = 0.1 +} + +ep3_repayed_church_titles_modifier = { + icon = piety_positive + holding_build_piety_cost = -0.25 + church_holding_build_speed = -0.25 + church_holding_build_gold_cost = -0.25 +} + +ep3_rebuild_effort_modifier = { + icon = rat_positive + epidemic_resistance = 5 + supply_limit_mult = 0.15 + development_growth_factor = 0.2 + county_opinion_add = 10 +} + +ep3_tight_control_modifier = { + icon = county_modifier_opinion_mixed + county_opinion_add = -20 + development_growth_factor = -0.2 + monthly_county_control_growth_factor = 0.2 + epidemic_resistance = 10 + travel_danger = -10 +} + +ep3_war_support_modifier = { + icon = martial_mixed + tax_mult = -0.2 + fort_level = 1 + garrison_size = 0.5 +} + +ep3_war_supplies_modifier = { + icon = goods_mixed + tax_mult = -0.1 + supply_limit_mult = 0.5 + levy_reinforcement_rate_friendly_territory = 0.5 +} + +ep3_war_lodgings_modifier = { + icon = martial_mixed + tax_mult = -0.1 + supply_limit_mult = 0.25 + defender_holding_advantage = 5 +} + +ep3_war_lookout_modifier = { + icon = martial_mixed + tax_mult = -0.1 + travel_danger = -10 + defender_holding_advantage = 10 +} + +ep3_war_compensations_modifier = { + icon = stewardship_positive + tax_mult = 0.1 + monthly_county_control_growth_at_war_factor = 0.25 + development_growth_factor = 0.25 +} + +############################################### +# #Character modifiers + +ep3_restored_pentarchy_seat_county_modifier = { + icon = byzantine_eagle_positive + tax_mult = 0.2 + levy_size = 0.3 +} + +ep3_restored_pentarchy_seat_modifier = { + icon = byzantine_eagle_positive + monthly_piety = 0.3 + learning = 2 + religious_head_opinion = 25 + same_faith_opinion = 10 +} + +ep3_maximum_border_county_modifier = { + icon = byzantine_eagle_positive + development_growth = 0.2 + levy_size = 0.1 + castle_holding_build_gold_cost = -0.1 +} + +ep3_maximum_border_modifier = { + icon = byzantine_eagle_positive + martial = 2 + monthly_prestige = 0.3 + glory_hound_levy_contribution_mult = 0.03 +} + +ep3_new_justinian_county_modifier = { + icon = byzantine_eagle_positive + tax_mult = 0.2 + city_holding_build_gold_cost = -0.2 +} + +ep3_new_justinian_modifier = { + icon = byzantine_eagle_positive + diplomacy = 2 + monthly_influence = 0.3 +} + +ep3_western_tetrarch_county_modifier = { + icon = byzantine_eagle_positive + monthly_county_control_growth_add = 1 + travel_danger = -10 +} + +ep3_western_tetrarch_modifier = { + icon = byzantine_eagle_positive + intrigue = 2 + monthly_lifestyle_xp_gain_mult = 0.2 + men_at_arms_maintenance = -0.03 +} + +ep3_long_lost_province_county_modifier = { + icon = byzantine_eagle_positive + development_growth_factor = 0.1 + city_holding_build_gold_cost = -0.3 +} + +ep3_long_lost_province_modifier = { + icon = byzantine_eagle_positive + diplomacy = 2 + direct_vassal_opinion = 10 + mercenary_hire_cost_mult = -0.1 +} + +ep3_long_contested_province_county_modifier = { + icon = byzantine_eagle_positive + build_speed = -0.15 + defender_holding_advantage = 5 + levy_reinforcement_rate = 0.5 +} + +ep3_long_contested_province_modifier = { + icon = byzantine_eagle_positive + martial = 2 + stress_gain_mult = -0.2 + army_maintenance_mult = -0.1 +} + +ep3_medi_gem_county_modifier = { + icon = byzantine_eagle_positive + build_gold_cost = -0.2 + development_growth_factor = medium_development_growth_gain +} + +ep3_medi_gem_modifier = { + icon = byzantine_eagle_positive + stewardship = 2 + monthly_income_mult = 0.1 + courtly_tax_contribution_mult = 0.03 +} + +ep3_politics_before_all_modifier = { + icon = diplomacy_mixed + diplomacy = 1 + courtly_opinion = -5 + parochial_opinion = -10 + different_culture_opinion = 5 + minority_opinion = 5 +} + +ep3_everything_for_byz_modifier = { + icon = byzantine_eagle_mixed + zealot_opinion = 5 + glory_hound_opinion = 5 + clergy_opinion = 10 + different_culture_opinion = -5 +} + +vast_tracts_of_land_modifier = { + icon = stewardship_positive + stacking = yes + monthly_income = 0.8 + monthly_influence = 0.4 +} + +productive_lands_modifier = { + icon = stewardship_positive + monthly_income = 0.3 + monthly_influence = 0.2 +} + +some_smallholds_modifier = { + icon = stewardship_positive + monthly_income = 0.1 + monthly_influence = 0.1 +} + +holy_water_mortal_stomach_modifier = { + icon = health_negative + health = -0.25 +} + +haunted_by_hostile_troops_modifier = { + icon = stress_mixed + stress_gain_mult = 0.25 + character_travel_speed_mult = 0.1 +} + +ep3_triumph_of_god_modifier = { + icon = piety_positive + zealot_opinion = 15 + same_faith_opinion = 5 + zealot_tax_contribution_mult = 0.25 + monthly_piety = 0.3 +} + +ep3_blessed_in_triumph_modifier = { + icon = piety_positive + zealot_opinion = 5 + same_faith_opinion = 5 + diplomacy_per_piety_level = 1 + monthly_prestige = 0.2 +} + +ep3_triumph_traditional_punishments_modifier = { + icon = medical_scissors_positive + councillor_opinion = 10 + monthly_legitimacy_add = 1 + monthly_prestige_gain_per_legitimacy_level_add = 0.2 + diplomacy_per_prestige_level = 1 +} + +ep3_triumph_public_executioner_modifier = { + icon = dread_positive + monthly_dread = 0.25 + monthly_county_control_growth_add = 0.3 + intimidated_vassal_tax_contribution_mult = 0.1 + cowed_vassal_tax_contribution_mult = 0.2 +} + +ep3_triumph_promised_victories_modifier = { + icon = martial_positive + martial = 1 + glory_hound_opinion = 10 + men_at_arms_maintenance = -0.2 + happy_powerful_vassal_levy_contribution_mult = 0.2 +} + +ep3_triumph_promised_stability_modifier = { + icon = diplomacy_positive + diplomacy = 1 + courtly_opinion = 10 + monthly_prestige_gain_per_happy_powerful_vassal_add = 0.2 + monthly_county_control_growth_add = 0.2 +} + +ep3_triumph_promised_prosperity_modifier = { + icon = stewardship_positive + stewardship = 1 + parochial_opinion = 10 + development_growth_factor = 0.2 + monthly_income_mult = 0.1 +} + +ep3_voluntary_laamp_character_modifier = { + icon = prestige_positive + same_culture_opinion = 10 + same_faith_opinion = 10 + travel_companion_opinion = 10 +} + +ep3_guide_from_the_borderlands_modifier = { + icon = travel_positive + hills_travel_danger = -20 + mountains_travel_danger = -20 + steppe_travel_danger = -20 + character_travel_speed_mult = 0.1 +} + +ep3_emperor_proving_themselves_modifier = { + icon = signet_ring_mixed + legitimacy_gain_mult = 0.05 + religious_head_opinion = -15 + zealot_opinion = -5 +} + +ep3_blessed_union_modifier = { + icon = wedding_positive + zealot_opinion = 5 + monthly_piety_gain_mult = 0.15 + zealot_tax_contribution_mult = 0.1 +} + +ep3_non_blessed_union_modifier = { + icon = wedding_negative + zealot_opinion = -5 + monthly_piety_gain_mult = -0.15 + zealot_tax_contribution_mult = -0.1 +} + +ep3_ennobled_adventurer_modifier_1 = { + icon = legitimacy_negative + fellow_vassal_opinion = -15 + vassal_opinion = -15 + legitimacy_gain_mult = -0.25 +} + +ep3_ennobled_adventurer_modifier_2 = { + icon = legitimacy_negative + fellow_vassal_opinion = -20 + vassal_opinion = -20 + legitimacy_gain_mult = -0.3 +} + +ep3_ennobled_adventurer_modifier_3 = { + icon = legitimacy_negative + fellow_vassal_opinion = -25 + vassal_opinion = -25 + legitimacy_gain_mult = -0.4 +} + +disrespected_varangians_modifier = { + icon = intrigue_negative + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_bonus_value + heavy_infantry_damage_mult = -0.1 + heavy_infantry_toughness_mult = -0.1 +} + +loyal_varangians_modifier = { + icon = martial_positive + heavy_infantry_damage_mult = 0.25 + heavy_infantry_toughness_mult = 0.25 + heavy_infantry_recruitment_cost_mult = -0.25 +} + +attentive_varangians_modifier = { + icon = intrigue_positive + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_malus_value + courtier_and_guest_opinion = 10 +} + +ep3_exotic_giraffe_modifier = { + icon = horse_positive + monthly_county_control_growth_factor = 0.2 + monthly_court_grandeur_change_mult = 0.2 + court_grandeur_baseline_add = 2 +} + +defender_of_values_modifier = { + icon = signet_ring_positive + same_culture_opinion = 10 + parochial_same_culture_opinion = 5 +} + +ep3_mercenaries_abroad_modifier = { + icon = martial_negative + men_at_arms_maintenance = 0.3 + men_at_arms_recruitment_cost = 0.3 +} + +ep3_mercenaries_from_abroad_modifier = { + icon = martial_positive + men_at_arms_maintenance = -0.3 + men_at_arms_recruitment_cost = -0.3 +} + +ep3_bought_the_purple_modifier = { + icon = byzantine_eagle_positive + monthly_influence = 0.1 + general_opinion = 10 +} + +ep3_leviathan_success_character_modifier = { + icon = beast_positive + general_opinion = 5 + county_opinion_add = 20 +} + +ep3_leviathan_failure_character_modifier = { + icon = beast_negative + embarkation_cost_mult = 0.15 +} + +ep3_iconoclast_modifier = { + icon = piety_mixed + county_opinion_add = -20 + same_faith_opinion = 15 +} + +ep3_grave_robber_modifier = { + icon = influence_mixed + county_opinion_add = -20 + monthly_influence_mult = -0.05 + dread_gain_mult = 0.05 +} + +ep3_construction_contract_modifier = { + icon = county_modifier_development_positive + monthly_income = 1 +} + +ep3_pilgrim_protector_same_modifier = { + icon = piety_positive + same_faith_opinion = 10 + zealot_opinion = 10 + church_holding_build_gold_cost = -0.3 + church_holding_build_speed = -0.3 +} + +ep3_pilgrim_protector_other_modifier = { + icon = piety_positive + different_faith_county_opinion_mult = -0.3 + different_faith_opinion = 15 + faith_conversion_piety_cost_mult = -0.5 + domain_tax_different_faith_mult = 0.1 +} + +ep3_friendly_host_modifier = { + icon = influence_positive + county_opinion_add = 15 + zealot_opinion = 10 +} + +ep3_unbeliever_in_signs_modifier = { + icon = wit_mixed + monthly_piety_gain_mult = -0.15 + stress_gain_mult = -0.15 + diplomacy = 1 + learning = -1 +} + +ep3_law_and_order_modifier = { + icon = signet_ring_mixed + martial = 1 + dread_gain_mult = 0.2 + county_opinion_add = -15 +} + +ep3_crowd_bender_modifier = { + icon = diplomacy_positive + diplomacy = 1 + monthly_influence_mult = 0.2 +} + +ep3_bolstered_governor_treasury_modifier = { + icon = administrative_positive + monthly_influence_mult = 0.1 + development_growth_factor = 0.05 +} + +ep3_governor_yearly_8080_tense_bureaucracy_modifier = { + icon = administrative_mixed + county_opinion_add = 10 + dread_baseline_add = 5 + tax_mult = -0.1 +} + +ep3_governor_yearly_8080_jumpy_bureaucracy_modifier = { + icon = administrative_mixed + county_opinion_add = 25 + dread_baseline_add = 10 + tax_mult = -0.15 +} + +ep3_governor_yearly_8080_corrupt_bureaucracy_modifier = { + icon = administrative_negative + county_opinion_add = -25 + dread_baseline_add = -10 +} + +ep3_governor_yearly_8050_imperial_recruiter_modifier = { + icon = administrative_positive + liege_opinion = 10 + monthly_influence_mult = 0.1 +} + +ep3_governor_yearly_8050_imperial_fortification_modifier = { + icon = administrative_mixed + additional_fort_level = 1 + garrison_size = 0.1 + liege_opinion = -10 + monthly_influence_mult = -0.1 +} + +ep3_governor_yearly_8050_imperial_resources_modifier = { + icon = administrative_negative + liege_opinion = -15 +} + +ep3_governor_yearly_8040_province_development_modifier = { + icon = administrative_mixed + build_gold_cost = -0.25 + holding_build_gold_cost = -0.25 + domicile_build_gold_cost = 0.25 +} + +ep3_governor_yearly_8040_domicile_development_modifier = { + icon = administrative_mixed + domicile_build_gold_cost = -0.25 + build_gold_cost = 0.25 + holding_build_gold_cost = 0.25 +} + +ep3_governor_yearly_8040_across_things_modifier = { + icon = administrative_positive + domicile_build_gold_cost = -0.1 + build_gold_cost = -0.1 + holding_build_gold_cost = -0.1 + vassal_opinion = 10 +} + +ep3_governor_yearly_8040_overwhelmed_modifier = { + icon = administrative_negative + stewardship = -2 + domicile_build_gold_cost = 0.10 + build_gold_cost = 0.10 + holding_build_gold_cost = 0.10 + stress_gain_mult = 0.15 +} + +ep3_governor_yearly_8040_shirker_modifier = { + icon = administrative_mixed + vassal_opinion = -10 + monthly_influence_mult = -0.2 + stress_gain_mult = -0.15 +} + +laamp_prepping_for_invasion = { + icon = martial_positive + men_at_arms_maintenance = -0.1 + men_at_arms_recruitment_cost = -0.1 +} + +laamp_familiar_lands = { + icon = travel_positive + character_travel_speed_mult = 0.1 + character_travel_safety_mult = 0.1 +} + +ep3_governor_yearly_8120_relief_leader_modifier = { + icon = county_modifier_opinion_positive + county_opinion_add = 25 + monthly_influence_mult = 0.1 +} + +ep3_governor_yearly_8120_relief_botched_modifier = { + icon = county_modifier_opinion_negative + county_opinion_add = -25 + monthly_influence_mult = -0.1 +} + +ep3_governor_yearly_8120_relief_rejected_modifier = { + icon = county_modifier_opinion_negative + county_opinion_add = -30 +} + +ep3_governor_yearly_8130_raised_taxes_modifier = { + icon = byzantine_eagle_mixed + tax_mult = 0.2 + county_opinion_add = -30 +} + +ep3_governor_yearly_8130_special_levy_modifier = { + icon = byzantine_eagle_negative + county_opinion_add = -15 +} + +ep3_governor_yearly_8130_raised_almonage_modifier = { + icon = byzantine_eagle_mixed + development_growth_factor = 0.1 + epidemic_resistance = 5 + county_opinion_add = 10 + vassal_opinion = -15 +} + +ep3_sent_help_to_east_modifier = { + icon = martial_negative + vassal_levy_contribution_mult = -0.2 + levy_size = -0.2 +} + +ep3_efforts_recognized_modifier = { + icon = signet_ring_positive + monthly_influence_mult = 0.2 + monthly_prestige_gain_mult = 0.2 + stress_gain_mult = -0.2 +} + +ep3_publicly_recognized_modifier = { + icon = signet_ring_positive + monthly_influence_mult = 0.15 + fellow_vassal_opinion = 10 + dynasty_opinion = 10 +} + +ep3_integration_promoter_modifier = { + icon = administrative_positive + domicile_build_speed = -0.25 + monthly_influence = 0.5 +} + +# #County modifiers +taxed_and_pressganged_tenants_modifier = { + icon = county_modifier_opinion_negative + county_opinion_add = -25 + development_growth = -0.25 +} + +ep3_century_celebration_county_modifier = { + icon = byzantine_eagle_positive + development_growth_factor = medium_development_growth_gain + development_growth = 0.2 + tax_mult = 0.3 + county_opinion_add = 25 +} + +ep3_foundation_celebration_county_modifier = { + icon = byzantine_eagle_positive + development_growth_factor = small_development_growth_gain +} + +ep3_development_sacrifice_modifier = { + icon = county_modifier_development_negative + development_growth_factor = tiny_development_growth_loss + tax_mult = -0.1 + county_opinion_add = -10 +} + +ep3_development_waning_modifier = { + icon = county_modifier_development_negative + development_growth_factor = small_development_growth_loss + tax_mult = -0.15 + county_opinion_add = -15 +} + +ep3_school_building_county_modifier = { + icon = learning_negative + build_speed = 0.5 +} + +ep3_grammar_school_county_modifier = { + icon = learning_positive + county_opinion_add = 20 + development_growth_factor = small_development_growth_gain +} + +ep3_leviathan_loose_county_modifier = { + icon = county_modifier_development_negative + development_growth_factor = small_development_growth_loss + tax_mult = -0.2 + county_opinion_add = -25 +} + +ep3_leviathan_mandate_county_modifier = { + icon = county_modifier_development_mixed + development_growth_factor = tiny_development_growth_loss + tax_mult = -0.1 + county_opinion_add = 10 +} + +ep3_raider_unchecked_modifier = { + icon = county_modifier_development_negative + development_growth_factor = small_development_growth_loss + tax_mult = -0.2 + county_opinion_add = -25 +} + +land_of_holy_county_modifier = { + icon = signet_ring_positive + county_opinion_add = 20 + monthly_county_control_growth_factor = 0.2 + levy_reinforcement_rate = 0.1 +} + +no_crooks_county_modifier = { + icon = signet_ring_positive + development_growth_factor = small_development_growth_gain + tax_mult = 0.15 +} + +ep3_persecuting_saints_county_modifier = { + icon = signet_ring_negative + development_growth_factor = small_development_growth_loss +} + +ep3_conmen_among_us_county_modifier = { + icon = signet_ring_negative + tax_mult = -0.1 +} + +ep3_settling_nomads_county_modifier = { + icon = horse_mixed + development_growth_factor = small_development_growth_gain + monthly_county_control_growth_factor = -0.1 + epidemic_resistance = -5 +} + +ep3_tunnels_encouraged_county_modifier = { + icon = goods_mixed + hostile_raid_time = 0.75 + defender_holding_advantage = 10 + fort_level = 1 + travel_danger = 10 + tax_mult = -0.3 +} + +ep3_population_control_county_modifier = { + icon = county_modifier_control_mixed + county_opinion_add = -30 + hostile_raid_time = -0.25 + monthly_county_control_growth_factor = 0.2 + tax_mult = 0.1 +} + +ep3_open_granary_county_modifier = { + icon = county_modifier_development_positive + development_growth_factor = small_development_growth_gain + county_opinion_add = 10 +} + +ep3_roaming_shepherds_county_modifier = { + icon = horse_mixed + development_growth_factor = small_development_growth_gain + travel_danger = -10 + monthly_county_control_growth_add = -0.15 +} + +ep3_monastic_quiet_county_modifier = { + icon = learning_mixed + development_growth_factor = small_development_growth_loss + epidemic_resistance = 10 + tax_mult = 0.1 +} + +ep3_rampaging_disorders_county_modifier = { + icon = blood_negative + development_growth_factor = medium_development_growth_loss +} + +ep3_governor_yearly_8030_stifled_modifier = { + icon = county_modifier_development_negative + development_growth_factor = small_development_growth_loss + county_opinion_add = -25 +} + +ep3_governor_yearly_8030_benign_modifier = { + icon = county_modifier_development_positive + development_growth_factor = small_development_growth_gain + county_opinion_add = 15 +} + +ep3_governor_yearly_8030_benign_char_modifier = { + icon = estate_positive + domicile_build_gold_cost = -0.15 +} + +ep3_governor_yearly_8170_warning_system_modifier = { + icon = byzantine_eagle_positive + hostile_raid_time = 0.25 + development_growth_factor = 0.05 + county_opinion_add = 15 +} + +ep3_governor_yearly_8170_success_modifier = { + icon = byzantine_eagle_positive + hostile_raid_time = 0.5 + additional_fort_level = 1 + county_opinion_add = 25 +} + +ep3_governor_yearly_8170_failure_modifier = { + icon = byzantine_eagle_negative + hostile_raid_time = -0.5 + development_growth_factor = -0.1 + county_opinion_add = -25 +} + +ep3_governor_yearly_8160_promoted_modifier = { + icon = county_modifier_opinion_positive + county_opinion_add = 25 +} + +ep3_governor_yearly_8160_suppressed_modifier = { + icon = county_modifier_opinion_negative + county_opinion_add = -25 +} + +ep3_governor_yearly_8140_negotiated_modifier = { + icon = byzantine_eagle_positive + development_growth_factor = 0.1 + county_opinion_add = 25 +} + +ep3_governor_yearly_8140_defended_modifier = { + icon = byzantine_eagle_negative + development_decline = -0.2 + county_opinion_add = -40 +} + +ep3_governor_yearly_8140_ignored_modifier = { + icon = byzantine_eagle_negative + development_decline = -0.1 + county_opinion_add = -20 +} + +ep3_governor_yearly_8120_relief_aid_modifier = { + icon = county_modifier_opinion_positive + county_opinion_add = 50 + monthly_county_control_growth_add = 0.1 + development_growth = 0.5 +} + +ep3_governor_yearly_8150_placated_modifier = { + icon = county_modifier_opinion_positive + county_opinion_add = 25 +} + +ep3_governor_yearly_8150_insulted_modifier = { + icon = county_modifier_opinion_negative + county_opinion_add = -50 + tax_mult = -0.1 +} + +ep3_governor_yearly_8150_concession_modifier = { + icon = county_modifier_opinion_mixed + county_opinion_add = 25 + tax_mult = -0.1 + levy_size = -0.1 +} + +ep3_governor_yearly_8150_crackdown_modifier = { + icon = county_modifier_opinion_mixed + county_opinion_add = 25 + development_growth_factor = -0.2 +} + +ep3_governor_yearly_8150_minority_crackdown_modifier = { + icon = county_modifier_opinion_mixed + minority_opinion = -20 + dread_baseline_add = 20 + levy_toughness = -5 +} + +ep3_governor_yearly_8150_peasant_crackdown_modifier = { + icon = county_modifier_opinion_mixed + dread_baseline_add = 20 + levy_toughness = -5 + levy_reinforcement_rate_even_if_baron = -0.2 +} + +pandidakterion_university_modifier = { + icon = byzantine_eagle_positive + development_growth_factor = 0.15 +} + +grain_providers_county_modifier = { + icon = economy_positive + tax_mult = 0.2 +} + +panem_et_circenses_county_modifier = { + icon = treat_positive + county_opinion_add = 10 + development_growth_factor = 0.05 + epidemic_resistance = 3 + + scale = { + value = number_of_granaries_in_egypt_value + desc = MODIFIER_DEFINITION_VALUE_PER_EGYPT_GRANARY + display_mode = scaled + } +} + +improve_de_jure_integration_modifier = { + icon = diplomacy_positive +} + +improve_promote_culture_modifier = { + icon = stewardship_positive +} + +# Province modifiers +ep3_leviathan_loose_province_modifier = { + icon = beast_negative + coastal_sea_travel_danger = 20 +} + +ep3_leviathan_mandate_province_modifier = { + icon = beast_negative + coastal_sea_travel_danger = 10 +} + +ep3_governor_yearly_8070_ignore_modifier = { + icon = stewardship_mixed + stewardship = -2 + stress_gain_mult = -0.2 +} + +ep3_imperial_tombs_violated_province_modifier = { + icon = byzantine_crown_mixed + monthly_income = 0.1 + build_speed = 0.2 +} + +# Travel modifiers +ep3_guides_and_guards_modifier = { + icon = compass_positive + travel_safety = 10 + travel_speed = 5 +} + +ep3_lay_of_the_land_modifier = { + icon = compass_positive + travel_speed = 5 +} + +########################################################### +# Schemes Modifiers + +scheme_slandered_modifier = { + icon = influence_negative +} + +scheme_promoted_modifier = { + icon = influence_positive +} + +admin_emperor_scheme_modifier = { + icon = intrigue_positive + scheme_success_chance_max = 20 + scheme_success_chance_growth = 2 + scheme_phase_duration = -10 + scheme_secrecy = 10 +} + +admin_dominant_family_scheme_modifier = { + icon = intrigue_positive + scheme_success_chance_max = 25 + scheme_success_chance_growth = 3 + scheme_phase_duration = -15 + scheme_secrecy = 15 +} + +admin_powerful_family_scheme_modifier = { + icon = intrigue_positive + scheme_success_chance_max = 10 + scheme_success_chance_growth = 1 + scheme_phase_duration = -5 + scheme_secrecy = 5 +} + +admin_target_emperor_scheme_modifier = { + icon = intrigue_negative + scheme_success_chance_max = -15 + scheme_phase_duration = 10 + scheme_secrecy = -10 +} +admin_target_dominant_family_scheme_modifier = { + icon = intrigue_negative + scheme_success_chance_max = -20 + scheme_phase_duration = 15 + scheme_secrecy = -15 +} +admin_target_powerful_family_scheme_modifier = { + icon = intrigue_negative + scheme_success_chance_max = -10 + scheme_phase_duration = 5 + scheme_secrecy = -5 +} + +hostile_schemes_distracted_modifier = { + icon = intrigue_negative + intrigue = -1 +} + +personal_schemes_distracted_modifier = { + icon = intrigue_negative + diplomacy = -1 +} + +political_schemes_distracted_modifier = { + icon = intrigue_negative + monthly_influence_mult = -0.1 +} + +estate_supporting_buildings_modifier = { + icon = goods_positive + domicile_build_speed = -0.1 + + scale = { + value = { + value = 0 + every_in_list = { + variable = supporting_building + add = 1 + } + min = 1 + } + desc = MODIFIER_DEFINITION_VALUE_PER_SUPPORTER + display_mode = scaled + } +} + + +########################################################### +# CHARIOT RACE +emperor_chariot_race_speech_appeasing_populace_modifier = { + icon = county_modifier_opinion_mixed + county_opinion_add = 30 + tax_mult = -0.2 + monthly_county_control_growth_factor = 0.25 +} + +emperor_chariot_race_war_speech_modifier = { + icon = martial_positive + monthly_war_income_mult = 0.1 + levy_reinforcement_rate = 0.25 + levy_size = 0.1 +} + +emperor_chariot_race_legend_speech_modifier = { + icon = legend_positive + owned_legend_spread_mult = 0.2 + influence_level_impact_mult = 0.2 +} + +emperor_chariot_race_speech_neutral_county_modifier = { + icon = county_modifier_opinion_positive + county_opinion_add = 20 +} + +soused_at_the_races_modifier = { + icon = stress_mixed + stress_loss_mult = 0.5 + stress_gain_mult = -0.5 + monthly_influence_mult = -0.75 +} + +mercantile_contacts_modifier = { + icon = county_modifier_development_positive + tax_mult = 0.2 + build_gold_cost = -0.1 + build_speed = -0.1 +} + +powerful_loyal_deme_modifier = { + icon = county_modifier_opinion_positive + county_opinion_add = 15 +} + +sizable_loyal_deme_modifier = { + icon = county_modifier_opinion_positive + county_opinion_add = 10 +} + +flourishing_local_deme_modifier = { + icon = county_modifier_development_mixed + county_opinion_add = 10 + development_growth_factor = medium_development_growth_gain + monthly_county_control_growth_factor = -0.2 +} + +chariot_race_blues_statue_county_modifier = { + icon = county_modifier_development_positive + county_opinion_add = 10 + monthly_county_control_growth_add = 0.15 +} +chariot_race_greens_statue_county_modifier = { + icon = county_modifier_development_positive + county_opinion_add = 10 + monthly_county_control_growth_add = 0.15 +} +chariot_race_whites_statue_county_modifier = { + icon = county_modifier_development_positive + county_opinion_add = 10 + monthly_county_control_growth_add = 0.15 +} +chariot_race_reds_statue_county_modifier = { + icon = county_modifier_development_positive + county_opinion_add = 10 + monthly_county_control_growth_add = 0.15 +} +calmed_after_charioteer_died_spectator = { + icon = county_modifier_opinion_negative + county_opinion_add = -20 +} + +restored_greek_theme_modifier = { + icon = signet_ring_positive + stewardship = 1 + county_opinion_add = 15 +} + +brutal_castration_modifier = { + icon = health_negative + health = -0.75 + stress_gain_mult = 0.2 +} + +ravaged_by_greek_fire_modifier = { + icon = flame_negative + advantage = -2 + coastal_advantage = -3 + embarkation_cost_mult = 3 +} + +defenders_immolated_modifier = { + icon = flame_negative + fort_level = -3 + garrison_size = -0.5 + county_opinion_add = -20 +} + +defensive_fire_dromons_modifier = { + icon = flame_mixed + fort_level = 1 + county_opinion_add = 5 + tax_mult = -0.05 +} + +assaulted_by_greek_fire_modifier = { + icon = flame_negative + advantage = -1 + coastal_advantage = -2 + embarkation_cost_mult = 1.5 +} + +noble_administrators_modifier = { + icon = byzantine_eagle_positive + monthly_influence_mult = 0.1 +} + +#Dynasty - House +retaken_eastern_provinces_modifier = { + icon = byzantine_eagle_positive + monthly_influence_mult = 0.2 +} + +ep3_unlocked_silk = { + icon = byzantine_eagle_positive +} + +# Admin Eunuch + +admin_eunuch_liege_1_modifier = { + icon = social_negative + stewardship = -3 + tax_mult = -0.15 + enemy_hostile_scheme_success_chance_add = 15 +} + +admin_eunuch_liege_2_modifier = { + icon = social_negative + stewardship = -2 + tax_mult = -0.10 + enemy_hostile_scheme_success_chance_add = 10 +} + +admin_eunuch_liege_3_modifier = { + icon = social_negative + stewardship = -1 + tax_mult = -0.05 + enemy_hostile_scheme_success_chance_add = 5 +} + +admin_eunuch_liege_4_modifier = { + icon = stewardship_mixed + stewardship = 2 + stress_gain_mult = -0.1 + intrigue = -1 +} + +admin_eunuch_liege_5_modifier = { + icon = stewardship_mixed + stewardship = 3 + domain_limit = 1 + stress_gain_mult = -0.2 + vassal_opinion = -10 + intrigue = -2 + +} + +admin_eunuch_liege_6_modifier = { + icon = stewardship_mixed + stewardship = 4 + domain_limit = 1 + stress_gain_mult = -0.3 + vassal_opinion = -15 + intrigue = -3 +} + +admin_eunuch_liege_7_modifier = { + icon = stewardship_mixed + stewardship = 5 + domain_limit = 1 + stress_gain_mult = -0.4 + vassal_opinion = -20 + intrigue = -4 +} + +admin_eunuch_liege_8_modifier = { + icon = stewardship_mixed + stewardship = 6 + domain_limit = 2 + stress_gain_mult = -0.5 + vassal_opinion = -25 + intrigue = -5 +} + +admin_eunuch_eunuch_1_modifier = { + icon = social_negative + opinion_of_liege = -45 +} + +admin_eunuch_eunuch_2_modifier = { + icon = social_negative + opinion_of_liege = -30 +} + +admin_eunuch_eunuch_3_modifier = { + icon = social_negative + opinion_of_liege = -15 +} + +admin_eunuch_eunuch_4_modifier = { + icon = intrigue_mixed + intrigue = 2 + monthly_influence = 0.1 + monthly_income = 0.25 + stress_gain_mult = 0.1 +} + +admin_eunuch_eunuch_5_modifier = { + icon = intrigue_mixed + intrigue = 3 + monthly_influence = 0.2 + owned_hostile_scheme_success_chance_add = 5 + monthly_income = 0.5 + max_hostile_schemes_add = 1 + general_opinion = -10 + stress_gain_mult = 0.2 +} + +admin_eunuch_eunuch_6_modifier = { + icon = intrigue_mixed + intrigue = 4 + monthly_influence = 0.3 + owned_hostile_scheme_success_chance_add = 10 + monthly_income = 0.75 + max_hostile_schemes_add = 1 + general_opinion = -15 + stress_gain_mult = 0.3 + +} + +admin_eunuch_eunuch_7_modifier = { + icon = intrigue_mixed + intrigue = 5 + monthly_influence = 0.4 + owned_hostile_scheme_success_chance_add = 15 + monthly_income = 1 + max_hostile_schemes_add = 1 + general_opinion = -20 + stress_gain_mult = 0.4 +} + +admin_eunuch_eunuch_8_modifier = { + icon = intrigue_mixed + intrigue = 6 + monthly_influence = 0.5 + owned_hostile_scheme_success_chance_add = 25 + monthly_income = 1.5 + max_hostile_schemes_add = 2 + general_opinion = -25 + stress_gain_mult = 0.5 +} + +admin_eunuch_raise_taxes_modifier = { + icon = economy_mixed + tax_mult = 0.15 + county_opinion_add = -50 +} + +admin_eunuch_puppet_modifier = { + icon = social_positive + stewardship = 2 + monthly_influence = 1.0 +} + +ep3_consolidated_rule_modifier = { + icon = legitimacy_positive + legitimacy_gain_mult = 0.25 +} + +### GRAND AMBITIONS STORY CYCLE MODIFIERS + +# SCHEME MODIFIERS +scheme_grand_ambitions_modifier = { + icon = signet_ring_positive + scheme_secrecy = 40 + scheme_success_chance = 50 +} + +scheme_grand_ambitions_bribed_functionaries_modifier = { + icon = signet_ring_positive + scheme_success_chance = 10 +} + +scheme_grand_ambitions_bribed_merchants_modifier = { + icon = signet_ring_positive + scheme_phase_duration = -10 +} + +scheme_grand_ambitions_bribed_scribes_modifier = { + icon = signet_ring_positive + scheme_secrecy = 10 +} + +scheme_grand_ambitions_embezzling_modifier = { + icon = stewardship_positive + scheme_success_chance = 5 +} + +scheme_grand_ambitions_powerful_family_modifier = { + icon = signet_ring_positive + scheme_success_chance = 30 + scheme_secrecy = 30 +} + +ep3_grand_ambitions_cheaper_maa_modifier = { + icon = martial_mixed + men_at_arms_recruitment_cost = -0.3 + maa_damage_mult = 0.05 + monthly_county_control_growth_factor = -0.20 +} + +ep3_grand_ambitions_local_labor_modifier = { + icon = signet_ring_positive + domicile_build_speed = -0.2 + men_at_arms_recruitment_cost = -0.1 +} + +ep3_grand_ambitions_rioting_county_modifier = { + icon = byzantine_eagle_negative + county_opinion_add = -25 + monthly_county_control_decline_add = -5 +} + +ep3_grand_ambitions_hushed_rumors = { + icon = byzantine_eagle_mixed + county_opinion_add = -10 + monthly_county_control_decline_add = 1 +} + +### END GRAND AMBITIONS MODIFIERS + +prepared_for_daring_deeds_modifier = { + icon = martial_positive + mercenary_hire_cost_mult = -0.5 + supply_capacity_add = 200 + glory_hound_opinion = 20 +} + +eager_for_empire_modifier = { + icon = byzantine_eagle_positive + prowess = 2 + health = 0.5 + enemy_hostile_scheme_success_chance_add = -30 +} + +crippled_by_imperial_debt_modifier = { + icon = county_modifier_development_negative + development_decline = -1 + garrison_size = -0.5 + levy_size = -0.5 + tax_mult = -0.33 +} + +bent_before_crusaders_modifier = { + icon = byzantine_eagle_negative + glory_hound_opinion = -20 + parochial_opinion = -20 + county_opinion_add = -25 + monthly_prestige_gain_mult = -0.25 + levy_size = -0.2 +} + +grand_crusader_fleet_modifier = { + icon = compass_positive + embarkation_cost_mult = -0.7 + naval_movement_speed_mult = 0.33 +} + +ep3_agitated_populace = { + icon = county_modifier_opinion_negative + county_opinion_add = -25 +} + +ep3_religious_doubts = { + icon = county_modifier_opinion_negative + county_opinion_add = -25 +} + +ep3_gave_out_provisions = { + icon = county_modifier_opinion_negative + stacking = yes + county_opinion_add = -15 + supply_limit_mult = -0.2 +} + +laamp_decision_church_health_modifier = { + icon = treatment_positive + health = 0.1 + fertility = 0.1 + + scale = { + value = { + value = 0 + if = { + limit = { exists = var:1041_healer_aptitude } + if = { + limit = { var:1041_healer_aptitude = 5 } # 50% + add = 5 + } + else_if = { + limit = { var:1041_healer_aptitude >= 4 } # 40% + add = 4 + } + else_if = { + limit = { var:1041_healer_aptitude >= 3 } # 30% + add = 3 + } + else_if = { + limit = { var:1041_healer_aptitude >= 2 } # 20% + add = 2 + } + else = { add = 1 } # No change, 10% + } + } + desc = MODIFIER_DEFINITION_VALUE_PER_PHYSICIAN_APTITUDE + display_mode = scaled + } +} + +laamp_decision_church_health_partner_modifier = { + icon = treatment_positive + health = 0.1 + fertility = 0.1 + + scale = { + value = { + value = 0 + if = { + limit = { exists = var:1041_partner_healer_aptitude } + if = { + limit = { var:1041_partner_healer_aptitude = 5 } + add = 4.5 + } + else_if = { + limit = { var:1041_partner_healer_aptitude >= 4 } + add = 3.6 + } + else_if = { + limit = { var:1041_partner_healer_aptitude >= 3 } + add = 2.7 + } + else_if = { + limit = { var:1041_partner_healer_aptitude >= 2 } + add = 1.8 + } + else = { add = 0.9 } + } + } + desc = MODIFIER_DEFINITION_VALUE_PER_PHYSICIAN_APTITUDE + display_mode = scaled + } +} + +laamp_decision_church_blessing_stress_loss_modifier = { + icon = piety_positive + stress_loss_mult = 0.1 + monthly_piety = 2 + life_expectancy = 5 + + scale = { + value = { + value = 0 + if = { + limit = { piety_level >= max_piety_level } + add = 5 + } + else_if = { + limit = { piety_level >= very_high_piety_level } + add = 4 + } + else_if = { + limit = { piety_level >= high_piety_level } + add = 3 + } + else_if = { + limit = { piety_level >= medium_piety_level } + add = 2 + } + else = { add = 1 } + } + desc = MODIFIER_DEFINITION_VALUE_BASED_ON_PIETY_LEVEL + display_mode = scaled + } +} + +laamp_decision_church_blessing_stress_gain_modifier = { + icon = piety_positive + stress_gain_mult = -0.1 + monthly_piety = 2 + life_expectancy = 5 + + scale = { + value = { + value = 0 + if = { + limit = { piety_level >= max_piety_level } + add = 5 + } + else_if = { + limit = { piety_level >= very_high_piety_level } + add = 4 + } + else_if = { + limit = { piety_level >= high_piety_level } + add = 3 + } + else_if = { + limit = { piety_level >= medium_piety_level } + add = 2 + } + else = { add = 1 } + } + desc = MODIFIER_DEFINITION_VALUE_BASED_ON_PIETY_LEVEL + display_mode = scaled + } +} + +ep3_exploited_weak_master_modifier = { + icon = economy_mixed + domain_tax_mult = 0.05 + domicile_build_speed = -0.33 + county_opinion_add = -10 + monthly_county_control_growth_factor = -0.2 +} + +emperor_repented_for_flaws_modifier = { + icon = piety_positive + monthly_piety_gain_mult = 0.1 + zealot_opinion = 15 +} + +ep3_loyal_troops_raid_modifier = { + icon = martial_positive + men_at_arms_recruitment_cost = -0.1 + maa_toughness_add = 2 +} + +ep3_loyal_troops_2_raid_modifier = { + icon = martial_positive + men_at_arms_recruitment_cost = -0.15 + maa_toughness_add = 4 +} + +ep3_loyal_troops_3_raid_modifier = { + icon = martial_positive + men_at_arms_recruitment_cost = -0.2 + maa_toughness_add = 6 +} + +ep3_loyal_troops_4_raid_modifier = { + icon = martial_positive + men_at_arms_recruitment_cost = -0.3 + maa_toughness_add = 8 +} + +ep3_loyal_troops_5_raid_modifier = { + icon = martial_positive + men_at_arms_recruitment_cost = -0.4 + maa_toughness_add = 10 +} + +ep3_peaceful_administrator_modifier = { + icon = signet_ring_mixed + county_opinion_add = 10 + development_growth_factor = 0.25 + domain_tax_mult = 0.25 + levy_size = -0.25 + men_at_arms_maintenance = 0.25 +} + +independent_administrator_modifier = { + icon = stewardship_mixed + fort_level = 1 + vassal_tax_contribution_mult = 0.1 + domicile_build_speed = -0.1 + liege_opinion = -20 +} + +ep3_neglecting_house_head_duties_modifier = { + icon = influence_mixed + monthly_influence_mult = 0.2 + dynasty_house_opinion = -10 + liege_opinion = -5 + domicile_build_speed = 0.15 +} + +### RESTORE ROME MODIFIERS + +restore_rome_devastated_county_opinion_modifier = { + icon = county_modifier_opinion_negative + county_opinion_add = -75 +} + +restore_rome_lowered_county_opinion_modifier = { + icon = county_modifier_opinion_negative + county_opinion_add = -40 +} + +restore_rome_recuperated_county_opinion_modifier = { + icon = county_modifier_opinion_positive + county_opinion_add = 10 +} + +### END RESTORE ROME + +ep3_foraged_plants = { + icon = health_positive + health = 0.25 + negate_health_penalty_add = 0.25 +} + +ep3_tuition_paid = { + icon = prestige_positive + monthly_prestige_gain_mult = 0.15 + monthly_lifestyle_xp_gain_mult = 0.05 +} + +ep3_from_far_and_wide = { + icon = prestige_positive + monthly_prestige_gain_mult = 0.15 + different_culture_opinion = 15 + travel_danger = -4 +} + +ep3_refreshed_and_relaxed = { + icon = learning_positive + stress_gain_mult = -0.2 + learning = 1 +} + +ep3_pushed_too_hard = { + icon = health_negative + health = -0.15 + stress_gain_mult = 0.1 +} + +ep3_star_crossed_modifier = { + icon = magic_negative + courting_scheme_phase_duration_add = minor_scheme_phase_duration_malus_value + stress_gain_mult = 0.05 +} + +ep3_reunited_modifier = { + icon = love_positive + stress_gain_mult = -0.05 + health = 0.1 + diplomacy = 1 +} + +ep3_famous_connections_modifier = { + icon = love_mixed + stress_gain_mult = 0.15 + intrigue = 1 + courtier_and_guest_opinion = 15 +} + +ep3_quality_control_modifier = { + icon = diplomacy_positive + monthly_prestige_gain_mult = 0.05 +} + +ep3_power_couple_modifier = { + icon = love_positive + health = 0.05 + stress_loss_per_prestige_level = 0.25 +} + +ep3_poets_salon_modifier = { + icon = camp_positive + tax_mult = 0.25 + development_growth_factor = 0.5 + county_opinion_add = 35 +} + +ep3_founded_salon_modifier = { + icon = letter_positive + monthly_prestige = 1 + monthly_lifestyle_xp_gain_mult = 0.25 + max_personal_schemes_add = 1 + monthly_income_mult = 0.02 +} + +ep3_friend_to_orphans = { + icon = family_positive + child_opinion = 45 + general_opinion = 5 +} + +ep3_healthy_orphanages_modifier = { + icon = county_modifier_opinion_positive + development_growth_factor = 0.1 + county_opinion_add = 25 +} + +ep3_tutoring_noblewoman_modifier = { + icon = learning_mixed + learning = -1 + diplomacy = -1 + independent_ruler_opinion = 15 +} + +ep3_focused_on_studies_modifier = { + icon = learning_positive + learning = 1 +} + +ep3_renounced_governorship = { + icon = intrigue_positive + intrigue = 3 + owned_hostile_scheme_success_chance_growth_add = 2 + owned_personal_scheme_success_chance_growth_add = 2 + owned_political_scheme_success_chance_growth_add = 2 + owned_scheme_secrecy_add = 10 +} + +ep3_renounced_governorship_merit = { + icon = learning_positive + monthly_learning_lifestyle_xp_gain_mult = 0.1 + confucian_education_xp_gain_mult = 0.25 + study_confucian_classics_scheme_phase_duration_add = -75 +} + +renounced_governorship_japan = { + icon = intrigue_positive + monthly_influence_mult = 0.15 + intrigue = 3 + owned_hostile_scheme_success_chance_growth_add = 2 + owned_personal_scheme_success_chance_growth_add = 2 + owned_political_scheme_success_chance_growth_add = 2 +} + +ep3_renounced_estate = { + icon = stress_positive + stress_loss_mult = 0.25 +} + +ep3_good_estate_modifier = { + icon = administrative_positive + monthly_income_mult = 0.1 + + scale = { + value = { + value = 0.1 + if = { + limit = { domicile ?= { has_domicile_building = estate_main_01 } } + add = 0.1 + } + else_if = { + limit = { domicile ?= { has_domicile_building = estate_main_02 } } + add = 0.2 + } + else_if = { + limit = { domicile ?= { has_domicile_building = estate_main_03 } } + add = 0.5 + } + else_if = { + limit = { domicile ?= { has_domicile_building = estate_main_04 } } + add = 1 + } + else_if = { + limit = { domicile ?= { has_domicile_building = estate_main_05 } } + add = 1.5 + } + min = 0.1 + } + desc = MODIFIER_DEFINITION_VALUE_PER_ESTATE_BUILDING + display_mode = scaled + } +} + +ep3_extra_security_modifier = { + icon = intrigue_positive + enemy_hostile_scheme_success_chance_add = -10 +} + +ep3_no_secrets_modifier = { + icon = intrigue_positive + owned_scheme_secrecy_add = 10 +} + +ep3_boost_efficiency_modifier = { + icon = administrative_positive + stacking = yes +} + +ep3_damage_efficiency_modifier = { + icon = administrative_negative + stacking = yes +} + +ep3_well_rested_modifier = { + icon = health_positive + health = 1 +} + +ep3_tunnel_investigation_modifier = { + icon = intrigue_positive + enemy_hostile_scheme_success_chance_add = -10 +} + +ep3_tunnel_prison_modifier = { + icon = dread_positive + dread_gain_mult = 0.5 +} + +ep3_tunnel_servants_modifier = { + icon = intrigue_positive + hostile_scheme_phase_duration_add = minor_scheme_phase_duration_bonus_value + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_malus_value +} + +laamp_decision_exotic_story_diplomacy_gain_modifier = { + icon = diplomacy_positive + diplomacy = 1 + + scale = { + value = { + value = 0 + if = { + limit = { diplomacy < extremely_high_skill_rating } + add = 1 + } + if = { + limit = { diplomacy < very_high_skill_rating } + add = 1 + } + if = { + limit = { diplomacy < high_skill_rating } + add = 1 + } + if = { + limit = { diplomacy < medium_skill_rating } + add = 1 + } + if = { + limit = { diplomacy < average_skill_rating } + add = 1 + } + if = { + limit = { diplomacy < low_skill_rating } + add = 1 + } + } + } +} + +laamp_decision_exotic_story_martial_gain_modifier = { + icon = martial_positive + martial = 1 + + scale = { + value = { + value = 0 + if = { + limit = { martial < extremely_high_skill_rating } + add = 1 + } + if = { + limit = { martial < very_high_skill_rating } + add = 1 + } + if = { + limit = { martial < high_skill_rating } + add = 1 + } + if = { + limit = { martial < medium_skill_rating } + add = 1 + } + if = { + limit = { martial < average_skill_rating } + add = 1 + } + if = { + limit = { martial < low_skill_rating } + add = 1 + } + } + } +} + +laamp_decision_exotic_story_stewardship_gain_modifier = { + icon = stewardship_positive + stewardship = 1 + + scale = { + value = { + value = 0 + if = { + limit = { stewardship < extremely_high_skill_rating } + add = 1 + } + if = { + limit = { stewardship < very_high_skill_rating } + add = 1 + } + if = { + limit = { stewardship < high_skill_rating } + add = 1 + } + if = { + limit = { stewardship < medium_skill_rating } + add = 1 + } + if = { + limit = { stewardship < average_skill_rating } + add = 1 + } + if = { + limit = { stewardship < low_skill_rating } + add = 1 + } + } + } +} + +laamp_decision_exotic_story_intrigue_gain_modifier = { + icon = intrigue_positive + intrigue = 1 + + scale = { + value = { + value = 0 + if = { + limit = { intrigue < extremely_high_skill_rating } + add = 1 + } + if = { + limit = { intrigue < very_high_skill_rating } + add = 1 + } + if = { + limit = { intrigue < high_skill_rating } + add = 1 + } + if = { + limit = { intrigue < medium_skill_rating } + add = 1 + } + if = { + limit = { intrigue < average_skill_rating } + add = 1 + } + if = { + limit = { intrigue < low_skill_rating } + add = 1 + } + } + } +} + +laamp_decision_exotic_story_learning_gain_modifier = { + icon = learning_positive + learning = 1 + + scale = { + value = { + value = 0 + if = { + limit = { learning < extremely_high_skill_rating } + add = 1 + } + if = { + limit = { learning < very_high_skill_rating } + add = 1 + } + if = { + limit = { learning < high_skill_rating } + add = 1 + } + if = { + limit = { learning < medium_skill_rating } + add = 1 + } + if = { + limit = { learning < average_skill_rating } + add = 1 + } + if = { + limit = { learning < low_skill_rating } + add = 1 + } + } + } +} + +ep3_head_of_opposition_modifier = { + icon = intrigue_positive + glory_hound_opinion = 25 + monthly_prestige_gain_mult = 0.2 + hostile_scheme_phase_duration_add = -3 + maa_damage_mult = 0.2 + same_culture_mercenary_hire_cost_mult = -0.2 +} + +contented_governing_countrymen_modifier = { + icon = social_positive + same_culture_opinion = 10 +} + +ep3_face_of_empire_modifier = { + icon = martial_positive + men_at_arms_maintenance = -0.1 + revolting_siege_morale_loss_mult = 0.25 +} + +ep3_anxious_for_new_assignment_modifier = { + icon = administrative_mixed + monthly_county_control_growth_factor = -0.25 + monthly_influence_mult = 0.5 + intrigue_per_influence_level = 1 + diplomacy_per_influence_level = 1 + development_growth_factor = -0.25 + county_opinion_add = -10 +} + +ep3_invested_in_power_center_modifier = { + icon = administrative_positive + monthly_income = 0.2 +} + +ep3_cosmopolitan_domicile_modifier = { + icon = administrative_positive + domicile_build_gold_cost = -0.2 + domicile_build_speed = -0.2 +} + +ep3_ignoring_realm_decline_modifier = { + icon = administrative_mixed + stress_loss_mult = 0.25 + parochial_opinion = -20 + courtly_opinion = 20 +} + +ep3_supply_issues_modifier = { + icon = food_negative + provisions_loss_mult = 0.05 + courtier_and_guest_opinion = -10 +} + +ep3_priest_friend_same_modifier = { + icon = piety_positive + same_faith_opinion = 10 + clergy_opinion = 10 + monthly_piety_gain_mult = 0.1 +} + +ep3_priest_friend_different_modifier = { + icon = piety_mixed + same_faith_opinion = -10 + clergy_opinion = -10 + faith_conversion_piety_cost_mult = -0.25 + different_faith_opinion = 15 +} + +ep3_inflexible_worshipper_modifier = { + icon = piety_mixed + different_faith_opinion = -20 + zealot_opinion = 15 +} + +ep3_ungodly_hospitality_modifier = { + icon = piety_negative + same_faith_opinion = -5 + clergy_opinion = -5 + monthly_piety_gain_mult = -0.1 +} + +ep3_rested_and_refreshed_modifier = { + icon = health_positive + health = 0.25 + prowess = 1 + stress_gain_mult = -0.15 +} + +ep3_cricked_neck_modifier = { + icon = health_negative + health = -0.15 + prowess = -2 + stress_gain_mult = 0.05 +} + +ep3_friend_to_old_soldiers_modifier = { + icon = martial_positive + martial = 1 + monthly_prestige_gain_mult = 0.05 +} + +ep3_expanded_culinary_horizons_modifier = { + icon = food_positive + stress_gain_mult = -0.05 + provisions_gain_mult = 0.1 + provisions_capacity_mult = 0.25 +} + +ep3_new_tastes_modifier = { + icon = food_positive + stress_gain_mult = -0.1 + prowess = 1 +} + +ep3_new_tastes_cannibal_modifier = { + icon = food_mixed + stress_gain_mult = -0.75 + courtier_and_guest_opinion = -20 +} + +ep3_knight_of_the_swan_house_modifier = { + icon = bird_positive + monthly_prestige_gain_per_knight_mult = 0.01 + tourney_participant_xp_gain_mult = 0.2 + accolade_glory_gain_mult = 0.1 +} + +ep3_courteous_knight_modifier = { + icon = fertility_positive + attraction_opinion = 20 + courting_scheme_phase_duration_add = major_scheme_phase_duration_bonus_value +} + +ep3_valiant_knight_modifier = { + icon = county_modifier_opinion_positive + barons_and_minor_landholders_opinion = 20 + parochial_opinion = 5 + barons_and_minor_landholders_tax_contribution_mult = 0.1 + parochial_tax_contribution_mult = 0.05 +} + +ep3_black_sheep = { + icon = dread_mixed + dread_baseline_add = 10 + dread_gain_mult = 0.25 + enemy_hostile_scheme_phase_duration_add = medium_scheme_phase_duration_bonus_value +} + +ep3_estate_raided_modifier = { + icon = flame_negative + domicile_build_speed = 0.25 + domicile_monthly_gold_mult = -0.25 +} + +ep3_manor_raided_modifier = { # Same as above, different loc only + icon = flame_negative + domicile_build_speed = 0.25 + domicile_monthly_gold_mult = -0.25 +} + +ep3_comfortable_bed_modifier = { + icon = health_positive + health = 0.2 + stress_gain_mult = -0.1 + provisions_capacity_mult = 0.25 +} + +ep3_well_guided_modifier = { + icon = travel_positive + provisions_gain_mult = 0.1 + travel_danger = -5 + character_travel_safety_mult = 0.1 +} + +ep3_sketchy_guides_modifier = { + icon = travel_negative + travel_danger = 15 + character_travel_safety_mult = -0.1 +} +ep3_ingratiated_family_modifier = { + icon = influence_positive + monthly_influence_mult = 0.05 + stacking = yes +} +ep3_recently_mentored_governor = { + icon = administrative_positive + stewardship = 1 + monthly_influence_mult = 0.1 +} +ep3_lust_for_land_modifier = { + icon = prestige_positive + siege_phase_time = -0.1 + martial = 1 +} + +ep3_administrative_outsider_modifier = { + icon = administrative_negative + fellow_vassal_opinion = -15 + vassal_opinion = -15 + liege_opinion = -15 +} + +ep3_separatist_uprising = { + icon = martial_positive + siege_phase_time = -0.5 + maa_damage_mult = 0.1 +} + +ep3_master_todor_modifier = { + icon = prestige_positive + monthly_prestige = 0.5 +} + +strong_sow_discord_modifier = { + icon = county_modifier_opinion_negative + stacking = yes + county_opinion_add = -5 +} +normal_sow_discord_modifier = { + icon = county_modifier_opinion_negative + stacking = yes + county_opinion_add = -2 +} +weak_sow_discord_modifier = { + icon = county_modifier_opinion_negative + stacking = yes + county_opinion_add = -1 +} +ep3_chariot_race_strong_appeasement_modifier = { + icon = county_modifier_opinion_positive + stacking = yes + county_opinion_add = 10 +} +ep3_chariot_race_weak_appeasement_modifier = { + icon = county_modifier_opinion_positive + stacking = yes + county_opinion_add = 5 +} +united_political_agents_modifier = { + icon = intrigue_mixed + hostile_scheme_phase_duration_add = -5 + liege_opinion = -10 +} + +ep3_master_of_ceremonies = { + icon = camp_positive + stress_gain_mult = -0.15 + courtier_and_guest_opinion = 15 + monthly_prestige_gain_mult = 0.15 + provisions_gain_mult = 0.15 + domicile_build_speed = -0.15 +} + +ep3_uneasy_modifier = { + icon = stress_negative + stress_gain_mult = 0.05 + health = -0.05 +} + +ep3_sensible_provisions = { + icon = camp_mixed + provisions_capacity_mult = 0.1 + courtier_and_guest_opinion = -5 + stress_gain_mult = 0.05 +} + +ep3_life_of_the_party = { + icon = camp_positive + courtier_and_guest_opinion = 10 + stress_loss_mult = 0.15 +} + +ep3_warm_and_content = { + icon = camp_positive + stress_loss_mult = 0.2 + health = 0.25 +} + +ep3_foreign_affairs_modifier = { + icon = diplomacy_positive + diplomacy = 1 + provisions_capacity_mult = 0.15 + character_travel_speed_mult = 0.15 +} + +ep3_the_restful_modifier = { + icon = stress_mixed + stress_gain_mult = -0.2 + monthly_lifestyle_xp_gain_mult = -0.1 +} + +ep3_harried_modifier = { + icon = county_modifier_development_negative + development_decline = -0.25 +} + +#ep3_the_conqueror_modifier = { +# icon = signet_ring_mixed +# anglo_saxon_opinion = -45 +# county_opinion_add = -15 +# minority_different_culture_opinion = -30 +# monthly_county_control_growth_add = 0.5 +# monthly_dread = 0.2 +#} + +ep3_dangerous_fenland_modifier = { + icon = county_modifier_development_negative + travel_danger = 25 + monthly_county_control_decline_add = -0.5 + county_opinion_add = -5 +} + +ep3_plundered_modifier = { + icon = county_modifier_development_negative + tax_mult = -0.05 +} + +ep3_hereward_caution_modifier = { + icon = county_modifier_development_mixed + domicile_build_speed = 0.15 + domicile_build_gold_cost = -0.1 +} + +all_crops_burned = { + icon = county_modifier_development_negative + development_decline_factor = 0.2 + development_decline = -0.05 +} + +crops_burned = { + icon = county_modifier_development_negative + development_decline_factor = 0.1 +} + +crop_levy = { + icon = county_modifier_development_mixed + tax_mult = 0.1 + county_opinion_add = -10 +} + +ep3_gnr_guards_modifier = { + icon = county_modifier_development_positive + travel_danger = -15 + development_growth_factor = 0.1 + county_opinion_add = 5 + levy_reinforcement_rate = 0.2 +} + +ep3_gnr_modifier = { + icon = county_modifier_development_positive + travel_danger = -10 + development_growth_factor = 0.05 + levy_reinforcement_rate = 0.1 +} + +ep3_gnr_negative_modifier = { + icon = county_modifier_development_negative + travel_danger = 15 + levy_reinforcement_rate = -0.15 +} + +ep3_honourable_jailor_modifier = { + icon = prestige_positive + courtly_opinion = 15 + monthly_prestige_gain_mult = 0.1 + hostile_scheme_phase_duration_add = -1 +} + +ep3_resettled_village = { + icon = county_modifier_development_negative + development_decline = -1 + levy_size = -0.75 + supply_limit_mult = -0.75 + tax_mult = -0.1 +} + +ep3_population_boost = { + icon = county_modifier_development_mixed + development_growth = 0.1 + levy_size = 0.15 + supply_limit_mult = 0.15 + county_opinion_add = -5 +} + +ep3_smouldering_village = { + icon = flame_negative + development_growth = -0.1 + county_opinion_add = -10 + holding_build_speed = 0.25 +} + +ep3_church_bereft = { + icon = piety_negative + build_piety_cost = 0.25 + monthly_county_control_growth_add = -0.25 + tax_mult = -0.1 +} + +ep3_man_of_god = { + icon = piety_positive + monthly_piety_gain_mult = 0.15 + clergy_opinion = 15 + monthly_prestige_gain_mult = 0.1 +} + +ep3_missing_supplies = { + icon = martial_negative + levy_reinforcement_rate = -0.15 + levy_size = -0.15 + garrison_size = -0.25 +} + +ep3_redistributed_equipment = { + icon = martial_positive + men_at_arms_recruitment_cost = -0.5 + men_at_arms_maintenance = -0.5 +} + +ep3_stolen_equipment = { + icon = martial_positive + knight_effectiveness_mult = 0.25 + maa_damage_mult = 0.15 +} + +ep3_sabotaged_roads = { + icon = county_modifier_development_negative + travel_danger = 10 +} + +ep3_delayed_supplies = { + icon = martial_negative + levy_reinforcement_rate = -0.05 + levy_size = -0.05 + garrison_size = -0.15 +} + +ep3_defender_of_families = { + icon = prestige_positive + parochial_opinion = 20 + knight_effectiveness_mult = 0.1 + prowess_per_piety_level = 1 +} + +ep3_paid_grains = { + icon = county_modifier_development_positive + development_growth_factor = 0.1 + county_opinion_add = 20 + epidemic_resistance = 2 +} + +ep3_innovative_farming_techniques = { + icon = county_modifier_development_positive + tax_mult = 0.05 + development_growth_factor = 0.1 +} + +ep3_surplus_manpower = { + icon = county_modifier_development_positive + development_growth_factor = 0.15 + levy_size = 0.3 +} + +ep3_counties_restless_modifier = { + icon = county_modifier_opinion_negative + county_opinion_add = -20 + monthly_county_control_growth_add = -0.5 +} +ep3_requested_faith_support_modifier = { + icon = influence_positive + monthly_influence_mult = 0.2 +} + +ep3_murderers_loose = { + icon = county_modifier_opinion_negative + county_opinion_add = -25 + supply_limit_mult = -0.2 +} + +ep3_responsible_with_money = { + icon = stewardship_positive + stewardship = 1 + domicile_monthly_gold_mult = 0.1 +} + +ep3_standing_alone_modifier = { + icon = camp_positive + provisions_capacity_mult = 0.1 + provisions_gain_mult = 0.1 + domicile_build_speed = -0.1 + monthly_prestige_gain_per_knight_mult = 0.01 +} + +ep3_disgruntled_vassals_modifier = { + icon = county_modifier_opinion_mixed + hostile_scheme_phase_duration_add = -25 + vassal_opinion = -10 +} + +ep3_life_threatened_modifier = { + icon = stress_negative + stress_gain_mult = 0.2 + short_reign_duration_mult = 0.5 +} + +ep3_impassioned_populace_modifier = { + icon = stewardship_negative + tax_mult = -0.1 + development_growth_factor = -0.1 + county_opinion_add = -40 +} + +ep3_expanded_power_base_minor_modifier = { + icon = administrative_positive +} +ep3_expanded_power_base_medium_modifier = { + icon = administrative_positive +} +ep3_expanded_power_base_major_modifier = { + icon = administrative_positive +} + +egregious_trading_rights_modifier = { + icon = county_modifier_development_negative + development_growth_factor = -0.25 + tax_mult = -0.1 +} + +greek_spoils_imports_modifier = { + icon = county_modifier_development_positive + development_growth_factor = 0.75 + tax_mult = 0.25 +} + +ep3_harassed_at_sea_modifier = { + icon = compass_negative + embarkation_cost_mult = 1 + naval_movement_speed_mult = -0.5 +} + +ascendant_byz_reclaimant_ortho_modifier = { + icon = byzantine_eagle_positive + stacking = yes + legitimacy_gain_mult = 0.05 + same_faith_opinion = 5 + monthly_influence_mult = 0.05 + hostage_prestige_mult = 0.1 + development_growth_factor = 0.05 + court_grandeur_baseline_add = 5 +} + +ascendant_byz_reclaimant_modifier = { + icon = byzantine_eagle_positive + stacking = yes + legitimacy_gain_mult = 0.05 + monthly_influence_mult = 0.05 + hostage_prestige_mult = 0.05 + development_growth_factor = 0.05 + court_grandeur_baseline_add = 5 +} + +ep3_clumsy_rescuer_modifier = { + icon = intrigue_negative + intrigue = -1 + general_opinion = -5 +} + +ep3_under_suspicion_modifier = { + icon = intrigue_negative + intrigue = -1 + dynasty_opinion = -10 + stress_gain_mult = 0.1 +} + +#latin_emp_simp_modifier = { +# icon = byzantine_eagle_mixed +# vassal_opinion = -25 +# greek_opinion = 25 +# knight_effectiveness_mult = -0.25 +# maa_damage_mult = -0.25 +#} + +ep3_fireside_chat_modifier_1 = { + icon = camp_positive + martial = 1 + diplomacy = 1 + stewardship = 1 + intrigue = 1 + learning = 1 +} + +ep3_fireside_chat_modifier_2 = { + icon = camp_positive + martial = 2 + diplomacy = 2 + stewardship = 2 + intrigue = 2 + learning = 2 +} + +ep3_fireside_chat_modifier_3 = { + icon = camp_positive + martial = 3 + diplomacy = 3 + stewardship = 3 + intrigue = 3 + learning = 3 +} + +#ep3_culturally_greek_modifier = { +# icon = byzantine_eagle_positive +# greek_opinion = 20 +# different_culture_opinion = 10 +# learning = 1 +#} + +ep3_fireside_chat_stewardship = { + icon = stewardship_positive + stewardship = 3 +} + +ep3_fireside_chat_martial = { + icon = martial_positive + martial = 3 +} + +ep3_fireside_chat_learning = { + icon = learning_positive + learning = 3 +} + +ep3_fireside_chat_diplomacy = { + icon = stewardship_positive + diplomacy = 3 +} + +ep3_fireside_chat_intrigue = { + icon = intrigue_positive + intrigue = 3 +} + +ep3_camp_party_sad_lonesome = { + icon = stress_negative + stress_gain_mult = 0.1 + stress_loss_mult = -0.1 +} + +ep3_camp_party_shadows_in_the_dark = { + icon = stress_mixed + stress_gain_mult = 0.2 + stress_loss_mult = -0.2 + intrigue_per_stress_level = 1 +} + +camp_party_fortress_of_solitude = { + icon = stress_positive + stress_gain_mult = -0.2 + stress_loss_mult = 0.2 +} + +unflappable_boudoir_confidence_modifier = { + icon = fertility_mixed + fertility = 0.2 + attraction_opinion = 10 + glory_hound_opinion = 10 + courtly_opinion = -10 + parochial_opinion = -10 +} + +possessed_by_lust_demon_modifier = { + icon = fertility_positive + fertility = 0.1 +} diff --git a/common/on_action/army_on_actions.txt b/common/on_action/army_on_actions.txt index 5c64279f..55d1a9c2 100644 --- a/common/on_action/army_on_actions.txt +++ b/common/on_action/army_on_actions.txt @@ -279,91 +279,91 @@ on_county_occupied = { } } # Mongol Devastation - if = { - limit = { - # Check that it's relevant so we don't fire it *all* the time - OR = { - AND = { - exists = global_var:mongol_empire_has_spawned - NOT = { exists = global_var:mongol_story_has_ended } - any_owned_story = { - type = story_mongol_invasion - } - } - any_owned_story = { - type = story_greatest_of_khans - } - } - NOT = { exists = scope:county.var:looted_by_mongols } - } - # Each County should only be devastated once - scope:county = { - set_variable = { - name = looted_by_mongols - value = yes - years = 25 - } - } - # Send a message (and gold!) to the Mongol Emperor - send_interface_message = { - type = event_war_good - title = mongols_sieged_county.t - left_icon = scope:previous_controller - right_icon = scope:county - #Herd from nomad counties if nomadic - if = { - limit = { - scope:county = { - any_county_province = { - OR = { - has_holding_type = nomad_holding - has_holding_type = herder_holding - } - } - } - government_has_flag = government_is_nomadic - } - domicile = { - change_herd = miniscule_herd_gain - } - } - else = { - if = { - limit = { - scope:county.development_level >= 1 - } - add_gold = { - add = scope:county.development_level - multiply = 5 - } - } - } - if = { - limit = { - dread < 150 - } - add_dread = 2 - } - show_as_tooltip = { - scope:county = { - mongols_devastate_county_effect = yes - } - } - } - save_scope_as = mongol_emperor - # Send a message to the County's owner - scope:county.holder = { - send_interface_message = { - type = event_war_bad - title = mongols_sieged_county.t - left_icon = scope:mongol_emperor - right_icon = scope:county - scope:county = { - mongols_devastate_county_effect = yes - } - } - } - } +# if = { +# limit = { +# # Check that it's relevant so we don't fire it *all* the time +# OR = { +# AND = { +# exists = global_var:mongol_empire_has_spawned +# NOT = { exists = global_var:mongol_story_has_ended } +# any_owned_story = { +# type = story_mongol_invasion +# } +# } +# any_owned_story = { +# type = story_greatest_of_khans +# } +# } +# NOT = { exists = scope:county.var:looted_by_mongols } +# } +# # Each County should only be devastated once +# scope:county = { +# set_variable = { +# name = looted_by_mongols +# value = yes +# years = 25 +# } +# } +# # Send a message (and gold!) to the Mongol Emperor +# send_interface_message = { +# type = event_war_good +# title = mongols_sieged_county.t +# left_icon = scope:previous_controller +# right_icon = scope:county +# #Herd from nomad counties if nomadic +# if = { +# limit = { +# scope:county = { +# any_county_province = { +# OR = { +# has_holding_type = nomad_holding +# has_holding_type = herder_holding +# } +# } +# } +# government_has_flag = government_is_nomadic +# } +# domicile = { +# change_herd = miniscule_herd_gain +# } +# } +# else = { +# if = { +# limit = { +# scope:county.development_level >= 1 +# } +# add_gold = { +# add = scope:county.development_level +# multiply = 5 +# } +# } +# } +# if = { +# limit = { +# dread < 150 +# } +# add_dread = 2 +# } +# show_as_tooltip = { +# scope:county = { +# mongols_devastate_county_effect = yes +# } +# } +# } +# save_scope_as = mongol_emperor +# # Send a message to the County's owner +# scope:county.holder = { +# send_interface_message = { +# type = event_war_bad +# title = mongols_sieged_county.t +# left_icon = scope:mongol_emperor +# right_icon = scope:county +# scope:county = { +# mongols_devastate_county_effect = yes +# } +# } +# } +# } # Admin house power bonus for getting influence if = { limit = { @@ -789,7 +789,7 @@ on_raid_action_completion = { raiding.0013 # Chance to kidnap prisoners raiding.0014 # Chance to steal an artifact bp2_yearly.8031 # Steal a doll - raiding.0031 # Hereward adds XP +# raiding.0031 # Hereward adds XP raiding.0040 # Raid Intent Effects } effect = { diff --git a/common/on_action/dlc/ep3/el_cid_story_cycle_on_action.txt b/common/on_action/dlc/ep3/el_cid_story_cycle_on_action.txt new file mode 100644 index 00000000..8b78f3b3 --- /dev/null +++ b/common/on_action/dlc/ep3/el_cid_story_cycle_on_action.txt @@ -0,0 +1,34 @@ +###################################################### +#### +#### El Cid Story Cycle On-Actions +#### +#### el_cid_landless_on_action +#### el_cid_landless_or_landed_on_action +#### +###################################################### +# +## Landless +#el_cid_landless_on_action = { +# random_events = { +# # No one opens the door to you +# 200 = cid.1000 +# # You have no money to pay your men +# 100 = cid.1010 +# # You have to leave your spouse/children behind +# 200 = cid.1020 +# } +#} +# +## Landless or Landed +#el_cid_landless_or_landed_on_action = { +# random_events = { +# # You have some money - send gift? +# 100 = cid.1030 +# # You pray for your liege +# 100 = cid.1040 +# # cid.2000 triggered from the combat on_action +# # cid.2001 triggered from the combat on_action +# # Your liege offers you a favourable marriage +# 250 = cid.2010 +# } +#} \ No newline at end of file diff --git a/common/on_action/dlc/ep3/harrying_of_the_north_on_action.txt b/common/on_action/dlc/ep3/harrying_of_the_north_on_action.txt new file mode 100644 index 00000000..0362db84 --- /dev/null +++ b/common/on_action/dlc/ep3/harrying_of_the_north_on_action.txt @@ -0,0 +1,42 @@ +##Events for William/Norman King of England +#ongoing_harrying_owner_events = { +# random_events = { +# chance_of_no_event = 90 +# delay = { days = { 60 90 } } +# +# 100 = ep3_story_cycle_harrying.1000 +# 100 = ep3_story_cycle_harrying.1005 +# 100 = ep3_story_cycle_harrying.1010 +# 100 = ep3_story_cycle_harrying.1015 +# } +#} +# +##Events for Anglo-Saxon lords in England +#ongoing_harrying_aetheling_events = { +# random_events = { +# chance_of_no_event = 90 +# delay = { days = { 60 90 } } +# +# 100 = ep3_story_cycle_harrying.2000 +# 100 = ep3_story_cycle_harrying.2005 +# 100 = ep3_story_cycle_harrying.2010 +# 100 = ep3_story_cycle_harrying.2015 +# } +#} +# +##Events specifically for Hereward the Wake +#ongoing_harrying_hereward_events = { +# random_events = { +# chance_of_no_event = 90 +# delay = { days = { 60 90 } } +# +# 100 = ep3_story_cycle_harrying.3000 +# 100 = ep3_story_cycle_harrying.3005 +# 100 = ep3_story_cycle_harrying.3010 +# 100 = ep3_story_cycle_harrying.3015 +# 100 = ep3_story_cycle_harrying.3020 +# 50 = ep3_story_cycle_harrying.3050 +# 100 = ep3_laamps.7001 +# } +#} +# \ No newline at end of file diff --git a/common/on_action/dlc/ep3/violet_poet_on_action.txt b/common/on_action/dlc/ep3/violet_poet_on_action.txt new file mode 100644 index 00000000..5b05e29c --- /dev/null +++ b/common/on_action/dlc/ep3/violet_poet_on_action.txt @@ -0,0 +1,18 @@ +##Events for Violet Poet +#ongoing_violet_poet_owner_events = { +# random_events = { +# chance_of_no_event = 50 +# delay = { days = { 40 80 } } +# +# 100 = ep3_story_cycle_violet_poet.1005% +# 100 = ep3_story_cycle_violet_poet.1010 +# 100 = ep3_story_cycle_violet_poet.1015 +# 100 = ep3_story_cycle_violet_poet.1020 +# 100 = ep3_story_cycle_violet_poet.1025 +# 100 = ep3_story_cycle_violet_poet.1030 +# +# #Ibn Zaydun chain +# 100 = ep3_story_cycle_violet_poet.2000 +# } +#} +# \ No newline at end of file diff --git a/common/on_action/fp2_on_actions.txt b/common/on_action/fp2_on_actions.txt new file mode 100644 index 00000000..30531c61 --- /dev/null +++ b/common/on_action/fp2_on_actions.txt @@ -0,0 +1,168 @@ +#fp2_lyonese_monk_events_cycle = { +# effect = { +# # Should things invalidate? +# if = { +# limit = { fp2_lyonese_monk_0000_valid_for_events_trigger = no } +# # Scope:acolyte has died or is no longer your courtier or vassal. +# if = { +# limit = { fp2_lyonese_monk_0000_out_of_realm_trigger = yes } +# trigger_event = fp2_lyonese_monk.0021 +# } +# # Your incarceration causes scope:acolyte to disappear - and the story along with HerHim. +# else_if = { +# limit = { fp2_lyonese_monk_0000_out_of_freedom_trigger = yes } +# trigger_event = fp2_lyonese_monk.0051 +# } +# # The destruction of the Papacy leaves little room in everyone's hearts for the minutiae of doctrine. +# else_if = { +# limit = { fp2_lyonese_monk_0000_out_of_popes_trigger = yes } +# trigger_event = fp2_lyonese_monk.0041 +# } +# # You or scope:acolyte are no longer the correct faith. +# else_if = { +# limit = { fp2_lyonese_monk_0000_out_of_faith_trigger = yes } +# trigger_event = fp2_lyonese_monk.0031 +# } +# } +# # If not, run the usual. +# else = { +# # Phase: Private Teachings +# ## Gateway event +# if = { +# limit = { scope:story.var:lm_phase_tally = 0 } +# trigger_event = fp2_lyonese_monk.0201 +# } +# ## Random events +# else_if = { +# limit = { +# scope:story.var:lm_phase_tally >= 1 +# scope:story.var:lm_phase_tally <= 3 +# } +# trigger_event = { on_action = fp2_lyonese_monk_events_phase_teachings_events } +# } +# ## Gateway event +# else_if = { +# limit = { scope:story.var:lm_phase_tally = 4 } +# trigger_event = fp2_lyonese_monk.0241 +# } +# # Phase: Public Controversy +# ## Gateway event +# else_if = { +# limit = { scope:story.var:lm_phase_tally = 5 } +# trigger_event = fp2_lyonese_monk.0401 +# } +# ## Random events +# else_if = { +# limit = { +# scope:story.var:lm_phase_tally >= 6 +# scope:story.var:lm_phase_tally <= 8 +# } +# trigger_event = { on_action = fp2_lyonese_monk_events_phase_controversy_events } +# } +# ## Gateway event +# else_if = { +# limit = { scope:story.var:lm_phase_tally = 9 } +# trigger_event = fp2_lyonese_monk.0441 +# } +# # Phase: Schism +# ## Gateway event +# else_if = { +# limit = { scope:story.var:lm_phase_tally = 10 } +# trigger_event = fp2_lyonese_monk.0601 +# } +# ## Random events +# else_if = { +# limit = { +# scope:story.var:lm_phase_tally >= 11 +# scope:story.var:lm_phase_tally <= 13 +# } +# trigger_event = { on_action = fp2_lyonese_monk_events_phase_schism_events } +# } +# ## Gateway event +# else = { trigger_event = fp2_lyonese_monk.0641 } +# } +# } +#} +# +#fp2_lyonese_monk_events_phase_teachings_events = { +# random_events = { +# 100 = fp2_lyonese_monk.0211 +# 100 = fp2_lyonese_monk.0221 +# 100 = fp2_lyonese_monk.0231 +# } +# fallback = fp2_lyonese_monk_events_cycle_no_valid_events_fallback +#} +# +#fp2_lyonese_monk_events_phase_controversy_events = { +# random_events = { +# 100 = fp2_lyonese_monk.0411 +# 100 = fp2_lyonese_monk.0421 +# 100 = fp2_lyonese_monk.0431 +# } +# fallback = fp2_lyonese_monk_events_cycle_no_valid_events_fallback +#} +# +#fp2_lyonese_monk_events_phase_schism_events = { +# random_events = { +# 100 = fp2_lyonese_monk.0611 +# 100 = fp2_lyonese_monk.0621 +# 100 = fp2_lyonese_monk.0631 +# } +# fallback = fp2_lyonese_monk_events_cycle_no_valid_events_fallback +#} +# +#fp2_lyonese_monk_events_cycle_no_valid_events_fallback = { +# effect = { +# # Should things invalidate? +# if = { +# limit = { fp2_lyonese_monk_0000_valid_for_events_trigger = no } +# # Scope:acolyte has died or is no longer your courtier or vassal. +# if = { +# limit = { fp2_lyonese_monk_0000_out_of_realm_trigger = yes } +# trigger_event = fp2_lyonese_monk.0021 +# } +# # Your incarceration causes scope:acolyte to disappear - and the story along with HerHim. +# else_if = { +# limit = { fp2_lyonese_monk_0000_out_of_freedom_trigger = yes } +# trigger_event = fp2_lyonese_monk.0051 +# } +# # The destruction of the Papacy leaves little room in everyone's hearts for the minutiae of doctrine. +# else_if = { +# limit = { fp2_lyonese_monk_0000_out_of_popes_trigger = yes } +# trigger_event = fp2_lyonese_monk.0041 +# } +# # You or scope:acolyte are no longer the correct faith. +# else_if = { +# limit = { fp2_lyonese_monk_0000_out_of_faith_trigger = yes } +# trigger_event = fp2_lyonese_monk.0031 +# } +# } +# # If not, run the usual. +# else = { +# # Increment the incident tally by 1 if we're not at a cap event. +# if = { +# limit = { +# NOR = { +# scope:story.var:lm_phase_tally = 0 +# scope:story.var:lm_phase_tally = 4 +# scope:story.var:lm_phase_tally = 5 +# scope:story.var:lm_phase_tally = 9 +# scope:story.var:lm_phase_tally = 10 +# } +# } +# scope:story = { +# change_variable = { +# name = lm_phase_tally +# add = 1 +# } +# } +# } +# # Run the cycle again. +# trigger_event = { +# on_action = fp2_lyonese_monk_events_cycle +# months = { 2 5 } +# } +# } +# } +#} +# \ No newline at end of file diff --git a/common/on_action/knight_on_actions.txt b/common/on_action/knight_on_actions.txt new file mode 100644 index 00000000..771b2c04 --- /dev/null +++ b/common/on_action/knight_on_actions.txt @@ -0,0 +1,74 @@ +# On actions for knight events, triggered automatically by the game + +# Called for commanders when combat ends +# root is the commander +# scope:combat_side is the side of combat the commander is on +# scope:victory is whether the commander's side won + +on_commander_combat_finished = { + trigger = { + scope:victory = no + } + + events = { + # DISABLED as how this is handled is undergoing a rework. + #commanders.0011 # Commander captured after combat. + } +} + +# called on every unique owner of an army on combat end +# root is the owning character +# scope:combat_side is the side of combat the commander is on +# scope:victory is whether the commander's side won +# commanders is a list of all commanders in the combat +# knights is a list of all knights in the combat +on_army_combat_finished = { + +} + +# Used for handling the Varangian guard +varangian_ongoing = { + trigger = { + has_character_flag = is_currently_varangian + } + effect = { + + #Verify if the character became landed: in that case, remove the flag + if = { + limit = { + is_ruler = yes + } + remove_character_flag = is_currently_varangian + } + else = { + #debug_log = "Fired the varangian_ongoing pulse" + #debug_log_scopes = yes + change_variable = { # NOTE: Will *not* be relevant to non-delayed trigger evaluations for the events below + name = years_as_varangian + add = 1 + } + trigger_event = { + on_action = varangian_ongoing + days = { 340 380 } + } + } + } + random_events = { + 500 = 0 +# 500 = varangian.1001 # Return home +# 100 = varangian.2001 # Become Best Friends with another Varangian +# 100 = varangian.2002 # Become Lover with another Varangian +# 100 = varangian.2003 # Become Friends with a local ruler +# 100 = varangian.2004 # Become Rival with a local ruler +# 300 = varangian.2005 # Marry Lover +# 100 = varangian.2008 # Get wounded +# 100 = varangian.2011 # Get local Lover +# 200 = varangian.2012 # Increase Prowess +# 200 = varangian.2013 # Increase Martial +# 200 = varangian.2014 # Increase Learning +# 200 = varangian.2015 # Increase Diplomacy +# 50 = varangian.2016 # Become Brave +# 50 = varangian.2017 # Become Ambitious +# 50 = varangian.2018 # Become Diligent + } +} diff --git a/common/on_action/province_on_actions.txt b/common/on_action/province_on_actions.txt new file mode 100644 index 00000000..ac51fd54 --- /dev/null +++ b/common/on_action/province_on_actions.txt @@ -0,0 +1,875 @@ +# root: The province in which the building was completed +# scope:character: The character that paid for the construction, if available +on_building_completed = { + effect = { + #save the county holder as the character in case the construction wasn't started through GUI or by the AI + if = { + limit = { + NOT = { exists = scope:character } + } + root.county.holder = { + save_scope_as = character + } + } + root = { + # Preservation tenet + if = { + limit = { + scope:character.faith = { has_doctrine_parameter = building_temples_gives_development } + OR = { + has_holding_type = church_holding + has_holding_type = temple_citadel_holding + } + NOT = { county = { has_variable = dev_gain_cooldown } } + } + scope:character = { + send_interface_toast = { + title = building_temples_gives_development_toast + left_icon = root + root.county = { + change_development_progress_with_overflow = minor_development_progress_gain + set_variable = { + name = dev_gain_cooldown + value = yes + days = 365 + } + } + } + } + } + + # Hard working Tradition + if = { + limit = { + culture = { has_cultural_parameter = development_gain_on_building_complete } + NOT = { county = { has_variable = dev_gain_cooldown } } + } + county = { + change_development_progress_with_overflow = 25 + set_variable = { + name = dev_gain_cooldown + value = yes + days = 365 + } + } + } + + # Metal crafting Tradition + if = { + limit = { + culture = { has_cultural_parameter = prestige_gain_on_building_complete_in_mountains } + OR = { + terrain = mountains + terrain = desert_mountains + } + } + scope:character = { + if = { + limit = { + is_alive = yes + } + add_prestige = medium_prestige_value + } + } + } + + # Yashima + if = { + limit = { + culture = { has_cultural_parameter = prestige_gain_on_building_complete_in_mountains_forest } + OR = { + terrain = mountains + terrain = forest + } + } + scope:character = { + if = { + limit = { + is_alive = yes + } + add_prestige = medium_prestige_value + } + } + } + + # Sacred Mountains Tradition + if = { + limit = { + scope:character.culture = { has_cultural_parameter = piety_gain_on_building_complete_in_mountains } + OR = { + terrain = mountains + terrain = desert_mountains + } + } + scope:character = { + if = { + limit = { + is_alive = yes + } + add_piety = minor_piety_value + } + } + } + + # Sacred Groves Tradition + if = { + limit = { + scope:character.culture = { has_cultural_parameter = piety_gain_on_building_complete_in_forest_taiga } + OR = { + terrain = forest + terrain = taiga + terrain = jungle + } + } + scope:character = { + if = { + limit = { + is_alive = yes + } + add_piety = minor_piety_value + } + } + } + + # FP2 Dynasty perk + if = { + limit = { + has_holding_type = city_holding + exists = scope:character.dynasty + scope:character.dynasty = { + has_dynasty_perk = fp2_urbanism_legacy_4 + } + } + county = { + holder = { + if = { + limit = { + is_alive = yes + } + send_interface_toast = { + type = event_toast_effect_good + title = prestige_gained_from_building_completion + left_icon = root.barony + add_prestige = medium_prestige_gain + } + } + } + #### Chance to add super guest! + # Set variables + random = { + chance = 10 + modifier = { + add = county.development_level + } + set_variable = { + name = number_prestigious_new_guests + value = 1 + } + if = { + limit = { county.development_level >= max_development_level } + + set_variable = { + name = holding_quality + value = 3 + } + } + else_if = { + limit = { county.development_level >= great_development_level } + set_variable = { + name = holding_quality + value = 3 + } + } + else_if = { + limit = { county.development_level >= good_development_level } + set_variable = { + name = holding_quality + value = 2 + } + } + else_if = { + limit = { county.development_level >= medium_development_level } + set_variable = { + name = holding_quality + value = 2 + } + } + else_if = { + limit = { county.development_level >= bad_development_level } + set_variable = { + name = holding_quality + value = 1 + } + } + else = { + set_variable = { + name = holding_quality + value = 1 + } + } + } + + holder = { + # Trigger the hidden event + if = { + limit = { + is_alive = yes + } + trigger_event = fp2_other_decisions.0001 + } + } + } + } + + # Struggle parameters + if = { + limit = { + has_holding_type = castle_holding + scope:character = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = completing_building_in_castle_gives_development + } + } + } + county = { change_development_progress_with_overflow = 10 } + } + + if = { + limit = { + has_holding_type = church_holding + scope:character = { + any_character_struggle = { + involvement = involved + has_struggle_phase_parameter = completing_building_in_temple_gives_piety + } + } + } + scope:character = { add_piety = medium_piety_gain } + } + + # Struggle catalysts + if = { + limit = { + has_holding_type = castle_holding + scope:character = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_new_building_in_castle + } + } + } + scope:character = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_new_building_in_castle + character = scope:character + } + } + } + } + else_if = { + limit = { + has_holding_type = city_holding + scope:character = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_new_building_in_city + } + } + } + scope:character = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_new_building_in_city + character = scope:character + } + } + } + } + else_if = { + limit = { + has_holding_type = church_holding + scope:character = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_new_building_in_temple + } + } + } + scope:character = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_new_building_in_temple + character = scope:character + } + } + } + } + + if = { + limit = { + has_holding_type = church_holding + county.faith.religion = religion:islam_religion + scope:character = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_new_islamic_temple_construction + } + } + } + scope:character = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_new_islamic_temple_construction + character = scope:character + } + } + } + } + + if = { + limit = { + scope:character = { + any_character_struggle = { + involvement = involved + phase_has_catalyst = catalyst_new_building_in_holdings + } + } + } + scope:character = { + every_character_struggle = { + involvement = involved + activate_struggle_catalyst = { + catalyst = catalyst_new_building_in_holdings + character = scope:character + } + } + } + } + + # Points of Interest + # Apply them here directly so they are more promptly added than monthly via the POI update + if = { + limit = { + has_special_building = no + } + } + else_if = { + limit = { + OR = { + has_building_with_flag = { flag = travel_point_of_interest_martial } + has_building_with_flag = { flag = travel_point_of_interest_martial_minor } + } + NOT = { has_travel_point_of_interest = poi_special_buildings_martial } + } + add_travel_point_of_interest = poi_special_buildings_martial + } + else_if = { + limit = { + has_building_with_flag = { flag = travel_point_of_interest_learning } + NOT = { has_travel_point_of_interest = poi_special_buildings_learning } + } + add_travel_point_of_interest = poi_special_buildings_learning + } + else_if = { + limit = { + has_building_with_flag = { flag = travel_point_of_interest_religious } + NOT = { has_travel_point_of_interest = poi_special_buildings_religious } + } + add_travel_point_of_interest = poi_special_buildings_religious + } + else_if = { + limit = { + has_building_with_flag = { flag = travel_point_of_interest_diplomatic } + NOT = { has_travel_point_of_interest = poi_special_buildings_diplomatic } + } + add_travel_point_of_interest = poi_special_buildings_diplomatic + } + else_if = { + limit = { + has_building_with_flag = { flag = travel_point_of_interest_wonder } + NOT = { has_travel_point_of_interest = poi_special_buildings_wonder } + } + add_travel_point_of_interest = poi_special_buildings_wonder + } + else_if = { + limit = { + has_building_with_flag = { flag = travel_point_of_interest_economic } + NOT = { has_travel_point_of_interest = poi_special_buildings_economic } + } + add_travel_point_of_interest = poi_special_buildings_economic + } + + # The Builder event chain + if = { + limit = { + has_variable = the_builder_holding + NOT = { has_variable = the_builder_finished } + } + var:the_builder_holding = { save_scope_as = holding_initiator } + #Did the Builder actually finish the holding, or was it cancelled? + scope:holding_initiator = { + if = { + limit = { + is_alive = yes + is_landed_or_landless_administrative = yes + is_available = yes + } + #Then remove the safeguard event that would clean up the Builder + if = { + limit = { has_variable = the_builder_holding_cancelled_safeguard } + remove_variable = the_builder_holding_cancelled_safeguard + } + #And trigger reward event + trigger_event = bp2_yearly.1071 + } + } + set_variable = { name = the_builder_finished } + } + # Every time the Builder builds in their holding... + if = { + limit = { + scope:character ?= { + OR = { + has_character_modifier = the_city_builder_modifier + has_character_modifier = the_castle_builder_modifier + has_character_modifier = the_temple_builder_modifier + } + } + } + county = { change_development_progress = minor_development_progress_gain } + if = { + limit = { + scope:character ?= { has_character_modifier = the_city_builder_modifier } + } + scope:character = { add_gold = minor_gold_value } + } + if = { + limit = { + scope:character ?= { has_character_modifier = the_castle_builder_modifier } + } + scope:character = { add_prestige = minor_prestige_gain } + } + if = { + limit = { + scope:character ?= { has_character_modifier = the_temple_builder_modifier } + } + scope:character = { add_piety = minor_piety_gain } + } + } + #end any landless adventurer's construction task contract + if = { + limit = { + any_player = { + any_character_active_contract = { + task_contract_type = laamp_construction_contract + task_contract_employer = scope:character + save_temporary_scope_as = construction_contract + } + } + } + scope:construction_contract = { + if = { + limit = { + task_contract_taker.capital_province.county = root.county + } + complete_task_contract = success_critical + } + else = { + complete_task_contract = failure_standard + } + } + } + + # Inspection - Has Holding Modifier + if = { + limit = { + has_province_modifier = inspection_empty_lands_domain_modifier + } + remove_province_modifier = inspection_empty_lands_domain_modifier + add_random_economic_building_effect = yes + } + else_if = { + limit = { + has_province_modifier = inspection_empty_lands_border_modifier + } + remove_province_modifier = inspection_empty_lands_border_modifier + add_random_fortification_building_effect = yes + } + + # Admin - Governors get rewards for constructing buildings in governed counties + if = { + limit = { + scope:character = { + OR = { + is_governor = yes + AND = { + min_appointment_tier = tier_county + is_governor_or_admin_count = yes + } + tgp_is_any_minister = yes + } + } + } + scope:character = { + send_interface_message = { + type = msg_governor_duties + title = msg_governor_duties_t + desc = admin_construction_completed_desc + right_icon = root.barony + + if = { + limit = { + government_allows = merit + } + change_merit = building_construction_merit_gain_value + if = { + limit = { + tgp_is_any_minister = yes + government_has_flag = government_has_influence + } + change_influence = estate_construction_influence_gain_value + } + } + else = { + change_influence = estate_construction_influence_gain_value + } + if = { + limit = { + building_construction_dynasty_prestige_gain_value > 0 + } + dynasty = { + add_dynasty_prestige = building_construction_dynasty_prestige_gain_value + } + } + increase_governance_effect = { VALUE = 4 } + } + } + } + +# # Harrying of the North - Pacification Gain +# if = { +# limit = { +# scope:character.culture = culture:norman +# has_global_variable = harrying_of_the_north +# exists = global_var:harrying_of_the_north.story_owner.var:pacification +# } +# global_var:harrying_of_the_north.story_owner = { +# change_variable = { +# name = pacification +# add = 2 +# } +# } +# } + + # Devaraja consecration event + if = { + limit = { + OR = { + has_building_with_flag = { flag = temple_citadel } + has_building_with_flag = { flag = temple } + has_building_with_flag = { flag = mandala_capital_building } + } + NOT = { has_variable = mandala_consecrated_walls } + scope:character = { + is_available_for_activity_trigger = yes + government_has_flag = government_is_mandala + has_mandala_aspect_trigger = yes + } + } + scope:character = { + trigger_event = devaraja.0005 + } + set_variable = { + name = mandala_consecrated_walls + years = 30 + } + } + + # Brewery counter + brewery_counter_effect = yes + + # Coronation Promise + if = { + limit = { + scope:character = root.province_owner.liege + scope:character = { has_character_modifier = coronation_vassal_building_modifier } + } + scope:character = { + send_interface_toast = { + title = coronation_vassal_building_tt + left_icon = root + add_prestige = medium_prestige_gain + } + } + } + } + + ##################### + # Mandala Government + ##################### + + scope:character = { + if = { + limit = { government_has_flag = government_is_mandala } + if = { + limit = { + exists = house + house = { has_house_aspiration_parameter = aspect_of_creation } + } + mandala_upgrade_creator_effect = yes + house = { + increment_variable_effect = { + VAR = num_buildings_built + VAL = 1 + } + } + } + } + } + + # Building Oath + scope:character = { + if = { + limit = { + is_alive = yes + has_variable = stewardship_oath_2_buildings + } + change_variable = { + name = stewardship_oath_2_buildings + add = 1 + } + add_to_variable_list = { + name = stewardship_oath_2_building_list + target = root + } + } + } + } +} + +# root: The province in which the building was started +# scope:character: The character that paid for the construction, if available +on_building_started = { + effect = { + #save the county holder as the character in case the construction wasn't started through GUI or by the AI + if = { + limit = { + NOT = { exists = scope:character } + } + root.county.holder = { + save_scope_as = character + } + } + if = { + limit = { + OR = { + has_construction_with_flag = temple + has_construction_with_flag = castle + has_construction_with_flag = city + } + any_player = { + has_government = landless_adventurer_government + in_diplomatic_range = scope:character + can_create_task_contract = { + type_name = laamp_construction_contract + employer = scope:character + } + save_temporary_scope_as = player_laamp + } + } + scope:player_laamp = { + create_task_contract = { + task_contract_employer = scope:character + task_contract_type = laamp_construction_contract + task_contract_tier = scope:character.task_contract_tier_value + location = scope:character.capital_province + save_scope_as = new_contract + } + scope:new_contract = { + set_variable = { + name = task_contract_employer + value = scope:character + } + set_variable = { + name = task_contract_destination + value = root + } + } + } + } + if = { + limit = { + has_province_modifier = travel_extra_building_resources_modifier + } + if = { + limit = { + has_variable = extra_building_resources + var:extra_building_resources > 1 + } + change_variable = { + name = extra_building_resources + subtract = 1 + } + remove_province_modifier = travel_extra_building_resources_modifier + add_province_modifier = travel_extra_building_resources_modifier + } + else = { + remove_province_modifier = travel_extra_building_resources_modifier + remove_variable = extra_building_resources + } + } + } +} + +# root: The province in which the building was cancelled +# scope:character: The character that paid for the construction, if available +on_building_cancelled = { + effect = {} +} + +# root: The holder of the province doing the razing +# province: The province in which the holding exists +on_holding_razed = { + effect = { + scope:province.county = { set_variable = was_razed } + send_interface_toast = { + title = province_razed_toast_title + left_icon = scope:province.barony + add_gold = { + value = minor_gold_value + add = scope:province.county.development_level + } + scope:province = { + if = { + limit = { + this = county.title_province + county.development_level >= 1 + } + county = { + change_development_progress_with_overflow = { + value = scope:province.county.development_level + multiply = 10 + multiply = -1 + } + } + } + if = { + limit = { + this = county.title_province + county = { + uses_county_fertility = yes + } + } + county = { + change_county_fertility = medium_county_fertility_level_gain + } + } + if = { + limit = { + has_university_building_trigger = yes + } + if = { + limit = { + has_building_or_higher = generic_university + } + remove_building = generic_university + } + else_if = { + limit = { + has_building_or_higher = al_azhar_university + } + remove_building = al_azhar_university + } + else_if = { + limit = { + has_building_or_higher = sankore_university + } + remove_building = sankore_university + } + else_if = { + limit = { + has_building_or_higher = siena_university + } + remove_building = siena_university + } + else_if = { + limit = { + has_building_or_higher = nalanda_university + } + remove_building = nalanda_university + } + else_if = { + limit = { + has_building_or_higher = house_of_wisdom_01 + } + remove_building = house_of_wisdom_01 + } + else_if = { + limit = { + has_building_or_higher = al_qarawiyyin_university_01 + } + remove_building = al_qarawiyyin_university_01 + } + else_if = { + limit = { + has_building_or_higher = somapura_university_01 + } + remove_building = somapura_university_01 + } + else_if = { + limit = { + has_building_or_higher = cluny_abbey_01 + } + remove_building = cluny_abbey_01 + } + } + } + } + } +} + +# root: The holder of the province doing the rebuilding +# province: The province in which the great building exists +on_great_building_rebuilt = { + effect = { + add_piety_experience = { + add = minor_piety_gain + multiply = piety_level + } + hidden_effect = { + if = { + limit = { has_character_modifier = mandala_rise_from_the_ashes_modifier } + remove_character_modifier = mandala_rise_from_the_ashes_modifier + } + if = { + limit = { + NOT = { has_character_flag = devaraja_flag } + has_mandala_aspect_trigger = yes + } + add_character_flag = devaraja_flag + } + } + add_character_modifier = { + modifier = mandala_rise_from_the_ashes_modifier + years = 10 + } + #Memory + create_character_memory = { type = rebuilt_mandala_temple_memory } + scope:new_memory ?= { + set_variable = { + name = mandala_capital_rebuilt_location + value = scope:province + } + if = { + limit = { exists = var:mandala_capital_rebuilt_location } + #To prevent 'unused except in loc' errors :catto: + } + } + } +} diff --git a/common/on_action/struggle_on_actions.txt b/common/on_action/struggle_on_actions.txt new file mode 100644 index 00000000..fc0e9c26 --- /dev/null +++ b/common/on_action/struggle_on_actions.txt @@ -0,0 +1,53 @@ +# root: is involved (or interloper) character +# Scope:struggle is the currently pulsing struggle. +yearly_struggle_playable_pulse = { + effect = { + } +} + +# root: is involved (or interloper) character +# Scope:struggle is the currently pulsing struggle. +five_year_struggle_playable_pulse = { + trigger = { + basic_is_valid_for_yearly_events_trigger = yes + OR = { + fp2_character_interloper_in_struggle_trigger = yes + fp2_character_involved_in_struggle_trigger = yes + } + } + on_actions = { + fp2_iberian_struggle_random_events + } +} + +fp2_iberian_struggle_random_events = { + trigger = { + alwasys = no +# fp2_character_involved_in_struggle_trigger = yes + } + random_events = { + chance_to_happen = 95 + 1 = 0 + +# 80 = fp2_struggle.1000 #Stoking the Fire +# 50 = fp2_struggle.1001 #War Widows +# 50 = fp2_struggle.1010 #Soul of Iron +# 45 = fp2_struggle.1020 #Death of a Councilman +# 70 = fp2_struggle.2001 #Desperate Villagers Seek New Lord +# #80 = fp2_struggle.2003 #Band of Lost Birds removed for FP3 +# 25 = fp2_struggle.2004 #The weights inside this event are a bit high, but since the event is struggle-exclusive it will probably not be an issue +# 70 = fp2_struggle.2006 #The Borders of Faith +# 70 = fp2_struggle.2007 #Castle Worthy of Iberia +# 5 = fp2_struggle.2009 #Catching Thieves of Myth +# 90 = fp2_struggle.3001 #The Price of War Not particularly struggle related, but making it only appear during the struggle makes it more unique and special +# 50 = fp2_struggle.3011 #Order of the Hatchet +# 25 = fp2_struggle.3021 #The Wrath of Heaven Usually the lower chance is because the effects are too great, in this case it is to ensure people don't think every other iberian had discovered han powder. + } +} + +fp2_iberian_struggle_starting_events = { + events = { +# neutral_struggle.0001 +# fp2_struggle.0003 + } +} diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index a41f9a9a..bd025b41 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -2990,7 +2990,7 @@ on_title_gain_inheritance = { save_scope_as = change add_claim_on_loss = no } - scope:root = { + root = { becomes_independent = { change = scope:change } } resolve_title_and_vassal_change = scope:change @@ -3058,7 +3058,7 @@ on_title_gain_usurpation = { } } trigger_event = NEOW_dynamic_titles.0014 - } + } ###################################################### @@ -3080,18 +3080,8 @@ on_title_gain_usurpation = { } } scope:title = { - limit = { - is_nomad_title = no - tier = tier_county scope:title.title_province = { - NOR = { - has_holding_type = monotown_holding - has_holding_type = city_holding - } - } - } - scope:title.title_province = { - set_holding_type = city_holding + set_holding_type = city_holding } } } @@ -3185,7 +3175,7 @@ on_title_gain_usurpation = { save_scope_as = change add_claim_on_loss = no } - scope:root = { + root = { becomes_independent = { change = scope:change } } resolve_title_and_vassal_change = scope:change @@ -3279,7 +3269,7 @@ on_title_lost = { save_scope_as = change add_claim_on_loss = no } - scope:root = { + root = { becomes_independent = { change = scope:change } } resolve_title_and_vassal_change = scope:change diff --git a/common/on_action/yearly_groups_on_actions.txt b/common/on_action/yearly_groups_on_actions.txt new file mode 100644 index 00000000..2d8042c0 --- /dev/null +++ b/common/on_action/yearly_groups_on_actions.txt @@ -0,0 +1,425 @@ +fp1_yearly_events = { + trigger = { fp1_eligible_for_yearly_events_trigger = yes } + weight_multiplier = { + base = 1 + modifier = { # Reduces frequency for characters with non-matching cultures + factor = 0.33 + religion = religion:folkgerman_religion + + NOT = { + culture = { has_cultural_pillar = heritage_north_germanic } + } + } + modifier = { # Reduces frequency for having both sets of FP events valid + factor = 0.5 + OR = { + fp2_eligible_for_yearly_events_trigger = yes + fp3_eligible_for_yearly_events_trigger = yes + } + } + } + + random_events = { + chance_to_happen = 65 + 200 = 0 + + # Other Events +# 100 = varangian.0001 + 200 = trait_specific.9001 # Become Poet + + #FP1 Events + ## Shieldmaidens + 100 = fp1_shieldmaiden.0001 # A wrong-gender courtier wishes to fight for you. + 400 = fp1_shieldmaiden.0032 # Your shieldmaiden improves their skills. + ## General Yearlies + 200 = fp1_yearly.0001 # Escaped Thrall - A thrall leaves your court in the night. + 200 = fp1_yearly.0011 # Calls for Courtier to be Declared Nithing - Locals call for one of your courtiers to be exiled. + 200 = fp1_yearly.0021 # A Matter of Life and Death - Two knights fight to the death over nothing. + 200 = fp1_yearly.0031 # Tall Tales at the Table - A deceitful warrior is telling tall-tales at court. + 100 = fp1_yearly.0041 # Explorers from the South - An Islamic explorer stops by for a visit. + 200 = fp1_yearly.0051 # The Unquiet Dead - You are informed of a reputed-draugr. + 200 = fp1_yearly.0071 # In the Deep Places of the World - locals in your Scandi capital report a troll. + 200 = fp1_yearly.0091 # A Vessel fit for a Ruler - commissioning a personal longship. + 200 = fp1_yearly.0101 # A Game of Riddles - a courtier challenges you to a game of riddles. + 200 = fp1_yearly.0111 # Accursed - one of your courtiers is the victim of a nithing pole. + 200 = fp1_yearly.2000 # A Child wants to run away to marry their beloved + 300 = fp1_yearly.2100 # Two lovers duel for your love + 200 = fp1_yearly.2200 # Berserker rampages though court + 200 = fp1_yearly.2300 # Convince a group of soldiers to join you + 200 = fp1_yearly.2400 # Invest in something that'll aid in your hunts + 200 = fp1_yearly.2600 # Become a Berserker + ## Flavour Yearlies + 200 = fp1_yearly.0501 # Out for a Sail - you spot a ship in distress. + 200 = fp1_yearly.0511 # The Stench of Success - a courtier won't let an old trophy go. + 200 = fp1_yearly.0521 # Blood on the Snow - your child wishes to snowball fight. + 200 = fp1_yearly.0531 # [Dynasty] on Ice - your child wants to learn how to ice skate. + 200 = fp1_yearly.0541 # The Beast of [Capital] - your child is playing pranks on courtiers. + 200 = fp1_yearly.0551 # Fishy Business - a courtier won't stop eating rotten fish. + 200 = fp1_yearly.0561 # My Arm Against Yours - a knight challenges you to arm-wrestling. + 200 = fp1_yearly.0571 # Petty Vandalism - your child has vandalised a runestone. + 200 = fp1_yearly.0581 # When I Grow Up - your child wishes to be a shieldperson. + 200 = fp1_yearly.0591 # Raised Voices at the Thing - two of your counties are fighting at a regional thing. + 200 = fp1_yearly.0601 # The Hardest Part of Ruling - you're incredibly bored in a protracted thing session. + 200 = fp1_yearly.0611 # Leading by Example - one of your children hurts another whilst imitating you. + 200 = fp1_yearly.0641 # Worthy of the Ocean - your longships are in disrepair. + 200 = fp1_yearly.0651 # Leviathan - you spot a whale whilst sailing. + 200 = fp1_yearly.0661 # A Novel Challenge - a knight challenges you to skiing. + 200 = fp1_yearly.0671 # A Slippery Slope - your child wants to go sledding. + 200 = fp1_yearly.0681 # Why Can't I Come? - your child wants to come raiding. + 200 = fp1_yearly.0691 # Attempted Atonement - a knight has converted after raiding a reformed faith. + ## Special Yearlies + 50 = fp1_yearly.1001 # You notice a stranger has been hanging around the court. + 50 = fp1_yearly.1071 # Sparklingly Clean + 50 = fp1_yearly.1081 # An explorer of the Atlantic wishes to share their tales with you. + 5 = fp1_yearly.2500 # What's that deviant up to this time!? + 1000 = fp1_major_decisions.1001 # Canute & the Tide + ## Jomsvikings +# 500 = fp1_jomsvikings.0001 # FP1 - Jomsvikings offer a Retainer +# 500 = fp1_jomsvikings.0021 # FP1 - Jomsvikings send Event Troops +# 1000 = fp1_jomsvikings.0041 # FP1 - Jomsvikings move to execute a stain on the faith. + } +} + +fp2_yearly_events = { + trigger = { +# has_fp2_dlc_trigger = yes + always = no + # Most events are geographical in nature +# capital_province ?= { geographical_region = world_europe_west_iberia } + } + weight_multiplier = { + base = 1 + modifier = { # Reduces frequency for characters with non-matching cultures + factor = 0.33 + + NOT = { + culture = { has_cultural_pillar = heritage_iberian } + } + } + modifier = { # Reduces chance after recently having had an event from this pulse + factor = 0.2 + has_character_flag = recently_got_fp2_event + } + modifier = { # Reduces frequency for having both sets of FP events valid + factor = 0.5 + OR = { + fp1_eligible_for_yearly_events_trigger = yes + fp3_eligible_for_yearly_events_trigger = yes + } + } + } + + random_events = { + 200 = 0 + + # FP2 - Fate of Iberia Events +# 160 = fp2_yearly.1001 # Chess Two +# 10 = fp2_yearly.1002 # A Compromising Position +# 160 = fp2_yearly.1003 # Tilting at...Giants? +# 160 = fp2_yearly.1004 # The Hawk of Quraysh +# 160 = fp2_yearly.1005 # Lost Viking +# 80 = fp2_yearly.1006 # Viking Cheese? +# 180 = fp2_yearly.2020 # Horchata colonialism event +# 160 = fp2_yearly.4004 # The Wandering Master +# 160 = fp2_yearly.4005 # Establishing Enclaves +# 160 = fp2_yearly.4006 # God's Architect +# 160 = fp2_yearly.8000 # Burning the Vineyards +# 180 = fp2_yearly.8001 # Assembling the Cortes +# 160 = fp2_yearly.8002 # A Dietary Dilemma +# 160 = fp2_yearly.8003 # Flight of Fancy +# 160 = fp2_yearly.8004 # The Toledo School of Translation +# 160 = fp2_yearly.8005 # Under the Stone Pine +# 160 = fp2_yearly.8006 # Saqaliba Settlers +# 180 = fp2_struggle.1002 # Xenophilic Advancment +# 160 = fp2_struggle.1050 # Dreams of Destruction +# 150 = fp2_struggle.2000 # Disorderly Market +# 140 = fp2_struggle.2008 # Misdeeds of the Councillor +# 350 = fp2_struggle.2013 # The Secret to Freedom +# 130 = fp2_struggle.2015 # Letter on the Back +# 180 = fp2_yearly.2025 # Suffering from Success +# 150 = fp2_yearly.4001 # You fancy a little siesta +# 150 = fp2_yearly.4002 # A county is increasingly religiously intertwined +# 150 = fp2_yearly.4003 # The road to Santiago is under threat from bandits +# 150 = fp2_yearly.4007 # Finding a shell on the road to Santiago +# 150 = fp2_yearly.4008 # Folk stories around the fireside +# 300 = fp2_yearly.4009 # Visiting the Malato Tree +# 150 = fp2_yearly.4010 # Finding a Verraco +# 300 = fp2_yearly.3000 # Neighboring Muslims are growing rice, adopt the practice yourself? +# 100 = bell_special_yearly.1000 # The bell of Huesca yearly +# 150 = fp2_yearly.9000 # Thriving Jewish Community +# 150 = fp2_yearly.9001 # Suspect Conversos of secretly praciticing Judaism +# 150 = fp2_yearly.9002 # Jewish people come fleeing persecution from a nearby realm +# 150 = fp2_yearly.9005 # Toledan Nights +# 50 = fp2_yearly.9006 # Local bishop mad his church faces the wrong way + } + + effect = { + root = { + add_character_flag = { + flag = recently_got_fp2_event + days = 1095 # 3 years + } + } + } +} + +bp1_yearly_events = { # Disabled in yearly_on_actions + trigger = { + has_dlc_feature = friends_and_foes + OR = { + any_relation = { type = friend } + any_relation = { type = rival } + } + } + weight_multiplier = { + base = 1 + modifier = { # Increase frequency the more you fit the conditions + add = 0.25 + any_relation = { type = friend } + } + modifier = { # Increase frequency the more you fit the conditions + add = 0.25 + any_relation = { type = rival } + } + modifier = { # Increase frequency the more you fit the conditions + add = 0.25 + any_relation = { type = best_friend } + } + modifier = { # Increase frequency the more you fit the conditions + add = 0.25 + any_relation = { type = nemesis } + } + } + + random_events = { + 200 = 0 + + #BP1 Events + 100 = bp1_yearly.1000 # Best friend introduces you to a new hobby + 200 = bp1_yearly.1010 # A friend offers to mediate with your HoF who has excommunicated you + 500 = bp1_yearly.1020 # A friend visits you on your dying bed + 500 = bp1_yearly.1021 # You visit a friend on their dying bed + 500 = bp1_yearly.1030 # A rival visits you on your dying bed + 500 = bp1_yearly.1031 # You visit a rival on their dying bed + 100 = bp1_yearly.1040 # You make a new friend at the bathhouse + 50 = bp1_yearly.1050 # You make a new rival at the bathhouse + 100 = bp1_yearly.1060 # React to a superstitious friend + 150 = bp1_yearly.1061 # Make someone superstitious - hidden + 100 = bp1_yearly.1070 # Rival is superstitious - take advantage? + 100 = bp1_yearly.1080 # Married off relative writes home + 400 = bp1_yearly.1082 # Married off relative writes home to share a secret + 100 = bp1_yearly.2000 # Spoil your partner(s), learn a secret/hook followup + 400 = bp1_yearly.2010 # Two of your spouses/concubines are lovers! + 100 = bp1_yearly.2020 # A consort attempts to influence you into changing your heir + 100 = bp1_yearly.2030 # Mopey consort wants some guidance + 100 = bp1_yearly.2040 # Consort is upset with other consort + 100 = bp1_yearly.2050 # Friendly consorts wants to start a study circle + 200 = bp1_yearly.2060 # Friendly consorts want to tutor other consort's child + 100 = bp1_yearly.2070 # Childless older soulmate spouse ponders your relationship + 100 = bp1_yearly.3001 # Friend spots you some cash + 100 = bp1_yearly.3002 # You spot your friend some cash + 100 = bp1_yearly.3007 # Spouse's family member wants you to sponsor their inspiration + 100 = bp1_yearly.3100 # Your vassal/friend/family member offers you a skilled courtier + 20 = bp1_yearly.3101 # Friend offers to sell you a county you have a claim on + 100 = bp1_yearly.3201 # Fake feast invite from rival/nemesis + 100 = bp1_yearly.3300 # Remembering a pilgrimage + 200 = bp1_yearly.3301 # Remembering a pilgrimage w/ a friend + 100 = bp1_yearly.4000 # Reflect over a family memory + 100 = bp1_yearly.4010 # Spouse demands their child gets a better guardian + 100 = bp1_yearly.4020 # Friend writes poetry about a war memory + 250 = bp1_yearly.4030 # Rival nestles their way into marrying one of your vassals, turns them disloyal + 10 = bp1_yearly.4040 # Kindly grandmother won't stop feeding you snacks; suffer the consequences of overeating, or break her heart? + 50 = bp1_yearly.5301 # Your friend is concerned about your physique + 150 = bp1_yearly.5100 # Chadsplaining to a plain courtier + 150 = bp1_yearly.5701 # Your Friend's Spouse Is Keeping Them Away From You + 100 = bp1_yearly.5702 # You ask a friend for help with skill + 200 = bp1_yearly.5703 # Your lover/rival threatens you in bed + 100 = bp1_yearly.5704 # Your rival seems strangely... attractive? + 200 = bp1_yearly.5705 # Your friend tries to talk you out of a bad relationship + 100 = bp1_yearly.5706 # You sleep with your rival's offspring + 400 = bp1_yearly.5707 # Your rival catches you sleeping with their offspring + 100 = bp1_yearly.5708 # You empathise with a friend's faith + 100 = bp1_yearly.5709 # Tempers flare between you and your rival + 70 = bp1_yearly.5713 # Your lover asks for money + 100 = bp1_yearly.5715 # You and a friend argue about pronunciation + 100 = bp1_yearly.5716 # Your zealous wife burns books + 100 = bp1_yearly.5717 # Your rival and your friend get into a drunken brawl + 100 = bp1_yearly.5719 # Your disloyal vassal is trying to embezzle + 100 = bp1_yearly.5720 # You and your rival armwrestle + 200 = bp1_yearly.5722 # Your nemesis launches your pet out of a catapult + 100 = bp1_yearly.5725 # You search for Khutulun + 50 = bp1_yearly.5728 # Rival steals and burns one of your artifacts + 10 = bp1_yearly.5740 # Scrambling for Answers + 80 = bp1_yearly.5800 # You make a perfume + 125 = bp1_yearly.6000 # Attacked by Rival's Child / Family Feud + 100 = bp1_yearly.7000 # Go on a picnic + 100 = bp1_yearly.7001 # Go fishing + 10 = bp1_yearly.7002 # Throw chamberpot at rival + 25 = bp1_yearly.7003 # Orgy Tapestry + 100 = bp1_yearly.7004 # Friend offers to talk about bad memory + 100 = bp1_yearly.7010 # Loyalty test + 100 = bp1_yearly.7050 # Memory of a war + 100 = bp1_yearly.7051 # Memory of Battle + 100 = bp1_yearly.7052 # Telling a story of a memory + 100 = bp1_yearly.7053 # A memory of revenge + 100 = bp1_yearly.7054 # Forgetting a memory + 100 = bp1_yearly.7055 # Recording a memory + 100 = bp1_yearly.7056 # Intimidating someone + 150 = bp1_yearly.7057 # Yearning + 100 = bp1_yearly.7058 # Friend eats all your food + 100 = bp1_yearly.8000 # Claimant moving towards rivalry + 200 = bp1_yearly.8010 # Best friend offers you a negotiated alliance + 100 = bp1_yearly.8020 # Rival of your rival offers friendship + 100 = bp1_yearly.8040 # Friend with conflicting personality falls out with you + 100 = bp1_yearly.9001 # Bully/guardian destroys your favourite toy + 100 = bp1_yearly.9005 # You get revenge for your destroyed toy + 100 = bp1_yearly.9006 # Becoming friends over a common sin + 10 = bp1_yearly.9007 # You find a peasant who looks exactly like you + 50 = bp1_yearly.9016 # Uppity second-in-line wants the throne + 50 = bp1_yearly.9017 # Uppity child is insecure about culture + 200 = bp1_yearly.9018 # Illegitimate child feels excluded + 100 = bp1_yearly.9019 # Spouse proposes a gay threesome + 200 = bp1_yearly.9020 # Spouse wants to do something kinky + 100 = bp1_yearly.9021 # Rival spouse is good in the bedroom + 100 = bp1_yearly.9022 # Friend holds an intervention + 200 = bp1_yearly.9023 # You realise you don't speak the same language + 100 = bp1_yearly.9024 # A friend visits you while you're sick + 150 = bp1_yearly.9025 # You realise you hate your friend + 100 = bp1_yearly.9026 # You're haunted by an old friend who convinces you to make amends before you die + 100 = bp1_yearly.9040 # The ghost of your dead lover wants to have sex again + 100 = bp1_yearly.9042 # Your chaplain finds a dessert that looks like HealthGodName + 100 = bp1_yearly.9043 # Your chaplain admits to being a deviant and a cannibal who eats babies + 100 = bp1_yearly.9047 # Lover wants you to wear their hair + 100 = bp1_yearly.9048 # Nemesis wants to end your rivalry by wrestling + 100 = bp1_yearly.9050 # You and a friend share war stories + 20 = bp1_yearly.7100 # Excreta incident, gain Nemesis + + # Family Feud + 5 = bp1_house_feud.0001 # Consider starting feud against own rival's house + 5 = bp1_house_feud.0002 # Consider starting feud against house family member rivals + 5 = bp1_house_feud.0003 # Consider starting feud against house who killed close family + 5 = bp1_house_feud.0006 # Consider starting feud against house with competing claims + 5 = bp1_house_feud.0007 # Consider starting feud against house who imprisoned you a while + 5 = bp1_house_feud.0008 # Consider starting feud against house who imprisoned family a while + 5 = bp1_house_feud.0012 # Consider starting feud against house who cuckolded you + } +} + +fp3_yearly_events = { + trigger = { + has_fp3_dlc_trigger = yes + + # Most events are geographical in nature + capital_province = { geographical_region = world_persian_empire } + } + weight_multiplier = { + base = 1 + modifier = { # Reduces frequency for characters with non-matching cultures + factor = 0.33 + + NOR = { + culture = { has_cultural_pillar = heritage_iranian } + culture = { has_cultural_pillar = heritage_turkic } + culture = { has_cultural_pillar = heritage_mongolic } + culture = { has_cultural_pillar = heritage_arabic } + } + } + modifier = { # Reduces chance after recently having had an event from this pulse + factor = 0.2 + has_character_flag = recently_got_fp3_event + } + modifier = { # Reduces frequency for having other sets of FP events valid + factor = 0.5 + OR = { + fp1_eligible_for_yearly_events_trigger = yes + fp2_eligible_for_yearly_events_trigger = yes + } + } + } + + random_events = { + 200 = 0 + + # Frontier Events + 250 = fp3_yearly.8000 # Ghazi Gone Bad + 250 = fp3_yearly.8001 # Frontier Fortress Benefactor + 250 = fp3_yearly.8002 # Faith at the Frontier + 350 = fp3_yearly.8003 # Exotic Espand + 350 = fp3_yearly.8004 # The Frontier Beckons + 350 = fp3_yearly.8009 # Caliphal Concerns + 250 = fp3_yearly.8010 # Abode of War + 250 = fp3_yearly.8014 # Secrets of the Teapot + 250 = fp3_yearly.8016 # Forgotten Stones & Hyrcanian Havoc + 500 = fp3_yearly.8018 # Heavenly Horses + + # The Nomads Story Cycle + 100 = fp3_yearly.8888 #Grazing Grievances + + # Heritage Events + 250 = fp3_yearly.8019 # Refuge of Light + 250 = fp3_yearly.8020 # The Lady of the Land + 350 = fp3_yearly.8021 # An Acidic Accident + 500 = fp3_yearly.8024 # The Return to the Sky + 350 = fp3_yearly.8027 # Nine-Hundred Ninety Chapters of Gold + 250 = fp3_yearly.8033 # Frozen Delights + 550 = fp3_yearly.8034 # The Hephthalite Hoard + 250 = fp3_yearly.8035 # The Heart and the Creator + 250 = fp3_yearly.8036 # The City of the Mouthless + 500 = fp3_yearly.8037 # A Cure for Acedia (the Melancholia Chain) + + #FP3 - Extra Yearly Events + 150 = fp3_yearly.8045 #The Mysterious Bundle (the Buzina Chain) + + # Zoroastrian Events + 200 = fp3_yearly.8050 #The Fate of the Dead + 200 = fp3_yearly.8051 #The Purest Fire + + # Guardianship Events + 200 = childhood.2400 # Ward approaches guardian with theological doubts + + # Clan Events + 250 = fp3_clan.8000 # Usury against Unity + 250 = fp3_clan.8001 # Clan Quarrel + 250 = fp3_clan.8002 # Bonds of Faith + 250 = fp3_clan.8003 # The Power of a Name + 250 = fp3_clan.8004 # Bonds of Fear + 250 = fp3_clan.8005 # A Proper Position + 250 = fp3_clan.8006 # Small Spies + 125 = fp3_clan.3000 # Ravaged Tulips + + # Tax Collector / Clan Events + 250 = fp3_clan.1000 # Worth more than Gold? + 250 = fp3_clan.1010 # GetHerHis Cup Runneth Over + 250 = fp3_clan.1020 # Practical Learning + 250 = fp3_clan.1030 # Tax Dispute + 250 = fp3_clan.1040 # Mismanaged Land + + 250 = fp3_clan.8008 #Bleeding them Dry + 250 = fp3_clan.8009 #Popular with the People + 250 = fp3_clan.8010 #Competent Qadis / More Magistrates + 250 = fp3_clan.8011 #A Proper Paymaster + 250 = fp3_clan.8012 #Auspicious Avarice + 240 = fp3_clan.8013 #The Burden of Tax Farming + 250 = fp3_clan.8015 #Scandalous Scion + 250 = fp3_clan.8016 #Hammam Havoc + 250 = fp3_clan.8017 #A Questionable Position + + # Eren events + 250 = fp3_yearly.2000 # Daylight Censors + 250 = fp3_yearly.2001 # Public Intoxication + 100 = fp3_yearly.2011 # Maunds of Wheat for non-royal court users + 250 = fp3_yearly.2020 # Set the Scale, Vassal Version + 500 = fp3_yearly.2040 # Commander of the Faithful + 500 = false_conversion.2000 # A Moment of Weakness + 250 = fp3_scholarship.1000 # A Second Aryabhata + } + + effect = { + root = { + add_character_flag = { + flag = recently_got_fp3_event + days = 1095 + } + } + } +} diff --git a/common/religion/doctrine_types/30_core_tenets.txt b/common/religion/doctrine_types/30_core_tenets.txt index 02644f7b..3f4d917c 100644 --- a/common/religion/doctrine_types/30_core_tenets.txt +++ b/common/religion/doctrine_types/30_core_tenets.txt @@ -3292,11 +3292,11 @@ is_shown = { OR = { - religion_tag = west_african_bori_religion - religion_tag = akom_religion - religion_tag = muism_religion - religion_tag = dab_qhuas_religion - religion_tag = shamanism_religion +# religion_tag = west_african_bori_religion +# religion_tag = akom_religion +# religion_tag = muism_religion +# religion_tag = dab_qhuas_religion +# religion_tag = shamanism_religion has_doctrine = tenet_sun_worship #If you already have it } } diff --git a/common/script_values/02_religion_values.txt b/common/script_values/02_religion_values.txt index 880ab878..46f69c65 100644 --- a/common/script_values/02_religion_values.txt +++ b/common/script_values/02_religion_values.txt @@ -1287,76 +1287,76 @@ great_holy_war_target_kingdom_weight = { } add = ghw_target_fringe } - # Bon/Qiangicism/Donyipoloism/Mundhumism heartlands - else_if = { - limit = { - scope:the_faith.religion = { - OR = { - this = religion:bon_religion - this = religion:tani_religion - this = religion:mundhum_religion - this = religion:qiangic_religion - } - } - title_capital_county.title_province = { geographical_region = ghw_region_tibet } - } - add = ghw_target_heartlands - } +# # Bon/Qiangicism/Donyipoloism/Mundhumism heartlands +# else_if = { +# limit = { +# scope:the_faith.religion = { +# OR = { +# this = religion:bon_religion +# this = religion:tani_religion +# this = religion:mundhum_religion +# this = religion:qiangic_religion +# } +# } +# title_capital_county.title_province = { geographical_region = ghw_region_tibet } +# } +# add = ghw_target_heartlands +# } # Bon/Qiangicism/Donyipoloism/Mundhumism frontier - else_if = { - limit = { - scope:the_faith.religion = { - OR = { - this = religion:bon_religion - this = religion:tani_religion - this = religion:mundhum_religion - this = religion:qiangic_religion - } - } - title_capital_county.title_province = { - OR = { - geographical_region = ghw_region_northern_india - geographical_region = ghw_region_khotan - } - } - } - add = ghw_target_frontier - } +# else_if = { +# limit = { +# scope:the_faith.religion = { +# OR = { +# this = religion:bon_religion +# this = religion:tani_religion +# this = religion:mundhum_religion +# this = religion:qiangic_religion +# } +# } +# title_capital_county.title_province = { +# OR = { +# geographical_region = ghw_region_northern_india +# geographical_region = ghw_region_khotan +# } +# } +# } +# add = ghw_target_frontier +# } # Bon/Qiangicism/Donyipoloism/Mundhumism fringe - else_if = { - limit = { - scope:the_faith.religion = { - OR = { - this = religion:bon_religion - this = religion:tani_religion - this = religion:mundhum_religion - this = religion:qiangic_religion - } - } - title_capital_county.title_province = { - OR = { - geographical_region = ghw_region_mongolia - geographical_region = ghw_region_transoxiana - } - } - } - add = ghw_target_fringe - } +# else_if = { +# limit = { +# scope:the_faith.religion = { +# OR = { +# this = religion:bon_religion +# this = religion:tani_religion +# this = religion:mundhum_religion +# this = religion:qiangic_religion +# } +# } +# title_capital_county.title_province = { +# OR = { +# geographical_region = ghw_region_mongolia +# geographical_region = ghw_region_transoxiana +# } +# } +# } +# add = ghw_target_fringe +# } # Bon/Qiangicism/Donyipoloism/Mundhumism stretch goal - else_if = { - limit = { - scope:the_faith.religion = { - OR = { - this = religion:bon_religion - this = religion:tani_religion - this = religion:mundhum_religion - this = religion:qiangic_religion - } - } - title_capital_county.title_province = { geographical_region = ghw_region_southern_india } - } - add = ghw_target_stretch - } +# else_if = { +# limit = { +# scope:the_faith.religion = { +# OR = { +# this = religion:bon_religion +# this = religion:tani_religion +# this = religion:mundhum_religion +# this = religion:qiangic_religion +# } +# } +# title_capital_county.title_province = { geographical_region = ghw_region_southern_india } +# } +# add = ghw_target_stretch +# } # Mande Paganism & Senegambian Paganism heartlands else_if = { limit = { @@ -2032,29 +2032,29 @@ great_holy_war_target_kingdom_weight = { } } # Bon/Qiangicism/Donyipoloism/Mundhumism - else_if = { - limit = { - scope:the_faith.religion = { - OR = { - this = religion:bon_religion - this = religion:tani_religion - this = religion:mundhum_religion - this = religion:qiangic_religion - } - } - } - if = { - limit = { - title_capital_county = { - squared_distance = { - target = title:c_khotan - value >= ghw_target_distance_01_threshold - } - } - } - multiply = ghw_target_distance_01_reduction - } - } +# else_if = { +# limit = { +# scope:the_faith.religion = { +# OR = { +# this = religion:bon_religion +# this = religion:tani_religion +# this = religion:mundhum_religion +# this = religion:qiangic_religion +# } +# } +# } +# if = { +# limit = { +# title_capital_county = { +# squared_distance = { +# target = title:c_khotan +# value >= ghw_target_distance_01_threshold +# } +# } +# } +# multiply = ghw_target_distance_01_reduction +# } +# } # Mande Paganism else_if = { limit = { scope:the_faith.religion = religion:west_african_religion } @@ -2442,29 +2442,29 @@ great_holy_war_target_kingdom_weight = { } } # Bon/Qiangicism/Donyipoloism/Mundhumism - else_if = { - limit = { - scope:the_faith.religion = { - OR = { - this = religion:bon_religion - this = religion:tani_religion - this = religion:mundhum_religion - this = religion:qiangic_religion - } - } - } - if = { - limit = { - title_capital_county = { - squared_distance = { - target = title:c_khotan - value >= ghw_target_distance_02_threshold - } - } - } - multiply = ghw_target_distance_02_reduction - } - } +# else_if = { +# limit = { +# scope:the_faith.religion = { +# OR = { +# this = religion:bon_religion +# this = religion:tani_religion +# this = religion:mundhum_religion +# this = religion:qiangic_religion +# } +# } +# } +# if = { +# limit = { +# title_capital_county = { +# squared_distance = { +# target = title:c_khotan +# value >= ghw_target_distance_02_threshold +# } +# } +# } +# multiply = ghw_target_distance_02_reduction +# } +# } # Mande Paganism else_if = { limit = { scope:the_faith.religion = religion:west_african_religion } @@ -2852,29 +2852,29 @@ great_holy_war_target_kingdom_weight = { } } # Bon/Qiangicism/Donyipoloism/Mundhumism - else_if = { - limit = { - scope:the_faith.religion = { - OR = { - this = religion:bon_religion - this = religion:tani_religion - this = religion:mundhum_religion - this = religion:qiangic_religion - } - } - } - if = { - limit = { - title_capital_county = { - squared_distance = { - target = title:c_khotan - value >= ghw_target_distance_03_threshold - } - } - } - multiply = ghw_target_distance_03_reduction - } - } +# else_if = { +# limit = { +# scope:the_faith.religion = { +# OR = { +# this = religion:bon_religion +# this = religion:tani_religion +# this = religion:mundhum_religion +# this = religion:qiangic_religion +# } +# } +# } +# if = { +# limit = { +# title_capital_county = { +# squared_distance = { +# target = title:c_khotan +# value >= ghw_target_distance_03_threshold +# } +# } +# } +# multiply = ghw_target_distance_03_reduction +# } +# } # Mande Paganism else_if = { limit = { scope:the_faith.religion = religion:west_african_religion } diff --git a/common/script_values/06_ce1_legends_values.txt b/common/script_values/06_ce1_legends_values.txt new file mode 100644 index 00000000..2d4fc095 --- /dev/null +++ b/common/script_values/06_ce1_legends_values.txt @@ -0,0 +1,1541 @@ +###################### +# Legends +###################### + +#### SPREAD CHANCE ### +# Chance for an legend of this quality to spread to an adjacent province per month +# % from 0-100 inclusive +# root = potential province +# scope:legend = the legend + +### CONTROL VALUES ### +# These should be enough to change the balance of legends + +# legend seed drop chance + +legend_seed_chance_very_low = 5 +legend_seed_chance_low = 15 +legend_seed_chance_medium = 40 +legend_seed_chance_high = 75 + +# Spread + +legend_spread_chance_base = 0.5 + +legend_spread_increase_add_miniscule = 0.06 +legend_spread_increase_add_very_low = 0.12 +legend_spread_increase_add_low = 0.25 +legend_spread_increase_add_medium = 0.5 +legend_spread_increase_add_high = 1 +legend_spread_increase_add_very_high = 1.5 + +legend_spread_decrease_add_very_low = -0.12 +legend_spread_decrease_add_low = -0.25 +legend_spread_decrease_add_medium = -0.5 +legend_spread_decrease_add_high = -1 + +legend_spread_increase_mult_low = 0.25 +legend_spread_increase_mult_medium = 0.75 +legend_spread_increase_mult_high = 1.5 + +legend_spread_decrease_mult_low = -0.15 +legend_spread_decrease_mult_medium = -0.25 +legend_spread_decrease_mult_high = -0.5 +legend_spread_decrease_mult_unlikely = -0.99 + + + +spread_chance_legends_default_value = { + value = legend_spread_chance_base + + scope:legend = { + if = { + limit = { + legend_quality = illustrious + } + add = legend_spread_increase_add_low + } + else_if = { + limit = { + legend_quality = mythical + } + add = legend_spread_increase_add_medium + } + + #prestige levels + legend_owner = { + if = { + limit = { + prestige_level > 4 + } + add = legend_spread_increase_add_low + } + else_if = { + limit = { + prestige_level > 3 + } + add = legend_spread_increase_add_very_low + } + } + } + + #Buildings in which people gossip + if = { + limit = { + has_building_or_higher = common_tradeport_07 + } + add = legend_spread_increase_add_low + add = legend_spread_increase_add_low + add = legend_spread_increase_add_very_low + add = legend_spread_increase_add_miniscule + } + else_if = { + limit = { + has_building_or_higher = common_tradeport_05 + } + add = legend_spread_increase_add_low + add = legend_spread_increase_add_very_low + add = legend_spread_increase_add_miniscule + } + else_if = { + limit = { + has_building_or_higher = common_tradeport_03 + } + add = legend_spread_increase_add_very_low + add = legend_spread_increase_add_miniscule + } + else_if = { + limit = { + has_building_or_higher = common_tradeport_01 + } + add = legend_spread_increase_add_miniscule + } + + if = { + limit = { + has_building_or_higher = city_03 + } + add = legend_spread_increase_add_low + add = legend_spread_increase_add_miniscule + } + else_if = { + limit = { + has_building_or_higher = city_02 + } + add = legend_spread_increase_add_miniscule + } + + # This can be else_if because market villages and cities are exclusive and cannot be in the same province + else_if = { + limit = { + has_building_or_higher = market_villages_02 + } + add = legend_spread_increase_add_low + add = legend_spread_increase_add_miniscule + } + else_if = { + limit = { + has_building_or_higher = market_villages_01 + } + add = legend_spread_increase_add_miniscule + } + + # Legend type bonuses + + if = { + limit = { + has_building_or_higher = warrior_lodges_05 + scope:legend.legend_type = legend_type:heroic + } + add = legend_spread_increase_add_low + add = legend_spread_increase_add_low + } + else_if = { + limit = { + has_building_or_higher = warrior_lodges_03 + scope:legend.legend_type = legend_type:heroic + } + add = legend_spread_increase_add_low + } + + if = { + limit = { + faith = scope:legend.legend_owner.faith + scope:legend.legend_type = legend_type:holy + } + add = legend_spread_increase_add_very_low + } + else_if = { + limit = { + scope:legend.legend_type = legend_type:holy + faith = { + faith_hostility_level = { + target = scope:legend.legend_owner.faith + value >= faith_astray_level + } + } + } + add = legend_spread_decrease_add_medium + } + else_if = { + limit = { + scope:legend.legend_type = legend_type:holy + faith = { + faith_hostility_level = { + target = scope:legend.legend_owner.faith + value > faith_astray_level + } + } + } + add = legend_spread_decrease_add_high + } + + if = { + limit = { + scope:legend.legend_type = legend_type:legitimizing + county.holder = { + OR = { + dynasty = scope:legend.legend_owner.dynasty + top_liege.dynasty = scope:legend.legend_owner.dynasty + } + } + } + add = legend_spread_increase_add_very_low + } + else_if = { + limit = { + scope:legend.legend_type = legend_type:legitimizing + } + add = legend_spread_decrease_add_low + } + + + #Terrain + if = { + limit = { + OR = { + terrain = hills + terrain = drylands + terrain = forest + terrain = floodplains + terrain = wetlands + } + } + add = legend_spread_decrease_add_low + } + else_if = { + limit = { + OR = { + terrain = jungle + terrain = taiga + } + } + add = legend_spread_decrease_add_medium + } + else_if = { + limit = { + OR = { + terrain = desert + terrain = desert_mountains + terrain = mountains + } + } + add = legend_spread_decrease_add_high + } + #Island? + if = { + limit = { + geographical_region = divergence_island_regions + } + add = legend_spread_decrease_add_medium + } + + #Less patchy + if = { + limit = { + county = { + any_county_province = { + any_province_legend = { + this = scope:legend + } + } + } + } + add = legend_spread_increase_add_very_low + } + + + #Is this in your realm? + county.holder = { + if = { + limit = { this = scope:legend.legend_owner } + add = legend_spread_increase_add_very_high + } + else_if = { + limit = { promoted_legend ?= scope:legend } + add = legend_spread_increase_add_high + } + else_if = { + limit = { top_liege = scope:legend.legend_owner } + add = legend_spread_increase_add_medium + } + else_if = { + limit = { top_liege.promoted_legend ?= scope:legend } + add = legend_spread_increase_add_low + } + else = { + add = legend_spread_decrease_add_low + } + + #County holder opinion of legend owner + if = { + limit = { + has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = scope:legend.legend_owner } + } + add = legend_spread_increase_add_medium + } + else_if = { + limit = { + has_relation_rival = scope:legend.legend_owner + } + add = legend_spread_decrease_add_high + } + else = { + add = legend_spread_decrease_add_low + } + } + + #Languages + + if = { + limit = { + culture = { has_same_culture_language = scope:legend.legend_owner.culture } + } + add = legend_spread_increase_add_low + } + else_if = { + limit = { + county.holder = { knows_language_of_culture = scope:legend.legend_owner.culture } + } + add = legend_spread_increase_add_very_low + } + else_if = { + limit = { + scope:legend.legend_owner = { + has_royal_court = yes + has_dlc_feature = royal_court + } + county.holder = { knows_court_language_of = scope:legend.legend_owner } + } + add = legend_spread_increase_add_very_low + } + else_if = { + limit = { + culture = { has_same_culture_heritage = scope:legend.legend_owner.culture } + } + add = legend_spread_increase_add_miniscule + } + else_if = { + limit = { + scope:legend.legend_owner = { + has_royal_court = yes + has_dlc_feature = royal_court + } + OR = { + county.holder.top_liege = { + has_royal_court = yes + has_same_court_language = scope:legend.legend_owner + } + county.holder = { + has_royal_court = yes + has_same_court_language = scope:legend.legend_owner + } + } + } + add = legend_spread_decrease_add_very_low + } + else_if = { + limit = { + culture = { + cultural_acceptance = { target = scope:legend.legend_owner.culture value > 40 } + } + } + add = legend_spread_decrease_add_low + } + else_if = { + limit = { + culture = { + cultural_acceptance = { target = scope:legend.legend_owner.culture value > 20 } + } + } + add = legend_spread_decrease_add_medium + } + + else = { + add = legend_spread_decrease_add_high + } + + #Coastal Statistics Squash + if = { + limit = { + OR = { + is_coastal = yes + is_riverside_province = yes + } + NOR = { + county = { + any_county_province = { + any_province_legend = { + this = scope:legend + } + } + } + culture = { has_same_culture_language = scope:legend.legend_owner.culture } + } + } + add = legend_spread_decrease_add_high + } +} + +spread_chance_legends_mult_value = { + #NO ADD AFTER THIS POINT + #NO ADD ONLY MULT + value = 1 + min = 0.001 + + #Coastal Statistics Squash + if = { + limit = { + OR = { + is_coastal = yes + is_riverside_province = yes + } + NOR = { + county = { + any_county_province = { + any_province_legend = { + this = scope:legend + } + } + } + } + } + add = legend_spread_decrease_mult_high + } + + county = { + #Is this in your realm? + holder = { + if = { + limit = { + this = scope:legend.legend_owner + } + add = legend_spread_increase_mult_medium + } + else_if = { + limit = { + OR = { + top_liege = scope:legend.legend_owner + promoted_legend ?= scope:legend + top_liege.promoted_legend ?= scope:legend + } + } + add = legend_spread_increase_mult_low + } + else = { + add = legend_spread_decrease_mult_medium + } + + #County holder and top liege opinion of legend owner + if = { + limit = { #slight mult increase for owner and promoter domain + OR = { + this = scope:legend.legend_owner + promoted_legend ?= scope:legend + } + } + add = legend_spread_increase_mult_medium + } + else_if = { + limit = { + OR = { + has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = scope:legend.legend_owner } + top_liege = { has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = scope:legend.legend_owner } } + } + } + add = legend_spread_increase_mult_low + } + else_if = { + limit = { + OR = { + has_relation_rival = scope:legend.legend_owner + top_liege = { has_relation_rival = scope:legend.legend_owner } + } + } + add = legend_spread_decrease_mult_high + } + else = { + add = legend_spread_decrease_mult_low + } + } + + #Cultural Traditions + culture = { + if = { + limit = { + OR = { + has_cultural_tradition = tradition_chanson_de_geste + has_cultural_tradition = tradition_fp1_northern_stories + has_cultural_tradition = tradition_storytellers + has_cultural_tradition = tradition_poetry + } + } + add = legend_spread_increase_mult_medium + } + else_if = { + limit = { + OR = { + has_cultural_tradition = tradition_esteemed_hospitality + has_cultural_tradition = tradition_horse_lords + has_cultural_tradition = tradition_caravaneers + has_cultural_tradition = tradition_seafaring + has_cultural_tradition = tradition_city_keepers + has_cultural_tradition = tradition_maritime_mercantilism + } + } + add = legend_spread_increase_mult_low + } + else_if = { + limit = { + OR = { + has_cultural_tradition = tradition_practiced_pirates + has_cultural_tradition = tradition_parochialism + } + } + add = legend_spread_increase_mult_low + } + } + + #Development + if = { + limit = { + development_level >= good_development_level + } + add = legend_spread_decrease_mult_medium + } + else_if = { + limit = { + development_level >= medium_development_level + } + add = legend_spread_decrease_mult_low + } + } + + # Game rules + if = { + limit = { + has_game_rule = legend_spread_chance_high + } + add = legend_spread_increase_mult_low + } + else_if = { + limit = { + has_game_rule = legend_spread_chance_very_high + } + add = legend_spread_increase_mult_medium + } + else_if = { + limit = { + has_game_rule = legend_spread_chance_low + } + add = legend_spread_decrease_mult_low + } + else_if = { + limit = { + has_game_rule = legend_spread_chance_very_low + } + add = legend_spread_decrease_mult_medium + } +} + +### GOLD COSTS ### + +legend_base_cost_value = { + value = 200 +} + +legend_base_cost = { + value = legend_base_cost_value + #Scale by tier + multiply = { + value = root.primary_title.tier + subtract = 1 + multiply = 0.5 + min = 1 + } + if = { + limit = { + root = { + government_has_flag = government_is_tribal + } + } + multiply = 0.8 + } + #Scale by era + add = { + value = legend_base_cost_value + multiply = legend_cost_scale_by_era + subtract = legend_base_cost_value + desc = legend_cost_scale_by_era_desc + } + #Legends Dynasty Track discounts + add = legend_cost_dynasty_discounts + + # Game rules + if = { + limit = { + has_game_rule = legend_cost_high + } + multiply = 2 + } + else_if = { + limit = { + has_game_rule = legend_cost_very_high + } + multiply = 4 + } + else_if = { + limit = { + has_game_rule = legend_cost_low + } + divide = 2 + } + else_if = { + limit = { + has_game_rule = legend_cost_very_low + } + divide = 4 + } +} + +legend_cost_scale_by_era = { + value = 0 + if = { + limit = { + exists = culture + } + culture ?= { + if = { + limit = { + has_cultural_era_or_later = culture_era_late_medieval + } + add = 1.6 + } + else_if = { + limit = { + has_cultural_era_or_later = culture_era_high_medieval + } + add = 1.4 + } + else_if = { + limit = { + has_cultural_era_or_later = culture_era_early_medieval + } + add = 1.2 + } + else = { + add = 1 + } + } + } +} + +legend_cost_dynasty_discounts = { + if = { + limit = { + dynasty ?= { + ce1_heroic_track_perks >= 4 + } + } + multiply = 0.75 + } + else_if = { + limit = { + dynasty ?= { + ce1_heroic_track_perks >= 3 + } + } + multiply = 0.85 + } +} + +legend_upgrade_cost = { + value = legend_base_cost #includes scaling by era, tier and game rules + multiply = 0.8 + if = { + limit = { + promoted_legend ?= { has_variable = legend_quality_progress } + } + subtract = { + #Legend costs until now + value = legend_base_cost + multiply = 0.6 + #We give you 50% discount max based on your progress + multiply = { + value = promoted_legend.var:legend_quality_progress + divide = 200 + } + } + } +} + +legend_era_cost = { + value = monthly_character_income + multiply = legend_cost_scale_by_era + subtract = monthly_character_income + desc = legend_cost_scale_by_era_desc +} + +legend_game_rule_multiplier = { + value = 1 + + # Game rules + if = { + limit = { + has_game_rule = legend_cost_high + } + value = 2 + } + else_if = { + limit = { + has_game_rule = legend_cost_very_high + } + value = 4 + } + else_if = { + limit = { + has_game_rule = legend_cost_low + } + value = 0.5 + } + else_if = { + limit = { + has_game_rule = legend_cost_very_low + } + value = 0.25 + } +} + +famed_legend_owner_cost = { + value = monthly_character_income + multiply = 0.1 + min = 3 + add = 1 + multiply = legend_cost_scale_by_era + multiply = legend_game_rule_multiplier + max = 300 +} + +illustrious_legend_owner_cost = { + value = monthly_character_income + multiply = 0.15 + min = 4.5 + add = 2 + multiply = legend_cost_scale_by_era + multiply = legend_game_rule_multiplier + max = 450 +} + +mythical_legend_owner_cost = { + value = monthly_character_income + multiply = 0.25 + min = 8 + add = 4 + multiply = legend_cost_scale_by_era + multiply = legend_game_rule_multiplier + max = 800 +} + +# Promoter costs + +famed_legend_promoter_cost = { + value = monthly_character_income + multiply = 0.05 + add = 0.5 + multiply = legend_cost_scale_by_era + multiply = legend_game_rule_multiplier +} + +illustrious_legend_promoter_cost = { + value = monthly_character_income + multiply = 0.1 + add = 1 + multiply = legend_cost_scale_by_era + multiply = legend_game_rule_multiplier +} + +mythical_legend_promoter_cost = { + value = monthly_character_income + multiply = 0.2 + add = 1.5 + multiply = legend_cost_scale_by_era + multiply = legend_game_rule_multiplier +} + +# We want higher AI income than cost when starting promoting, so we do not toggle start/stop promoting too much, or spend all their income on it + +ai_famed_legend_promoter_start_required_income = { + value = famed_legend_promoter_cost + multiply = 1.4 +} + +ai_illustrious_legend_promoter_start_required_income = { + value = illustrious_legend_promoter_cost + multiply = 1.4 +} + +ai_mythical_legend_promoter_start_required_income = { + value = mythical_legend_promoter_cost + multiply = 1.4 +} + +### Prestige costs ### + +legend_prestige_cost = { + value = 200 + #Scale by tier + multiply = { + value = root.primary_title.tier + subtract = 1 + multiply = 0.5 + min = 1 + } + if = { + limit = { + root = { + government_has_flag = government_is_tribal + } + } + multiply = 0.8 + } + #Scale by era + add = { + value = legend_base_cost_value + multiply = legend_cost_scale_by_era + subtract = legend_base_cost_value + desc = legend_cost_scale_by_era_desc + } + + # Game rules + if = { + limit = { + has_game_rule = legend_cost_high + } + multiply = 2 + } + else_if = { + limit = { + has_game_rule = legend_cost_very_high + } + multiply = 4 + } + else_if = { + limit = { + has_game_rule = legend_cost_low + } + divide = 2 + } + else_if = { + limit = { + has_game_rule = legend_cost_very_low + } + divide = 4 + } +} + +### Piety costs ### + +legend_piety_cost = { + value = 200 + #Scale by tier + multiply = { + value = root.primary_title.tier + subtract = 1 + multiply = 0.5 + min = 1 + } + if = { + limit = { + root = { + government_has_flag = government_is_tribal + } + } + multiply = 0.8 + } + #Scale by era + add = { + value = legend_base_cost_value + multiply = legend_cost_scale_by_era + subtract = legend_base_cost_value + desc = legend_cost_scale_by_era_desc + } + + # Game rules + if = { + limit = { + has_game_rule = legend_cost_high + } + multiply = 2 + } + else_if = { + limit = { + has_game_rule = legend_cost_very_high + } + multiply = 4 + } + else_if = { + limit = { + has_game_rule = legend_cost_low + } + divide = 2 + } + else_if = { + limit = { + has_game_rule = legend_cost_very_low + } + divide = 4 + } +} + +### COURT POSITION TASKS ### + +monthly_court_position_task_cost_value = { + value = 0.05 +} + +monthly_court_position_task_cost = { + value = monthly_court_position_task_cost_value + scope:liege = { + #Scale by tier + multiply = { + value = primary_title.tier + subtract = 1 + min = 1 + } + # Performance-heavy, so we let the AI cheat very lightly here + if = { + limit = { + is_ai = no + } + #Scale by era + if = { + limit = { + scope:liege.culture ?= { has_cultural_era_or_later = culture_era_late_medieval } + } + multiply = { + value = 1.75 + desc = culture_era_late_medieval_salary_mod + format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE" + } + } + else_if = { + limit = { + scope:liege.culture ?= { has_cultural_era_or_later = culture_era_high_medieval } + } + multiply = { + value = 1.5 + desc = culture_era_high_medieval_salary_mod + format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE" + } + } + else_if = { + limit = { + scope:liege.culture ?= { has_cultural_era_or_later = culture_era_early_medieval } + } + multiply = { + value = 1.25 + desc = culture_era_early_medieval_salary_mod + format = "BASE_VALUE_FORMAT_DECIMALS_PLUS_NEGATIVE" + } + } + } + } + if = { + limit = { + OR = { + has_game_rule = hard_difficulty + has_game_rule = very_hard_difficulty + } + scope:liege = { + is_ai = yes + } + } + multiply = 0 + } +} + +monthly_court_position_task_cost_double = { + value = monthly_court_position_task_cost + multiply = 2 +} + +monthly_court_position_task_cost_triple = { + value = monthly_court_position_task_cost + multiply = 3 +} + +monthly_court_position_task_cost_quadruple = { + value = monthly_court_position_task_cost + multiply = 4 +} + +### DYNAMIC VALUES ### +legend_piety_gain = { + value = 0 + if = { + limit = { root = { legend_quality = famed } } + value = minor_piety_gain + } + else_if = { + limit = { root = { legend_quality = illustrious } } + value = medium_piety_gain + } + else = { #mythical + value = major_piety_gain + } +} + +legend_prestige_gain = { + value = 0 + if = { + limit = { root = { legend_quality = famed } } + value = minor_prestige_gain + } + else_if = { + limit = { root = { legend_quality = illustrious } } + value = medium_prestige_gain + } + else = { #mythical + value = major_prestige_gain + } +} + +legend_dynasty_prestige_gain = { + value = 0 + if = { + limit = { root = { legend_quality = famed } } + value = miniscule_dynasty_prestige_gain + } + else_if = { + limit = { root = { legend_quality = illustrious } } + value = minor_dynasty_prestige_gain + } + else = { #mythical + value = major_dynasty_prestige_gain + } +} + +major_legend_quality_increase = 50 +medium_legend_quality_increase = 20 +minor_legend_quality_increase = 10 +minor_legend_quality_decrease = { + value = 0 + subtract = minor_legend_quality_increase +} +medium_legend_quality_decrease = { + value = 0 + subtract = medium_legend_quality_increase +} +major_legend_quality_decrease = { + value = 0 + subtract = major_legend_quality_increase +} + +base_legend_create_ai = { + value = 10 + + add = { + value = ai_greed + multiply = -1 + } + + if = { + limit = { + highest_held_title_tier <= tier_duchy + } + add = -10 + } + + if = { + limit = { + monthly_character_income < mythical_legend_owner_cost + } + multiply = 0.2 + } + if = { + limit = { + monthly_character_income <= monthly_character_expenses + } + multiply = 0 + } + if = { + limit = { + has_trait = arrogant + } + multiply = 2 + } + if = { + limit = { + has_trait = ambitious + } + multiply = 2 + } + + #you need to be this rich to create legends + if = { + limit = { + OR = { + is_at_war = yes + monthly_character_income < illustrious_legend_owner_cost + } + } + value = 0 + } + if = { + limit = { + has_variable = conqueror + gold < 2500 + } + multiply = 0 + } + if = { + limit = { + ai_should_focus_on_building_in_their_capital = yes + } + multiply = 0 + } + if = { + limit = { + this != top_liege + } + multiply = 0 + } + if = { + limit = { + has_global_variable_list = active_legends_tally + global_variable_list_size = { + name = active_legends_tally + value >= 10 + } + } + multiply = 0 + add = -5000 + } +} + +heroic_legend_create_ai = { + value = base_legend_create_ai + add = ai_honor + if = { + limit = { + highest_held_title_tier <= tier_duchy + } + add = -150 + } + if = { + limit = { + ai_has_warlike_personality = yes + } + multiply = 2 + } + if = { + limit = { + ai_has_cautious_personality = yes + } + multiply = 0.1 + } + if = { + limit = { + ai_has_economical_boom_personality = yes + } + multiply = 0.75 + } + if = { + limit = { + has_variable = conqueror + gold < 2500 + } + multiply = 0 + } + if = { + limit = { + ai_should_focus_on_building_in_their_capital = yes + } + multiply = 0 + } +} + +holy_legend_create_ai = { + value = base_legend_create_ai + add = ai_zeal + if = { + limit = { + highest_held_title_tier <= tier_duchy + } + add = -150 + } + if = { + limit = { + ai_has_pious_builder_personality = yes + } + multiply = 1.3 + } + if = { + limit = { + ai_has_warlike_personality = yes + } + multiply = 1.1 + } + if = { + limit = { + ai_has_cautious_personality = yes + } + multiply = 0.9 + } + if = { + limit = { + ai_has_economical_boom_personality = yes + } + multiply = 0.75 + } + if = { + limit = { + has_variable = conqueror + gold < 2500 + } + multiply = 0 + } + if = { + limit = { + ai_should_focus_on_building_in_their_capital = yes + } + multiply = 0 + } +} + +legitimizing_legend_create_ai = { + value = base_legend_create_ai + add = ai_rationality + if = { + limit = { + highest_held_title_tier <= tier_duchy + } + add = -150 + } + if = { + limit = { + ai_has_warlike_personality = yes + } + multiply = 1.1 + } + if = { + limit = { + ai_has_cautious_personality = yes + } + multiply = 0.1 + } + if = { + limit = { + ai_has_economical_boom_personality = yes + } + multiply = 0.9 + } + if = { + limit = { + has_variable = conqueror + gold < 2500 + } + multiply = 0 + } + if = { + limit = { + ai_should_focus_on_building_in_their_capital = yes + } + multiply = 0 + } +} + +illustrious_legend_create_ai = { + add = 25 + if = { + limit = { + monthly_character_income < illustrious_legend_promoter_cost + } + value = 0 + } +} + +mythical_legend_create_ai = { + add = 50 + if = { + limit = { + monthly_character_income < mythical_legend_promoter_cost + } + value = 0 + } +} + + +base_legend_promote_ai = { + value = 0 + if = { + limit = { + has_any_best_good_relationship_with_character_trigger = { CHARACTER = scope:legend.legend_owner } + } + add = 20 + } + else_if = { + limit = { + has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = scope:legend.legend_owner } + } + add = 8 + } + else_if = { + limit = { + likes_character_trigger = { CHARACTER = scope:legend.legend_owner } + } + add = 2 + } + if = { + limit = { + culture = { + OR = { + has_cultural_tradition = tradition_chanson_de_geste + has_cultural_tradition = tradition_fp1_northern_stories + has_cultural_tradition = tradition_storytellers + has_cultural_parameter = poet_trait_gives_bonuses + } + } + } + add = 2 + } + if = { # The protag is my relative + limit = { + is_close_or_extended_family_of = scope:legend.legend_owner + } + add = 2 + } + + if = { + limit = { + has_trait = arrogant # I want to create my own legend >:( + } + add = -4 + } + if = { + limit = { + has_trait = cynical + } + add = -4 + } + + if = { + limit = { + top_liege != this + } + add = -4 + } + + add = { + value = "opinion(scope:legend.legend_owner)" + multiply = 0.05 + } + + if = { + limit = { + any_character_to_title_neighboring_county = { + any_county_province = { + any_province_legend = { + this = scope:legend + } + } + } + } + add = 2 + } + else = { + add = -8 + } + + if = { #no free meals + limit = { + primary_title.tier = tier_empire + } + add = -16 + } + else_if = { + limit = { + primary_title.tier = tier_kingdom + } + add = -8 + } + else_if = { #you need to be this tall to promote legends + limit = { + primary_title.tier < tier_duchy + } + value = 0 + } + + if = { + limit = { + scope:legend = { + legend_quality = illustrious + } + } + multiply = 1.2 + } + else_if = { + limit = { + scope:legend = { + legend_quality = mythical + } + } + multiply = 1.4 + } + + if = { + limit = { + OR = { + # War is no time for idle spending + is_at_war = yes + + # Opt out if we do not have enough income to promote this legend + # (only for legends we're not currently promoting - stopping the currently promoting legend is handled by code) + AND = { + NOT = { promoted_legend ?= scope:legend } + OR = { + AND = { + scope:legend = { + legend_quality = famed + } + monthly_character_income < ai_famed_legend_promoter_start_required_income + } + AND = { + scope:legend = { + legend_quality = illustrious + } + monthly_character_income < ai_illustrious_legend_promoter_start_required_income + } + AND = { + scope:legend = { + legend_quality = mythical + } + monthly_character_income < ai_mythical_legend_promoter_start_required_income + } + } + } + } + } + value = 0 + } + #to prevent AI switching promoters too often + if = { + limit = { + exists = promoted_legend + } + multiply = 0.4 + } + if = { + limit = { + has_variable = conqueror + gold < 2500 + } + multiply = 0 + } + if = { + limit = { + ai_should_focus_on_building_in_their_capital = yes + } + multiply = 0 + } +} + +base_legend_complete_ai = { + value = 0 + if = { # I cannot afford the current levels monthly cost anymore + limit = { + scope:can_afford_current_level = no + } + add = 100 + } + if = { # My legend is done + limit = { + scope:legend = { legend_quality = mythical } + } + add = 100 + } + if = { # This legend is going nowhere :( + limit = { + current_year >= { + value = scope:legend.legend_start_date + add = 100 + } + } + add = 10 + } + if = { + limit = { + current_year >= { + value = scope:legend.legend_start_date + add = 200 + } + } + add = 20 + } + if = { + limit = { + scope:legend = { + any_spread_province > { count = 350 } + } + } + add = 40 + } + if = { + limit = { + monthly_character_income <= monthly_character_expenses + debt_level = 2 #Is one year in debt. + } + add = 10 + } + else_if = { + limit = { + monthly_character_income <= monthly_character_expenses + debt_level > 2 # Is two years in debt. + } + add = 25 + } + if = { + limit = { + debt_level = 5 # Is four years in debt + } + add = 40 + } +} + +base_chronicler_promote_legend_realm_cost = { + value = 0 + if = { + limit = { + scope:liege ?= { + promoted_legend ?= { + legend_owner = scope:liege + } + } + } + add = scope:liege.famed_legend_owner_cost + } + else = { + add = scope:liege.famed_legend_promoter_cost + } + multiply = 0.8 +} diff --git a/common/scripted_character_templates/00_pool_repopulation_character_templates.txt b/common/scripted_character_templates/00_pool_repopulation_character_templates.txt index cc365bec..109f0857 100644 --- a/common/scripted_character_templates/00_pool_repopulation_character_templates.txt +++ b/common/scripted_character_templates/00_pool_repopulation_character_templates.txt @@ -353,9 +353,9 @@ pool_repopulate_martial = { } random_list = { 65 = {} - 15 = { - add_trait = varangian - } +# 15 = { +# add_trait = varangian +# } 15 = { add_trait = berserker } diff --git a/common/scripted_character_templates/07_ep3_character_templates.txt b/common/scripted_character_templates/07_ep3_character_templates.txt index 6266fdac..f01f8f5c 100644 --- a/common/scripted_character_templates/07_ep3_character_templates.txt +++ b/common/scripted_character_templates/07_ep3_character_templates.txt @@ -111,7 +111,7 @@ varangian_template = { } gender_female_chance = root_soldier_female_chance after_creation = { - add_trait = varangian +# add_trait = varangian add_trait = tourney_participant add_trait_xp = { trait = tourney_participant diff --git a/common/scripted_effects/00_nickname_effects.txt b/common/scripted_effects/00_nickname_effects.txt new file mode 100644 index 00000000..108f5053 --- /dev/null +++ b/common/scripted_effects/00_nickname_effects.txt @@ -0,0 +1,6410 @@ +set_nickname_effect = { + if = { + limit = { + NAND = { # I cannot already have a bad nickname if the nickname I'm getting is also bad + has_bad_nickname = yes + is_bad_nickname = $NICKNAME$ + } + OR = { # Has no nickname or a bad nickname + NOT = { has_any_nickname = yes } + has_bad_nickname = yes + } + } + give_nickname = $NICKNAME$ + } +} + +chance_for_random_nickname_effect = { + random = { + chance = random_nickname_chance + #chance = 100 # For testing + save_scope_value_as = { + name = toggle_null_result + value = yes + } + assign_random_nickname_effect = yes + } +} + +flag_random_nickname_as_taken_in_batch_effect = { + save_scope_value_as = { + name = had_$NICK$ + value = yes + } +} + +assign_random_nickname_effect = { + save_scope_as = nickname_root_scope + if = { + limit = { + is_adult = yes + has_any_nickname = no + NOT = { government_has_flag = government_is_mercenary } + NOT = { has_game_rule = random_nickname_frequency_none } + } + random_list = { + 100 = { + trigger = { + exists = scope:toggle_null_result + } + # To make rare nicknames even rarer + } + 100 = { + trigger = { + is_male = yes + has_trait = stubborn + has_trait = impatient + NOR = { + prestige_level >= 3 + portrait_shared_clothing_contents_trigger = { # They have a chance to be bald normally; it's not weird or tease-worthy + CULTURE_SCOPE = culture + CULTURE_FLAG = african + } + is_bald_trigger = yes + exists = scope:had_nick_the_actually_bald + } + } + modifier = { + prestige_level < 2 + factor = 2 + } + give_nickname = nick_the_bald_ironic + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bald_ironic } + trigger_event = lifestyle_nicknames.1000 + } + 10 = { + trigger = { + is_male = yes + age >= 30 + stress >= 100 + NOR = { + portrait_shared_clothing_contents_trigger = { # They have a chance to be bald normally; it's not weird or tease-worthy + CULTURE_SCOPE = culture + CULTURE_FLAG = african + } + is_bald_trigger = yes + exists = scope:had_nick_the_actually_bald + } + } + modifier = { + add = age + } + give_nickname = nick_the_actually_bald + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_actually_bald } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + NOR = { + has_trait = crusader_king + mpo_has_gok_mongol_empire_trigger = yes + } + has_personality_extroverted_trigger = yes + NOT = { + any_realm_county = { + culture = scope:nickname_root_scope.culture + } + } + NOT = { + primary_title ?= { + any_past_holder = { + has_nickname = nick_the_stranger + } + } + } + is_landed = yes + NOT = { exists = scope:had_nick_the_stranger } + } + modifier = { + NOT = { + any_realm_county = { + culture = { + cultural_acceptance = { target = scope:nickname_root_scope.culture value >= 40 } + } + } + } + factor = 2 + } + give_nickname = nick_the_stranger + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_stranger } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_playable_character = yes + NOR = { + any_sub_realm_county = { + faith = scope:nickname_root_scope.faith + } + AND = { + top_liege != this + faith = liege.faith + } + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } + NOT = { exists = scope:had_nick_the_faith } + } + modifier = { + has_trait = zealous + factor = 2 + } + give_nickname = nick_the_faith + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_faith } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = deceitful + has_trait = fickle + has_trait = ambitious + has_trait = greedy + } + NOR = { + has_trait = shy + has_trait = calm + } + ai_boldness >= 75 + ai_honor < -75 + NOT = { exists = scope:had_nick_troublemaker } + } + modifier = { + ai_honor <= -100 + factor = 2 + } + give_nickname = nick_troublemaker + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_troublemaker } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait_extroverted_trigger = no + has_trait_levelheaded_trigger = yes + OR = { + has_trait = calm + has_trait = patient + has_trait = content + has_trait = compassionate + } + days_of_continuous_peace >= 3650 + NOT = { exists = scope:had_nick_the_peaceful } + } + modifier = { + calc_true_if = { + amount >= 2 + has_trait = calm + has_trait = patient + has_trait = content + has_trait = compassionate + } + factor = 2 + } + give_nickname = nick_the_peaceful + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_peaceful } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + days_of_continuous_peace >= 700 + ai_has_economical_boom_personality = yes + any_held_title = { + count >= 4 + title_tier = county + title_province = { + has_ongoing_construction = yes + } + } + NOT = { exists = scope:had_nick_the_builder } + } + modifier = { + any_held_title = { + count = all + title_tier = county + title_province = { + has_ongoing_construction = yes + } + } + factor = 2 + } + give_nickname = nick_the_builder + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_builder } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + has_trait = lazy + OR = { + has_trait = drunkard + has_trait = hashishiyah + } + NOT = { + prestige_level >= 3 + } + is_bald_trigger = no + NOT = { exists = scope:had_nick_the_hairy } + } + modifier = { + prestige_level < 2 + factor = 2 + } + give_nickname = nick_the_hairy + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_hairy } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_in_civil_war = yes + tyranny > 0 + diplomacy <= 8 + NOT = { exists = scope:had_nick_the_unready } + } + modifier = { + diplomacy <= 4 + factor = 2 + } + give_nickname = nick_the_unready + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_unready } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = wrathful + has_trait = irritable + has_trait = impatient + has_trait = ambitious + } + is_at_war = yes + any_character_war = { + primary_attacker = scope:nickname_root_scope + } + ai_boldness >= 50 + NOT = { exists = scope:had_nick_the_quarreller } + } + modifier = { + calc_true_if = { + amount >= 2 + has_trait = wrathful + has_trait = irritable + has_trait = impatient + has_trait = ambitious + } + factor = 2 + } + give_nickname = nick_the_quarreller + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_quarreller } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_dominant_trigger = yes + has_trait = stubborn + is_at_war = yes + any_character_war = { + primary_attacker = scope:nickname_root_scope + OR = { + using_cb = claimant_faction_war + using_cb = claim_cb + } + } + NOT = { exists = scope:had_nick_the_determined } + } + modifier = { + ai_boldness >= 50 + factor = 2 + } + give_nickname = nick_the_determined + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_determined } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = wrathful + has_trait = irritable + has_trait = impatient + } + is_at_war = yes + any_character_war = { + primary_attacker = scope:nickname_root_scope + attacker_war_score <= -50 + } + NOT = { exists = scope:had_nick_the_rash } + } + modifier = { + calc_true_if = { + amount >= 2 + has_trait = wrathful + has_trait = irritable + has_trait = impatient + } + factor = 2 + } + give_nickname = nick_the_rash + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_rash } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = arrogant + OR = { + has_trait = wrathful + has_trait = irritable + has_trait = impatient + } + is_at_war_as_attacker = yes + NOT = { exists = scope:had_nick_the_hotspur } + } + modifier = { + calc_true_if = { + amount >= 2 + has_trait = wrathful + has_trait = irritable + has_trait = impatient + } + factor = 2 + } + give_nickname = nick_the_hotspur + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_hotspur } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = deceitful + has_trait = arbitrary + has_trait = ambitious + has_trait = callous + has_trait = sadistic + has_trait = disloyal + } + any_killed_character = { + is_close_family_of = scope:nickname_root_scope + } + NOT = { exists = scope:had_nick_the_traitor } + } + modifier = { + is_at_war_with_liege = yes + factor = 2 + } + give_nickname = nick_the_traitor + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_traitor } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + any_killed_character = { + count >= 10 + death_reason = death_execution + } + NOT = { exists = scope:had_nick_the_executioner } + } + give_nickname = nick_the_executioner + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_executioner } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + prestige_level >= 5 + piety_level >= 3 + realm_size >= 30 + top_liege = this + NOT = { exists = scope:had_nick_the_great } + } + modifier = { + has_trait = conqueror + factor = 20 + } + modifier = { + piety_level >= 5 + factor = 2 + } + give_nickname = nick_the_great + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_great } + trigger_event = lifestyle_nicknames.1000 + } + 50 = { + trigger = { + NEOW_religion_is_broadly_christian_trigger = yes + has_trait = faith_warrior + NOT = { exists = scope:had_nick_the_crusader } + } + modifier = { + has_education_martial_trigger = yes + factor = 4 + } + give_nickname = nick_the_crusader + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_crusader } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + martial >= 16 + is_at_war = yes + any_character_war = { + primary_attacker = { + this = scope:nickname_root_scope + current_military_strength >= prev.primary_defender.current_military_strength + } + attacker_war_score >= 50 + } + ai_boldness >= 50 + NOT = { exists = scope:had_nick_the_hammer } + } + modifier = { + has_trait = conqueror + factor = 10 + } + modifier = { + ai_boldness >= 100 + factor = 2 + } + give_nickname = nick_the_hammer + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_hammer } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = brave + is_in_army = yes + martial >= 12 + prowess >= 12 + has_trait_submissive_trigger = no + NOT = { exists = scope:had_nick_the_lionheart } + } + modifier = { + martial >= 16 + prowess >= 16 + factor = 2 + } + modifier = { + has_trait = conqueror + factor = 10 + } + give_nickname = nick_the_lionheart + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lionheart } + trigger_event = lifestyle_nicknames.1000 + } + 50 = { + trigger = { + learning >= 20 + has_personality_dominant_trigger = yes + has_personality_extroverted_trigger = yes + NOT = { exists = scope:had_nick_the_turbulent } + } + modifier = { + is_clergy = yes + factor = 2 + } + give_nickname = nick_the_turbulent + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_turbulent } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = witch + NOT = { faith = { has_doctrine = doctrine_witchcraft_accepted } } + NOT = { exists = scope:had_nick_the_witch } + } + modifier = { + piety_level <= 1 + factor = 2 + } + give_nickname = nick_the_witch + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_witch } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + piety_level <= 0 + ai_rationality <= -50 + NOT = { exists = scope:had_nick_the_bewitched } + } + give_nickname = nick_the_bewitched + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bewitched } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = drunkard + prestige_level <= 2 + NOT = { exists = scope:had_nick_the_drunkard } + } + modifier = { + prestige_level <= 1 + factor = 2 + } + give_nickname = nick_the_drunkard + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_drunkard } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = drunkard + prestige_level <= 2 + faith.religion = religion:folkgerman.religion + NOT = { exists = scope:had_nick_ale_lover } + } + modifier = { + prestige_level <= 1 + factor = 2 + } + give_nickname = nick_ale_lover + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_ale_lover } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + culture = { has_cultural_tradition = tradition_seafaring } + location = { is_sea_province = yes } + NOT = { exists = scope:had_nick_the_navigator } + } + modifier = { + prestige_level >= 1 + factor = 2 + } + give_nickname = nick_the_navigator + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_navigator } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lifestyle_poet + has_trait = gregarious + NOT = { exists = scope:had_nick_the_troubadour } + } + modifier = { + has_trait_extroverted_trigger = yes + factor = 2 + } + give_nickname = nick_the_troubadour + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_troubadour } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = greedy + has_trait = avaricious + has_trait = gluttonous + } + ai_greed >= 50 + gold >= 200 + NOT = { exists = scope:had_nick_the_greedy } + } + modifier = { + has_trait = greedy + factor = 2 + } + give_nickname = nick_the_greedy + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_greedy } + trigger_event = lifestyle_nicknames.1000 + } +# 100 = { +# trigger = { +# culture = culture:anglo_saxon +# is_male = yes +# OR = { +# has_trait = greedy +# has_trait = avaricious +# has_trait = gluttonous +# } +# ai_greed >= 50 +# gold >= 200 +# NOT = { exists = scope:had_nick_pennyfather } +# } +# modifier = { +# has_trait = greedy +# factor = 2 +# } +# give_nickname = nick_pennyfather +# # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. +# flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_pennyfather } +# trigger_event = lifestyle_nicknames.1000 +# } + 100 = { + trigger = { + OR = { + has_trait = comfort_eater + has_trait = gluttonous + } + has_personality_introverted_trigger = no + faith = faith:^ + NOT = { exists = scope:had_nick_foul_fart } + } + modifier = { + has_personality_extroverted_trigger = yes + factor = 2 + } + give_nickname = nick_foul_fart + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_foul_fart } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_submissive_trigger = yes + has_personality_introverted_trigger = yes + is_at_war = no + NOT = { exists = scope:had_nick_the_timid } + } + modifier = { + has_trait = craven + factor = 2 + } + give_nickname = nick_the_timid + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_timid } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + prestige_level >= 1 + any_powerful_vassal = { + count >= 5 + } + any_powerful_vassal = { + count = all + opinion = { + target = scope:nickname_root_scope + value >= 25 + } + } + NOT = { exists = scope:had_nick_the_worthy } + } + modifier = { + prestige_level >= 3 + factor = 2 + } + give_nickname = nick_the_worthy + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_worthy } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + any_powerful_vassal = { + count >= 5 + } + any_powerful_vassal = { + count = all + opinion = { + target = scope:nickname_root_scope + value <= -25 + } + } + NOT = { exists = scope:had_nick_the_unworthy } + } + modifier = { + prestige_level <= 0 + factor = 2 + } + give_nickname = nick_the_unworthy + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_unworthy } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + NOT = { exists = scope:had_nick_the_unfaithful } + any_relation = { type = lover } + any_child = { + OR = { + has_trait = bastard + has_trait = legitimized_bastard + } + } + exists = primary_spouse + exposed_cheating_on_spouse_trigger = { SPOUSE = primary_spouse } + } + give_nickname = nick_the_unfaithful + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_unfaithful } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + any_child = { + count >= 5 + mother ?= { + is_married = yes + NOT = { + is_consort_of = scope:nickname_root_scope + } + } + } + any_child = { + count = all + mother ?= { + is_married = yes + NOT = { + is_consort_of = scope:nickname_root_scope + } + add_to_temporary_list = cuckoo + } + } + any_in_list = { + list = cuckoo + count >= 5 + } + NOT = { exists = scope:had_nick_cuckoo } + } + give_nickname = nick_cuckoo + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_cuckoo } + trigger_event = lifestyle_nicknames.1000 + } +# 50 = { +# trigger = { +# is_male = yes +# culture = culture:anglo_saxon +# any_child = { +# count >= 10 +# } +# NOT = { exists = scope:had_nick_aurei_testiculi } +# } +# give_nickname = nick_aurei_testiculi +# # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. +# flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_aurei_testiculi } +# trigger_event = lifestyle_nicknames.1000 +# } + 100 = { + trigger = { + NOT = { exists = scope:had_nick_the_unchaste } + any_relation = { type = lover } + any_child = { + OR = { + has_trait = bastard + has_trait = legitimized_bastard + } + } + exists = primary_spouse + exposed_cheating_on_spouse_trigger = { SPOUSE = primary_spouse } + } + give_nickname = nick_the_unchaste + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_unchaste } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + num_of_relation_lover >= 3 + NOT = { exists = scope:had_nick_the_beguiling } + } + modifier = { + OR = { + has_trait = beauty_good + has_trait = seducer + has_trait = rakish + } + factor = 2 + } + give_nickname = nick_the_beguiling + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_beguiling } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_female = yes + any_relation = { type = lover } + OR = { + has_trait = lustful + has_trait = beauty_good + attraction >= 50 + } + NOT = { exists = scope:had_nick_the_temptress } + } + modifier = { + num_of_relation_lover >= 2 + factor = 2 + } + give_nickname = nick_the_temptress + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_temptress } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_female = yes + any_relation = { type = lover } + attraction >= 50 + OR = { + has_trait = seducer + has_focus = intrigue_temptation_focus + } + NOT = { exists = scope:had_nick_the_seductress } + } + modifier = { + num_of_relation_lover >= 2 + factor = 2 + } + give_nickname = nick_the_seductress + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_seductress } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lustful + OR = { + has_trait = lovers_pox + has_trait = early_great_pox + has_trait = great_pox + has_trait = deviant + } + NOT = { exists = scope:had_nick_the_lewd } + } + modifier = { + any_relation = { type = lover } + factor = 2 + } + give_nickname = nick_the_lewd + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lewd } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + any_relation = { type = lover } + OR = { + has_trait = lustful + has_trait = beauty_good + attraction >= 50 + } + NOT = { exists = scope:had_nick_the_lecher } + } + modifier = { + num_of_relation_lover >= 2 + factor = 2 + } + give_nickname = nick_the_lecher + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lecher } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + any_relation = { type = lover } + attraction >= 50 + OR = { + has_trait = seducer + has_focus = intrigue_temptation_focus + } + NOT = { exists = scope:had_nick_the_seducer } + } + modifier = { + num_of_relation_lover >= 2 + factor = 2 + } + give_nickname = nick_the_seducer + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_seducer } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = deceitful + intrigue >= 16 + NOT = { exists = scope:had_nick_the_trickster } + } + modifier = { + intrigue >= 20 + factor = 2 + } + give_nickname = nick_the_trickster + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_trickster } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + intrigue >= 10 + martial >= 10 + ai_boldness >= 25 + ai_rationality >= 50 + ai_honor < 0 + NOT = { exists = scope:had_nick_the_fox } + } + modifier = { + stewardship >= 10 + factor = 2 + } + give_nickname = nick_the_fox + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_fox } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + diplomacy >= 10 + intrigue >= 10 + learning >= 10 + martial >= 10 + stewardship >= 10 + ai_rationality >= 25 + NOT = { exists = scope:had_nick_the_shrewd } + } + modifier = { + prestige_level >= 3 + factor = 2 + } + give_nickname = nick_the_shrewd + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_shrewd } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_benevolent_trigger = yes + has_personality_emotional_trigger = yes + prestige_level >= 2 + piety_level >= 2 + NOT = { exists = scope:had_nick_the_gracious } + } + modifier = { + prestige_level >= 3 + piety_level >= 3 + factor = 2 + } + give_nickname = nick_the_gracious + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_gracious } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_rationality <= -25 + has_personality_emotional_trigger = yes + has_personality_extroverted_trigger = yes + prestige_level <= 1 + NOT = { exists = scope:had_nick_the_silly } + } + modifier = { + ai_rationality <= -75 + factor = 2 + } + give_nickname = nick_the_silly + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_silly } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_benevolent_trigger = yes + has_personality_extroverted_trigger = yes + has_personality_levelheaded_trigger = yes + NOT = { exists = scope:had_nick_the_affable } + } + modifier = { + ai_compassion >= 100 + factor = 2 + } + give_nickname = nick_the_affable + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_affable } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lifestyle_poet + has_trait = gregarious + NOT = { exists = scope:had_nick_the_bard } + } + modifier = { + has_trait_extroverted_trigger = yes + factor = 2 + } + give_nickname = nick_the_bard + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bard } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_benevolent_trigger = yes + OR = { + has_trait = generous + has_trait = improvident + } + tyranny <= 0 + prestige_level >= 2 + NOT = { exists = scope:had_nick_the_generous } + } + modifier = { + prestige_level >= 3 + factor = 2 + } + give_nickname = nick_the_generous + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_generous } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_greed <= 0 + ai_honor >= 100 + tyranny <= 0 + prestige_level >= 2 + NOT = { exists = scope:had_nick_the_just } + } + modifier = { + prestige_level >= 3 + factor = 2 + } + give_nickname = nick_the_just + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_just } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + gold >= 1000 + ai_greed >= 100 + NOT = { exists = scope:had_nick_moneybags } + } + modifier = { + gold >= 3000 + factor = 2 + } + give_nickname = nick_moneybags + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_moneybags } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lifestyle_poet + diplomacy >= 10 + NOT = { exists = scope:had_nick_the_poet } + } + modifier = { + prestige_level >= 2 + factor = 2 + } + give_nickname = nick_the_poet + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_poet } + trigger_event = lifestyle_nicknames.1000 + } + 500 = { + trigger = { + has_personality_dominant_trigger = yes + is_at_war = yes + any_character_war = { + primary_defender = scope:nickname_root_scope + defender_war_score >= 50 + } + prestige_level >= 2 + NOT = { exists = scope:had_nick_the_ironside } + } + modifier = { + has_trait = unyielding_defender + factor = 2 + } + give_nickname = nick_the_ironside + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_ironside } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + has_education_martial_trigger = yes + ai_boldness >= 50 + any_killed_character = { + count >= 1 + always = yes + } + NOT = { exists = scope:had_nick_the_ruthless } + } + modifier = { + any_killed_character = { + count >= 3 + always = yes + } + factor = 2 + } + give_nickname = nick_the_ruthless + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_ruthless } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + NOT = { exists = scope:had_nick_the_brute } + has_personality_dominant_trigger = yes + has_personality_malicious_trigger = yes + prowess >= 16 + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + } + give_nickname = nick_the_brute + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_brute } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + NOT = { exists = scope:had_nick_the_berserker } + has_trait = berserker + prowess >= 16 + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + } + give_nickname = nick_the_berserker + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_berserker } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + NOT = { exists = scope:had_nick_the_bear } + is_male = yes + has_personality_dominant_trigger = yes + has_personality_extroverted_trigger = yes + prowess >= 12 + martial >= 12 + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + } + give_nickname = nick_the_bear + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bear } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + ai_boldness >= 50 + OR = { + has_trait = brave + has_trait = strong + has_trait = physique_good + } + has_education_martial_trigger = yes + NOT = { exists = scope:had_nick_the_lion } + } + give_nickname = nick_the_lion + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lion } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + martial >= 10 + intrigue >= 10 + OR = { + has_trait = shrewd + has_trait = intellect_good + has_trait = lifestyle_hunter + } + NOT = { exists = scope:had_nick_the_wolf } + } + modifier = { + prestige_level >= 3 + factor = 2 + } + give_nickname = nick_the_wolf + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_wolf } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_extroverted_trigger = yes + ai_boldness >= 100 + prestige_level >= 2 + NOT = { exists = scope:had_nick_the_bold } + } + give_nickname = nick_the_bold + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bold } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + NOT = { exists = scope:had_nick_the_brave } + has_trait = brave + has_personality_dominant_trigger = yes + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + } + modifier = { + prestige_level >= 3 + factor = 2 + } + give_nickname = nick_the_brave + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_brave } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait_xp = { + trait = lifestyle_hunter + track = hunter + value >= trait_second_level + } + NOT = { exists = scope:had_nick_the_hunter } + } + modifier = { + has_trait_xp = { + trait = lifestyle_hunter + track = hunter + value >= trait_third_level + } + factor = 2 + } + give_nickname = nick_the_hunter + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_hunter } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_boldness >= 100 + has_personality_dominant_trigger = yes + has_personality_introverted_trigger = yes + NOT = { exists = scope:had_nick_the_fearless } + } + modifier = { + stress <= 0 + factor = 2 + } + give_nickname = nick_the_fearless + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_fearless } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait_xp = { + trait = lifestyle_hunter + track = falconer + value >= trait_second_level + } + NOT = { exists = scope:had_nick_the_fowler } + } + modifier = { + has_trait_xp = { + trait = lifestyle_hunter + track = falconer + value >= trait_third_level + } + factor = 2 + } + give_nickname = nick_the_fowler + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_fowler } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = sadistic + has_trait = torturer + has_trait = murderer + } + any_killed_character = { + count >= 3 + always = yes + } + NOT = { exists = scope:had_nick_the_butcher } + } + modifier = { + any_killed_character = { + count >= 5 + always = yes + } + factor = 2 + } + give_nickname = nick_the_butcher + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_butcher } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = lifestyle_blademaster + is_knight = yes + is_in_army = yes + } + any_killed_character = { + count >= 3 + always = yes + } + NOT = { exists = scope:had_nick_the_bloody } + } + modifier = { + any_killed_character = { + count >= 5 + always = yes + } + factor = 2 + } + give_nickname = nick_the_bloody + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bloody } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + intrigue >= 10 + prowess >= 12 + martial >= 12 + has_education_martial_trigger = yes + NOT = { exists = scope:had_nick_the_hawk } + } + modifier = { + intrigue >= 16 + factor = 2 + } + give_nickname = nick_the_hawk + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_hawk } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = intellect_good + has_trait = shrewd + has_trait = theologian + has_trait = scholar + learning >= 16 + } + has_personality_introverted_trigger = yes + has_personality_levelheaded_trigger = yes + prestige_level >= 1 + NOT = { exists = scope:had_nick_the_wise } + } + modifier = { + prestige_level >= 3 + factor = 2 + } + give_nickname = nick_the_wise + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_wise } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_submissive_trigger = yes + learning >= 16 + num_of_relation_ward >= 2 + NOT = { exists = scope:had_nick_the_sage } + } + give_nickname = nick_the_sage + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_sage } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = shy + has_trait = reclusive + has_trait = content + } + has_personality_introverted_trigger = yes + has_personality_submissive_trigger = yes + NOT = { exists = scope:had_nick_the_silent } + } + give_nickname = nick_the_silent + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_silent } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + has_personality_emotional_trigger = yes + OR = { + has_trait = deviant + has_trait = cannibal + has_trait = lustful + has_trait = sadistic + } + NOT = { exists = scope:had_nick_the_depraved } + } + give_nickname = nick_the_depraved + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_depraved } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + OR = { + any_prisoner = { + count >= 2 + always = yes + } + tyranny > 0 + dread >= 75 + } + NOT = { exists = scope:had_nick_the_cruel } + } + give_nickname = nick_the_cruel + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_cruel } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + OR = { + has_trait = giant + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + has_trait = scaly + } + OR = { + tyranny > 0 + dread >= 75 + } + NOT = { exists = scope:had_nick_the_abominable } + } + give_nickname = nick_the_abominable + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_abominable } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + piety_level <= 0 + has_trait = excommunicated + } + OR = { + has_personality_malicious_trigger = yes + num_sinful_traits >= 1 + } + NOT = { exists = scope:had_nick_the_wicked } + } + modifier = { + num_sinful_traits >= 2 + factor = 2 + } + give_nickname = nick_the_wicked + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_wicked } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + piety_level <= 0 + has_trait = excommunicated + } + OR = { + has_personality_malicious_trigger = yes + num_sinful_traits >= 1 + } + NOT = { exists = scope:had_nick_the_accursed } + } + modifier = { + num_sinful_traits >= 2 + factor = 2 + } + give_nickname = nick_the_accursed + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_accursed } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + exists = cp:councillor_court_chaplain + opinion = { + target = cp:councillor_court_chaplain + value <= -30 + } + OR = { + num_sinful_traits >= 1 + piety_level <= 0 + } + NOT = { exists = scope:had_nick_priest_hater } + } + modifier = { + num_sinful_traits >= 2 + factor = 2 + } + give_nickname = nick_priest_hater + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_priest_hater } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_zeal >= 25 + top_liege != this + NOR = { + religion = liege.religion + faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + NOT = { exists = scope:had_nick_the_heathen } + } + give_nickname = nick_the_heathen + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_heathen } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + faith.religion = { is_in_family = rf_abrahamic } + OR = { + num_sinful_traits >= 2 + piety_level <= 0 + has_trait = excommunicated + } + has_personality_malicious_trigger = yes + NOT = { exists = scope:had_nick_the_devil } + } + modifier = { + num_sinful_traits >= 3 + factor = 2 + } + give_nickname = nick_the_devil + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_devil } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + faith.religion = { is_in_family = rf_abrahamic } + OR = { + num_sinful_traits >= 2 + piety_level <= 0 + has_trait = excommunicated + } + has_personality_dominant_trigger = yes + NOT = { exists = scope:had_nick_the_black } + } + give_nickname = nick_the_black + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_black } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + piety_level >= 4 + has_personality_submissive_trigger = yes + num_sinful_traits <= 0 + NOT = { exists = scope:had_nick_the_pious } + } + modifier = { + piety_level >= 5 + factor = 2 + } + give_nickname = nick_the_pious + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_pious } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + piety_level >= 3 + has_trait = humble + num_sinful_traits <= 0 + ai_boldness < 0 + NOT = { exists = scope:had_nick_the_humble } + } + modifier = { + piety_level >= 4 + factor = 2 + } + give_nickname = nick_the_humble + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_humble } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + faith.religion = { is_in_family = rf_abrahamic } + piety_level >= 4 + has_personality_extroverted_trigger = yes + num_sinful_traits <= 0 + NOT = { exists = scope:had_nick_the_blessed } + } + modifier = { + piety_level >= 5 + factor = 2 + } + give_nickname = nick_the_blessed + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_blessed } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + faith.religion = { is_in_family = rf_abrahamic } + piety_level >= 3 + has_trait = theologian + has_trait_extroverted_trigger = no + num_sinful_traits <= 0 + NOT = { exists = scope:had_nick_the_theologian } + } + modifier = { + piety_level >= 4 + factor = 2 + } + give_nickname = nick_the_theologian + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_theologian } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + religion = { is_in_family = rf_eastern } + piety_level >= 4 + has_personality_extroverted_trigger = yes + num_sinful_traits <= 0 + NOT = { exists = scope:had_nick_the_enlightened } + } + modifier = { + piety_level >= 5 + factor = 2 + } + give_nickname = nick_the_enlightened + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_enlightened } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + num_virtuous_traits >= 2 + piety_level >= 4 + } + has_personality_introverted_trigger = yes + num_sinful_traits <= 0 + NOT = { exists = scope:had_nick_the_holy } + } + modifier = { + piety_level >= 5 + factor = 2 + } + give_nickname = nick_the_holy + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_holy } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + faith.religion = { is_in_family = rf_abrahamic } + OR = { + num_virtuous_traits >= 2 + piety_level >= 4 + } + has_personality_submissive_trigger = yes + has_personality_extroverted_trigger = yes + num_sinful_traits <= 0 + NOT = { exists = scope:had_nick_the_confessor } + } + modifier = { + top_liege = this + factor = 2 + } + give_nickname = nick_the_confessor + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_confessor } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + is_married = no + can_have_children = no + } + OR = { + has_trait = chaste + has_trait = celibate + } + NOT = { exists = scope:had_nick_the_chaste } + } + give_nickname = nick_the_chaste + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_chaste } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + faith = { has_doctrine = doctrine_theocracy_temporal } + has_personality_levelheaded_trigger = yes + has_personality_introverted_trigger = yes + has_personality_submissive_trigger = yes + piety_level >= 2 + num_sinful_traits <= 0 + NOT = { exists = scope:had_nick_the_monk } + } + give_nickname = nick_the_monk + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_monk } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + piety_level >= 2 + has_trait_xp = { + trait = pilgrim + value >= trait_second_level + } + NOT = { exists = scope:had_nick_the_pilgrim } + } + modifier = { + has_trait_xp = { + trait = pilgrim + value >= trait_third_level + } + factor = 2 + } + give_nickname = nick_the_pilgrim + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_pilgrim } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = diligent + has_trait = ambitious + is_at_war = no + NOT = { exists = scope:had_nick_the_able } + } + modifier = { + prestige_level >= 3 + factor = 2 + } + give_nickname = nick_the_able + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_able } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_compassion >= 100 + has_personality_benevolent_trigger = yes + has_personality_emotional_trigger = yes + NOR = { + any_prisoner = { + count >= 1 + always = yes + } + any_killed_character = { + count >= 1 + always = yes + } + } + NOT = { exists = scope:had_nick_the_compassionate } + } + give_nickname = nick_the_compassionate + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_compassionate } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_levelheaded_trigger = yes + ai_honor >= 75 + ai_greed <= 0 + NOT = { exists = scope:had_nick_the_noble } + } + modifier = { + prestige_level >= 2 + factor = 2 + } + give_nickname = nick_the_noble + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_noble } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_boldness <= 0 + has_personality_emotional_trigger = yes + has_personality_benevolent_trigger = yes + NOT = { exists = scope:had_nick_the_gentle } + } + give_nickname = nick_the_gentle + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_gentle } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_benevolent_trigger = yes + prestige_level >= 3 + tyranny <= 0 + NOT = { exists = scope:had_nick_the_good } + } + modifier = { + prestige_level >= 2 + factor = 2 + } + give_nickname = nick_the_good + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_good } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_compassion >= 75 + has_personality_benevolent_trigger = yes + has_personality_extroverted_trigger = yes + NOT = { exists = scope:had_nick_the_kind } + } + give_nickname = nick_the_kind + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_kind } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_extroverted_trigger = yes + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + has_trait_malicious_trigger = no + NOT = { exists = scope:had_nick_the_merry } + } + give_nickname = nick_the_merry + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_merry } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_honor >= 100 + has_personality_levelheaded_trigger = yes + has_personality_benevolent_trigger = yes + NOT = { exists = scope:had_nick_the_honorable } + } + give_nickname = nick_the_honorable + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_honorable } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = loyal + untrustworthy_trigger = no + NOT = { exists = scope:had_nick_the_loyal } + } + give_nickname = nick_the_loyal + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_loyal } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = honest + has_trait_malicious_trigger = no + NOT = { exists = scope:had_nick_the_honest } + } + give_nickname = nick_the_honest + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_honest } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_personality_malicious_trigger = yes + tyranny >= 50 + dread >= 75 + } + tyranny >= 10 + NOT = { exists = scope:had_nick_the_terrible } + } + modifier = { + tyranny >= 50 + factor = 2 + } + give_nickname = nick_the_terrible + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_terrible } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_personality_dominant_trigger = yes + tyranny >= 50 + } + tyranny >= 10 + NOT = { exists = scope:had_nick_the_tyrant } + } + modifier = { + tyranny >= 30 + factor = 2 + } + give_nickname = nick_the_tyrant + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_tyrant } + trigger_event = lifestyle_nicknames.1000 + } + 50 = { + trigger = { + age >= 60 + NOT = { exists = scope:had_nick_the_old } + } + modifier = { + age >= 80 + factor = 5 + } + give_nickname = nick_the_old + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_old } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = shy + has_trait = reclusive + } + has_personality_introverted_trigger = yes + has_trait_dominant_trigger = no + NOT = { exists = scope:had_nick_the_shy } + } + modifier = { + has_personality_submissive_trigger = yes + factor = 2 + } + give_nickname = nick_the_shy + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_shy } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + prestige_level >= 4 + age <= 23 + NOT = { exists = scope:had_nick_the_young } + } + modifier = { + prestige_level >= 5 + factor = 2 + } + give_nickname = nick_the_young + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_young } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + OR = { + has_trait = bastard + has_trait = legitimized_bastard + has_trait = bastard_founder + } + NOT = { exists = scope:had_nick_the_bastard } + } + modifier = { + prestige_level <= 1 + factor = 2 + } + give_nickname = nick_the_bastard + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bastard } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_boldness >= 50 + has_personality_extroverted_trigger = yes + has_personality_dominant_trigger = yes + prestige_level >= 1 + NOT = { exists = scope:had_nick_the_proud } + } + modifier = { + prestige_level >= 2 + factor = 2 + } + give_nickname = nick_the_proud + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_proud } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + NOT = { exists = scope:had_nick_the_strong } + OR = { + has_trait = strong + has_trait = physique_good + } + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + } + modifier = { + OR = { + has_trait = physique_good_2 + has_trait = physique_good_3 + } + factor = 2 + } + give_nickname = nick_the_strong + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_strong } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + has_conventionally_attractive_trigger = yes + NOR = { + has_trait = disfigured + has_trait = leper + has_trait = scaly + has_trait = beauty_bad + } + NOT = { exists = scope:had_nick_the_handsome } + } + modifier = { + OR = { + has_trait = beauty_good_2 + has_trait = beauty_good_3 + } + factor = 2 + } + give_nickname = nick_the_handsome + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_handsome } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_female = yes + has_conventionally_attractive_trigger = yes + age <= 40 + NOR = { + has_trait = disfigured + has_trait = leper + has_trait = scaly + has_trait = beauty_bad + } + NOT = { exists = scope:had_nick_the_fair } + } + modifier = { + OR = { + has_trait = beauty_good_2 + has_trait = beauty_good_3 + } + factor = 2 + } + give_nickname = nick_the_fair + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_fair } + trigger_event = lifestyle_nicknames.1000 + } +# 100 = { +# trigger = { +# culture = culture:anglo_saxon +# is_female = yes +# has_conventionally_attractive_trigger = yes +# age <= 40 +# NOR = { +# has_trait = disfigured +# has_trait = leper +# has_trait = scaly +# has_trait = beauty_bad +# } +# NOT = { exists = scope:had_nick_swan_neck } +# } +# modifier = { +# OR = { +# has_trait = beauty_good_2 +# has_trait = beauty_good_3 +# } +# factor = 2 +# } +# give_nickname = nick_swan_neck +# # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. +# flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_swan_neck } +# trigger_event = lifestyle_nicknames.1000 +# } + 100 = { + trigger = { + OR = { + has_conventionally_attractive_trigger = yes + has_trait = lustful + } + NOR = { + has_trait = disfigured + has_trait = leper + has_trait = scaly + has_trait = beauty_bad + } + any_targeting_scheme = { + OR = { + scheme_type = seduce + scheme_type = courting + } + } + NOT = { exists = scope:had_nick_the_desired } + } + modifier = { + OR = { + has_trait = beauty_good_2 + has_trait = beauty_good_3 + } + factor = 2 + } + give_nickname = nick_the_desired + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_desired } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = beauty_good + age <= 40 + NOR = { + has_trait = disfigured + has_trait = leper + has_trait = scaly + has_trait = beauty_bad + } + NOT = { exists = scope:had_nick_the_beautiful } + } + modifier = { + OR = { + has_trait = beauty_good_2 + has_trait = beauty_good_3 + } + factor = 2 + } + give_nickname = nick_the_beautiful + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_beautiful } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = giant + NOT = { exists = scope:had_nick_the_giant } + } + give_nickname = nick_the_giant + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_giant } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + prowess >= 10 + current_weight >= 50 + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + NOT = { exists = scope:had_nick_the_girthy } + } + modifier = { + current_weight >= 75 + factor = 2 + } + give_nickname = nick_the_girthy + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_girthy } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + ai_rationality <= -75 + has_trait = lunatic + has_trait = possessed + AND = { + tyranny >= 50 + has_personality_emotional_trigger = yes + has_personality_malicious_trigger = yes + } + } + NOT = { exists = scope:had_nick_the_mad } + } + give_nickname = nick_the_mad + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_mad } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + probably_unintelligent_trigger = yes + NOT = { exists = scope:had_nick_the_simple } + } + give_nickname = nick_the_simple + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_simple } + trigger_event = lifestyle_nicknames.1000 + } + 500 = { + trigger = { + has_trait = leper + NOT = { exists = scope:had_nick_the_leper } + } + give_nickname = nick_the_leper + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_leper } + trigger_event = lifestyle_nicknames.1000 + } + 300 = { + trigger = { + has_trait = maimed + NOT = { exists = scope:had_nick_half_hand } + } + give_nickname = nick_half_hand + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_half_hand } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = beauty_bad + has_trait = hunchbacked + has_trait = scaly + has_trait = disfigured + has_trait = inbred + scarred_trait_activation_3 = yes + } + NOT = { + has_trait = beauty_good + } + NOT = { exists = scope:had_nick_the_hideous } + } + modifier = { + OR = { + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + } + factor = 2 + } + give_nickname = nick_the_hideous + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_hideous } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = beauty_bad + has_trait = hunchbacked + has_trait = scaly + has_trait = inbred + } + NOT = { + has_trait = beauty_good + } + NOT = { exists = scope:had_nick_the_frog } + } + modifier = { + OR = { + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + } + factor = 2 + } + give_nickname = nick_the_frog + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_frog } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = beauty_bad + has_trait = hunchbacked + has_trait = scaly + has_trait = inbred + scarred_trait_activation_3 = yes + } + NOT = { + has_trait = beauty_good + } + NOT = { exists = scope:had_nick_the_repulsive } + } + modifier = { + OR = { + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + } + factor = 2 + } + give_nickname = nick_the_repulsive + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_repulsive } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = fragile_bones + has_trait = infirm + has_trait = weak + has_trait = spindly + has_trait = physique_bad + has_trait = bleeder + has_trait = inbred + } + NOT = { + has_trait = physique_good + } + NOT = { exists = scope:had_nick_the_frail } + } + modifier = { + OR = { + has_trait = physique_bad_2 + has_trait = physique_bad_3 + } + factor = 2 + } + give_nickname = nick_the_frail + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_frail } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + prowess < 8 + OR = { + has_trait = faltering_heart + has_trait = infirm + has_trait = spindly + has_trait = weak + has_trait = physique_bad + has_trait = bleeder + has_trait = inbred + } + NOT = { + has_trait = physique_good + } + NOT = { exists = scope:had_nick_the_weak } + } + modifier = { + OR = { + has_trait = physique_bad_2 + has_trait = physique_bad_3 + } + factor = 2 + } + give_nickname = nick_the_weak + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_weak } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = clubfooted + has_trait = weak + has_trait = spindly + has_trait = physique_bad + } + NOT = { + has_trait = physique_good + } + NOT = { exists = scope:had_nick_the_lame } + } + modifier = { + has_trait = clubfooted + factor = 2 + } + give_nickname = nick_the_lame + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lame } + trigger_event = lifestyle_nicknames.1000 + } + 1000 = { + trigger = { + has_trait = lisping + has_trait = clubfooted + NOT = { exists = scope:had_nick_the_lisp_and_lame } + } + give_nickname = nick_the_lisp_and_lame + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lisp_and_lame } + trigger_event = lifestyle_nicknames.1000 + } + 300 = { + trigger = { + has_trait = hunchbacked + NOT = { exists = scope:had_nick_the_hunchback } + } + give_nickname = nick_the_hunchback + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_hunchback } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + current_weight >= 50 + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + NOT = { exists = scope:had_nick_the_fat } + } + modifier = { + current_weight >= 75 + factor = 2 + } + give_nickname = nick_the_fat + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_fat } + trigger_event = lifestyle_nicknames.1000 + } +# 100 = { +# trigger = { +# culture = culture:anglo_saxon +# current_weight >= 50 +# OR = { +# loves_food_trigger = yes +# has_trait = lifestyle_reveler +# } +# NOT = { exists = scope:had_nick_chubbycheeks } +# } +# modifier = { +# current_weight >= 75 +# factor = 2 +# } +# give_nickname = nick_chubbycheeks +# # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. +# flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_chubbycheeks } +# trigger_event = lifestyle_nicknames.1000 +# } + 50 = { + trigger = { + current_weight >= 50 + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + diplomacy <= 2 + NOT = { exists = scope:had_nick_the_slobberer } + } + modifier = { + current_weight >= 75 + factor = 2 + } + give_nickname = nick_the_slobberer + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_slobberer } + trigger_event = lifestyle_nicknames.1000 + } + 50 = { + trigger = { + current_weight >= 50 + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + NOT = { exists = scope:had_nick_the_rotund } + } + modifier = { + current_weight >= 75 + factor = 2 + } + give_nickname = nick_the_rotund + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_rotund } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { + trigger = { + current_weight >= 50 + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + NOT = { exists = scope:had_nick_the_plump } + } + modifier = { + current_weight >= 75 + factor = 2 + } + give_nickname = nick_the_plump + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_plump } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = blind + NOT = { exists = scope:had_nick_the_blind } + } + give_nickname = nick_the_blind + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_blind } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = stuttering + NOT = { exists = scope:had_nick_the_stammerer } + } + give_nickname = nick_the_stammerer + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_stammerer } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = gout_ridden + NOT = { exists = scope:had_nick_the_gouty } + } + give_nickname = nick_the_gouty + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_gouty } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = consumption + has_trait = cancer + has_trait = pneumonic + has_trait = typhus + has_trait = smallpox + has_trait = measles + has_trait = dysentery + has_trait = ergotism + has_trait = bubonic_plague + } + prestige_level <= 1 + NOT = { exists = scope:had_nick_the_diseased } + } + give_nickname = nick_the_diseased + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_diseased } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { + trigger = { + dynasty ?= { dynasty_prestige_level >= 5 } + prestige_level <= 1 + NOT = { exists = scope:had_nick_the_disgraceful } + } + give_nickname = nick_the_disgraceful + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_disgraceful } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + NOT = { exists = scope:had_nick_bad_hand } + has_trait = maimed + AND = { + has_trait = scarred + prowess < 8 + } + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + } + give_nickname = nick_bad_hand + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_bad_hand } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = one_eyed + NOT = { exists = scope:had_nick_the_one_eyed } + } + give_nickname = nick_the_one_eyed + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_one_eyed } + trigger_event = lifestyle_nicknames.1000 + } + 50 = { + trigger = { + has_trait = craven + prestige_level <= 2 + has_personality_submissive_trigger = yes + NOT = { exists = scope:had_nick_the_trembling } + } + modifier = { + prestige_level <= 1 + factor = 2 + } + give_nickname = nick_the_trembling + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_trembling } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = craven + prestige_level <= 2 + has_personality_submissive_trigger = yes + NOT = { exists = scope:had_nick_the_craven } + } + modifier = { + prestige_level <= 1 + factor = 2 + } + give_nickname = nick_the_craven + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_craven } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + ai_rationality <= -75 + has_trait = lunatic + has_trait = possessed + AND = { + tyranny >= 50 + has_personality_emotional_trigger = yes + has_personality_malicious_trigger = yes + } + } + NOT = { exists = scope:had_nick_the_insane } + } + give_nickname = nick_the_insane + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_insane } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_introverted_trigger = yes + has_personality_dominant_trigger = yes + has_personality_levelheaded_trigger = yes + NOT = { exists = scope:had_nick_the_joyless } + } + give_nickname = nick_the_joyless + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_joyless } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = viking + martial >= 10 + prowess >= 10 + NOT = { exists = scope:had_nick_the_viking } + } + give_nickname = nick_the_viking + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_viking } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + culture = { has_cultural_tradition = tradition_horse_lords } + martial >= 10 + prowess >= 10 + number_maa_regiments_of_base_type = { + type = archer_cavalry + value > 1 + } + any_raid_target = { + always = yes + } + NOT = { exists = scope:had_nick_the_horse } + } + give_nickname = nick_the_horse + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_horse } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + probably_unintelligent_trigger = yes + has_personality_introverted_trigger = yes + has_personality_levelheaded_trigger = yes + NOT = { exists = scope:had_nick_the_dull } + } + give_nickname = nick_the_dull + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_dull } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_dominant_trigger = yes + has_personality_extroverted_trigger = yes + prowess >= 16 + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + NOT = { exists = scope:had_nick_strongarm } + } + give_nickname = nick_strongarm + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_strongarm } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = one_eyed + NOT = { exists = scope:had_nick_one_eye } + } + give_nickname = nick_one_eye + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_one_eye } + trigger_event = lifestyle_nicknames.1000 + } + 300 = { + trigger = { + has_trait = maimed + NOT = { exists = scope:had_nick_one_hand } + } + give_nickname = nick_one_hand + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_one_hand } + trigger_event = lifestyle_nicknames.1000 + } + 300 = { + trigger = { + has_education_intrigue_trigger = yes + intrigue >= 16 + has_trait = disfigured + NOT = { exists = scope:had_nick_of_a_thousand_faces } + } + give_nickname = nick_of_a_thousand_faces + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_of_a_thousand_faces } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = consumption + has_trait = cancer + has_trait = pneumonic + has_trait = typhus + has_trait = smallpox + has_trait = measles + has_trait = dysentery + has_trait = ergotism + has_trait = bubonic_plague + } + prestige_level <= 1 + NOT = { exists = scope:had_nick_the_plaguebearer } + } + give_nickname = nick_the_plaguebearer + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_plaguebearer } + trigger_event = lifestyle_nicknames.1000 + } + 500 = { + trigger = { + calc_true_if = { + amount >= 2 + has_trait = maimed + has_trait = one_eyed + has_trait = one_legged + has_trait = disfigured + } + stress < 100 + health >= medium_health + NOT = { exists = scope:had_nick_the_persevering } + } + give_nickname = nick_the_persevering + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_persevering } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = physique_good_2 + has_trait = physique_good_3 + has_trait = beauty_good_2 + has_trait = beauty_good_3 + } + OR = { + has_trait = physique_bad_2 + has_trait = physique_bad_3 + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + has_trait = giant + has_trait = albino + has_trait = scaly + } + NOT = { exists = scope:had_nick_the_chimera } + } + give_nickname = nick_the_chimera + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_chimera } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + highest_held_title_tier <= tier_duchy + realm_size >= 5 + any_vassal = { + count >= 3 + } + has_personality_benevolent_trigger = yes + prestige_level >= 2 + diplomacy >= 12 + NOT = { exists = scope:had_nick_the_lord_of_realm } + } + give_nickname = nick_the_lord_of_realm + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lord_of_realm } + trigger_event = lifestyle_nicknames.1000 + } + 50 = { + trigger = { + highest_held_title_tier <= tier_duchy + domain_size <= 2 + any_sibling = { + highest_held_title_tier >= tier_kingdom + domain_size >= 4 + prestige_level >= scope:nickname_root_scope.prestige_level + } + NOT = { exists = scope:had_nick_lackland } + } + give_nickname = nick_lackland + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_lackland } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + culture = { + OR = { + this = culture:breton + any_parent_culture_or_above = { + this = culture:breton + } + } + } + is_at_war = yes + martial >= 12 + NOT = { exists = scope:had_nick_twistedbeard } + } + give_nickname = nick_twistedbeard + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_twistedbeard } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { # Will make the character grow a beautiful beard + trigger = { + is_male = yes + age >= 30 + learning >= 16 + OR = { + has_trait = lifestyle_mystic + has_trait = scholar + has_trait = theologian + } + NOR = { + exists = scope:had_nick_the_bearded + has_trait = beardless_eunuch + } + } + give_nickname = nick_the_bearded + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bearded } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = strong + has_trait = physique_good + } + OR = { + has_trait = beauty_bad + has_trait = hunchbacked + has_trait = scaly + has_trait = disfigured + } + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + NOT = { exists = scope:had_nick_the_boar } + } + give_nickname = nick_the_boar + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_boar } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = disfigured + has_personality_introverted_trigger = yes + NOT = { exists = scope:had_nick_the_faceless } + } + give_nickname = nick_the_faceless + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_faceless } + trigger_event = lifestyle_nicknames.1000 + } + 300 = { + trigger = { + has_trait = giant + has_trait = one_eyed + NOT = { exists = scope:had_nick_the_cyclops } + } + give_nickname = nick_the_cyclops + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_cyclops } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = giant + OR = { + has_trait = weak + has_trait = spindly + has_trait = physique_bad + } + NOT = { exists = scope:had_nick_the_beanstalk } + } + give_nickname = nick_the_beanstalk + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_beanstalk } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_female = yes + faith = { has_doctrine = doctrine_theocracy_temporal } + has_personality_levelheaded_trigger = yes + has_personality_introverted_trigger = yes + has_personality_submissive_trigger = yes + piety_level >= 2 + num_sinful_traits <= 0 + NOT = { exists = scope:had_nick_the_nun } + } + give_nickname = nick_the_nun + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_nun } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_in_civil_war = yes + tyranny > 0 + diplomacy <= 8 + NOT = { exists = scope:had_nick_the_ill_ruler } + } + modifier = { + diplomacy <= 4 + factor = 2 + } + give_nickname = nick_the_ill_ruler + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_ill_ruler } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_in_civil_war = yes + tyranny > 0 + diplomacy <= 8 + NOT = { exists = scope:had_nick_the_careless } + } + modifier = { + diplomacy <= 4 + factor = 2 + } + give_nickname = nick_the_careless + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_careless } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { + trigger = { + age >= 60 + health >= good_health + NOT = { exists = scope:had_nick_the_undying } + } + give_nickname = nick_the_undying + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_undying } + trigger_event = lifestyle_nicknames.1000 + } + 50 = { + trigger = { + OR = { + debt_level >= 1 + treasury_debt_level >= 1 + } + NOT = { exists = scope:had_nick_of_the_empty_pockets } + } + modifier = { + factor = debt_level + } + modifier = { + factor = treasury_debt_level + } + give_nickname = nick_of_the_empty_pockets + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_of_the_empty_pockets } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = giant + prowess >= 20 + NOT = { exists = scope:had_nick_the_goliath } + } + give_nickname = nick_the_goliath + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_goliath } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_education_martial_trigger = yes + exists = capital_county + capital_county.county_opinion >= 50 + NOT = { exists = scope:had_nick_the_shield_of_capital } + } + give_nickname = nick_the_shield_of_capital + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_shield_of_capital } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = giant + religion = { is_in_family = rf_pagan } + NOT = { exists = scope:had_nick_the_ladder_legs } + } + give_nickname = nick_the_ladder_legs + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_ladder_legs } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { + trigger = { + has_personality_dominant_trigger = yes + has_personality_extroverted_trigger = yes + has_trait = beauty_good + NOT = { exists = scope:had_nick_the_peacock } + } + give_nickname = nick_the_peacock + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_peacock } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + dread >= 50 + has_personality_dominant_trigger = yes + has_personality_extroverted_trigger = yes + NOT = { exists = scope:had_nick_the_bellower } + } + give_nickname = nick_the_bellower + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_bellower } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lifestyle_physician + has_personality_benevolent_trigger = yes + piety_level >= 2 + NOT = { exists = scope:had_nick_the_healer } + } + give_nickname = nick_the_healer + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_healer } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_dominant_trigger = yes + has_personality_benevolent_trigger = yes + prestige_level >= 2 + piety_level >= 2 + NOT = { exists = scope:had_nick_the_righteous } + } + modifier = { + prestige_level >= 3 + piety_level >= 3 + factor = 2 + } + give_nickname = nick_the_righteous + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_righteous } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_compassion >= 75 + ai_rationality >= 75 + has_personality_benevolent_trigger = yes + NOT = { exists = scope:had_nick_the_understanding } + } + give_nickname = nick_the_understanding + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_understanding } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + age >= 75 + piety_level >= 2 + NOT = { exists = scope:had_nick_the_venerable } + } + modifier = { + piety_level >= 3 + factor = 2 + } + give_nickname = nick_the_venerable + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_venerable } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lifestyle_mystic + has_personality_benevolent_trigger = yes + piety_level >= 2 + NOT = { exists = scope:had_nick_the_miracle_worker } + } + give_nickname = nick_the_miracle_worker + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_miracle_worker } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_vengefulness <= -50 + has_personality_benevolent_trigger = yes + has_personality_levelheaded_trigger = yes + NOR = { + any_prisoner = { + count >= 1 + always = yes + } + any_killed_character = { + count >= 1 + always = yes + } + } + NOT = { exists = scope:had_nick_the_merciful } + } + give_nickname = nick_the_merciful + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_merciful } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + intrigue >= 14 + diplomacy >= 14 + has_personality_extroverted_trigger = yes + NOT = { exists = scope:had_nick_the_silver_tongue } + } + give_nickname = nick_the_silver_tongue + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_silver_tongue } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + prowess >= 10 + attraction >= 30 + OR = { + has_trait = athletic + has_trait = strong + has_trait = physique_good + } + NOT = { exists = scope:had_nick_the_stallion } + } + give_nickname = nick_the_stallion + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_stallion } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = infirm + has_trait = withering_mind + probably_unintelligent_trigger = yes + } + NOT = { exists = scope:had_nick_the_forgetful } + } + modifier = { + has_trait = fickle + factor = 2 + } + give_nickname = nick_the_forgetful + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_forgetful } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = shy + has_trait = reclusive + } + has_personality_introverted_trigger = yes + has_personality_submissive_trigger = yes + piety_level >= 1 + NOT = { exists = scope:had_nick_the_hermit } + } + give_nickname = nick_the_hermit + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_hermit } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = shy + has_trait = reclusive + } + has_personality_introverted_trigger = yes + has_personality_submissive_trigger = yes + NOT = { exists = scope:had_nick_the_recluse } + } + give_nickname = nick_the_recluse + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_recluse } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = fragile_bones + has_trait = infirm + has_trait = spindly + has_trait = weak + has_trait = physique_bad + has_trait = bleeder + has_trait = inbred + } + NOR = { + has_trait = strong + has_trait = physique_good + } + NOT = { exists = scope:had_nick_the_feeble } + } + give_nickname = nick_the_feeble + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_feeble } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_dominant_trigger = yes + has_personality_extroverted_trigger = yes + has_trait = beauty_good + NOT = { exists = scope:had_nick_the_vain } + } + give_nickname = nick_the_vain + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_vain } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { + trigger = { + days_of_continuous_peace >= 700 + ai_has_economical_boom_personality = yes + any_held_title = { + count >= 4 + title_tier = county + title_province = { + has_ongoing_construction = yes + } + } + NOT = { exists = scope:had_nick_the_castellan } + } + modifier = { + any_held_title = { + count = all + title_tier = county + title_province = { + has_ongoing_construction = yes + } + } + factor = 2 + } + give_nickname = nick_the_castellan + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_castellan } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { + trigger = { + piety_level >= 2 + faith.religion = { is_in_family = rf_abrahamic } + days_of_continuous_peace >= 700 + ai_has_economical_boom_personality = yes + any_held_title = { + count >= 4 + title_tier = county + title_province = { + has_ongoing_construction = yes + } + } + NOT = { exists = scope:had_nick_the_carpenter } + } + modifier = { + any_held_title = { + count = all + title_tier = county + title_province = { + has_ongoing_construction = yes + } + } + factor = 2 + } + give_nickname = nick_the_carpenter + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_carpenter } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { + trigger = { + intrigue >= 10 + prowess >= 12 + martial >= 12 + has_education_martial_trigger = yes + NOT = { exists = scope:had_nick_the_griffin } + } + modifier = { + intrigue >= 16 + factor = 2 + } + give_nickname = nick_the_griffin + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_griffin } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_greed <= -50 + any_sponsored_inspiration = { } + prestige_level >= 2 + highest_held_title_tier >= tier_kingdom + NOT = { exists = scope:had_nick_the_patron_of_arts } + } + give_nickname = nick_the_patron_of_arts + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_patron_of_arts } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_zeal >= 100 + ai_rationality <= -50 + piety_level >= 2 + NOT = { exists = scope:had_nick_the_zealot } + } + give_nickname = nick_the_zealot + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_zealot } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + age >= 75 + NOT = { exists = scope:had_nick_the_elder } + } + give_nickname = nick_the_elder + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_elder } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + num_sinful_traits >= 1 + OR = { + has_trait = sadistic + has_trait = callous + } + ai_zeal <= 0 + NOT = { exists = scope:had_nick_the_evil } + } + modifier = { + num_sinful_traits >= 2 + factor = 2 + } + give_nickname = nick_the_evil + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_evil } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_extroverted_trigger = yes + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + diplomacy >= 8 + has_trait_malicious_trigger = no + NOT = { exists = scope:had_nick_the_jovial } + } + give_nickname = nick_the_jovial + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_jovial } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_extroverted_trigger = yes + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + ai_rationality < 0 + has_trait_malicious_trigger = no + NOT = { exists = scope:had_nick_the_jolly } + } + give_nickname = nick_the_jolly + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_jolly } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = lifestyle_mystic + has_trait = lunatic + has_trait = possessed + } + has_trait_malicious_trigger = no + NOT = { exists = scope:had_nick_the_strange } + } + give_nickname = nick_the_strange + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_strange } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = possessed + stress >= 200 + NOT = { exists = scope:had_nick_the_haunted } + } + give_nickname = nick_the_haunted + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_haunted } + trigger_event = lifestyle_nicknames.1000 + } + 300 = { + trigger = { + diplomacy < 8 + stewardship < 8 + martial < 8 + intrigue < 8 + learning < 8 + is_at_war_as_defender = yes + NOT = { exists = scope:had_nick_the_unlucky } + } + give_nickname = nick_the_unlucky + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_unlucky } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + any_relation = { + type = friend + always = yes + } + any_relation = { + type = lover + always = yes + } + is_at_war = no + gold >= 500 + realm_size >= 5 + has_any_illness = no + health > poor_health + stress < 100 + NOT = { exists = scope:had_nick_the_lucky } + } + give_nickname = nick_the_lucky + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lucky } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_male = yes + prowess <= 4 + martial <= 4 + has_education_learning_trigger = yes + prestige_level <= 1 + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nickname_root_scope } + NOT = { exists = scope:had_nick_the_effeminate } + } + give_nickname = nick_the_effeminate + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_effeminate } + trigger_event = lifestyle_nicknames.1000 + } +# 100 = { +# trigger = { +# is_male = yes +# culture = culture:anglo_saxon +# prowess <= 4 +# fertility <= 0.4 +# NOT = { +# any_child = { +# count > 1 +# } +# } +# NOT = { exists = scope:had_nick_softsword } +# } +# give_nickname = nick_softsword +# # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. +# flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_softsword } +# trigger_event = lifestyle_nicknames.1000 +# } + 100 = { + trigger = { + has_trait = fickle + ai_rationality <= -50 + prestige_level <= 2 + NOT = { exists = scope:had_nick_the_clueless } + } + modifier = { + probably_unintelligent_trigger = yes + factor = 2 + } + give_nickname = nick_the_clueless + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_clueless } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_vengefulness >= 35 + OR = { + has_trait = wrathful + has_trait = irritable + } + NOT = { exists = scope:had_nick_the_ill_tempered } + } + give_nickname = nick_the_ill_tempered + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_ill_tempered } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + calc_true_if = { + amount >= 2 + has_trait = maimed + has_trait = one_eyed + has_trait = one_legged + has_trait = disfigured + } + stress < 100 + health >= medium_health + NOT = { exists = scope:had_nick_the_resilient } + } + give_nickname = nick_the_resilient + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_resilient } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = lazy + AND = { + has_trait = reclusive + ai_energy <= -25 + } + } + NOT = { + has_trait = ambitious + } + days_of_continuous_peace = 3650 + NOT = { exists = scope:had_nick_do_nothing } + } + modifier = { + calc_true_if = { + amount >= 2 + prestige_level <= 2 + } + factor = 2 + } + give_nickname = nick_do_nothing + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_do_nothing } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lazy + ai_greed <= -25 + NOT = { + has_trait = ambitious + } + days_of_continuous_peace = 3650 + NOT = { exists = scope:had_nick_the_indolent } + } + modifier = { + calc_true_if = { + amount >= 2 + prestige_level <= 2 + } + factor = 2 + } + give_nickname = nick_the_indolent + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_indolent } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lazy + ai_boldness >= 25 + NOT = { exists = scope:had_nick_the_sluggard } + } + modifier = { + calc_true_if = { + amount >= 2 + prestige_level <= 2 + } + factor = 2 + } + give_nickname = nick_the_sluggard + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_sluggard } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = lazy + ai_boldness <= -50 + ai_energy <= -25 + days_of_continuous_peace = 3650 + NOT = { exists = scope:had_nick_the_idle } + } + modifier = { + calc_true_if = { + amount >= 2 + prestige_level <= 2 + } + factor = 2 + } + give_nickname = nick_the_idle + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_idle } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = dwarf + NOT = { exists = scope:had_nick_the_short } + } + give_nickname = nick_the_short + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_short } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = dwarf + NOT = { exists = scope:had_nick_elbow_high } + } + give_nickname = nick_elbow_high + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_elbow_high } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = athletic + prowess >= 12 + NOT = { exists = scope:had_nick_longshanks } + } + give_nickname = nick_longshanks + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_longshanks } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = wrathful + ai_boldness >= 25 + ai_rationality <= -25 + num_of_relation_rival >= 2 + NOT = { exists = scope:had_nick_the_wrathful } + } + give_nickname = nick_the_wrathful + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_wrathful } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + diplomacy <= 4 + has_personality_emotional_trigger = yes + has_personality_dominant_trigger = yes + NOT = { exists = scope:had_nick_the_petulant } + } + give_nickname = nick_the_petulant + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_petulant } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_personality_emotional_trigger = yes + num_of_relation_rival >= 4 + NOT = { exists = scope:had_nick_the_quarrelsome } + } + give_nickname = nick_the_quarrelsome + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_quarrelsome } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + is_eunuch_trigger = yes + NOT = { exists = scope:had_nick_the_eunuch } + } + give_nickname = nick_the_eunuch + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_eunuch } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = lifestyle_blademaster + any_equipped_character_artifact = { artifact_type = sword } + prowess >= 12 + NOT = { exists = scope:had_nick_longsword } + } + give_nickname = nick_longsword + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_longsword } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = lifestyle_blademaster + any_equipped_character_artifact = { artifact_type = axe } + prowess >= 12 + NOT = { exists = scope:had_nick_greataxe } + } + give_nickname = nick_greataxe + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_greataxe } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = lifestyle_blademaster + any_equipped_character_artifact = { artifact_type = mace } + prowess >= 12 + NOT = { exists = scope:had_nick_the_mace } + } + give_nickname = nick_the_mace + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_mace } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = lifestyle_blademaster + any_equipped_character_artifact = { artifact_type = spear } + prowess >= 12 + NOT = { exists = scope:had_nick_the_spear_of_capital } + } + give_nickname = nick_the_spear_of_capital + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_spear_of_capital } + trigger_event = lifestyle_nicknames.1000 + } + 200 = { + trigger = { + has_trait = lifestyle_blademaster + any_equipped_character_artifact = { artifact_type = hammer } + prowess >= 12 + NOT = { exists = scope:had_nick_the_maul } + } + give_nickname = nick_the_maul + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_maul } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + capital_province ?= { geographical_region = world_india } + prestige_level >= 3 + prowess >= 12 + martial >= 12 + NOT = { exists = scope:had_nick_the_tiger_of_place } + } + give_nickname = nick_the_tiger_of_place + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_tiger_of_place } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + diplomacy >= 16 + has_personality_extroverted_trigger = yes + has_royal_court = yes + has_dlc_feature = royal_court + court_grandeur_current_level >= 9 + NOT = { exists = scope:had_nick_the_lover_of_elegance } + } + give_nickname = nick_the_lover_of_elegance + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_lover_of_elegance } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + has_trait = strong + has_trait = physique_good + } + NOR = { + has_trait = weak + has_trait = spindly + has_trait = physique_bad + } + NOT = { exists = scope:had_nick_the_stout } + } + give_nickname = nick_the_stout + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_stout } + trigger_event = lifestyle_nicknames.1000 + } + 10 = { + trigger = { + diplomacy >= 16 + intrigue >= 16 + has_personality_levelheaded_trigger = yes + NOT = { exists = scope:had_nick_the_universal_spider } + } + give_nickname = nick_the_universal_spider + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_universal_spider } + trigger_event = lifestyle_nicknames.1000 + } + 25 = { + trigger = { + any_character_artifact = { + count >= 6 + is_unique = yes + } + NOT = { exists = scope:had_nick_the_collector } + } + give_nickname = nick_the_collector + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_collector } + trigger_event = lifestyle_nicknames.1000 + } + 50 = { + trigger = { + highest_held_title_tier >= tier_kingdom + prestige_level >= 3 + has_personality_dominant_trigger = yes + max_number_maa_soldiers_of_base_type = { + type = heavy_cavalry + value >= 500 + } + any_held_title = { + title_tier = county + any_county_province = { + has_building_with_flag = special_mine + #OR = { + # has_building_or_higher = rammelsberg_mines_01 + # has_building_or_higher = kutna_hora_mines_01 + # has_building_or_higher = kremnica_mines_01 + # has_building_or_higher = falun_mines_01 + # has_building_or_higher = schwaz_mines_01 + # has_building_or_higher = argentiera_mines_01 + # has_building_or_higher = kollur_mines_01 + # has_building_or_higher = ratnapura_mines_01 + # has_building_or_higher = siderokausia_mines_01 + # has_building_or_higher = mali_mines_01 + # has_building_or_higher = zawar_mines_01 + # has_building_or_higher = pansjhir_mines_01 + # has_building_or_higher = takkeda_mines_01 + # has_building_or_higher = trepca_mines_01 + # has_building_or_higher = cevennes_mines_01 + # has_building_or_higher = taghaza_mines_01 + # has_building_or_higher = allaq_mines_01 + # has_building_or_higher = phocaea_mines_01 + # has_building_or_higher = khetri_mines_01 + # has_building_or_higher = verespatak_mines_01 + # has_building_or_higher = srebrenica_mines_01 + # has_building_or_higher = nishapur_mines_01 + # has_building_or_higher = turda_mines_01 + # has_building_or_higher = rudnik_mines_01 + # has_building_or_higher = ijil_mines_01 + # has_building_or_higher = mogok_mines_01 + # has_building_or_higher = sar_i_sang_mines_01 + #} + } + } + NOT = { exists = scope:had_nick_the_iron_and_golden_king } + } + give_nickname = nick_the_iron_and_golden_king + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_iron_and_golden_king } + trigger_event = lifestyle_nicknames.1000 + } + 2000 = { + trigger = { + has_trait = incapable + NOT = { exists = scope:had_nick_the_sleeper } + } + give_nickname = nick_the_sleeper + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_sleeper } + trigger_event = lifestyle_nicknames.1000 + } + 10000 = { + trigger = { + has_trait = incapable + NOT = { exists = scope:had_nick_the_sleeping_king } + } + give_nickname = nick_the_sleeping_king + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_sleeping_king } + trigger_event = lifestyle_nicknames.1000 + } + 1000 = { + trigger = { + exists = liege + exists = mother + liege.culture = { + OR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + culture = { + OR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + mother.culture = { + NOR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + NOT = { + faith = { has_dominant_ruling_gender = dummy_male} + } + NOT = { exists = scope:had_nick_the_foreign_mother } + } + give_nickname = nick_the_foreign_mother + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_foreign_mother } + trigger_event = lifestyle_nicknames.1000 + } + 1000 = { + trigger = { + exists = liege + exists = father + liege.culture = { + OR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + culture = { + OR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + father.culture = { + NOR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + NOT = { + faith = { has_dominant_ruling_gender = dummy_female} + } + NOT = { exists = scope:had_nick_the_foreign_father } + } + give_nickname = nick_the_foreign_father + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_foreign_father } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + current_weight >= 50 + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + } + NOT = { exists = scope:had_nick_the_corpulent } + } + modifier = { + current_weight >= 75 + factor = 2 + } + give_nickname = nick_the_corpulent + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_corpulent } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + top_liege != this + OR = { + is_a_faction_member = yes + has_trait = disloyal + } + ai_boldness >= 50 + NOT = { exists = scope:had_nick_the_insubordinate } + } + give_nickname = nick_the_insubordinate + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_insubordinate } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = disloyal + intrigue >= 15 + NOT = { exists = scope:had_nick_the_backstabber } + } + modifier = { + is_at_war_with_liege = yes + factor = 2 + } + give_nickname = nick_the_backstabber + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_backstabber } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_greed >= 50 + ai_honor <= 50 + gold >= massive_gold_value + NOT = { exists = scope:had_nick_the_corrupt } + } + modifier = { + has_trait = disloyal + factor = 2 + } + give_nickname = nick_the_corrupt + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_corrupt } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + probably_unintelligent_trigger = yes + OR = { + AND = { + diplomacy <= 6 + martial <= 6 + stewardship <= 6 + intrigue <= 6 + learning <= 6 + } + AND = { + government_allows = administrative + governor_efficiency <= 0.7 + } + prestige_level <= 2 + } + NOT = { exists = scope:had_nick_the_incompetent } + } + modifier = { + government_allows = administrative + governor_efficiency <= 0.6 + factor = 2 + } + give_nickname = nick_the_incompetent + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_incompetent } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + ai_rationality <= -50 + ai_boldness >= 50 + OR = { + has_trait = profligate + has_trait = reckless + } + NOT = { exists = scope:had_nick_the_gambler } + } + give_nickname = nick_the_gambler + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_gambler } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + diplomacy <= 3 + has_personality_extroverted_trigger = yes + OR = { + has_trait = wrathful + has_trait = drunkard + has_trait = honest + has_trait = eccentric + has_trait = impatient + } + prestige_level <= 2 + NOT = { exists = scope:had_nick_the_obscene } + } + give_nickname = nick_the_obscene + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_obscene } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + has_trait = greedy + gold > massive_gold_value + NOT = { + has_trait = improvident + } + OR = { + has_royal_court = no + court_grandeur_current_level < court_grandeur_minimum_expected_level + } + NOT = { exists = scope:had_nick_the_miser } + } + give_nickname = nick_the_miser + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_miser } + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + stress_level >= 3 + gold < 0 + NOT = { exists = scope:had_nick_the_unfortunate } + } + give_nickname = nick_the_unfortunate + # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. + flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_the_unfortunate } + trigger_event = lifestyle_nicknames.1000 + } +# 100 = { +# trigger = { +# culture = { +# OR = { +# this = culture:norman +# any_parent_culture_or_above = { this = culture:norman } +# } +# } +# calc_true_if = { +# amount >= 3 +# has_trait = wrathful +# has_trait = ambitious +# has_trait = lifestyle_hunter +# has_trait = education_martial +# has_trait = logistician +# } +# NOT = { exists = scope:had_nick_curtmantle } +# } +# give_nickname = nick_curtmantle +# # Flag this as having been spat out already, in case we're applying several nicknames in quick succession. +# flag_random_nickname_as_taken_in_batch_effect = { NICK = nick_curtmantle } +# trigger_event = lifestyle_nicknames.1000 +# } + } + } +} + +#Chooses a random appropriate NEGATIVE nickname and sets it on the scoped character +#Much looser trigger than generic random nickname effect as it needs to get any that are relevant +set_random_negative_nickname_effect = { + save_scope_as = nick_recipient + custom_tooltip = receive_slanderous_nickname_tt + hidden_effect = { + random_list = { + 100 = { + trigger = { + is_male = yes + OR = { + has_trait = stubborn + has_trait = impatient + has_trait = ambitious + has_trait = arrogant + } + NOR = { + prestige_level >= 3 + portrait_shared_clothing_contents_trigger = { # They have a chance to be bald normally; it's not weird or tease-worthy + CULTURE_SCOPE = culture + CULTURE_FLAG = african + } + is_bald_trigger = yes + exists = scope:had_nick_the_actually_bald + } + any_claim = { + tier >= tier_kingdom + } + highest_held_title_tier < tier_kingdom + } + modifier = { + prestige_level < 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_bald_ironic + } + } + 10 = { + trigger = { + is_male = yes + age >= 30 + NOR = { + portrait_shared_clothing_contents_trigger = { # They have a chance to be bald normally; it's not weird or tease-worthy + CULTURE_SCOPE = culture + CULTURE_FLAG = african + } + is_bald_trigger = yes + exists = scope:had_nick_the_actually_bald + } + } + modifier = { + add = scope:nick_recipient.age + } + set_nickname_effect = { + NICKNAME = nick_the_actually_bald + } + } + 100 = { + trigger = { + NOR = { + has_trait = crusader_king + mpo_has_gok_mongol_empire_trigger = yes + } + NOT = { + any_realm_county = { + culture = scope:nick_recipient.culture + } + } + NOT = { + primary_title ?= { + any_past_holder = { + has_nickname = nick_the_stranger + } + } + } + } + modifier = { + NOT = { + any_realm_county = { + culture = { + cultural_acceptance = { target = scope:nick_recipient.culture value >= 40 } + } + } + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_stranger + } + } + 100 = { + trigger = { + is_playable_character = yes + NOR = { + any_sub_realm_county = { + faith = scope:nick_recipient.faith + } + AND = { + top_liege != this + faith = liege.faith + } + government_has_flag = government_is_theocracy + government_has_flag = government_is_landless_adventurer + } + } + modifier = { + has_trait = zealous + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_faith + } + } + 100 = { + trigger = { + OR = { + has_trait = deceitful + has_trait = fickle + has_trait = ambitious + has_trait = greedy + has_trait = eccentric + has_trait = gregarious + has_Trait = arbitrary + } + NOR = { + has_trait = shy + has_trait = calm + } + ai_boldness >= 75 + ai_honor < -25 + } + modifier = { + ai_honor <= -100 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_troublemaker + } + } + 100 = { + trigger = { + is_male = yes + OR = { + has_trait = lazy + has_trait = lunatic + has_trait = drunkard + has_trait = hashishiyah + has_trait = beauty_bad_1 + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + } + is_bald_trigger = no + } + modifier = { + prestige_level < 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_hairy + } + } + 100 = { + trigger = { + is_in_civil_war = yes + tyranny > 0 + } + modifier = { + diplomacy <= 4 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_unready + } + } + 100 = { + trigger = { + OR = { + has_trait = wrathful + has_trait = irritable + has_trait = impatient + has_trait = ambitious + has_trait = vengeful + } + is_at_war = yes + any_character_war = { + primary_attacker = scope:nick_recipient + } + } + modifier = { + calc_true_if = { + amount >= 2 + has_trait = wrathful + has_trait = irritable + has_trait = impatient + has_trait = ambitious + has_trait = vengeful + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_quarreller + } + } + 100 = { + trigger = { + OR = { + has_trait = wrathful + has_trait = irritable + has_trait = impatient + has_trait = fickle + } + is_at_war = yes + any_character_war = { + primary_attacker = scope:nick_recipient + attacker_war_score <= -50 + } + } + modifier = { + calc_true_if = { + amount >= 2 + has_trait = wrathful + has_trait = irritable + has_trait = impatient + has_trait = fickle + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_rash + } + } + 100 = { + trigger = { + OR = { + has_trait = deceitful + has_trait = arbitrary + has_trait = ambitious + has_trait = callous + has_trait = sadistic + has_trait = disloyal + has_trait = fickle + } + any_killed_character = { + is_close_family_of = scope:nick_recipient + } + } + modifier = { + is_at_war_with_liege = yes + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_traitor + } + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + any_killed_character = { + count >= 10 + death_reason = death_execution + } + } + set_nickname_effect = { + NICKNAME = nick_the_executioner + } + } + 50 = { + trigger = { + learning >= 10 + has_personality_dominant_trigger = yes + has_personality_extroverted_trigger = yes + } + modifier = { + is_clergy = yes + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_turbulent + } + } + 100 = { + trigger = { + has_trait = witch + NOT = { faith = { has_doctrine = doctrine_witchcraft_accepted } } + } + modifier = { + piety_level <= 1 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_witch + } + } + 100 = { + trigger = { + piety_level <= 1 + ai_rationality <= -25 + stress_level >= 1 + } + set_nickname_effect = { + NICKNAME = nick_the_bewitched + } + } + 100 = { + trigger = { + has_trait = drunkard + } + modifier = { + prestige_level <= 1 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_drunkard + } + } + 100 = { + trigger = { + has_trait = drunkard + faith.religion = religion:folkgerman_religion + } + modifier = { + prestige_level <= 1 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_ale_lover + } + } + 100 = { + trigger = { + ai_greed >= 50 + } + modifier = { + has_trait = greedy + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_greedy + } + } + 100 = { +# trigger = { +# culture = culture:anglo_saxon +# is_male = yes +# ai_greed >= 50 +# gold >= 100 +# } +# modifier = { +# has_trait = greedy +# factor = 2 +# } +# set_nickname_effect = { +# NICKNAME = nick_pennyfather +# } +# } + 100 = { + trigger = { + has_trait = gluttonous + has_personality_introverted_trigger = no + } + set_nickname_effect = { + NICKNAME = nick_foul_fart + } + } + 100 = { + trigger = { + OR = { + has_personality_submissive_trigger = yes + has_personality_introverted_trigger = yes + } + } + set_nickname_effect = { + NICKNAME = nick_the_timid + } + } + 100 = { + trigger = { + any_powerful_vassal = { + count >= 3 + } + any_powerful_vassal = { + count = all + opinion = { + target = scope:nick_recipient + value <= -25 + } + } + } + modifier = { + prestige_level <= 0 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_unworthy + } + } + 100 = { + trigger = { + OR = { + has_trait = adulterer + AND = { + exists = primary_spouse + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:nick_recipient.primary_spouse } + } + } + + } + set_nickname_effect = { + NICKNAME = nick_the_unfaithful + } + } + 100 = { + trigger = { + is_male = yes + any_child = { + count >= 4 + mother ?= { + is_married = yes + NOT = { + is_consort_of = scope:nick_recipient + } + } + } + any_child = { + count = all + mother ?= { + is_married = yes + NOT = { + is_consort_of = scope:nick_recipient + } + add_to_temporary_list = cuckoo + } + } + any_in_list = { + list = cuckoo + count >= 4 + } + } + set_nickname_effect = { + NICKNAME = nick_cuckoo + } + } + 100 = { + trigger = { + OR = { + has_trait = fornicator + has_trait = adulterer + AND = { + exists = primary_spouse + exposed_cheating_on_spouse_trigger = { SPOUSE = scope:nick_recipient.primary_spouse } + } + } + } + set_nickname_effect = { + NICKNAME = nick_the_unchaste + } + } + 100 = { + trigger = { + is_female = yes + any_relation = { type = lover } + OR = { + has_trait = lustful + has_trait = beauty_good + attraction >= 50 + has_trait = fornicator + has_trait = adulterer + } + } + modifier = { + num_of_relation_lover >= 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_temptress + } + } + 100 = { + trigger = { + is_female = yes + any_relation = { type = lover } + OR = { + has_trait = lustful + has_trait = beauty_good + attraction >= 50 + has_trait = fornicator + has_trait = adulterer + } + } + modifier = { + num_of_relation_lover >= 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_seductress + } + } + 100 = { + trigger = { + OR = { + has_trait = lustful + has_trait = lovers_pox + has_trait = early_great_pox + has_trait = great_pox + has_trait = deviant + } + } + modifier = { + any_relation = { type = lover } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_lewd + } + } + 100 = { + trigger = { + is_male = yes + any_relation = { type = lover } + OR = { + has_trait = lustful + has_trait = beauty_good + attraction >= 50 + has_trait = fornicator + has_trait = adulterer + } + } + modifier = { + num_of_relation_lover >= 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_lecher + } + } + 100 = { + trigger = { + is_male = yes + any_relation = { type = lover } + OR = { + has_trait = lustful + has_trait = beauty_good + attraction >= 50 + has_trait = fornicator + has_trait = adulterer + } + } + modifier = { + num_of_relation_lover >= 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_seducer + } + } + 100 = { + trigger = { + OR = { + has_trait = deceitful + has_trait = schemer + has_trait = disloyal + } + intrigue >= 12 + } + modifier = { + intrigue >= 20 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_trickster + } + } + 100 = { + trigger = { + diplomacy >= 10 + intrigue >= 10 + learning >= 10 + martial >= 10 + stewardship >= 10 + ai_rationality >= 25 + } + modifier = { + prestige_level >= 3 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_shrewd + } + } + 100 = { + trigger = { + ai_rationality <= -50 + OR = { + has_personality_emotional_trigger = yes + has_personality_extroverted_trigger = yes + } + has_personality_dominant_trigger = no + } + modifier = { + ai_rationality <= -75 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_silly + } + } + 100 = { + trigger = { + gold >= 500 + ai_greed >= 50 + } + modifier = { + gold >= 2000 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_moneybags + } + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + ai_boldness >= 25 + any_killed_character = { + count >= 1 + always = yes + } + } + modifier = { + any_killed_character = { + count >= 3 + always = yes + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_ruthless + } + } + 100 = { + trigger = { + has_personality_dominant_trigger = yes + has_personality_malicious_trigger = yes + prowess >= 12 + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nick_recipient } + } + set_nickname_effect = { + NICKNAME = nick_the_brute + } + } + 100 = { + trigger = { + OR = { + has_trait = sadistic + has_trait = torturer + has_trait = murderer + has_trait = kinslayer_1 + has_trait = kinslayer_2 + has_trait = kinslayer_3 + } + } + modifier = { + any_killed_character = { + count >= 4 + always = yes + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_butcher + } + } + 100 = { + trigger = { + any_killed_character = { + count >= 3 + always = yes + } + } + modifier = { + any_killed_character = { + count >= 5 + always = yes + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_bloody + } + } + 100 = { + trigger = { + OR = { + has_trait = shy + has_trait = reclusive + has_trait = content + } + has_personality_introverted_trigger = yes + } + set_nickname_effect = { + NICKNAME = nick_the_silent + } + } + 100 = { + trigger = { + OR = { + has_trait = deviant + has_trait = cannibal + has_trait = lunatic + has_trait = incestuous + AND = { + has_personality_malicious_trigger = yes + has_personality_emotional_trigger = yes + } + } + } + set_nickname_effect = { + NICKNAME = nick_the_depraved + } + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + OR = { + has_trait = torturer + has_trait = sadistic + has_trait = callous + has_trait = vengeful + tyranny > 0 + dread >= 50 + } + } + set_nickname_effect = { + NICKNAME = nick_the_cruel + } + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + OR = { + has_trait = giant + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + has_trait = scaly + } + OR = { + tyranny > 0 + dread >= 20 + } + } + set_nickname_effect = { + NICKNAME = nick_the_abominable + } + } + 100 = { + trigger = { + OR = { + AND = { + has_personality_malicious_trigger = yes + num_sinful_traits = 1 + } + num_sinful_traits > 1 + piety_level <= 0 + has_trait = excommunicated + } + } + modifier = { + num_sinful_traits > 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_wicked + } + } + 100 = { + trigger = { + OR = { + num_sinful_traits >= 1 + piety_level <= 0 + has_trait = excommunicated + } + } + modifier = { + num_sinful_traits >= 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_accursed + } + } + 100 = { + trigger = { + exists = cp:councillor_court_chaplain + opinion = { + target = cp:councillor_court_chaplain + value <= -50 + } + } + modifier = { + num_sinful_traits >= 1 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_priest_hater + } + } + 100 = { + trigger = { + top_liege != this + NOR = { + religion = liege.religion + faith = { has_doctrine = doctrine_pluralism_pluralistic } + } + } + set_nickname_effect = { + NICKNAME = nick_the_heathen + } + } + 100 = { + trigger = { + faith.religion = { is_in_family = rf_abrahamic } + OR = { + dread >= 25 + piety_level <= 0 + has_trait = excommunicated + } + has_personality_malicious_trigger = yes + } + modifier = { + num_sinful_traits >= 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_devil + } + } + 100 = { + trigger = { + faith.religion = { is_in_family = rf_abrahamic } + OR = { + num_sinful_traits >= 1 + piety_level <= 0 + has_trait = excommunicated + } + has_personality_dominant_trigger = yes + } + set_nickname_effect = { + NICKNAME = nick_the_black + } + } + 100 = { + trigger = { + OR = { + AND = { + has_personality_malicious_trigger = yes + dread > 0 + } + tyranny >= 10 + dread >= 50 + } + } + modifier = { + tyranny >= 75 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_terrible + } + } + 100 = { + trigger = { + OR = { + has_personality_dominant_trigger = yes + tyranny >= 25 + } + tyranny >= 0 + } + modifier = { + tyranny >= 50 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_tyrant + } + } + 50 = { + trigger = { + age >= 60 + } + modifier = { + age >= 80 + factor = 5 + } + set_nickname_effect = { + NICKNAME = nick_the_old + } + } + 100 = { + trigger = { + OR = { + has_trait = shy + has_trait = reclusive + } + has_personality_introverted_trigger = yes + } + modifier = { + has_personality_submissive_trigger = yes + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_shy + } + } + 100 = { + trigger = { + age <= 25 + } + modifier = { + age <= 20 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_young + } + } + 100 = { + trigger = { + is_male = yes + OR = { + has_trait = bastard + has_trait = legitimized_bastard + has_trait = bastard_founder + } + } + modifier = { + prestige_level <= 1 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_bastard + } + } + 100 = { + trigger = { + OR = { + AND = { + has_personality_dominant_trigger = yes + ai_boldness >= 50 + } + has_trait = arrogant + has_trait = ambitious + } + } + modifier = { + prestige_level >= 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_proud + } + } + 100 = { + trigger = { + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + has_trait = gluttonous + current_weight >= 50 + } + } + modifier = { + current_weight >= 75 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_girthy + } + } + 100 = { + trigger = { + OR = { + has_trait = lunatic + has_trait = possessed + has_trait = eccentric + AND = { + ai_rationality <= -50 + tyranny >= 25 + has_personality_emotional_trigger = yes + } + } + } + set_nickname_effect = { + NICKNAME = nick_the_mad + } + } + 100 = { + trigger = { + probably_unintelligent_trigger = yes + } + set_nickname_effect = { + NICKNAME = nick_the_simple + } + } + 500 = { + trigger = { + has_trait = leper + } + set_nickname_effect = { + NICKNAME = nick_the_leper + } + } + 300 = { + trigger = { + OR = { + has_trait = maimed + scarred_trait_activation_3 = yes + } + } + set_nickname_effect = { + NICKNAME = nick_half_hand + } + } + 100 = { + trigger = { + OR = { + has_trait = beauty_bad + has_trait = hunchbacked + has_trait = scaly + has_trait = disfigured + has_trait = inbred + scarred_trait_activation_3 = yes + } + NOT = { + has_trait = beauty_good + } + } + modifier = { + OR = { + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_hideous + } + } + 100 = { + trigger = { + OR = { + has_trait = beauty_bad + has_trait = hunchbacked + has_trait = scaly + has_trait = inbred + } + NOT = { + has_trait = beauty_good + } + } + modifier = { + OR = { + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_frog + } + } + 100 = { + trigger = { + OR = { + has_trait = beauty_bad + has_trait = hunchbacked + has_trait = scaly + has_trait = inbred + scarred_trait_activation_3 = yes + } + NOT = { + has_trait = beauty_good + } + } + modifier = { + OR = { + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_repulsive + } + } + 100 = { + trigger = { + OR = { + has_trait = fragile_bones + has_trait = infirm + has_trait = weak + has_trait = spindly + has_trait = physique_bad + has_trait = bleeder + has_trait = inbred + } + NOT = { + has_trait = physique_good + } + } + modifier = { + OR = { + has_trait = physique_bad_2 + has_trait = physique_bad_3 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_frail + } + } + 100 = { + trigger = { + prowess < 10 + OR = { + has_trait = fragile_bones + has_trait = infirm + has_trait = spindly + has_trait = weak + has_trait = physique_bad + has_trait = bleeder + has_trait = inbred + prowess <= 2 + } + NOT = { + has_trait = physique_good + } + } + modifier = { + OR = { + has_trait = physique_bad_2 + has_trait = physique_bad_3 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_weak + } + } + 100 = { + trigger = { + OR = { + has_trait = clubfooted + has_trait = weak + has_trait = spindly + has_trait = physique_bad + has_trait = infirm + } + NOT = { + has_trait = physique_good + } + } + modifier = { + has_trait = clubfooted + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_lame + } + } + 1000 = { + trigger = { + has_trait = lisping + has_trait = clubfooted + } + set_nickname_effect = { + NICKNAME = nick_the_lisp_and_lame + } + } + 300 = { + trigger = { + has_trait = hunchbacked + } + set_nickname_effect = { + NICKNAME = nick_the_hunchback + } + } + 100 = { + trigger = { + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + has_trait = gluttonous + current_weight >= 50 + } + } + modifier = { + current_weight >= 75 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_fat + } + } +# 100 = { +# trigger = { +# culture = culture:anglo_saxon +# OR = { +# loves_food_trigger = yes +# has_trait = lifestyle_reveler +# current_weight >= 50 +# } +# } +# modifier = { +# current_weight >= 75 +# factor = 2 +# } +# set_nickname_effect = { +# NICKNAME = nick_chubbycheeks +# } +# } + 50 = { + trigger = { + OR = { + current_weight >= 50 + loves_food_trigger = yes + has_trait = lifestyle_reveler + has_trait = gluttonous + } + diplomacy <= 8 + } + modifier = { + current_weight >= 75 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_slobberer + } + } + 50 = { + trigger = { + OR = { + current_weight >= 50 + loves_food_trigger = yes + has_trait = lifestyle_reveler + has_trait = gluttonous + } + } + modifier = { + current_weight >= 75 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_rotund + } + } + 25 = { + trigger = { + OR = { + current_weight >= 50 + loves_food_trigger = yes + has_trait = lifestyle_reveler + has_trait = gluttonous + } + } + modifier = { + current_weight >= 75 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_plump + } + } + 200 = { + trigger = { + has_trait = blind + } + set_nickname_effect = { + NICKNAME = nick_the_blind + } + } + 200 = { + trigger = { + has_trait = stuttering + } + set_nickname_effect = { + NICKNAME = nick_the_stammerer + } + } + 200 = { + trigger = { + has_trait = gout_ridden + } + set_nickname_effect = { + NICKNAME = nick_the_gouty + } + } + 100 = { + trigger = { + OR = { + has_trait = consumption + has_trait = cancer + has_trait = pneumonic + has_trait = typhus + has_trait = smallpox + has_trait = measles + has_trait = dysentery + has_trait = ergotism + has_trait = bubonic_plague + } + } + set_nickname_effect = { + NICKNAME = nick_the_diseased + } + } + 25 = { + trigger = { + dynasty ?= { dynasty_prestige_level >= 2 } + prestige_level <= 1 + } + set_nickname_effect = { + NICKNAME = nick_the_disgraceful + } + } + 100 = { + trigger = { + OR = { + has_trait = maimed + AND = { + has_trait = scarred + prowess < 8 + } + } + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nick_recipient } + } + set_nickname_effect = { + NICKNAME = nick_bad_hand + } + } + 100 = { + trigger = { + has_trait = one_eyed + } + set_nickname_effect = { + NICKNAME = nick_the_one_eyed + } + } + 50 = { + trigger = { + OR = { + has_trait = craven + AND = { + has_personality_submissive_trigger = yes + dread <= 0 + } + } + } + modifier = { + prestige_level <= 1 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_trembling + } + } + 100 = { + trigger = { + has_trait = craven + has_personality_submissive_trigger = yes + } + modifier = { + prestige_level <= 1 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_craven + } + } + 100 = { + trigger = { + OR = { + has_trait = lunatic + has_trait = possessed + has_trait = eccentric + AND = { + tyranny >= 50 + ai_rationality <= -50 + has_personality_emotional_trigger = yes + } + } + } + set_nickname_effect = { + NICKNAME = nick_the_insane + } + } + 100 = { + trigger = { + OR = { + AND = { + has_personality_introverted_trigger = yes + has_personality_levelheaded_trigger = yes + } + has_trait = depressed_1 + has_trait = depressed_genetic + } + } + set_nickname_effect = { + NICKNAME = nick_the_joyless + } + } + 100 = { + trigger = { + probably_unintelligent_trigger = yes + OR = { + has_personality_introverted_trigger = yes + has_personality_levelheaded_trigger = yes + } + } + set_nickname_effect = { + NICKNAME = nick_the_dull + } + } + 100 = { + trigger = { + has_trait = one_eyed + } + set_nickname_effect = { + NICKNAME = nick_one_eye + } + } + 300 = { + trigger = { + has_trait = maimed + } + set_nickname_effect = { + NICKNAME = nick_one_hand + } + } + 300 = { + trigger = { + intrigue >= 15 + has_trait = disfigured + } + set_nickname_effect = { + NICKNAME = nick_of_a_thousand_faces + } + } + 100 = { + trigger = { + OR = { + has_trait = consumption + has_trait = cancer + has_trait = pneumonic + has_trait = typhus + has_trait = smallpox + has_trait = measles + has_trait = dysentery + has_trait = ergotism + has_trait = bubonic_plague + } + } + set_nickname_effect = { + NICKNAME = nick_the_plaguebearer + } + } + 100 = { + trigger = { + OR = { + has_trait = physique_good + has_trait = beauty_good + } + OR = { + has_trait = physique_bad_2 + has_trait = physique_bad_3 + has_trait = beauty_bad_2 + has_trait = beauty_bad_3 + has_trait = giant + has_trait = albino + has_trait = scaly + has_trait = spindly + has_trait = hunchbacked + } + } + set_nickname_effect = { + NICKNAME = nick_the_chimera + } + } + 50 = { + trigger = { + highest_held_title_tier <= tier_duchy + domain_size <= 2 + any_sibling = { + highest_held_title_tier >= tier_kingdom + domain_size >= 4 + prestige_level >= scope:nick_recipient.prestige_level + } + } + set_nickname_effect = { + NICKNAME = nick_lackland + } + } + 100 = { + trigger = { + OR = { + has_trait = strong + has_trait = physique_good + prowess >= 18 + } + OR = { + has_trait = beauty_bad + has_trait = hunchbacked + has_trait = scaly + has_trait = disfigured + scarred_trait_activation_3 = yes + } + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nick_recipient } + } + set_nickname_effect = { + NICKNAME = nick_the_boar + } + } + 100 = { + trigger = { + has_trait = disfigured + has_personality_introverted_trigger = yes + } + set_nickname_effect = { + NICKNAME = nick_the_faceless + } + } + 300 = { + trigger = { + has_trait = giant + has_trait = one_eyed + } + set_nickname_effect = { + NICKNAME = nick_the_cyclops + } + } + 100 = { + trigger = { + has_trait = giant + OR = { + has_trait = weak + has_trait = spindly + has_trait = physique_bad + } + } + set_nickname_effect = { + NICKNAME = nick_the_beanstalk + } + } + 100 = { + trigger = { + OR = { + tyranny > 0 + stewardship <= 4 + } + diplomacy <= 8 + } + modifier = { + diplomacy <= 4 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_ill_ruler + } + } + 100 = { + trigger = { + is_in_civil_war = yes + OR = { + tyranny > 0 + diplomacy <= 8 + } + } + modifier = { + diplomacy <= 4 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_careless + } + } + 50 = { + trigger = { + gold <= 0 + } + modifier = { + factor = debt_level + } + set_nickname_effect = { + NICKNAME = nick_of_the_empty_pockets + } + } + 100 = { + trigger = { + OR = { + has_trait = withering_mind + has_trait = infirm + probably_unintelligent_trigger = yes + } + } + modifier = { + has_trait = fickle + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_forgetful + } + } + 100 = { + trigger = { + OR = { + has_trait = shy + has_trait = reclusive + } + has_personality_introverted_trigger = yes + } + set_nickname_effect = { + NICKNAME = nick_the_hermit + } + } + 100 = { + trigger = { + OR = { + has_trait = shy + has_trait = reclusive + } + has_personality_introverted_trigger = yes + } + set_nickname_effect = { + NICKNAME = nick_the_recluse + } + } + 100 = { + trigger = { + OR = { + has_trait = fragile_bones + has_trait = infirm + has_trait = spindly + has_trait = weak + has_trait = physique_bad + has_trait = bleeder + has_trait = inbred + prowess <= 2 + } + NOR = { + has_trait = strong + has_trait = physique_good + } + } + set_nickname_effect = { + NICKNAME = nick_the_feeble + } + } + 100 = { + trigger = { + has_personality_dominant_trigger = yes + OR = { + has_trait = arrogant + has_trait = lustful + has_trait = lazy + has_personality_extroverted_trigger = yes + } + has_trait = beauty_good + } + set_nickname_effect = { + NICKNAME = nick_the_vain + } + } + 100 = { + trigger = { + ai_zeal >= 100 + ai_rationality <= -20 + } + set_nickname_effect = { + NICKNAME = nick_the_zealot + } + } + 100 = { + trigger = { + has_personality_malicious_trigger = yes + OR = { + has_trait = sadistic + has_trait = callous + num_sinful_traits >= 1 + } + } + modifier = { + num_sinful_traits >= 2 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_evil + } + } + 100 = { + trigger = { + OR = { + has_trait = lifestyle_mystic + has_trait = lunatic + has_trait = possessed + has_trait = witch + has_trait = eccentric + } + has_trait_malicious_trigger = no + } + set_nickname_effect = { + NICKNAME = nick_the_strange + } + } + 100 = { + trigger = { + has_trait = possessed + } + set_nickname_effect = { + NICKNAME = nick_the_haunted + } + } + 300 = { + trigger = { + OR = { + AND = { + diplomacy <= 6 + stewardship <= 6 + martial <= 6 + intrigue <= 6 + learning <= 6 + } + stress_level >= 3 + } + } + set_nickname_effect = { + NICKNAME = nick_the_unlucky + } + } + 100 = { + trigger = { + is_male = yes + prowess <= 4 + martial <= 4 + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:nick_recipient } + } + set_nickname_effect = { + NICKNAME = nick_the_effeminate + } + } +# 100 = { +# trigger = { +# is_male = yes +# culture = culture:anglo_saxon +# prowess <= 6 +# fertility <= 0.4 +# NOT = { +# any_child = { +# count > 1 +# } +# } +# } +# set_nickname_effect = { +# NICKNAME = nick_softsword +# } +# } + 100 = { + trigger = { + has_trait = fickle + ai_rationality <= -25 + } + modifier = { + probably_unintelligent_trigger = yes + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_clueless + } + } + 100 = { + trigger = { + ai_vengefulness >= 35 + OR = { + has_trait = wrathful + has_trait = irritable + has_trait = fickle + has_trait = stubborn + } + } + set_nickname_effect = { + NICKNAME = nick_the_ill_tempered + } + } + 100 = { + trigger = { + OR = { + has_trait = lazy + AND = { + has_trait = reclusive + ai_energy <= -20 + } + } + NOR = { + has_trait = ambitious + has_trait = diligent + } + } + modifier = { + calc_true_if = { + amount >= 2 + prestige_level <= 2 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_do_nothing + } + } + 100 = { + trigger = { + has_trait = lazy + ai_greed <= -20 + NOR = { + has_trait = ambitious + } + } + modifier = { + calc_true_if = { + amount >= 2 + prestige_level <= 2 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_indolent + } + } + 100 = { + trigger = { + has_trait = lazy + ai_boldness <= -20 + } + modifier = { + calc_true_if = { + amount >= 2 + prestige_level <= 2 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_sluggard + } + } + 100 = { + trigger = { + has_trait = lazy + ai_boldness <= -20 + ai_energy <= -20 + } + modifier = { + calc_true_if = { + amount >= 2 + prestige_level <= 2 + } + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_idle + } + } + 100 = { + trigger = { + has_trait = dwarf + } + set_nickname_effect = { + NICKNAME = nick_the_short + } + } + 100 = { + trigger = { + has_trait = dwarf + } + set_nickname_effect = { + NICKNAME = nick_elbow_high + } + } + 100 = { + trigger = { + has_trait = wrathful + ai_rationality <= -25 + any_relation = { type = rival } + } + set_nickname_effect = { + NICKNAME = nick_the_wrathful + } + } + 100 = { + trigger = { + diplomacy <= 4 + has_personality_emotional_trigger = yes + } + set_nickname_effect = { + NICKNAME = nick_the_petulant + } + } + 100 = { + trigger = { + has_personality_emotional_trigger = yes + num_of_relation_rival >= 2 + } + set_nickname_effect = { + NICKNAME = nick_the_quarrelsome + } + } + 100 = { + trigger = { is_eunuch_trigger = yes } + set_nickname_effect = { + NICKNAME = nick_the_eunuch + } + } + 2000 = { + trigger = { + has_trait = incapable + } + set_nickname_effect = { + NICKNAME = nick_the_sleeper + } + } + 2000 = { + trigger = { + has_trait = incapable + highest_held_title_tier >= tier_kingdom + } + set_nickname_effect = { + NICKNAME = nick_the_sleeping_king + } + } + 1000 = { + trigger = { + exists = liege + exists = mother + liege.culture = { + OR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + culture = { + OR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + mother.culture = { + NOR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + NOT = { + faith = { has_dominant_ruling_gender = dummy_male} + } + } + give_nickname = nick_the_foreign_mother + trigger_event = lifestyle_nicknames.1000 + } + 1000 = { + trigger = { + exists = liege + exists = father + liege.culture = { + OR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + culture = { + OR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + father.culture = { + NOR = { + this = culture:greek + any_parent_culture_or_above = { + this = culture:greek + } + } + } + NOT = { + faith = { has_dominant_ruling_gender = dummy_female} + } + } + give_nickname = nick_the_foreign_father + trigger_event = lifestyle_nicknames.1000 + } + 100 = { + trigger = { + OR = { + loves_food_trigger = yes + has_trait = lifestyle_reveler + has_trait = gluttonous + current_weight >= 50 + } + } + modifier = { + current_weight >= 75 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_corpulent + } + } + 100 = { + trigger = { + top_liege != this + OR = { + is_a_faction_member = yes + has_trait = disloyal + opinion = { + target = liege + value <= -60 + } + } + ai_boldness >= low_positive_ai_value + } + set_nickname_effect = { + NICKNAME = nick_the_insubordinate + } + } + 100 = { + trigger = { + has_trait = disloyal + intrigue >= 10 + } + modifier = { + is_at_war_with_liege = yes + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_backstabber + } + } + 100 = { + trigger = { + ai_greed >= 25 + ai_honor <= 25 + gold >= massive_gold_value + } + modifier = { + has_trait = disloyal + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_corrupt + } + } + 100 = { + trigger = { + probably_unintelligent_trigger = yes + OR = { + AND = { + diplomacy <= 6 + martial <= 6 + stewardship <= 6 + intrigue <= 6 + learning <= 6 + } + AND = { + government_allows = administrative + governor_efficiency <= 0.7 + } + } + } + modifier = { + government_allows = administrative + governor_efficiency <= 0.6 + factor = 2 + } + set_nickname_effect = { + NICKNAME = nick_the_incompetent + } + } + 100 = { + trigger = { + ai_rationality <= -25 + ai_boldness > 0 + OR = { + has_trait = profligate + has_trait = reckless + } + } + set_nickname_effect = { + NICKNAME = nick_the_gambler + } + } + 100 = { + trigger = { + diplomacy <= 5 + has_personality_extroverted_trigger = yes + OR = { + has_trait = wrathful + has_trait = drunkard + has_trait = honest + has_trait = eccentric + has_trait = impatient + } + } + set_nickname_effect = { + NICKNAME = nick_the_obscene + } + } + 100 = { + trigger = { + has_trait = greedy + gold >= major_gold_value + NOT = { + has_trait = improvident + } + OR = { + has_royal_court = no + court_grandeur_current_level < court_grandeur_minimum_expected_level + } + } + set_nickname_effect = { + NICKNAME = nick_the_miser + } + } + #Fallback + 1 = { + trigger = { + } + set_nickname_effect = { + NICKNAME = nick_the_unfortunate + } + } + } + } +} diff --git a/common/scripted_effects/06_dlc_ce1_legend_effects.txt b/common/scripted_effects/06_dlc_ce1_legend_effects.txt index d36efa0e..18e5727c 100644 --- a/common/scripted_effects/06_dlc_ce1_legend_effects.txt +++ b/common/scripted_effects/06_dlc_ce1_legend_effects.txt @@ -1805,24 +1805,24 @@ generate_religion_descent_effect = { GOD = $GOD$ } } - else_if = { - limit = { - $RELIGION$ = religion:basque_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = basque - GOD = $GOD$ - } - } - else_if = { - limit = { - $RELIGION$ = religion:bon_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = bon - GOD = $GOD$ - } - } +# else_if = { +# limit = { +# $RELIGION$ = religion:basque_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = basque +# GOD = $GOD$ +# } +# } +# else_if = { +# limit = { +# $RELIGION$ = religion:bon_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = bon +# GOD = $GOD$ +# } +# } else_if = { limit = { $RELIGION$ = religion:buddhism_religion @@ -1832,15 +1832,15 @@ generate_religion_descent_effect = { GOD = $GOD$ } } - else_if = { - limit = { - $RELIGION$ = religion:tani_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = tani - GOD = $GOD$ - } - } +# else_if = { +# limit = { +# $RELIGION$ = religion:tani_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = tani +# GOD = $GOD$ +# } +# } # else_if = { # limit = { # $RELIGION$ = religion:dualism_religion @@ -1852,19 +1852,19 @@ generate_religion_descent_effect = { # } else_if = { limit = { - $RELIGION$ = religion:finno_ugric_religion + $RELIGION$ = religion:finnic_religion } generate_godly_descent_seed_support_effect = { - FAITH = finno_ugric + FAITH = finnic GOD = $GOD$ } } else_if = { limit = { - $RELIGION$ = religion:germanic_religion + $RELIGION$ = religion:folkgerman_religion } generate_godly_descent_seed_support_effect = { - FAITH = germanic + FAITH = folkgerman GOD = $GOD$ } } @@ -1873,7 +1873,7 @@ generate_religion_descent_effect = { $RELIGION$ = religion:theomach_religion } generate_godly_descent_seed_support_effect = { - FAITH = hellenism + FAITH = theomach GOD = $GOD$ } } @@ -1967,69 +1967,69 @@ generate_religion_descent_effect = { GOD = $GOD$ } } - else_if = { - limit = { - $RELIGION$ = religion:tengrism_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = tengrism - GOD = $GOD$ - } - } - else_if = { - limit = { - $RELIGION$ = religion:waaqism_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = waaqism - GOD = $GOD$ - } - } - else_if = { - limit = { - $RELIGION$ = religion:west_african_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = west_african - GOD = $GOD$ - } - } - else_if = { - limit = { - $RELIGION$ = religion:west_african_bori_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = west_african_bori - GOD = $GOD$ - } - } - else_if = { - limit = { - $RELIGION$ = religion:west_african_orisha_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = west_african_orisha - GOD = $GOD$ - } - } - else_if = { - limit = { - $RELIGION$ = religion:west_african_roog_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = west_african_roog - GOD = $GOD$ - } - } - else_if = { - limit = { - $RELIGION$ = religion:yazidi_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = yazidi - GOD = $GOD$ - } - } +# else_if = { +# limit = { +# $RELIGION$ = religion:tengrism_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = tengrism +# GOD = $GOD$ +# } +# } +# else_if = { +# limit = { +# $RELIGION$ = religion:waaqism_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = waaqism +# GOD = $GOD$ +# } +# } +# else_if = { +# limit = { +# $RELIGION$ = religion:west_african_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = west_african +# GOD = $GOD$ +# } +# } +# else_if = { +# limit = { +# $RELIGION$ = religion:west_african_bori_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = west_african_bori +# GOD = $GOD$ +# } +# } +# else_if = { +# limit = { +# $RELIGION$ = religion:west_african_orisha_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = west_african_orisha +# GOD = $GOD$ +# } +# } +# else_if = { +# limit = { +# $RELIGION$ = religion:west_african_roog_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = west_african_roog +# GOD = $GOD$ +# } +# } +# else_if = { +# limit = { +# $RELIGION$ = religion:yazidi_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = yazidi +# GOD = $GOD$ +# } +# } else_if = { limit = { $RELIGION$ = religion:zoroastrianism_religion @@ -2039,21 +2039,21 @@ generate_religion_descent_effect = { GOD = $GOD$ } } - else_if = { - limit = { - $RELIGION$ = religion:zunism_religion - } - generate_godly_descent_seed_support_effect = { - FAITH = zunism - GOD = $GOD$ - } - } - else = { # Generic Pagan, fallback - generate_godly_descent_seed_support_effect = { - FAITH = paganism - GOD = $GOD$ - } - } +# else_if = { +# limit = { +# $RELIGION$ = religion:zunism_religion +# } +# generate_godly_descent_seed_support_effect = { +# FAITH = zunism +# GOD = $GOD$ +# } +# } +# else = { # Generic Pagan, fallback +# generate_godly_descent_seed_support_effect = { +# FAITH = paganism +# GOD = $GOD$ +# } +# } } # Mythical Legends guaranteed access to Legendary Buildings diff --git a/common/scripted_effects/07_dlc_ep3_scripted_effects.txt b/common/scripted_effects/07_dlc_ep3_scripted_effects.txt index 943a1712..c9649c8b 100644 --- a/common/scripted_effects/07_dlc_ep3_scripted_effects.txt +++ b/common/scripted_effects/07_dlc_ep3_scripted_effects.txt @@ -1488,11 +1488,11 @@ ep3_become_landed_transfer_effect = { $TITLE_RECEIVER$ = { laamp_clear_domicile_buildings_liquidator_effect = yes } } $TITLE_RECEIVER$ = { - if = { - limit = { character:90028 ?= this } - custom_tooltip = ep3_story_cycle_harrying.3053.b.tt - add_character_flag = hereward_settled_flag - } +# if = { +# limit = { character:90028 ?= this } +# custom_tooltip = ep3_story_cycle_harrying.3053.b.tt +# add_character_flag = hereward_settled_flag +# } set_variable = { name = ascended_throne_reason value = $REASON$ @@ -7734,43 +7734,43 @@ remove_dead_charioteer_from_race = { ### END CHARIOT RACE -ep3_send_akolouthos_message_loyal = { - send_interface_message = { - type = msg_akolouthos_steels_varangians - title = ep3_akolouthos_events.1000 - desc = ep3_akolouthos_events.1000_loyal_notification_tooltip - - left_icon = scope:trait_getter - scope:trait_getter = { - add_trait = loyal - add_opinion = { - target = root - modifier = loyalty_opinion - opinion = 40 - } - } - custom_tooltip = akolouthos_effect_tooltip - } -} - -ep3_send_akolouthos_message_varangian = { - send_interface_message = { - type = msg_akolouthos_steels_varangians - title = ep3_akolouthos_events.1000 - desc = ep3_akolouthos_events.1000_varangian_notification_tooltip - - left_icon = scope:trait_getter - scope:trait_getter = { - add_trait = varangian - add_opinion = { - target = root - modifier = loyalty_opinion - opinion = 40 - } - } - custom_tooltip = akolouthos_effect_tooltip - } -} +#ep3_send_akolouthos_message_loyal = { +# send_interface_message = { +# type = msg_akolouthos_steels_varangians +# title = ep3_akolouthos_events.1000 +# desc = ep3_akolouthos_events.1000_loyal_notification_tooltip +# +# left_icon = scope:trait_getter +# scope:trait_getter = { +# add_trait = loyal +# add_opinion = { +# target = root +# modifier = loyalty_opinion +# opinion = 40 +# } +# } +# custom_tooltip = akolouthos_effect_tooltip +# } +#} +# +#ep3_send_akolouthos_message_varangian = { +# send_interface_message = { +# type = msg_akolouthos_steels_varangians +# title = ep3_akolouthos_events.1000 +# desc = ep3_akolouthos_events.1000_varangian_notification_tooltip +# +# left_icon = scope:trait_getter +# scope:trait_getter = { +# add_trait = varangian +# add_opinion = { +# target = root +# modifier = loyalty_opinion +# opinion = 40 +# } +# } +# custom_tooltip = akolouthos_effect_tooltip +# } +#} ep3_palace_looting_random_malus_effect = { if = { diff --git a/common/scripted_triggers/00_coa_triggers.txt b/common/scripted_triggers/00_coa_triggers.txt index cc138df2..4bbe2376 100644 --- a/common/scripted_triggers/00_coa_triggers.txt +++ b/common/scripted_triggers/00_coa_triggers.txt @@ -18,9 +18,9 @@ coa_african_culture_trigger = { } coa_african_religion_trigger = { - scope:faith.religion = { - save_temporary_scope_as = religion - } +# scope:faith.religion = { +# save_temporary_scope_as = religion +# } always = no # scope:religion = { # OR = { @@ -87,24 +87,26 @@ coa_cross_trigger = { } coa_england_switches_to_france_coa_trigger = { - holder = { - OR = { - has_title = title:k_france - has_claim_on = title:k_france - has_title = title:e_france - has_claim_on = title:e_france - } - } + always = no +# holder = { +# OR = { +# has_title = title:k_france +# has_claim_on = title:k_france +# has_title = title:e_france +# has_claim_on = title:e_france +# } +# } } coa_switch_to_norman_trigger = { - holder.culture = { - OR = { - has_coa_gfx = english_coa_gfx - has_coa_gfx = frankish_group_coa_gfx - has_coa_gfx = latin_group_coa_gfx - has_coa_gfx = iberian_group_coa_gfx - } - } + always = no +# holder.culture = { +# OR = { +# has_coa_gfx = english_coa_gfx +# has_coa_gfx = frankish_group_coa_gfx +# has_coa_gfx = latin_group_coa_gfx +# has_coa_gfx = iberian_group_coa_gfx +# } +# } } coa_switch_to_norse_trigger = { diff --git a/common/scripted_triggers/00_laamp_triggers.txt b/common/scripted_triggers/00_laamp_triggers.txt index bf73634b..70bec4e9 100644 --- a/common/scripted_triggers/00_laamp_triggers.txt +++ b/common/scripted_triggers/00_laamp_triggers.txt @@ -54,35 +54,35 @@ any_laamp_portion_at_sea_trigger = { } } } - -character_is_valid_for_harrying_of_the_north_trigger = { - title:k_england.holder ?= { owns_story_of_type = story_cycle_harrying_of_the_north } - trigger_if = { - limit = { is_ruler = yes } - OR = { - this = title:k_england.holder - any_liege_or_above = { this = title:k_england.holder } - } - } - trigger_else = { - domicile ?= { - domicile_location = { - county ?= { - holder = { - OR = { - this = title:k_england.holder - any_liege_or_above = { this = title:k_england.holder } - } - } - } - } - } - } - OR = { - character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes - character_is_valid_norman_for_harrying_of_the_north_trigger = yes - } -} +# +#character_is_valid_for_harrying_of_the_north_trigger = { +# title:k_england.holder ?= { owns_story_of_type = story_cycle_harrying_of_the_north } +# trigger_if = { +# limit = { is_ruler = yes } +# OR = { +# this = title:k_england.holder +# any_liege_or_above = { this = title:k_england.holder } +# } +# } +# trigger_else = { +# domicile ?= { +# domicile_location = { +# county ?= { +# holder = { +# OR = { +# this = title:k_england.holder +# any_liege_or_above = { this = title:k_england.holder } +# } +# } +# } +# } +# } +# } +# OR = { +# character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes +# character_is_valid_norman_for_harrying_of_the_north_trigger = yes +# } +#} #character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = { # culture = { @@ -110,30 +110,30 @@ character_is_valid_for_harrying_of_the_north_trigger = { # } #} -disable_interaction_for_hereward_trigger = { - trigger_if = { - limit = { scope:recipient = character:90028 } - custom_tooltip = { - text = owns_a_story_trigger - scope:actor = { - NOR = { - owns_story_of_type = story_cycle_harrying_of_the_north - any_liege_or_above = { owns_story_of_type = story_cycle_harrying_of_the_north } - } - } - } - } -} - -disable_interaction_for_hasan_trigger = { - trigger_if = { - limit = { scope:recipient = character:41702 } - custom_tooltip = { - text = owns_a_story_trigger - scope:recipient = { owns_story_of_type = story_hasan } - } - } -} +#disable_interaction_for_hereward_trigger = { +# trigger_if = { +# limit = { scope:recipient = character:90028 } +# custom_tooltip = { +# text = owns_a_story_trigger +# scope:actor = { +# NOR = { +# owns_story_of_type = story_cycle_harrying_of_the_north +# any_liege_or_above = { owns_story_of_type = story_cycle_harrying_of_the_north } +# } +# } +# } +# } +#} +# +#disable_interaction_for_hasan_trigger = { +# trigger_if = { +# limit = { scope:recipient = character:41702 } +# custom_tooltip = { +# text = owns_a_story_trigger +# scope:recipient = { owns_story_of_type = story_hasan } +# } +# } +#} laamp_request_likely_marriable_woman_trigger = { is_available_quick = { diff --git a/common/scripted_triggers/00_law_triggers.txt b/common/scripted_triggers/00_law_triggers.txt index 6823d107..c5c0a0e0 100644 --- a/common/scripted_triggers/00_law_triggers.txt +++ b/common/scripted_triggers/00_law_triggers.txt @@ -364,12 +364,6 @@ can_have_single_heir_dynasty_house_trigger = { OR = { this = culture:czech this = culture:NEOW_slovak - any_parent_culture_or_above = { - this = culture:czech - } - any_parent_culture_or_above = { - this = culture:NEOW_slovak - } NOT = { has_innovation = innovation_heraldry } } } diff --git a/common/scripted_triggers/01_fp1_scripted_triggers.txt b/common/scripted_triggers/01_fp1_scripted_triggers.txt index aa7f7426..e6563c60 100644 --- a/common/scripted_triggers/01_fp1_scripted_triggers.txt +++ b/common/scripted_triggers/01_fp1_scripted_triggers.txt @@ -289,7 +289,7 @@ gruesome_sacrifices_grand_blot_can_continue_trigger = { } fp1_valid_norse_faith_for_jomsvikings_trigger = { - religion = religion:germanic_religion + religion = religion:folkgerman_religion has_doctrine_parameter = unreformed } diff --git a/common/scripted_triggers/03_fp2_scripted_triggers.txt b/common/scripted_triggers/03_fp2_scripted_triggers.txt index 59118e54..aed14e94 100644 --- a/common/scripted_triggers/03_fp2_scripted_triggers.txt +++ b/common/scripted_triggers/03_fp2_scripted_triggers.txt @@ -609,118 +609,118 @@ struggle_can_access_unlocks_bargain_fealty_interaction_trigger = { ################################################## # Multi-File Event Triggers - -fp2_lyonese_monk_0002_papal_hof_trigger = { - OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } - exists = faith.religious_head - faith.religious_head_title = title:k_papal_state -} - -fp2_lyonese_monk_0002_valid_character_configuration_trigger = { - OR = { - has_trait = scholar - has_trait = theologian - has_trait = lifestyle_mystic - AND = { - is_ai = no - learning >= very_high_skill_rating - has_lifestyle = learning_lifestyle - } - } -} - -fp2_lyonese_monk_0002_valid_court_trigger = { - # Must have the Pope as a HoF. - fp2_lyonese_monk_0002_papal_hof_trigger = yes - # Filter out anyone not able to be at home when the monk comes a'knockin'. - is_physically_able = yes - # Must be into bookish discussions. - ## Narratively, this is what attracts them to your court. - ## Mechanically, this is how players can opt in for the chain so it's not completely random. - fp2_lyonese_monk_0002_valid_character_configuration_trigger = yes - # Remove non-playables. - NOR = { - government_has_flag = government_is_theocracy - government_has_flag = government_is_republic - } - # Plus, for various reasons, we don't want Lyon _itself_. - NOT = { - any_held_title = { this = title:c_lyon } - } -} - -fp2_lyonese_monk_0000_valid_for_events_trigger = { - fp2_lyonese_monk_0000_out_of_realm_trigger = no - fp2_lyonese_monk_0000_out_of_freedom_trigger = no - fp2_lyonese_monk_0000_out_of_popes_trigger = no - fp2_lyonese_monk_0000_out_of_faith_trigger = no -} - -fp2_lyonese_monk_0000_out_of_realm_trigger = { - scope:acolyte = { - OR = { - is_alive = no - is_imprisoned = yes - AND = { - is_landed_or_landless_administrative = no - NOT = { - host = scope:acolyte_host - # Make an exception if you're in prison, since that should give a different event. - scope:acolyte_host = { is_imprisoned = no } - } - } - AND = { - is_landed_or_landless_administrative = yes - NOT = { - any_liege_or_above = { this = scope:acolyte_host } - } - } - } - } -} - -fp2_lyonese_monk_0000_out_of_freedom_trigger = { is_imprisoned = yes } - -fp2_lyonese_monk_0000_out_of_popes_trigger = { - NOT = { exists = scope:story.var:base_faith.religious_head } -} - -fp2_lyonese_monk_0000_out_of_faith_trigger = { - OR = { - scope:acolyte.faith.religious_head != scope:story.var:base_faith.religious_head - scope:acolyte_host.faith.religious_head != scope:story.var:base_faith.religious_head - } -} - -fp2_does_this_player_care_about_the_fate_of_iberia = { - this != root - OR = { - location = { - OR = { # Is in region - geographical_region = world_europe_west - geographical_region = world_africa_north - geographical_region = world_europe_south_italy - } - } - struggle:iberian_struggle = { is_culture_involved_in_struggle = prev.culture } - } -} - -fp2_eligible_for_yearly_events_trigger = { - has_fp2_dlc_trigger = yes - OR = { - any_character_struggle = { - involvement = involved - is_struggle_type = iberian_struggle - } - culture = { - has_cultural_pillar = heritage_iberian - } - capital_province ?= { - geographical_region = world_europe_west_iberia - } - } -} +# +#fp2_lyonese_monk_0002_papal_hof_trigger = { +# OR = { religion = religion:eastern_orthodox_religion religion = religion:catholic_religion religion = religion:protestant_religion } +# exists = faith.religious_head +# faith.religious_head_title = title:k_papal_state +#} +# +#fp2_lyonese_monk_0002_valid_character_configuration_trigger = { +# OR = { +# has_trait = scholar +# has_trait = theologian +# has_trait = lifestyle_mystic +# AND = { +# is_ai = no +# learning >= very_high_skill_rating +# has_lifestyle = learning_lifestyle +# } +# } +#} +# +#fp2_lyonese_monk_0002_valid_court_trigger = { +# # Must have the Pope as a HoF. +# fp2_lyonese_monk_0002_papal_hof_trigger = yes +# # Filter out anyone not able to be at home when the monk comes a'knockin'. +# is_physically_able = yes +# # Must be into bookish discussions. +# ## Narratively, this is what attracts them to your court. +# ## Mechanically, this is how players can opt in for the chain so it's not completely random. +# fp2_lyonese_monk_0002_valid_character_configuration_trigger = yes +# # Remove non-playables. +# NOR = { +# government_has_flag = government_is_theocracy +# government_has_flag = government_is_republic +# } +# # Plus, for various reasons, we don't want Lyon _itself_. +# NOT = { +# any_held_title = { this = title:c_lyon } +# } +#} +# +#fp2_lyonese_monk_0000_valid_for_events_trigger = { +# fp2_lyonese_monk_0000_out_of_realm_trigger = no +# fp2_lyonese_monk_0000_out_of_freedom_trigger = no +# fp2_lyonese_monk_0000_out_of_popes_trigger = no +# fp2_lyonese_monk_0000_out_of_faith_trigger = no +#} +# +#fp2_lyonese_monk_0000_out_of_realm_trigger = { +# scope:acolyte = { +# OR = { +# is_alive = no +# is_imprisoned = yes +# AND = { +# is_landed_or_landless_administrative = no +# NOT = { +# host = scope:acolyte_host +# # Make an exception if you're in prison, since that should give a different event. +# scope:acolyte_host = { is_imprisoned = no } +# } +# } +# AND = { +# is_landed_or_landless_administrative = yes +# NOT = { +# any_liege_or_above = { this = scope:acolyte_host } +# } +# } +# } +# } +#} +# +#fp2_lyonese_monk_0000_out_of_freedom_trigger = { is_imprisoned = yes } +# +#fp2_lyonese_monk_0000_out_of_popes_trigger = { +# NOT = { exists = scope:story.var:base_faith.religious_head } +#} +# +#fp2_lyonese_monk_0000_out_of_faith_trigger = { +# OR = { +# scope:acolyte.faith.religious_head != scope:story.var:base_faith.religious_head +# scope:acolyte_host.faith.religious_head != scope:story.var:base_faith.religious_head +# } +#} +# +#fp2_does_this_player_care_about_the_fate_of_iberia = { +# this != root +# OR = { +# location = { +# OR = { # Is in region +# geographical_region = world_europe_west +# geographical_region = world_africa_north +# geographical_region = world_europe_south_italy +# } +# } +# struggle:iberian_struggle = { is_culture_involved_in_struggle = prev.culture } +# } +#} +# +#fp2_eligible_for_yearly_events_trigger = { +# has_fp2_dlc_trigger = yes +# OR = { +# any_character_struggle = { +# involvement = involved +# is_struggle_type = iberian_struggle +# } +# culture = { +# has_cultural_pillar = heritage_iberian +# } +# capital_province ?= { +# geographical_region = world_europe_west_iberia +# } +# } +#} fp2_purchase_truce_interaction_soft_requirements_trigger = { OR = { diff --git a/common/scripted_triggers/mpo_scripted_triggers.txt b/common/scripted_triggers/mpo_scripted_triggers.txt index 3ce6fd7b..e747b6a5 100644 --- a/common/scripted_triggers/mpo_scripted_triggers.txt +++ b/common/scripted_triggers/mpo_scripted_triggers.txt @@ -176,7 +176,7 @@ mpo_important_beheaded_warrior_trigger = { mpo_keep_prisoners_heads_trigger = { OR = { - faith.religion = faith:tengri_pagan.religion +# faith.religion = faith:tengri_pagan.religion has_trait = greatest_of_khans has_trait = nomadic_philosophy } @@ -744,7 +744,7 @@ mpo_valid_widow_marrier_trigger = { culture = { has_cultural_pillar = heritage_turkic } - faith.religion = faith:tengri_pagan.religion +# faith.religion = faith:tengri_pagan.religion } #Can have multiple wives or concubines faith = { diff --git a/common/story_cycles/ce1_story_cycle_black_death.txt b/common/story_cycles/ce1_story_cycle_black_death.txt new file mode 100644 index 00000000..1ad4e39b --- /dev/null +++ b/common/story_cycles/ce1_story_cycle_black_death.txt @@ -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 + } + } + } +} diff --git a/common/story_cycles/ce1_story_cycle_plague_witch_hunt.txt b/common/story_cycles/ce1_story_cycle_plague_witch_hunt.txt new file mode 100644 index 00000000..c3c6b8bd --- /dev/null +++ b/common/story_cycles/ce1_story_cycle_plague_witch_hunt.txt @@ -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 + } + } + } +} \ No newline at end of file diff --git a/common/story_cycles/ep3_story_cycle_el_cid.txt b/common/story_cycles/ep3_story_cycle_el_cid.txt new file mode 100644 index 00000000..90ed110f --- /dev/null +++ b/common/story_cycles/ep3_story_cycle_el_cid.txt @@ -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 + } + } + } + } + } +} diff --git a/common/story_cycles/ep3_story_cycle_frankokratia.txt b/common/story_cycles/ep3_story_cycle_frankokratia.txt new file mode 100644 index 00000000..f3e5e515 --- /dev/null +++ b/common/story_cycles/ep3_story_cycle_frankokratia.txt @@ -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 +# } +# } +# } +#} +# \ No newline at end of file diff --git a/common/story_cycles/ep3_story_cycle_grand_ambitions.txt b/common/story_cycles/ep3_story_cycle_grand_ambitions.txt new file mode 100644 index 00000000..d19ade5d --- /dev/null +++ b/common/story_cycles/ep3_story_cycle_grand_ambitions.txt @@ -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 + } + } + } + } + } + } + } +} diff --git a/common/story_cycles/ep3_story_cycle_harrying_of_the_north.txt b/common/story_cycles/ep3_story_cycle_harrying_of_the_north.txt new file mode 100644 index 00000000..0eebb70c --- /dev/null +++ b/common/story_cycles/ep3_story_cycle_harrying_of_the_north.txt @@ -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 +# } +# } +# } +# } +#} +# \ No newline at end of file diff --git a/common/story_cycles/ep3_story_cycle_hasan_sabbah.txt b/common/story_cycles/ep3_story_cycle_hasan_sabbah.txt new file mode 100644 index 00000000..5f463310 --- /dev/null +++ b/common/story_cycles/ep3_story_cycle_hasan_sabbah.txt @@ -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 + } + } + } + } +} diff --git a/common/story_cycles/ep3_story_cycle_restoring_rome.txt b/common/story_cycles/ep3_story_cycle_restoring_rome.txt new file mode 100644 index 00000000..e9b9297a --- /dev/null +++ b/common/story_cycles/ep3_story_cycle_restoring_rome.txt @@ -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 + } + } + } +} diff --git a/common/story_cycles/ep3_story_cycle_violet_poet.txt b/common/story_cycles/ep3_story_cycle_violet_poet.txt new file mode 100644 index 00000000..4d2c054b --- /dev/null +++ b/common/story_cycles/ep3_story_cycle_violet_poet.txt @@ -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 + } + } + } + } + } + } +} diff --git a/common/story_cycles/fp3_story_cycle_turkic_tribe.txt b/common/story_cycles/fp3_story_cycle_turkic_tribe.txt new file mode 100644 index 00000000..0dff041d --- /dev/null +++ b/common/story_cycles/fp3_story_cycle_turkic_tribe.txt @@ -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 + } + } + } +} diff --git a/common/story_cycles/fp3_story_cycle_zanj_rebellion.txt b/common/story_cycles/fp3_story_cycle_zanj_rebellion.txt new file mode 100644 index 00000000..2fc43c4b --- /dev/null +++ b/common/story_cycles/fp3_story_cycle_zanj_rebellion.txt @@ -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 + } + } + } +} \ No newline at end of file diff --git a/common/story_cycles/mpo_story_cycle_greatest_of_khans.txt b/common/story_cycles/mpo_story_cycle_greatest_of_khans.txt new file mode 100644 index 00000000..3979734e --- /dev/null +++ b/common/story_cycles/mpo_story_cycle_greatest_of_khans.txt @@ -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 + } + } + } + +} diff --git a/common/story_cycles/mpo_story_cycle_temujin_flavor.txt b/common/story_cycles/mpo_story_cycle_temujin_flavor.txt new file mode 100644 index 00000000..c0e43ed2 --- /dev/null +++ b/common/story_cycles/mpo_story_cycle_temujin_flavor.txt @@ -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 + } + } + } + } + } +} diff --git a/common/story_cycles/story_cycle_almohad_invasion.txt b/common/story_cycles/story_cycle_almohad_invasion.txt new file mode 100644 index 00000000..fadf63cb --- /dev/null +++ b/common/story_cycles/story_cycle_almohad_invasion.txt @@ -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 + } + } + } +} diff --git a/common/story_cycles/story_cycle_house_feud.txt b/common/story_cycles/story_cycle_house_feud.txt new file mode 100644 index 00000000..39782398 --- /dev/null +++ b/common/story_cycles/story_cycle_house_feud.txt @@ -0,0 +1,505 @@ +### DEPRECATED + +#story_cycle_house_feud = { +# +# on_setup = { +# ### Scopes +# save_scope_as = house_feud_story +# } +# +# on_end = { +# var:house_feud_house.house_head ?= { save_scope_as = house_feud_rival } +# if = { +# limit = { +# NAND = { +# exists = story_owner.var:house_feud_swapped_house +# story_owner.var:house_feud_swapped_house = var:house_feud_house +# } +# } +# house_feud_end_modifier_effect = yes +# } +# story_owner = { +# save_scope_as = house_feud_ender +# if = { +# limit = { exists = scope:house_feud_rival } +# create_character_memory = { +# type = house_feud_ended_memory +# participants = { +# house_head = scope:house_feud_rival +# } +# } +# } +# house = { +# set_variable = { +# name = house_feud_cooldown +# years = 25 +# } +# set_variable = { +# name = house_feud_ended +# years = 1 +# } +# hidden_effect = { +# if = { +# limit = { +# any_house_member = { is_alive = yes } +# } +# every_house_member = { +# limit = { is_alive = yes } +# if = { +# limit = { +# exists = scope:house_feud_rival +# scope:house_feud_rival = { is_alive = yes } +# has_opinion_modifier = { +# modifier = house_feud_opinion +# target = scope:house_feud_rival +# } +# } +# remove_opinion = { +# modifier = house_feud_opinion +# target = scope:house_feud_rival +# } +# } +# } +# } +# } +# } +# } +# # Inform target feud has ended +# if = { +# limit = { +# exists = var:house_feud_house.house_head +# var:house_feud_house.house_head = { is_alive = yes } +# } +# story_owner = { save_scope_as = house_feud_attacker } +# var:house_feud_house.house_head = { +# trigger_event = { +# id = bp1_house_feud.0502 +# days = 5 +# } +# } +# } +# } +# +# on_owner_death = { +# # Transfer to heir +# if = { +# limit = { +# exists = scope:story.var:house_feud_house.house_head +# story_owner = { +# is_playable_character = yes +# exists = player_heir +# } +# } +# var:house_feud_house.house_head = { save_scope_as = house_feud_rival } +# story_owner = { +# save_scope_as = old_house_head +# player_heir = { save_scope_as = new_story_owner } +# } +# #transfer_house_feud_story_cycle_to_effect = { +# # CHARACTER = scope:new_story_owner +# # STORY = scope:story +# #} +# } +# # Or destroy +# else = { +# scope:story = { end_story = yes } +# } +# } +# +# # Something happens - random events +# effect_group = { +# years = { 1 2 } +# chance = 50 +# +# trigger = { +# exists = var:house_feud_house.house_head +# var:house_feud_house.house_head = { is_alive = yes } +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# var:house_feud_house.house_head = { save_scope_as = house_feud_rival } +# story_owner = { +# trigger_event = { on_action = ongoing_house_feud_events } +# } +# } +# } +# } +# +# #Achieved claim +# effect_group = { +# days = 1 +# +# trigger = { +# NOT = { has_variable = house_feud_revenged } +# story_owner = { age >= 9 } +# has_variable = house_feud_reason +# var:house_feud_reason = flag:competing_claim +# has_variable = house_feud_title +# var:house_feud_title = { +# exists = previous_holder.house +# previous_holder.house = scope:story.var:house_feud_house_2_first_head.house +# holder.house = scope:story.story_owner.house +# } +# } +# +# +# } +# +# #Avenged death +# effect_group = { +# days = 1 +# +# trigger = { +# NOT = { has_variable = house_feud_revenged } +# story_owner = { age >= 9 } +# has_variable = house_feud_reason +# OR = { +# var:house_feud_reason = flag:head_killed +# var:house_feud_reason = flag:family_killed +# } +# has_variable = house_feud_attacker +# var:house_feud_attacker = { +# is_alive = no +# exists = killer +# killer.house = scope:story.story_owner.house +# } +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# var:house_feud_house.house_head = { save_scope_as = house_feud_rival } +# var:house_feud_attacker = { save_scope_as = house_feud_attacker } +# var:house_feud_victim = { save_scope_as = house_feud_victim } +# set_variable = { +# name = house_feud_revenged +# value = scope:house_feud_rival.house +# } +# story_owner = { trigger_event = bp1_house_feud.7001 } +# } +# } +# } +# +# #Count length of the feud +# effect_group = { +# years = 1 +# +# trigger = { exists = var:house_feud_length_counter } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# change_variable = { +# name = house_feud_length_counter +# add = 1 +# } +# } +# } +# } +# +# #Out of diplo range +# effect_group = { +# days = 1 +# +# trigger = { +# story_owner = { save_temporary_scope_as = story_owner_temp } +# var:house_feud_house.house_head ?= { +# is_alive = yes +# NOT = { in_diplomatic_range = scope:story_owner_temp } +# } +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# var:house_feud_house.house_head = { save_scope_as = house_feud_rival } +# end_story = yes +# } +# } +# } +# +# #Wiped out +# effect_group = { +# days = 1 +# +# trigger = { +# story_owner.age >= 9 +# house_feud_wiped_out_trigger = yes +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# story_owner = { trigger_event = bp1_house_feud.0830 } +# } +# } +# } +# +# #Not rival with house head +# effect_group = { +# months = { 1 2 } +# +# trigger = { +# story_owner = { +# age >= 9 +# trigger_if = { +# limit = { has_variable = house_feud_next_cooldown } +# NOT = { var:house_feud_next_cooldown = scope:story.var:house_feud_house.house_head } +# } +# } +# exists = var:house_feud_house.house_head +# exists = var:house_feud_house_2_first_head +# var:house_feud_house = var:house_feud_house_2_first_head.house +# var:house_feud_house.house_head = { +# is_alive = yes +# age >= 9 +# NOT = { has_relation_rival = scope:story.story_owner } +# } +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# var:house_feud_house.house_head = { save_scope_as = house_feud_rival } +# story_owner = { trigger_event = bp1_house_feud.0840 } +# } +# } +# } +# +# #Add opinion modifiers +# effect_group = { +# months = 6 +# +# trigger = { +# var:house_feud_house.house_head ?= { save_temporary_scope_as = house_feud_head_temp } +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# var:house_feud_house.house_head = { save_scope_as = house_feud_rival } +# story_owner.house = { +# every_house_member = { trigger_event = bp1_house_feud.0600 } +# } +# } +# } +# } +# +# # Target house can decide to reciprocate +# effect_group = { +# months = 6 +# trigger = { +# scope:story.var:house_feud_house.house_head ?= { +# valid_for_feud_events_with_target_trigger = { TARGET = scope:story.story_owner } +# trigger_if = { +# limit = { has_variable = house_feud_reciprocate_cooldown } +# NOT = { var:house_feud_reciprocate_cooldown = scope:story.story_owner.house } +# } +# } +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# story_owner = { save_scope_as = house_feud_rival } +# scope:story = { save_scope_as = other_house_feud_story } +# scope:story.var:house_feud_house.house_head = { +# random = { +# chance = 50 +# modifier = { +# add = 25 +# intrigue > scope:house_feud_rival.intrigue +# } +# modifier = { +# add = 25 +# has_relation_nemesis = scope:house_feud_rival +# } +# modifier = { +# add = -25 +# has_trait = trusting +# } +# trigger_event = bp1_house_feud.0500 +# } +# } +# } +# } +# } +# +# #Murder inform +# effect_group = { +# months = 1 +# +# trigger = { +# story_owner.house = { +# any_house_member = { +# opinion = { +# target = scope:story.story_owner +# value >= -25 +# } +# NOT = { +# has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:story.story_owner } +# } +# any_secret = { +# secret_type = secret_murder +# secret_target = { +# exists = house +# house = scope:story.var:house_feud_house +# } +# NOT = { +# any_secret_knower = { this = scope:story.story_owner } +# } +# } +# } +# } +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# story_owner.house = { +# random_house_member = { +# limit = { +# opinion = { +# target = scope:story.story_owner +# value >= -25 +# } +# NOT = { +# has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:story.story_owner } +# } +# } +# random_secret = { +# limit = { +# secret_type = secret_murder +# secret_target = { +# exists = house +# house = scope:story.var:house_feud_house +# } +# NOT = { +# any_secret_knower = { this = scope:story.story_owner } +# } +# } +# reveal_to = scope:story.story_owner +# } +# } +# } +# } +# } +# } +# +# # Cuckoldry inform +# effect_group = { +# months = 1 +# +# trigger = { +# story_owner.house = { +# any_house_member = { +# opinion = { +# target = scope:story.story_owner +# value >= -25 +# } +# NOT = { +# has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:story.story_owner } +# } +# any_secret = { +# secret_type = secret_lover +# secret_target = { +# exists = house +# house = scope:story.var:house_feud_house +# } +# NOT = { +# any_secret_knower = { this = scope:story.story_owner } +# } +# } +# } +# } +# } +# +# triggered_effect = { +# trigger = { always = yes } +# effect = { +# story_owner.house = { +# random_house_member = { +# limit = { +# opinion = { +# target = scope:story.story_owner +# value >= -25 +# } +# NOT = { +# has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:story.story_owner } +# } +# } +# random_secret = { +# limit = { +# secret_type = secret_lover +# secret_target = { +# exists = house +# house = scope:story.var:house_feud_house +# } +# NOT = { +# any_secret_knower = { this = scope:story.story_owner } +# } +# } +# reveal_to = scope:story.story_owner +# } +# } +# } +# } +# } +# } +# +# # Stop AI feuds from going too hard against players +# effect_group = { +# months = 1 +# trigger = { always = yes } +# +# triggered_effect = { +# trigger = { +# story_owner = { is_ai = yes } +# var:house_feud_house.house.house_head ?= { is_ai = no } +# # House must be sufficiently large to support a Feud +# var:house_feud_house.house = { +# any_house_member = { +# count < 5 +# is_alive = yes +# is_adult = yes +# } +# } +# } +# effect = { +# story_owner = { save_scope_as = story_owner } +# debug_log = "House Feud cancelled against player" +# debug_log_scopes = yes +# end_story = yes +# } +# } +# } +# +# # Maintenance group +# effect_group = { +# months = 1 +# trigger = { always = yes } +# +# triggered_effect = { +# trigger = { +# OR = { +# NOT = { exists = var:house_feud_house } +# NOT = { exists = var:house_feud_house_1_first_head } +# NOT = { exists = var:house_feud_house_2_first_head } +# NOT = { exists = var:house_feud_length_counter } +# NOT = { exists = var:house_feud_death_counter } +# NOT = { exists = var:house_feud_kill_counter } +# NOT = { exists = var:house_feud_reason } +# } +# } +# effect = { +# # Variable is missing! Ending story prematurely. +# story_owner = { save_scope_as = story_owner } +# debug_log = "House Feud invalidated" +# debug_log_scopes = yes +# end_story = yes +# } +# } +# } +#} diff --git a/common/story_cycles/story_cycle_lyonese_monk.txt b/common/story_cycles/story_cycle_lyonese_monk.txt new file mode 100644 index 00000000..03d9caac --- /dev/null +++ b/common/story_cycles/story_cycle_lyonese_monk.txt @@ -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 +# } +# } +# } +#} +# \ No newline at end of file diff --git a/common/story_cycles/story_cycle_mongol_invasion.txt b/common/story_cycles/story_cycle_mongol_invasion.txt new file mode 100644 index 00000000..1769f1c6 --- /dev/null +++ b/common/story_cycles/story_cycle_mongol_invasion.txt @@ -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 + } + } + } + } +} diff --git a/common/story_cycles/story_cycle_restored_roman_provinces.txt b/common/story_cycles/story_cycle_restored_roman_provinces.txt new file mode 100644 index 00000000..dcbc14ec --- /dev/null +++ b/common/story_cycles/story_cycle_restored_roman_provinces.txt @@ -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 + } + } + } +} diff --git a/common/story_cycles/story_cycle_seljuk_invasion.txt b/common/story_cycles/story_cycle_seljuk_invasion.txt new file mode 100644 index 00000000..a17588cc --- /dev/null +++ b/common/story_cycles/story_cycle_seljuk_invasion.txt @@ -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 + } + } + } + +} diff --git a/common/story_cycles/story_cycle_take_mandate_of_heaven.txt b/common/story_cycles/story_cycle_take_mandate_of_heaven.txt new file mode 100644 index 00000000..ec4c5a26 --- /dev/null +++ b/common/story_cycles/story_cycle_take_mandate_of_heaven.txt @@ -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 + } + } + } +} diff --git a/common/story_cycles/tgp_story_cycle_tai_migrations.txt b/common/story_cycles/tgp_story_cycle_tai_migrations.txt new file mode 100644 index 00000000..f038c6c1 --- /dev/null +++ b/common/story_cycles/tgp_story_cycle_tai_migrations.txt @@ -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 + } + } + } + } + } + } +} diff --git a/events/decisions_events/major_decisions_events.txt b/events/decisions_events/major_decisions_events.txt index 0946e9d3..306641c6 100644 --- a/events/decisions_events/major_decisions_events.txt +++ b/events/decisions_events/major_decisions_events.txt @@ -1500,198 +1500,198 @@ major_decisions.3100 = { } ################### -# Merge Aquitaine # -################### -major_decisions.3200 = { - type = character_event - title = major_decisions.3200.t - desc = major_decisions.3200.desc - theme = realm - left_portrait = { - trigger = { - this != scope:rightful_liege - } - character = root - triggered_animation = { - trigger = { - NOR = { - opinion = { - target = scope:rightful_liege - value >= 25 - } - root.culture = scope:rightful_liege.culture - culture = { any_parent_culture_or_above = { this = scope:rightful_liege.culture } } - } - } - animation = disapproval - } - animation = obsequious_bow - } - - right_portrait = { - character = scope:rightful_liege - animation = personality_honorable - } - - immediate = { - show_as_tooltip = { - destroy_title = scope:destroyed_title - scope:rightful_title = { - if = { - limit = { - this = title:k_aquitaine - } - every_in_de_jure_hierarchy = { - custom = merge_aquitaine_decision_tooltip_alt - custom_tooltip = merge_aquitaine_decision_tooltip_2_alt - } - } - else = { - every_in_de_jure_hierarchy = { - custom = merge_aquitaine_decision_tooltip_original - custom_tooltip = merge_aquitaine_decision_tooltip_2_original - } - } - } - } - } - - option = { - name = major_decisions.3200.a - trigger = { - NOR = { - opinion = { - target = scope:rightful_liege - value >= 25 - } - root.culture = scope:rightful_liege.culture - culture = { any_parent_culture_or_above = { this = scope:rightful_liege.culture } } - } - } - } - - option = { - name = major_decisions.3200.b - trigger = { - OR = { - opinion = { - target = scope:rightful_liege - value >= 25 - } - root.culture = scope:rightful_liege.culture - culture = { any_parent_culture_or_above = { this = scope:rightful_liege.culture } } - } - } - } -} -#Restore Carthage -major_decisions.3300 = { - type = character_event - title = major_decisions.3300.t - desc = major_decisions.3300.desc - theme = crown - - override_effect_2d = { reference = legend_glow } - - left_portrait = { - character = root - animation = sword_coup_degrace - camera = camera_torso_scheme_right_look_right - } - - immediate = { - restore_carthage_scripted_effect = yes - - culture = { save_scope_as = founder_culture } - } - - option = { - name = major_decisions.3300.a - - hidden_effect = { - culture:carthaginian = { - get_all_innovations_from = scope:founder_culture - } - } - - #convert people to your new culture - convert_family_culture_and_notify_vassals_effect = { - OLD_CULTURE = root.culture - NEW_CULTURE = culture:carthaginian - CONVERTER = root - } - - #convert capital counties to carthaginian - title:c_tunis = { - set_county_culture = culture:carthaginian - } - title:c_tripolitana = { - set_county_culture = culture:carthaginian - } - title:c_algier = { - set_county_culture = culture:carthaginian - } - title:c_murcia = { - set_county_culture = culture:carthaginian - } - } - - option = { - name = major_decisions.3300.b - } -} - -############## -# Carantania # -############## -major_decisions.3400 = { - type = character_event - title = major_decisions.3400.t - desc = major_decisions.3400.desc - theme = crown - override_background = ce1_legendary_spring - left_portrait = { - character = root - animation = pondering - } - window = big_event_window - - widget = { gui = event_window_widget_vfx_godray container = foreground_shader_vfx_container } - - immediate = { - decision_restore_carantania_effect = yes - } - - option = { - name = major_decisions.3400.a - } -} - -########### -# Cumbria # -########### -major_decisions.3500 = { - type = character_event - title = major_decisions.3500.t - desc = major_decisions.3500.desc - theme = crown - override_background = council_chamber - left_portrait = { - character = root - animation = pondering - } - window = big_event_window - - widget = { gui = event_window_widget_vfx_godray container = foreground_shader_vfx_container } - - immediate = { - form_cumbria_decision_scripted_effect = yes - } - - option = { - name = major_decisions.3500.a - } -} +## Merge Aquitaine # +#################### +#major_decisions.3200 = { +# type = character_event +# title = major_decisions.3200.t +# desc = major_decisions.3200.desc +# theme = realm +# left_portrait = { +# trigger = { +# this != scope:rightful_liege +# } +# character = root +# triggered_animation = { +# trigger = { +# NOR = { +# opinion = { +# target = scope:rightful_liege +# value >= 25 +# } +# root.culture = scope:rightful_liege.culture +# culture = { any_parent_culture_or_above = { this = scope:rightful_liege.culture } } +# } +# } +# animation = disapproval +# } +# animation = obsequious_bow +# } +# +# right_portrait = { +# character = scope:rightful_liege +# animation = personality_honorable +# } +# +# immediate = { +# show_as_tooltip = { +# destroy_title = scope:destroyed_title +# scope:rightful_title = { +# if = { +# limit = { +# this = title:k_aquitaine +# } +# every_in_de_jure_hierarchy = { +# custom = merge_aquitaine_decision_tooltip_alt +# custom_tooltip = merge_aquitaine_decision_tooltip_2_alt +# } +# } +# else = { +# every_in_de_jure_hierarchy = { +# custom = merge_aquitaine_decision_tooltip_original +# custom_tooltip = merge_aquitaine_decision_tooltip_2_original +# } +# } +# } +# } +# } +# +# option = { +# name = major_decisions.3200.a +# trigger = { +# NOR = { +# opinion = { +# target = scope:rightful_liege +# value >= 25 +# } +# root.culture = scope:rightful_liege.culture +# culture = { any_parent_culture_or_above = { this = scope:rightful_liege.culture } } +# } +# } +# } +# +# option = { +# name = major_decisions.3200.b +# trigger = { +# OR = { +# opinion = { +# target = scope:rightful_liege +# value >= 25 +# } +# root.culture = scope:rightful_liege.culture +# culture = { any_parent_culture_or_above = { this = scope:rightful_liege.culture } } +# } +# } +# } +#} +##Restore Carthage +#major_decisions.3300 = { +# type = character_event +# title = major_decisions.3300.t +# desc = major_decisions.3300.desc +# theme = crown +# +# override_effect_2d = { reference = legend_glow } +# +# left_portrait = { +# character = root +# animation = sword_coup_degrace +# camera = camera_torso_scheme_right_look_right +# } +# +# immediate = { +# restore_carthage_scripted_effect = yes +# +# culture = { save_scope_as = founder_culture } +# } +# +# option = { +# name = major_decisions.3300.a +# +# hidden_effect = { +# culture:carthaginian = { +# get_all_innovations_from = scope:founder_culture +# } +# } +# +# #convert people to your new culture +# convert_family_culture_and_notify_vassals_effect = { +# OLD_CULTURE = root.culture +# NEW_CULTURE = culture:carthaginian +# CONVERTER = root +# } +# +# #convert capital counties to carthaginian +# title:c_tunis = { +# set_county_culture = culture:carthaginian +# } +# title:c_tripolitana = { +# set_county_culture = culture:carthaginian +# } +# title:c_algier = { +# set_county_culture = culture:carthaginian +# } +# title:c_murcia = { +# set_county_culture = culture:carthaginian +# } +# } +# +# option = { +# name = major_decisions.3300.b +# } +#} +# +############### +## Carantania # +############### +#major_decisions.3400 = { +# type = character_event +# title = major_decisions.3400.t +# desc = major_decisions.3400.desc +# theme = crown +# override_background = ce1_legendary_spring +# left_portrait = { +# character = root +# animation = pondering +# } +# window = big_event_window +# +# widget = { gui = event_window_widget_vfx_godray container = foreground_shader_vfx_container } +# +# immediate = { +# decision_restore_carantania_effect = yes +# } +# +# option = { +# name = major_decisions.3400.a +# } +#} +# +############ +## Cumbria # +############ +#major_decisions.3500 = { +# type = character_event +# title = major_decisions.3500.t +# desc = major_decisions.3500.desc +# theme = crown +# override_background = council_chamber +# left_portrait = { +# character = root +# animation = pondering +# } +# window = big_event_window +# +# widget = { gui = event_window_widget_vfx_godray container = foreground_shader_vfx_container } +# +# immediate = { +# form_cumbria_decision_scripted_effect = yes +# } +# +# option = { +# name = major_decisions.3500.a +# } +#} # #################### ## Cossack Kingdom # diff --git a/events/dlc/ep3/ep3_emperor_yearly_8.txt b/events/dlc/ep3/ep3_emperor_yearly_8.txt index a9542afa..27e1b17f 100644 --- a/events/dlc/ep3/ep3_emperor_yearly_8.txt +++ b/events/dlc/ep3/ep3_emperor_yearly_8.txt @@ -1613,7 +1613,7 @@ ep3_emperor_yearly.8050 = { } } # Faith - religion:germanic_religion = { + religion:folkgerman_religion = { any_faith = { num_county_followers >= 1 } } } @@ -1677,7 +1677,7 @@ ep3_emperor_yearly.8050 = { save_scope_as = raider_culture } # Faith - religion:germanic_religion = { + religion:folkgerman_religion = { random_faith = { limit = { num_county_followers >= 1 } weight = { diff --git a/events/dlc/ep3/ep3_laamp_events.txt b/events/dlc/ep3/ep3_laamp_events.txt index 9ed4d6d1..063d9966 100644 --- a/events/dlc/ep3/ep3_laamp_events.txt +++ b/events/dlc/ep3/ep3_laamp_events.txt @@ -1304,291 +1304,6 @@ ep3_laamps.1030 = { name = ep3_laamps.1032.a } } - ################################################## - # Become Adventurer - Revocation - # by Joe Parkin - # 0040-0041 - ################################################## - - # Come back - - scripted_trigger ep3_laamp_revoked_title_trigger = { - recent_history = { type = revoked days = 1 } - previous_holder = root - } - - ep3_laamps.0040 = { - type = character_event - window = fullscreen_event - title = ep3_laamps.0040.t - desc = { - first_valid = { - triggered_desc = { - trigger = { - scope:actor = { is_close_family_of = root } - } - desc = ep3_laamps.0040.family - } - desc = ep3_laamps.0040.other - } - desc = ep3_laamps.0040.desc - } - theme = realm - left_portrait = { - character = root - animation = marshal - } - lower_left_portrait = scope:alt_1 - lower_center_portrait = scope:alt_2 - lower_right_portrait = scope:alt_3 - override_background = { reference = ep3_fullscreen_adventurer_negative } - cooldown = { days = 5 } - - # The AI was managing to get this event somehow. - trigger = { - is_ai = no - NOT = { has_character_flag = become_laamp_event_cooldown } - } - - immediate = { - add_character_flag = { - flag = become_laamp_event_cooldown - days = 5 - } - # Find alternative rulers to play as - find_playable_relatives_effect = yes - # Portrait scopes - if = { - limit = { - NOR = { - exists = scope:alt_3 - scope:alt_1 ?= scope:actor - scope:alt_2 ?= scope:actor - } - } - scope:actor = { save_scope_as = alt_3 } - } - # Create Adventurer - hidden_effect = { - create_landless_adventurer_title_effect = { - REASON = flag:revocation - FLAVOR_CHAR = scope:actor - } - } - adventurer_prestige_reset_effect = yes - } - - option = { - name = ep3_laamps.0040.a - create_landless_adventurer_title_tooltip_effect = yes - add_internal_flag = special - scope:actor = { trigger_event = ep3_laamps.0042 } - } - - option = { - name = ep3_laamps.0001.b - trigger = { exists = scope:alt_1 } - laamp_switch_playable_character_effect = { NEW_CHARACTER = scope:alt_1 } - } - option = { - name = ep3_laamps.0001.c - trigger = { exists = scope:alt_2 } - laamp_switch_playable_character_effect = { NEW_CHARACTER = scope:alt_2 } - } - option = { - name = ep3_laamps.0001.d - trigger = { - exists = scope:alt_3 - scope:alt_3 = { playable_relative_trigger = yes } - } - laamp_switch_playable_character_effect = { NEW_CHARACTER = scope:alt_3 } - } - option = { - name = ep3_laamps.0001.e - laamp_game_over_option_effect = yes - } - } - - # Setup event - ep3_laamps.0041 = { - type = character_event - hidden = yes - - trigger = { - has_ep3_dlc_trigger = yes - is_landed = no - is_valid_for_laampdom = yes - } - - immediate = { - save_scope_as = adventurer - # AI chance - if = { - limit = { - is_ai = yes - ai_can_valid_to_create_laamp_trigger = yes - trigger_if = { # Don't fill the adventurer pool with revoked counts - limit = { - scope:lost_primary_title.tier <= tier_county - } - global_variable_list_size = { - name = laamps_tally - value < seventyfive_percent_of_max_desired_laamps_value - } - } - } - random = { - chance = 0 - modifier = { add = ep3_laamp_chance_score_value } - create_landless_adventurer_title_effect = { - REASON = flag:revocation - FLAVOR_CHAR = scope:actor - } - scope:actor = { trigger_event = ep3_laamps.0042 } - } - } - # Player event - else = { - trigger_event = { id = ep3_laamps.0040 } - } - } - } - - # Revoker event - ep3_laamps.0042 = { - type = letter_event - opening = ep3_laamps.0003.opening - desc = ep3_laamps.0042.desc - sender = scope:adventurer - - trigger = { is_ai = no } - - immediate = { - create_landless_adventurer_title_tooltip_effect = yes - } - - option = { - name = ep3_laamps.0042.a - } - } -ep3_laamps.1030 = { - type = character_event - window = fullscreen_event - title = ep3_laamps.1030.t - desc = { - desc = ep3_laamps.1030.desc - first_valid = { - triggered_desc = { - trigger = { exists = scope:laamp_heir } - desc = ep3_laamps.1030.heir - } - triggered_desc = { - trigger = { exists = scope:laamp_liege } - desc = ep3_laamps.1030.liege - } - desc = ep3_laamps.1030.new - } - } - theme = realm - left_portrait = { - character = root - animation = marshal - } - lower_right_portrait = scope:laamp_inheritor - override_background = { reference = ep3_fullscreen_adventurer_positive } - cooldown = { days = 5 } - - trigger = { exists = scope:laamp_inheritor } - - immediate = { - # Save scopes for loc - primary_title = { save_scope_as = old_primary_title } - capital_province = { save_scope_as = old_capital_province } - if = { - limit = { top_liege != this } - liege = { save_scope_as = old_liege } - } - # Transfer landed titles - every_held_title = { - title_tier > barony - limit = { - OR = { - is_landless_type_title = no - is_nomad_title = yes - } - } - add_to_list = target_titles - } - create_title_and_vassal_change = { - type = conquest - save_scope_as = change - add_claim_on_loss = no - } - hidden_effect = { - every_in_list = { - list = target_titles - change_title_holder_include_vassals = { - holder = scope:laamp_inheritor - change = scope:change - } - } - resolve_title_and_vassal_change = scope:change - } - # Create Adventurer - create_landless_minority_title_effect = { - REASON = flag:voluntary - FLAVOR_CHAR = scope:laamp_inheritor - } - scope:laamp_inheritor = { - # Tooltip for player - custom_tooltip = become_landless_adventurer_decision_title_scope_tt - # Create a loving family so inheritance isn't so borked - if = { - limit = { has_character_flag = new_laamp_inheritor } - trigger_event = game_rule.1001 - remove_character_flag = new_laamp_inheritor - } - } - scope:old_liege ?= { trigger_event = ep3_laamps.1032 } - adventurer_prestige_reset_effect = yes - hidden_effect = { - every_held_title = { - limit = { - is_noble_family_title = yes - } - root = { destroy_title = prev } - } - } - } - - option = { - name = ep3_laamps.1030.a - create_landless_minority_title_tooltip_effect = yes - add_prestige = medium_prestige_gain - add_character_modifier = { - modifier = ep3_voluntary_laamp_character_modifier - years = 5 - } - } - } - - # Liege event - ep3_laamps.1032 = { - type = letter_event - opening = ep3_laamps.1032.opening - desc = ep3_laamps.1032.desc - sender = scope:minority_leader - - trigger = { is_ai = no } - - immediate = { - scope:minority_leader = { create_landless_minority_title_tooltip_effect = yes } - } - - option = { - name = ep3_laamps.1032.a - } - } ################################################## # Become Adventurer - Revocation diff --git a/events/dlc/fp1/fp1_jomsvikings_events.txt b/events/dlc/fp1/fp1_jomsvikings_events.txt index 18354641..476c2118 100644 --- a/events/dlc/fp1/fp1_jomsvikings_events.txt +++ b/events/dlc/fp1/fp1_jomsvikings_events.txt @@ -2040,7 +2040,7 @@ fp1_jomsvikings.1001 = { # If someone reformed Norse paganism, the Jomsvikings lament it. triggered_desc = { trigger = { - religion:germanic_religion = { + religion:folkgerman_religion = { any_faith = { NOT = { has_doctrine_parameter = unreformed } } diff --git a/events/dlc/mpo/mpo_nomad_events_1.txt b/events/dlc/mpo/mpo_nomad_events_1.txt index 451f0d39..daf30e27 100644 --- a/events/dlc/mpo/mpo_nomad_events_1.txt +++ b/events/dlc/mpo/mpo_nomad_events_1.txt @@ -1733,7 +1733,7 @@ mpo_nomad_events.1012 = { has_trait = devoted } OR = { - faith.religion = faith:tengri_pagan.religion +# faith.religion = faith:tengri_pagan.religion has_trait = nomadic_philosophy government_has_flag = government_is_nomadic } @@ -6774,7 +6774,7 @@ mpo_nomad_events.1091 = { culture = { has_cultural_pillar = heritage_turkic } - faith.religion = faith:tengri_pagan.religion +# faith.religion = faith:tengri_pagan.religion } #Can have multiple wives or concubines faith = { diff --git a/events/lifestyles/warfare_lifestyle/warhorse_events.txt b/events/lifestyles/warfare_lifestyle/warhorse_events.txt index 5adea4a5..f93c8139 100644 --- a/events/lifestyles/warfare_lifestyle/warhorse_events.txt +++ b/events/lifestyles/warfare_lifestyle/warhorse_events.txt @@ -76,7 +76,7 @@ scripted_trigger warhorse_0002_steppe_trigger = { culture = { has_cultural_pillar = heritage_turkic } - faith.religion = faith:tengri_pagan.religion +# faith.religion = faith:tengri_pagan.religion } } diff --git a/events/single_combat_events.txt b/events/single_combat_events.txt new file mode 100644 index 00000000..363ef19e --- /dev/null +++ b/events/single_combat_events.txt @@ -0,0 +1,11842 @@ +namespace = single_combat + +################################################## +# # SINGLE COMBAT EVENTS +# 0001 - 0020 Participant Events +# 0021 - 0030 Round End Events +# 0031 - 0050 Results Events +# 1001 - 1020 Debug Events +# +################################################## + + + + +################################################## +# MISC SCRIPTED TRIGGERS + +# If scope:fatality = flag:default, then will a character die when the duel is concluded? +scripted_trigger fatality_default_will_die_trigger = { + scope:sc_attacker = { + OR = { + #scope:sc_attacker is tribal. + AND = { + is_ruler = yes + government_has_flag = government_is_tribal + } + #scope:sc_attacker has a tribal court_owner. + AND = { + is_ruler = no + exists = court_owner + scope:sc_attacker.court_owner = { government_has_flag = government_is_tribal} + } + #scope:sc_attacker has a tribal host. + AND = { + is_ruler = no + exists = host + scope:sc_attacker.host = { government_has_flag = government_is_tribal } + } + #scope:sc_attacker is isolated & landless, in which case we check scope:sc_defender. + AND = { + is_ruler = no + NOR = { + exists = court_owner + exists = host + } + scope:sc_defender = { + OR = { + #scope:sc_defender is tribal. + AND = { + is_ruler = yes + government_has_flag = government_is_tribal + } + #scope:sc_defender has a tribal court_owner. + AND = { + is_ruler = no + exists = court_owner + scope:sc_defender.court_owner = { government_has_flag = government_is_tribal} + } + #scope:sc_defender has a tribal host. + AND = { + is_ruler = no + exists = host + scope:sc_defender.host = { government_has_flag = government_is_tribal } + } + } + } + } + } + } +} + +# Will the duel end in the death of your opponent for any reason? +scripted_trigger duel_will_end_in_opponent_death_trigger = { + # Hard disable if fatality has been disabled. + NOT = { scope:fatality = flag:no } + OR = { + # The duel has default fatality enabled & validated. + fatality_default_will_die_trigger = yes + # The duel has fatality possible & your opponent is already critically wounded. + OR = { + AND = { + this = scope:sc_attacker + scope:fatality = flag:possible + scope:sc_defender = { has_trait = wounded_3 } + } + AND = { + this = scope:sc_defender + scope:fatality = flag:possible + scope:sc_attacker = { has_trait = wounded_3 } + } + } + # Fatality has been force-enabled. + scope:fatality = flag:always + } +} + +scripted_trigger duel_will_end_in_my_death_trigger = { + # Hard disable if fatality has been disabled. + NOT = { scope:fatality = flag:no } + OR = { + # The duel has default fatality enabled & validated. + fatality_default_will_die_trigger = yes + # The duel has fatality possible & you are already critically wounded. + AND = { + scope:fatality = flag:possible + has_trait = wounded_3 + } + # Fatality has been force-enabled. + scope:fatality = flag:always + } +} + +scripted_trigger house_not_allowed_to_yell_motto_trigger = { + OR = { + NOT = { exists = house } + # Historical + dynasty = dynasty:1055 + house = house:house_british_isles_wessex + # Vanity: because they're long. + dynasty = dynasty:vanity_riedinger + dynasty = dynasty:vanity_kaltsogiannis + # Vanity: because their punctuation screws things up. + dynasty = dynasty:vanity_bjarnehed + dynasty = dynasty:vanity_daflos + dynasty = dynasty:vanity_welch + dynasty = dynasty:vanity_opara + dynasty = dynasty:vanity_beaumont + } +} + +scripted_trigger rocky_locale_trigger = { + OR = { + terrain = hills + terrain = mountains + terrain = desert_mountains + } +} + +################################################## +# GENERAL SCRIPTED EFFECTS + +# Grab a single special move from the list for this character to use this round. +scripted_effect select_special_tier_move_effect = { + #First, we flag that the character now has a special move option. + set_local_variable = { + name = combat_move_special_slot_used_flag + value = yes + } + #Then, we pick which move they get. + random_list = { + # High Secondary Skill moves + ## Reason You Suck Speech + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_reason_you_suck_speech_flag } + diplomacy >= very_high_skill_rating + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:reason_you_suck_speech + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:reason_you_suck_speech + } + } + } + set_local_variable = { + name = combat_move_reason_you_suck_speech_flag + value = yes + } + } + ## Technique from Legend + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_technique_from_legend_flag } + learning >= very_high_skill_rating + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:technique_from_legend + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:technique_from_legend + } + } + } + set_local_variable = { + name = combat_move_technique_from_legend_flag + value = yes + } + } + ## Like a Viper + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_like_a_viper_flag } + intrigue >= very_high_skill_rating + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:like_a_viper + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:like_a_viper + } + } + } + set_local_variable = { + name = combat_move_like_a_viper_flag + value = yes + } + } + ## Pocket Silver + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_pocket_silver_flag } + stewardship >= very_high_skill_rating + short_term_gold >= combat_move_pocket_silver_value + # Move essentially requires two arms, I'm afraid. + NOT = { has_trait = maimed } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:pocket_silver + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:pocket_silver + } + } + } + set_local_variable = { + name = combat_move_pocket_silver_flag + value = yes + } + } + ## Martial Voice + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_martial_voice_flag } + martial >= very_high_skill_rating + # For now, the loc relies on your opponent being noble, so you ironically can't use your peasant-commanding voice on actual peasants. + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker = { + exists = house + NOR = { + has_trait = peasant_leader + government_has_flag = government_is_republic + } + } + } + AND = { + this = scope:sc_attacker + scope:sc_defender = { + exists = house + NOR = { + has_trait = peasant_leader + government_has_flag = government_is_republic + } + } + } + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:martial_voice + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:martial_voice + } + } + } + set_local_variable = { + name = combat_move_martial_voice_flag + value = yes + } + } + ## Mocking Boast + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_mocking_boast_flag } + OR = { + AND = { + this = scope:sc_attacker + scope:sc_attacker.prestige_level > scope:sc_defender.prestige_level + # A humble opponent doesn't give two shits. + scope:sc_defender = { + NOT = { has_trait = humble } + } + } + AND = { + this = scope:sc_defender + scope:sc_defender.prestige_level > scope:sc_attacker.prestige_level + # A humble opponent doesn't give two shits. + scope:sc_attacker = { + NOT = { has_trait = humble } + } + } + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:mocking_boast + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:mocking_boast + } + } + } + set_local_variable = { + name = combat_move_mocking_boast_flag + value = yes + } + } + # Location-Specific moves + ## Is that a Crocodile?! + 1 = { #Super-rare, pretty much an instant kill. + trigger = { + NOT = { exists = local_var:combat_move_is_that_a_crocodile_flag } + # Must be happening in a wild environment. + scope:locale = flag:terrain_scope + # Can't have already had a crocodile used by either party this duel. + NOT = { exists = scope:had_crocodile } + # Must be in a place that has crocodiles. + single_combat_location_has_crocodilians_trigger = yes + # Duel must be one that would end in fatality. + duel_will_end_in_opponent_death_trigger = yes + } + set_local_variable = { + name = combat_move_is_that_a_crocodile_flag + value = yes + } + # No down-weight for something that's already 0.001%. + } + ## Desert Warrior + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_desert_warrior_flag } + has_trait = desert_warrior + # Must be happening in a wild environment. + scope:locale = flag:terrain_scope + #Both characters being experts cancel each other out. + NAND = { + scope:sc_attacker = { has_trait = desert_warrior } + scope:sc_defender = { has_trait = desert_warrior } + } + scope:sc_defender.location = { + OR = { + terrain = desert + terrain = drylands + terrain = oasis + } + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:desert_warrior + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:desert_warrior + } + } + } + set_local_variable = { + name = combat_move_desert_warrior_flag + value = yes + } + } + ## Jungle Stalker + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_jungle_stalker_flag } + has_trait = jungle_stalker + # Must be happening in a wild environment. + scope:locale = flag:terrain_scope + #Both characters being experts cancel each other out. + NAND = { + scope:sc_attacker = { has_trait = jungle_stalker } + scope:sc_defender = { has_trait = jungle_stalker } + } + scope:sc_defender.location = { + terrain = jungle + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:jungle_stalker + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:jungle_stalker + } + } + } + set_local_variable = { + name = combat_move_jungle_stalker_flag + value = yes + } + } + ## Open Terrain Expert + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_open_terrain_expert_flag } + has_trait = open_terrain_expert + # Must be happening in a wild environment. + scope:locale = flag:terrain_scope + #Both characters being experts cancel each other out. + NAND = { + scope:sc_attacker = { has_trait = open_terrain_expert } + scope:sc_defender = { has_trait = open_terrain_expert } + } + scope:sc_defender.location = { + OR = { + terrain = farmlands + terrain = plains + terrain = steppe + } + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:open_terrain_expert + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:open_terrain_expert + } + } + } + set_local_variable = { + name = combat_move_open_terrain_expert_flag + value = yes + } + } + ## Rough Terrain Expert + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_rough_terrain_expert_flag } + has_trait = rough_terrain_expert + # Must be happening in a wild environment. + scope:locale = flag:terrain_scope + #Both characters being experts cancel each other out. + NAND = { + scope:sc_attacker = { has_trait = rough_terrain_expert } + scope:sc_defender = { has_trait = rough_terrain_expert } + } + scope:sc_defender.location = { + OR = { + terrain = hills + terrain = mountains + terrain = desert_mountains #Technically a desert, but not for single combat purposes. + terrain = wetlands + } + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:rough_terrain_expert + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:rough_terrain_expert + } + } + } + set_local_variable = { + name = combat_move_rough_terrain_expert_flag + value = yes + } + } + ## Forest Fighter + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_forest_fighter_flag } + has_trait = forest_fighter + # Must be happening in a wild environment. + scope:locale = flag:terrain_scope + #Both characters being experts cancel each other out. + NAND = { + scope:sc_attacker = { has_trait = forest_fighter } + scope:sc_defender = { has_trait = forest_fighter } + } + scope:sc_defender.location = { + OR = { + terrain = forest + terrain = taiga + } + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:forest_fighter + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:forest_fighter + } + } + } + set_local_variable = { + name = combat_move_forest_fighter_flag + value = yes + } + } + # Trait-Specific moves + ## RAAARGH! + 5000 = { + trigger = { + NOT = { exists = local_var:combat_move_raaargh_flag } + has_trait = berserker + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:raaargh + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:raaargh + } + } + } + set_local_variable = { + name = combat_move_raaargh_flag + value = yes + } + } + ## Hard Grit + 2000 = { + trigger = { + NOT = { exists = local_var:combat_move_hard_grit_flag } + has_trait = shieldmaiden + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:hard_grit + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:hard_grit + } + } + } + set_local_variable = { + name = combat_move_hard_grit_flag + value = yes + } + } + ## Feint & Stab + 2000 = { + trigger = { + NOT = { exists = local_var:combat_move_feint_and_stab_flag } + has_trait = lifestyle_hunter + # Move specifically requires two arms, I'm afraid. + NOT = { has_trait = maimed } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:feint_and_stab + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:feint_and_stab + } + } + } + set_local_variable = { + name = combat_move_feint_and_stab_flag + value = yes + } + } + ## Butchery + 2000 = { + trigger = { + NOT = { exists = local_var:combat_move_butchery_flag } + has_trait = viking + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:butchery + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:butchery + } + } + } + set_local_variable = { + name = combat_move_butchery_flag + value = yes + } + } + ## Stoic Veteran +# 2000 = { +# trigger = { +# NOT = { exists = local_var:combat_move_stoic_veteran_flag } +# has_trait = varangian +# # Can't use the Varangian trait against the Eastern Roman Emperor, as that's just not cricket. +# NOR = { +# AND = { +# this = scope:sc_defender +# scope:sc_attacker = { has_title = title:e_byzantium } +# } +# AND = { +# this = scope:sc_attacker +# scope:sc_defender = { has_title = title:e_byzantium } +# } +# } +# # Block special moves twice in a row. +# NOR = { +# AND = { +# exists = scope:sc_defender_last_move +# this = scope:sc_defender +# scope:sc_defender_last_move = flag:stoic_veteran +# } +# AND = { +# exists = scope:sc_attacker_last_move +# this = scope:sc_attacker +# scope:sc_attacker_last_move = flag:stoic_veteran +# } +# } +# } +# set_local_variable = { +# name = combat_move_stoic_veteran_flag +# value = yes +# } +# } + ## Blade Dance + 2000 = { + trigger = { + NOT = { exists = local_var:combat_move_blade_dance_flag } + has_trait = lifestyle_blademaster + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:blade_dance + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:blade_dance + } + } + } + set_local_variable = { + name = combat_move_blade_dance_flag + value = yes + } + } + ## Wrath of [HighGod] + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_wrath_of_highgod_flag } + has_trait = zealous + faith = { + NOT = { has_doctrine_parameter = holy_wars_forbidden } + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:wrath_of_highgod + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:wrath_of_highgod + } + } + } + set_local_variable = { + name = combat_move_wrath_of_highgod_flag + value = yes + } + } + ## Hurt Me Better + 2000 = { + trigger = { + NOT = { exists = local_var:combat_move_hurt_me_better_flag } + OR = { + has_trait = deviant + any_secret = { type = secret_deviant } + } + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:hurt_me_better + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:hurt_me_better + } + } + } + set_local_variable = { + name = combat_move_hurt_me_better_flag + value = yes + } + } + # Misc moves + ## Kick a rock at their shin. + 1 = { #Fallback move; we don't really ever want to see this. + trigger = { + NOT = { exists = local_var:combat_move_special_fallback_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_special_fallback_flag + value = yes + } + # No down-weight for something that's already 0.001%. + } + ## Something to Hide + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_something_to_hide_flag } + OR = { + AND = { + this = scope:sc_attacker + has_usable_hook = scope:sc_defender + } + AND = { + this = scope:sc_defender + has_usable_hook = scope:sc_attacker + } + } + # The single combat cannot be fatal, or this is moot. + duel_will_end_in_opponent_death_trigger = no + # Block special moves twice in a row. + NOR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:something_to_hide + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:something_to_hide + } + } + } + set_local_variable = { + name = combat_move_something_to_hide_flag + value = yes + } + } + } +} + +# Select a single tier 1 combat move from the list. +scripted_effect select_tier_1_move_effect = { + random_list = { + #Ordinary moves. + 70 = { + random_list = { + # Wait and Hope + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_wait_and_hope_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_wait_and_hope_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:wait_and_hope + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:wait_and_hope + } + } + } + } + # Unsure Attack + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_unsure_attack_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_unsure_attack_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:unsure_attack + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:unsure_attack + } + } + } + } + # Enthusiastic Onslaught + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_enthusiastic_onslaught_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_enthusiastic_onslaught_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:enthusiastic_onslaught + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:enthusiastic_onslaught + } + } + } + } + # Hail Mary + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_hail_mary_flag } + #Only valid against an opponent who _truly_ outclasses you. + OR = { + AND = { + this = scope:sc_attacker + prowess_diff = { + target = scope:sc_defender + value <= -10 + } + } + AND = { + this = scope:sc_defender + prowess_diff = { + target = scope:sc_attacker + value <= -10 + } + } + } + } + set_local_variable = { + name = combat_move_hail_mary_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:hail_mary + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:hail_mary + } + } + } + } + # Pocket Sand + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_pocket_sand_flag } + #Only valid against opponents who really won't be able to see it coming a mile away. + OR = { + AND = { + this = scope:sc_attacker + scope:sc_defender.prowess <= medium_scsk + } + AND = { + this = scope:sc_defender + scope:sc_attacker.prowess <= medium_scsk + } + } + # Move essentially requires two arms, I'm afraid. + NOT = { has_trait = maimed } + } + set_local_variable = { + name = combat_move_pocket_sand_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:pocket_sand + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:pocket_sand + } + } + } + } + # Nut 'em + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_nut_em_flag } + #No special requirements. + } + set_local_variable = { + name = combat_move_nut_em_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:nut_em + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:nut_em + } + } + } + } + } + } + #Special moves. + 30 = { + trigger = { + NOT = { exists = local_var:combat_move_special_slot_used_flag } + } + select_special_tier_move_effect = yes + } + } +} + +# Select a single tier 2 combat move from the list. +scripted_effect select_tier_2_move_effect = { + random_list = { + #Ordinary moves. + 70 = { + random_list = { + # Guard + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_guard_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_guard_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:guard + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:guard + } + } + } + } + # Probing Attack + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_probing_attack_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_probing_attack_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:probing_attack + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:probing_attack + } + } + } + } + # Onslaught + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_onslaught_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_onslaught_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:onslaught + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:onslaught + } + } + } + } + # Surprise Attack + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_surprise_attack_flag } + OR = { + AND = { + this = scope:sc_attacker + scope:sc_defender = { + NOT = { has_trait = paranoid } + } + } + AND = { + this = scope:sc_defender + scope:sc_attacker = { + NOT = { has_trait = paranoid } + } + } + } + } + set_local_variable = { + name = combat_move_surprise_attack_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:surprise_attack + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:surprise_attack + } + } + } + } + # Taunt + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_taunt_flag } + OR = { + AND = { + this = scope:sc_attacker + scope:sc_defender = { + is_ai = yes + NOT = { has_trait = calm } + } + } + AND = { + this = scope:sc_defender + scope:sc_attacker = { + is_ai = yes + NOT = { has_trait = calm } + } + } + } + } + set_local_variable = { + name = combat_move_taunt_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:taunt + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:taunt + } + } + } + } + # Put the Boot In + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_put_the_boot_in_flag } + #No special requirements. + } + set_local_variable = { + name = combat_move_put_the_boot_in_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:put_the_boot_in + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:put_the_boot_in + } + } + } + } + } + } + #Special moves. + 30 = { + trigger = { + NOT = { exists = local_var:combat_move_special_slot_used_flag } + } + select_special_tier_move_effect = yes + } + } +} + +# Select a single tier 3 combat move from the list. +scripted_effect select_tier_3_move_effect = { + random_list = { + #Ordinary moves. + 70 = { + random_list = { + # Strict Guard + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_strict_guard_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_strict_guard_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:strict_guard + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:strict_guard + } + } + } + } + # Confident Attack + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_confident_attack_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_confident_attack_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:confident_attack + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:confident_attack + } + } + } + } + # Expert Onslaught + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_expert_onslaught_flag } + #Fallback, always available. + } + set_local_variable = { + name = combat_move_expert_onslaught_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:expert_onslaught + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:expert_onslaught + } + } + } + } + # Attempt Disarm + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_attempt_disarm_flag } + OR = { + AND = { + this = scope:sc_attacker + scope:sc_defender = { + prowess >= decent_scsk + # Blademasters cannot be wrong-footed by a disarmament attempt. + NOT = { has_trait = lifestyle_blademaster } + } + } + AND = { + this = scope:sc_defender + scope:sc_attacker = { + prowess >= decent_scsk + # Blademasters cannot be wrong-footed by a disarmament attempt. + NOT = { has_trait = lifestyle_blademaster } + } + } + } + } + set_local_variable = { + name = combat_move_attempt_disarm_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:attempt_disarm + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:attempt_disarm + } + } + } + } + # Lightning Assault + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_lightning_assault_flag } + scope:sc_defender.var:current_round = 1 + } + set_local_variable = { + name = combat_move_lightning_assault_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:lightning_assault + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:lightning_assault + } + } + } + } + # Tire Opponent + 1000 = { + trigger = { + NOT = { exists = local_var:combat_move_tire_opponent_flag } + #No special requirements. + } + set_local_variable = { + name = combat_move_tire_opponent_flag + value = yes + } + # Weight down repeat moves + modifier = { + add = sce_regular_combat_repeat_down_weight + OR = { + AND = { + exists = scope:sc_defender_last_move + this = scope:sc_defender + scope:sc_defender_last_move = flag:tire_opponent + } + AND = { + exists = scope:sc_attacker_last_move + this = scope:sc_attacker + scope:sc_attacker_last_move = flag:tire_opponent + } + } + } + } + } + } + #Special moves. + 30 = { + trigger = { + NOT = { exists = local_var:combat_move_special_slot_used_flag } + } + select_special_tier_move_effect = yes + } + } +} + +# Determine what tier of moves a character is getting this round, then pick them. +scripted_effect select_combat_options_from_pool_effect = { + # DOCUMENTATION + # First, we look at the single combat skill rating of the combatant, and use this to set tier variables for moves. + ## Only the best and worst combatants get guaranteed tier moves, all best & all worst tier respectively. + ## Second best and second worst have an even 50:50 to get all best/worst tier moves respectively, or to vary one of their move's tier levels by one (e.g., second worst getting x1 tier 2 move and x2 tier 1 moves). + ## Each subsequent step towards the middle of the skill_ratings moves the standard tier ratings by 1. So if mediocre_scsk and below is x3 tier 1 moves by default, then medium_scsk is x2 tier 1 and x1 tier 2 moves by default. + ## Medium, decent, high, and very_high skill_ratings then have a 33:34:33 chance to vary their tier moves down by one, use their default, or go up by one. + ### This gives us an element of randomness, but one that can be gamed within combat encounters by obtaining modifiers, and stacks the odds in favour of skilled warriors without making them the automatic victors every time. + + # MECHANICS + # Roll for tier draws. + ## For the sake of easy tweakability, all tiers include all variables, so each one can be adjusted as needed for balance. + ## low_scsk or below + if = { + limit = { prowess <= low_scsk } + #low_scsk *always* draws x3 tier 1 moves. + set_variable = { + name = tier_1_counter + value = 3 + } + set_variable = { + name = tier_2_counter + value = 0 + } + set_variable = { + name = tier_3_counter + value = 0 + } + } + ## mediocre_scsk or below + else_if = { + limit = { prowess <= mediocre_scsk } + random_list = { + #Bad roll, -1 to tier set. + 50 = { + set_variable = { + name = tier_1_counter + value = 3 + } + set_variable = { + name = tier_2_counter + value = 0 + } + set_variable = { + name = tier_3_counter + value = 0 + } + } + #Average roll, default tier set. + 50 = { + set_variable = { + name = tier_1_counter + value = 2 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 0 + } + } + } + } + ## medium_scsk or below + else_if = { + limit = { prowess <= medium_scsk } + random_list = { + #Bad roll, -1 to tier set. + 33 = { + set_variable = { + name = tier_1_counter + value = 3 + } + set_variable = { + name = tier_2_counter + value = 0 + } + set_variable = { + name = tier_3_counter + value = 0 + } + } + #Average roll, default tier set. + 34 = { + set_variable = { + name = tier_1_counter + value = 2 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 0 + } + } + #Good roll, +1 to tier set. + 33 = { + set_variable = { + name = tier_1_counter + value = 1 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 1 + } + } + } + } + ## decent_scsk or below + else_if = { + limit = { prowess <= decent_scsk } + random_list = { + #Bad roll, -1 to tier set. + 33 = { + set_variable = { + name = tier_1_counter + value = 2 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 0 + } + } + #Average roll, default tier set. + 34 = { + set_variable = { + name = tier_1_counter + value = 1 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 1 + } + } + #Good roll, +1 to tier set. + 33 = { + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 2 + } + set_variable = { + name = tier_3_counter + value = 1 + } + } + } + } + ## high_scsk or below + else_if = { + limit = { prowess <= high_scsk } + random_list = { + #Bad roll, -1 to tier set. + 33 = { + set_variable = { + name = tier_1_counter + value = 1 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 1 + } + } + #Average roll, default tier set. + 34 = { + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 2 + } + set_variable = { + name = tier_3_counter + value = 1 + } + } + #Good roll, +1 to tier set. + 33 = { + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 2 + } + } + } + } + ## very_high_scsk or below + else_if = { + limit = { prowess <= very_high_scsk } + random_list = { + #Bad roll, -1 to tier set. + 33 = { + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 2 + } + set_variable = { + name = tier_3_counter + value = 1 + } + } + #Average roll, default tier set. + 34 = { + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 2 + } + } + #Good roll, +1 to tier set. + 33 = { + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 0 + } + set_variable = { + name = tier_3_counter + value = 3 + } + } + } + } + ## extremely_high_scsk or below + else_if = { + limit = { prowess <= extremely_high_scsk } + random_list = { + #Bad roll, -1 to tier set. + 50 = { + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 1 + } + set_variable = { + name = tier_3_counter + value = 2 + } + } + #Average roll, default tier set. + 50 = { + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 0 + } + set_variable = { + name = tier_3_counter + value = 3 + } + } + } + } + ## more than extremely_high_scsk + else = { + #Better than extremely_high_scsk always draws x3 tier 3 moves. + set_variable = { + name = tier_1_counter + value = 0 + } + set_variable = { + name = tier_2_counter + value = 0 + } + set_variable = { + name = tier_3_counter + value = 3 + } + } + + # DOCUMENTATION + # Next, clear all previous combat flags from the character, & iterate through each tier value up to three times, selecting valid moves from the set. + ## Every time we select a move, we reduce that tier's tier count variable by 1, so the player will only ever have three options available. + ## Each select_tier_[X]_move_effect set incorporates a mix of flat combat moves and special moves triggered by locations, traits, special circumstances, etc. Special moves are available at all tiers, but you can only roll x1 per round. + ## Every tier has at least three ordinary, standard moves that all characters can access, so characters will never not have a full roster of moves. + + # MECHANICS + # Clear previous combat flags. + remove_single_combat_character_local_variables_effect = yes + # Iterate through combat move sets for each tier till we've got a full roster of moves. + ## Tier 1 + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_1_counter + var:tier_1_counter > 0 + } + change_variable = { + name = tier_1_counter + add = -1 + } + select_tier_1_move_effect = yes + } + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_1_counter + var:tier_1_counter > 0 + } + change_variable = { + name = tier_1_counter + add = -1 + } + select_tier_1_move_effect = yes + } + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_1_counter + var:tier_1_counter > 0 + } + change_variable = { + name = tier_1_counter + add = -1 + } + select_tier_1_move_effect = yes + } + ## Tier 2 + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_2_counter + var:tier_2_counter > 0 + } + change_variable = { + name = tier_2_counter + add = -1 + } + select_tier_2_move_effect = yes + } + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_2_counter + var:tier_2_counter > 0 + } + change_variable = { + name = tier_2_counter + add = -1 + } + select_tier_2_move_effect = yes + } + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_2_counter + var:tier_2_counter > 0 + } + change_variable = { + name = tier_2_counter + add = -1 + } + select_tier_2_move_effect = yes + } + ## Tier 3 + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_3_counter + var:tier_3_counter > 0 + } + change_variable = { + name = tier_3_counter + add = -1 + } + select_tier_3_move_effect = yes + } + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_3_counter + var:tier_3_counter > 0 + } + change_variable = { + name = tier_3_counter + add = -1 + } + select_tier_3_move_effect = yes + } + if = { + limit = { + # Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log. + has_variable = tier_3_counter + var:tier_3_counter > 0 + } + change_variable = { + name = tier_3_counter + add = -1 + } + select_tier_3_move_effect = yes + } +} + +# Determine whether scope:sc_loser will be unharmed, wounded, or killed at the end of a duel. +scripted_effect work_out_wounds_or_death_effect = { + #Fatality:Practice - no wounds, please + if = { + limit = { scope:fatality = flag:practice } + # No extra effect. + } + # Fatality:No = death has been disabled. + if = { + limit = { scope:fatality = flag:no } + scope:sc_loser = { + increase_wounds_no_death_effect = { REASON = duel } + } + } + # Fatality:Possible = death is only possible via wounds. + else_if = { + limit = { scope:fatality = flag:possible } + scope:sc_loser = { + increase_wounds_effect = { REASON = duel } + } + } + # Fatality:Default = death is only possible for non-tribals, and always for tribals, taking scope:sc_attacker as the instigating government. + else_if = { + limit = { scope:fatality = flag:default } + if = { + limit = { fatality_default_will_die_trigger = yes } + scope:sc_loser = { + death = { + killer = scope:sc_victor + death_reason = death_duel + } + } + if = { + limit = { + scope:sc_victor = { + faith = { + has_doctrine = tenet_cranial_trophies + } + } + } + tgp_cranial_trophies_beheading_effect = { + KILLER = scope:sc_victor + DEAD = scope:sc_loser + } + } + } + else = { + scope:sc_loser = { + increase_wounds_effect = { REASON = duel } + } + } + } + # Fatality:Always = losing is always fatal. + else_if = { + limit = { scope:fatality = flag:always } + scope:sc_victor = { + if = { + limit = { + this = scope:sc_attacker + NOT = { has_execute_reason = scope:sc_loser } + } + add_kinslayer_trait_or_nothing_effect = { VICTIM = scope:sc_loser } + } + } + scope:sc_loser = { + death = { + killer = scope:sc_victor + death_reason = death_duel + } + } + if = { + limit = { + scope:sc_victor = { + faith = { + has_doctrine = tenet_cranial_trophies + } + } + } + tgp_cranial_trophies_beheading_effect = { + KILLER = scope:sc_victor + DEAD = scope:sc_loser + } + } + } +} + +# Sort the end of combat rigmarole & clean-up. +scripted_effect finalise_combat_results_effect = { + # Determine if a death rattle is applicable, and if so, set which one. + scope:sc_loser = { + if = { + limit = { duel_will_end_in_my_death_trigger = yes } + # First off, we look to see if scope:sc_loser is prevented from talking. + ## wordless + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + OR = { + scope:sc_attacker_last_move = flag:technique_from_legend + scope:sc_attacker_last_move = flag:hail_mary + scope:sc_attacker_last_move = flag:like_a_viper + } + } + AND = { + this = scope:sc_attacker + OR = { + scope:sc_defender_last_move = flag:onslaught + scope:sc_defender_last_move = flag:strict_guard + scope:sc_defender_last_move = flag:pocket_silver + scope:sc_defender_last_move = flag:blade_dance + } + } + } + } + save_scope_value_as = { + name = death_rattle + value = flag:wordless + } + } + ## muffled + else_if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + OR = { + scope:sc_attacker_last_move = flag:is_that_a_crocodile + AND = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + } + } + AND = { + this = scope:sc_attacker + # Scope:sc_attacker currently only suffers this for the wetlands death. It'll need to be sub-AND'ed as above if any more are added. + scope:sc_defender_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + } + } + save_scope_value_as = { + name = death_rattle + value = flag:muffled + } + } + ## choking + else_if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + OR = { + scope:sc_attacker_last_move = flag:wait_and_hope + scope:sc_attacker_last_move = flag:enthusiastic_onslaught + scope:sc_attacker_last_move = flag:pocket_sand + scope:sc_attacker_last_move = flag:expert_onslaught + scope:sc_attacker_last_move = flag:reason_you_suck_speech + scope:sc_attacker_last_move = flag:pocket_silver + scope:sc_attacker_last_move = flag:raaargh + scope:sc_attacker_last_move = flag:hard_grit + scope:sc_attacker_last_move = flag:butchery + } + } + AND = { + this = scope:sc_attacker + OR = { + scope:sc_defender_last_move = flag:wait_and_hope + scope:sc_defender_last_move = flag:unsure_attack + scope:sc_defender_last_move = flag:pocket_sand + scope:sc_defender_last_move = flag:nut_em + scope:sc_defender_last_move = flag:tire_opponent + scope:sc_defender_last_move = flag:martial_voice + scope:sc_defender_last_move = flag:is_that_a_crocodile + scope:sc_defender_last_move = flag:desert_warrior + scope:sc_defender_last_move = flag:butchery + } + } + } + } + save_scope_value_as = { + name = death_rattle + value = flag:choking + } + } + ## pleading screams + else_if = { + limit = { + # We actually don't use this for scope:sc_defender anywhere at present. + this = scope:sc_attacker + scope:sc_defender_last_move = flag:expert_onslaught + } + save_scope_value_as = { + name = death_rattle + value = flag:pleading_screams + } + } + # Then, we go through possible relations, ordered by importance/rarity. + ## has soulmate + else_if = { + limit = { + any_relation = { + type = soulmate + count >= 1 + this != scope:sc_victor + } + } + random_relation = { + type = soulmate + save_scope_as = sc_loser_soulmate + } + save_scope_value_as = { + name = death_rattle + value = flag:soulmate + } + } + ## has best_friend + else_if = { + limit = { + any_relation = { + type = best_friend + count >= 1 + this != scope:sc_victor + } + } + random_relation = { + type = best_friend + save_scope_as = sc_loser_best_friend + } + save_scope_value_as = { + name = death_rattle + value = flag:best_friend + } + } + ## killed_by_soulmate + else_if = { + limit = { has_relation_soulmate = scope:sc_victor } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_soulmate + } + } + ## killed_by_best_friend + else_if = { + limit = { has_relation_best_friend = scope:sc_victor } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_best_friend + } + } + ## killed_by_nemesis + else_if = { + limit = { has_relation_nemesis = scope:sc_victor } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_nemesis + } + } + ## killed_by_close_or_extended_family + else_if = { + limit = { + any_close_or_extended_family_member = { this = scope:sc_victor } + } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_close_or_extended_family + } + } + ## is sinner + else_if = { + limit = { + num_sinful_traits >= 3 + piety_level <= 0 + } + save_scope_value_as = { + name = death_rattle + value = flag:sinner + } + } + ## is saint + else_if = { + limit = { + num_virtuous_traits >= 3 + piety_level >= 5 + } + save_scope_value_as = { + name = death_rattle + value = flag:saint + } + } + ## is legend + else_if = { + limit = { + prestige_level >= 5 + NOT = { has_trait = humble } + } + save_scope_value_as = { + name = death_rattle + value = flag:legend + } + } + ## killed_by_rival + else_if = { + limit = { has_relation_rival = scope:sc_victor } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_rival + } + } + ## killed_by_friend_or_lover + else_if = { + limit = { + OR = { + has_relation_friend = scope:sc_victor + has_relation_lover = scope:sc_victor + } + } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_friend_or_lover + } + } + ## killed_by_spouse + else_if = { + limit = { + any_spouse = { this = scope:sc_victor } + } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_spouse + } + } + ## killed_by_your_head_of_faith + else_if = { + limit = { faith.religious_head = scope:sc_victor } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_your_head_of_faith + } + } + ## killed_by_another_head_of_faith + else_if = { + limit = { + faith.religious_head != scope:sc_victor + scope:sc_victor.faith.religious_head = scope:sc_victor + } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_another_head_of_faith + } + } + ## killed_by_cultural_head + else_if = { + limit = { culture.culture_head = scope:sc_victor } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_cultural_head + } + } + ## killed_by_house_head + else_if = { + limit = { house.house_head = scope:sc_victor } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_house_head + } + } + ## killed_by_dynasty_head + else_if = { + limit = { dynasty.dynast = scope:sc_victor } + save_scope_value_as = { + name = death_rattle + value = flag:killed_by_dynasty_head + } + } + ## believes in valhalla + else_if = { + limit = { + # Specific to Germanic pagans. + religion = religion:folkgerman_religion + # And they gotta be warlike. + faith = { + OR = { + has_doctrine_parameter = warmonger + has_doctrine_parameter = conquest_cb_enabled + has_doctrine_parameter = invasion_cb_enabled + has_doctrine_parameter = great_holy_wars_active_if_reformed + has_doctrine_parameter = clergy_can_fight + has_doctrine_parameter = cheaper_holy_wars_active + has_doctrine_parameter = great_holy_wars_active + } + } + } + save_scope_value_as = { + name = death_rattle + value = flag:valhalla + } + } + # Otherwise, we default to the fallback. + ## scream + else = { + save_scope_value_as = { + name = death_rattle + value = flag:scream + } + } + } + } + # Send out results events. + ## We do this before death calculation so that the loser isn't too dead to be told that they've died (if they died). + scope:sc_loser = { trigger_event = single_combat.0031 } + scope:sc_victor = { trigger_event = single_combat.0041 } + # Setup for artifact.4080 + scope:sc_victor = { + if = { + limit = { + any_character_artifact = { + is_equipped = yes + artifact_slot_type = primary_armament + NOT = { has_variable = artifact_duel_var } + } + } + random_character_artifact = { + limit = { + is_equipped = yes + artifact_slot_type = primary_armament + NOT = { has_variable = artifact_duel_var } + } + set_variable = { + name = artifact_duel_var + value = 1 + } + } + } + else_if = { + limit = { + any_character_artifact = { + is_equipped = yes + artifact_slot_type = primary_armament + has_variable = artifact_duel_var + } + } + random_character_artifact = { + limit = { + is_equipped = yes + artifact_slot_type = primary_armament + has_variable = artifact_duel_var + } + change_variable = { + name = artifact_duel_var + add = 1 + } + } + } + # Legend seed setup + if = { + limit = { + scope:sc_loser = { + OR = { + highest_held_title_tier >= tier_empire + any_held_title = { is_head_of_faith = yes } + mpo_has_greatest_of_khans_nickname_trigger = yes + } + } + has_dlc_feature = legends + NOT = { has_game_rule = historical_legends_only } + is_ruler = yes + } + create_legend_seed = { + type = heroic + quality = illustrious + chronicle = legendary_battle + properties = { + winner = root + loser = scope:sc_loser + location = root.location + } + } + } + } + # Sort glory allocation. + scope:sc_victor = { + if = { + limit = { + is_acclaimed = yes + } + # Glory is relative to the prowess difference between two characters. Beating someone equally matched or better is worth more. + ## Massively outclassed. + if = { + limit = { + prowess_diff = { + target = scope:sc_loser + value <= -20 + } + } + accolade = { add_glory = monumental_glory_gain } + } + ## Majorly outclassed. + else_if = { + limit = { + prowess_diff = { + target = scope:sc_loser + value <= -15 + } + } + accolade = { add_glory = massive_glory_gain } + } + ## Somewhat outclassed. + else_if = { + limit = { + prowess_diff = { + target = scope:sc_loser + value <= -8 + } + } + accolade = { add_glory = major_glory_gain } + } + ## Slightly outclassed. + else_if = { + limit = { + prowess_diff = { + target = scope:sc_loser + value <= -4 + } + } + accolade = { add_glory = medium_glory_gain } + } + ## Evenly matched. + else_if = { + limit = { + prowess_diff = { + target = scope:sc_loser + value <= 0 + } + } + accolade = { add_glory = minor_glory_gain } + } + ## Slightly in your favour. + else_if = { + limit = { + prowess_diff = { + target = scope:sc_loser + value <= 4 + } + } + accolade = { add_glory = minimal_glory_gain } + } + ## Below this, things are too much in your favour and you're not earning glory, you're defending what you already have. + + #Beating your rival means additional glory gain + if = { + limit = { + OR = { + has_relation_rival = scope:sc_loser + has_relation_nemesis = scope:sc_loser + } + } + accolade = { add_glory = minor_glory_gain } + } + } + } + # Calculate wounds/death; we use an effect so that we can show it as a tooltip elsewhere. + work_out_wounds_or_death_effect = yes + # Send the final output event & clean up. + remove_single_combat_info_effect = yes + scope:sc_defender = { + if = { + limit = { is_alive = yes } + remove_variable = engaged_in_single_combat + } + } + scope:sc_attacker = { + if = { + limit = { is_alive = yes } + remove_variable = engaged_in_single_combat + } + } + ## We use the initiator if they're alive... + if = { + limit = { + scope:sc_initiator = { is_alive = yes } + } + scope:sc_initiator = { + trigger_event = { saved_event_id = scope:follow_up_event } + } + } + ## Or otherwise the other person. + ### Doesn't hugely matter, technically, since the output event should be from a neutral scope, but if they're dead then the event won't fire and the chain silently invalidates. + else_if = { + limit = { + scope:sc_defender = { is_alive = yes } + } + scope:sc_defender = { + trigger_event = { saved_event_id = scope:follow_up_event } + } + } + else = { + scope:sc_attacker = { + trigger_event = { saved_event_id = scope:follow_up_event } + } + } +} + +# Determine the current chances for either party to injure themselves _before_ the next move is made. +scripted_effect calculate_injury_risks_effect = { + scope:sc_attacker = { + set_variable = { + name = sc_attacker_injury_risk_check + value = { + value = scope:sc_attacker.var:sc_attacker_injury_risk_score + add = scope:sc_attacker.var:sc_attacker_injury_bonus + } + } + } + scope:sc_defender = { + set_variable = { + name = sc_defender_injury_risk_check + value = { + value = scope:sc_defender.var:sc_defender_injury_risk_score + add = scope:sc_defender.var:sc_defender_injury_bonus + } + } + } +} + +# Determine which of the two parties, if either, is currently closest to winning the single combat via skill. +scripted_effect calculate_success_chances_effect = { + scope:sc_attacker = { + set_variable = { + name = sc_attacker_success_check + value = { + value = scope:sc_attacker.var:sc_attacker_duel_success_score + subtract = scope:sc_defender.var:sc_defender_duel_success_score + } + } + } + scope:sc_defender = { + set_variable = { + name = sc_defender_success_check + value = { + value = scope:sc_defender.var:sc_defender_duel_success_score + subtract = scope:sc_attacker.var:sc_attacker_duel_success_score + } + } + } +} + +################################################## +# COMBAT MOVE SCRIPTED EFFECTS + +# Update the results of the current combat move. +scripted_effect adjust_risk_reward_effect = { + # Adjust scope:sc_attacker's scores if we're looking at them. + if = { + limit = { this = scope:sc_attacker } + change_variable = { + name = sc_attacker_injury_risk_score + add = $INJURY_RISK$ + } + change_variable = { + name = sc_attacker_duel_success_score + add = $DUEL_SUCCESS$ + } + } + + # Adjust scope:sc_defender's scores if we're looking at them. + if = { + limit = { this = scope:sc_defender } + change_variable = { + name = sc_defender_injury_risk_score + add = $INJURY_RISK$ + } + change_variable = { + name = sc_defender_duel_success_score + add = $DUEL_SUCCESS$ + } + } + + # Inform the current scope about how this will impact duel_success_score. + if = { + limit = { $DUEL_SUCCESS$ = duel_success_none } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.duel_success.none.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.duel_success.none } + } + else_if = { + limit = { $DUEL_SUCCESS$ = duel_success_low } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.duel_success.low.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.duel_success.low } + } + else_if = { + limit = { $DUEL_SUCCESS$ = duel_success_medium } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.duel_success.medium.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.duel_success.medium } + } + else_if = { + limit = { $DUEL_SUCCESS$ = duel_success_high } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.duel_success.high.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.duel_success.high } + } + else_if = { + limit = { $DUEL_SUCCESS$ = duel_success_very_high } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.duel_success.very_high.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.duel_success.very_high } + } + + # Aaaand finally tell current scope how this'll impact injury_risk_score. + if = { + limit = { $INJURY_RISK$ = injury_risk_none } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.injury.none.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.injury.none } + } + else_if = { + limit = { $INJURY_RISK$ = injury_risk_low } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.injury.low.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.injury.low } + } + else_if = { + limit = { $INJURY_RISK$ = injury_risk_medium } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.injury.medium.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.injury.medium } + } + else_if = { + limit = { $INJURY_RISK$ = injury_risk_high } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.injury.high.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.injury.high } + } + else_if = { + limit = { $INJURY_RISK$ = injury_risk_very_high } + # If this is a past tense tooltip, refer to scope:my_foe grammatically. + if = { + limit = { this = scope:my_foe } + custom_tooltip = single_combat.0001.injury.very_high.has_happened + } + # Otherwise, we do it from first person. + else = { custom_tooltip = single_combat.0001.injury.very_high } + } +} + +# Add positive prowess character modifiers from the current move. +scripted_effect increment_combat_buffs_effect = { + # Determine what our current level of combat buff is. + ## Hidden effect for easy folding & readability. + hidden_effect = { + if = { + limit = { + NOR = { + has_character_modifier = duel_edge_buff_01_modifier + has_character_modifier = duel_edge_buff_02_modifier + has_character_modifier = duel_edge_buff_03_modifier + has_character_modifier = duel_edge_buff_04_modifier + has_character_modifier = duel_edge_buff_05_modifier + has_character_modifier = duel_edge_buff_06_modifier + has_character_modifier = duel_edge_buff_07_modifier + has_character_modifier = duel_edge_buff_08_modifier + has_character_modifier = duel_edge_buff_09_modifier + has_character_modifier = duel_edge_buff_10_modifier + has_character_modifier = duel_edge_buff_11_modifier + has_character_modifier = duel_edge_buff_12_modifier + has_character_modifier = duel_edge_buff_13_modifier + has_character_modifier = duel_edge_buff_14_modifier + has_character_modifier = duel_edge_buff_15_modifier + has_character_modifier = duel_edge_buff_16_modifier + has_character_modifier = duel_edge_buff_17_modifier + has_character_modifier = duel_edge_buff_18_modifier + has_character_modifier = duel_edge_buff_19_modifier + has_character_modifier = duel_edge_buff_20_modifier + has_character_modifier = duel_edge_buff_21_modifier + has_character_modifier = duel_edge_buff_22_modifier + has_character_modifier = duel_edge_buff_23_modifier + has_character_modifier = duel_edge_buff_24_modifier + has_character_modifier = duel_edge_buff_25_modifier + has_character_modifier = duel_edge_buff_26_modifier + has_character_modifier = duel_edge_buff_27_modifier + has_character_modifier = duel_edge_buff_28_modifier + has_character_modifier = duel_edge_buff_29_modifier + has_character_modifier = duel_edge_buff_30_modifier + } + } + set_local_variable = { + name = current_duel_edge_buff + value = 0 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_01_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 1 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_02_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 2 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_03_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 3 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_04_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 4 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_05_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 5 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_06_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 6 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_07_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 7 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_08_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 8 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_09_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 9 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_10_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 10 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_11_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 11 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_12_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 12 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_13_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 13 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_14_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 14 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_15_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 15 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_16_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 16 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_17_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 17 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_18_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 18 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_19_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 19 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_20_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 20 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_21_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 21 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_22_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 22 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_23_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 23 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_24_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 24 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_25_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 25 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_26_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 26 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_27_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 27 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_28_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 28 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_29_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 29 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_buff_30_modifier } + set_local_variable = { + name = current_duel_edge_buff + value = 30 + } + #Show a tooltip in case the character is overflowing at max buff. + custom_tooltip = single_combat.0001.tt.maximum_buff_reached + } + } + # Grab the amount we want to add and change the combat modifier accordingly. + change_local_variable = { + name = current_duel_edge_buff + add = $BUFF_INCREMENT$ + } + # Remove any existing duel edge buffs. + hidden_effect = { remove_temporary_duel_edge_buff_modifiers_effect = yes } + # Add the buff corresponding to our new level of edge. + if = { + limit = { local_var:current_duel_edge_buff = 1 } + add_character_modifier = duel_edge_buff_01_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 2 } + add_character_modifier = duel_edge_buff_02_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 3 } + add_character_modifier = duel_edge_buff_03_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 4 } + add_character_modifier = duel_edge_buff_04_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 5 } + add_character_modifier = duel_edge_buff_05_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 6 } + add_character_modifier = duel_edge_buff_06_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 7 } + add_character_modifier = duel_edge_buff_07_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 8 } + add_character_modifier = duel_edge_buff_08_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 9 } + add_character_modifier = duel_edge_buff_09_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 10 } + add_character_modifier = duel_edge_buff_10_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 11 } + add_character_modifier = duel_edge_buff_11_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 12 } + add_character_modifier = duel_edge_buff_12_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 13 } + add_character_modifier = duel_edge_buff_13_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 14 } + add_character_modifier = duel_edge_buff_14_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 15 } + add_character_modifier = duel_edge_buff_15_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 16 } + add_character_modifier = duel_edge_buff_16_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 17 } + add_character_modifier = duel_edge_buff_17_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 18 } + add_character_modifier = duel_edge_buff_18_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 19 } + add_character_modifier = duel_edge_buff_19_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 20 } + add_character_modifier = duel_edge_buff_20_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 21 } + add_character_modifier = duel_edge_buff_21_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 22 } + add_character_modifier = duel_edge_buff_22_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 23 } + add_character_modifier = duel_edge_buff_23_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 24 } + add_character_modifier = duel_edge_buff_24_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 25 } + add_character_modifier = duel_edge_buff_25_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 26 } + add_character_modifier = duel_edge_buff_26_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 27 } + add_character_modifier = duel_edge_buff_27_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 28 } + add_character_modifier = duel_edge_buff_28_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff = 29 } + add_character_modifier = duel_edge_buff_29_modifier + } + else_if = { + limit = { local_var:current_duel_edge_buff >= 30 } + add_character_modifier = duel_edge_buff_30_modifier + #Show a tooltip in case the character is overflowing at max buff. + custom_tooltip = single_combat.0001.tt.maximum_buff_reached + } + # Finally, note that the character needs a stats recalc. + add_character_flag = sce_needs_forced_recalc_flag +} + +# Add negative prowess character modifiers from the current move. +scripted_effect increment_combat_debuffs_effect = { + # Determine what our current level of combat buff is. + ## Hidden effect for easy folding & readability. + hidden_effect = { + if = { + limit = { + NOR = { + has_character_modifier = duel_edge_debuff_01_modifier + has_character_modifier = duel_edge_debuff_02_modifier + has_character_modifier = duel_edge_debuff_03_modifier + has_character_modifier = duel_edge_debuff_04_modifier + has_character_modifier = duel_edge_debuff_05_modifier + has_character_modifier = duel_edge_debuff_06_modifier + has_character_modifier = duel_edge_debuff_07_modifier + has_character_modifier = duel_edge_debuff_08_modifier + has_character_modifier = duel_edge_debuff_09_modifier + has_character_modifier = duel_edge_debuff_10_modifier + has_character_modifier = duel_edge_debuff_11_modifier + has_character_modifier = duel_edge_debuff_12_modifier + has_character_modifier = duel_edge_debuff_13_modifier + has_character_modifier = duel_edge_debuff_14_modifier + has_character_modifier = duel_edge_debuff_15_modifier + has_character_modifier = duel_edge_debuff_16_modifier + has_character_modifier = duel_edge_debuff_17_modifier + has_character_modifier = duel_edge_debuff_18_modifier + has_character_modifier = duel_edge_debuff_19_modifier + has_character_modifier = duel_edge_debuff_20_modifier + has_character_modifier = duel_edge_debuff_21_modifier + has_character_modifier = duel_edge_debuff_22_modifier + has_character_modifier = duel_edge_debuff_23_modifier + has_character_modifier = duel_edge_debuff_24_modifier + has_character_modifier = duel_edge_debuff_25_modifier + has_character_modifier = duel_edge_debuff_26_modifier + has_character_modifier = duel_edge_debuff_27_modifier + has_character_modifier = duel_edge_debuff_28_modifier + has_character_modifier = duel_edge_debuff_29_modifier + has_character_modifier = duel_edge_debuff_30_modifier + } + } + set_local_variable = { + name = current_duel_edge_debuff + value = 0 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_01_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 1 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_02_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 2 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_03_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 3 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_04_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 4 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_05_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 5 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_06_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 6 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_07_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 7 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_08_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 8 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_09_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 9 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_10_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 10 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_11_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 11 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_12_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 12 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_13_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 13 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_14_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 14 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_15_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 15 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_16_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 16 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_17_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 17 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_18_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 18 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_19_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 19 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_20_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 20 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_21_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 21 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_22_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 22 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_23_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 23 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_24_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 24 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_25_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 25 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_26_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 26 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_27_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 27 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_28_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 28 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_29_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 29 + } + } + else_if = { + limit = { has_character_modifier = duel_edge_debuff_30_modifier } + set_local_variable = { + name = current_duel_edge_debuff + value = 30 + } + #Show a tooltip in case the character is overflowing at max buff. + custom_tooltip = single_combat.0001.tt.maximum_debuff_reached + } + } + # Grab the amount we want to add and change the combat modifier accordingly. + change_local_variable = { + name = current_duel_edge_debuff + add = $DEBUFF_INCREMENT$ + } + # Remove any existing duel edge buffs. + hidden_effect = { remove_temporary_duel_edge_debuff_modifiers_effect = yes } + # Add the buff corresponding to our new level of edge. + if = { + limit = { local_var:current_duel_edge_debuff = 1 } + add_character_modifier = duel_edge_debuff_01_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 2 } + add_character_modifier = duel_edge_debuff_02_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 3 } + add_character_modifier = duel_edge_debuff_03_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 4 } + add_character_modifier = duel_edge_debuff_04_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 5 } + add_character_modifier = duel_edge_debuff_05_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 6 } + add_character_modifier = duel_edge_debuff_06_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 7 } + add_character_modifier = duel_edge_debuff_07_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 8 } + add_character_modifier = duel_edge_debuff_08_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 9 } + add_character_modifier = duel_edge_debuff_09_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 10 } + add_character_modifier = duel_edge_debuff_10_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 11 } + add_character_modifier = duel_edge_debuff_11_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 12 } + add_character_modifier = duel_edge_debuff_12_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 13 } + add_character_modifier = duel_edge_debuff_13_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 14 } + add_character_modifier = duel_edge_debuff_14_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 15 } + add_character_modifier = duel_edge_debuff_15_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 16 } + add_character_modifier = duel_edge_debuff_16_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 17 } + add_character_modifier = duel_edge_debuff_17_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 18 } + add_character_modifier = duel_edge_debuff_18_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 19 } + add_character_modifier = duel_edge_debuff_19_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 20 } + add_character_modifier = duel_edge_debuff_20_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 21 } + add_character_modifier = duel_edge_debuff_21_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 22 } + add_character_modifier = duel_edge_debuff_22_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 23 } + add_character_modifier = duel_edge_debuff_23_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 24 } + add_character_modifier = duel_edge_debuff_24_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 25 } + add_character_modifier = duel_edge_debuff_25_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 26 } + add_character_modifier = duel_edge_debuff_26_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 27 } + add_character_modifier = duel_edge_debuff_27_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 28 } + add_character_modifier = duel_edge_debuff_28_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff = 29 } + add_character_modifier = duel_edge_debuff_29_modifier + } + else_if = { + limit = { local_var:current_duel_edge_debuff >= 30 } + add_character_modifier = duel_edge_debuff_30_modifier + #Show a tooltip in case the character is overflowing at max buff. + custom_tooltip = single_combat.0001.tt.maximum_debuff_reached + } + # Finally, note that the character needs a stats recalc. + add_character_flag = sce_needs_forced_recalc_flag +} + +# Tier One move effects +scripted_effect combat_move_wait_and_hope_effect = { + #No special effects. + + #Iterate last move for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:wait_and_hope + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:wait_and_hope + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_low + } +} +scripted_effect combat_move_unsure_attack_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:unsure_attack + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:unsure_attack + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_high + DUEL_SUCCESS = duel_success_medium + } +} +scripted_effect combat_move_enthusiastic_onslaught_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:enthusiastic_onslaught + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:enthusiastic_onslaught + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_very_high + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_hail_mary_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:hail_mary + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:hail_mary + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_high + DUEL_SUCCESS = duel_success_very_high + } +} +scripted_effect combat_move_pocket_sand_effect = { + # Your opponent gets grit in their eyes! + ## Scope:sc_attacker first. + if = { + limit = { this = scope:sc_attacker } + scope:sc_defender = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 } + } + } + ## Then scope:sc_defender. + if = { + limit = { this = scope:sc_defender } + scope:sc_attacker = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 } + } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:pocket_sand + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:pocket_sand + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_none + } +} +scripted_effect combat_move_nut_em_effect = { + # A headbutt to the face often offends. Both parties, really. + scope:sc_attacker = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 } + } + scope:sc_defender = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:nut_em + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:nut_em + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_high + DUEL_SUCCESS = duel_success_medium + } +} + +# Tier Two move effects +scripted_effect combat_move_guard_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:guard + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:guard + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_low + } +} +scripted_effect combat_move_probing_attack_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:probing_attack + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:probing_attack + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_medium + } +} +scripted_effect combat_move_onslaught_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:onslaught + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:onslaught + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_high + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_surprise_attack_effect = { + #Special effects taken care of in risk-reward section. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:surprise_attack + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:surprise_attack + } + } + + #And adjust risk-reward scores. + if = { + limit = { + OR = { + AND = { + this = scope:sc_attacker + scope:sc_defender = { has_trait = trusting } + } + AND = { + this = scope:sc_defender + scope:sc_attacker = { has_trait = trusting } + } + } + } + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_very_high + } + } + else = { + random_list = { + 33 = { + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_low + } + } + 34 = { + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_medium + } + } + 33 = { + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_high + } + } + } + } +} +scripted_effect combat_move_taunt_effect = { + #Your AI opponent becomes enraged. + if = { + limit = { this = scope:sc_attacker } + scope:sc_defender = { + add_character_modifier = { modifier = combat_move_taunt_modifier } + } + } + if = { + limit = { this = scope:sc_defender } + scope:sc_attacker = { + add_character_modifier = { modifier = combat_move_taunt_modifier } + } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:taunt + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:taunt + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_none + } +} +scripted_effect combat_move_put_the_boot_in_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:put_the_boot_in + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:put_the_boot_in + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_very_high + DUEL_SUCCESS = duel_success_very_high + } +} + +# Tier Three move effects +scripted_effect combat_move_strict_guard_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:strict_guard + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:strict_guard + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_low + } +} +scripted_effect combat_move_confident_attack_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:confident_attack + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:confident_attack + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_medium + } +} +scripted_effect combat_move_expert_onslaught_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:expert_onslaught + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:expert_onslaught + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_attempt_disarm_effect = { + # You attempt to disarm your opponent, making their grip on their weapon shaky. + ## Scope:sc_attacker first. + if = { + limit = { this = scope:sc_attacker } + scope:sc_defender = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 6 } + } + } + ## Then scope:sc_defender. + if = { + limit = { this = scope:sc_defender } + scope:sc_attacker = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 6 } + } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:attempt_disarm + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:attempt_disarm + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_low + } +} +scripted_effect combat_move_lightning_assault_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:lightning_assault + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:lightning_assault + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_high + DUEL_SUCCESS = duel_success_very_high + } +} +scripted_effect combat_move_tire_opponent_effect = { + # Drastically improve your own wound threshold due to relative tiredness. + if = { + limit = { this = scope:sc_attacker } + change_variable = { + name = sc_attacker_injury_risk_score + add = combat_move_wound_threshold_bonus_2 + } + custom_tooltip = single_combat.0001.wound_threshold.medium_bonus.tt + } + if = { + limit = { this = scope:sc_defender } + change_variable = { + name = sc_defender_injury_risk_score + add = combat_move_wound_threshold_bonus_2 + } + custom_tooltip = single_combat.0001.wound_threshold.medium_bonus.tt + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:tire_opponent + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:tire_opponent + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_low + } +} + +# High Secondary Skill move effects +scripted_effect combat_move_reason_you_suck_speech_effect = { + # Explain, at length, why your opponent is a cad & you're rad. + add_prestige = combat_move_reason_you_suck_speech_value + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:reason_you_suck_speech + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:reason_you_suck_speech + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_none + } +} +scripted_effect combat_move_technique_from_legend_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:technique_from_legend + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:technique_from_legend + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_like_a_viper_effect = { + # Drastically reduce your opponent's wound threshold by off-balancing them. + if = { + limit = { this = scope:sc_attacker } + scope:sc_defender = { + change_variable = { + name = sc_defender_injury_risk_score + add = combat_move_wound_threshold_malus_2 + } + } + custom_tooltip = single_combat.0001.wound_threshold.medium_malus.tt + } + if = { + limit = { this = scope:sc_defender } + scope:sc_attacker = { + change_variable = { + name = sc_attacker_injury_risk_score + add = combat_move_wound_threshold_malus_2 + } + } + custom_tooltip = single_combat.0001.wound_threshold.medium_malus.tt + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:like_a_viper + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:like_a_viper + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_pocket_silver_effect = { + # You fling a purse of silver right at your opponent's face. + ## We deliberately don't use pay_short_term_gold, since that'll read weirdly to the player. + if = { + limit = { this = scope:sc_attacker } + remove_short_term_gold = combat_move_pocket_silver_value + scope:sc_defender = { add_gold = combat_move_pocket_silver_value } + } + if = { + limit = { this = scope:sc_defender } + remove_short_term_gold = combat_move_pocket_silver_value + scope:sc_attacker = { add_gold = combat_move_pocket_silver_value } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:pocket_silver + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:pocket_silver + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_medium + } +} +scripted_effect combat_move_martial_voice_effect = { + # You go drill sergeant on your opponent. + ## Scope:sc_attacker first. + if = { + limit = { this = scope:sc_attacker } + scope:sc_defender = { + # Arrogant characters are a bit less susceptible to this. + if = { + limit = { has_trait = arrogant } + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 2 } + } + else = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 } + } + } + } + ## Then we look at scope:sc_defender. + else_if = { + limit = { this = scope:sc_defender } + scope:sc_attacker = { + # Arrogant characters are a bit less susceptible to this. + if = { + limit = { has_trait = arrogant } + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 2 } + } + else = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 } + } + } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:martial_voice + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:martial_voice + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_none + } +} +scripted_effect combat_move_mocking_boast_effect = { + # Your opponent takes +4 levels of combat debuffs, and some stress. + ## Scope:sc_attacker first. + if = { + limit = { this = scope:sc_attacker } + scope:sc_defender = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 2 } + # Arrogant characters are a bit more susceptible. + if = { + limit = { has_trait = arrogant } + add_stress = medium_stress_gain + } + else = { add_stress = minor_stress_gain } + } + } + ## Then we look at scope:sc_defender. + else_if = { + limit = { this = scope:sc_defender } + scope:sc_attacker = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 2 } + # Arrogant characters are a bit more susceptible. + if = { + limit = { has_trait = arrogant } + add_stress = medium_stress_gain + } + else = { add_stress = minor_stress_gain } + } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:mocking_boast + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:mocking_boast + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_none + } +} + +# Location-Specific move effects +scripted_effect combat_move_is_that_a_crocodile_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:is_that_a_crocodile + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:is_that_a_crocodile + } + } + + # Maximum of one crocodile per fight. + save_scope_value_as = { + name = had_crocodile + value = yes + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_very_high + } +} +scripted_effect combat_move_desert_warrior_effect = { + #Add +2 ranks of combat buff. + increment_combat_buffs_effect = { BUFF_INCREMENT = 2 } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:desert_warrior + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:desert_warrior + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_jungle_stalker_effect = { + #Add +2 ranks of combat buff. + increment_combat_buffs_effect = { BUFF_INCREMENT = 2 } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:jungle_stalker + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:jungle_stalker + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_open_terrain_expert_effect = { + #Add +2 ranks of combat buff. + increment_combat_buffs_effect = { BUFF_INCREMENT = 2 } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:open_terrain_expert + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:open_terrain_expert + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_rough_terrain_expert_effect = { + #Add +2 ranks of combat buff. + increment_combat_buffs_effect = { BUFF_INCREMENT = 2 } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:rough_terrain_expert + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:rough_terrain_expert + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_forest_fighter_effect = { + #Add +2 ranks of combat buff. + increment_combat_buffs_effect = { BUFF_INCREMENT = 2 } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:forest_fighter + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:forest_fighter + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_high + } +} + +# Trait-Specific move effects +scripted_effect combat_move_raaargh_effect = { + #Going berserk is a major stress relief. + add_stress = medium_stress_loss + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:raaargh + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:raaargh + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_very_high + } +} +scripted_effect combat_move_hard_grit_effect = { + #Add +4 ranks of combat buff. + increment_combat_buffs_effect = { BUFF_INCREMENT = 4 } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:hard_grit + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:hard_grit + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_feint_and_stab_effect = { + # Quick-thinking is a habit. + add_character_modifier = { + modifier = combat_move_feint_and_stab_modifier + years = 5 + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:feint_and_stab + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:feint_and_stab + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_butchery_effect = { + # Show people what happens when they mess with you. + add_dread = combat_move_butchery_dread_value + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:butchery + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:butchery + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_high + } +} +scripted_effect combat_move_stoic_veteran_effect = { + # You didn't die in Miklagard, you won't die here, you won't even die soon. + add_character_modifier = { + modifier = combat_move_stoic_veteran_modifier + years = 5 + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:stoic_veteran + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:stoic_veteran + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_medium + } +} +scripted_effect combat_move_blade_dance_effect = { + # Show off your skill with the blade. + add_prestige = combat_move_blade_dance_value + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:blade_dance + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:blade_dance + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_high + } +} +## Not a separate combat move, just an effect inside the subsequent one. +scripted_effect combat_move_wrath_of_highgod_piety_reward_effect = { + # Non-scripted values used to keep the piety amount low; you might take this option several times in one duel, so we don't really want you to be farming piety from it. + + # Righteous faiths give little piety + if = { + limit = { + faith = { + faith_hostility_level = { + target = $MY_FOE$.faith + value = faith_fully_accepted_level + } + } + } + add_piety = 10 + } + # Astray faiths are a bit further from the light + else_if = { + limit = { + faith = { + faith_hostility_level = { + target = $MY_FOE$.faith + value = faith_astray_level + } + } + } + add_piety = 25 + } + # Hostile faiths make HighGod sit up and take notice + else_if = { + limit = { + faith = { + faith_hostility_level = { + target = $MY_FOE$.faith + value = faith_hostile_level + } + } + } + add_piety = 50 + } + # Evil faiths are actually worth writing home about + else_if = { + limit = { + faith = { + faith_hostility_level = { + target = $MY_FOE$.faith + value = faith_evil_level + } + } + } + add_piety = 75 + } +} +scripted_effect combat_move_wrath_of_highgod_effect = { + #Earn piety scaling with how intolerant you are of your opponent. + if = { + limit = { this = scope:sc_attacker } + combat_move_wrath_of_highgod_piety_reward_effect = { MY_FOE = scope:sc_defender } + } + if = { + limit = { this = scope:sc_defender } + combat_move_wrath_of_highgod_piety_reward_effect = { MY_FOE = scope:sc_attacker } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:wrath_of_highgod + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:wrath_of_highgod + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_low + } +} +scripted_effect combat_move_hurt_me_better_effect = { + # Deviant characters can cancel out their wound penalties, or gain a moderate buff otherwise. + if = { + limit = { + # To cancel out wounded, they must have any wounded trait. + has_trait = wounded + # And must not have cancelled it out already. + NOR = { + has_character_modifier = combat_move_hurt_me_better_wounded_1_modifier + has_character_modifier = combat_move_hurt_me_better_wounded_2_modifier + has_character_modifier = combat_move_hurt_me_better_wounded_3_modifier + } + } + if = { + limit = { has_trait = wounded_1 } + add_character_modifier = combat_move_hurt_me_better_wounded_1_modifier + } + else_if = { + limit = { has_trait = wounded_2 } + add_character_modifier = combat_move_hurt_me_better_wounded_2_modifier + } + else_if = { + limit = { has_trait = wounded_3 } + add_character_modifier = combat_move_hurt_me_better_wounded_3_modifier + } + } + else = { + # Otherwise, we just buff their duel edge twice. + increment_combat_buffs_effect = { BUFF_INCREMENT = 2 } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:hurt_me_better + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:hurt_me_better + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_medium + DUEL_SUCCESS = duel_success_medium + } +} + +# Misc move effects +scripted_effect combat_move_special_fallback_effect = { + #No special effects. + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:special_fallback + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:special_fallback + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_low + DUEL_SUCCESS = duel_success_low + } +} +scripted_effect combat_move_something_to_hide_effect = { + # You imply that things might go poorly for your opponent if they don't back down. + ## Scope:sc_attacker first. + if = { + limit = { this = scope:sc_attacker } + # If the hook is strong, then add +8 ranks of combat debuff for your opponent. + if = { + limit = { has_strong_usable_hook = scope:sc_defender } + scope:sc_defender = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 8 } + } + } + # Otherwise, we only add +4 ranks. + else = { + scope:sc_defender = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 } + } + } + } + ## Then scope:sc_defender. + if = { + limit = { this = scope:sc_defender } + # If the hook is strong, then add +8 ranks of combat debuff for your opponent. + if = { + limit = { has_strong_usable_hook = scope:sc_attacker } + scope:sc_attacker = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 8 } + } + } + # Otherwise, we only add +4 ranks. + else = { + scope:sc_attacker = { + increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 } + } + } + } + + #Change the last move registered for loc purposes. + if = { + limit = { this = scope:sc_attacker } + save_scope_value_as = { + name = sc_attacker_last_move + value = flag:something_to_hide + } + } + if = { + limit = { this = scope:sc_defender } + save_scope_value_as = { + name = sc_defender_last_move + value = flag:something_to_hide + } + } + + #And adjust risk-reward scores. + adjust_risk_reward_effect = { + INJURY_RISK = injury_risk_none + DUEL_SUCCESS = duel_success_none + } +} + +# Artifact damage effect - input slot type, chance for damage to happen at all, and max possible damage as percent of max possible +scripted_effect may_damage_artifact_effect = { + if = { + limit = { + any_equipped_character_artifact = { artifact_slot_type = $TYPE$ } + } + random_equipped_character_artifact = { + limit = { artifact_slot_type = $TYPE$ } + random = { + chance = $CHANCE$ + add_durability = { + value = artifact_max_durability + multiply = { + value = { + integer_range = { + min = 5 + max = $PERCENT$ + } + } + multiply = -0.01 + } + } + } + } + } +} + +################################################## +# SINGLE COMBAT EVENTS + +################################################## +# Participant Events +# by Ewan Cowhig Croft +# 0001 - 0020 +################################################## + +# Standard combat event. +single_combat.0001 = { + type = character_event + window = duel_event + title = { + first_valid = { + triggered_desc = { + trigger = { this = scope:sc_defender } + desc = single_combat.0001.t + } + triggered_desc = { + trigger = { this = scope:sc_attacker } + desc = single_combat.0011.t + } + } + } + desc = { + first_valid = { + #If we're scope:sc_defender, give us defensive descs. + triggered_desc = { + trigger = { this = scope:sc_defender } + desc = { + # First round. + ## We just play an intro spiel. + triggered_desc = { + trigger = { scope:sc_defender.var:current_round = 1 } + desc = single_combat.0001.desc.sc_defender.intro + } + ## Slightly different capstone speeches, depending on how deadly the duel is expected to be. + triggered_desc = { + trigger = { + scope:sc_defender.var:current_round = 1 + duel_will_end_in_opponent_death_trigger = no + } + desc = single_combat.0001.desc.capstone.intro.first_blood + } + triggered_desc = { + trigger = { + scope:sc_defender.var:current_round = 1 + duel_will_end_in_opponent_death_trigger = yes + } + desc = single_combat.0001.desc.capstone.intro.deadly + } + # Scope:sc_defender feedback. + ## So you can see a bit of fairly-static feedback on how your selected combat move went. + triggered_desc = { + trigger = { exists = scope:sc_defender_last_move } + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:wait_and_hope + duel_will_end_in_my_death_trigger = yes + NOT = { has_trait = brave } + } + desc = single_combat.0001.desc.my_feedback.wait_and_hope.will_die + } + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:wait_and_hope + OR = { + duel_will_end_in_my_death_trigger = no + has_trait = brave + } + } + desc = single_combat.0001.desc.my_feedback.wait_and_hope.will_live + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:unsure_attack } + desc = single_combat.0001.desc.my_feedback.unsure_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0001.desc.my_feedback.enthusiastic_onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hail_mary } + desc = single_combat.0001.desc.my_feedback.hail_mary + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:pocket_sand } + desc = single_combat.0001.desc.my_feedback.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:nut_em } + desc = single_combat.0001.desc.my_feedback.nut_em + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:guard } + desc = single_combat.0001.desc.my_feedback.guard + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:probing_attack } + desc = single_combat.0001.desc.my_feedback.probing_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:onslaught } + desc = single_combat.0001.desc.my_feedback.onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:surprise_attack } + desc = single_combat.0001.desc.my_feedback.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:taunt } + desc = single_combat.0001.desc.my_feedback.taunt + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:put_the_boot_in } + desc = single_combat.0001.desc.my_feedback.put_the_boot_in + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:strict_guard } + desc = single_combat.0001.desc.my_feedback.strict_guard + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:confident_attack } + desc = single_combat.0001.desc.my_feedback.confident_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:expert_onslaught } + desc = single_combat.0001.desc.my_feedback.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:attempt_disarm } + desc = single_combat.0001.desc.my_feedback.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:lightning_assault } + desc = single_combat.0001.desc.my_feedback.lightning_assault + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:tire_opponent } + desc = single_combat.0001.desc.my_feedback.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:reason_you_suck_speech } + desc = single_combat.0001.desc.my_feedback.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:technique_from_legend } + desc = single_combat.0001.desc.my_feedback.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:like_a_viper } + desc = single_combat.0001.desc.my_feedback.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:pocket_silver } + desc = single_combat.0001.desc.my_feedback.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:martial_voice } + desc = single_combat.0001.desc.my_feedback.martial_voice + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:mocking_boast } + desc = single_combat.0001.desc.my_feedback.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:is_that_a_crocodile } + desc = single_combat.0001.desc.my_feedback.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:desert_warrior } + desc = single_combat.0001.desc.my_feedback.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:jungle_stalker } + desc = single_combat.0001.desc.my_feedback.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:open_terrain_expert } + desc = single_combat.0001.desc.my_feedback.open_terrain_expert + } + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0001.desc.my_feedback.rough_terrain_expert.rocky + } + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0001.desc.my_feedback.rough_terrain_expert.boggy + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:forest_fighter } + desc = single_combat.0001.desc.my_feedback.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:raaargh } + desc = single_combat.0001.desc.my_feedback.raaargh + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hard_grit } + desc = single_combat.0001.desc.my_feedback.hard_grit + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:feint_and_stab } + desc = single_combat.0001.desc.my_feedback.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:butchery } + desc = single_combat.0001.desc.my_feedback.butchery + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:stoic_veteran } + desc = single_combat.0001.desc.my_feedback.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:blade_dance } + desc = single_combat.0001.desc.my_feedback.blade_dance + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:wrath_of_highgod } + desc = single_combat.0001.desc.my_feedback.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hurt_me_better } + desc = single_combat.0001.desc.my_feedback.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:special_fallback } + desc = single_combat.0001.desc.my_feedback.special_fallback + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:something_to_hide } + desc = single_combat.0001.desc.my_feedback.something_to_hide + } + } + } + } + # Scope:sc_attacker responses. + ## What move did your opponent pick, and how does that play out from your POV? + triggered_desc = { + trigger = { exists = scope:sc_attacker_last_move } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0001.desc.opponent_response.wait_and_hope + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0001.desc.opponent_response.unsure_attack + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:enthusiastic_onslaught + scope:sc_attacker = { house_not_allowed_to_yell_motto_trigger = yes } + } + desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.banned_house + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:enthusiastic_onslaught + scope:sc_attacker.house = scope:sc_defender.house + } + desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.own_house + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:enthusiastic_onslaught + #Otherwise, we can shout the motto. + } + desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.motto + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0001.desc.opponent_response.hail_mary + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0001.desc.opponent_response.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0001.desc.opponent_response.nut_em + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0001.desc.opponent_response.guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0001.desc.opponent_response.probing_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0001.desc.opponent_response.onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0001.desc.opponent_response.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0001.desc.opponent_response.taunt + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0001.desc.opponent_response.put_the_boot_in + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0001.desc.opponent_response.strict_guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0001.desc.opponent_response.confident_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0001.desc.opponent_response.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0001.desc.opponent_response.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:lightning_assault } + desc = single_combat.0001.desc.opponent_response.lightning_assault + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0001.desc.opponent_response.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0001.desc.opponent_response.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0001.desc.opponent_response.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0001.desc.opponent_response.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0001.desc.opponent_response.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0001.desc.opponent_response.martial_voice + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0001.desc.opponent_response.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0001.desc.opponent_response.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0001.desc.opponent_response.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0001.desc.opponent_response.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0001.desc.opponent_response.open_terrain_expert + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0001.desc.opponent_response.rough_terrain_expert.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0001.desc.opponent_response.rough_terrain_expert.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0001.desc.opponent_response.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0001.desc.opponent_response.raaargh + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0001.desc.opponent_response.hard_grit + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0001.desc.opponent_response.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0001.desc.opponent_response.butchery + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0001.desc.opponent_response.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0001.desc.opponent_response.blade_dance + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0001.desc.opponent_response.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0001.desc.opponent_response.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0001.desc.opponent_response.special_fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0001.desc.opponent_response.something_to_hide + } + } + } + } + # Duel status updates. + triggered_desc = { + trigger = { scope:sc_defender.var:current_round > 1 } + desc = { + first_valid = { + # Injury updates. + ## For scope:sc_defender. + ### Injury chance very unlikely. + triggered_desc = { + trigger = { sc_defender_injury_check_actual <= single_combat_injury_very_unlikely_value } + desc = single_combat.0001.desc.injury_check.personal.very_unlikely + } + ### Injury chance unlikely. + triggered_desc = { + trigger = { sc_defender_injury_check_actual <= single_combat_injury_unlikely_value } + desc = single_combat.0001.desc.injury_check.personal.unlikely + } + ### Injury chance moderate. + triggered_desc = { + trigger = { sc_defender_injury_check_actual <= single_combat_injury_neutral_value } + desc = single_combat.0001.desc.injury_check.personal.moderate + } + ### Injury chance likely. + triggered_desc = { + trigger = { sc_defender_injury_check_actual <= single_combat_injury_likely_value } + desc = single_combat.0001.desc.injury_check.personal.likely + } + ### Injury chance very likely. + desc = single_combat.0001.desc.injury_check.personal.very_likely + } + first_valid = { + ## For scope:sc_attacker. + ### Injury chance very unlikely. + triggered_desc = { + trigger = { sc_attacker_injury_check_actual <= single_combat_injury_very_unlikely_value } + desc = single_combat.0001.desc.injury_check.opponent.very_unlikely + } + ### Injury chance unlikely. + triggered_desc = { + trigger = { sc_attacker_injury_check_actual <= single_combat_injury_unlikely_value } + desc = single_combat.0001.desc.injury_check.opponent.unlikely + } + ### Injury chance moderate. + triggered_desc = { + trigger = { sc_attacker_injury_check_actual <= single_combat_injury_neutral_value } + desc = single_combat.0001.desc.injury_check.opponent.moderate + } + ### Injury chance likely. + triggered_desc = { + trigger = { sc_attacker_injury_check_actual <= single_combat_injury_likely_value } + desc = single_combat.0001.desc.injury_check.opponent.likely + } + ### Injury chance very likely. + desc = single_combat.0001.desc.injury_check.opponent.very_likely + } + first_valid = { + # Success updates. + ## Victory almost impossible. + triggered_desc = { + trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_almost_impossible_value } + desc = single_combat.0001.desc.success_check.almost_impossible + } + ## Victory very unlikely. + triggered_desc = { + trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_very_unlikely_value } + desc = single_combat.0001.desc.success_check.very_unlikely + } + ## Victory unlikely. + triggered_desc = { + trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_unlikely_value } + desc = single_combat.0001.desc.success_check.unlikely + } + ## Victory in the balance. + triggered_desc = { + trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_likely_value } + desc = single_combat.0001.desc.success_check.moderate + } + ## Victory likely. + triggered_desc = { + trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_very_likely_value } + desc = single_combat.0001.desc.success_check.likely + } + ## Victory very likely. + triggered_desc = { + trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_almost_certain_value } + desc = single_combat.0001.desc.success_check.very_likely + } + ## Victory almost certain. + desc = single_combat.0001.desc.success_check.almost_certain + } + } + } + } + } + #Otherwise, give us the offensive descs. Triggered_desc kept for indenting. + triggered_desc = { + trigger = { this = scope:sc_attacker } + desc = { + # First round. + ## We just play an intro spiel. + triggered_desc = { + trigger = { scope:sc_defender.var:current_round = 1 } + desc = single_combat.0001.desc.sc_attacker.intro + } + ## Slightly different capstone speeches, depending on how deadly the duel is expected to be. + triggered_desc = { + trigger = { + scope:sc_defender.var:current_round = 1 + duel_will_end_in_opponent_death_trigger = no + } + desc = single_combat.0001.desc.capstone.intro.first_blood + } + triggered_desc = { + trigger = { + scope:sc_defender.var:current_round = 1 + duel_will_end_in_opponent_death_trigger = yes + } + desc = single_combat.0001.desc.capstone.intro.deadly + } + triggered_desc = { + trigger = { scope:sc_defender.var:current_round = 1 } + desc = single_combat.0001.desc.sc_attacker.intro.epilogue + } + # Scope:sc_attacker feedback. + ## So you can see a bit of fairly-static feedback on how your selected combat move went. + triggered_desc = { + trigger = { exists = scope:sc_attacker_last_move } + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:wait_and_hope + duel_will_end_in_my_death_trigger = yes + NOT = { has_trait = brave } + } + desc = single_combat.0001.desc.my_feedback.wait_and_hope.will_die + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:wait_and_hope + OR = { + duel_will_end_in_my_death_trigger = no + has_trait = brave + } + } + desc = single_combat.0001.desc.my_feedback.wait_and_hope.will_live + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0001.desc.my_feedback.unsure_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0001.desc.my_feedback.enthusiastic_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0001.desc.my_feedback.hail_mary + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0001.desc.my_feedback.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0001.desc.my_feedback.nut_em + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0001.desc.my_feedback.guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0001.desc.my_feedback.probing_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0001.desc.my_feedback.onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0001.desc.my_feedback.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0001.desc.my_feedback.taunt + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0001.desc.my_feedback.put_the_boot_in + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0001.desc.my_feedback.strict_guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0001.desc.my_feedback.confident_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0001.desc.my_feedback.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0001.desc.my_feedback.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:lightning_assault } + desc = single_combat.0001.desc.my_feedback.lightning_assault + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0001.desc.my_feedback.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0001.desc.my_feedback.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0001.desc.my_feedback.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0001.desc.my_feedback.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0001.desc.my_feedback.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0001.desc.my_feedback.martial_voice + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0001.desc.my_feedback.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0001.desc.my_feedback.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0001.desc.my_feedback.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0001.desc.my_feedback.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0001.desc.my_feedback.open_terrain_expert + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0001.desc.my_feedback.rough_terrain_expert.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0001.desc.my_feedback.rough_terrain_expert.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0001.desc.my_feedback.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0001.desc.my_feedback.raaargh + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0001.desc.my_feedback.hard_grit + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0001.desc.my_feedback.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0001.desc.my_feedback.butchery + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0001.desc.my_feedback.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0001.desc.my_feedback.blade_dance + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0001.desc.my_feedback.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0001.desc.my_feedback.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0001.desc.my_feedback.special_fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0001.desc.my_feedback.something_to_hide + } + } + } + } + # Scope:sc_defender responses. + ## What move did your opponent pick, and how does that play out from your POV? + triggered_desc = { + trigger = { exists = scope:sc_defender_last_move } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:wait_and_hope } + desc = single_combat.0001.desc.opponent_response.wait_and_hope + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:unsure_attack } + desc = single_combat.0001.desc.opponent_response.unsure_attack + } + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:enthusiastic_onslaught + scope:sc_defender = { house_not_allowed_to_yell_motto_trigger = yes } + } + desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.banned_house + } + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:enthusiastic_onslaught + scope:sc_defender.house = scope:sc_attacker.house + } + desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.own_house + } + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:enthusiastic_onslaught + #Otherwise, we can shout the motto. + } + desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.motto + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hail_mary } + desc = single_combat.0001.desc.opponent_response.hail_mary + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:pocket_sand } + desc = single_combat.0001.desc.opponent_response.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:nut_em } + desc = single_combat.0001.desc.opponent_response.nut_em + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:guard } + desc = single_combat.0001.desc.opponent_response.guard + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:probing_attack } + desc = single_combat.0001.desc.opponent_response.probing_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:onslaught } + desc = single_combat.0001.desc.opponent_response.onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:surprise_attack } + desc = single_combat.0001.desc.opponent_response.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:taunt } + desc = single_combat.0001.desc.opponent_response.taunt + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:put_the_boot_in } + desc = single_combat.0001.desc.opponent_response.put_the_boot_in + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:strict_guard } + desc = single_combat.0001.desc.opponent_response.strict_guard + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:confident_attack } + desc = single_combat.0001.desc.opponent_response.confident_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:expert_onslaught } + desc = single_combat.0001.desc.opponent_response.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:attempt_disarm } + desc = single_combat.0001.desc.opponent_response.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:lightning_assault } + desc = single_combat.0001.desc.opponent_response.lightning_assault + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:tire_opponent } + desc = single_combat.0001.desc.opponent_response.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:reason_you_suck_speech } + desc = single_combat.0001.desc.opponent_response.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:technique_from_legend } + desc = single_combat.0001.desc.opponent_response.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:like_a_viper } + desc = single_combat.0001.desc.opponent_response.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:pocket_silver } + desc = single_combat.0001.desc.opponent_response.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:martial_voice } + desc = single_combat.0001.desc.opponent_response.martial_voice + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:mocking_boast } + desc = single_combat.0001.desc.opponent_response.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:is_that_a_crocodile } + desc = single_combat.0001.desc.opponent_response.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:desert_warrior } + desc = single_combat.0001.desc.opponent_response.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:jungle_stalker } + desc = single_combat.0001.desc.opponent_response.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:open_terrain_expert } + desc = single_combat.0001.desc.opponent_response.open_terrain_expert + } + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0001.desc.opponent_response.rough_terrain_expert.rocky + } + triggered_desc = { + trigger = { + scope:sc_defender_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0001.desc.opponent_response.rough_terrain_expert.boggy + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:forest_fighter } + desc = single_combat.0001.desc.opponent_response.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:raaargh } + desc = single_combat.0001.desc.opponent_response.raaargh + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hard_grit } + desc = single_combat.0001.desc.opponent_response.hard_grit + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:feint_and_stab } + desc = single_combat.0001.desc.opponent_response.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:butchery } + desc = single_combat.0001.desc.opponent_response.butchery + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:stoic_veteran } + desc = single_combat.0001.desc.opponent_response.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:blade_dance } + desc = single_combat.0001.desc.opponent_response.blade_dance + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:wrath_of_highgod } + desc = single_combat.0001.desc.opponent_response.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hurt_me_better } + desc = single_combat.0001.desc.opponent_response.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:special_fallback } + desc = single_combat.0001.desc.opponent_response.special_fallback + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:something_to_hide } + desc = single_combat.0001.desc.opponent_response.something_to_hide + } + } + } + } + # Duel status updates. + triggered_desc = { + trigger = { scope:sc_defender.var:current_round > 1 } + desc = { + first_valid = { + # Injury updates. + ## For scope:sc_attacker. + ### Injury chance very unlikely. + triggered_desc = { + trigger = { sc_attacker_injury_check_actual <= single_combat_injury_very_unlikely_value } + desc = single_combat.0001.desc.injury_check.personal.very_unlikely + } + ### Injury chance unlikely. + triggered_desc = { + trigger = { sc_attacker_injury_check_actual <= single_combat_injury_unlikely_value } + desc = single_combat.0001.desc.injury_check.personal.unlikely + } + ### Injury chance moderate. + triggered_desc = { + trigger = { sc_attacker_injury_check_actual <= single_combat_injury_neutral_value } + desc = single_combat.0001.desc.injury_check.personal.moderate + } + ### Injury chance likely. + triggered_desc = { + trigger = { sc_attacker_injury_check_actual <= single_combat_injury_likely_value } + desc = single_combat.0001.desc.injury_check.personal.likely + } + ### Injury chance very likely. + desc = single_combat.0001.desc.injury_check.personal.very_likely + } + first_valid = { + ## For scope:sc_defender. + ### Injury chance very unlikely. + triggered_desc = { + trigger = { sc_defender_injury_check_actual <= single_combat_injury_very_unlikely_value } + desc = single_combat.0001.desc.injury_check.opponent.very_unlikely + } + ### Injury chance unlikely. + triggered_desc = { + trigger = { sc_defender_injury_check_actual <= single_combat_injury_unlikely_value } + desc = single_combat.0001.desc.injury_check.opponent.unlikely + } + ### Injury chance moderate. + triggered_desc = { + trigger = { sc_defender_injury_check_actual <= single_combat_injury_neutral_value } + desc = single_combat.0001.desc.injury_check.opponent.moderate + } + ### Injury chance likely. + triggered_desc = { + trigger = { sc_defender_injury_check_actual <= single_combat_injury_likely_value } + desc = single_combat.0001.desc.injury_check.opponent.likely + } + ### Injury chance very likely. + desc = single_combat.0001.desc.injury_check.opponent.very_likely + } + first_valid = { + # Success updates. + ## Victory almost impossible. + triggered_desc = { + trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_almost_impossible_value } + desc = single_combat.0001.desc.success_check.almost_impossible + } + ## Victory very unlikely. + triggered_desc = { + trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_very_unlikely_value } + desc = single_combat.0001.desc.success_check.very_unlikely + } + ## Victory unlikely. + triggered_desc = { + trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_unlikely_value } + desc = single_combat.0001.desc.success_check.unlikely + } + ## Victory in the balance. + triggered_desc = { + trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_likely_value } + desc = single_combat.0001.desc.success_check.moderate + } + ## Victory likely. + triggered_desc = { + trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_very_likely_value } + desc = single_combat.0001.desc.success_check.likely + } + ## Victory very likely. + triggered_desc = { + trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_almost_certain_value } + desc = single_combat.0001.desc.success_check.very_likely + } + ## Victory almost certain. + desc = single_combat.0001.desc.success_check.almost_certain + } + } + } + } + } + } + } + theme = martial + left_portrait = { + character = scope:myself + triggered_animation = { + trigger = { + portrait_should_wield_sword_trigger = yes + culture = { has_cultural_pillar = heritage_japonic } + } + animation = chudan_no_kamae + } + triggered_animation = { + trigger = { always = yes } + scripted_animation = duel_wield_weapon + } + } + right_portrait = { + character = scope:my_foe + scripted_animation = duel_wield_weapon + } + artifact = { + target = scope:myself.var:signature_weapon_scope + position = lower_left_portrait + trigger = { exists = scope:myself.var:signature_weapon_scope } + } + + artifact = { + target = scope:my_foe.var:signature_weapon_scope + position = lower_right_portrait + trigger = { exists = scope:my_foe.var:signature_weapon_scope } + } + + # Background Logic + override_background = { + trigger = { scope:locale = flag:terrain_scope } + reference = terrain_scope + } + override_background = { + trigger = { scope:locale = flag:battlefield } + reference = battlefield + } + override_background = { + trigger = { scope:locale = flag:alley_night } + reference = alley_night + } + override_background = { + trigger = { scope:locale = flag:alley_day } + reference = alley_day + } + override_background = { + trigger = { scope:locale = flag:temple } + reference = temple + } + override_background = { + trigger = { scope:locale = flag:corridor_night } + reference = corridor_night + } + override_background = { + trigger = { scope:locale = flag:corridor_day } + reference = corridor_day + } + override_background = { + trigger = { scope:locale = flag:courtyard } + reference = courtyard + } + override_background = { + trigger = { scope:locale = flag:dungeon } + reference = dungeon + } + override_background = { + trigger = { scope:locale = flag:docks } + reference = docks + } + override_background = { + trigger = { scope:locale = flag:feast } + reference = feast + } + override_background = { + trigger = { scope:locale = flag:market } + reference = market + } + override_background = { + trigger = { scope:locale = flag:tavern } + reference = tavern + } + override_background = { + trigger = { scope:locale = flag:throne_room } + reference = throne_room + } + override_background = { + trigger = { scope:locale = flag:army_camp } + reference = army_camp + } + override_background = { + trigger = { scope:locale = flag:ep2_travel_bridge } + reference = ep2_travel_bridge + } + + immediate = { + play_music_cue = "mx_cue_combat_stinger" + # Generate combat options. + select_combat_options_from_pool_effect = yes + # Set up portraits for this event, putting the current actor always on the left. + if = { + limit = { this = scope:sc_defender } + scope:sc_defender = { save_scope_as = myself } + scope:sc_attacker = { save_scope_as = my_foe } + } + else = { + scope:sc_attacker = { save_scope_as = myself } + scope:sc_defender = { save_scope_as = my_foe } + } + + # Show opponent's move effect. + if = { + # Check that there's a last move kicking about to look at. + limit = { + OR = { + exists = scope:sc_attacker_last_move + exists = scope:sc_defender_last_move + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:wait_and_hope + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:wait_and_hope + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_wait_and_hope_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:unsure_attack + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:unsure_attack + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_unsure_attack_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:enthusiastic_onslaught + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:enthusiastic_onslaught + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_enthusiastic_onslaught_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:hail_mary + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:hail_mary + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_hail_mary_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:pocket_sand + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:pocket_sand + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_pocket_sand_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:nut_em + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:nut_em + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_nut_em_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:guard + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:guard + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_guard_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:probing_attack + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:probing_attack + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_probing_attack_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:onslaught + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:onslaught + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_onslaught_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:surprise_attack + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:surprise_attack + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_surprise_attack_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:taunt + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:taunt + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_taunt_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:put_the_boot_in + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:put_the_boot_in + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_put_the_boot_in_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:strict_guard + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:strict_guard + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_strict_guard_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:confident_attack + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:confident_attack + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_confident_attack_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:expert_onslaught + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:expert_onslaught + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_expert_onslaught_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:attempt_disarm + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:attempt_disarm + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_attempt_disarm_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:lightning_assault + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:lightning_assault + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_lightning_assault_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:tire_opponent + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:tire_opponent + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_tire_opponent_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:reason_you_suck_speech + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:reason_you_suck_speech + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_reason_you_suck_speech_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:technique_from_legend + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:technique_from_legend + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_technique_from_legend_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:like_a_viper + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:like_a_viper + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_like_a_viper_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:pocket_silver + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:pocket_silver + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_pocket_silver_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:martial_voice + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:martial_voice + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_martial_voice_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:mocking_boast + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:mocking_boast + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_mocking_boast_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:is_that_a_crocodile + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:is_that_a_crocodile + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_is_that_a_crocodile_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:desert_warrior + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:desert_warrior + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_desert_warrior_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:jungle_stalker + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:jungle_stalker + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_jungle_stalker_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:open_terrain_expert + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:open_terrain_expert + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_open_terrain_expert_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:rough_terrain_expert + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:rough_terrain_expert + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_rough_terrain_expert_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:forest_fighter + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:forest_fighter + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_forest_fighter_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:raaargh + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:raaargh + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_raaargh_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:hard_grit + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:hard_grit + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_hard_grit_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:feint_and_stab + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:feint_and_stab + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_feint_and_stab_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:butchery + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:butchery + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_butchery_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:stoic_veteran + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:stoic_veteran + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_stoic_veteran_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:blade_dance + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:blade_dance + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_blade_dance_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:wrath_of_highgod + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:wrath_of_highgod + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_wrath_of_highgod_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:hurt_me_better + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:hurt_me_better + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_hurt_me_better_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:special_fallback + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:special_fallback + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_special_fallback_effect = yes } + } + } + if = { + limit = { + OR = { + AND = { + this = scope:sc_defender + scope:sc_attacker_last_move = flag:something_to_hide + } + AND = { + this = scope:sc_attacker + scope:sc_defender_last_move = flag:something_to_hide + } + } + } + scope:my_foe = { + show_as_tooltip = { combat_move_something_to_hide_effect = yes } + } + } + } + } + + # Stress_impact in the options is deliberately left out of the ai_chance weightings. It's not a huge amount for anyone (typically miniscule for standard moves, minor for special ones), since many of these options can repeat within one combat, and it's no bad thing to have characters come out of duels increasingly stressed. + + #Wait and Hope + option = { + name = single_combat.0001.wait_and_hope + trigger = { exists = local_var:combat_move_wait_and_hope_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.wait_and_hope + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_wait_and_hope_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_wait_and_hope_effect = yes } + } + + stress_impact = { + patient = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + impatient = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_timid_personality_scripted_modifier = yes + } + } + + #Unsure Attack + option = { + name = { + trigger = { scope:fatality = flag:yes } + text = single_combat.0001.unsure_attack + } + name = { + trigger = { scope:fatality = flag:no } + text = single_combat.0001.unsure_attack_non_fatal + } + trigger = { exists = local_var:combat_move_unsure_attack_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.unsure_attack + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_unsure_attack_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_unsure_attack_effect = yes } + } + + # No stress for middle-ground standard options. + ai_chance = { + base = 100 + sce_rational_personality_scripted_modifier = yes + } + } + + #Enthusiastic Onslaught + option = { + # Since we yell the house motto here, we need slight separation between variants. + ## Firstly, if your house is on the banned list, you use a fallback. + name = { + trigger = { house_not_allowed_to_yell_motto_trigger = yes } + text = single_combat.0001.enthusiastic_onslaught.banned_house + } + ## Secondly, if you're fighting another member of your own house, you use a different fallback. + name = { + trigger = { + house_not_allowed_to_yell_motto_trigger = no + scope:sc_attacker.house = scope:sc_defender.house + } + text = single_combat.0001.enthusiastic_onslaught.own_house + } + ## Thirdly, if you're a shouty house who isn't fighting another person from your shouty house, then you use your motto. + name = { + trigger = { + house_not_allowed_to_yell_motto_trigger = no + scope:sc_attacker.house != scope:sc_defender.house + } + text = single_combat.0001.enthusiastic_onslaught.motto + } + trigger = { exists = local_var:combat_move_enthusiastic_onslaught_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.enthusiastic_onslaught + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_enthusiastic_onslaught_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_enthusiastic_onslaught_effect = yes } + } + + stress_impact = { + impatient = miniscule_stress_impact_loss + wrathful = miniscule_stress_impact_loss + patient = miniscule_stress_impact_gain + calm = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_aggressive_personality_scripted_modifier = yes + } + } + + #Hail Mary + option = { + name = single_combat.0001.hail_mary + trigger = { exists = local_var:combat_move_hail_mary_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.hail_mary + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_hail_mary_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_hail_mary_effect = yes } + } + + stress_impact = { + impatient = miniscule_stress_impact_loss + brave = minor_stress_impact_loss + patient = miniscule_stress_impact_gain + craven = minor_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_aggressive_personality_scripted_modifier = yes + } + } + + #Pocket Sand + option = { + name = single_combat.0001.pocket_sand + trigger = { exists = local_var:combat_move_pocket_sand_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.pocket_sand + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_pocket_sand_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_pocket_sand_effect = yes } + } + + stress_impact = { + deceitful = miniscule_stress_impact_loss + arbitrary = miniscule_stress_impact_loss + honest = miniscule_stress_impact_gain + just = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_timid_personality_scripted_modifier = yes + } + } + + #Nut 'em + option = { + name = single_combat.0001.nut_em + trigger = { exists = local_var:combat_move_nut_em_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.nut_em + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_nut_em_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_nut_em_effect = yes } + } + + stress_impact = { + deceitful = miniscule_stress_impact_loss + arbitrary = miniscule_stress_impact_loss + honest = miniscule_stress_impact_gain + just = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_aggressive_personality_scripted_modifier = yes + } + } + + #Guard + option = { + name = single_combat.0001.guard + trigger = { exists = local_var:combat_move_guard_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.guard + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_guard_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_guard_effect = yes } + } + + stress_impact = { + patient = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + impatient = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_timid_personality_scripted_modifier = yes + } + } + + #Probing Attack + option = { + name = single_combat.0001.probing_attack + trigger = { exists = local_var:combat_move_probing_attack_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.probing_attack + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_probing_attack_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_probing_attack_effect = yes } + } + + # No stress for middle-ground standard options. + ai_chance = { + base = 100 + sce_rational_personality_scripted_modifier = yes + } + } + + #Onslaught + option = { + name = single_combat.0001.onslaught + trigger = { exists = local_var:combat_move_onslaught_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.onslaught + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_onslaught_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_onslaught_effect = yes } + } + + stress_impact = { + impatient = miniscule_stress_impact_loss + wrathful = miniscule_stress_impact_loss + patient = miniscule_stress_impact_gain + calm = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_aggressive_personality_scripted_modifier = yes + } + } + + #Surprise Attack + option = { + name = single_combat.0001.surprise_attack + trigger = { exists = local_var:combat_move_surprise_attack_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.surprise_attack + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_surprise_attack_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_surprise_attack_effect = yes } + } + + # No need for stress weighting here; fairly standard tactic that anyone would try. + ai_chance = { + base = 100 + sce_preferred_rational_personality_scripted_modifier = yes + } + } + + #Taunt + option = { + name = single_combat.0001.taunt + trigger = { exists = local_var:combat_move_taunt_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.taunt + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_taunt_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_taunt_effect = yes } + } + + stress_impact = { + callous = miniscule_stress_impact_loss + sadistic = miniscule_stress_impact_loss + compassionate = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_timid_personality_scripted_modifier = yes + } + } + + #Put the Boot In + option = { + name = single_combat.0001.put_the_boot_in + trigger = { exists = local_var:combat_move_put_the_boot_in_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.put_the_boot_in + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_put_the_boot_in_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_put_the_boot_in_effect = yes } + } + + stress_impact = { + impatient = miniscule_stress_impact_loss + brave = minor_stress_impact_loss + patient = miniscule_stress_impact_gain + craven = minor_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_aggressive_personality_scripted_modifier = yes + } + } + + #Strict Guard + option = { + name = single_combat.0001.strict_guard + trigger = { exists = local_var:combat_move_strict_guard_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.strict_guard + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_strict_guard_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_strict_guard_effect = yes } + } + + stress_impact = { + patient = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + impatient = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_timid_personality_scripted_modifier = yes + } + } + + #Confident Attack + option = { + name = single_combat.0001.confident_attack + trigger = { exists = local_var:combat_move_confident_attack_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.confident_attack + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_confident_attack_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_confident_attack_effect = yes } + } + + # No stress for middle-ground standard options. + ai_chance = { + base = 100 + sce_rational_personality_scripted_modifier = yes + } + } + + #Expert Onslaught + option = { + name = single_combat.0001.expert_onslaught + trigger = { exists = local_var:combat_move_expert_onslaught_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.expert_onslaught + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_expert_onslaught_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_expert_onslaught_effect = yes } + } + + stress_impact = { + impatient = miniscule_stress_impact_loss + wrathful = miniscule_stress_impact_loss + patient = miniscule_stress_impact_gain + calm = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_aggressive_personality_scripted_modifier = yes + } + } + + #Attempt Disarm + option = { + name = single_combat.0001.attempt_disarm + trigger = { exists = local_var:combat_move_attempt_disarm_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.attempt_disarm + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_attempt_disarm_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_attempt_disarm_effect = yes } + } + + stress_impact = { + patient = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + impatient = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_timid_personality_scripted_modifier = yes + } + } + + #Lightning Assault + option = { + name = single_combat.0001.lightning_assault + trigger = { exists = local_var:combat_move_lightning_assault_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.lightning_assault + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_lightning_assault_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_lightning_assault_effect = yes } + } + + stress_impact = { + impatient = miniscule_stress_impact_loss + diligent = miniscule_stress_impact_loss + patient = miniscule_stress_impact_gain + lazy = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_aggressive_personality_scripted_modifier = yes + } + } + + #Tire Opponent + option = { + name = single_combat.0001.tire_opponent + trigger = { exists = local_var:combat_move_tire_opponent_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.tire_opponent + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_tire_opponent_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_tire_opponent_effect = yes } + } + + stress_impact = { + diligent = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + lazy = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_rational_personality_scripted_modifier = yes + } + } + + #Reason You Suck Speech + option = { + name = single_combat.0001.reason_you_suck_speech + trigger = { exists = local_var:combat_move_reason_you_suck_speech_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.reason_you_suck_speech + + #Spawn Info + skill = diplomacy + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_reason_you_suck_speech_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_reason_you_suck_speech_effect = yes } + } + + stress_impact = { + callous = miniscule_stress_impact_loss + sadistic = miniscule_stress_impact_loss + gregarious = miniscule_stress_impact_loss + compassionate = miniscule_stress_impact_gain + shy = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_enjoys_arrogant_speeches_scripted_modifier = yes + } + } + + #Technique from Legend + option = { + name = single_combat.0001.technique_from_legend + trigger = { exists = local_var:combat_move_technique_from_legend_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.technique_from_legend + + #Spawn Info + skill = learning + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_technique_from_legend_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_technique_from_legend_effect = yes } + } + + stress_impact = { + brave = minor_stress_impact_loss + trusting = minor_stress_impact_loss # A trusting character *totally* believes the legends are both true and accurate! + craven = minor_stress_impact_gain + paranoid = minor_stress_impact_gain # Whereas a paranoid character is 99% sure they're bullshit, but is hoping against hope anyway. + } + ai_chance = { + base = 100 + sce_shrewd_fighter_scripted_modifier = yes + # Weight up relevant traits: scholar + modifier = { + add = sce_ai_mod_trait_weight_medium + has_trait = scholar + } + # Weight up relevant traits: theologian + modifier = { + add = sce_ai_mod_trait_weight_light + has_trait = theologian + } + } + } + + #Like a Viper + option = { + name = single_combat.0001.like_a_viper + trigger = { exists = local_var:combat_move_like_a_viper_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.like_a_viper + + #Spawn Info + skill = intrigue + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_like_a_viper_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_like_a_viper_effect = yes } + } + + stress_impact = { + deceitful = minor_stress_impact_loss + arbitrary = minor_stress_impact_loss + honest = minor_stress_impact_gain + just = minor_stress_impact_gain + } + ai_chance = { + base = 100 + sce_shrewd_fighter_scripted_modifier = yes + # Weight up relevant traits: schemer + modifier = { + add = sce_ai_mod_trait_weight_heavy + has_trait = schemer + } + # Weight up relevant traits: torturer + modifier = { + add = sce_ai_mod_trait_weight_medium + has_trait = torturer + } + } + } + + #Pocket Silver + option = { + name = single_combat.0001.pocket_silver + trigger = { exists = local_var:combat_move_pocket_silver_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.pocket_silver + + #Spawn Info + skill = stewardship + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_pocket_silver_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_pocket_silver_effect = yes } + } + + stress_impact = { + deceitful = miniscule_stress_impact_loss + arbitrary = miniscule_stress_impact_loss + generous = miniscule_stress_impact_loss + honest = miniscule_stress_impact_gain + just = miniscule_stress_impact_gain + greedy = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + ai_value_modifier = { ai_greed = -0.5 } + # Weight up relevant traits: avaricious + modifier = { + add = sce_ai_mod_trait_down_weight_medium + has_trait = avaricious + } + } + } + + #Martial Voice + option = { + name = single_combat.0001.martial_voice + trigger = { exists = local_var:combat_move_martial_voice_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.martial_voice + + #Spawn Info + skill = martial + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_martial_voice_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_martial_voice_effect = yes } + } + + stress_impact = { + callous = miniscule_stress_impact_loss + sadistic = miniscule_stress_impact_loss + gregarious = miniscule_stress_impact_loss + compassionate = miniscule_stress_impact_gain + shy = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_enjoys_arrogant_speeches_scripted_modifier = yes + # Weight up relevant traits: strategist + modifier = { + add = sce_ai_mod_trait_weight_medium + has_trait = strategist + } + } + } + + #Mocking Boast + option = { + name = single_combat.0001.mocking_boast + trigger = { exists = local_var:combat_move_mocking_boast_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.mocking_boast + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_mocking_boast_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_mocking_boast_effect = yes } + } + + stress_impact = { + callous = miniscule_stress_impact_loss + sadistic = miniscule_stress_impact_loss + arrogant = miniscule_stress_impact_loss + compassionate = miniscule_stress_impact_gain + humble = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_enjoys_arrogant_speeches_scripted_modifier = yes + } + } + + #Is that a Crocodile?! + option = { + name = single_combat.0001.is_that_a_crocodile + trigger = { exists = local_var:combat_move_is_that_a_crocodile_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.is_that_a_crocodile + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_is_that_a_crocodile_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_is_that_a_crocodile_effect = yes } + } + + # Though it might be stressful for your opponent, a crocodile is not stressful for you. + ai_chance = { + base = 300 + # If you get the good option, use the good option. + } + } + + #Desert Warrior + option = { + name = single_combat.0001.desert_warrior + trigger = { exists = local_var:combat_move_desert_warrior_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.desert_warrior + + #Spawn Info + trait = desert_warrior + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_desert_warrior_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_desert_warrior_effect = yes } + } + + stress_impact = { + diligent = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + lazy = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_shrewd_fighter_scripted_modifier = yes + } + } + + #Jungle Stalker + option = { + name = single_combat.0001.jungle_stalker + trigger = { exists = local_var:combat_move_jungle_stalker_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.jungle_stalker + + #Spawn Info + trait = jungle_stalker + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_jungle_stalker_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_jungle_stalker_effect = yes } + } + + stress_impact = { + diligent = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + lazy = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_shrewd_fighter_scripted_modifier = yes + } + } + + #Open Terrain Expert + option = { + name = single_combat.0001.open_terrain_expert + trigger = { exists = local_var:combat_move_open_terrain_expert_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.open_terrain_expert + + #Spawn Info + trait = open_terrain_expert + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_open_terrain_expert_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_open_terrain_expert_effect = yes } + } + + stress_impact = { + diligent = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + lazy = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_shrewd_fighter_scripted_modifier = yes + } + } + + #Rough Terrain Expert + option = { + name = single_combat.0001.rough_terrain_expert + trigger = { exists = local_var:combat_move_rough_terrain_expert_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.rough_terrain_expert + + #Spawn Info + trait = rough_terrain_expert + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_rough_terrain_expert_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_rough_terrain_expert_effect = yes } + } + + stress_impact = { + diligent = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + lazy = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_shrewd_fighter_scripted_modifier = yes + } + } + + #Forest Fighter + option = { + name = single_combat.0001.forest_fighter + trigger = { exists = local_var:combat_move_forest_fighter_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.forest_fighter + + #Spawn Info + trait = forest_fighter + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_forest_fighter_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_forest_fighter_effect = yes } + } + + stress_impact = { + diligent = miniscule_stress_impact_loss + calm = miniscule_stress_impact_loss + lazy = miniscule_stress_impact_gain + wrathful = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_shrewd_fighter_scripted_modifier = yes + } + } + + #RAAARGH! + option = { + name = single_combat.0001.raaargh + trigger = { exists = local_var:combat_move_raaargh_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.raaargh + + #Spawn Info + trait = berserker + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_raaargh_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_raaargh_effect = yes } + } + + # No stress for RAAARGH!, as it gives stress loss. + ai_chance = { + base = 100 + sce_preferred_shrewd_fighter_scripted_modifier = yes + } + } + + #Hard Grit + option = { + name = single_combat.0001.hard_grit + trigger = { exists = local_var:combat_move_hard_grit_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.hard_grit + + #Spawn Info + trait = shieldmaiden + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_hard_grit_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_hard_grit_effect = yes } + } + + # Loc here implies stoic professionalism, so doesn't seem fair to apply stress over that. + ai_chance = { + base = 100 + sce_preferred_shrewd_fighter_scripted_modifier = yes + } + } + + #Feint & Stab + option = { + name = single_combat.0001.feint_and_stab + trigger = { exists = local_var:combat_move_feint_and_stab_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.feint_and_stab + + #Spawn Info; use individual traits so that the unlock trait shows in the option UI. + trait = lifestyle_hunter + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_feint_and_stab_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_feint_and_stab_effect = yes } + } + + stress_impact = { + deceitful = minor_stress_impact_loss + arbitrary = minor_stress_impact_loss + honest = minor_stress_impact_gain + just = minor_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_shrewd_fighter_scripted_modifier = yes + } + } + + #Butchery + option = { + name = single_combat.0001.butchery + trigger = { exists = local_var:combat_move_butchery_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.butchery + + #Spawn Info + trait = viking + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_butchery_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_butchery_effect = yes } + } + + stress_impact = { + callous = minor_stress_impact_loss + sadistic = minor_stress_impact_loss + compassionate = minor_stress_impact_gain + } + ai_chance = { + base = 100 + sce_preferred_shrewd_fighter_scripted_modifier = yes + } + } + +# #Stoic Veteran +# option = { +# name = { +# trigger = { +# NOT = { +# scope:my_foe = { has_trait = varangian } +# } +# } +# text = single_combat.0001.stoic_veteran.general +# } +# name = { +# trigger = { +# scope:my_foe = { has_trait = varangian } +# } +# text = single_combat.0001.stoic_veteran.other_varangian +# } +# trigger = { exists = local_var:combat_move_stoic_veteran_flag } +# +# #Move clarification +# custom_tooltip = single_combat.0001.tt.stoic_veteran +# +# #Spawn Info +# trait = varangian +# +# #Move effects +# ## First, we show the move's effects with no guff. +# show_as_tooltip = { combat_move_stoic_veteran_effect = yes } +# ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. +# if = { +# limit = { +# scope:my_foe = { is_alive = yes } +# } +# hidden_effect = { combat_move_stoic_veteran_effect = yes } +# } +# +# # Loc here implies stoic professionalism, so doesn't seem fair to apply stress over that. +# ai_chance = { +# base = 100 +# sce_preferred_shrewd_fighter_scripted_modifier = yes +# } +# } + + #Blade Dance + option = { + name = { + text = single_combat.0001.blade_dance + trigger = { is_landed = yes } + } + name = { + text = single_combat.0001.blade_dance_unlanded + trigger = { is_landed = no } + } + trigger = { exists = local_var:combat_move_blade_dance_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.blade_dance + + #Spawn Info; use individual traits so that the unlock trait shows in the option UI. + trait = lifestyle_blademaster + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_blade_dance_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_blade_dance_effect = yes } + } + + # No appropriate stress loss for blade dance; arguably arrogant, as we portray them as haughty in the loc, but it's a bit mean to both hit the player verbally and mechanically for something that's up for interpretation. + ai_chance = { + base = 100 + sce_preferred_shrewd_fighter_scripted_modifier = yes + } + } + + #Wrath of [HighGod] + option = { + name = single_combat.0001.wrath_of_highgod + trigger = { exists = local_var:combat_move_wrath_of_highgod_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.wrath_of_highgod + + #Spawn Info + trait = zealous + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_wrath_of_highgod_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_wrath_of_highgod_effect = yes } + } + + stress_impact = { + # Takes a bold human to stop fighting entirely and pray, however loudly, in the middle of a duel. + craven = miniscule_stress_impact_loss + brave = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_enjoys_arrogant_speeches_scripted_modifier = yes + } + } + + #Hurt Me Better + option = { + name = single_combat.0001.hurt_me_better + trigger = { exists = local_var:combat_move_hurt_me_better_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.hurt_me_better + + #Spawn Info + trait = deviant + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_hurt_me_better_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_hurt_me_better_effect = yes } + } + + # We draw the line at stress loss/gain for lustful/chaste: we're already being a bit mean to deviant characters here, no need to ramp up the Hellraiser vibes *that* much. + ai_chance = { + base = 100 + sce_shrewd_fighter_scripted_modifier = yes + } + } + + #Special Fallback: kick 'em in the shin + option = { + name = single_combat.0001.special_fallback + trigger = { exists = local_var:combat_move_special_fallback_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.special_fallback + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_special_fallback_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_special_fallback_effect = yes } + } + + # Shins, and the kicking thereof, have no particularly stressful effects on the human psyche. + ai_chance = { + base = 100 + # Errr... I can't even begin to imagine how you'd set AI preferences for this. + } + } + + #Something to Hide + option = { + name = single_combat.0001.something_to_hide + trigger = { exists = local_var:combat_move_something_to_hide_flag } + + #Move clarification + custom_tooltip = single_combat.0001.tt.something_to_hide + + #Move effects + ## First, we show the move's effects with no guff. + show_as_tooltip = { combat_move_something_to_hide_effect = yes } + ## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat. + if = { + limit = { + scope:my_foe = { is_alive = yes } + } + hidden_effect = { combat_move_something_to_hide_effect = yes } + } + + stress_impact = { + deceitful = miniscule_stress_impact_loss + arbitrary = miniscule_stress_impact_loss + honest = miniscule_stress_impact_gain + just = miniscule_stress_impact_gain + } + ai_chance = { + base = 100 + sce_enjoys_arrogant_speeches_scripted_modifier = yes + # Weight up relevant traits: schemer + modifier = { + add = sce_ai_mod_trait_weight_light + has_trait = schemer + } + } + } + + #Work out the post-event effects. + after = { + # First, see if the next round is still valid. + if = { + limit = { + OR = { + scope:sc_attacker = { is_alive = no } + scope:sc_defender = { is_alive = no } + } + } + # First, clean up assorted things around the duels. + hidden_effect = { remove_single_combat_info_effect = yes } + # Then manually clear the duelling flag. + scope:sc_defender = { + if = { + # Restrict to live characters to prevent errors. + limit = { is_alive = yes } + remove_variable = engaged_in_single_combat + } + } + scope:sc_attacker = { + if = { + # Restrict to live characters to prevent errors. + limit = { is_alive = yes } + remove_variable = engaged_in_single_combat + } + } + # Finally, fire the invalidation cleanup event. + scope:sc_attacker = { + #trigger_event = { saved_event_id = scope:invalidation_event } + trigger_event = single_combat.1006 + } + } + # Otherwise, we can go through the usual flow. + else = { + #If either character has had an edge modifier added, update character skills to account for duel edge stuff. + scope:sc_attacker = { + if = { + limit = { has_character_flag = sce_needs_forced_recalc_flag } + force_character_skill_recalculation = yes + remove_character_flag = sce_needs_forced_recalc_flag + } + } + scope:sc_defender = { + if = { + limit = { has_character_flag = sce_needs_forced_recalc_flag } + force_character_skill_recalculation = yes + remove_character_flag = sce_needs_forced_recalc_flag + } + } + #Calculate injury risks for descs. + calculate_injury_risks_effect = yes + #And success chances. + calculate_success_chances_effect = yes + #If we're scope:sc_defender, send scope:sc_attacker their instance of the event. + if = { + limit = { this = scope:sc_defender } + scope:sc_attacker = { trigger_event = single_combat.0001 } + } + #Otherwise we're scope:sc_attacker, so end the round. + else = { trigger_event = single_combat.0021 } + } + } +} + +################################################## +# Round End Events +# by Ewan Cowhig Croft +# 0021 - 0030 +################################################## + +# Standard round end event. +single_combat.0021 = { + hidden = yes + + immediate = { + # Check what round we're at, and reduce the threshold variables as appropriate if we're in a late enough round. + ## Reduce injury thresholds for both characters. + if = { + limit = { scope:sc_defender.var:current_round = round_injury_bonus_lower } + debug_log = "single combat variable error-check: round_injury_bonus_lower" + debug_log_scopes = yes + change_variable = { + name = sc_attacker_injury_bonus + add = round_injury_adjustment_lower + } + scope:sc_defender = { + change_variable = { + name = sc_defender_injury_bonus + add = round_injury_adjustment_lower + } + } + } + if = { + limit = { scope:sc_defender.var:current_round = round_injury_bonus_lowest } + debug_log = "single combat variable error-check: round_injury_bonus_lowest" + debug_log_scopes = yes + change_variable = { + name = sc_attacker_injury_bonus + add = round_injury_adjustment_lowest + } + scope:sc_defender = { + change_variable = { + name = sc_defender_injury_bonus + add = round_injury_adjustment_lowest + } + } + } + ## Reduce success threshold. + if = { + limit = { scope:sc_defender.var:current_round = round_success_threshold_lower } + debug_log = "single combat variable error-check: round_success_threshold_lower" + debug_log_scopes = yes + scope:sc_defender = { + change_variable = { + name = success_threshold + add = round_success_adjustment_lower + } + } + } + if = { + limit = { scope:sc_defender.var:current_round = round_success_threshold_lowest } + debug_log = "single combat variable error-check: round_success_threshold_lowest" + debug_log_scopes = yes + scope:sc_defender = { + change_variable = { + name = success_threshold + add = round_success_adjustment_lowest + } + } + } + # Check to see if either character has achieved a suitable success score. + calculate_success_chances_effect = yes + ## Check scope:sc_attacker first, seeing if they have more success chance than the minimum threshold for victory. + if = { + limit = { + scope:sc_attacker.var:sc_attacker_success_check >= scope:sc_defender.var:success_threshold + # Excepting things if the match is fixed. + NOT = { scope:fixed = flag:sc_defender } + } + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_attacker = { save_scope_as = sc_victor } + scope:sc_defender = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:skill + } + } + ## Then check scope:sc_defender, performing the same calculation in reverse. + else_if = { + limit = { + scope:sc_defender.var:sc_defender_success_check >= scope:sc_defender.var:success_threshold + # Excepting things if the match is fixed. + NOT = { scope:fixed = flag:sc_attacker } + } + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_defender = { save_scope_as = sc_victor } + scope:sc_attacker = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:skill + } + } + # If we have no victor yet, and we're past the first round, look at injuries. + ## Set up injury risks for this round; we do this regardless, since we look at these to work out injury chances for the desc block. + calculate_injury_risks_effect = yes + if = { + limit = { + NOT = { exists = scope:sc_finished } + scope:sc_defender.var:current_round > 1 + } + # Check scope:sc_attacker to see if they can injure themselves due to having more risk than success. + if = { + limit = { + scope:sc_attacker.var:sc_attacker_injury_risk_check >= scope:sc_attacker.var:sc_attacker_duel_success_score + # Excepting things if the match is fixed. + NOT = { scope:fixed = flag:sc_defender } + } + random = { + chance = { + value = 0 + add = scope:sc_attacker.var:sc_attacker_injury_risk_check + subtract = scope:sc_attacker.var:sc_attacker_duel_success_score + } + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_defender = { save_scope_as = sc_victor } + scope:sc_attacker = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:mistake + } + } + } + # Then check scope:sc_defender in the same fashion. + if = { + limit = { + scope:sc_defender.var:sc_defender_injury_risk_check >= scope:sc_defender.var:sc_defender_duel_success_score + # Excepting things if the match is fixed. + NOT = { scope:fixed = flag:sc_attacker } + } + random = { + chance = { + value = 0 + add = scope:sc_defender.var:sc_defender_injury_risk_check + subtract = scope:sc_defender.var:sc_defender_duel_success_score + } + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_attacker = { save_scope_as = sc_victor } + scope:sc_defender = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:mistake + } + } + } + } + # If we now have a victor, work out the cleanup. + if = { + limit = { exists = scope:sc_finished } + finalise_combat_results_effect = yes + } + # If we don't, and this round is at or over the round_cap_limit, enter into sudden death. + else_if = { + limit = { scope:sc_defender.var:current_round >= round_cap_limit } + # Has the match been fixed? + ## ... for scope:sc_attacker. + if = { + limit = { scope:fixed = flag:sc_attacker } + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_attacker = { save_scope_as = sc_victor } + scope:sc_defender = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:sudden_death + } + } + ## ... for scope:sc_defender. + else_if = { + limit = { scope:fixed = flag:sc_defender } + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_defender = { save_scope_as = sc_victor } + scope:sc_attacker = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:sudden_death + } + } + # If scope:sc_attacker has the highest prowess, then they win. + else_if = { + limit = { scope:sc_attacker.prowess > scope:sc_defender.prowess } + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_attacker = { save_scope_as = sc_victor } + scope:sc_defender = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:sudden_death + } + } + # If scope:sc_defender has the highest prowess, then *they* win. + else_if = { + limit = { scope:sc_defender.prowess > scope:sc_attacker.prowess } + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_defender = { save_scope_as = sc_victor } + scope:sc_attacker = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:sudden_death + } + } + # Otherwise, their prowess must be even, so we do a toss-up. + else = { + random_list = { + #Scope:sc_attacker wins. + 50 = { + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_attacker = { save_scope_as = sc_victor } + scope:sc_defender = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:sudden_death + } + } + #Scope:sc_defender wins. + 50 = { + save_scope_value_as = { + name = sc_finished + value = yes + } + scope:sc_defender = { save_scope_as = sc_victor } + scope:sc_attacker = { save_scope_as = sc_loser } + save_scope_value_as = { + name = victory_type + value = flag:sudden_death + } + } + } + } + #Sort the end of combat. + finalise_combat_results_effect = yes + } + # If we don't, and we've not yet hit the round_cap_limit, increment the round_number & fire off the next round. + else = { + scope:sc_defender = { + # We change the round number right at the end, so that it doesn't mess up any calculations elsewhere. + change_variable = { + name = current_round + add = 1 + } + trigger_event = single_combat.0001 + } + } + } +} + +################################################## +# Results Events +# by Ewan Cowhig Croft +# 0031 - 0050 +################################################## + +scripted_effect sce_loser_end_result_tooltip_effect = { + #Clarify the results. + if = { + limit = { scope:victory_type = flag:skill } + custom_tooltip = single_combat.0031.desc.result.skill + } + else_if = { + limit = { scope:victory_type = flag:mistake } + custom_tooltip = single_combat.0031.desc.result.mistake + } + else_if = { + limit = { scope:victory_type = flag:sudden_death } + custom_tooltip = single_combat.0031.desc.result.sudden_death + } +} + +scripted_effect sce_victor_end_result_tooltip_effect = { + #Clarify the results. + if = { + limit = { scope:victory_type = flag:skill } + custom_tooltip = single_combat.0041.desc.result.skill + } + else_if = { + limit = { scope:victory_type = flag:mistake } + custom_tooltip = single_combat.0041.desc.result.mistake + } + else_if = { + limit = { scope:victory_type = flag:sudden_death } + custom_tooltip = single_combat.0041.desc.result.sudden_death + } +} + +# scope:sc_loser's confirmation event. +single_combat.0031 = { + type = character_event + window = duel_event + title = single_combat.0031.t + desc = { + first_valid = { + # Are we in scope:sc_defender's POV? + triggered_desc = { + trigger = { this = scope:sc_defender } + desc = { + # Our POV tells us that we did X. + triggered_desc = { + #This trigger should always exist, but the desc structure is required for code reasons. + trigger = { always = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:wait_and_hope } + desc = single_combat.0031.desc.sc_defender.wait_and_hope + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:unsure_attack } + desc = single_combat.0031.desc.sc_defender.unsure_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0031.desc.sc_defender.enthusiastic_onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hail_mary } + desc = single_combat.0031.desc.sc_defender.hail_mary + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:pocket_sand } + desc = single_combat.0031.desc.sc_defender.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:nut_em } + desc = single_combat.0031.desc.sc_defender.nut_em + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:guard } + desc = single_combat.0031.desc.sc_defender.guard + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:probing_attack } + desc = single_combat.0031.desc.sc_defender.probing_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:onslaught } + desc = single_combat.0031.desc.sc_defender.onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:surprise_attack } + desc = single_combat.0031.desc.sc_defender.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:taunt } + desc = single_combat.0031.desc.sc_defender.taunt + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:put_the_boot_in } + desc = single_combat.0031.desc.sc_defender.put_the_boot_in + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:strict_guard } + desc = single_combat.0031.desc.sc_defender.strict_guard + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:confident_attack } + desc = single_combat.0031.desc.sc_defender.confident_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:expert_onslaught } + desc = single_combat.0031.desc.sc_defender.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:attempt_disarm } + desc = single_combat.0031.desc.sc_defender.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:tire_opponent } + desc = single_combat.0031.desc.sc_defender.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:reason_you_suck_speech } + desc = single_combat.0031.desc.sc_defender.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:technique_from_legend } + desc = single_combat.0031.desc.sc_defender.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:like_a_viper } + desc = single_combat.0031.desc.sc_defender.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:pocket_silver } + desc = single_combat.0031.desc.sc_defender.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:martial_voice } + desc = single_combat.0031.desc.sc_defender.martial_voice + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:mocking_boast } + desc = single_combat.0031.desc.sc_defender.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:is_that_a_crocodile } + desc = single_combat.0031.desc.sc_defender.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:desert_warrior } + desc = single_combat.0031.desc.sc_defender.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:jungle_stalker } + desc = single_combat.0031.desc.sc_defender.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:open_terrain_expert } + desc = single_combat.0031.desc.sc_defender.open_terrain_expert + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:rough_terrain_expert } + desc = single_combat.0031.desc.sc_defender.rough_terrain_expert + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:forest_fighter } + desc = single_combat.0031.desc.sc_defender.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:raaargh } + desc = single_combat.0031.desc.sc_defender.raaargh + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hard_grit } + desc = single_combat.0031.desc.sc_defender.hard_grit + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:feint_and_stab } + desc = single_combat.0031.desc.sc_defender.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:butchery } + desc = single_combat.0031.desc.sc_defender.butchery + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:stoic_veteran } + desc = single_combat.0031.desc.sc_defender.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:blade_dance } + desc = single_combat.0031.desc.sc_defender.blade_dance + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:wrath_of_highgod } + desc = single_combat.0031.desc.sc_defender.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hurt_me_better } + desc = single_combat.0031.desc.sc_defender.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:special_fallback } + desc = single_combat.0031.desc.sc_defender.special_fallback + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:something_to_hide } + desc = single_combat.0031.desc.sc_defender.something_to_hide + } + } + } + } + # And scope:sc_attacker successfully countered with Y. + triggered_desc = { + #This trigger should always exist, but the desc structure is required for code reasons. + trigger = { always = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0031.desc.opponent_response.wait_and_hope + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0031.desc.opponent_response.unsure_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0031.desc.opponent_response.enthusiastic_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0031.desc.opponent_response.hail_mary + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0031.desc.opponent_response.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0031.desc.opponent_response.nut_em + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0031.desc.opponent_response.guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0031.desc.opponent_response.probing_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0031.desc.opponent_response.onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0031.desc.opponent_response.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0031.desc.opponent_response.taunt + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0031.desc.opponent_response.put_the_boot_in + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0031.desc.opponent_response.strict_guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0031.desc.opponent_response.confident_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0031.desc.opponent_response.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0031.desc.opponent_response.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0031.desc.opponent_response.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0031.desc.opponent_response.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0031.desc.opponent_response.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0031.desc.opponent_response.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0031.desc.opponent_response.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0031.desc.opponent_response.martial_voice + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0031.desc.opponent_response.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0031.desc.opponent_response.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0031.desc.opponent_response.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0031.desc.opponent_response.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0031.desc.opponent_response.open_terrain_expert + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:rough_terrain_expert } + desc = single_combat.0031.desc.opponent_response.rough_terrain_expert + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0031.desc.opponent_response.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0031.desc.opponent_response.raaargh + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0031.desc.opponent_response.hard_grit + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0031.desc.opponent_response.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0031.desc.opponent_response.butchery + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0031.desc.opponent_response.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0031.desc.opponent_response.blade_dance + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0031.desc.opponent_response.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0031.desc.opponent_response.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0031.desc.opponent_response.special_fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0031.desc.opponent_response.something_to_hide + } + } + } + } + # Leading to Z-1: injury. + triggered_desc = { + trigger = { duel_will_end_in_my_death_trigger = no } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0031.desc.opponent_response.wait_and_hope.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0031.desc.opponent_response.unsure_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0031.desc.opponent_response.enthusiastic_onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0031.desc.opponent_response.hail_mary.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0031.desc.opponent_response.pocket_sand.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0031.desc.opponent_response.nut_em.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0031.desc.opponent_response.guard.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0031.desc.opponent_response.probing_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0031.desc.opponent_response.onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0031.desc.opponent_response.surprise_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0031.desc.opponent_response.taunt.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0031.desc.opponent_response.put_the_boot_in.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0031.desc.opponent_response.strict_guard.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0031.desc.opponent_response.confident_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0031.desc.opponent_response.expert_onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0031.desc.opponent_response.attempt_disarm.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0031.desc.opponent_response.tire_opponent.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0031.desc.opponent_response.reason_you_suck_speech.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0031.desc.opponent_response.technique_from_legend.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0031.desc.opponent_response.like_a_viper.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0031.desc.opponent_response.pocket_silver.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0031.desc.opponent_response.martial_voice.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0031.desc.opponent_response.mocking_boast.injury + } + # No need for an is_that_a_crocodile, as it's never just an injury. + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0031.desc.opponent_response.desert_warrior.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0031.desc.opponent_response.jungle_stalker.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0031.desc.opponent_response.open_terrain_expert.injury + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0031.desc.opponent_response.rough_terrain_expert.injury.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0031.desc.opponent_response.rough_terrain_expert.injury.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0031.desc.opponent_response.forest_fighter.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0031.desc.opponent_response.raaargh.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0031.desc.opponent_response.hard_grit.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0031.desc.opponent_response.feint_and_stab.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0031.desc.opponent_response.butchery.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0031.desc.opponent_response.stoic_veteran.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0031.desc.opponent_response.blade_dance.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0031.desc.opponent_response.wrath_of_highgod.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0031.desc.opponent_response.hurt_me_better.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0031.desc.opponent_response.special_fallback.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0031.desc.opponent_response.something_to_hide.injury + } + } + } + } + # Or Z-2: death. + triggered_desc = { + trigger = { duel_will_end_in_my_death_trigger = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0031.desc.opponent_response.wait_and_hope.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0031.desc.opponent_response.unsure_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0031.desc.opponent_response.enthusiastic_onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0031.desc.opponent_response.hail_mary.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0031.desc.opponent_response.pocket_sand.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0031.desc.opponent_response.nut_em.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0031.desc.opponent_response.guard.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0031.desc.opponent_response.probing_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0031.desc.opponent_response.onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0031.desc.opponent_response.surprise_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0031.desc.opponent_response.taunt.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0031.desc.opponent_response.put_the_boot_in.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0031.desc.opponent_response.strict_guard.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0031.desc.opponent_response.confident_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0031.desc.opponent_response.expert_onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0031.desc.opponent_response.attempt_disarm.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0031.desc.opponent_response.tire_opponent.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0031.desc.opponent_response.reason_you_suck_speech.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0031.desc.opponent_response.technique_from_legend.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0031.desc.opponent_response.like_a_viper.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0031.desc.opponent_response.pocket_silver.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0031.desc.opponent_response.martial_voice.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0031.desc.opponent_response.mocking_boast.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0031.desc.opponent_response.is_that_a_crocodile.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0031.desc.opponent_response.desert_warrior.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0031.desc.opponent_response.jungle_stalker.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0031.desc.opponent_response.open_terrain_expert.fatality + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0031.desc.opponent_response.rough_terrain_expert.fatality.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0031.desc.opponent_response.rough_terrain_expert.fatality.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0031.desc.opponent_response.forest_fighter.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0031.desc.opponent_response.raaargh.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0031.desc.opponent_response.hard_grit.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0031.desc.opponent_response.feint_and_stab.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0031.desc.opponent_response.butchery.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0031.desc.opponent_response.stoic_veteran.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0031.desc.opponent_response.blade_dance.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0031.desc.opponent_response.wrath_of_highgod.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0031.desc.opponent_response.hurt_me_better.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0031.desc.opponent_response.special_fallback.fatality + } + # No need for a something_to_hide, as it's never fatal. + } + } + } + } + } + # Or scope:sc_attacker's? + triggered_desc = { + trigger = { this = scope:sc_attacker } + desc = { + # Our POV tells us that we went straight in with Y. + triggered_desc = { + #This trigger should always exist, but the desc structure is required for code reasons. + trigger = { always = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0031.desc.sc_attacker.wait_and_hope + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0031.desc.sc_attacker.unsure_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0031.desc.sc_attacker.enthusiastic_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0031.desc.sc_attacker.hail_mary + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0031.desc.sc_attacker.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0031.desc.sc_attacker.nut_em + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0031.desc.sc_attacker.guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0031.desc.sc_attacker.probing_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0031.desc.sc_attacker.onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0031.desc.sc_attacker.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0031.desc.sc_attacker.taunt + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:put_the_boot_in + has_trait = one_legged + } + desc = single_combat.0031.desc.sc_attacker.put_the_boot_in.peg_leg + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0031.desc.sc_attacker.put_the_boot_in.fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0031.desc.sc_attacker.strict_guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0031.desc.sc_attacker.confident_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0031.desc.sc_attacker.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0031.desc.sc_attacker.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0031.desc.sc_attacker.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0031.desc.sc_attacker.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0031.desc.sc_attacker.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0031.desc.sc_attacker.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0031.desc.sc_attacker.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0031.desc.sc_attacker.martial_voice + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0031.desc.sc_attacker.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0031.desc.sc_attacker.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0031.desc.sc_attacker.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0031.desc.sc_attacker.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0031.desc.sc_attacker.open_terrain_expert + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0031.desc.sc_attacker.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0031.desc.sc_attacker.raaargh + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0031.desc.sc_attacker.hard_grit + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0031.desc.sc_attacker.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0031.desc.sc_attacker.butchery + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0031.desc.sc_attacker.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0031.desc.sc_attacker.blade_dance + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0031.desc.sc_attacker.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0031.desc.sc_attacker.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0031.desc.sc_attacker.special_fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0031.desc.sc_attacker.something_to_hide + } + } + } + } + # Leading to Z-1: injury. + triggered_desc = { + trigger = { duel_will_end_in_my_death_trigger = no } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0031.desc.sc_attacker.wait_and_hope.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0031.desc.sc_attacker.unsure_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0031.desc.sc_attacker.enthusiastic_onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0031.desc.sc_attacker.hail_mary.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0031.desc.sc_attacker.pocket_sand.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0031.desc.sc_attacker.nut_em.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0031.desc.sc_attacker.guard.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0031.desc.sc_attacker.probing_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0031.desc.sc_attacker.onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0031.desc.sc_attacker.surprise_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0031.desc.sc_attacker.taunt.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0031.desc.sc_attacker.put_the_boot_in.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0031.desc.sc_attacker.strict_guard.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0031.desc.sc_attacker.confident_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0031.desc.sc_attacker.expert_onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0031.desc.sc_attacker.attempt_disarm.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0031.desc.sc_attacker.tire_opponent.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0031.desc.sc_attacker.reason_you_suck_speech.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0031.desc.sc_attacker.technique_from_legend.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0031.desc.sc_attacker.like_a_viper.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0031.desc.sc_attacker.pocket_silver.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0031.desc.sc_attacker.martial_voice.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0031.desc.sc_attacker.mocking_boast.injury + } + # No need for an is_that_a_crocodile, as it's never just an injury. + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0031.desc.sc_attacker.desert_warrior.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0031.desc.sc_attacker.jungle_stalker.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0031.desc.sc_attacker.open_terrain_expert.injury + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.injury.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.injury.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0031.desc.sc_attacker.forest_fighter.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0031.desc.sc_attacker.raaargh.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0031.desc.sc_attacker.hard_grit.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0031.desc.sc_attacker.feint_and_stab.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0031.desc.sc_attacker.butchery.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0031.desc.sc_attacker.stoic_veteran.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0031.desc.sc_attacker.blade_dance.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0031.desc.sc_attacker.wrath_of_highgod.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0031.desc.sc_attacker.hurt_me_better.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0031.desc.sc_attacker.special_fallback.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0031.desc.sc_attacker.something_to_hide.injury + } + } + } + } + # Or Z-2: death. + triggered_desc = { + trigger = { duel_will_end_in_my_death_trigger = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0031.desc.sc_attacker.wait_and_hope.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0031.desc.sc_attacker.unsure_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0031.desc.sc_attacker.enthusiastic_onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0031.desc.sc_attacker.hail_mary.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0031.desc.sc_attacker.pocket_sand.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0031.desc.sc_attacker.nut_em.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0031.desc.sc_attacker.guard.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0031.desc.sc_attacker.probing_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0031.desc.sc_attacker.onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0031.desc.sc_attacker.surprise_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0031.desc.sc_attacker.taunt.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0031.desc.sc_attacker.put_the_boot_in.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0031.desc.sc_attacker.strict_guard.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0031.desc.sc_attacker.confident_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0031.desc.sc_attacker.expert_onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0031.desc.sc_attacker.attempt_disarm.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0031.desc.sc_attacker.tire_opponent.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0031.desc.sc_attacker.reason_you_suck_speech.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0031.desc.sc_attacker.technique_from_legend.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0031.desc.sc_attacker.like_a_viper.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0031.desc.sc_attacker.pocket_silver.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0031.desc.sc_attacker.martial_voice.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0031.desc.sc_attacker.mocking_boast.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0031.desc.sc_attacker.is_that_a_crocodile.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0031.desc.sc_attacker.desert_warrior.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0031.desc.sc_attacker.jungle_stalker.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0031.desc.sc_attacker.open_terrain_expert.fatality + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.fatality.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.fatality.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0031.desc.sc_attacker.forest_fighter.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0031.desc.sc_attacker.raaargh.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0031.desc.sc_attacker.hard_grit.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0031.desc.sc_attacker.feint_and_stab.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0031.desc.sc_attacker.butchery.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0031.desc.sc_attacker.stoic_veteran.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0031.desc.sc_attacker.blade_dance.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0031.desc.sc_attacker.wrath_of_highgod.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0031.desc.sc_attacker.hurt_me_better.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0031.desc.sc_attacker.special_fallback.fatality + } + # No need for a something_to_hide, as it's never fatal. + } + } + } + } + } + } + } + theme = skull + left_portrait = { + character = scope:sc_loser + triggered_animation = { + trigger = { portrait_should_wield_sword_trigger = yes } + animation = sword_yield_start + } + animation = pain + } + right_portrait = { + character = scope:sc_victor + scripted_animation = duel_celebrate + } + # Background Logic + override_background = { + trigger = { scope:locale = flag:terrain_scope } + reference = terrain_scope + } + override_background = { + trigger = { scope:locale = flag:battlefield } + reference = battlefield + } + override_background = { + trigger = { scope:locale = flag:alley_night } + reference = alley_night + } + override_background = { + trigger = { scope:locale = flag:alley_day } + reference = alley_day + } + override_background = { + trigger = { scope:locale = flag:temple } + reference = temple + } + override_background = { + trigger = { scope:locale = flag:corridor_night } + reference = corridor_night + } + override_background = { + trigger = { scope:locale = flag:corridor_day } + reference = corridor_day + } + override_background = { + trigger = { scope:locale = flag:courtyard } + reference = courtyard + } + override_background = { + trigger = { scope:locale = flag:dungeon } + reference = dungeon + } + override_background = { + trigger = { scope:locale = flag:docks } + reference = docks + } + override_background = { + trigger = { scope:locale = flag:feast } + reference = feast + } + override_background = { + trigger = { scope:locale = flag:market } + reference = market + } + override_background = { + trigger = { scope:locale = flag:tavern } + reference = tavern + } + override_background = { + trigger = { scope:locale = flag:throne_room } + reference = throne_room + } + override_background = { + trigger = { scope:locale = flag:army_camp } + reference = army_camp + } + + immediate = { + #Death/wounding enacted elsewhere. + if = { + limit = { duel_will_end_in_my_death_trigger = yes } + show_as_tooltip = { + death = { + killer = scope:sc_victor + death_reason = death_duel + } + } + } + else_if = { + limit = { scope:fatality = flag:practice } + # If we're only practicing, there's no harm done. + custom_tooltip = single_combat.result.tt.practice_no_wounds + } + else = { + show_as_tooltip = { + increase_wounds_no_death_effect = { REASON = duel } + } + } + # Add Tournament Trait XP + if = { + limit = { has_trait = tourney_participant } + add_trait_xp = { + trait = tourney_participant + track = foot + value = { 1 3 } + } + } + scope:sc_loser = { + every_vassal = { + limit = { + has_vassal_stance = belligerent + } + add_opinion = { + modifier = liege_lost_duel + target = scope:sc_loser + } + } + } + #Acknowledge loss of temporary combat modifiers. + custom_tooltip = single_combat.result.tt.temporary_modifiers_removed + # Damage equipped artifacts for loser + may_damage_artifact_effect = { + TYPE = primary_armament + CHANCE = 66 # 33% chance of no damage + PERCENT = 15 # 5-15 percent of max durability lost + } + may_damage_artifact_effect = { + TYPE = armor + CHANCE = 66 # 33% chance of no damage + PERCENT = 15 # 5-15 percent of max durability lost + } + #Nomads fighting upstart family members event + if = { + limit = { + scope:sc_loser = { + has_character_flag = duelling_defecting_family_flag + this = scope:sc_attacker + } + } + scope:sc_loser = { + set_designated_heir = scope:sc_victor + remove_character_flag = duelling_defecting_family_flag + } + } + } + + # I die! + option = { + # Standard death-scream. + name = { + trigger = { scope:death_rattle = flag:scream } + text = single_combat.0031.a.scream + } + # Wordless death. + name = { + trigger = { scope:death_rattle = flag:wordless } + text = single_combat.0031.a.wordless + } + # Muffled death. + name = { + trigger = { scope:death_rattle = flag:muffled } + text = single_combat.0031.a.muffled + } + # Choking death. + name = { + trigger = { scope:death_rattle = flag:choking } + text = single_combat.0031.a.choking + } + # Pleading death. + name = { + trigger = { scope:death_rattle = flag:pleading_screams } + text = single_combat.0031.a.pleading + } + # Soulmate death. + name = { + trigger = { scope:death_rattle = flag:soulmate } + text = single_combat.0031.a.soulmate + } + # Sinner death. + name = { + trigger = { scope:death_rattle = flag:sinner } + text = single_combat.0031.a.sinner + } + # Saint death. + name = { + trigger = { scope:death_rattle = flag:saint } + text = single_combat.0031.a.saint + } + # Legend death. + name = { + trigger = { scope:death_rattle = flag:legend } + text = single_combat.0031.a.legend + } + # Valhalla death. + name = { + trigger = { scope:death_rattle = flag:valhalla } + text = single_combat.0031.a.valhalla + } + # Best Friend death. + name = { + trigger = { scope:death_rattle = flag:best_friend } + text = single_combat.0031.a.best_friend + } + # Killed by rival death. + name = { + trigger = { scope:death_rattle = flag:killed_by_rival } + text = single_combat.0031.a.killed_by_rival + } + # Killed by nemesis death. + name = { + trigger = { scope:death_rattle = flag:killed_by_nemesis } + text = single_combat.0031.a.killed_by_nemesis + } + # Killed by spouse death. + name = { + trigger = { scope:death_rattle = flag:killed_by_spouse } + text = single_combat.0031.a.killed_by_spouse + } + # Killed by your HoF death. + name = { + trigger = { scope:death_rattle = flag:killed_by_your_head_of_faith } + text = single_combat.0031.a.killed_by_your_head_of_faith + } + # Killed by another HoF death. + name = { + trigger = { scope:death_rattle = flag:killed_by_another_head_of_faith } + text = single_combat.0031.a.killed_by_another_head_of_faith + } + # Killed by cultural head death. + name = { + trigger = { scope:death_rattle = flag:killed_by_cultural_head } + text = single_combat.0031.a.killed_by_cultural_head + } + # Killed by house head death. + name = { + trigger = { scope:death_rattle = flag:killed_by_house_head } + text = single_combat.0031.a.killed_by_house_head + } + # Killed by dynasty head death. + name = { + trigger = { scope:death_rattle = flag:killed_by_dynasty_head } + text = single_combat.0031.a.killed_by_dynasty_head + } + # Killed by close or extended family death. + name = { + trigger = { scope:death_rattle = flag:killed_by_close_or_extended_family } + text = single_combat.0031.a.killed_by_close_or_extended_family + } + # Killed by friend or lover. + name = { + trigger = { scope:death_rattle = flag:killed_by_friend_or_lover } + text = single_combat.0031.a.killed_by_friend_or_lover + } + # Killed by soulmate. + name = { + trigger = { scope:death_rattle = flag:killed_by_soulmate } + text = single_combat.0031.a.killed_by_soulmate + } + # Killed by best friend. + name = { + trigger = { scope:death_rattle = flag:killed_by_best_friend } + text = single_combat.0031.a.killed_by_best_friend + } + trigger = { duel_will_end_in_my_death_trigger = yes } + + #Confirmation of the duel ending & explanation. + sce_loser_end_result_tooltip_effect = yes + + #No stress for single-option events. + #No AI chance needed for single-option events. + } + + # Yield! Yield! + option = { + name = single_combat.0031.b + trigger = { duel_will_end_in_my_death_trigger = no } + + #Confirmation of the duel ending & explanation. + sce_loser_end_result_tooltip_effect = yes + + #No stress involved, as we don't want to force rivalries out of every duel. + ai_chance = { + base = 100 + ai_value_modifier = { + ai_vengefulness = -0.75 + ai_energy = -0.25 + } + } + } + + # You will rue the day you messed with scope:sc_loser! + option = { + name = single_combat.0031.c + trigger = { duel_will_end_in_my_death_trigger = no } + + #Confirmation of the duel ending & explanation. + sce_loser_end_result_tooltip_effect = yes + #Aaaaand set-up some rivalry. + if = { + limit = { + NOT = { has_relation_rival = scope:sc_victor } + } + progress_towards_rival_effect = { + REASON = rival_lost_duel + CHARACTER = scope:sc_victor + OPINION = 0 + } + } + # Consolation prize for being a sore loser to a rival. + else = { add_stress = minor_stress_loss } + + stress_impact = { + arrogant = minor_stress_impact_loss + vengeful = medium_stress_impact_loss + humble = minor_stress_impact_gain + forgiving = minor_stress_impact_gain + } + ai_chance = { + base = 100 + ai_value_modifier = { + ai_vengefulness = 0.5 + ai_energy = 0.25 + } + modifier = { #Weight up for stress. + add = 10 + has_trait = arrogant + } + modifier = { #Weight up for stress. + add = 20 + has_trait = vengeful + } + modifier = { #Weight down for stress. + add = -10 + has_trait = humble + } + modifier = { #Weight down for stress. + add = -20 + has_trait = forgiving + } + } + } + + after = { + if = { #If dueled an AI, clear everything + limit = { + scope:sc_victor = { is_ai = yes } + } + single_combat_clean_shirtlessness_effect = { + ATTACKER = scope:sc_loser + DEFENDER = scope:sc_victor + } + } + else_if = { #If both players, clear own only + limit = { is_ai = no } + if = { + limit = { has_character_flag = single_combat_stripped_to_waist } + remove_character_flag = single_combat_stripped_to_waist + } + else_if = { # If a player who dueled a player, clear only own flags + limit = { has_character_flag = single_combat_duel_armor } + remove_character_flag = single_combat_duel_armor + } + } + if = { #If dueled an AI, clear everything + limit = { + scope:sc_victor = { is_ai = yes } + } + single_combat_clean_temp_weapon_effect = { + ATTACKER = scope:sc_loser + DEFENDER = scope:sc_victor + } + } + else_if = { #If both players, clear own only + limit = { is_ai = no } + if = { #check for variables set up in set_temporary_signature_weapon + limit = { + OR = { + has_variable = og_signature_weapon + has_variable = temporary_signature_weapon + } + } + if = { #remove the signature_weapon variable if the character didn't have anything before + limit = { + var:og_signature_weapon = flag:no_signature_weapon_yet + } + remove_variable = signature_weapon + } + else = { #restore the original signature_weapon + set_variable = { + name = signature_weapon + value = var:og_signature_weapon + } + } + #remove all variables set up in set_temporary_signature_weapon + remove_variable = temporary_signature_weapon + remove_variable = og_signature_weapon + } + } + } +} + +# scope:sc_victor's confirmation event. +single_combat.0041 = { + type = character_event + window = duel_event + title = single_combat.0041.t + desc = { + first_valid = { + # Are we in scope:sc_defender's POV? + triggered_desc = { + trigger = { this = scope:sc_defender } + desc = { + # Our POV tells us that we did X. + triggered_desc = { + #This trigger should always exist, but the desc structure is required for code reasons. + trigger = { always = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:wait_and_hope } + desc = single_combat.0041.desc.sc_defender.wait_and_hope + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:unsure_attack } + desc = single_combat.0041.desc.sc_defender.unsure_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0041.desc.sc_defender.enthusiastic_onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hail_mary } + desc = single_combat.0041.desc.sc_defender.hail_mary + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:pocket_sand } + desc = single_combat.0041.desc.sc_defender.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:nut_em } + desc = single_combat.0041.desc.sc_defender.nut_em + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:guard } + desc = single_combat.0041.desc.sc_defender.guard + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:probing_attack } + desc = single_combat.0041.desc.sc_defender.probing_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:onslaught } + desc = single_combat.0041.desc.sc_defender.onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:surprise_attack } + desc = single_combat.0041.desc.sc_defender.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:taunt } + desc = single_combat.0041.desc.sc_defender.taunt + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:put_the_boot_in } + desc = single_combat.0041.desc.sc_defender.put_the_boot_in + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:strict_guard } + desc = single_combat.0041.desc.sc_defender.strict_guard + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:confident_attack } + desc = single_combat.0041.desc.sc_defender.confident_attack + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:expert_onslaught } + desc = single_combat.0041.desc.sc_defender.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:attempt_disarm } + desc = single_combat.0041.desc.sc_defender.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:tire_opponent } + desc = single_combat.0041.desc.sc_defender.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:reason_you_suck_speech } + desc = single_combat.0041.desc.sc_defender.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:technique_from_legend } + desc = single_combat.0041.desc.sc_defender.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:like_a_viper } + desc = single_combat.0041.desc.sc_defender.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:pocket_silver } + desc = single_combat.0041.desc.sc_defender.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:martial_voice } + desc = single_combat.0041.desc.sc_defender.martial_voice + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:mocking_boast } + desc = single_combat.0041.desc.sc_defender.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:is_that_a_crocodile } + desc = single_combat.0041.desc.sc_defender.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:desert_warrior } + desc = single_combat.0041.desc.sc_defender.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:jungle_stalker } + desc = single_combat.0041.desc.sc_defender.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:open_terrain_expert } + desc = single_combat.0041.desc.sc_defender.open_terrain_expert + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:rough_terrain_expert } + desc = single_combat.0041.desc.sc_defender.rough_terrain_expert + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:forest_fighter } + desc = single_combat.0041.desc.sc_defender.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:raaargh } + desc = single_combat.0041.desc.sc_defender.raaargh + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hard_grit } + desc = single_combat.0041.desc.sc_defender.hard_grit + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:feint_and_stab } + desc = single_combat.0041.desc.sc_defender.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:butchery } + desc = single_combat.0041.desc.sc_defender.butchery + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:stoic_veteran } + desc = single_combat.0041.desc.sc_defender.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:blade_dance } + desc = single_combat.0041.desc.sc_defender.blade_dance + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:wrath_of_highgod } + desc = single_combat.0041.desc.sc_defender.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:hurt_me_better } + desc = single_combat.0041.desc.sc_defender.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:special_fallback } + desc = single_combat.0041.desc.sc_defender.special_fallback + } + triggered_desc = { + trigger = { scope:sc_defender_last_move = flag:something_to_hide } + desc = single_combat.0041.desc.sc_defender.something_to_hide + } + } + } + } + # And scope:sc_attacker failed to counter with Y. + triggered_desc = { + #This trigger should always exist, but the desc structure is required for code reasons. + trigger = { always = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0041.desc.opponent_response.wait_and_hope + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0041.desc.opponent_response.unsure_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0041.desc.opponent_response.enthusiastic_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0041.desc.opponent_response.hail_mary + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0041.desc.opponent_response.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0041.desc.opponent_response.nut_em + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0041.desc.opponent_response.guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0041.desc.opponent_response.probing_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0041.desc.opponent_response.onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0041.desc.opponent_response.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0041.desc.opponent_response.taunt + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:put_the_boot_in + has_trait = one_legged + } + desc = single_combat.0041.desc.opponent_response.put_the_boot_in.peg_leg + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0041.desc.opponent_response.put_the_boot_in.fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0041.desc.opponent_response.strict_guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0041.desc.opponent_response.confident_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0041.desc.opponent_response.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0041.desc.opponent_response.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0041.desc.opponent_response.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0041.desc.opponent_response.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0041.desc.opponent_response.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0041.desc.opponent_response.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0041.desc.opponent_response.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0041.desc.opponent_response.martial_voice + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0041.desc.opponent_response.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0041.desc.opponent_response.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0041.desc.opponent_response.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0041.desc.opponent_response.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0041.desc.opponent_response.open_terrain_expert + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0041.desc.opponent_response.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0041.desc.opponent_response.raaargh + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0041.desc.opponent_response.hard_grit + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0041.desc.opponent_response.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0041.desc.opponent_response.butchery + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0041.desc.opponent_response.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0041.desc.opponent_response.blade_dance + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0041.desc.opponent_response.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0041.desc.opponent_response.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0041.desc.opponent_response.special_fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0041.desc.opponent_response.something_to_hide + } + } + } + } + # Leading to Z-1: injury. + triggered_desc = { + trigger = { duel_will_end_in_opponent_death_trigger = no } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0041.desc.opponent_response.wait_and_hope.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0041.desc.opponent_response.unsure_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0041.desc.opponent_response.enthusiastic_onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0041.desc.opponent_response.hail_mary.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0041.desc.opponent_response.pocket_sand.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0041.desc.opponent_response.nut_em.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0041.desc.opponent_response.guard.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0041.desc.opponent_response.probing_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0041.desc.opponent_response.onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0041.desc.opponent_response.surprise_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0041.desc.opponent_response.taunt.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0041.desc.opponent_response.put_the_boot_in.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0041.desc.opponent_response.strict_guard.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0041.desc.opponent_response.confident_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0041.desc.opponent_response.expert_onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0041.desc.opponent_response.attempt_disarm.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0041.desc.opponent_response.tire_opponent.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0041.desc.opponent_response.reason_you_suck_speech.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0041.desc.opponent_response.technique_from_legend.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0041.desc.opponent_response.like_a_viper.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0041.desc.opponent_response.pocket_silver.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0041.desc.opponent_response.martial_voice.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0041.desc.opponent_response.mocking_boast.injury + } + # No need for an is_that_a_crocodile, as it's never just an injury. + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0041.desc.opponent_response.desert_warrior.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0041.desc.opponent_response.jungle_stalker.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0041.desc.opponent_response.open_terrain_expert.injury + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.injury.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.injury.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0041.desc.opponent_response.forest_fighter.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0041.desc.opponent_response.raaargh.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0041.desc.opponent_response.hard_grit.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0041.desc.opponent_response.feint_and_stab.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0041.desc.opponent_response.butchery.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0041.desc.opponent_response.stoic_veteran.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0041.desc.opponent_response.blade_dance.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0041.desc.opponent_response.wrath_of_highgod.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0041.desc.opponent_response.hurt_me_better.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0041.desc.opponent_response.special_fallback.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0041.desc.opponent_response.something_to_hide.injury + } + } + } + } + # Or Z-2: death. + triggered_desc = { + trigger = { duel_will_end_in_opponent_death_trigger = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0041.desc.opponent_response.wait_and_hope.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0041.desc.opponent_response.unsure_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0041.desc.opponent_response.enthusiastic_onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0041.desc.opponent_response.hail_mary.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0041.desc.opponent_response.pocket_sand.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0041.desc.opponent_response.nut_em.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0041.desc.opponent_response.guard.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0041.desc.opponent_response.probing_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0041.desc.opponent_response.onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0041.desc.opponent_response.surprise_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0041.desc.opponent_response.taunt.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0041.desc.opponent_response.put_the_boot_in.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0041.desc.opponent_response.strict_guard.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0041.desc.opponent_response.confident_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0041.desc.opponent_response.expert_onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0041.desc.opponent_response.attempt_disarm.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0041.desc.opponent_response.tire_opponent.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0041.desc.opponent_response.reason_you_suck_speech.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0041.desc.opponent_response.technique_from_legend.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0041.desc.opponent_response.like_a_viper.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0041.desc.opponent_response.pocket_silver.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0041.desc.opponent_response.martial_voice.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0041.desc.opponent_response.mocking_boast.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0041.desc.opponent_response.is_that_a_crocodile.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0041.desc.opponent_response.desert_warrior.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0041.desc.opponent_response.jungle_stalker.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0041.desc.opponent_response.open_terrain_expert.fatality + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.fatality.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.fatality.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0041.desc.opponent_response.forest_fighter.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0041.desc.opponent_response.raaargh.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0041.desc.opponent_response.hard_grit.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0041.desc.opponent_response.feint_and_stab.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0041.desc.opponent_response.butchery.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0041.desc.opponent_response.stoic_veteran.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0041.desc.opponent_response.blade_dance.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0041.desc.opponent_response.wrath_of_highgod.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0041.desc.opponent_response.hurt_me_better.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0041.desc.opponent_response.special_fallback.fatality + } + # No need for a something_to_hide, as it's never fatal. + } + } + } + } + } + # Or scope:sc_attacker's? + triggered_desc = { + trigger = { this = scope:sc_attacker } + desc = { + # Our POV tells us that we went straight in with Y. + triggered_desc = { + #This trigger should always exist, but the desc structure is required for code reasons. + trigger = { always = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0041.desc.sc_attacker.wait_and_hope + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0041.desc.sc_attacker.unsure_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0041.desc.sc_attacker.enthusiastic_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0041.desc.sc_attacker.hail_mary + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0041.desc.sc_attacker.pocket_sand + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0041.desc.sc_attacker.nut_em + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0041.desc.sc_attacker.guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0041.desc.sc_attacker.probing_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0041.desc.sc_attacker.onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0041.desc.sc_attacker.surprise_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0041.desc.sc_attacker.taunt + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:put_the_boot_in + has_trait = one_legged + } + desc = single_combat.0041.desc.sc_attacker.put_the_boot_in.peg_leg + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0041.desc.sc_attacker.put_the_boot_in.fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0041.desc.sc_attacker.strict_guard + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0041.desc.sc_attacker.confident_attack + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0041.desc.sc_attacker.expert_onslaught + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0041.desc.sc_attacker.attempt_disarm + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0041.desc.sc_attacker.tire_opponent + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0041.desc.sc_attacker.reason_you_suck_speech + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0041.desc.sc_attacker.technique_from_legend + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0041.desc.sc_attacker.like_a_viper + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0041.desc.sc_attacker.pocket_silver + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0041.desc.sc_attacker.martial_voice + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0041.desc.sc_attacker.mocking_boast + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0041.desc.sc_attacker.is_that_a_crocodile + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0041.desc.sc_attacker.desert_warrior + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0041.desc.sc_attacker.jungle_stalker + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0041.desc.sc_attacker.open_terrain_expert + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0041.desc.sc_attacker.forest_fighter + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0041.desc.sc_attacker.raaargh + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0041.desc.sc_attacker.hard_grit + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0041.desc.sc_attacker.feint_and_stab + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0041.desc.sc_attacker.butchery + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0041.desc.sc_attacker.stoic_veteran + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0041.desc.sc_attacker.blade_dance + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0041.desc.sc_attacker.wrath_of_highgod + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0041.desc.sc_attacker.hurt_me_better + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0041.desc.sc_attacker.special_fallback + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0041.desc.sc_attacker.something_to_hide + } + } + } + } + # Leading to Z-1: injury. + triggered_desc = { + trigger = { duel_will_end_in_opponent_death_trigger = no } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0041.desc.sc_attacker.wait_and_hope.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0041.desc.sc_attacker.unsure_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0041.desc.sc_attacker.enthusiastic_onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0041.desc.sc_attacker.hail_mary.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0041.desc.sc_attacker.pocket_sand.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0041.desc.sc_attacker.nut_em.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0041.desc.sc_attacker.guard.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0041.desc.sc_attacker.probing_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0041.desc.sc_attacker.onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0041.desc.sc_attacker.surprise_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0041.desc.sc_attacker.taunt.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0041.desc.sc_attacker.put_the_boot_in.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0041.desc.sc_attacker.strict_guard.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0041.desc.sc_attacker.confident_attack.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0041.desc.sc_attacker.expert_onslaught.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0041.desc.sc_attacker.attempt_disarm.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0041.desc.sc_attacker.tire_opponent.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0041.desc.sc_attacker.reason_you_suck_speech.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0041.desc.sc_attacker.technique_from_legend.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0041.desc.sc_attacker.like_a_viper.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0041.desc.sc_attacker.pocket_silver.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0041.desc.sc_attacker.martial_voice.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0041.desc.sc_attacker.mocking_boast.injury + } + # No need for an is_that_a_crocodile, as it's never just an injury. + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0041.desc.sc_attacker.desert_warrior.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0041.desc.sc_attacker.jungle_stalker.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0041.desc.sc_attacker.open_terrain_expert.injury + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.injury.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.injury.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0041.desc.sc_attacker.forest_fighter.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0041.desc.sc_attacker.raaargh.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0041.desc.sc_attacker.hard_grit.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0041.desc.sc_attacker.feint_and_stab.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0041.desc.sc_attacker.butchery.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0041.desc.sc_attacker.stoic_veteran.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0041.desc.sc_attacker.blade_dance.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0041.desc.sc_attacker.wrath_of_highgod.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0041.desc.sc_attacker.hurt_me_better.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0041.desc.sc_attacker.special_fallback.injury + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:something_to_hide } + desc = single_combat.0041.desc.sc_attacker.something_to_hide.injury + } + } + } + } + # Or Z-2: death. + triggered_desc = { + trigger = { duel_will_end_in_opponent_death_trigger = yes } + desc = { + first_valid = { + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wait_and_hope } + desc = single_combat.0041.desc.sc_attacker.wait_and_hope.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:unsure_attack } + desc = single_combat.0041.desc.sc_attacker.unsure_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught } + desc = single_combat.0041.desc.sc_attacker.enthusiastic_onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hail_mary } + desc = single_combat.0041.desc.sc_attacker.hail_mary.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_sand } + desc = single_combat.0041.desc.sc_attacker.pocket_sand.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:nut_em } + desc = single_combat.0041.desc.sc_attacker.nut_em.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:guard } + desc = single_combat.0041.desc.sc_attacker.guard.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:probing_attack } + desc = single_combat.0041.desc.sc_attacker.probing_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:onslaught } + desc = single_combat.0041.desc.sc_attacker.onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:surprise_attack } + desc = single_combat.0041.desc.sc_attacker.surprise_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:taunt } + desc = single_combat.0041.desc.sc_attacker.taunt.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in } + desc = single_combat.0041.desc.sc_attacker.put_the_boot_in.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:strict_guard } + desc = single_combat.0041.desc.sc_attacker.strict_guard.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:confident_attack } + desc = single_combat.0041.desc.sc_attacker.confident_attack.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:expert_onslaught } + desc = single_combat.0041.desc.sc_attacker.expert_onslaught.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:attempt_disarm } + desc = single_combat.0041.desc.sc_attacker.attempt_disarm.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:tire_opponent } + desc = single_combat.0041.desc.sc_attacker.tire_opponent.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech } + desc = single_combat.0041.desc.sc_attacker.reason_you_suck_speech.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:technique_from_legend } + desc = single_combat.0041.desc.sc_attacker.technique_from_legend.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:like_a_viper } + desc = single_combat.0041.desc.sc_attacker.like_a_viper.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:pocket_silver } + desc = single_combat.0041.desc.sc_attacker.pocket_silver.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:martial_voice } + desc = single_combat.0041.desc.sc_attacker.martial_voice.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:mocking_boast } + desc = single_combat.0041.desc.sc_attacker.mocking_boast.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile } + desc = single_combat.0041.desc.sc_attacker.is_that_a_crocodile.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:desert_warrior } + desc = single_combat.0041.desc.sc_attacker.desert_warrior.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:jungle_stalker } + desc = single_combat.0041.desc.sc_attacker.jungle_stalker.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert } + desc = single_combat.0041.desc.sc_attacker.open_terrain_expert.fatality + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { rocky_locale_trigger = yes } + } + desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.fatality.rocky + } + triggered_desc = { + trigger = { + scope:sc_attacker_last_move = flag:rough_terrain_expert + scope:sc_defender.location = { terrain = wetlands } + } + desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.fatality.boggy + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:forest_fighter } + desc = single_combat.0041.desc.sc_attacker.forest_fighter.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:raaargh } + desc = single_combat.0041.desc.sc_attacker.raaargh.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hard_grit } + desc = single_combat.0041.desc.sc_attacker.hard_grit.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:feint_and_stab } + desc = single_combat.0041.desc.sc_attacker.feint_and_stab.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:butchery } + desc = single_combat.0041.desc.sc_attacker.butchery.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:stoic_veteran } + desc = single_combat.0041.desc.sc_attacker.stoic_veteran.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:blade_dance } + desc = single_combat.0041.desc.sc_attacker.blade_dance.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod } + desc = single_combat.0041.desc.sc_attacker.wrath_of_highgod.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:hurt_me_better } + desc = single_combat.0041.desc.sc_attacker.hurt_me_better.fatality + } + triggered_desc = { + trigger = { scope:sc_attacker_last_move = flag:special_fallback } + desc = single_combat.0041.desc.sc_attacker.special_fallback.fatality + } + # No need for a something_to_hide, as it's never fatal. + } + } + } + } + } + } + } + theme = skull + left_portrait = { + character = scope:sc_victor + scripted_animation = duel_celebrate + } + right_portrait = { + character = scope:sc_loser + triggered_animation = { + trigger = { is_alive = no } + animation = loss_1 + } + animation = sword_yield_start + } + # Background Logic + override_background = { + trigger = { scope:locale = flag:terrain_scope } + reference = terrain_scope + } + override_background = { + trigger = { scope:locale = flag:battlefield } + reference = battlefield + } + override_background = { + trigger = { scope:locale = flag:alley_night } + reference = alley_night + } + override_background = { + trigger = { scope:locale = flag:alley_day } + reference = alley_day + } + override_background = { + trigger = { scope:locale = flag:temple } + reference = temple + } + override_background = { + trigger = { scope:locale = flag:corridor_night } + reference = corridor_night + } + override_background = { + trigger = { scope:locale = flag:corridor_day } + reference = corridor_day + } + override_background = { + trigger = { scope:locale = flag:courtyard } + reference = courtyard + } + override_background = { + trigger = { scope:locale = flag:dungeon } + reference = dungeon + } + override_background = { + trigger = { scope:locale = flag:docks } + reference = docks + } + override_background = { + trigger = { scope:locale = flag:feast } + reference = feast + } + override_background = { + trigger = { scope:locale = flag:market } + reference = market + } + override_background = { + trigger = { scope:locale = flag:tavern } + reference = tavern + } + override_background = { + trigger = { scope:locale = flag:throne_room } + reference = throne_room + } + override_background = { + trigger = { scope:locale = flag:army_camp } + reference = army_camp + } + + immediate = { + #Death/wounding enacted elsewhere. + if = { + limit = { + duel_will_end_in_opponent_death_trigger = yes + } + scope:sc_loser = { + show_as_tooltip = { + death = { + killer = scope:sc_victor + death_reason = death_duel + } + } + } + if = { + limit = { + scope:sc_victor.faith = { has_doctrine = tenet_cranial_trophies } + } + show_as_tooltip = { + tgp_cranial_trophies_beheading_effect = { + KILLER = scope:sc_victor + DEAD = scope:sc_loser + } + } + } + } + else_if = { + limit = { scope:fatality = flag:practice } + # If we're only practicing, there's no harm done. + custom_tooltip = single_combat.result.tt.practice_no_wounds + } + else = { + scope:sc_loser = { + show_as_tooltip = { + increase_wounds_no_death_effect = { REASON = duel } + } + } + } + # Add Blademaster Trait XP + if = { + limit = { has_trait = lifestyle_blademaster } + add_trait_xp = { + trait = lifestyle_blademaster + value = lifestyle_blademaster_xp_gain_minor_value + } + } + + # Add Tournament Trait XP + if = { + limit = { has_trait = tourney_participant } + add_trait_xp = { + trait = tourney_participant + track = foot + value = tournament_hastiludes_xp_gain_minor_value + } + } + + scope:sc_victor = { + every_vassal = { + limit = { + has_vassal_stance = belligerent + } + custom = every_belligerent_vassal + add_opinion = { + modifier = liege_won_duel + target = scope:sc_victor + } + } + } + + # Add Hereward killing a Norman XP +# if = { +# limit = { +# has_trait = the_wake +# scope:sc_loser = { +# culture = culture:norman +# } +# } +# add_trait_xp = { +# trait = the_wake +# value = { 5 10 } +# } +# } + # Add Nomadic Legitimacy gain + if = { # Nomads gain Legitimacy from duels + limit = { + has_mpo_dlc_trigger = yes + is_valid_for_nomadic_legitimacy_change = yes + } + add_legitimacy = medium_legitimacy_gain + } + + # Increase the Strength of Ushiwakamaru + if = { + limit = { + OR = { + has_character_modifier = tgp_japan_ushiwakamaru + has_character_modifier = tgp_japan_ushiwakamaru_2 + has_character_modifier = tgp_japan_ushiwakamaru_3 + } + } + change_variable = { + name = ushiwakamaru_duels_won + add = 1 + } + + if = { + limit = { + var:ushiwakamaru_duels_won >= 60 + NOT = { has_character_modifier = tgp_japan_ushiwakamaru_4 } + } + remove_character_modifier = tgp_japan_ushiwakamaru_3 + add_character_modifier = { + modifier = tgp_japan_ushiwakamaru_4 + years = -1 + } + } + else_if = { + limit = { + var:ushiwakamaru_duels_won >= 40 + NOT = { has_character_modifier = tgp_japan_ushiwakamaru_4 } + NOT = { has_character_modifier = tgp_japan_ushiwakamaru_3 } + } + remove_character_modifier = tgp_japan_ushiwakamaru_2 + add_character_modifier = { + modifier = tgp_japan_ushiwakamaru_3 + years = -1 + } + } + else_if = { + limit = { + var:ushiwakamaru_duels_won >= 20 + NOT = { has_character_modifier = tgp_japan_ushiwakamaru_4 } + NOT = { has_character_modifier = tgp_japan_ushiwakamaru_3 } + NOT = { has_character_modifier = tgp_japan_ushiwakamaru_2 } + } + remove_character_modifier = tgp_japan_ushiwakamaru + add_character_modifier = { + modifier = tgp_japan_ushiwakamaru_2 + years = -1 + } + } + } + #Lose some stress if you kill your rival + if = { + limit = { + has_relation_rival = scope:sc_loser + } + stress_impact = { + base = major_stress_impact_loss + } + } + + + # Damage equipped artifacts + may_damage_artifact_effect = { + TYPE = primary_armament + CHANCE = 50 # 50% chance of no damage + PERCENT = 10 # 5-10 percent of max durability lost + } + may_damage_artifact_effect = { + TYPE = armor + CHANCE = 50 # 50% chance of no damage + PERCENT = 10 # 5-10 percent of max durability lost + } + #Acknowledge loss of temporary combat modifiers. + custom_tooltip = single_combat.result.tt.temporary_modifiers_removed + } + + # They died! + option = { + name = single_combat.0041.a + trigger = { duel_will_end_in_opponent_death_trigger = yes } + + #Confirmation of the duel ending & explanation. + sce_victor_end_result_tooltip_effect = yes + + #No stress for single-option events. + #No AI chance needed for single-option events. + } + + # I am victorious! + option = { + name = single_combat.0041.b + trigger = { duel_will_end_in_opponent_death_trigger = no } + + #Confirmation of the duel ending & explanation. + sce_victor_end_result_tooltip_effect = yes + + #No stress for single-option events. + #No AI chance needed for single-option events. + } + + after = { + # Everyone puts their shirts back on. + if = { #If dueled an AI, clear everything + limit = { + scope:sc_loser = { is_ai = yes } + } + single_combat_clean_shirtlessness_effect = { + ATTACKER = scope:sc_loser + DEFENDER = scope:sc_victor + } + } + else_if = { #If both players, clear own only + limit = { is_ai = no } + if = { + limit = { has_character_flag = single_combat_stripped_to_waist } + remove_character_flag = single_combat_stripped_to_waist + } + else_if = { # If a player who dueled a player, clear only own flags + limit = { has_character_flag = single_combat_duel_armor } + remove_character_flag = single_combat_duel_armor + } + } + # Everyone puts their signature weapons back on. + if = { #If dueled an AI, clear everything + limit = { + scope:sc_loser = { is_ai = yes } + } + single_combat_clean_temp_weapon_effect = { + ATTACKER = scope:sc_loser + DEFENDER = scope:sc_victor + } + } + else_if = { #If both players, clear own only + limit = { is_ai = no } + if = { #check for variables set up in set_temporary_signature_weapon + limit = { + OR = { + has_variable = og_signature_weapon + has_variable = temporary_signature_weapon + } + } + if = { #remove the signature_weapon variable if the character didn't have anything before + limit = { + var:og_signature_weapon = flag:no_signature_weapon_yet + } + remove_variable = signature_weapon + } + else = { #restore the original signature_weapon + set_variable = { + name = signature_weapon + value = var:og_signature_weapon + } + } + #remove all variables set up in set_temporary_signature_weapon + remove_variable = temporary_signature_weapon + remove_variable = og_signature_weapon + } + } + } +} + +################################################## +# Test Events +# by Ewan Cowhig Croft +# 1001+ +################################################## + +# Spawn a duel, with a random knight as defender. +single_combat.1001 = { + hidden = yes + orphan = yes + + immediate = { + random_knight = { + limit = { can_start_single_combat_trigger = yes } + save_scope_as = fighter_mc_fighter_chap + } + configure_start_single_combat_effect = { + SC_INITIATOR = root + SC_ATTACKER = root + SC_DEFENDER = scope:fighter_mc_fighter_chap + FATALITY = default + FIXED = no + LOCALE = terrain_scope + OUTPUT_EVENT = single_combat.1006 + INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output. + } + } +} + +# Spawn a duel, with a random knight as attacker. +single_combat.1002 = { + hidden = yes + orphan = yes + + immediate = { + random_knight = { + limit = { can_start_single_combat_trigger = yes } + save_scope_as = fighter_mc_fighter_chap + } + configure_start_single_combat_effect = { + SC_INITIATOR = root + SC_ATTACKER = scope:fighter_mc_fighter_chap + SC_DEFENDER = root + FATALITY = no + FIXED = no + LOCALE = terrain_scope + OUTPUT_EVENT = single_combat.1006 + INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output. + } + } +} + +# Error suppression. +single_combat.1003 = { + hidden = yes + orphan = yes + + immediate = { + # Fatality flags + hidden_effect = { + save_scope_value_as = { + name = fatality + value = flag:default + } + save_scope_value_as = { + name = fatality + value = flag:possible + } + save_scope_value_as = { + name = fatality + value = flag:no + } + save_scope_value_as = { + name = fatality + value = flag:always + } + } + # Match fixing flags + hidden_effect = { + save_scope_value_as = { + name = fixed + value = flag:sc_attacker + } + save_scope_value_as = { + name = fixed + value = flag:sc_defender + } + } + if = { + limit = { + scope:fixed = flag:sc_attacker + scope:fixed = flag:sc_defender + } + # Nothing. + } + # Background flags + hidden_effect = { + save_scope_value_as = { + name = locale + value = flag:terrain_scope + } + save_scope_value_as = { + name = locale + value = flag:battlefield + } + save_scope_value_as = { + name = locale + value = flag:alley_night + } + save_scope_value_as = { + name = locale + value = flag:alley_day + } + save_scope_value_as = { + name = locale + value = flag:temple + } + save_scope_value_as = { + name = locale + value = flag:corridor_night + } + save_scope_value_as = { + name = locale + value = flag:corridor_day + } + save_scope_value_as = { + name = locale + value = flag:courtyard + } + save_scope_value_as = { + name = locale + value = flag:dungeon + } + save_scope_value_as = { + name = locale + value = flag:docks + } + save_scope_value_as = { + name = locale + value = flag:feast + } + save_scope_value_as = { + name = locale + value = flag:market + } + save_scope_value_as = { + name = locale + value = flag:tavern + } + save_scope_value_as = { + name = locale + value = flag:throne_room + } + save_scope_value_as = { + name = locale + value = flag:army_camp + } + } + # Victory type flags + if = { + limit = { + scope:victory_type = flag:skill + scope:victory_type = flag:mistake + scope:victory_type = flag:sudden_death + } + #Nothing. + } + } +} + +# Debug event to duel a character. +single_combat.1004 = { + type = character_event + window = duel_event + title = single_combat.1004.t + desc = single_combat.1004.desc + left_portrait = { + character = scope:actor + animation = anger + } + right_portrait = { + character = scope:recipient + animation = fear + } + theme = skull + + # You are the attacker, default + option = { + name = single_combat.1004.a + + configure_start_single_combat_effect = { + SC_INITIATOR = scope:actor + SC_ATTACKER = scope:actor + SC_DEFENDER = scope:recipient + FATALITY = default + FIXED = no + LOCALE = terrain_scope + OUTPUT_EVENT = single_combat.1006 + INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output. + } + } + + # You are the defender, default + option = { + name = single_combat.1004.b + + configure_start_single_combat_effect = { + SC_INITIATOR = scope:actor + SC_ATTACKER = scope:recipient + SC_DEFENDER = scope:actor + FATALITY = default + FIXED = no + LOCALE = terrain_scope + OUTPUT_EVENT = single_combat.1006 + INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output. + } + } + + # You are the attacker, fatal + option = { + name = single_combat.1004.c + + configure_start_single_combat_effect = { + SC_INITIATOR = scope:actor + SC_ATTACKER = scope:actor + SC_DEFENDER = scope:recipient + FATALITY = always + FIXED = no + LOCALE = terrain_scope + OUTPUT_EVENT = single_combat.1006 + INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output. + } + } + + # You are the defender, fatal + option = { + name = single_combat.1004.d + + configure_start_single_combat_effect = { + SC_INITIATOR = scope:actor + SC_ATTACKER = scope:recipient + SC_DEFENDER = scope:actor + FATALITY = always + FIXED = no + LOCALE = terrain_scope + OUTPUT_EVENT = single_combat.1006 + INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output. + } + } + + # You are the attack, non-lethal + option = { + name = single_combat.1004.e + + configure_start_single_combat_effect = { + SC_INITIATOR = scope:actor + SC_ATTACKER = scope:actor + SC_DEFENDER = scope:recipient + FATALITY = no + FIXED = no + LOCALE = terrain_scope + OUTPUT_EVENT = single_combat.1006 + INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output. + } + } + + # You are the defender, non-lethal + option = { + name = single_combat.1004.f + + configure_start_single_combat_effect = { + SC_INITIATOR = scope:actor + SC_ATTACKER = scope:recipient + SC_DEFENDER = scope:actor + FATALITY = no + FIXED = no + LOCALE = terrain_scope + OUTPUT_EVENT = single_combat.1006 + INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output. + } + } + + # Actually, never mind + option = { + name = single_combat.1004.g + } + + after = { + single_combat_apply_default_shirtlessness_effect = { + ATTACKER = scope:actor + DEFENDER = scope:recipient + } + } +} + +# Hidden empty event for testing purposes. +single_combat.1006 = { + hidden = yes +} diff --git a/history/provinces/e_zapadoslavia.txt b/history/provinces/e_zapadoslavia.txt index f052dc60..93e759da 100644 --- a/history/provinces/e_zapadoslavia.txt +++ b/history/provinces/e_zapadoslavia.txt @@ -1130,20 +1130,9 @@ ##d_visegrad ################################### ###c_visegrad 3803 = { #Buda - culture = avar - religion = tengri_pagan - holding = tribal_holding - - 890.1.1 = { - religion = nepmese - } - 935.1.1 = { - holding = castle_holding - #Date used to switch ti feudal_government in title history - } - 950.1.1 = { - culture = hungarian - } + culture = hungarian + religion = nepmese + holding = castle_holding } 522 = { #Pest holding = church_holding @@ -1248,8 +1237,8 @@ ###c_hewes 523 = { #Hewes - culture = avar - religion = tengri_pagan + culture = hungarian + religion = roman_catholic holding = tribal_holding 935.1.1 = { diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_heritages_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_heritages_l_english.yml index 5f4ef847..76d4da14 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_heritages_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_heritages_l_english.yml @@ -1,4 +1,10 @@ l_english: + heritage_alan_name:0 "Alan" + heritage_alan_collective_noun:0 "Alans" + heritage_northeast_caucasian_name:0 "Northeast Caucasian" + heritage_northeast_caucasian_collective_noun:0 "Northeast Caucasians" + heritage_northwest_caucasian_name:0 "Northwest Caucasian" + heritage_northwest_caucasian_collective_noun:0 "Northwest Caucasians" heritage_anglo_american_name:0 "Anglo-American" heritage_anglo_american_collective_noun:0 "Americans" heritage_anglo_frisian_name:0 "Anglo-Saxon" diff --git a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml index 097712b7..0fcd6c10 100644 --- a/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml +++ b/localization/english/replace/culture/traditions/zz_NEOW_cultural_languages_l_english.yml @@ -124,6 +124,14 @@ NEOW_language_latvian_name:0 "Latvian" NEOW_language_lithuanian_name:0 "Lithuanian" NEOW_language_vilamovian_name:0 "Vilamovian" + NEOW_language_kipchak_cuman:0 "Kipchak-Cuman" + NEOW_language_kipchak_nogai:0 "Kipchak-Nogai" + NEOW_language_circassian:0 "Circassian" + NEOW_language_ossetian:0 "Ossetian" + NEOW_language_vainakh:0 "Vainakh" + NEOW_language_avar:0 "Avar" + NEOW_language_dargwa:0 "Dargwa" + NEOW_language_lezgin:0 "Lezgin" ######################################### # Grouping Stuff diff --git a/localization/english/replace/culture/zz_NEOW_culture_name_lists_l_english.yml b/localization/english/replace/culture/zz_NEOW_culture_name_lists_l_english.yml index 71623357..6db3154f 100644 --- a/localization/english/replace/culture/zz_NEOW_culture_name_lists_l_english.yml +++ b/localization/english/replace/culture/zz_NEOW_culture_name_lists_l_english.yml @@ -2,41 +2,54 @@ name_list_brittannic:0 "Britannic" name_list_gallo_italian:0 "Gallo-Italian" name_list_icelander:0 "Icelander" - name_list_NEOW_brandenburger:0 "Brandenburgish" - name_list_NEOW_low_saxon:0 "Lower Saxonish" - name_list_mosellic:0 "Mosellic" name_list_italo_dalmatian:0 "Italo-Dalmatian" - name_list_prytoneg:0 "Myddlandiwr" - Name_list_scouseg:0 "Scousig" - Name_list_strafclideg:0 "Strafclider" + name_list_mosellic:0 "Mosellic" + name_list_NEOW_albanian:0 "Albanian" Name_list_NEOW_arpitan:0 "Arpitan" - Name_list_NEOW_beur:0 "Beur" - name_list_NEOW_brandenburger:0 "East German" - name_list_neow_scottish:0 "Scottish" - name_list_neow_goidelic:0 "Irish" - name_list_NEOW_french:0 "French" name_list_NEOW_basque:0 "Basque" - name_list_NEOW_catalan:0 "Catalan" + name_list_NEOW_bavarian:0 "Austro-Bavarian" + name_list_NEOW_belarus:0 "Belarusian" + Name_list_NEOW_beur:0 "Beur" + name_list_NEOW_beur:0 "Beur" + name_list_NEOW_brandenburger:0 "East German" name_list_NEOW_breton:0 "Breton" + name_list_NEOW_bulgarian:0 "Bulgarian" name_list_NEOW_campanian:0 "Campanian" + name_list_NEOW_castilian:0 "Castilian" + name_list_NEOW_catalan:0 "Catalan" name_list_NEOW_cornish:0 "Cornish" name_list_NEOW_cossack:0 "Cossack" - name_list_NEOW_english:0 "English" + name_list_NEOW_crimean:0 "Crimean" + name_list_NEOW_cypriot:0 "Cypriot" + name_list_NEOW_czech:0 "Czech" + name_list_NEOW_danish:0 "Danish" + name_list_NEOW_english:0 "English" + name_list_NEOW_estonian:0 "Estonian" + name_list_NEOW_finnish:0 "Finnish" name_list_NEOW_french:0 "French" + name_list_NEOW_french:0 "French" + name_list_neow_goidelic:0 "Irish" name_list_NEOW_goidelic:0 "Irish" + name_list_NEOW_greek:0 "Greek" + name_list_NEOW_latvian:0 "Latvian" name_list_NEOW_low_saxon:0 "Low German" name_list_NEOW_normaund:0 "Normaund" name_list_NEOW_palatine:0 "Palatinate" - name_list_NEOW_scottish:0 "Scottish" - name_list_NEOW_swabian:0 "Swabian" - name_list_NEOW_sorbian:0 "Sorb" - name_list_NEOW_czech:0 "Czech" - name_list_NEOW_beur:0 "Beur" - name_list_NEOW_turkish:0 "Turkish" + name_list_NEOW_portuguese:0 "Portuguese" + name_list_NEOW_pribaltiyskiy:0 "Pribaltic Russian" + name_list_NEOW_provencal:0 "Provençal" name_list_NEOW_ruthenian:0 "Ruthenian" - Name_list_NEOW_welsh:0 "Welsh" - name_list_NEOW_west_russian:0 "West Russian" + name_list_neow_scottish:0 "Scottish" + name_list_NEOW_scottish:0 "Scottish" + name_list_NEOW_slovak:0 "Slovak" + name_list_NEOW_slovenian:0 "Slovenian" + name_list_NEOW_sorbian:0 "Sorb" + name_list_NEOW_swabian:0 "Swabian" + name_list_NEOW_swedish:0 "Swedish" + name_list_NEOW_turkish:0 "Turkish" + Name_list_NEOW_welsh:0 "Welsh" name_list_NEOW_west_russian:0 "West Russian" - name_list_NEOW_pribaltiyskiy:0 "Pribaltic Russian" - name_list_NEOW_belarus:0 "Belarusian" - name_list_NEOW_crimean:0 "Crimean" + name_list_NEOW_west_russian:0 "West Russian" + name_list_prytoneg:0 "Myddlandiwr" + Name_list_scouseg:0 "Scousig" + Name_list_strafclideg:0 "Strafclider" \ No newline at end of file diff --git a/localization/english/replace/culture/zz_NEOW_cultures_l_english.yml b/localization/english/replace/culture/zz_NEOW_cultures_l_english.yml index 097b55d0..236d51dc 100644 --- a/localization/english/replace/culture/zz_NEOW_cultures_l_english.yml +++ b/localization/english/replace/culture/zz_NEOW_cultures_l_english.yml @@ -619,6 +619,31 @@ NEOW_slovak_prefix:0 "Slovako" #Kazakh - NEOW_kazakh:0 "Kazakh" + NEOW_kazakh:0 "Qazaq" NEOW_kazakh_prefix:0 "Kazakh" - NEOW_kazakh_collective_noun:1 "Kazakhs" \ No newline at end of file + NEOW_kazakh_collective_noun:1 "Kazakhs" + + #Bashkir + NEOW_bashkir:0 "Başqort" + NEOW_bashkir_prefix:0 "Bashkiro" + NEOW_kazakh_collective_noun:0 "Bashkirs" + + #Crimean Tatar + NEOW_crimean_tatar:0 "Qırımtatar" + NEOW_crimean_tatar_prefix:0 "Crimeo" + NEOW_crimean_tatar_collective_noun:0 "Crimean Tatars" + + #Tatar + NEOW_tatar:0 "Tatar" + NEOW_tatar_prefix:0 "Tataro" + NEOW_tatar_collective_noun:0 "Tatars" + + #Mari + NEOW_mari_el:0 "Marij" + NEOW_mari_el_prefix:0 "Mario" + NEOW_mari_el_collective_noun:0 "Mari" + + #Mordvin + NEOW_mordvin:0 "Mordvin" + NEOW_mordvin_prefix:0 "Mordvino" + NEOW_mordvin_collective_noun:0 "Mordvins" \ No newline at end of file diff --git a/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml b/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml index a6f9aa5d..e8889b7e 100644 --- a/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml +++ b/localization/english/replace/dynasties/NEOW_dynasty_names_l_english.yml @@ -4246,6 +4246,7 @@ dynn_Czech:0 "Czech" dynn_Th_o_uml_nnes:0 "Thönnes" dynn_Vierk_o_uml_tter:0 "Vierkötter" + dynn_Cambeiro:0 "Cambeiro" dynn_Crump:0 "Crump" dynn_Bala_s_crn_evi_c_act_:0 "Balašević" dynn_Baji_c_act_:0 "Bajić" @@ -4283,3 +4284,72 @@ dynn_Go_d_bar_evac:0 "Gođevac" dynn_Gvozdi_c_act_:0 "Gvozdić" dynn_Eri_c_act_:0 "Erić" + dynn_D_a_act_vila:0 "Dávila" + dynn_Feij_o_act_o:0 "Feijóo" + dynn_Figueroa:0 "Figueroa" + dynn_Frutos:0 "Frutos" + dynn_Gayoso:0 "Gayoso" + dynn_Mej_i_act_a:0 "Mejía" + dynn_Mera:0 "Mera" + dynn_Montenegro:0 "Montenegro" + dynn_Pazos:0 "Pazos" + dynn_Rouco:0 "Rouco" + dynn_Acu_n_tld_a:0 "Acuña" + dynn_Botana:0 "Botana" + dynn_Carril:0 "Carril" + dynn_R_u_act_a:0 "Rúa" + dynn_Verdes:0 "Verdes" + dynn_Ocampo:0 "Ocampo" + dynn_Santamarina:0 "Santamarina" + dynn_Silvela:0 "Silvela" + dynn_Taboada:0 "Taboada" + dynn_Villar:0 "Villar" + dynn_Pamp_i_act_n:0 "Pampín" + dynn_Souto:0 "Souto" + dynn_Quintela:0 "Quintela" + dynn_Veiga:0 "Veiga" + dynn_Conde:0 "Conde" + dynn_Agui_o_act_n:0 "Aguión" + dynn_Barreiro:0 "Barreiro" + dynn_Costoya:0 "Costoya" + dynn_Ares:0 "Ares" + dynn_Garea:0 "Garea" + dynn_Montero:0 "Montero" + dynn_Mato:0 "Mato" + dynn_Casal:0 "Casal" + dynn_Carreira:0 "Carreira" + dynn_Sanda:0 "Sanda" + dynn_Tojo:0 "Tojo" + dynn_Seoane:0 "Seoane" + dynn_M_i_act_guez:0 "Míguez" + dynn_Mosquera:0 "Mosquera" + dynn_Ferro:0 "Ferro" + dynn_Rendo:0 "Rendo" + dynn_Puga:0 "Puga" + dynn_Fandi_n_tld_o:0 "Fandiño" + dynn_Codesido:0 "Codesido" + dynn_Mella:0 "Mella" + dynn_Pombo:0 "Pombo" + dynn_Rama:0 "Rama" + dynn_Fraga:0 "Fraga" + dynn_Pena:0 "Pena" + dynn_Cotelo:0 "Cotelo" + dynn_Cancela:0 "Cancela" + dynn_Sampedro:0 "Sampedro" + dynn_A_n_tld__o_act_n:0 "Añón" + dynn_Lema:0 "Lema" + dynn_Pose:0 "Pose" + dynn_Paz:0 "Paz" + dynn_Mari_n_tld_o:0 "Mariño" + dynn_Parada:0 "Parada" + dynn_Dios:0 "Dios" + dynn_Mu_n_tld_iz:0 "Muñiz" + dynn_Rivas:0 "Rivas" + dynn_Gude:0 "Gude" + dynn_Olveira:0 "Olveira" + dynn_Arias:0 "Arias" + dynn_Deiros:0 "Deiros" + dynn_Sant_i_act_n:0 "Santín" + dynn_Neira:0 "Neira" + dynn_Crujeiras:0 "Crujeiras" + dynn_Fontal:0 "Fontal" diff --git a/localization/english/replace/names/NEOW_character_names_l_english.yml b/localization/english/replace/names/NEOW_character_names_l_english.yml index b46d7ac2..5ddecbcb 100644 --- a/localization/english/replace/names/NEOW_character_names_l_english.yml +++ b/localization/english/replace/names/NEOW_character_names_l_english.yml @@ -550,6 +550,7 @@ Albert:0 "Albert" Alberta:0 "Alberta" Alberte:0 "Alberte" + Alberte_male:0 "Alberte" Albertine:0 "Albertine" Albertino_female:0 "Albertino" Alberto:0 "Alberto" @@ -2053,6 +2054,7 @@ Carlile:0 "Carlile" Carlo:0 "Carlo" Carlos:0 "Carlos" + Carlos_spc_Alberte:0 "Carlos Alberte" Carlos_spc_Alberto:0 "Carlos Alberto" Carlos_spc_Ant_o_act_n:0 "Carlos Antón" Carlos_spc_Chabier:0 "Carlos Chabier" @@ -6659,6 +6661,7 @@ Logi:0 "Logi" Loinaz:0 "Loinaz" Lois:0 "Lois" + Lois_male:0 "Lois" Lojze:0 "Lojze" Lola:0 "Lola" Loli:0 "Loli" @@ -11600,6 +11603,7 @@ Mehrdad:0 "Mehrdad" Romina:0 "Romina" Ernst-Wilhelm:0 "Ernst-Wilhelm" + Nicasio:0 "Nicasio" Cyrill:0 "Cyrill" Muharem:0 "Muharem" Bo_z_crn_a:0 "Boža" @@ -11657,3 +11661,109 @@ Vanja_female:0 "Vanja" Zorana:0 "Zorana" _Z_crn_eljka:0 "Željka" + Agosti_n_tld_o:0 "Agostiño" + Xo_a_act_n:0 "Xoán" + Xo_a_act_n_spc_Xos_e_act_:0 "Xoán Xosé" + Xo_a_act_n_spc_Lois:0 "Xoán Lois" + Xo_a_act_n_spc_Manuel:0 "Xoán Manuel" + Xo_a_act_n_spc_Francisco:0 "Xoán Francisco" + Xos_e_act_:0 "Xosé" + Perfecto:0 "Perfecto" + Inocencio:0 "Inocencio" + Fiz:0 "Fiz" + Ux_i_act_o:0 "Uxío" + Miguel_spc_Anxo:0 "Miguel Anxo" + Anxo:0 "Anxo" + Anxo_spc_Mar_i_act_a:0 "Anxo María" + Xos_e_act__spc_Ant_o_act_n:0 "Xosé Antón" + Xos_e_act__spc_Carlos:0 "Xosé Carlos" + Xos_e_act__spc_Mar_i_act_a:0 "Xosé María" + Xos_e_act__spc_Manuel:0 "Xosé Manuel" + Xos_e_act__spc_Manoel:0 "Xosé Manoel" + Xos_e_act__spc_Anxo:0 "Xosé Anxo" + Xos_e_act__spc_Ram_o_act_n:0 "Xosé Ramón" + Xes_u_act_s_spc_Mar_i_act_a:0 "Xesús María" + Mar_i_act_a_spc_Cristina:0 "María Cristina" + Enma:0 "Enma" + Xes_u_act_s:0 "Xesús" + Eliseu:0 "Eliseu" + Tareixa:0 "Tareixa" + Xenaro:0 "Xenaro" + Venceslau:0 "Venceslau" + Gumersindo:0 "Gumersindo" + Guillerme:0 "Guillerme" + Laureano:0 "Laureano" + Xulio:0 "Xulio" + Olalla:0 "Olalla" + Xusto:0 "Xusto" + Maximino:0 "Maximino" + Hadri_a_act_n:0 "Hadrián" + Xerm_a_act_n:0 "Xermán" + Marcial:0 "Marcial" + Xosefina:0 "Xosefina" + Stanislas:0 "Stanislas" + Antoni_n_tld_a:0 "Antoniña" + Borxa:0 "Borxa" + Ignacio_spc_Xabier:0 "Ignacio Xabier" + Francisco_spc_Xabier:0 "Francisco Xabier" + Xema:0 "Xema" + Xaime:0 "Xaime" + Roi:0 "Roi" + Xurxo:0 "Xurxo" + Serxio:0 "Serxio" + Edelmiro:0 "Edelmiro" + Saleta:0 "Saleta" + Xiao:0 "Xiao" + Xi_a_act_n:0 "Xián" + Xaqu_i_act_n:0 "Xaquín" + Delf_i_act_n:0 "Delfín" + Coralia:0 "Coralia" + Maruxa:0 "Maruxa" + Wilson:0 "Wilson" + Ces_a_act_reo:0 "Cesáreo" + J_e_act_ssica:0 "Jéssica" + C_a_act_ndido:0 "Cándido" + Delio:0 "Delio" + Ant_i_act_a:0 "Antía" + Pastor:0 "Pastor" + Xacobe:0 "Xacobe" + Fern_a_act_n:0 "Fernán" + Bieito:0 "Bieito" + Brais:0 "Brais" + Lourenzo:0 "Lourenzo" + Roxelio:0 "Roxelio" + Paio:0 "Paio" + _A_act_nxeles:0 "Ánxeles" + Xoel:0 "Xoel" + Den_i_act_s:0 "Denís" + Telesforo:0 "Telesforo" + Edelmira:0 "Edelmira" + Xairo:0 "Xairo" + Xacinto:0 "Xacinto" + No_e_act_:0 "Noé" + Lu_i_act_sa_spc_Mar_i_act_a:0 "Luísa María" + Mar_i_act_a_spc_Olga:0 "María Olga" + Mar_i_act_a_spc_Olga:0 "María Olga" + Mar_i_act_a_spc_Tareixa:0 "María Tareixa" + Mar_i_act_a_spc__A_act_nxeles:0 "María Ánxeles" + Mar_i_act_a_spc_Xes_u_act_s:0 "María Xesús" + Manuel_spc_Xaime:0 "Manuel Xaime" + Manuel_spc_Henrique:0 "Manuel Henrique" + Manuel_spc_Antonio:0 "Manuel Antonio" + Ram_o_act_n_spc_Anxo:0 "Ramón Anxo" + Lois_spc_Anxo:0 "Lois Anxo" + Alberte_spc_Manuel:0 "Alberte Manuel" + Xos_e_act__spc_Ignacio:0 "Xosé Ignacio" + Xo_a_act_n_spc_Alberte:0 "Xoán Alberte" + Xo_a_act_n_spc_Carlos:0 "Xoán Carlos" + Xo_a_act_n_spc_Ignacio:0 "Xoán Ignacio" + Xos_e_act__spc_Diego:0 "Xosé Diego" + Xos_e_act__spc_Armando:0 "Xosé Armando" + Xos_e_act__spc_Lois:0 "Xosé Lois" + Xos_e_act__spc_Fernando:0 "Xosé Fernando" + Xos_e_act__spc_Xo_a_act_n:0 "Xosé Xoán" + Francisco_spc_Xos_e_act_:0 "Francisco Xosé" + Serxio_spc_Xos_e_act_:0 "Serxio Xosé" + Emilio_spc_Xos_e_act_:0 "Emilio Xosé" + Daniel_spc_Xos_e_act_:0 "Daniel Xosé" + Ver_o_act_nica:0 "Verónica"