N3OW/common/scripted_effects/09_dlc_mpo_scripted_effects.txt

6681 lines
142 KiB
Text
Raw Normal View History

2026-03-10 00:41:50 +00:00
# Used in the Migration flow
# Requires:
# scope:actor - the character recieving the title
# scope:target_title - the title in question
creating_kingdom_empire_title_effect = {
save_scope_as = old_title
if = {
limit = {
scope:target_title.tier = tier_kingdom
}
create_dynamic_title = {
tier = kingdom
name = NEW_CREATED_TITLE_NAME
}
}
else_if = {
limit = {
scope:target_title.tier = tier_empire
}
create_dynamic_title = {
tier = empire
name = NEW_CREATED_TITLE_NAME
}
}
create_title_and_vassal_change = {
type = created
save_scope_as = change
add_claim_on_loss = no
}
scope:new_title = {
add_to_list = creating_new_titles
}
every_in_list = {
list = creating_new_titles
change_title_holder = {
holder = scope:old_holder
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
scope:new_title = {
set_coa = scope:old_title
set_color_from_title = scope:old_title
set_capital_county = scope:old_title.title_capital_county
}
scope:old_holder = { set_primary_title_to = scope:new_title }
}
migration_find_fitting_title_effect = {
save_scope_as = old_holder
if = { # If they are losing all their core lands, but it's not their main title, we'll just move them into one of their vassal lands
limit = {
scope:old_holder = {
NOT = {
any_held_county = {
exists = duchy
NOT = { target_is_de_jure_liege_or_above = scope:target_title }
}
}
any_vassal = {
any_held_county = {
exists = duchy
NOT = { target_is_de_jure_liege_or_above = scope:target_title }
}
}
}
NOT = { scope:target_title = scope:old_holder.primary_title }
}
create_title_and_vassal_change = {
type = revoked
save_scope_as = change
}
scope:old_holder = {
ordered_vassal = {
limit = {
any_held_county = {
exists = duchy
NOT = { target_is_de_jure_liege_or_above = scope:target_title }
}
}
order_by = {
value = 1
if = {
limit = {
government_has_flag = government_is_herder
}
add = 500
}
subtract = domicile.herd
}
ordered_held_county = {
limit = {
exists = duchy
NOT = { target_is_de_jure_liege_or_above = scope:target_title }
}
order_by = {
value = 1
add = county_fertility
}
change_title_holder = {
holder = scope:old_holder
change = scope:change
}
}
}
}
resolve_title_and_vassal_change = scope:change
}
if = { # If it is their primary title, we try to find a fitting replacement for them
limit = {
scope:target_title = scope:old_holder.primary_title
}
if = { # For kingdoms and empires, we simply make a dynamic title for one of their leftover titles
limit = {
scope:target_title.tier > tier_duchy
scope:old_holder = {
any_realm_county = {
holder = scope:old_holder
NOT = { target_is_de_jure_liege_or_above = scope:target_title }
}
}
}
scope:old_holder = {
random_realm_county = {
limit = {
holder = scope:old_holder
NOT = { target_is_de_jure_liege_or_above = scope:target_title }
}
creating_kingdom_empire_title_effect = yes
}
}
}
else_if = { # For duchies, we try to find a fitting title, first by checking if they have an uncreated title to one of their lands
limit = {
scope:target_title.holder = scope:old_holder
scope:target_title.tier = tier_duchy
scope:old_holder.capital_province.duchy = {
is_title_created = no
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change2
}
scope:old_holder.capital_province.duchy ?= {
change_title_holder = {
holder = scope:old_holder
change = scope:change2
}
}
resolve_title_and_vassal_change = scope:change2
}
else_if = { # Or if one of their vassals do
limit = {
scope:target_title = {
tier = tier_duchy
any_direct_de_facto_vassal_title = {
duchy ?= { is_title_created = no }
}
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change2
}
scope:target_title = {
random_direct_de_facto_vassal_title = {
limit = {
duchy ?= { is_title_created = no }
}
save_scope_as = old_holder_new_capital
duchy ?= {
add_to_list = title_change
}
}
}
scope:old_holder_new_capital.duchy ?= {
if = {
limit = {
any_de_jure_county = {
holder ?= { government_has_flag = government_is_herder }
holder.liege ?= scope:old_holder
}
}
random_de_jure_county = {
limit = {
holder ?= { government_has_flag = government_is_herder }
holder.liege ?= scope:old_holder
}
add_to_list = title_change
}
}
else_if = {
limit = {
any_de_jure_county = {
holder.liege ?= scope:old_holder
}
}
random_de_jure_county = {
limit = {
holder.liege ?= scope:old_holder
}
add_to_list = title_change
}
}
}
every_in_list = {
list = title_change
change_title_holder = {
holder = scope:old_holder
change = scope:change2
}
}
resolve_title_and_vassal_change = scope:change2
}
}
}
migration_settle_down_obedient_vassal_effect = {
scope:actor = {
ordered_in_list = {
variable = obedient_vassals
order_by = {
value = 1
domicile ?= {
add = herd
}
}
limit = {
is_landed = no
}
save_scope_as = current_vassal
add_to_list = settled_vassal
}
remove_list_variable = {
name = obedient_vassals
target = scope:current_vassal
}
}
change_title_holder = {
holder = scope:current_vassal
change = scope:change4
}
set_variable = {
name = migration_previous_culture
years = 5
value = culture
}
set_county_culture = scope:current_vassal.domicile.domicile_culture
set_county_faith = scope:current_vassal.domicile.domicile_faith
scope:current_vassal = {
change_liege = {
liege = scope:actor
change = scope:change4
}
}
}
migration_fitting_vassal_lands_effect = {
if = {
limit = {
scope:target_title.tier >= tier_$UPPER_TIER$
any_in_list = {
variable = obedient_vassals
count >= 1
}
}
while = {
limit = {
any_realm_county = {
NOR = {
$LOWER_TIER$ = scope:actor.capital_province.$LOWER_TIER$
holder = { is_in_list = settled_vassal }
}
}
any_in_list = {
variable = obedient_vassals
count >= 1
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change4
}
ordered_realm_county = {
limit = {
NOR = {
$LOWER_TIER$ = scope:actor.capital_province.$LOWER_TIER$
holder = { is_in_list = settled_vassal }
}
}
order_by = {
value = 1
every_de_jure_county = { add = 50 }
$LOWER_TIER$.title_capital_county = { add = county_fertility }
if = {
limit = {
this = $LOWER_TIER$.title_capital_county
}
add = 500
}
}
migration_settle_down_obedient_vassal_effect = yes
$LOWER_TIER$ = {
if = {
limit = {
OR = {
is_title_created = no
holder ?= {
NOT = { is_in_list = settled_vassal }
OR = {
liege = scope:actor
top_liege = scope:actor
}
}
}
}
change_title_holder = {
holder = scope:current_vassal
change = scope:change4
}
}
}
}
resolve_title_and_vassal_change = scope:change4
}
}
}
migration_message_effect = {
save_scope_as = old_holder
every_neighboring_top_liege_realm_owner = { add_to_temporary_list = old_holder_neighbours }
# Messages for Self
send_interface_message = {
type = msg_migration_into_realm
title = msg_migration_into_realm_title
desc = msg_migration_into_realm_desc
left_icon = scope:actor
right_icon = scope:target_title
}
if = {
limit = { is_tributary = yes }
# Messages for Suzerains and fellow Tributaries
suzerain = {
save_temporary_scope_as = suzerain_temp
add_to_temporary_list = old_holder_suzerain # for debugging
send_interface_message = {
type = msg_migration_into_realm
title = msg_migration_into_realm_tributary_title
desc = msg_migration_into_realm_tributary_desc
left_icon = scope:actor
right_icon = scope:old_holder
}
every_player = {
limit = {
is_tributary_of = scope:suzerain_temp
NOT = { this = scope:old_holder } # Self
}
send_interface_message = {
type = msg_migration_into_realm
title = msg_migration_into_realm_fellow_tributary_title
desc = msg_migration_into_realm_fellow_tributary_desc
left_icon = scope:actor
right_icon = scope:old_holder
}
}
clear_saved_scope = suzerain_temp
}
}
else_if = {
limit = { is_independent_ruler = no }
# Messages for Lieges and fellow Vassals
top_liege = {
save_temporary_scope_as = top_liege_temp
add_to_temporary_list = old_holder_top_liege # for debugging
send_interface_message = {
type = msg_migration_into_realm
title = msg_migration_into_realm_vassal_title
desc = msg_migration_into_realm_vassal_desc
left_icon = scope:actor
right_icon = scope:old_holder
}
every_player = {
limit = {
is_vassal_of = scope:top_liege_temp
NOT = { this = scope:old_holder } # Self
}
send_interface_message = {
type = msg_migration_into_realm
title = msg_migration_into_realm_fellow_vassal_title
desc = msg_migration_into_realm_fellow_vassal_desc
left_icon = scope:actor
right_icon = scope:old_holder
}
}
}
clear_saved_scope = top_liege_temp
}
# Messages for Vassals
every_player = {
limit = { is_vassal_of = scope:old_holder }
send_interface_message = {
type = msg_migration_into_realm
title = msg_migration_into_realm_tributary_title
desc = msg_migration_into_realm_tributary_desc
left_icon = scope:actor
right_icon = scope:old_holder
}
}
# Messages for Tributaries
every_player = {
limit = { is_tributary_of = scope:old_holder }
send_interface_message = {
type = msg_migration_into_realm
title = msg_migration_into_suzerain_title
desc = msg_migration_into_suzerain_desc
left_icon = scope:actor
right_icon = scope:old_holder
}
}
# Messages for Neighbours
every_player = {
limit = {
is_in_list = old_holder_neighbours
NOR = { # Exclude all those who have already had a message
this = scope:actor
is_in_list = old_holder # Self
is_in_list = old_holder_suzerain # Suzerains
suzerain = { is_in_list = old_holder_suzerain } # Fellow Tributaries
is_in_list = old_holder_top_liege # Lieges
top_liege = { is_in_list = old_holder_top_liege } # Fellow Vassals
is_vassal_of = scope:old_holder # Vassals
is_tributary_of = scope:old_holder # Tributaries
var:migration_neighbour_cooldown ?= scope:actor # Avoid duplicates
}
}
set_variable = {
name = migration_neighbour_cooldown
value = scope:actor
days = 1
}
send_interface_message = {
type = msg_migration_into_neighbour
title = msg_migration_into_neighbour_title
desc = msg_migration_into_neighbour_desc
left_icon = scope:actor
right_icon = scope:old_holder.top_liege
}
}
clear_saved_scope = old_holder
}
migration_title_and_vassal_change_effect = {
scope:domain ?= {
if = {
limit = {
tier = tier_county
}
holder = {
add_to_list = old_holder
}
}
else = {
every_de_jure_county_holder = {
limit = {
is_independent_ruler = yes
}
add_to_list = old_holder
}
}
}
scope:target_title.holder ?= {
add_to_list = old_holder
}
# Change 1: The old holder will attempt to create a new title for their lands, if they are losing their primary title
every_in_list = {
list = old_holder
# Inform relevant people
migration_message_effect = yes
# Run effects
migration_find_fitting_title_effect = yes
}
# Change 2: Hand out titles to actor
create_title_and_vassal_change = {
type = migration
save_scope_as = change1
add_claim_on_loss = yes
}
scope:target_title ?= {
change_title_holder = {
holder = scope:actor
change = scope:change1
}
}
if = {
limit = {
NOT = { scope:domain = scope:target_title }
}
scope:domain = {
change_title_holder = {
holder = scope:actor
change = scope:change1
}
}
}
if = {
limit = {
scope:domain.tier = tier_duchy
}
scope:domain = {
every_de_jure_county = {
change_title_holder = {
holder = scope:actor
change = scope:change1
}
}
}
}
if = {
limit = {
scope:target_title.tier >= tier_kingdom
}
scope:target_title ?= {
every_de_jure_county_holder = {
limit = {
OR = {
any_in_list = {
list = old_holder
this = prev
}
this = scope:recipient
AND = {
scope:recipient = this.liege
any_held_county = {
exists = duchy
NOT = { target_is_de_jure_liege_or_above = scope:target_title }
}
}
}
}
change_title_holder = {
holder = scope:actor
change = scope:change1
}
}
}
scope:target_title = {
every_de_jure_county_holder = {
limit = {
OR = {
any_in_list = {
list = old_holder
NOT = { this = prev }
this = prev.liege
}
AND = {
NOT = { this = scope:recipient }
scope:recipient = this.liege
}
}
NOT = { this = scope:actor }
}
add_to_list = new_vassals
}
}
}
every_in_list = {
list = new_vassals
change_liege = {
liege = scope:actor
change = scope:change1
}
}
resolve_title_and_vassal_change = scope:change1
# Change 3: Free vassals who don't belong in the new title
scope:actor = {
every_vassal = {
limit = {
NOT = {
any_held_county = {
target_is_de_jure_liege_or_above = scope:target_title
}
}
}
create_title_and_vassal_change = {
type = independency
save_scope_as = change
}
becomes_independent = {
change = scope:change
}
resolve_title_and_vassal_change = scope:change
}
}
# Change 4: Destroy top title of a nomad who doesn't have any land anymore
every_in_list = {
list = old_holder
if = {
limit = {
NOT = {
any_held_title = {
tier = tier_county
exists = duchy
}
}
any_held_title = {
tier >= tier_county
is_landless_type_title = no
}
}
every_held_title = {
limit = {
tier >= tier_county
is_landless_type_title = no
}
prev = { destroy_title = prev }
}
}
}
# Change 5: Settle down previously obedient vassals in new lands
scope:actor = {
if = {
limit = {
any_in_list = {
variable = obedient_vassals
count >= 1
}
}
# Empire solution
migration_fitting_vassal_lands_effect = {
UPPER_TIER = empire
LOWER_TIER = kingdom
}
# Kingdom solution
migration_fitting_vassal_lands_effect = {
UPPER_TIER = kingdom
LOWER_TIER = duchy
}
# Duchy solution
if = {
limit = {
scope:target_title.tier >= tier_duchy
domain_limit_available < 0
any_in_list = {
variable = obedient_vassals
count >= 1
}
}
while = {
limit = {
domain_limit_available < 0
any_in_list = {
variable = obedient_vassals
count >= 1
}
any_held_county = {
exists = duchy
NOT = { this = scope:actor.capital_province.county }
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change4
}
ordered_held_county = {
limit = {
exists = duchy
NOT = { this = scope:actor.capital_province.county }
}
order_by = {
value = 1
if = {
limit = {
NOT = {
any_neighboring_county = {
this = scope:actor.capital_province.county
}
}
}
add = 100
}
}
migration_settle_down_obedient_vassal_effect = yes
}
resolve_title_and_vassal_change = scope:change4
}
}
# Clean up liege setup
create_title_and_vassal_change = {
type = granted
save_scope_as = change4
}
every_vassal = {
limit = {
exists = primary_title.de_jure_liege.holder
}
change_liege = {
liege = primary_title.de_jure_liege.holder
change = scope:change4
}
}
resolve_title_and_vassal_change = scope:change4
}
}
# Change 6: If you cannot find land for your old obedient vassals, just destroy their camp and make them a part of your court
scope:actor = {
every_in_list = {
variable = obedient_vassals
limit = {
is_landed = no
}
save_scope_as = current_vassal
every_courtier_or_guest = {
set_employer = scope:actor
}
destroy_title = primary_title
root = {
remove_list_variable = {
name = obedient_vassals
target = scope:current_vassal
}
}
set_employer = scope:actor
}
}
# Change 7: Move domiciles so they are in the right provinces
every_in_list = {
list = old_holder
domicile ?= { move_domicile = prev.capital_province }
every_vassal = {
domicile ?= { move_domicile = prev.capital_province }
}
}
scope:actor = {
domicile ?= { move_domicile = prev.capital_province }
every_vassal = {
domicile ?= { move_domicile = prev.capital_province }
}
}
# Change 8: If for some reason you have any vassals who are still your subjects, but don't hold land, they will become independent
scope:actor = {
every_vassal = {
limit = {
NOT = {
any_held_county = {
exists = duchy
}
}
}
create_title_and_vassal_change = {
type = independency
save_scope_as = change
}
becomes_independent = {
change = scope:change
}
resolve_title_and_vassal_change = scope:change
}
}
# Inform nearby peeps
every_player = {
limit = {
NOR = {
this = scope:actor
is_in_list = old_holder_suzerain
suzerain = { is_in_list = old_holder_suzerain }
is_in_list = old_holder_top_liege
top_liege = { is_in_list = old_holder_top_liege }
}
is_in_list = old_holder_neighbours
}
}
# Debugging
if = {
limit = { debug_only = yes }
debug_log = "Migration completed"
debug_log_scopes = yes
}
}
migration_set_obedient_vassal_effect = {
create_title_and_vassal_change = {
type = migration
save_scope_as = change
}
every_realm_county = {
limit = {
holder = scope:current_vassal
is_nomad_title = no
is_noble_family_title = no
}
create_character = {
template = herder_character
faith = scope:current_vassal.domicile.domicile_faith
culture = scope:current_vassal.domicile.domicile_culture
location = scope:current_vassal.primary_title.title_capital_county.title_province
save_scope_as = herder_character
after_creation = {
remove_character_flag = peasant_outfit
add_to_list = government_change
}
}
change_title_holder = {
holder = scope:herder_character
change = scope:change
}
title_province = {
if = {
limit = {
has_holding_type = nomad_holding
}
set_holding_type = herder_holding
}
}
}
resolve_title_and_vassal_change = scope:change
every_held_title = {
limit = {
tier >= tier_duchy
}
prev = { destroy_title = prev }
}
every_in_list = {
list = government_change
change_government = herder_government
remove_from_list = government_change
}
scope:actor = {
add_to_variable_list = {
name = obedient_vassals
target = scope:current_vassal
}
}
}
offer_confederation_accepter_effect = {
if = {
limit = {
scope:actor = {
is_confederation_member = no
}
}
custom_tooltip = create_confederation_recipient_tt
}
else = {
custom_tooltip = join_confederation_recipient_tt
}
custom_tooltip = confederation_defensive_wars_tt
custom_tooltip = unlock_leave_confederation_interaction_tt
}
confederation_realm_transfer_effect = {
save_scope_as = transfer_liege
every_vassal = {
limit = {
highest_held_title_tier >= tier_county
primary_title = {
NOT = {
any_this_title_or_de_jure_above = {
holder = scope:transfer_liege
}
}
}
}
add_to_list = vassals_to_transfer
}
add_to_list = vassals_to_transfer
create_title_and_vassal_change = {
type = granted
save_scope_as = change_3
add_claim_on_loss = no
}
primary_title = {
change_title_holder = {
holder = $CHARACTER$
change = scope:change_3
}
}
resolve_title_and_vassal_change = scope:change_3
every_in_list = {
custom = custom.every_non_de_jure_vassal
list = vassals_to_transfer
create_title_and_vassal_change = {
type = swear_fealty
save_scope_as = change_4
}
change_liege = {
liege = $CHARACTER$
change = scope:change_4
}
resolve_title_and_vassal_change = scope:change_4
}
}
mpo_mongol_recovered_head_content_effect = {
if = {
limit = {
any_side_participant = {
2026-04-25 18:55:31 -04:00
is_alive = yes
2026-03-10 00:41:50 +00:00
has_variable = beheaded_warrior
is_ruler = yes
}
}
every_side_participant = {
limit = {
2026-04-25 18:55:31 -04:00
is_alive = yes
2026-03-10 00:41:50 +00:00
has_variable = beheaded_warrior
is_ruler = yes
}
save_scope_as = beheaded_liege
random_list = {
1 = {
trigger = {
is_imprisoned = no
}
modifier = {
OR = {
is_consort_of = var:beheaded_warrior
is_close_family_of = var:beheaded_warrior
}
add = 20
}
modifier = {
has_variable = beheaded_warrior_powerful_vassal
add = 1
}
trigger_event = {
id = mpo_nomad_events.1001
days = 1
}
add_character_flag = {
flag = beheaded_warrior_cooldown
years = 2
}
}
4 = {
modifier = {
OR = {
has_multiple_players = yes
is_ai = yes
}
factor = 2
}
remove_variable = beheaded_warrior
remove_variable = beheaded_warrior_foe
remove_variable = beheaded_warrior_councillor
remove_variable = beheaded_warrior_powerful_vassal
remove_variable = beheaded_warrior_accolade
remove_variable = beheaded_warrior_location
}
}
}
}
}
mpo_beheaded_warrior_artifact_creation_effect = {
#Important character to an emperor - high tier artifact
if = {
limit = {
highest_held_title_tier >= tier_empire
mpo_important_beheaded_warrior_trigger = yes
}
random_list = {
2 = {
trigger = {
scope:beheaded_warrior = {
is_close_family_of = root
}
}
create_artifact = {
name = warriors_head_artifact
description = kin_head_artifact_desc
rarity = famed
type = miscellaneous
modifier = kin_head_modifier_tier_3
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
scope:head_artifact = {
add_scaled_artifact_modifier_dynasty_prestige_effect = yes
}
}
1 = {
trigger = {
has_variable = beheaded_warrior_accolade
}
create_artifact = {
name = warriors_head_artifact
description = accolade_head_artifact_desc
rarity = famed
type = miscellaneous
modifier = accolade_head_modifier_tier_3
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = famed
type = miscellaneous
modifier = warriors_head_modifier_tier_3
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = famed
type = miscellaneous
modifier = warriors_head_modifier_tier_3_alt
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = famed
type = miscellaneous
modifier = warriors_head_modifier_tier_3_alt_2
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = famed
type = miscellaneous
modifier = warriors_head_modifier_tier_3_alt_3
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
}
}
#Mid-tier character
else_if = {
limit = {
OR = {
highest_held_title_tier >= tier_empire
AND = {
highest_held_title_tier >= tier_kingdom
mpo_important_beheaded_warrior_trigger = yes
}
}
}
random_list = {
2 = {
trigger = {
scope:beheaded_warrior = {
is_close_family_of = root
}
}
create_artifact = {
name = warriors_head_artifact
description = kin_head_artifact_desc
rarity = masterwork
type = miscellaneous
modifier = kin_head_modifier_tier_2
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
scope:head_artifact = {
add_scaled_artifact_modifier_dynasty_prestige_effect = yes
}
}
1 = {
trigger = {
has_variable = beheaded_warrior_accolade
}
create_artifact = {
name = warriors_head_artifact
description = accolade_head_artifact_desc
rarity = masterwork
type = miscellaneous
modifier = accolade_head_modifier_tier_2
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = masterwork
type = miscellaneous
modifier = warriors_head_modifier_tier_2
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = masterwork
type = miscellaneous
modifier = warriors_head_modifier_tier_2_alt
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = masterwork
type = miscellaneous
modifier = warriors_head_modifier_tier_2_alt_2
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = masterwork
type = miscellaneous
modifier = warriors_head_modifier_tier_2_alt_3
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
}
}
#Low tier character
else = {
random_list = {
2 = {
trigger = {
scope:beheaded_warrior = {
is_close_family_of = root
}
}
create_artifact = {
name = warriors_head_artifact
description = kin_head_artifact_desc
rarity = common
type = miscellaneous
modifier = kin_head_modifier_tier_1
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
scope:head_artifact = {
add_scaled_artifact_modifier_dynasty_prestige_effect = yes
}
}
1 = {
trigger = {
has_variable = beheaded_warrior_accolade
}
create_artifact = {
name = warriors_head_artifact
description = accolade_head_artifact_desc
rarity = common
type = miscellaneous
modifier = accolade_head_modifier_tier_1
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = common
type = miscellaneous
modifier = warriors_head_modifier_tier_1
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = common
type = miscellaneous
modifier = warriors_head_modifier_tier_1_alt
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = common
type = miscellaneous
modifier = warriors_head_modifier_tier_1_alt_2
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
1 = {
create_artifact = {
name = warriors_head_artifact
description = warriors_head_artifact_desc
rarity = common
type = miscellaneous
modifier = warriors_head_modifier_tier_1_alt_3
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:beheaded_warrior
save_scope_as = head_artifact
}
}
}
}
save_scope_as = owner
hidden_effect = {
scope:head_artifact = {
add_scaled_artifact_modifier_combat_effect = yes
set_max_durability = 50
}
}
}
mpo_execution_head_artifact_creation_effect = {
save_scope_as = owner
#This is an emperor's head
if = {
limit = {
has_character_flag = execution_head_illustrious_flag
}
create_artifact = {
name = executed_head_artifact
description = executed_head_emperor_artifact_desc
rarity = illustrious
type = miscellaneous
modifier = artifact_monthly_prestige_gain_per_dread_add_4_modifier
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:victim
save_scope_as = head_artifact
}
}
else = {
create_artifact = {
name = executed_head_artifact
description = executed_head_king_artifact_desc
rarity = famed
type = miscellaneous
modifier = artifact_monthly_prestige_gain_per_dread_add_3_modifier
decaying = yes
template = mpo_severed_head_template
visuals = pocket_severed_head
creator = scope:victim
save_scope_as = head_artifact
}
}
if = {
limit = {
scope:head_artifact = {
NOT = {
artifact_owner = {
this = root
}
}
}
}
scope:head_artifact = {
set_owner = root
}
}
random_list = {
4 = {
trigger = {
OR = {
is_at_war_with = scope:headless_heir
is_causing_raid_hostility_towards = scope:headless_heir
}
}
scope:head_artifact = {
add_2_scaled_artifact_modifier_combat_effect = yes
}
}
1 = {
trigger = {
scope:headless_heir = {
government_has_flag = government_is_nomadic
}
}
scope:head_artifact = {
add_scaled_artifact_modifier_archer_cavalry_damage_add_effect = yes
add_scaled_artifact_modifier_minor_prestige_effect = yes
}
}
1 = {
trigger = {
OR = {
scope:victim.faith = {
NOT = {
this = root.faith
}
}
scope:victim = {
has_trait = zealous
}
scope:victim = {
has_trait = pilgrim
}
scope:headless_heir.primary_title = {
is_head_of_faith = yes
}
}
}
scope:head_artifact = {
add_scaled_artifact_modifier_piety_effect = yes
}
scope:head_artifact = {
add_scaled_artifact_modifier_devotion_effect = yes
}
}
1 = {
trigger = {
OR = {
scope:victim.faith = {
NOT = {
this = root.faith
}
}
scope:victim = {
has_trait = zealous
}
scope:victim = {
has_trait = pilgrim
}
scope:headless_heir.primary_title = {
is_head_of_faith = yes
}
}
}
scope:head_artifact = {
add_2_scaled_artifact_modifier_devotion_effect = yes
}
}
1 = {
scope:head_artifact = {
add_scaled_artifact_modifier_grandeur_big_effect = yes
}
}
1 = {
scope:head_artifact = {
add_2_scaled_artifact_modifier_majesty_effect = yes
}
}
1 = {
trigger = {
scope:victim = {
OR = {
has_trait = education_stewardship_4
has_trait = education_stewardship_5
has_trait = administrator
has_trait = avaricious
has_trait = architect
stewardship >= very_high_skill_rating
}
}
}
scope:head_artifact = {
add_2_scaled_artifact_modifier_rulership_effect = yes
}
}
1 = {
trigger = {
exists = root.dynasty
NOT = {
scope:victim.dynasty ?= {
this = root.dynasty
}
}
}
scope:head_artifact = {
add_scaled_artifact_modifier_dynasty_prestige_effect = yes
add_scaled_artifact_modifier_hire_mercenary_effect = yes
}
}
}
hidden_effect = {
scope:head_artifact = {
set_max_durability = 50
}
}
}
### PAIZA ###
ai_paiza_giveaway_effect = {
random_courtier = {
limit = {
NOT = {
any_character_artifact = {
scope:artifact.var:paiza_patron ?= root
}
}
}
mpo_create_paiza_artifact_effect = {
PATRON = root
GRANTEE = this
}
}
random_vassal = {
limit = {
NOT = {
any_character_artifact = {
scope:artifact.var:paiza_patron ?= root
}
}
}
mpo_create_paiza_artifact_effect = {
PATRON = root
GRANTEE = this
}
}
}
mpo_find_suitable_merchant_effect = {
random_list = {
1 = { #Merv
trigger = {
title:c_bukhara = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_bukhara.development_level
}
title:b_bukhara = {
save_scope_as = merchant_origin
}
}
1 = { #Nishapur
trigger = {
title:c_nishapur = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_nishapur.development_level
}
title:b_nishapur = {
save_scope_as = merchant_origin
}
}
1 = { #Khotan
trigger = {
title:c_khotan = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_khotan.development_level
}
title:b_khotan = {
save_scope_as = merchant_origin
}
}
1 = { #Wroclaw
trigger = {
title:c_breslau = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_breslau.development_level
}
title:b_breslau = {
save_scope_as = merchant_origin
}
}
1 = { #Krakow
trigger = {
title:c_krakowska = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_krakowska.development_level
}
title:b_krakow = {
save_scope_as = merchant_origin
}
}
1 = { #Novgorod
trigger = {
title:c_novgorod = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_novgorod.development_level
}
title:b_novgorod = {
save_scope_as = merchant_origin
}
}
1 = { #Kyiv
trigger = {
title:c_kiev = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_kiev.development_level
}
title:b_kiev = {
save_scope_as = merchant_origin
}
}
1 = { #Baghdad
trigger = {
title:c_baghdad = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_baghdad.development_level
}
title:b_baghdad = {
save_scope_as = merchant_origin
}
}
1 = { #Pisa
trigger = {
title:c_pisa = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_pisa.development_level
}
title:b_pisa = {
save_scope_as = merchant_origin
}
}
1 = { #Venice
trigger = {
title:c_baghdad = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_baghdad.development_level
}
title:b_baghdad = {
save_scope_as = merchant_origin
}
}
1 = { #Cairo
trigger = {
title:c_cairo = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_cairo.development_level
}
title:b_cairo = {
save_scope_as = merchant_origin
}
}
1 = { #Genua
trigger = {
title:c_genoa = {
development_level >= 30
NOT = {
holder.top_liege = {
government_has_flag = government_is_nomadic
}
}
}
}
modifier = {
add = title:c_genoa.development_level
}
title:b_genoa = {
save_scope_as = merchant_origin
}
}
1 = { #Constantinople
#something has to be in constantinople
modifier = {
add = title:c_byzantion.development_level
}
title:b_constantinople = {
save_scope_as = merchant_origin
}
}
}
hidden_effect = {
scope:merchant_origin.county = {
save_scope_as = merchant_county
}
create_character = {
location = scope:merchant_origin.county.title_province
template = foreign_merchant_template
save_scope_as = paiza_merchant
}
scope:paiza_merchant = {
add_gold = {
value = root.tiny_gold_value
multiply = 21.37
}
}
}
}
#scope:patron is the creator
#scope:receiver is who gets it
mpo_create_paiza_artifact_effect = {
$PATRON$ = {
save_scope_as = patron
}
$GRANTEE$ = {
save_scope_as = grantee
}
save_scope_value_as = {
name = wealth
value = {
value = 20
multiply = {
value = scope:patron.primary_title.tier
add = scope:patron.dominance_value
}
}
}
save_scope_value_as = {
name = quality
value = {
value = 20
multiply = {
value = scope:patron.primary_title.tier
add = scope:patron.dominance_value
}
}
}
scope:grantee = {
create_artifact = {
name = paiza_artifact_title
type = miscellaneous
template = paiza_artifact_template
creator = scope:patron
description = paiza_artifact_desc
visuals = paiza
wealth = scope:wealth
quality = scope:quality
modifier = artifact_steppe_danger_travel_high_modifier
modifier = artifact_steppe_advantage_2_modifier
save_scope_as = created_paiza
}
}
scope:created_paiza = {
set_variable = {
name = paiza_patron
value = scope:patron
}
}
}
mpo_paiza_innovation_reward_effect = {
switch = {
trigger = has_domicile_parameter
nomad_yurt_increased_innovation_paiza_lvl_1 = {
root = {
add_character_modifier = {
modifier = mpo_fascination_leap_modifier
years = 4
}
}
}
nomad_yurt_increased_innovation_paiza_lvl_2 = {
root = {
add_character_modifier = {
modifier = mpo_fascination_leap_modifier
years = 6
}
if = {
limit = {
culture = {
can_get_innovation_from = scope:merchant_origin.county.culture
}
}
culture = {
get_random_innovation_from = scope:merchant_origin.county.culture
}
}
}
}
nomad_yurt_increased_innovation_paiza_lvl_3 = {
root = {
add_character_modifier = {
modifier = mpo_fascination_leap_modifier
years = 8
}
if = {
limit = {
culture = {
can_get_innovation_from = scope:merchant_origin.county.culture
}
}
culture = {
get_random_innovation_from = scope:merchant_origin.county.culture
}
}
if = {
limit = {
culture = {
can_get_innovation_from = scope:merchant_origin.county.culture
}
}
culture = {
get_random_innovation_from = scope:merchant_origin.county.culture
}
}
}
}
}
root = {
if = {
limit = {
NOT = {
domicile ?= { has_domicile_building_or_higher = innovation_yurt_02 }
}
}
add_character_modifier = {
modifier = mpo_fascination_leap_modifier
years = 2
}
}
}
}
mpo_paiza_deal_grade_effect = {
if = {
limit = {
has_character_flag = established_paiza_system
}
set_variable = {
name = trade_gold_value
value = {
value = scope:paiza_merchant.var:paiza_gold_invested
multiply = 0.4
}
}
}
else = {
set_variable = {
name = trade_gold_value
value = {
value = scope:paiza_merchant.var:paiza_gold_invested
multiply = 0.2
}
}
}
set_variable = {
name = trade_gold_percent
value = 1
}
change_variable = {
name = trade_gold_percent
add = {
add = scope:paiza_merchant.sum_of_all_skills_value
multiply = 0.01
max = 4
min = 0
}
}
#custom_tooltip = paiza_merchant_skill_gold_percent
domicile ?= {
switch = {
trigger = has_domicile_parameter
nomad_yurt_paiza_more_gold_lvl_1 = {
custom_tooltip = paiza_yurt_gold_percent_1
root = {
change_variable = {
name = trade_gold_percent
add = 0.05
}
}
}
nomad_yurt_paiza_more_gold_lvl_2 = {
custom_tooltip = paiza_yurt_gold_percent_2
root = {
change_variable = {
name = trade_gold_percent
add = 0.1
}
}
}
nomad_yurt_paiza_more_gold_lvl_3 = {
custom_tooltip = paiza_yurt_gold_percent_3
root = {
change_variable = {
name = trade_gold_percent
add = 0.2
}
}
}
}
}
change_variable = {
name = trade_gold_value
multiply = root.var:trade_gold_percent
}
}
mpo_yurts_paiza_bonuses_tooltip_effect = {
if = {
limit = {
domicile ?= {
OR = {
has_domicile_building_or_higher = fertility_trade_yurt_01
has_domicile_building_or_higher = herd_trade_yurt_01
has_domicile_building_or_higher = knight_trade_yurt_01
has_domicile_building_or_higher = merchant_yurt_01
has_domicile_building_or_higher = char_trade_yurt_01
}
}
}
custom_tooltip = yurt_paiza_bonuses_generic
}
domicile ?= {
if = {
limit = {
has_domicile_building_or_higher = fertility_trade_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_paiza_fertility_gain_lvl_1 = { custom_tooltip = nomad_yurt_paiza_fertility_gain_lvl_1_tooltip }
nomad_yurt_paiza_fertility_gain_lvl_2 = { custom_tooltip = nomad_yurt_paiza_fertility_gain_lvl_2_tooltip }
nomad_yurt_paiza_fertility_gain_lvl_3 = { custom_tooltip = nomad_yurt_paiza_fertility_gain_lvl_3_tooltip }
}
}
if = {
limit = {
has_domicile_building_or_higher = herd_trade_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_paiza_herd_gain_lvl_1 = { custom_tooltip = nomad_yurt_paiza_herd_gain_lvl_1_tooltip }
nomad_yurt_paiza_herd_gain_lvl_2 = { custom_tooltip = nomad_yurt_paiza_herd_gain_lvl_2_tooltip }
nomad_yurt_paiza_herd_gain_lvl_3 = { custom_tooltip = nomad_yurt_paiza_herd_gain_lvl_3_tooltip }
}
}
if = {
limit = {
has_domicile_building_or_higher = knight_trade_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_paiza_maa_gain_lvl_1 = { custom_tooltip = nomad_yurt_paiza_maa_gain_lvl_1_tooltip }
nomad_yurt_paiza_maa_gain_lvl_2 = { custom_tooltip = nomad_yurt_paiza_maa_gain_lvl_2_tooltip }
nomad_yurt_paiza_maa_gain_lvl_3 = { custom_tooltip = nomad_yurt_paiza_maa_gain_lvl_3_tooltip }
}
}
if = {
limit = {
has_domicile_building_or_higher = merchant_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_paiza_more_gold_lvl_1 = { custom_tooltip = nomad_yurt_paiza_more_gold_lvl_1_tooltip }
nomad_yurt_paiza_more_gold_lvl_2 = { custom_tooltip = nomad_yurt_paiza_more_gold_lvl_2_tooltip }
nomad_yurt_paiza_more_gold_lvl_3 = { custom_tooltip = nomad_yurt_paiza_more_gold_lvl_3_tooltip }
}
}
if = {
limit = {
has_domicile_building_or_higher = char_trade_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_paiza_char_gain_lvl_1 = { custom_tooltip = nomad_yurt_paiza_char_gain_lvl_1_tooltip }
nomad_yurt_paiza_char_gain_lvl_2 = { custom_tooltip = nomad_yurt_paiza_char_gain_lvl_2_tooltip }
nomad_yurt_paiza_char_gain_lvl_3 = { custom_tooltip = nomad_yurt_paiza_char_gain_lvl_3_tooltip }
}
}
}
}
mpo_paiza_improve_maa_smol_effect = {
add_character_modifier = mpo_paiza_improve_maa_modifier
add_character_flag = paiza_metal_trade_yurt_flag
domicile ?= {
switch = {
trigger = has_domicile_building
paiza_metal_trade_yurt_01 = {
add_domicile_building = paiza_metal_trade_yurt_02
}
paiza_metal_trade_yurt_02 = {
add_domicile_building = paiza_metal_trade_yurt_03
}
paiza_metal_trade_yurt_03 = {
custom_tooltip = paiza_metal_yurt_smol_block
}
}
if = {
limit = {
NOT = {
has_domicile_building_or_higher = paiza_metal_trade_yurt_01
}
}
add_domicile_building = paiza_metal_trade_yurt_01
}
}
remove_character_flag = paiza_metal_trade_yurt_flag
}
mpo_paiza_improve_maa_effect = {
add_character_modifier = mpo_paiza_improve_maa_modifier
add_character_flag = paiza_metal_trade_yurt_flag
domicile ?= {
switch = {
trigger = has_domicile_building
paiza_metal_trade_yurt_01 = {
add_domicile_building = paiza_metal_trade_yurt_02
}
paiza_metal_trade_yurt_02 = {
add_domicile_building = paiza_metal_trade_yurt_03
}
paiza_metal_trade_yurt_03 = {
add_domicile_building = paiza_metal_trade_yurt_04
}
paiza_metal_trade_yurt_04 = {
add_domicile_building = paiza_metal_trade_yurt_05
}
paiza_metal_trade_yurt_05 = {
add_domicile_building = paiza_metal_trade_yurt_06
}
}
if = {
limit = {
NOT = {
has_domicile_building_or_higher = paiza_metal_trade_yurt_01
}
}
add_domicile_building = paiza_metal_trade_yurt_01
}
}
remove_character_flag = paiza_metal_trade_yurt_flag
}
mpo_paiza_abuse_counter_effect = {
$PAIZA_PATRON$ = { save_scope_as = paiza_patron }
$PAIZA_ABUSER$ = { save_scope_as = paiza_abuser }
if = {
limit = {
scope:paiza_patron = {
is_ai = no
}
}
custom_tooltip = mpo_paiza_abuse_counter_effect.random
scope:paiza_patron = {
trigger_event = {
id = mpo_decisions_events.0112
days = { 1 4 }
}
}
}
else = {
if = {
limit = {
NOT = {
exists = var:paiza_abuse_stance
}
}
custom_tooltip = mpo_paiza_abuse_counter_effect.indifferent
set_variable = {
name = paiza_abuse_stance
value = flag:indifferent
}
}
else_if = {
limit = {
exists = var:paiza_abuse_stance
}
switch = {
trigger = var:paiza_abuse_stance
flag:angry = {
custom_tooltip = mpo_paiza_abuse_counter_effect.angry
random_list = {
90 = {
modifier = {
add = mpo_paiza_abuse_khan_reaction_value
}
custom_tooltip = mpo_paiza_abuse_counter_effect.khan_reaction_action
trigger_event = {
id = mpo_decisions_events.0111
days = { 21 37 }
}
}
10 = {
custom_tooltip = mpo_paiza_abuse_counter_effect.khan_reaction_angry
}
}
}
flag:annoyed = {
custom_tooltip = mpo_paiza_abuse_counter_effect.annoyed
random_list = {
40 = {
modifier = {
add = mpo_paiza_abuse_khan_reaction_value
}
custom_tooltip = mpo_paiza_abuse_counter_effect.khan_reaction_action
trigger_event = {
id = mpo_decisions_events.0111
days = { 21 37 }
}
}
40 = {
custom_tooltip = mpo_paiza_abuse_counter_effect.khan_reaction_angry
modifier = {
add = {
value = mpo_paiza_abuse_khan_reaction_value
divide = 2
}
}
set_variable = {
name = paiza_abuse_stance
value = flag:angry
}
}
20 = {
custom_tooltip = mpo_paiza_abuse_counter_effect.khan_reaction_annoyed
}
}
}
flag:indifferent = {
custom_tooltip = mpo_paiza_abuse_counter_effect.indifferent
random_list = {
20 = {
custom_tooltip = mpo_paiza_abuse_counter_effect.annoyed
modifier = {
add = {
value = mpo_paiza_abuse_khan_reaction_value
divide = 2
}
}
set_variable = {
name = paiza_abuse_stance
value = flag:annoyed
}
}
80 = {
custom_tooltip = mpo_paiza_abuse_counter_effect.indifferent
}
}
}
}
}
}
trigger_event = {
id = mpo_decisions_events.0098
days = { 4 8 }
}
}
mpo_decisions_events_friend_fail_effect = {
random_list = {
4 = {
trigger = {
scope:friendship_target = {
is_ai = yes
}
OR = {
any_child = {
NOR = {
this = scope:friendship_target
this = scope:heir
has_relation_friend = scope:friendship_target
has_relation_best_friend = scope:friendship_target
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:friendship_target }
is_at_war_with = scope:friendship_target
}
is_imprisoned = no
is_incapable = no
is_courtier_of = root
age >= 6
}
any_sibling = {
NOR = {
this = scope:friendship_target
this = scope:heir
has_relation_friend = scope:friendship_target
has_relation_best_friend = scope:friendship_target
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:friendship_target }
is_at_war_with = scope:friendship_target
}
is_imprisoned = no
is_incapable = no
is_courtier_of = root
age >= 6
}
}
}
random_child = {
limit = {
NOR = {
this = scope:friendship_target
this = scope:heir
has_relation_friend = scope:friendship_target
has_relation_best_friend = scope:friendship_target
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:friendship_target }
is_at_war_with = scope:friendship_target
}
is_imprisoned = no
is_incapable = no
is_courtier_of = root
age >= 6
}
save_scope_as = accidental_friend
}
if = {
limit = {
NOT = {
exists = scope:accidental_friend
}
}
random_sibling = {
limit = {
NOR = {
this = scope:friendship_target
this = scope:heir
has_relation_friend = scope:friendship_target
has_relation_best_friend = scope:friendship_target
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:friendship_target }
is_at_war_with = scope:friendship_target
}
is_imprisoned = no
is_incapable = no
is_courtier_of = root
age >= 6
}
save_scope_as = accidental_friend
}
}
scope:friendship_target = {
set_relation_friend = {
target = root
reason = friend_accidental_introduction
}
}
}
2 = {
trigger = {
scope:friendship_target = {
is_ai = yes
}
scope:friendship_target = {
NOR = {
has_relation_friend = scope:friendship_target
has_relation_best_friend = scope:friendship_target
has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
}
}
}
scope:friendship_target = {
set_relation_friend = {
target = root
reason = friend_accidental_introduction
}
}
}
1 = {
scope:friendship_target = {
add_opinion = {
modifier = charmed_opinion
target = root
opinion = 30
}
}
}
2 = {
trigger = {
culture = {
NOT = {
this = scope:friendship_target.culture
}
cultural_acceptance = {
target = scope:friendship_target.culture
value < 100
}
}
}
culture = {
change_cultural_acceptance = {
target = scope:friendship_target.culture
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_friendly_visit
}
}
if = {
limit = {
scope:heir.culture = {
NOR = {
this = scope:friendship_target.culture
this = root.culture
}
cultural_acceptance = {
target = scope:friendship_target.culture
value < 100
}
}
}
scope:heir.culture = {
change_cultural_acceptance = {
target = scope:friendship_target.culture
value = minor_cultural_acceptance_gain
desc = cultural_acceptance_friendly_visit
}
}
}
}
1 = {
trigger = {
scope:friendship_target = {
is_ai = yes
}
scope:friendship_target = {
short_term_gold >= minor_gold_value
}
}
scope:friendship_target = {
pay_short_term_gold = {
target = scope:heir
gold = minor_gold_value
}
}
scope:heir = {
add_opinion = {
target = scope:friendship_target
modifier = gift_opinion
opinion = 25
}
}
}
1 = {
trigger = {
scope:friendship_target = {
is_ai = yes
government_has_flag = government_is_nomadic
exists = domicile
domicile.herd >= domicile.minor_herd_value
}
government_has_flag = government_is_nomadic
}
pay_herd = {
target = root
value = domicile.minor_herd_value
}
add_opinion = {
target = scope:friendship_target
modifier = gift_opinion
opinion = 25
}
}
1 = {
trigger = {
scope:friendship_target = {
has_lifestyle = diplomacy_lifestyle
}
}
scope:heir = {
add_diplomacy_skill = 1
add_diplomacy_lifestyle_xp = minor_lifestyle_xp
}
}
1 = {
trigger = {
scope:friendship_target = {
has_lifestyle = martial_lifestyle
}
}
scope:heir = {
add_martial_skill = 1
add_martial_lifestyle_xp = minor_lifestyle_xp
}
}
1 = {
trigger = {
scope:friendship_target = {
has_lifestyle = stewardship_lifestyle
}
}
scope:heir = {
add_stewardship_skill = 1
add_stewardship_lifestyle_xp = minor_lifestyle_xp
}
}
1 = {
trigger = {
scope:friendship_target = {
has_lifestyle = intrigue_lifestyle
}
}
scope:heir = {
add_intrigue_skill = 1
add_intrigue_lifestyle_xp = minor_lifestyle_xp
}
}
1 = {
trigger = {
scope:friendship_target = {
has_lifestyle = learning_lifestyle
}
}
scope:heir = {
add_learning_skill = 1
add_learning_lifestyle_xp = minor_lifestyle_xp
}
}
1 = {
trigger = {
OR = {
stress > 0
scope:heir = {
stress > 0
}
}
}
add_stress = minor_stress_impact_loss
scope:heir = {
add_stress = medium_stress_impact_loss
}
}
}
}
mpo_heir_lifestyle_xp_gain_effect = {
if = {
limit = {
scope:lifestyle_trait = {
OR = {
this = trait:lifestyle_physician
this = trait:lifestyle_mystic
this = trait:lifestyle_blademaster
this = trait:lifestyle_reveler
}
}
}
scope:heir = {
add_trait_xp = {
trait = scope:lifestyle_trait
value = 30
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_hunter
}
}
scope:heir = {
add_trait_xp = {
trait = lifestyle_hunter
track = hunter
value = 15
}
}
scope:heir = {
add_trait_xp = {
trait = lifestyle_hunter
track = falconer
value = 15
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_traveler
}
}
scope:heir = {
add_trait_xp = {
trait = lifestyle_traveler
track = travel
value = 15
}
}
scope:heir = {
add_trait_xp = {
trait = lifestyle_traveler
track = danger
value = 15
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_herbalist
}
scope:heir = {
NOT = {
has_trait = lifestyle_physician
}
}
}
scope:heir = {
add_trait = lifestyle_physician
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_herbalist
}
scope:heir = {
has_trait = lifestyle_physician
}
}
scope:heir = {
add_trait_xp = {
trait = lifestyle_physician
value = 30
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_poet
}
}
scope:heir = {
add_diplomacy_skill = 1
add_diplomacy_lifestyle_xp = medium_lifestyle_xp
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_gardener
}
scope:heir = {
NOT = {
has_trait = lifestyle_herbalist
}
}
}
scope:heir = {
add_trait = lifestyle_herbalist
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_gardener
}
scope:heir = {
has_trait = lifestyle_herbalist
}
}
scope:heir = {
add_stewardship_skill = 1
add_diplomacy_lifestyle_xp = medium_lifestyle_xp
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:drunkard
}
scope:heir = {
has_trait = lifestyle_reveler
}
}
scope:heir = {
add_trait = lifestyle_reveler
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:drunkard
}
scope:heir = {
has_trait = lifestyle_reveler
}
}
scope:heir = {
add_trait_xp = {
trait = lifestyle_reveler
value = 30
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:hashishiyah
}
scope:heir = {
NOT = {
has_trait = lifestyle_herbalist
}
}
}
scope:heir = {
add_trait = lifestyle_herbalist
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:hashishiyah
}
scope:heir = {
has_trait = lifestyle_reveler
}
}
scope:heir = {
add_trait = lifestyle_reveler
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:hashishiyah
}
scope:heir = {
has_trait = lifestyle_reveler
}
}
scope:heir = {
add_trait_xp = {
trait = lifestyle_reveler
value = 30
}
}
}
}
mpo_heir_hastiluder_xp_gain_effect = {
random_list = {
1 = {
trigger = {
scope:friendship_target = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
scope:heir = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
}
scope:heir = {
add_trait_xp = {
trait = tourney_participant
track = foot
value = 35
}
}
}
1 = {
trigger = {
scope:friendship_target = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
scope:heir = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
scope:heir = {
add_trait_xp = {
trait = tourney_participant
track = horse
value = 35
}
}
}
1 = {
trigger = {
scope:friendship_target = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
}
scope:heir = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
}
}
scope:heir = {
add_trait_xp = {
trait = tourney_participant
track = bow
value = 35
}
}
}
1 = {
trigger = {
scope:friendship_target = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 50
}
}
scope:heir = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 50
}
}
}
scope:heir = {
add_trait_xp = {
trait = tourney_participant
track = wit
value = 35
}
}
}
}
}
mpo_target_lifestyle_xp_gain_effect = {
if = {
limit = {
scope:lifestyle_trait = {
OR = {
this = trait:lifestyle_physician
this = trait:lifestyle_mystic
this = trait:lifestyle_blademaster
this = trait:lifestyle_reveler
}
}
}
scope:friendship_target = {
add_trait_xp = {
trait = scope:lifestyle_trait
value = 20
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_hunter
}
}
scope:friendship_target = {
add_trait_xp = {
trait = lifestyle_hunter
track = hunter
value = 10
}
}
scope:friendship_target = {
add_trait_xp = {
trait = lifestyle_hunter
track = falconer
value = 10
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_traveler
}
}
scope:friendship_target = {
add_trait_xp = {
trait = lifestyle_traveler
track = travel
value = 10
}
}
scope:friendship_target = {
add_trait_xp = {
trait = lifestyle_traveler
track = danger
value = 10
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_herbalist
}
scope:heir = {
has_trait = lifestyle_physician
}
}
scope:friendship_target = {
add_trait_xp = {
trait = lifestyle_physician
value = 20
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_poet
}
}
scope:friendship_target = {
add_diplomacy_lifestyle_xp = medium_lifestyle_xp
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:lifestyle_gardener
}
scope:heir = {
has_trait = lifestyle_herbalist
}
}
scope:friendship_target = {
add_diplomacy_lifestyle_xp = medium_lifestyle_xp
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:drunkard
}
scope:heir = {
has_trait = lifestyle_reveler
}
}
scope:friendship_target = {
add_trait_xp = {
trait = lifestyle_reveler
value = 20
}
}
}
else_if = {
limit = {
scope:lifestyle_trait = {
this = trait:hashishiyah
}
scope:heir = {
has_trait = lifestyle_reveler
}
}
scope:friendship_target = {
add_trait_xp = {
trait = lifestyle_reveler
value = 20
}
}
}
else = {
scope:friendship_target = {
add_stress = medium_stress_loss
}
}
}
mpo_target_hastiluder_xp_gain_effect = {
random_list = {
1 = {
trigger = {
scope:friendship_target = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
scope:heir = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
}
scope:friendship_target = {
add_trait_xp = {
trait = tourney_participant
track = foot
value = 20
}
}
}
1 = {
trigger = {
scope:friendship_target = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
scope:heir = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
}
scope:friendship_target = {
add_trait_xp = {
trait = tourney_participant
track = horse
value = 20
}
}
}
1 = {
trigger = {
scope:friendship_target = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
}
scope:heir = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
}
}
scope:friendship_target = {
add_trait_xp = {
trait = tourney_participant
track = bow
value = 20
}
}
}
1 = {
trigger = {
scope:friendship_target = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 50
}
}
scope:heir = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 50
}
}
}
scope:friendship_target = {
add_trait_xp = {
trait = tourney_participant
track = wit
value = 20
}
}
}
}
}
nomad_domicile_refund_effect = {
#Domicile buildings give cash refund
if = {
limit = {
has_domicile = yes
}
save_scope_as = former_nomad
custom_tooltip = nomad_domicile_buildings_converted
hidden_effect = {
add_gold = {
value = {
value = medium_gold_value
switch = {
trigger = domicile.num_domicile_buildings
7 = { multiply = 7 }
6 = { multiply = 6 }
5 = { multiply = 5 }
4 = { multiply = 4 }
3 = { multiply = 3 }
2 = { multiply = 2 }
}
}
}
}
}
}
nomad_convert_people_to_tribe_effect = {
change_government = tribal_government
#Winning a cool war to get this government should mean high authority
if = {
limit = {
exists = scope:overrunner
this = scope:overrunner
}
add_realm_law = tribal_authority_2
}
}
nomad_convert_people_to_clan_effect = {
change_government = clan_government
#Start off crown authorities.
if = {
limit = {
NOT = { has_realm_law = crown_authority_1 }
}
add_realm_law_skip_effects = crown_authority_1
}
}
nomad_convert_people_to_feudal_effect = {
change_government = feudal_government
#Start off crown authorities.
if = {
limit = {
NOT = { has_realm_law = crown_authority_1 }
}
add_realm_law_skip_effects = crown_authority_1
}
}
mpo_overrunning_vassal_title_distribution_effect = {
every_held_title = {
limit = {
tier = tier_county
any_this_title_or_de_jure_above = {
tier = tier_duchy
NOT = {
this = scope:new_capital_duchy
}
}
}
add_to_list = overrun_counties
}
scope:target = {
every_direct_de_jure_vassal_title = {
limit = {
tier = tier_duchy
NOT = {
this = scope:new_capital_duchy
}
any_de_jure_county = {
count >= 2
holder = scope:attacker
}
OR = {
NOT = { exists = holder }
holder.top_liege = scope:defender
holder.top_liege = scope:attacker
}
}
add_to_list = overrun_duchies
}
}
#Distribute all counties
while = {
limit = {
any_in_list = {
list = overrun_counties
holder = scope:attacker
}
any_in_list = {
list = potential_overrunning_vassals
NOT = {
has_character_flag = got_overrun_title
}
}
}
#Is a duchy available?
if = {
limit = {
any_in_list = {
list = overrun_duchies
any_de_jure_county = {
holder = scope:attacker
}
}
}
#Grant biggest duchy available
if = {
limit = {
any_in_list = {
list = overrun_duchies
#Forgive me for how stupid this is
any_de_jure_county = {
count >= 5
holder = scope:attacker
}
}
}
random_in_list = {
list = overrun_duchies
limit = {
any_de_jure_county = {
count >= 5
holder = scope:attacker
}
}
save_scope_as = duchy_to_grant
}
}
else_if = {
limit = {
any_in_list = {
list = overrun_duchies
#Forgive me for how stupid this is
any_de_jure_county = {
count >= 4
holder = scope:attacker
}
}
}
random_in_list = {
list = overrun_duchies
limit = {
any_de_jure_county = {
count >= 4
holder = scope:attacker
}
}
save_scope_as = duchy_to_grant
}
}
else_if = {
limit = {
any_in_list = {
list = overrun_duchies
#Forgive me for how stupid this is
any_de_jure_county = {
count >= 3
holder = scope:attacker
}
}
}
random_in_list = {
list = overrun_duchies
limit = {
any_de_jure_county = {
count >= 3
holder = scope:attacker
}
}
save_scope_as = duchy_to_grant
}
}
else = {
random_in_list = {
list = overrun_duchies
save_scope_as = duchy_to_grant
}
}
#Choose best county
scope:duchy_to_grant = {
if = {
limit = {
title_capital_county = {
holder = scope:attacker
}
}
title_capital_county = {
save_scope_as = title_to_grant
}
}
else = {
ordered_de_jure_county = {
order_by = development_level
limit = {
holder = scope:attacker
}
save_scope_as = title_to_grant
}
}
}
}
#Counts
else = {
ordered_in_list = {
order_by = development_level
list = overrun_counties
save_scope_as = title_to_grant
}
}
#Choose a vassal
ordered_in_list = {
list = potential_overrunning_vassals
limit = {
NOT = {
has_character_flag = got_overrun_title
}
}
order_by = max_military_strength
save_scope_as = title_gainer
#Add character flag - they should be done
add_character_flag = got_overrun_title
#tributaries go
hidden_effect = {
every_tributary = {
custom = custom.every_tributary
end_tributary = yes
}
}
#Give up nomadic titles
if = {
limit = {
NOT = {
scope:title_to_grant = {
any_county_province = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
}
mpo_overrunning_ending_nomadism_effect = yes
}
#Nomads should still move
else = {
hidden_effect = {
give_domain_to_herders = yes
}
}
}
scope:title_gainer = {
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change
}
scope:title_to_grant = {
change_title_holder = {
holder = scope:title_gainer
change = scope:title_change
}
}
resolve_title_and_vassal_change = scope:title_change
#Add duchy if they're getting one
if = {
limit = {
exists = scope:duchy_to_grant
}
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change
}
scope:duchy_to_grant = {
change_title_holder = {
holder = scope:title_gainer
change = scope:title_change
}
}
resolve_title_and_vassal_change = scope:title_change
}
#If they got a duchy, can bring over an existing vassal as a vassal
if = {
limit = {
exists = scope:duchy_to_grant
scope:duchy_to_grant = {
any_de_jure_county = {
holder = scope:attacker
is_in_list = overrun_counties
}
}
any_vassal = {
highest_held_title_tier >= tier_county
NOT = {
any_held_title = {
kingdom = scope:target
}
}
mpo_overrunning_willing_vassal_trigger = yes
}
}
scope:duchy_to_grant = {
random_de_jure_county = {
limit = {
holder = scope:attacker
is_in_list = overrun_counties
}
save_scope_as = undervassal_county
}
}
ordered_vassal = {
order_by = max_military_strength
limit = {
highest_held_title_tier >= tier_county
NOT = {
any_held_title = {
kingdom = scope:target
}
}
mpo_overrunning_willing_vassal_trigger = yes
}
save_scope_as = undervassal
#Give up nomadic titles
if = {
limit = {
NOT = {
scope:undervassal_county = {
any_county_province = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
}
mpo_overrunning_ending_nomadism_effect = yes
}
#Nomads should still move
else = {
hidden_effect = {
give_domain_to_herders = yes
}
}
#Change government to match attacker
scope:undervassal = {
if = {
limit = {
scope:title_to_grant = {
any_county_province = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
#Do nothing, they're still nomadic
}
else_if = {
limit = {
scope:undervassal_county = {
any_county_province = {
has_holding_type = tribal_holding
}
}
}
nomad_convert_people_to_tribe_effect = yes
}
else_if = {
limit = {
scope:undervassal = {
OR = {
#Personal reasons to go clan
faith.religion = religion:islam_religion
culture ?= {
OR = {
has_cultural_pillar = heritage_arabic
has_cultural_pillar = heritage_iranian
}
}
#county and liege are clan
AND = {
scope:title_to_grant = {
OR = {
faith.religion = religion:islam_religion
culture = {
OR = {
has_cultural_pillar = heritage_arabic
has_cultural_pillar = heritage_iranian
}
}
}
}
scope:attacker = {
government_has_flag = government_is_clan
}
}
}
}
}
nomad_convert_people_to_clan_effect = yes
}
else = {
nomad_convert_people_to_feudal_effect = yes
}
}
#Have to re-add them as a vassal probably
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
change_liege = {
liege = scope:undervassal_county.duchy.holder
change = scope:change
}
resolve_title_and_vassal_change = scope:change
#Give them their county
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change_2
}
scope:title_to_grant = {
change_title_holder = {
holder = scope:undervassal
change = scope:title_change_2
}
}
resolve_title_and_vassal_change = scope:title_change_2
}
}
}
#Change government
scope:attacker = {
if = {
limit = {
scope:title_to_grant = {
any_county_province = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
#Do nothing, they're still nomadic
}
else_if = {
limit = {
scope:title_to_grant = {
any_county_province = {
has_holding_type = tribal_holding
}
}
}
scope:title_gainer = {
nomad_convert_people_to_tribe_effect = yes
}
}
else_if = {
limit = {
scope:title_gainer = {
OR = {
#Personal reasons to go clan
faith.religion = religion:islam_religion
culture = {
OR = {
has_cultural_pillar = heritage_arabic
has_cultural_pillar = heritage_iranian
}
}
#county and liege are clan
AND = {
scope:title_to_grant = {
OR = {
faith.religion = religion:islam_religion
culture = {
OR = {
has_cultural_pillar = heritage_arabic
has_cultural_pillar = heritage_iranian
}
}
}
}
scope:attacker = {
government_has_flag = government_is_clan
}
}
}
}
}
scope:title_gainer = {
nomad_convert_people_to_clan_effect = yes
}
}
else = {
scope:title_gainer = {
nomad_convert_people_to_feudal_effect = yes
}
}
}
#Have to re-add them as a vassal probably
scope:title_gainer = {
if = {
limit = {
NOT = {
liege = scope:attacker
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
change_liege = {
liege = scope:attacker
change = scope:change
}
resolve_title_and_vassal_change = scope:change
}
}
#Remove chosen titles from list
scope:duchy_to_grant ?= {
remove_from_list = overrun_duchies
}
scope:title_to_grant = {
remove_from_list = overrun_counties
}
scope:undervassal_county ?= {
remove_from_list = overrun_counties
}
if = {
limit = {
exists = scope:duchy_to_grant
}
clear_saved_scope = duchy_to_grant
}
}
#ASSIGN VASSALS TO DUKES
every_vassal = {
limit = {
highest_held_title_tier = tier_county
primary_title = {
kingdom = scope:target
any_this_title_or_de_jure_above = {
tier = tier_duchy
exists = holder
NOT = {
holder = scope:attacker
}
holder.top_liege = scope:attacker
}
}
}
#Have to re-add them as a vassal probably
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
change_liege = {
liege = primary_title.duchy.holder
change = scope:change
}
resolve_title_and_vassal_change = scope:change
}
#GIVE DUKES THE REST OF THEIR COUNTIES FROM ATTACKER
every_held_title = {
limit = {
tier = tier_county
kingdom = scope:target
any_this_title_or_de_jure_above = {
tier = tier_duchy
exists = holder
NOT = {
holder = scope:attacker
}
holder = {
is_vassal_or_below_of = scope:attacker
}
}
}
scope:attacker = {
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change
}
}
change_title_holder = {
holder = duchy.holder
change = scope:title_change
}
scope:attacker = {
resolve_title_and_vassal_change = scope:title_change
}
}
#Get rid of this now-useless flag
every_vassal = {
limit = {
has_character_flag = got_overrun_title
}
remove_character_flag = got_overrun_title
}
}
2026-04-25 18:55:31 -04:00
mpo_duchy_overrunning_vassal_title_distribution_effect = {
#All counties but capital county are up for grabs
every_held_title = {
limit = {
tier = tier_county
NOT = {
this = scope:attacker.capital_county
}
}
add_to_list = overrun_counties
}
#Distribute all counties
while = {
limit = {
any_in_list = {
list = overrun_counties
holder = scope:attacker
}
any_in_list = {
list = potential_overrunning_vassals
NOT = {
has_character_flag = got_overrun_title
}
}
}
ordered_in_list = {
order_by = development_level
list = overrun_counties
save_scope_as = title_to_grant
}
#Choose a vassal
ordered_in_list = {
list = potential_overrunning_vassals
limit = {
NOT = {
has_character_flag = got_overrun_title
}
}
order_by = max_military_strength
save_scope_as = title_gainer
#Add character flag - they should be done
add_character_flag = got_overrun_title
#tributaries go
hidden_effect = {
every_tributary = {
custom = custom.every_tributary
end_tributary = yes
}
}
#Give up nomadic titles
if = {
limit = {
NOT = {
scope:title_to_grant = {
any_county_province = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
}
mpo_overrunning_ending_nomadism_effect = yes
}
#Nomads should still move
else = {
hidden_effect = {
give_domain_to_herders = yes
}
}
}
scope:title_gainer = {
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change
}
scope:title_to_grant = {
change_title_holder = {
holder = scope:title_gainer
change = scope:title_change
}
}
resolve_title_and_vassal_change = scope:title_change
#Add duchy if they're getting one
if = {
limit = {
exists = scope:duchy_to_grant
}
create_title_and_vassal_change = {
type = granted
save_scope_as = title_change
}
scope:duchy_to_grant = {
change_title_holder = {
holder = scope:title_gainer
change = scope:title_change
}
}
resolve_title_and_vassal_change = scope:title_change
}
}
#Change government
scope:attacker = {
if = {
limit = {
scope:title_to_grant = {
any_county_province = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
#Do nothing, they're still nomadic
}
else_if = {
limit = {
scope:title_to_grant = {
any_county_province = {
has_holding_type = tribal_holding
}
}
}
scope:title_gainer = {
nomad_convert_people_to_tribe_effect = yes
}
}
else_if = {
limit = {
scope:title_gainer = {
OR = {
#Personal reasons to go clan
faith.religion = religion:islam_religion
culture = {
OR = {
has_cultural_pillar = heritage_arabic
has_cultural_pillar = heritage_iranian
}
}
#county and liege are clan
AND = {
scope:title_to_grant = {
OR = {
faith.religion = religion:islam_religion
culture = {
OR = {
has_cultural_pillar = heritage_arabic
has_cultural_pillar = heritage_iranian
}
}
}
}
scope:attacker = {
government_has_flag = government_is_clan
}
}
}
}
}
scope:title_gainer = {
nomad_convert_people_to_clan_effect = yes
}
}
else = {
scope:title_gainer = {
nomad_convert_people_to_feudal_effect = yes
}
}
}
#Have to re-add them as a vassal probably
scope:title_gainer = {
if = {
limit = {
NOT = {
liege = scope:attacker
}
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
change_liege = {
liege = scope:attacker
change = scope:change
}
resolve_title_and_vassal_change = scope:change
}
}
#Remove chosen titles from list
scope:title_to_grant = {
remove_from_list = overrun_counties
}
scope:undervassal_county ?= {
remove_from_list = overrun_counties
}
}
#Get rid of this now-useless flag
every_vassal = {
limit = {
has_character_flag = got_overrun_title
}
remove_character_flag = got_overrun_title
}
}
2026-03-10 00:41:50 +00:00
mpo_overrunning_ending_nomadism_effect = {
#Wrap up being a nomad
nomad_domicile_refund_effect = yes
nomad_convert_herds_to_gold_special_troops_effect = yes
hidden_effect = {
give_domain_to_herders = yes
}
}
nomad_convert_herds_to_gold_special_troops_effect = {
save_scope_as = former_nomad
custom_tooltip = gold_army_for_herd_tt
hidden_effect = {
if = {
limit = {
domicile.herd >= 50
}
save_scope_as = army_getter
add_gold = {
value = domicile.herd
multiply = 0.3
min = 100
max = 10000
}
spawn_army = {
levies = 200
men_at_arms = {
type = horse_archers
men = { value = domicile.herd multiply = 0.02 min = 100 max = 10000 }
}
men_at_arms = {
type = steppe_raiders
men = { value = domicile.herd multiply = 0.01 min = 100 max = 10000 }
}
men_at_arms = {
type = nomad_lancers
men = { value = domicile.herd multiply = 0.01 min = 100 max = 10000 }
}
men_at_arms = {
type = nomadic_riders
men = { value = domicile.herd multiply = 0.1 min = 100 max = 10000 }
}
location = capital_province
inheritable = yes
uses_supply = yes
name = former_nomad_army_name
}
}
}
}
set_throatsinging_style_effect = {
random_list = {
10 = {
modifier = {
add = 10
is_female = yes
}
set_variable = {
name = throatsinging_style
value = flag:sygyt
}
}
10 = {
set_variable = {
name = throatsinging_style
value = flag:hoomei
}
}
10 = {
set_variable = {
name = throatsinging_style
value = flag:kargyraa
}
}
}
set_variable = {
name = throatsinging_practice
value = 1
}
}
mpo_dominance_scaled_minor_gold_gain = {
if = {
limit = {
OR = {
has_realm_law = nomadic_authority_4
has_realm_law = nomadic_authority_5
}
}
add_gold = massive_gold_value
}
if = {
limit = {
has_realm_law = nomadic_authority_3
}
add_gold = major_gold_value
}
if = {
limit = {
has_realm_law = nomadic_authority_2
}
add_gold = medium_gold_value
}
if = {
limit = {
has_realm_law = nomadic_authority_1
}
add_gold = minor_gold_value
}
}
mpo_decisions_events_0500_effect = {
custom_tooltip = {
text = mpo_decisions_events_0500_effect_vassal_tt
every_vassal = {
limit = {
NOT = {
is_obedient_to = root
}
}
add_opinion = {
target = root
modifier = obedience_opinion
}
}
}
custom_tooltip = {
text = mpo_decisions_events_0500_effect_courtier_tt
every_courtier = {
limit = {
NOR = {
is_obedient_to = root
has_obedience_reason = root
}
}
add_opinion = {
target = root
modifier = obedience_opinion
}
}
}
custom_tooltip = {
text = mpo_desperate_stance_invasion_cb_enable_var_tt
set_variable = mpo_desperate_stance_invasion_cb_enable_var
}
}
mpo_dominance_scaled_miniscule_gold_gain = {
if = {
limit = {
OR = {
has_realm_law = nomadic_authority_4
has_realm_law = nomadic_authority_5
}
}
add_gold = major_gold_value
}
if = {
limit = {
has_realm_law = nomadic_authority_3
}
add_gold = medium_gold_value
}
if = {
limit = {
has_realm_law = nomadic_authority_2
}
add_gold = minor_gold_value
}
if = {
limit = {
has_realm_law = nomadic_authority_1
}
add_gold = miniscule_gold_value
}
}
mpo_save_potential_blood_brother_war_allies_effect = {
scope:war = {
if = {
limit = {
any_war_attacker = {
count >= 2
mpo_valid_for_blood_brotherhood_trigger = yes
}
}
#Lord forgive me for this script
every_war_attacker = {
limit = {
mpo_valid_for_blood_brotherhood_trigger = yes
}
add_to_list = attacker_war_allies_list
}
while = {
limit = {
any_war_attacker = {
is_in_list = attacker_war_allies_list
}
}
random_war_attacker = {
limit = {
is_in_list = attacker_war_allies_list
}
save_scope_as = current_ally
}
every_war_attacker = {
limit = {
mpo_valid_for_blood_brotherhood_trigger = yes
NOT = {
this = scope:current_ally
}
}
add_to_variable_list = {
name = former_war_allies
target = scope:current_ally
years = 10
}
}
scope:current_ally = {
remove_from_list = attacker_war_allies_list
}
clear_saved_scope = current_ally
}
}
if = {
limit = {
any_war_defender = {
count >= 2
mpo_valid_for_blood_brotherhood_trigger = yes
}
}
every_war_defender = {
limit = {
mpo_valid_for_blood_brotherhood_trigger = yes
}
add_to_list = defender_war_allies_list
}
while = {
limit = {
any_war_defender = {
is_in_list = defender_war_allies_list
}
}
random_war_defender = {
limit = {
is_in_list = defender_war_allies_list
}
save_scope_as = current_ally
}
every_war_defender = {
limit = {
mpo_valid_for_blood_brotherhood_trigger = yes
NOT = {
this = scope:current_ally
}
}
add_to_variable_list = {
name = former_war_allies
target = scope:current_ally
years = 10
}
}
scope:current_ally = {
remove_from_list = defender_war_allies_list
}
clear_saved_scope = current_ally
}
}
}
}
mpo_blood_brother_new_family_member_opinion_effect = {
hidden_effect = {
#Add blood brother close family opinion to actor's family
save_scope_as = new_kin
scope:other_blood_brother = {
add_to_list = other_blood_brother_family
add_character_flag = unhandled_family
every_child = {
add_to_list = other_blood_brother_family
add_character_flag = unhandled_family
}
primary_spouse ?= {
add_to_list = other_blood_brother_family
add_character_flag = unhandled_family
}
}
#Save other family on new kin
while = {
limit = {
any_in_list = {
list = other_blood_brother_family
has_character_flag = unhandled_family
}
}
random_in_list = {
list = other_blood_brother_family
limit = {
has_character_flag = unhandled_family
}
save_scope_as = other_blood_brother_picked_family
remove_character_flag = unhandled_family
}
scope:other_blood_brother_picked_family = {
add_opinion = {
target = scope:new_kin
modifier = blood_brother_close_family_opinion
}
reverse_add_opinion = {
target = scope:new_kin
modifier = blood_brother_close_family_opinion
}
}
clear_saved_scope = other_blood_brother_picked_family
}
}
}
mpo_blood_brother_remove_family_opinion_effect = {
hidden_effect = {
#Add blood brother close family opinion to actor's family
save_scope_as = former_kin
scope:other_blood_brother = {
add_to_list = other_blood_brother_family
add_character_flag = unhandled_family
every_child = {
add_to_list = other_blood_brother_family
add_character_flag = unhandled_family
}
primary_spouse ?= {
add_to_list = other_blood_brother_family
add_character_flag = unhandled_family
}
}
#Remove other family on former kin
while = {
limit = {
any_in_list = {
list = other_blood_brother_family
has_character_flag = unhandled_family
}
}
random_in_list = {
list = other_blood_brother_family
limit = {
has_character_flag = unhandled_family
}
save_scope_as = other_blood_brother_picked_family
remove_character_flag = unhandled_family
}
scope:other_blood_brother_picked_family = {
remove_opinion = {
target = scope:former_kin
modifier = blood_brother_close_family_opinion
}
scope:former_kin = {
remove_opinion = {
target = scope:other_blood_brother_picked_family
modifier = blood_brother_close_family_opinion
}
}
}
clear_saved_scope = other_blood_brother_picked_family
}
}
}
mpo_blood_brother_tooltip_actor_effect = {
show_as_tooltip = {
set_relation_blood_brother = scope:recipient
}
custom_tooltip = blood_brother_alliance_actor_alliance_past_tt
custom_tooltip = blood_brother_actor_gains_hook_past_tt
custom_tooltip = blood_brother_actor_recipient_hook_past_tt
}
mpo_blood_brother_tooltip_recipient_effect = {
show_as_tooltip = { set_relation_blood_brother = scope:actor }
custom_tooltip = blood_brother_alliance_recipient_alliance_past_tt
custom_tooltip = blood_brother_recipient_gains_hook_past_tt
custom_tooltip = blood_brother_recipient_actor_hook_past_tt
}
make_blood_brother_save_common_enemy_effect = {
save_temporary_scope_as = blood_brother_temp
#DUKES OR HIGHER
#Nemeses and rivals
if = {
limit = {
any_relation = {
type = nemesis
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
ordered_relation = {
order_by = max_military_strength
type = nemesis
limit = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
save_scope_as = shared_foe
}
}
else_if = {
limit = {
any_relation = {
type = rival
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
ordered_relation = {
order_by = max_military_strength
type = rival
limit = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
save_scope_as = shared_foe
}
}
#You have a house feud against someone recipient is also opposed to
else_if = {
limit = {
exists = house.house_head
exists = scope:recipient.house
NOT = {
house = scope:recipient.house
}
house = {
any_house_relation = {
has_house_relation_level = feud
any_relation_house = {
house_head = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
}
}
}
house = {
random_house_relation = {
limit = {
has_house_relation_level = feud
any_relation_house = {
house_head = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
}
random_relation_house = {
limit = {
house_head = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
house_head = { save_scope_as = shared_foe }
}
}
}
}
#In faction against someone recipient is opposed to
else_if = {
limit = {
liege ?= {
any_targeting_faction = {
any_faction_member = {
this = scope:actor
}
}
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
liege = {
save_scope_as = shared_foe
}
}
#You are at war with someone that recipient is also opposed to
else_if = {
limit = {
any_war_enemy = {
NOT = { has_variable = rebel_leader_peasants }
any_character_war = {
is_war_leader = prev
is_war_leader = scope:actor
}
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
ordered_war_enemy = {
order_by = max_military_strength
limit = {
NOT = { has_variable = rebel_leader_peasants }
any_character_war = {
is_war_leader = prev
is_war_leader = scope:actor
}
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
save_scope_as = shared_foe
}
}
#You have a faction member that recipient is also opposed to
else_if = {
limit = {
any_targeting_faction = {
any_faction_member = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
}
random_targeting_faction = {
ordered_faction_member = {
order_by = max_military_strength
limit = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
save_scope_as = shared_foe
}
}
}
#You are a title claimant against someone recipient don't like
else_if = {
limit = {
any_claim = {
exists = holder
NOT = {
scope:recipient = { has_claim_on = prev }
}
holder = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
}
ordered_claim = {
order_by = tier
limit = {
exists = holder
NOT = {
scope:recipient = { has_claim_on = prev }
}
holder = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
holder = {
save_scope_as = shared_foe
}
}
}
#You have a title claimant that recipient is also opposed to
else_if = {
limit = {
any_held_title = {
NOT = {
scope:recipient = {
has_claim_on = prev
}
}
any_claimant = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
}
ordered_held_title = {
order_by = tier
limit = {
NOT = {
scope:recipient = {
has_claim_on = prev
}
}
any_claimant = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
}
ordered_claimant = {
order_by = current_military_strength
limit = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
save_scope_as = shared_foe
}
}
}
#ANYONE IS FINE
#Nemeses and rivals
else_if = {
limit = {
any_relation = {
type = nemesis
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
ordered_relation = {
order_by = max_military_strength
type = nemesis
limit = { mpo_blood_brother_common_enemy_sub_trigger = yes }
save_scope_as = shared_foe
}
}
else_if = {
limit = {
any_relation = {
type = rival
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
ordered_relation = {
order_by = max_military_strength
type = rival
limit = { mpo_blood_brother_common_enemy_sub_trigger = yes }
save_scope_as = shared_foe
}
}
#You have a house feud against someone recipient is also opposed to
else_if = {
limit = {
exists = house.house_head
exists = scope:recipient.house
NOT = {
house = scope:recipient.house
}
house = {
any_house_relation = {
has_house_relation_level = feud
any_relation_house = {
house_head = { mpo_blood_brother_common_enemy_sub_trigger = yes }
}
}
}
}
house = {
random_house_relation = {
limit = {
has_house_relation_level = feud
any_relation_house = {
house_head = { mpo_blood_brother_common_enemy_sub_trigger = yes }
}
}
random_relation_house = {
limit = {
house_head = { mpo_blood_brother_common_enemy_sub_trigger = yes }
}
house_head = { save_scope_as = shared_foe }
}
}
}
}
#In faction against someone recipient is opposed to
else_if = {
limit = {
liege ?= {
any_targeting_faction = {
any_faction_member = {
this = scope:actor
}
}
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
liege = {
save_scope_as = shared_foe
}
}
#You are at war with someone that recipient is also opposed to
else_if = {
limit = {
any_war_enemy = {
NOT = { has_variable = rebel_leader_peasants }
any_character_war = {
is_war_leader = prev
is_war_leader = scope:actor
}
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
ordered_war_enemy = {
order_by = max_military_strength
limit = {
NOT = { has_variable = rebel_leader_peasants }
any_character_war = {
is_war_leader = prev
is_war_leader = scope:actor
}
mpo_blood_brother_common_enemy_sub_trigger = yes
}
save_scope_as = shared_foe
}
}
#You have a faction member that recipient is also opposed to
else_if = {
limit = {
any_targeting_faction = {
any_faction_member = {
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
}
random_targeting_faction = {
ordered_faction_member = {
order_by = max_military_strength
limit = {
mpo_blood_brother_common_enemy_sub_trigger = yes
}
save_scope_as = shared_foe
}
}
}
#You are a title claimant against someone recipient don't like
else_if = {
limit = {
any_claim = {
exists = holder
NOT = {
scope:recipient = { has_claim_on = prev }
}
holder = {
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
}
ordered_claim = {
order_by = tier
limit = {
exists = holder
NOT = {
scope:recipient = { has_claim_on = prev }
}
holder = {
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
holder = {
save_scope_as = shared_foe
}
}
}
#You have a title claimant that recipient is also opposed to
else_if = {
limit = {
any_held_title = {
NOT = {
scope:recipient = {
has_claim_on = prev
}
}
any_claimant = {
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
}
ordered_held_title = {
order_by = tier
limit = {
NOT = {
scope:recipient = {
has_claim_on = prev
}
}
any_claimant = {
mpo_blood_brother_common_enemy_sub_trigger = yes
}
}
ordered_claimant = {
order_by = current_military_strength
limit = {
mpo_blood_brother_common_enemy_sub_trigger = yes
mpo_ideal_common_foe_trigger = yes
}
save_scope_as = shared_foe
}
}
}
}
mpo_remove_blood_brother_modifiers_effect = {
remove_character_modifier = blood_brother_foe_modifier
remove_character_modifier = blood_brother_august_modifier
remove_character_modifier = blood_brother_august_nomadic_modifier
remove_character_modifier = blood_brother_warrior_modifier
remove_character_modifier = blood_brother_clever_modifier
remove_character_modifier = blood_brother_clever_nomadic_modifier
remove_character_modifier = blood_brother_loving_modifier
if = {
limit = {
has_variable = blood_brother_foe
}
remove_variable = blood_brother_foe
}
if = {
limit = {
any_relation = {
type = blood_brother
}
}
every_relation = {
type = blood_brother
remove_character_modifier = blood_brother_foe_modifier
remove_character_modifier = blood_brother_august_modifier
remove_character_modifier = blood_brother_august_nomadic_modifier
remove_character_modifier = blood_brother_warrior_modifier
remove_character_modifier = blood_brother_clever_modifier
remove_character_modifier = blood_brother_clever_nomadic_modifier
remove_character_modifier = blood_brother_loving_modifier
if = {
limit = {
has_variable = blood_brother_foe
}
remove_variable = blood_brother_foe
}
}
}
}
refill_maa_with_herd_effect = {
save_scope_as = nomad_temp
while = {
limit = {
scope:actor.domicile.herd > 0
any_maa_regiment = {
maa_regiments_valid_to_refill_trigger = yes
}
}
random_maa_regiment = {
limit = {
maa_regiments_valid_to_refill_trigger = yes
}
save_scope_as = maa_scope
save_scope_value_as = {
name = current_herd_max_value_scope
value = scope:actor.domicile.herd
}
scope:actor.domicile ?= {
change_herd = {
value = {
add = scope:maa_scope.replenishable_troops_value
divide = herd_refill_value
max = scope:current_herd_max_value_scope
multiply = -1
}
}
}
change_maa_troops_count = replenishable_troops_with_herd_value
}
}
}
end_blood_brotherhood_effect = {
if = {
limit = {
has_relation_blood_brother = $TARGET$
}
remove_relation_blood_brother = $TARGET$
}
}
make_obedient_recipient_to_actor_effect = {
if = {
limit = {
scope:recipient = {
obedience_target = scope:actor
NOT = { is_obedient_to = scope:actor }
}
}
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = obedience_opinion
}
}
}
}
lower_dominance_level_effect = {
switch = {
trigger = has_realm_law
nomadic_authority_1 = {
# Nothing happens
}
nomadic_authority_2 = {
remove_realm_law = nomadic_authority_2
add_realm_law = nomadic_authority_1
}
nomadic_authority_3 = {
remove_realm_law = nomadic_authority_3
add_realm_law = nomadic_authority_2
}
nomadic_authority_4 = {
remove_realm_law = nomadic_authority_4
add_realm_law = nomadic_authority_3
}
}
set_variable = {
name = nomadic_authority_cooldown
years = 5
}
}
adopt_nomadic_ways_decision_effect = {
change_government = nomad_government
custom_tooltip = adopt_nomadic_ways_decision_title_tt
custom_tooltip = adopt_nomadic_ways_decision_herd_tt
if = {
limit = { NOT = { has_trait = nomadic_philosophy } }
add_trait_force_tooltip = nomadic_philosophy
}
}
# Different effect as we cannot access the Herder scope in the preview
adopt_nomadic_ways_decision_event_effect = {
add_character_flag = {
flag = domicile_culture_and_faith_check
days = 1
}
set_variable = {
name = previous_provisions
value = root.domicile.provisions
}
change_government = nomad_government
location.county = { save_scope_as = title }
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
scope:title = {
change_title_holder = {
holder = root
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
# We give you 25% of your provisions as Herd
custom_tooltip = adopt_nomadic_ways_decision_herd_tt
domicile = {
change_herd = {
value = root.var:previous_provisions
multiply = 0.25
}
}
if = {
limit = { NOT = { has_trait = nomadic_philosophy } }
add_trait = nomadic_philosophy
}
}
mpo_confederation_join_defensive_war_effect = {
scope:defender.confederation = {
every_confederation_member = {
limit = {
highest_held_title_tier >= tier_county
NOR = {
is_at_war_with = scope:defender
is_allied_to = scope:attacker
is_imprisoned_by = scope:defender
is_imprisoned_by = scope:attacker
is_defender_in_war = scope:war
is_attacker_in_war = scope:war
}
}
scope:war = {
add_defender = prev
}
}
}
}
confederation_migration_notification_effect = {
confederation ?= {
every_confederation_member = {
limit = {
NOT = {
this = scope:actor
}
}
send_interface_message = {
type = msg_broken_confederation
title = msg_broken_confederation_migration
desc = msg_broken_confederation_migration_desc
left_icon = scope:actor
}
}
}
send_interface_message = {
type = msg_broken_confederation
title = msg_broken_confederation_migration_root
desc = msg_broken_confederation_migration_root_desc
left_icon = confederation
}
add_character_flag = {
flag = migrating_from_confederation
months = 1
}
}
summon_three_fair_courtiers_effect = {
save_scope_as = root_scope
create_character = {
employer = scope:root_scope
template = $NOMAD_TEMPLATE_CHARACTER$
faith = root.location.faith
culture = root.location.culture
2026-04-25 18:55:31 -04:00
after_creation = {
add_to_list = three_fair_courtiers_list
}
}
create_character = {
employer = scope:root_scope
template = $NOMAD_TEMPLATE_CHARACTER$
faith = root.location.faith
culture = root.location.culture
after_creation = {
add_to_list = three_fair_courtiers_list
}
}
create_character = {
employer = scope:root_scope
template = $NOMAD_TEMPLATE_CHARACTER$
faith = root.location.faith
culture = root.location.culture
after_creation = {
add_to_list = three_fair_courtiers_list
}
2026-03-10 00:41:50 +00:00
}
if = { # Error suppression
limit = {
2026-04-25 18:55:31 -04:00
any_in_list = {
list = three_fair_courtiers_list
}
2026-03-10 00:41:50 +00:00
}
2026-04-25 18:55:31 -04:00
every_in_list = {
list = three_fair_courtiers_list
2026-03-10 00:41:50 +00:00
assign_random_nickname_effect = yes
2026-04-25 18:55:31 -04:00
if = {
limit = {
NOT = {
is_courtier_of = scope:root_scope
}
}
scope:root_scope = {
add_courtier = scope:new_commander
}
}
2026-03-10 00:41:50 +00:00
add_character_flag = {
flag = blocked_from_leaving
years = 25
}
2026-04-25 18:55:31 -04:00
save_scope_as = new_commander # for the localization
scope:root_scope = {
send_interface_message = {
title = nomad_character_recruited.t
left_icon = prev
custom_tooltip = commander_recruited.desc
2026-03-10 00:41:50 +00:00
}
}
}
}
}
mpo_war_vassal_tributary_effect = {
create_title_and_vassal_change = {
type = conquest
save_scope_as = change
add_claim_on_loss = yes
}
every_in_list = {
list = target_titles
if = {
limit = {
tier >= tier_county
}
every_de_jure_county = {
limit = {
holder = {
OR = {
this = scope:defender
top_liege = scope:defender
top_suzerain ?= scope:defender
}
}
}
holder ?= {
add_to_list = target_holder
}
2026-04-25 18:55:31 -04:00
add_to_list = titles_taken
2026-03-10 00:41:50 +00:00
}
}
holder ?= {
add_to_list = target_holder
save_scope_as = temp_de_jure_liege
}
add_hook_from_temp_de_jure_liege_to_attacker = yes
}
every_in_list = {
2026-04-25 18:55:31 -04:00
list = titles_taken
2026-03-10 00:41:50 +00:00
add_to_list = prestige_gain_list
}
ordered_in_list = {
2026-04-25 18:55:31 -04:00
list = titles_taken
2026-03-10 00:41:50 +00:00
order_by = tier
max = 1
save_scope_as = war_goal_title
}
every_in_list = {
list = target_holder
save_scope_as = current_target_holder
if = {
limit = {
NOT = {
any_held_county = {
2026-04-25 18:55:31 -04:00
is_landless_type_title = no
NOT = { is_in_list = titles_taken }
2026-03-10 00:41:50 +00:00
}
}
NOR = {
this = scope:attacker
top_liege = scope:attacker
top_suzerain ?= scope:attacker
}
highest_held_title_tier <= scope:war_goal_title.tier
}
if = {
limit = {
2026-04-25 18:55:31 -04:00
scope:attacker.vassal_count >= vassal_limit
2026-03-10 00:41:50 +00:00
}
start_tributary_from_war_effect = {
TRIBUTARY = scope:defender
SUZERAIN = scope:attacker
WAR = $WAR$
}
#If you tributarize a confederate, they leave their confederation
if = {
limit = {
scope:defender = {
is_confederation_member = yes
}
}
scope:defender.confederation = {
remove_confederation_member = scope:defender
}
}
}
2026-04-25 18:55:31 -04:00
else = {
2026-03-10 00:41:50 +00:00
change_liege = {
liege = scope:attacker
change = scope:change
}
}
every_in_list = {
2026-04-25 18:55:31 -04:00
list = titles_taken
2026-03-10 00:41:50 +00:00
limit = {
2026-04-25 18:55:31 -04:00
holder ?= scope:current_target_holder
2026-03-10 00:41:50 +00:00
}
2026-04-25 18:55:31 -04:00
remove_from_list = titles_taken
2026-03-10 00:41:50 +00:00
}
}
}
every_in_list = {
2026-04-25 18:55:31 -04:00
list = titles_taken
2026-03-10 00:41:50 +00:00
limit = {
2026-04-25 18:55:31 -04:00
holder ?= {
NOR = {
this = scope:attacker
any_liege_or_above = { this = scope:attacker }
top_suzerain ?= scope:attacker
2026-03-10 00:41:50 +00:00
}
}
}
change_title_holder = {
holder = scope:attacker
change = scope:change
}
remove_from_list = target_titles
}
save_scope_value_as = {
name = cb_prestige_factor
value = {
value = 0
every_in_list = {
list = prestige_gain_list
add = 50
}
}
}
scope:attacker = {
add_prestige = scope:cb_prestige_factor
}
resolve_title_and_vassal_change = scope:change
scope:target_title = {
every_de_jure_county = {
limit = {
holder = {
government_has_flag = government_is_herder
is_tributary = no
}
}
hidden_effect = {
start_tributary_from_war_effect = {
TRIBUTARY = holder
SUZERAIN = scope:attacker
WAR = $WAR$
}
}
}
if = {
limit = {
NOT = { target_is_de_jure_liege_or_above = scope:attacker.primary_title }
NOT = {
any_de_jure_county = {
holder = {
NOR = {
top_liege = scope:attacker
top_suzerain ?= scope:attacker
}
}
}
}
}
set_de_jure_liege_title = scope:attacker.primary_title
}
}
every_in_list = {
list = target_holder
if = {
limit = {
NOT = {
any_held_title = {
exists = duchy
}
}
highest_held_title_tier > tier_county
}
every_held_title = {
limit = {
tier >= tier_county
}
scope:defender = {
destroy_title = prev
}
}
}
}
}
#Called from game start on action
#inside domicile scope
add_random_yurt_external_building_effect = {
2026-04-25 18:55:31 -04:00
random_list = {
10 = {
trigger = {
NOT = { has_domicile_building_or_higher = herd_welfare_yurt_01 }
}
add_domicile_building = herd_welfare_yurt_01
}
1 = {
trigger = {
NOT = { has_domicile_building_or_higher = character_warfare_yurt_01 }
}
add_domicile_building = character_warfare_yurt_01
}
1 = {
trigger = {
NOT = { has_domicile_building_or_higher = mass_warfare_yurt_01 }
}
add_domicile_building = mass_warfare_yurt_01
}
1 = {
trigger = {
NOT = { has_domicile_building_or_higher = court_yurt_01 }
}
add_domicile_building = court_yurt_01
}
1 = {
trigger = {
NOT = { has_domicile_building_or_higher = family_yurt_01 }
}
add_domicile_building = family_yurt_01
}
1 = {
trigger = {
NOT = { has_domicile_building_or_higher = mystical_yurt_01 }
}
add_domicile_building = mystical_yurt_01
}
}
2026-03-10 00:41:50 +00:00
}
#Called from game start on action
#Limited to lvl 3 to offer more variety and prevent startup errors
#inside domicile scope
upgrade_random_yurt_external_building_effect = {
random_list = {
10 = {
trigger = {
has_domicile_building_or_higher = herd_welfare_yurt_01
NOT = {
has_domicile_building_or_higher = herd_welfare_yurt_03
}
}
switch = {
trigger = has_domicile_building
herd_welfare_yurt_01 = { add_domicile_building = herd_welfare_yurt_02 }
herd_welfare_yurt_02 = { add_domicile_building = herd_welfare_yurt_03 }
}
}
1 = {
trigger = {
has_domicile_building_or_higher = character_warfare_yurt_01
NOT = {
has_domicile_building_or_higher = character_warfare_yurt_03
}
}
switch = {
trigger = has_domicile_building
character_warfare_yurt_01 = { add_domicile_building = character_warfare_yurt_02 }
character_warfare_yurt_02 = { add_domicile_building = character_warfare_yurt_03 }
}
}
1 = {
trigger = {
has_domicile_building_or_higher = mass_warfare_yurt_01
NOT = {
has_domicile_building_or_higher = mass_warfare_yurt_03
}
}
switch = {
trigger = has_domicile_building
mass_warfare_yurt_01 = { add_domicile_building = mass_warfare_yurt_02 }
mass_warfare_yurt_02 = { add_domicile_building = mass_warfare_yurt_03 }
}
}
1 = {
trigger = {
has_domicile_building_or_higher = court_yurt_01
NOT = {
has_domicile_building_or_higher = court_yurt_03
}
}
switch = {
trigger = has_domicile_building
court_yurt_01 = { add_domicile_building = court_yurt_02 }
court_yurt_02 = { add_domicile_building = court_yurt_03 }
}
}
1 = {
trigger = {
has_domicile_building_or_higher = family_yurt_01
NOT = {
has_domicile_building_or_higher = family_yurt_03
}
}
switch = {
trigger = has_domicile_building
family_yurt_01 = { add_domicile_building = family_yurt_02 }
family_yurt_02 = { add_domicile_building = family_yurt_03 }
}
}
1 = {
trigger = {
has_domicile_building_or_higher = mystical_yurt_01
NOT = {
has_domicile_building_or_higher = mystical_yurt_03
}
}
switch = {
trigger = has_domicile_building
mystical_yurt_01 = { add_domicile_building = mystical_yurt_02 }
mystical_yurt_02 = { add_domicile_building = mystical_yurt_03 }
}
}
}
}
#Used to distribute the Dynasty of Many Khans dynasty_court_yurt_06 reward
#Called from yearly_on_action
#root is character
mpo_yearly_dynasty_of_many_khans_effect = {
if = {
limit = {
this = dynasty.dynast
dynasty = {
has_dynasty_modifier = dynasty_of_many_crowns_nomad
}
domicile ?= {
has_domicile_parameter = nomad_yurt_dynasty_many_khans
}
}
send_interface_toast = {
type = event_toast_effect_good
title = dynasty_many_khans_yearly_tt
set_variable = {
name = temp_dynn_prestige
value = 1
}
dynasty = {
every_dynasty_member = {
limit = {
primary_title.tier >= tier_kingdom
}
root = {
change_variable = {
name = temp_dynn_prestige
add = minor_dynasty_prestige_gain
}
}
}
add_dynasty_prestige = root.var:temp_dynn_prestige
}
remove_variable = temp_dynn_prestige
}
}
}
#Used to distribute yurt domicile rewards
#Called from yearly_on_action
#inside domicile scope
#root is the character
mpo_yearly_yurt_rewards_effect = {
if = {
limit = {
has_domicile_building_or_higher = hostage_ward_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_hostage_bonus_lvl_1 = {
hostage_ward_yurt_effect = {
CHANCE = 2
}
}
nomad_yurt_hostage_bonus_lvl_2 = {
hostage_ward_yurt_effect = {
CHANCE = 3
}
}
nomad_yurt_hostage_bonus_lvl_3 = {
hostage_ward_yurt_effect = {
CHANCE = 5
}
}
}
}
if = {
limit = {
has_domicile_building_or_higher = language_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_yearly_bonus_per_language_lvl_1 = {
language_yurt_effect = {
CHANCE = 0.5
}
}
nomad_yurt_yearly_bonus_per_language_lvl_2 = {
language_yurt_effect = {
CHANCE = 1
}
}
nomad_yurt_yearly_bonus_per_language_lvl_3 = {
language_yurt_effect = {
CHANCE = 2
}
}
}
}
if = {
limit = {
has_domicile_building_or_higher = omen_yurt_01
}
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_children_bonus_per_piety_lvl_1 = {
omen_yurt_effect = {
CHANCE = 0.5
}
}
nomad_yurt_children_bonus_per_piety_lvl_2 = {
omen_yurt_effect = {
CHANCE = 1
}
}
nomad_yurt_children_bonus_per_piety_lvl_3 = {
omen_yurt_effect = {
CHANCE = 2
}
}
}
if = {
limit = {
has_domicile_building_or_higher = friend_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_friend_bonus_lvl_1 = {
friend_yurt_effect = {
CHANCE = 1
}
}
nomad_yurt_friend_bonus_lvl_2= {
friend_yurt_effect = {
CHANCE = 2
}
}
nomad_yurt_friend_bonus_lvl_3 = {
friend_yurt_effect = {
CHANCE = 3
}
}
}
}
if = {
limit = {
has_domicile_building_or_higher = better_children_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_better_children_lvl_1 = {
better_children_yurt_effect = {
CHANCE = 5
}
}
nomad_yurt_better_children_lvl_2 = {
better_children_yurt_effect = {
CHANCE = 10
}
}
nomad_yurt_better_children_lvl_3 = {
better_children_yurt_effect = {
CHANCE = 15
}
}
}
}
if = {
limit = {
has_domicile_building_or_higher = dynasty_court_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_same_dynasty_bonus_lvl_1 = {
dynasty_court_yurt_effect = {
CHANCE = 1
}
}
nomad_yurt_same_dynasty_bonus_lvl_2 = {
dynasty_court_yurt_effect = {
CHANCE = 2
}
}
nomad_yurt_same_dynasty_bonus_lvl_3 = {
dynasty_court_yurt_effect = {
CHANCE = 3
}
}
}
}
if = {
limit = {
has_domicile_building_or_higher = culture_court_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_many_cultures_bonus_lvl_1 = {
culture_court_yurt_effect = {
CHANCE = 1
PERCENT = 5
}
}
nomad_yurt_many_cultures_bonus_lvl_2 = {
culture_court_yurt_effect = {
CHANCE = 2
PERCENT = 5
}
}
nomad_yurt_many_cultures_bonus_lvl_3 = {
culture_court_yurt_effect = {
CHANCE = 2
PERCENT = 10
}
}
}
}
if = {
limit = {
has_domicile_building_or_higher = fertility_mystical_yurt_01
}
switch = {
trigger = has_domicile_parameter
nomad_yurt_herd_per_piety_fertility_mystical_lvl_1 = {
fertility_mystical_yurt_effect = {
CHANCE = 1
PERCENT = 5
}
}
nomad_yurt_herd_per_piety_fertility_mystical_lvl_2 = {
fertility_mystical_yurt_effect = {
CHANCE = 2
PERCENT = 5
}
}
nomad_yurt_herd_per_piety_fertility_mystical_lvl_3 = {
fertility_mystical_yurt_effect = {
CHANCE = 2
PERCENT = 10
}
}
}
}
if = {
limit = {
has_domicile_building_or_higher = knight_mystical_yurt_01
}
switch = {
trigger = has_domicile_parameter
knight_skill_increase_per_piety_lvl_1 = {
knight_mystical_yurt_effect = {
CHANCE = 1
PROWESS = 1
}
}
knight_skill_increase_per_piety_lvl_2 = {
knight_mystical_yurt_effect = {
CHANCE = 2
PROWESS = 1
}
}
knight_skill_increase_per_piety_lvl_3 = {
knight_mystical_yurt_effect = {
CHANCE = 2
PROWESS = 2
}
}
}
}
}
hostage_ward_yurt_effect = {
root = {
every_courtier = {
limit = {
is_hostage_of = root
}
add_to_list = temp_yurt_hostages
}
}
random = {
chance = {
value = "list_size(temp_yurt_hostages)"
multiply = $CHANCE$
min = 0
}
root = {
random_courtier = {
limit = {
is_hostage_of = root
}
save_scope_as = yurt_hostage
}
random_relation = {
type = ward
save_scope_as = yurt_ward
}
if = {
limit = {
exists = scope:yurt_ward
}
send_interface_message = {
title = hostage_ward_yurt_effect_tt
desc = hostage_ward_yurt_effect_desc
left_icon = scope:yurt_ward
right_icon = scope:yurt_hostage
scope:yurt_ward = {
random_list = {
1 = { add_diplomacy_skill = 1 }
1 = { add_stewardship_skill = 1 }
1 = { add_intrigue_skill = 1 }
1 = { add_learning_skill = 1 }
1 = { add_martial_skill = 1 }
}
}
scope:yurt_hostage = {
increase_wounds_no_death_effect = { REASON = beaten }
}
root = {
add_prestige = 200
}
}
}
}
}
}
language_yurt_effect = {
random = {
chance = {
value = root.num_of_known_languages
multiply = $CHANCE$
min = 0
}
root = {
send_interface_message = {
title = language_yurt_effect_tt
desc = language_yurt_effect_desc
left_icon = root
random_list = {
1 = { add_diplomacy_skill = 1 }
1 = { add_stewardship_skill = 1 }
1 = { add_intrigue_skill = 1 }
1 = { add_learning_skill = 1 }
1 = { add_martial_skill = 1 }
}
}
}
}
}
de_jure_shifting_effect = {
while = {
count = 25
limit = {
OR = {
any_realm_de_jure_$LOWER_TIER$ = {
mpo_de_jure_shifting_triggers = { UPPER_TIER = $UPPER_TIER$ }
}
any_tributary = {
highest_held_title_tier < root.highest_held_title_tier
any_realm_de_jure_$LOWER_TIER$ = {
mpo_de_jure_shifting_triggers = { UPPER_TIER = $UPPER_TIER$ }
}
}
}
}
random_realm_de_jure_$LOWER_TIER$ = {
limit = {
mpo_de_jure_shifting_triggers = { UPPER_TIER = $UPPER_TIER$ }
}
set_de_jure_liege_title = root.primary_title
add_to_list = de_jure_shifted_title
}
random_tributary = {
limit = {
highest_held_title_tier < root.highest_held_title_tier
any_realm_de_jure_$LOWER_TIER$ = {
mpo_de_jure_shifting_triggers = { UPPER_TIER = $UPPER_TIER$ }
}
}
random_realm_de_jure_$LOWER_TIER$ = {
limit = {
mpo_de_jure_shifting_triggers = { UPPER_TIER = $UPPER_TIER$ }
}
set_de_jure_liege_title = root.primary_title
add_to_list = de_jure_shifted_title
}
}
}
while = {
count = 25
limit = {
list_size = {
name = de_jure_shifted_title
value >= 1
}
}
root = {
send_interface_message = {
type = msg_mpo_de_jure_shifting
title = msg_mpo_de_jure_shifting
left_icon = root
ordered_in_list = {
order_by = {
value = 1
}
max = 3
2026-04-25 18:55:31 -04:00
check_range_bounds = no
2026-03-10 00:41:50 +00:00
list = de_jure_shifted_title
show_as_tooltip = {
set_de_jure_liege_title = root.primary_title
}
remove_from_list = de_jure_shifted_title
}
}
}
}
}
omen_yurt_effect = {
random = {
chance = {
value = root.piety_level
multiply = $CHANCE$
min = 0
}
root = {
random_child = {
save_scope_as = improved_child
}
if = {
limit = {
exists = scope:improved_child
}
send_interface_message = {
title = omen_yurt_effect_tt
desc = omen_yurt_effect_desc
left_icon = scope:improved_child
scope:improved_knight = {
random_list = {
1 = { add_diplomacy_skill = 1 }
1 = { add_stewardship_skill = 1 }
1 = { add_intrigue_skill = 1 }
1 = { add_learning_skill = 1 }
1 = { add_martial_skill = 1 }
}
}
}
}
}
}
}
friend_yurt_effect = {
root = {
every_relation = {
type = friend
add_to_list = temp_yurt_friends
}
}
random = {
chance = {
value = "list_size(temp_yurt_friends)"
multiply = $CHANCE$
min = 0
}
root = {
random_relation = {
type = friend
save_scope_as = yurt_friend
}
send_interface_message = {
title = friend_yurt_effect_tt
desc = friend_yurt_effect_desc
left_icon = scope:yurt_friend
scope:yurt_friend = {
random_list = {
1 = { add_diplomacy_skill = 1 }
1 = { add_stewardship_skill = 1 }
1 = { add_intrigue_skill = 1 }
1 = { add_learning_skill = 1 }
1 = { add_martial_skill = 1 }
}
}
root = {
random_list = {
1 = { add_diplomacy_skill = 1 }
1 = { add_stewardship_skill = 1 }
1 = { add_intrigue_skill = 1 }
1 = { add_learning_skill = 1 }
1 = { add_martial_skill = 1 }
}
}
}
}
}
}
better_children_yurt_effect = {
random = {
chance = $CHANCE$
root = {
random_heir = {
limit = {
age < 17
}
save_scope_as = yurt_heir
}
if = {
limit = {
exists = scope:yurt_heir
}
}
send_interface_message = {
title = better_children_yurt_effect_tt
desc = better_children_yurt_effect_desc
left_icon = scope:yurt_heir
scope:yurt_heir = {
random_list = {
1 = { add_diplomacy_skill = 1 }
1 = { add_stewardship_skill = 1 }
1 = { add_intrigue_skill = 1 }
1 = { add_learning_skill = 1 }
1 = { add_martial_skill = 1 }
}
}
}
}
}
}
dynasty_court_yurt_effect = {
root = {
every_councillor = {
limit = {
is_kurultai_trigger = yes
dynasty = root.dynasty
}
add_to_temporary_list = yurt_kurultai_list
}
}
random = {
chance = {
value = "list_size(yurt_kurultai_list)"
multiply = $CHANCE$
min = 0
}
root = {
send_interface_message = {
title = dynasty_court_yurt_effect_tt
desc = dynasty_court_yurt_effect_desc
domicile ?= {
change_herd = {
value = max_herd
multiply = 0.1
}
}
}
}
}
}
culture_court_yurt_effect = {
root = {
every_tributary = {
culture = { add_to_temporary_list = yurt_culture_list }
}
every_vassal = {
culture = { add_to_temporary_list = yurt_culture_list }
}
}
random = {
chance = {
value = "list_size(yurt_culture_list)"
multiply = $CHANCE$
min = 0
}
root = {
send_interface_message = {
title = culture_court_yurt_effect_tt
desc = culture_court_yurt_effect_desc
domicile ?= {
change_herd = {
value = max_herd
multiply = 0.01
multiply = $PERCENT$
}
}
}
}
}
}
knight_mystical_yurt_effect = {
random = {
chance = {
value = root.piety_level
multiply = $CHANCE$
min = 0
}
root = {
random_knight = {
save_scope_as = improved_knight
}
if = {
limit = {
exists = scope:improved_knight
}
send_interface_message = {
title = knight_mystical_yurt_effect_tt
desc = knight_mystical_yurt_effect_desc
left_icon = scope:improved_knight
scope:improved_knight = {
add_prowess_skill = $PROWESS$
}
}
}
}
}
}
fertility_mystical_yurt_effect = {
random = {
chance = {
value = root.piety_level
multiply = $CHANCE$
min = 0
}
root = {
send_interface_message = {
title = fertility_mystical_yurt_effect_tt
desc = fertility_mystical_yurt_effect_desc
domicile ?= {
change_herd = {
value = max_herd
multiply = 0.01
multiply = $PERCENT$
}
}
}
}
}
}
clean_up_ai_nomad_effect = {
save_temporary_scope_as = nomad_capital_ruler
if = {
limit = {
is_ai = yes
is_at_war = no
domicile.herd < 500
is_landed = no
any_held_title = {
exists = title_domicile
NOT = { exists = var:player_domicile_title }
}
is_imprisoned = no
OR = {
is_independent_ruler = yes
liege ?= { is_ai = yes }
}
is_migrating = no
NOT = { exists = involved_activity }
}
domicile.domicile_location = { save_scope_as = place_to_stay }
if = {
limit = {
location = scope:place_to_stay
}
add_to_list = movers
}
every_courtier = {
limit = {
location = scope:place_to_stay
}
add_to_list = movers
}
every_held_title = {
limit = {
exists = title_domicile
NOT = { exists = var:player_domicile_title }
}
scope:nomad_capital_ruler = { destroy_title = prev }
}
every_in_list = {
list = movers
limit = {
is_imprisoned = no
NOR = {
this = scope:nomad_capital_ruler
is_in_pool_at = scope:place_to_stay
}
}
move_to_pool_at = scope:place_to_stay
}
random = {
chance = {
value = 20
if = {
limit = {
any_player = {
OR = {
is_close_or_extended_family_of = scope:nomad_capital_ruler
is_consort_of = scope:nomad_capital_ruler
has_important_relationship_with_character_trigger = { CHARACTER = scope:nomad_capital_ruler }
is_allied_in_war = scope:nomad_capital_ruler
is_allied_to = scope:nomad_capital_ruler
is_at_war_with = scope:nomad_capital_ruler
}
}
}
add = 80
}
}
if = {
limit = {
has_dlc_feature = roads_to_power
is_physically_able_adult = yes
exists = location.county
ai_can_valid_to_create_laamp_trigger = yes
}
create_landless_adventurer_title_effect = {
REASON = flag:voluntary
FLAVOR_CHAR = root
}
every_in_list = {
list = movers
limit = {
NOR = {
this = scope:nomad_capital_ruler
is_courtier_of = scope:nomad_capital_ruler
is_in_pool_at = scope:place_to_stay
}
}
move_to_pool_at = scope:place_to_stay
}
if = {
limit = {
NOT = {
exists = global_var:nomad_adventurer_spawn
}
}
set_global_variable = {
name = nomad_adventurer_spawn
value = 1
}
}
else = {
change_global_variable = {
name = nomad_adventurer_spawn
add = 1
}
}
}
}
if = {
limit = {
scope:nomad_capital_ruler = {
is_ruler = no
}
}
every_in_list = {
list = movers
limit = {
is_imprisoned = no
this = scope:nomad_capital_ruler
NOT = {
is_in_pool_at = scope:place_to_stay
}
}
move_to_pool_at = scope:place_to_stay
}
}
}
}
expanding_steppe_effect = {
switch = {
trigger = yes
# West
scope:ghw_region_anatolia = {
expanding_steppe_add_region_effect = {
SUB_REGION = west
REGION = ghw_region_anatolia
}
tgp_silk_road_expand_steppe_effect = { SUB_REGION = occident }
}
scope:custom_eastern_balkans = {
expanding_steppe_add_region_effect = {
SUB_REGION = west
REGION = custom_eastern_balkans
}
}
scope:ghw_region_northern_russia = {
expanding_steppe_add_region_effect = {
SUB_REGION = west
REGION = ghw_region_northern_russia
}
}
scope:ghw_region_southern_russia = {
expanding_steppe_add_region_effect = {
SUB_REGION = west
REGION = ghw_region_southern_russia
}
}
scope:custom_hungary = {
expanding_steppe_add_region_effect = {
SUB_REGION = west
REGION = custom_hungary
}
}
scope:ghw_region_poland = {
expanding_steppe_add_region_effect = {
SUB_REGION = west
REGION = ghw_region_poland
}
}
scope:ghw_region_baltic = {
expanding_steppe_add_region_effect = {
SUB_REGION = west
REGION = ghw_region_baltic
}
}
scope:dlc_mpo_steppe_caucasus_expansion = {
expanding_steppe_add_region_effect = {
SUB_REGION = west
REGION = dlc_mpo_steppe_caucasus_expansion
}
tgp_silk_road_expand_steppe_effect = { SUB_REGION = transcaspia }
tgp_silk_road_expand_steppe_effect = { SUB_REGION = occident }
}
# Central
scope:world_transoxiana = {
expanding_steppe_add_region_effect = {
SUB_REGION = central
REGION = world_transoxiana
}
tgp_silk_road_expand_steppe_effect = { SUB_REGION = transcaspia }
tgp_silk_road_expand_steppe_effect = { SUB_REGION = central_asia }
tgp_silk_road_expand_steppe_effect = { SUB_REGION = occident }
}
scope:world_khorasan = {
expanding_steppe_add_region_effect = {
SUB_REGION = central
REGION = world_khorasan
}
tgp_silk_road_expand_steppe_effect = { SUB_REGION = central_asia }
tgp_silk_road_expand_steppe_effect = { SUB_REGION = occident }
}
scope:dlc_mpo_steppe_persia_expansion = {
expanding_steppe_add_region_effect = {
SUB_REGION = central
REGION = dlc_mpo_steppe_persia_expansion
}
tgp_silk_road_expand_steppe_effect = { SUB_REGION = occident }
}
scope:dlc_mpo_steppe_siberia_further_expansion = {
expanding_steppe_add_region_effect = {
SUB_REGION = central
REGION = dlc_mpo_steppe_siberia_further_expansion
}
}
# East
2026-04-25 18:55:31 -04:00
scope:dlc_mpo_steppe_hexi_tarim_expansion = {
2026-03-10 00:41:50 +00:00
expanding_steppe_add_region_effect = {
SUB_REGION = east
2026-04-25 18:55:31 -04:00
REGION = dlc_mpo_steppe_hexi_tarim_expansion
2026-03-10 00:41:50 +00:00
}
tgp_silk_road_expand_steppe_effect = { SUB_REGION = central_asia }
tgp_silk_road_expand_steppe_effect = { SUB_REGION = transcaspia }
tgp_silk_road_expand_steppe_effect = { SUB_REGION = occident }
}
2026-04-25 18:55:31 -04:00
scope:dlc_mpo_steppe_north_china_expansion = {
expanding_steppe_add_region_effect = {
SUB_REGION = east
REGION = dlc_mpo_steppe_north_china_expansion
}
}
scope:dlc_mpo_steppe_central_china_expansion = {
expanding_steppe_add_region_effect = {
SUB_REGION = east
REGION = dlc_mpo_steppe_central_china_expansion
}
}
scope:world_asia_korea = {
expanding_steppe_add_region_effect = {
SUB_REGION = east
REGION = world_asia_korea
}
}
scope:world_asia_japan = {
expanding_steppe_add_region_effect = {
SUB_REGION = east
REGION = world_asia_japan
}
}
2026-03-10 00:41:50 +00:00
}
}
expanding_steppe_add_region_effect = {
situation:the_great_steppe = {
situation_sub_region:steppe_$SUB_REGION$ = {
add_geographical_region = $REGION$
}
}
}
nomadic_heir_cleanup_realm_effect = {
if = {
limit = {
is_landed = yes
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
}
if = {
limit = {
exists = liege
}
liege = {
save_scope_as = old_liege
}
}
create_character = {
location = $CLEANUP_SCOPE_CHAR$.location
template = nomadic_chieftain_character
save_scope_as = inheritor_char
}
every_held_title = {
limit = {
is_landless_type_title = no
}
change_title_holder = {
holder = scope:inheritor_char
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
if = {
limit = {
exists = scope:old_liege
}
scope:inheritor_char = {
create_title_and_vassal_change = {
type = swear_fealty
save_scope_as = change
}
scope:recipient = {
change_liege = {
liege = scope:old_liege
change = scope:change
}
}
resolve_title_and_vassal_change = scope:change
}
}
}
if = {
limit = {
top_liege != $CLEANUP_SCOPE_CHAR$
}
create_title_and_vassal_change = {
type = independency
save_scope_as = going_independent
add_claim_on_loss = no
}
becomes_independent = {
change = scope:going_independent
}
resolve_title_and_vassal_change = scope:going_independent
}
}
nomadic_realm_split_effect = {
$ORIGINAL_REALM_HOLDER$ = {
save_scope_as = root_scope
}
$NEW_RULER$ = {
save_scope_as = new_ruler_scope
}
primary_title = {
every_in_de_jure_hierarchy = {
limit = {
tier = tier_county
holder.top_liege = scope:root_scope
}
add_to_list = de_jure_realm_counties_of_primary
add_to_list = combined_counties_of_primary
}
every_in_de_jure_hierarchy = {
limit = {
tier = tier_county
holder.top_liege != scope:root_scope
}
add_to_list = de_jure_realm_counties_of_primary_outside_realm
}
every_in_de_jure_hierarchy = {
limit = {
tier = tier_county
}
add_to_list = de_jure_realm_counties_of_primary_combined
}
every_in_de_facto_hierarchy = {
limit = {
tier = tier_county
holder.top_liege ?= scope:root_scope
NOT = { is_in_list = de_jure_realm_counties_of_primary }
}
add_to_list = de_facto_realm_counties_of_primary
add_to_list = combined_counties_of_primary
}
}
# Pick a suitable capital County, as far away from your capital as possible
ordered_in_list = {
list = de_jure_realm_counties_of_primary
limit = {
NOT = {
this = scope:root_scope.capital_county
}
}
order_by = {
value = "title_province.squared_distance(scope:root_scope.capital_province)"
}
save_scope_as = new_capital
}
# Mark the capital duchy
scope:new_ruler_scope = {
scope:new_capital = {
add_to_list = counties_given_to_sibling
}
scope:new_capital.duchy = {
save_scope_as = capital_duchy
add_to_list = duchies_given_to_sibling
add_to_list = duchies_to_de_jure_shift
if = {
limit = {
holder.top_liege = scope:root_scope
holder.primary_title.tier < tier_kingdom
}
holder = {
add_to_list = rulers_transferred
}
}
every_in_de_jure_hierarchy = {
limit = {
is_in_list = combined_counties_of_primary
}
add_to_list = capital_duchy_counties
if = {
limit = {
NOT = {
is_in_list = counties_given_to_sibling
}
}
add_to_list = counties_given_to_sibling
}
if = {
limit = {
holder.top_liege = scope:root_scope
holder.primary_title.tier < tier_kingdom
}
holder = {
add_to_list = rulers_transferred
}
}
}
}
# Expand in a 'ring' first
scope:new_capital.duchy = {
every_title_to_title_neighboring_duchy = {
limit = {
any_in_de_jure_hierarchy = {
OR = {
is_in_list = de_jure_realm_counties_of_primary
is_in_list = de_jure_realm_counties_of_primary_outside_realm
}
}
}
add_to_list = duchies_to_de_jure_shift
if = {
limit = {
any_in_de_jure_hierarchy = {
is_in_list = de_jure_realm_counties_of_primary
}
}
add_to_list = duchies_given_to_sibling
if = {
limit = {
holder = {
top_liege = scope:root_scope
primary_title.tier < tier_kingdom
NOT = { is_in_list = rulers_transferred }
}
}
holder = {
add_to_list = rulers_transferred
}
}
every_in_de_jure_hierarchy = {
limit = {
is_in_list = de_jure_realm_counties_of_primary
}
add_to_list = counties_given_to_sibling
if = {
limit = {
holder = {
top_liege = scope:root_scope
primary_title.tier < tier_kingdom
NOT = { is_in_list = rulers_transferred }
}
}
holder = {
add_to_list = rulers_transferred
}
}
}
every_in_de_jure_hierarchy = {
limit = {
NOT = { is_in_list = de_jure_realm_counties_of_primary }
}
add_to_list = counties_de_jure_shifted_to_sibling
}
}
}
}
while = {
count = 50
limit = {
"list_size(counties_given_to_sibling)" < {
value = "list_size(de_jure_realm_counties_of_primary)"
multiply = $SPLIT_VALUE$
}
}
ordered_in_list = {
list = de_jure_realm_counties_of_primary_combined
limit = {
NOR = {
duchy = scope:root_scope.capital_county.duchy
duchy = { is_in_list = duchies_to_de_jure_shift }
is_in_list = counties_given_to_sibling
}
any_neighboring_county = {
OR = {
is_in_list = counties_given_to_sibling
duchy = { is_in_list = duchies_to_de_jure_shift }
}
}
}
order_by = {
value = "title_province.squared_distance(scope:root_scope.capital_province)"
}
duchy = {
add_to_list = duchies_to_de_jure_shift
if = {
limit = {
any_in_de_jure_hierarchy = {
is_in_list = de_jure_realm_counties_of_primary
}
}
add_to_list = duchies_given_to_sibling
if = {
limit = {
holder = {
top_liege = scope:root_scope
primary_title.tier < tier_kingdom
NOT = { is_in_list = rulers_transferred }
}
}
holder = {
add_to_list = rulers_transferred
}
}
every_in_de_jure_hierarchy = {
limit = {
is_in_list = de_jure_realm_counties_of_primary
}
add_to_list = counties_given_to_sibling
if = {
limit = {
holder = {
top_liege = scope:root_scope
primary_title.tier < tier_kingdom
NOT = { is_in_list = rulers_transferred }
}
}
holder = {
add_to_list = rulers_transferred
}
}
}
every_in_de_jure_hierarchy = {
limit = {
NOT = { is_in_list = de_jure_realm_counties_of_primary }
}
add_to_list = counties_de_jure_shifted_to_sibling
}
}
}
}
}
# Hand out the titles properly
create_title_and_vassal_change = {
type = swear_fealty
add_claim_on_loss = yes
save_scope_as = change
}
# Give capital + capital duchy
scope:capital_duchy = {
change_title_holder = {
holder = scope:new_ruler_scope
change = scope:change
}
}
every_in_list = {
list = capital_duchy_counties
change_title_holder = {
holder = scope:new_ruler_scope
change = scope:change
}
}
# Form a new kingdom
save_scope_as = founder
scope:capital_duchy = {
save_scope_as = old_title
}
create_dynamic_title = {
tier = kingdom
name = NEW_CREATED_TITLE_NAME
}
scope:new_title = {
save_scope_as = new_kingdom_title
change_title_holder = {
holder = scope:new_ruler_scope
change = scope:change
}
generate_coa = yes
set_de_jure_liege_title = scope:root_scope.primary_title.empire
}
# Do everything else
every_in_list = {
list = counties_given_to_sibling
if = {
limit = {
holder = {
NOT = {
this = scope:new_ruler_scope
}
OR = {
this = scope:root_scope
primary_title.tier >= tier_kingdom
}
}
}
change_title_holder = {
holder = scope:new_ruler_scope
change = scope:change
}
}
if = {
limit = {
NOT = {
this = scope:new_ruler_scope
}
holder = {
liege = scope:root_scope
primary_title.tier < tier_kingdom
}
}
holder = {
change_liege = {
liege = scope:new_ruler_scope
change = scope:change
}
}
}
}
resolve_title_and_vassal_change = scope:change
every_in_list = {
list = duchies_to_de_jure_shift
set_de_jure_liege_title = scope:new_kingdom_title
}
}
}
mpo_abuse_authority_county_effect = {
location.duchy = {
every_de_jure_county = {
limit = {
county_ready_for_abuse_trigger = yes
}
change_county_fertility = -100
change_county_control = -40
add_county_modifier = {
modifier = mpo_paiza_abused_county_modifier
years = 4
}
add_to_temporary_list = counties_to_abuse
}
every_de_jure_county = {
limit = {
county_ready_for_abuse_trigger = yes
}
holder = {
add_opinion = {
modifier = angry_opinion
target = root
opinion = -30
}
}
}
every_de_jure_county = {
limit = {
county_ready_for_abuse_trigger = yes
}
custom = custom.mpo_resources_gained_abuse
root.domicile ?= {
change_herd = medium_herd_value
}
root = {
add_gold = medium_gold_value
add_prestige = medium_prestige_value
}
}
}
}
2026-04-25 18:55:31 -04:00
mpo_release_herder_land_effect = {
# Save scope of character triggering the effect
save_scope_as = trigger_character
every_top_realm_border_county = {
limit = {
title_province = {
this != scope:trigger_character.capital_province
}
}
add_to_list = target_titles
}
while = {
limit = { # Loop over list of target titles until there are no more titles to grant
list_size = {
name = target_titles
value >= 1
}
}
random_in_list = {
list = target_titles
if = {
limit = {
title_province = { has_holding_type = nomad_holding }
}
title_province = { set_holding_type = herder_holding }
}
save_scope_as = county_of_origin
create_character = {
template = herder_character
dynasty = none
location = scope:county_of_origin.title_province
culture = scope:county_of_origin.culture
faith = scope:county_of_origin.faith
gender_female_chance = {
if = {
limit = { scope:county_of_origin.faith = { has_doctrine = doctrine_gender_male_dominated } }
add = 20
}
else_if = {
limit = { scope:county_of_origin.faith = { has_doctrine = doctrine_gender_female_dominated } }
add = 80
}
else = {
add = 50
}
}
save_scope_as = new_herder
}
create_title_and_vassal_change = {
type = granted
save_scope_as = change
add_claim_on_loss = no
}
change_title_holder_include_vassals = {
holder = scope:new_herder
change = scope:change
}
resolve_title_and_vassal_change = scope:change
remove_from_list = target_titles
}
scope:new_herder = {
change_government = herder_government
if = {
limit = { is_independent_ruler = no }
#De-vassalise him.
create_title_and_vassal_change = {
type = independency
save_scope_as = change
add_claim_on_loss = no
}
becomes_independent = { change = scope:change }
resolve_title_and_vassal_change = scope:change
}
}
}
}