##################################################################### # 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$ } } } } }