N3OW_Western_eastern_europe/common/scripted_effects/00_faction_effects.txt

2145 lines
50 KiB
Text

#####################################################################
# EFFECT LIST
#####################################################################
# join_faction_with_leave_blocker_effect - make a character join a faction, and prevent them from leaving
# leave_faction_with_cooldown_effect - makes a character leave a FACTION and not rejoin another faction for YEARS years
# get_popular_revolt_target_effect - looks for a valid title for a popular revolt to target (may not be the title the revolt gets if successful, just determines the 'region' the revolt is supposed to occur within),
# successful_popular_revolt_outcome_effect - handles all of the title changes necessary for a successful popular revolt to break away as an independent realm.
# get_popular_revolt_title_name - Script logic to check what the new name of dynamically-created peasant titles should be (e.g., Kingdom of Isma'ili Arabia).
join_faction_with_leave_blocker_effect = {
join_faction = $FACTION$
hidden_effect = {
save_temporary_scope_value_as = {
name = join_faction_with_leave_blocker_effect_number
value = flag:$YEARS$
}
add_character_flag = {
flag = leaving_faction_block
years = $YEARS$
}
}
if = {
limit = { this = root }
custom_tooltip = join_faction_with_leave_blocker_effect_first.tt
}
else = {
custom_tooltip = join_faction_with_leave_blocker_effect_third.tt
}
#and to prevent angry error messages :D:D:D:D
if = {
limit = {
scope:join_faction_with_leave_blocker_effect_number = flag:1
}
}
}
add_faction_cooldown_effect = {
if = {
limit = { is_landless_adventurer = no }
custom_description = {
text = faction_cooldown_effect
value = $YEARS$
add_character_flag = {
flag = joining_faction_block
years = $YEARS$
}
}
}
}
leave_faction_with_cooldown_effect = {
leave_faction = $FACTION$
add_faction_cooldown_effect = { YEARS = $YEARS$ }
}
imprisonment_retribution_start_faction_war_if_valid = {
scope:recipient = {
custom_tooltip = FACTION_IMPRISONMENT_RETALIATION_WARNING
}
hidden_effect = {
if = {
limit = {
faction_power > faction_power_threshold
NOT = { faction_is_type = populist_faction }
}
if = {
limit = {
faction_is_type = claimant_faction
}
special_title = {
save_scope_as = target_title
}
faction_start_war = {
title = scope:target_title
}
}
else = {
faction_start_war = {}
}
every_faction_member = {
trigger_event = faction_demand.9001
}
}
}
}
# Get the most appropriate 'target title' we can for a popular revolt (determines the de jure area the war will target, not final titles granted).
get_popular_revolt_target_effect = {
$FACTION$ = {
save_scope_as = faction
faction_target = {
save_scope_as = faction_target
}
# First check if there are any valid kingdoms to target.
if = {
limit = {
# Only large revolts in large realms are eligible to target an entire kingdom.
any_faction_county_member = {
count >= 11
}
scope:faction_target.primary_title.tier >= tier_kingdom
}
every_faction_county_member = {
kingdom = {
if = {
# Do not target titles held by rulers outside of our realm.
limit = {
NOT = { exists = holder }
holder.top_liege = scope:faction_target
}
}
add_to_list = tmp_potential_kingdoms
}
}
# Out of the valid kingdoms (if any), pick the 'best' one
ordered_in_list = {
list = tmp_potential_kingdoms
order_by = {
# First look at the total number of rebels within the kingdom's de jure territory.
value = 0
add = {
value = 0
every_in_de_jure_hierarchy = {
limit = {
tier = tier_county
any_title_joined_faction = {
this = $FACTION$
}
}
add = total_county_levies
}
}
if = {
limit = {
exists = holder
}
if = {
# Prefer targeting titles held by the faction target...
limit = {
holder != scope:faction_target
}
multiply = 0.5
}
else_if = {
#...but not the target's primary title (we don't want to usurp them if we can help it!)
limit = {
this = scope:faction_target.primary_title
}
multiply = 0.5
}
}
}
save_scope_as = tmp_target_title
}
}
# If we were ineligible for kingdom-tier or failed to find a valid one, look for duchies.
if = {
limit = {
NOT = { exists = scope:tmp_target_title}
# Mid-sized or larger revolts in medium realms are eligible for duchy titles.
any_faction_county_member = {
count >= 5
}
faction_target.primary_title.tier >= tier_duchy
}
every_faction_county_member = {
duchy = {
if = {
# Do not target titles held by rulers outside of our realm.
limit = {
NOT = { exists = holder }
holder.top_liege = scope:faction_target
}
}
add_to_list = tmp_potential_duchies
}
}
# Out of the valid duchies (if any), pick the 'best' one
ordered_in_list = {
list = tmp_potential_duchies
order_by = {
value = 0
# First look at the total number of rebels within the duchy's de jure territory.
add = {
value = 0
every_in_de_jure_hierarchy = {
limit = {
tier = tier_county
any_title_joined_faction = {
this = $FACTION$
}
}
add = total_county_levies
}
}
if = {
limit = {
exists = holder
}
if = {
# Prefer targeting titles held by the faction target...
limit = {
holder != scope:faction_target
}
multiply = 0.5
}
else_if = {
#...but not the target's primary title (we don't want to usurp them if we can help it!)
limit = {
this = scope:faction_target.primary_title
}
multiply = 0.5
}
}
}
save_scope_as = tmp_target_title
}
}
# If we still don't have a target title, pick the largest county.
if = {
limit = {
NOT = { exists = scope:tmp_target_title}
}
ordered_faction_county_member = {
order_by = total_county_levies
save_scope_as = tmp_target_title
}
}
# Re-save our temporary scope as the 'official' target scope, then clear all temporary scopes.
if = {
limit = {
exists = scope:tmp_target_title
}
scope:tmp_target_title = {
save_scope_as = target_title
}
set_special_title = scope:target_title
clear_saved_scope = tmp_target_title
}
every_in_list = {
list = tmp_potential_kingdoms
remove_from_list = tmp_potential_kingdoms
}
every_in_list = {
list = tmp_potential_duchies
remove_from_list = tmp_potential_duchies
}
}
}
add_adjacent_valid_counties_to_list = {
every_neighboring_county = {
limit = {
faith = $FAITH$
holder = {
is_ai = yes # Without this, successful Populist Revolts can lead to suprise Game Overs for players without any warning.
top_liege = $TOP_LIEGE$
}
NOT = { is_in_list = $LIST$ }
}
add_to_list = $LIST$
}
}
# Shared effect between the Popular Faction's demand event and victory outcome.
#
# Parameters:
# $FACTION_LEADER$
# $TARGET_TITLE$
# $SOURCE_GOVERNMENT$
#
successful_popular_revolt_outcome_effect = {
# Save scopes for later usage.
$FACTION_LEADER$ = {
save_scope_as = faction_leader
joined_faction = {
save_scope_as = popular_faction
every_faction_member = {
add_to_list = faction_members
}
faction_target = {
save_scope_as = faction_target
}
}
add_to_list = faction_members
}
$TARGET_TITLE$ = {
save_scope_as = some_title
}
if = { # Populists factions in an admin realm should aim to change state faith, if they are of the capital culture
limit = {
$SOURCE_GOVERNMENT$ = { government_allows = state_faith }
$FACTION_LEADER$.culture = scope:faction_target.capital_county.culture
$FACTION_LEADER$.faith != scope:faction_target.primary_title.state_faith
}
$SOURCE_GOVERNMENT$.primary_title = {
# Change the state faith
set_state_faith = $FACTION_LEADER$.faith
# Try grabbing someone from the line of succession who practices the State Faith
if = {
limit = {
any_title_heir = {
faith = $FACTION_LEADER$.faith
}
}
ordered_title_heir = {
order_by = "appointment_candidate_score(prev)"
limit = {
faith = $FACTION_LEADER$.faith
}
save_scope_as = new_ruler
}
}
# Otherwise, make the peasant leader the new emperor
else = { $FACTION_LEADER$ = { save_scope_as = new_ruler } }
# Actually make the switch
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change
}
# Transfer all titles to heir of primary title if only one governorship is held
hidden_effect = {
$SOURCE_GOVERNMENT$ = {
every_held_title = {
title_tier >= county
limit = {
is_landless_type_title = no
is_noble_family_title = no
}
change_title_holder_include_vassals = {
holder = scope:new_ruler
change = scope:change
take_baronies = no
}
}
}
}
resolve_title_and_vassal_change = scope:change
}
}
else_if = { # Populists factions of the state faith in an admin realm where the emperor is of a heretical faith simply take the empire
limit = {
$SOURCE_GOVERNMENT$ = { government_allows = state_faith }
$FACTION_LEADER$.faith = scope:faction_target.primary_title.state_faith
$FACTION_LEADER$.faith != scope:faction_target.faith
}
$SOURCE_GOVERNMENT$.primary_title = {
$FACTION_LEADER$ = { save_scope_as = new_ruler }
# Actually make the switch
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change
}
# Transfer all titles to heir of primary title if only one governorship is held
hidden_effect = {
$SOURCE_GOVERNMENT$ = {
every_held_title = {
title_tier >= county
limit = {
is_landless_type_title = no
is_noble_family_title = no
}
change_title_holder_include_vassals = {
holder = scope:new_ruler
change = scope:change
take_baronies = no
}
}
}
}
resolve_title_and_vassal_change = scope:change
}
}
else = { # Otherwise we run the normal script
# Compile a list of all counties belonging to the faction.
scope:popular_faction = {
every_faction_county_member = {
duchy = {
add_to_list = seized_duchies
every_de_jure_county = {
limit = {
holder.top_liege = scope:faction_target
}
add_to_list = seized_counties
}
}
}
}
# Additionally, if we're at war (and not just pressing demands)...
if = {
limit = {
scope:faction_leader = {
is_at_war_with = scope:faction_target
}
}
# Add all occupied counties of the correct culture/faith.
scope:faction_target = {
every_sub_realm_county = {
limit = {
county_controller = scope:faction_leader
OR = {
culture = scope:faction_leader.culture
faith = scope:faction_leader.faith
}
}
add_to_list = seized_counties
}
}
# And add any war members that aren't already in the faction.
scope:faction_leader = {
every_character_war = {
limit = {
is_defender = scope:faction_target
}
every_war_attacker = {
limit = {
NOT = { is_in_list = faction_members }
}
add_to_list = faction_members
}
}
}
}
show_as_tooltip = {
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change_tooltip
add_claim_on_loss = yes
}
every_in_list = {
list = seized_duchies
change_title_holder = {
holder = scope:faction_leader
change = scope:change_tooltip
take_baronies = no
}
becomes_independent = {
change = scope:change_tooltip
}
}
resolve_title_and_vassal_change = scope:change_tooltip
}
# Give out titles in such way that each leader gets all titles within the same Kingdom
# Step 1: Duplicate the list of all members
every_in_list = {
list = faction_members
add_to_list = faction_members_loop
}
# Step 2: Create a while loop to give out counties to each faction member until we run out of the counties
while = {
limit = {
list_size:seized_counties >= 1
}
# Step 3: If there is no more leaders, create new one
if = {
limit = {
list_size:faction_members_loop < 1
}
# Step 3.1: Pick the best county that is still available to base all other title handovers on
ordered_in_list = {
list = seized_counties
order_by = {
value = total_county_levies
multiply = {
value = 1
# Up to 50% bonus points for counties of the correct culture/faith.
if = {
limit = { culture != scope:faction_leader.culture }
add = 0.25
}
if = {
limit = { faith != scope:faction_leader.faith }
add = 0.25
}
}
}
save_scope_as = capital_county
}
create_character = {
location = scope:capital_county.title_province
culture = scope:capital_county.culture
faith = scope:capital_county.faith
template = peasant_faction_leader_template
gender_female_chance = scope:capital_county.location_faith_dominant_gender_female_chance
save_scope_as = new_county_holder
}
scope:new_county_holder = {
add_to_list = faction_members
add_to_list = faction_members_loop
add_trait_xp = {
trait = peasant_leader
value = peasant_leader_xp_value
}
}
}
# Step 4: Grab a faction member with highest peasant leader xp, but always grab the faction leader first
ordered_in_list = {
list = faction_members_loop
order_by = {
value = "has_trait_xp(peasant_leader)"
if = {
limit = {
this = scope:faction_leader
}
add = 1000
}
}
save_scope_as = next_leader
# Step 4.1: Pick the best county that is still available to base all other title handovers on
if = {
limit = {
NOT = { exists = scope:capital_county }
}
if = {
limit = {
is_landed = yes
}
capital_county = {
save_scope_as = capital_county
}
}
else = {
ordered_in_list = {
list = seized_counties
order_by = {
value = total_county_levies
multiply = {
value = 1
# Up to 300% bonus points for counties of the correct culture/faith.
if = {
limit = { culture = scope:next_leader.culture }
add = 1
}
if = {
limit = { faith = scope:next_leader.faith }
add = 1
}
}
}
save_scope_as = capital_county
}
}
}
# Step 5: CHANGE ONE - Give them the selected county and make them go independent
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change_one
add_claim_on_loss = yes
}
scope:capital_county = {
change_title_holder = {
holder = scope:next_leader
change = scope:change_one
take_baronies = no
}
}
becomes_independent = {
change = scope:change_one
}
resolve_title_and_vassal_change = scope:change_one
# Step 6: CHANGE TWO - Give them all Duchies and Counties within the Kingdom of the capital county
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change_two
add_claim_on_loss = yes
}
every_in_list = {
list = seized_counties
limit = {
kingdom = scope:capital_county.kingdom
}
change_title_holder = {
holder = scope:next_leader
change = scope:change_two
take_baronies = no
}
remove_from_list = seized_counties
}
every_in_list = {
list = seized_duchies
limit = {
kingdom = scope:capital_county.kingdom
}
change_title_holder = {
holder = scope:next_leader
change = scope:change_two
take_baronies = no
}
remove_from_list = seized_duchies
}
resolve_title_and_vassal_change = scope:change_two
# Step 6: CHANGE THREE - Usurp the Kingdom if they hold enough land
if = {
limit = {
primary_title.kingdom = {
any_de_jure_county = {
percent > 0.5
holder = scope:next_leader
}
}
}
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change_three
add_claim_on_loss = yes
}
primary_title.kingdom = {
change_title_holder = {
holder = scope:next_leader
change = scope:change_three
take_baronies = no
}
}
resolve_title_and_vassal_change = scope:change_three
}
# Step 6.1: If the title we gave is a new dynamic title, generate a CoA for it.
if = {
limit = {
exists = scope:new_title
}
scope:new_title = {
set_capital_county = scope:capital_county
generate_coa = yes
}
}
# Step 7: Destroy their peasant uprising title
if = {
limit = {
has_variable = peasant_title
exists = var:peasant_title.holder
}
destroy_title = var:peasant_title
}
# Step 8: Set up government type correctly.
scope:capital_county = {
previous_holder ?= {
if = {
limit = {
is_alive = yes
}
save_scope_as = old_holder
switch = {
trigger = government_has_flag
government_is_administrative = {
save_scope_value_as = { name = old_government value = flag:admin }
}
government_is_clan = {
save_scope_value_as = { name = old_government value = flag:clan }
}
government_is_tribal = {
save_scope_value_as = { name = old_government value = flag:tribal }
}
government_is_wanua = {
save_scope_value_as = { name = old_government value = flag:wanua }
}
government_is_nomadic = {
save_scope_value_as = { name = old_government value = flag:nomad }
}
government_is_celestial = {
save_scope_value_as = { name = old_government value = flag:admin }
}
government_is_steppe_admin = {
save_scope_value_as = { name = old_government value = flag:admin }
}
government_is_meritocratic = {
save_scope_value_as = { name = old_government value = flag:admin }
}
government_is_japan_administrative = {
save_scope_value_as = { name = old_government value = flag:admin }
}
government_is_japan_feudal = {
save_scope_value_as = { name = old_government value = flag:japan_feudal }
}
government_is_mandala = {
save_scope_value_as = { name = old_government value = flag:mandala }
}
}
}
}
}
# Change our government according to the government of our liege.
## Nomad.
if = {
limit = {
OR = {
government_has_flag = government_is_nomadic
scope:old_government ?= flag:nomad
scope:capital_county.title_province = {
OR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
}
change_government = nomad_government
}
## Clan.
else_if = {
limit = {
OR = {
government_has_flag = government_is_clan
scope:old_government ?= flag:clan
ep3_is_clan_inclined_trigger = yes
}
}
change_government = clan_government
}
## Wanua or Tribal.
else_if = {
limit = {
scope:capital_county.title_province = {
has_holding_type = tribal_holding
}
}
if = {
limit = {
OR = {
government_has_flag = government_is_wanua
scope:old_government ?= flag:wanua
scope:capital_county.title_province = {
geographical_region = world_asia_southeast_islands
}
}
}
change_government = wanua_government
}
else = {
change_government = tribal_government
}
}
## Ritsuryo.
else_if = {
limit = {
OR = {
government_has_flag = government_is_japan_feudal
scope:old_government ?= flag:japan_feudal
culture = culture:japanese
culture = {
any_parent_culture_or_above = { this = culture:japanese }
}
}
}
change_government = japan_feudal_government
}
## Mandala.
else_if = {
limit = {
OR = {
AND = {
has_mandala_culture_trigger = yes
has_mandala_faith_trigger = yes
scope:capital_county.title_province = {
has_holding_type = temple_citadel_holding
}
}
government_has_flag = government_is_mandala
}
}
change_government = mandala_government
}
## Administrative.
## Celestial.
## Steppe admin.
## Meritocratic.
## Soryo.
else_if = {
limit = {
OR = {
government_allows = administrative
scope:old_government ?= flag:admin
}
}
change_to_administrative_effect = yes
}
## Else feudal.
else = { change_government = feudal_government }
# Step 9: Give them some gold/treasury if they don't have any
if = {
limit = {
gold <= 100
}
add_gold = {
value = stewardship
multiply = realm_size
}
}
if = {
limit = {
has_treasury = yes
treasury <= 100
}
add_treasury = {
value = gold
multiply = stewardship
max = 4000
}
}
# Step 10: Remove them from the looping list
remove_from_list = faction_members_loop
# Step 11: Clear the scopes, otherwise the while loop will break
clear_saved_scope = next_leader
clear_saved_scope = capital_county
}
}
}
hidden_effect = {
# Make sure to destroy all peasant uprising titles and clean all variables
every_in_list = {
list = faction_members
every_held_title = {
limit = {
has_variable = faction
}
prev = {
destroy_title = prev
}
}
remove_variable = peasant_war_escalates
remove_variable = peasant_title
remove_variable = rebel_leader_peasants
remove_variable = peasant_faction_random_peasant
remove_variable = peasant_revolt_do_not_kill
}
# If the faction still exists, dissolve it (it's no longer relevant).
if = {
limit = {
exists = scope:popular_faction
}
scope:popular_faction = {
destroy_faction = yes
}
}
}
if = {
limit = {
scope:faction_target.top_participant_group:dynastic_cycle ?= {
participant_group_type = hegemon_ruler
}
situation:dynastic_cycle = {
situation_top_has_catalyst = catalyst_hegemon_lost_defensive_territorial_war
}
}
situation:dynastic_cycle = {
trigger_situation_catalyst = {
catalyst = catalyst_hegemon_lost_defensive_territorial_war
character = scope:faction_leader
}
}
}
}
create_popular_revolt_title_effect = {
$FACTION$ = {
ordered_faction_county_member = {
limit = {
faith = $FACTION_LEADER$.faith
culture = $FACTION_LEADER$.culture
}
alternative_limit = {
always = yes
}
order_by = total_county_levies
save_scope_as = base_county
}
$FACTION_LEADER$.culture = { save_scope_as = founder_culture }
create_dynamic_title = {
tier = $TIER$
name = FACTION_POPULIST_CREATED_TITLE_NAME
}
scope:new_title = {
set_variable = {
name = faction
value = $FACTION$
}
set_color_from_title = scope:base_county
}
}
}
successful_nomadic_revolt_outcome_effect = {
hidden_effect = {
# Save scopes for later usage.
$FACTION_LEADER$ = {
add_character_flag = successful_nomad_revolt_leader
joined_faction = {
save_scope_as = nomadic_faction
every_faction_member = {
add_to_list = faction_members
}
faction_target = {
save_scope_as = faction_target
}
}
if = {
limit = {
has_variable = peasant_title
exists = this.var:peasant_title.holder
}
destroy_title = this.var:peasant_title
}
}
# Compile a list of all duchies and counties belonging to the faction.
scope:nomadic_faction = {
every_faction_county_member = {
add_to_list = seized_counties
duchy = {
every_de_jure_county = { # Seize entire duchies
limit = {
holder.top_liege = scope:faction_target
NOT = { is_in_list = seized_counties }
}
add_to_list = seized_counties
}
if = {
limit = {
NOT = { is_in_list = seized_duchies }
}
add_to_list = seized_duchies
}
}
}
}
# Select a 'capital' county for the faction leader.
scope:nomadic_faction = {
ordered_in_list = {
list = seized_counties
order_by = {
value = 0
if = {
limit = {
uses_county_fertility = yes
}
add = county_fertility
}
else = {
add = development_level
}
multiply = {
value = 1
if = {
limit = { culture = $FACTION_LEADER$.culture }
add = 200
}
if = {
limit = { faith = $FACTION_LEADER$.faith }
add = 50
}
}
}
save_scope_as = capital_county
}
}
# Give the leader the counties they should have and make them a nomad.
$FACTION_LEADER$ = {
add_to_list = independent_nomads
change_government = nomad_government
}
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change
add_claim_on_loss = yes
}
scope:capital_county = {
change_title_holder = {
holder = $FACTION_LEADER$
change = scope:change
take_baronies = no
}
add_to_list = divided_titles
duchy = {
every_de_jure_county = { # Seize entire duchies
limit = {
is_in_list = seized_counties
NOT = { is_in_list = divided_titles }
}
change_title_holder = {
holder = $FACTION_LEADER$
change = scope:change
take_baronies = no
}
add_to_list = divided_titles
}
if = {
limit = {
OR = {
NOT = { exists = holder }
trigger_if = {
limit = { exists = holder }
holder.top_liege = scope:faction_target
}
}
NOT = { is_in_list = divided_titles }
}
change_title_holder = {
holder = $FACTION_LEADER$
change = scope:change
}
add_to_list = divided_titles
}
}
}
resolve_title_and_vassal_change = scope:change
while = {
limit = {
any_in_list = {
list = seized_counties
NOT = {
is_in_list = divided_titles
}
}
}
random_in_list = {
list = seized_counties
limit = {
NOT = {
is_in_list = divided_titles
}
}
save_scope_as = handout_county
hidden_effect = {
create_character = {
location = scope:handout_county.title_province
template = nomadic_faction_leader_template
faith = scope:handout_county.faith
culture = scope:handout_county.culture
dynasty = generate
gender_female_chance = {
if = {
limit = { scope:handout_county.faith = { has_doctrine = doctrine_gender_male_dominated } }
add = 0
}
else_if = {
limit = { scope:handout_county.faith = { has_doctrine = doctrine_gender_female_dominated } }
add = 100
}
else = {
add = 50
}
}
save_scope_as = new_nomad
}
scope:new_nomad = {
add_to_list = independent_nomads
}
}
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change
add_claim_on_loss = yes
}
scope:handout_county = {
change_title_holder = {
holder = scope:new_nomad
change = scope:change
take_baronies = no
}
add_to_list = divided_titles
duchy = {
every_de_jure_county = { # Seize entire duchies
limit = {
is_in_list = seized_counties
NOT = { is_in_list = divided_titles }
}
change_title_holder = {
holder = scope:new_nomad
change = scope:change
take_baronies = no
}
add_to_list = divided_titles
}
if = {
limit = {
OR = {
NOT = { exists = holder }
trigger_if = {
limit = { exists = holder }
holder.top_liege = scope:faction_target
}
}
NOT = { is_in_list = divided_titles }
}
change_title_holder = {
holder = scope:new_nomad
change = scope:change
}
add_to_list = divided_titles
}
}
}
resolve_title_and_vassal_change = scope:change
}
}
# Make sure everyone is independent
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change
add_claim_on_loss = yes
}
every_in_list = {
list = independent_nomads
limit = {
is_independent_ruler = no
}
hidden_effect = {
becomes_independent = {
change = scope:change
}
}
}
resolve_title_and_vassal_change = scope:change
# Set them up for success
every_in_list = {
list = independent_nomads
hidden_effect = {
save_temporary_scope_as = nomad_becoming_independent
every_held_title = {
limit = {
tier = tier_county
}
if = {
limit = {
title_province = {
has_holding_type = herder_holding
}
}
title_province = {
set_holding_type = nomad_holding
}
}
add_county_modifier = {
modifier = county_increased_opinion_modifier
years = 25
}
if = {
limit = {
has_county_modifier = peasant_war_lost_county_modifier
}
remove_county_modifier = peasant_war_lost_county_modifier
}
}
if = {
limit = {
gold < 50
}
add_gold = 150
}
if = {
limit = {
is_ruler = yes
NOT = {
government_has_flag = government_is_nomadic
}
}
change_government = nomad_government
}
if = {
limit = {
NOT = { government_has_flag = government_allows_nomad_domicile_titles }
NOT = {
any_held_title = {
is_nomad_title = yes
}
}
}
save_scope_as = holder
create_nomad_title = {
name = nomad_title_name
holder = scope:holder
government = nomad_government
save_scope_as = new_nomad_title
}
}
if = {
limit = {
NOT = { has_realm_law = nomadic_authority_1 }
}
add_realm_law_skip_effects = nomadic_authority_1
}
if = {
limit = {
highest_held_title_tier >= tier_duchy
NOT = { has_realm_law = nomadic_authority_2 }
}
if = {
limit = {
has_realm_law = nomadic_authority_1
}
remove_realm_law = nomadic_authority_1
add_realm_law_skip_effects = nomadic_authority_2
}
}
if = { limit = { has_realm_law = crown_authority_0 } remove_realm_law = crown_authority_0 }
if = { limit = { has_realm_law = crown_authority_1 } remove_realm_law = crown_authority_1 }
if = { limit = { has_realm_law = crown_authority_2 } remove_realm_law = crown_authority_2 }
if = { limit = { has_realm_law = crown_authority_3 } remove_realm_law = crown_authority_3 }
domicile ?= {
change_herd = {
value = scope:nomad_becoming_independent.capital_county.county_fertility
min = 20
multiply = 150
}
}
}
}
# If the faction still exists, dissolve it (it's no longer relevant).
hidden_effect = {
if = {
limit = {
exists = scope:nomadic_faction
}
scope:nomadic_faction = {
destroy_faction = yes
}
}
}
}
show_as_tooltip = {
$FACTION_LEADER$ = {
save_scope_as = tooltip_leader
custom_tooltip = nomads_take_everything_tt
}
create_title_and_vassal_change = {
type = conquest_populist
save_scope_as = change
add_claim_on_loss = yes
}
every_in_list = {
list = seized_duchies
change_title_holder = {
holder = $FACTION_LEADER$
change = scope:change
take_baronies = no
}
}
every_in_list = {
list = seized_counties
change_title_holder = {
holder = $FACTION_LEADER$
change = scope:change
take_baronies = no
}
}
resolve_title_and_vassal_change = scope:change
}
}
spawn_popular_revolt_troops = {
# Spawn Levies
spawn_army = {
levies = {
value = 0
joined_faction = {
every_faction_county_member = {
limit = {
duchy = scope:local_center_of_rebellion.duchy
}
add = county_levies_to_raise
}
}
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
# Spawn MAAs - An appropriate amount of troops dependent on the terrain type they spawn in
if = {
limit = {
scope:local_center_of_rebellion = {
OR = {
terrain = forest
terrain = taiga
terrain = jungle
terrain = plains
terrain = drylands
terrain = oasis
terrain = desert
terrain = wetlands
terrain = steppe
}
}
}
spawn_army = {
men_at_arms = {
type = light_footmen
stacks = {
value = 0
joined_faction = {
every_faction_county_member = {
limit = {
duchy = scope:local_center_of_rebellion.duchy
}
add = county_maa_to_raise
}
}
}
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else_if = {
limit = {
scope:local_center_of_rebellion = {
OR = {
terrain = mountains
terrain = desert_mountains
}
}
}
spawn_army = {
men_at_arms = {
type = pikemen_unit
stacks = {
value = 0
joined_faction = {
every_faction_county_member = {
limit = {
duchy = scope:local_center_of_rebellion.duchy
}
add = county_maa_to_raise
}
}
}
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else_if = {
limit = {
scope:local_center_of_rebellion = {
OR = {
terrain = hills
terrain = farmlands
terrain = floodplains
}
}
}
spawn_army = {
men_at_arms = {
type = bowmen
stacks = {
value = 0
joined_faction = {
every_faction_county_member = {
limit = {
duchy = scope:local_center_of_rebellion.duchy
}
add = county_maa_to_raise
}
}
}
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
# Spawn Siege Weapons depending on discovered innovations
if = {
limit = {
culture = { has_innovation = innovation_gunpowder }
}
spawn_army = {
men_at_arms = {
type = bombard
stacks = 1
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else_if = {
limit = {
culture = { has_innovation = innovation_trebuchet }
}
spawn_army = {
men_at_arms = {
type = trebuchet
stacks = 1
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else_if = {
limit = {
culture = { has_innovation = innovation_mangonel }
}
spawn_army = {
men_at_arms = {
type = mangonel
stacks = 1
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else_if = {
limit = {
culture = { has_innovation = innovation_catapult }
}
spawn_army = {
men_at_arms = {
type = onager
stacks = 1
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
if = {
limit = { has_variable = ep3_governor_yearly_8150_ignored }
root.faction_leader = {
spawn_army = {
name = ep3_governor_yearly_8150_troop_name
men_at_arms = {
type = light_footmen
stacks = 2
}
war = root.faction_war
location = scope:local_center_of_rebellion
origin = scope:local_center_of_rebellion
inheritable = no
}
}
remove_variable = ep3_governor_yearly_8150_ignored
}
}
spawn_nomadic_revolt_troops = {
# Spawn Horde Riders
spawn_army = {
men_at_arms = {
type = nomadic_riders
men = {
value = 0
joined_faction = {
every_faction_county_member = {
limit = {
duchy = scope:local_center_of_rebellion.duchy
}
add = county_horde_riders_to_raise
}
}
}
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = nomadic_faction_event_troops
}
spawn_army = {
men_at_arms = {
type = steppe_raiders
men = {
value = 0
joined_faction = {
every_faction_county_member = {
limit = {
duchy = scope:local_center_of_rebellion.duchy
}
add = {
value = county_horde_riders_to_raise
divide = 2
}
}
}
}
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = nomadic_faction_event_troops
}
spawn_army = {
men_at_arms = {
type = horse_archers
men = {
value = 0
joined_faction = {
every_faction_county_member = {
limit = {
duchy = scope:local_center_of_rebellion.duchy
}
add = {
value = county_horde_riders_to_raise
divide = 2
}
}
}
}
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = nomadic_faction_event_troops
}
# Spawn Siege Weapons depending on discovered innovations
if = {
limit = {
culture = { has_innovation = innovation_gunpowder }
}
spawn_army = {
men_at_arms = {
type = bombard
stacks = 1
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else_if = {
limit = {
culture = { has_innovation = innovation_trebuchet }
}
spawn_army = {
men_at_arms = {
type = trebuchet
stacks = 1
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else_if = {
limit = {
culture = { has_innovation = innovation_mangonel }
}
spawn_army = {
men_at_arms = {
type = mangonel
stacks = 1
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else_if = {
limit = {
culture = { has_innovation = innovation_catapult }
}
spawn_army = {
men_at_arms = {
type = onager
stacks = 1
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
else = {
spawn_army = {
men_at_arms = {
type = torch_bearers
stacks = 5
}
location = scope:local_center_of_rebellion
war = root.faction_war
name = populist_faction_event_troops
}
}
}
peasant_faction_demands_enforced = {
# escalate if in the Cycle
if = {
limit = {
NOT = { exists = scope:defender }
}
save_scope_as = defender
}
if = {
limit = {
scope:defender != scope:defender.top_liege
#only in Dynastic Cycle
scope:defender.top_liege.top_participant_group:dynastic_cycle ?= {
participant_group_type = hegemon_ruler
}
}
scope:defender.top_liege = {
set_variable = {
name = peasant_war_escalates
days = 365
}
}
$FACTION$ = {
faction_leader = {
save_scope_as = attacker
add_character_flag = peasant_revolt_do_not_kill
set_variable = {
name = peasant_war_escalates
days = 365
}
add_trait_xp = {
trait = peasant_leader
value = 20
}
}
every_faction_county_member = {
add_to_list = faction_counties
add_county_modifier = {
modifier = peasant_war_lost_county_modifier
years = 10
}
}
destroy_faction = yes
}
if = {
limit = {
NOT = { exists = scope:attacker }
}
scope:peasant_leader = {
save_scope_as = attacker
}
}
if = {
limit = {
scope:defender.top_liege = {
any_targeting_faction = {
faction_type = escalated_peasant_faction
save_temporary_scope_as = escalated_faction
}
}
}
scope:defender.top_liege = {
send_interface_message = {
type = msg_faction_grows
left_icon = scope:attacker
right_icon = scope:defender
every_in_list = {
list = faction_counties
title_join_faction = scope:escalated_faction
}
scope:attacker = {
join_faction_skip_check = scope:escalated_faction
}
}
}
}
else = {
scope:attacker = {
create_faction = {
type = escalated_peasant_faction
target = scope:defender.top_liege
}
}
scope:defender.top_liege = {
random_targeting_faction = {
faction_type = escalated_peasant_faction
save_scope_as = escalated_faction
set_special_character = scope:attacker
}
}
custom_tooltip = {
text = county_and_leader_join_faction_against_top_liege
if = {
limit = {
exists = scope:escalated_faction
}
every_in_list = {
list = faction_counties
limit = {
title_is_a_faction_member = no
}
title_join_faction = scope:escalated_faction
}
scope:attacker = {
set_variable = {
name = rebel_leader_peasants
value = scope:escalated_faction
}
join_faction_skip_check = scope:escalated_faction
primary_title = {
set_title_name_dynamic = peasant_leader_title_name
}
}
}
}
}
}
# otherwise finish the faction as usual
else = {
$FACTION$ = {
every_faction_county_member = {
custom = peasant_faction_every_county
change_county_control = peasant_war_victory_county_control_loss
add_county_modifier = {
modifier = peasant_war_lost_county_modifier
years = 10
}
}
hidden_effect = {
clean_revolt_county_modifiers_from_faction_members_effect = yes
destroy_faction = yes
}
}
}
}
invalidate_claimant_factions_on_death_effect = {
every_in_list = {
variable = claimant_factions
if = {
limit = {
exists = faction_war
}
faction_war = {
clear_claimant = yes
set_casus_belli = depose_war
}
faction_remove_war = yes # else the war gets invalidated when we destroy the faction
}
destroy_faction = yes
}
clear_variable_list = claimant_factions
}
invalidate_ceremonial_claimant_factions_on_death_effect = {
every_in_list = {
variable = ceremonial_claimant_factions
if = {
limit = {
exists = faction_war
}
faction_war = {
clear_claimant = yes
set_casus_belli = depose_war
}
faction_remove_war = yes # else the war gets invalidated when we destroy the faction
}
destroy_faction = yes
}
clear_variable_list = ceremonial_claimant_factions
}
setup_nomadic_leader_effect = {
save_scope_as = faction
random_faction_county_member = {
save_scope_as = peasant_county
}
# Create a leader for the nomadic faction.
create_character = {
location = scope:peasant_county.title_province
template = nomadic_faction_leader_template
faith = scope:peasant_county.faith
culture = scope:peasant_county.culture
gender_female_chance = {
if = {
limit = { scope:peasant_county.faith = { has_doctrine = doctrine_gender_male_dominated } }
add = 0
}
else_if = {
limit = { scope:peasant_county.faith = { has_doctrine = doctrine_gender_female_dominated } }
add = 100
}
else = {
add = 50
}
}
save_scope_as = peasant_leader
}
scope:peasant_leader = {
add_character_flag = peasant_faction_random_peasant
}
# Create a new title for the peasant.
create_dynamic_title = {
tier = duchy
name = FACTION_NOMADIC_REVOLT_TITLE_NAME
}
create_title_and_vassal_change = {
type = created
save_scope_as = change
add_claim_on_loss = no
}
scope:new_title = {
set_capital_county = scope:peasant_county
set_landless_title = yes
set_destroy_on_succession = yes
set_delete_on_destroy = yes
set_no_automatic_claims = yes
set_definitive_form = yes
set_can_be_named_after_dynasty = no
change_title_holder = {
holder = scope:peasant_leader
change = scope:change
}
set_variable = {
name = faction
value = scope:faction
}
}
resolve_title_and_vassal_change = scope:change
scope:peasant_leader = {
set_variable = {
name = peasant_title
value = scope:new_title
}
if = {
limit = {
is_ruler = yes
NOT = {
government_has_flag = government_is_nomadic
}
}
change_government = nomad_government
}
}
scope:new_title = { generate_coa = factions }
# Set the peasant leader as the head of the faction.
scope:peasant_leader = {
set_variable = {
name = rebel_leader_peasants
value = scope:faction
}
join_faction_skip_check = scope:faction
}
set_special_character = scope:peasant_leader
}
setup_populist_leader_effect = {
save_scope_as = faction
random_faction_county_member = {
save_scope_as = peasant_county
}
# Runs the scripted effect to find the best title to target for the rebellion.
get_popular_revolt_target_effect = { FACTION = this }
# Find or create a leader for the populist faction.
scope:target_title = {
# Look to see if there are any displaced characters who are legitimate claimants to the target title that the populists might support.
random_claimant = {
limit = {
# Checks the 'is_character_valid' and 'can_character_join' triggers above, plus the faction hard/soft blocks in 00_rules.txt
can_join_faction = scope:faction
can_join_or_create_faction_against = scope:faction.faction_target
# Must share a faith & culture with the revolting county.
faith = scope:peasant_county.faith
culture = scope:peasant_county.culture
# Must be allowed to rule in their faith.
trigger_if = {
limit = {
faith = { has_doctrine = doctrine_gender_male_dominated }
}
is_male = yes
}
trigger_else_if = {
limit = {
faith = { has_doctrine = doctrine_gender_female_dominated }
}
is_female = yes
}
trigger_else = {
always = yes
}
# Must not already be a landed ruler, or set to inheirit a landed title.
AND = {
is_ruler = no
is_playable_character = no
NOT = {
any_heir_title = {
exists = this
}
}
}
}
save_scope_as = peasant_leader
add_character_flag = peasant_faction_claimant_without_title
add_trait = populist_leader
}
}
if = {
limit = {
NOT = { exists = scope:peasant_leader }
exists = special_character
}
special_character = {
save_scope_as = peasant_leader
}
}
# If we can't find any, then generate a new character to be the populist leader of the revolt.
else = {
create_character = {
location = scope:peasant_county.title_province
template = populist_faction_leader_template
faith = scope:peasant_county.faith
culture = scope:peasant_county.culture
gender_female_chance = {
if = {
limit = { scope:peasant_county.faith = { has_doctrine = doctrine_gender_male_dominated } }
add = 0
}
else_if = {
limit = { scope:peasant_county.faith = { has_doctrine = doctrine_gender_female_dominated } }
add = 100
}
else = {
add = 50
}
}
trait = populist_leader
save_scope_as = peasant_leader
}
scope:peasant_leader = {
add_character_flag = peasant_faction_random_peasant
}
}
if = {
limit = {
NOT = { exists = scope:peasant_leader.primary_title }
}
# Create a new title for the peasant.
create_dynamic_title = {
tier = duchy
name = FACTION_POPULIST_REVOLT_TITLE_NAME
}
create_title_and_vassal_change = {
type = created
save_scope_as = change
add_claim_on_loss = no
}
scope:new_title = {
set_capital_county = scope:peasant_county
set_landless_title = yes
set_destroy_on_succession = yes
set_delete_on_destroy = yes
set_no_automatic_claims = yes
set_definitive_form = yes
set_can_be_named_after_dynasty = no
set_can_use_nomadic_naming = no
change_title_holder = {
holder = scope:peasant_leader
change = scope:change
}
set_variable = {
name = faction
value = scope:faction
}
}
resolve_title_and_vassal_change = scope:change
scope:peasant_leader = {
set_variable = {
name = peasant_title
value = scope:new_title
}
}
scope:new_title = { generate_coa = factions }
# Set the peasant leader as the head of the faction.
scope:peasant_leader = {
set_variable = {
name = rebel_leader_peasants
value = scope:faction
}
join_faction_skip_check = scope:faction
}
set_special_character = scope:peasant_leader
}
}
setup_peasant_leader_effect = {
save_scope_as = faction
# Does a peasant capital county already exist?
if = {
limit = {
NOT = { exists = scope:peasant_county }
}
random_faction_county_member = { save_scope_as = peasant_county }
}
# Does a peasant leader already exist?
if = {
limit = {
NOT = { exists = scope:peasant_leader }
}
create_character = {
location = scope:peasant_county.title_province
template = peasant_faction_leader_template
faith = scope:peasant_county.faith
culture = scope:peasant_county.culture
gender_female_chance = {
if = {
limit = { scope:peasant_county.faith = { has_doctrine = doctrine_gender_male_dominated } }
add = 0
}
else_if = {
limit = { scope:peasant_county.faith = { has_doctrine = doctrine_gender_female_dominated } }
add = 100
}
else = {
add = 50
}
}
save_scope_as = peasant_leader
}
}
scope:peasant_leader = {
add_character_flag = peasant_faction_random_peasant
}
create_dynamic_title = {
tier = duchy
name = FACTION_PEASANT_TITLE_NAME
}
create_title_and_vassal_change = {
type = created
save_scope_as = change
add_claim_on_loss = no
}
scope:new_title = {
set_capital_county = scope:peasant_county
set_landless_title = yes
set_destroy_on_succession = yes
set_delete_on_destroy = yes
set_no_automatic_claims = yes
set_definitive_form = yes
set_can_be_named_after_dynasty = no
set_can_use_nomadic_naming = no
change_title_holder = {
holder = scope:peasant_leader
change = scope:change
}
set_variable = {
name = faction
value = scope:faction
}
# avoid unused variable error. This variable is referenced in code
var:faction = {}
}
resolve_title_and_vassal_change = scope:change
scope:peasant_leader = {
set_variable = {
name = peasant_title
value = scope:new_title
}
}
scope:new_title = { generate_coa = factions }
scope:peasant_leader = {
set_variable = {
name = rebel_leader_peasants
value = scope:faction
}
join_faction_skip_check = scope:faction
add_trait_xp = {
trait = peasant_leader
value = peasant_leader_xp_value
}
}
set_special_character = scope:peasant_leader
}
faction_spawn_member_county_armies_effect = {
every_faction_county_member = {
custom = peasant_faction_every_county
hidden_effect = {
save_scope_as = county
title_province = {
save_scope_as = county_location
}
}
# Reduce county control in faction member counties
change_county_control = peasant_war_starts_county_control_loss
# Spawn an army in each faction member county
custom_tooltip = peasant_faction_spawn_county_levies
hidden_effect = {
$ARMY_OWNER$ = {
spawn_army = {
levies = scope:county.county_levies_to_raise
location = scope:county_location
war = $FACTION$.faction_war
name = $PEASANT_ARMY_NAME$
}
}
}
}
}