579 lines
12 KiB
Text
579 lines
12 KiB
Text
|
|
nomadic_faction = {
|
||
|
|
casus_belli = nomadic_war
|
||
|
|
|
||
|
|
leaders_allowed_to_leave = no
|
||
|
|
player_can_join = no
|
||
|
|
|
||
|
|
sort_order = 3
|
||
|
|
|
||
|
|
name = FACTION_NOMAD_DYNAMIC_NAME
|
||
|
|
|
||
|
|
short_effect_desc = nomadic_faction_short_effect_desc
|
||
|
|
|
||
|
|
discontent_progress = {
|
||
|
|
base = 0
|
||
|
|
|
||
|
|
modifier = {
|
||
|
|
add = 5
|
||
|
|
desc = "BASE_COLON"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
power_threshold = 0
|
||
|
|
|
||
|
|
requires_county = yes
|
||
|
|
requires_character = no
|
||
|
|
|
||
|
|
is_valid = {
|
||
|
|
always = yes
|
||
|
|
}
|
||
|
|
|
||
|
|
is_county_valid = {
|
||
|
|
# Counties can only be in a faction against the top liege in their realm (who is inherently independent).
|
||
|
|
scope:faction.faction_target = holder.top_liege
|
||
|
|
holder.top_liege = {
|
||
|
|
NOR = {
|
||
|
|
has_government = herder_government
|
||
|
|
any_owned_story = {
|
||
|
|
OR = {
|
||
|
|
story_type = story_greatest_of_khans
|
||
|
|
story_type = story_mongol_invasion
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
title_province = {
|
||
|
|
OR = {
|
||
|
|
has_holding_type = nomad_holding
|
||
|
|
has_holding_type = herder_holding
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
can_character_join = {
|
||
|
|
joined_faction = scope:faction
|
||
|
|
}
|
||
|
|
|
||
|
|
can_county_join = {
|
||
|
|
title_province = {
|
||
|
|
OR = {
|
||
|
|
has_holding_type = nomad_holding
|
||
|
|
has_holding_type = herder_holding
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
can_county_create = {
|
||
|
|
county_opinion < 0
|
||
|
|
|
||
|
|
# Can only join factions against our top liege (not direct liege)
|
||
|
|
scope:target = holder.top_liege
|
||
|
|
holder.top_liege = {
|
||
|
|
NOR = {
|
||
|
|
has_government = herder_government
|
||
|
|
any_owned_story = {
|
||
|
|
OR = {
|
||
|
|
story_type = story_greatest_of_khans
|
||
|
|
story_type = story_mongol_invasion
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
title_province = {
|
||
|
|
OR = {
|
||
|
|
has_holding_type = nomad_holding
|
||
|
|
has_holding_type = herder_holding
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
####
|
||
|
|
# BLOCKERS
|
||
|
|
####
|
||
|
|
# General Faction immunity
|
||
|
|
custom_description = {
|
||
|
|
text = character_is_immune_to_factions
|
||
|
|
subject = scope:target
|
||
|
|
NOT = { scope:target = { immune_to_factions_trigger = yes } }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
can_character_become_leader = {
|
||
|
|
always = yes
|
||
|
|
}
|
||
|
|
|
||
|
|
county_create_score = {
|
||
|
|
base = -5
|
||
|
|
|
||
|
|
compare_modifier = { # Non-nomads get it at -15 county opinion
|
||
|
|
trigger = {
|
||
|
|
scope:target = {
|
||
|
|
NOT = { government_has_flag = government_is_nomadic }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
value = county_opinion
|
||
|
|
multiplier = -2
|
||
|
|
|
||
|
|
desc = "FACTION_REASON_COUNTY_OPINION"
|
||
|
|
}
|
||
|
|
|
||
|
|
compare_modifier = { # Nomads get it at roughly -35 county opinion
|
||
|
|
trigger = {
|
||
|
|
scope:target = {
|
||
|
|
government_has_flag = government_is_nomadic
|
||
|
|
}
|
||
|
|
}
|
||
|
|
value = county_opinion
|
||
|
|
multiplier = -1
|
||
|
|
|
||
|
|
desc = "FACTION_REASON_COUNTY_OPINION"
|
||
|
|
}
|
||
|
|
|
||
|
|
# If the targeted ruler isn't nomadic... time to rumble
|
||
|
|
modifier = {
|
||
|
|
add = 20
|
||
|
|
scope:target = {
|
||
|
|
NOR = {
|
||
|
|
government_has_flag = government_is_nomadic
|
||
|
|
government_has_flag = government_is_herder
|
||
|
|
}
|
||
|
|
}
|
||
|
|
desc = "FACTION_REASON_DISLIKE_NON_NOMADS"
|
||
|
|
}
|
||
|
|
|
||
|
|
legalism_virtue_and_sin_modifier = {
|
||
|
|
TARGET = scope:target
|
||
|
|
SCORE_PER_TRAIT = 10
|
||
|
|
}
|
||
|
|
|
||
|
|
# Realm Stability Settings
|
||
|
|
modifier = {
|
||
|
|
add = 25
|
||
|
|
has_game_rule = lesser_realm_stability
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
add = -25
|
||
|
|
has_game_rule = higher_realm_stability
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
add = -50
|
||
|
|
has_game_rule = extreme_realm_stability
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_LESSER"
|
||
|
|
add = 25
|
||
|
|
has_game_rule = lesser_realm_stability_ai_only
|
||
|
|
scope:target = {
|
||
|
|
is_ai = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_HIGHER"
|
||
|
|
add = -25
|
||
|
|
has_game_rule = higher_realm_stability_ai_only
|
||
|
|
scope:target = {
|
||
|
|
is_ai = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_EXTREME"
|
||
|
|
add = -50
|
||
|
|
has_game_rule = extreme_realm_stability_ai_only
|
||
|
|
scope:target = {
|
||
|
|
is_ai = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Conquerors
|
||
|
|
modifier = {
|
||
|
|
add = -100
|
||
|
|
scope:target = { ai_should_get_conqueror_bonuses = yes }
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
add = -200
|
||
|
|
scope:target = { ai_should_get_extreme_conqueror_bonuses = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# 10-year 'grace period' from nomadic factions forming after game start
|
||
|
|
modifier = {
|
||
|
|
years_from_game_start <= 10
|
||
|
|
factor = {
|
||
|
|
value = 0
|
||
|
|
if = {
|
||
|
|
limit = { years_from_game_start >= 5 }
|
||
|
|
add = years_from_game_start
|
||
|
|
subtract = 5
|
||
|
|
divide = 5 # In year 6 factions can begin forming, but at 20% weighting. This increases to 40% in year 7, 60% in year 8, etc., up to 100% in year 10 where things are then normal.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
county_join_score = {
|
||
|
|
base = 0
|
||
|
|
|
||
|
|
compare_modifier = { # Non-nomads get it at -10 county opinion
|
||
|
|
trigger = {
|
||
|
|
scope:faction.faction_target = {
|
||
|
|
NOT = { government_has_flag = government_is_nomadic }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
value = county_opinion
|
||
|
|
multiplier = -2
|
||
|
|
|
||
|
|
desc = "FACTION_REASON_COUNTY_OPINION"
|
||
|
|
}
|
||
|
|
|
||
|
|
compare_modifier = { # Nomads get it at roughly -30 county opinion
|
||
|
|
trigger = {
|
||
|
|
scope:faction.faction_target = {
|
||
|
|
government_has_flag = government_is_nomadic
|
||
|
|
}
|
||
|
|
}
|
||
|
|
value = county_opinion
|
||
|
|
multiplier = -1
|
||
|
|
|
||
|
|
desc = "FACTION_REASON_COUNTY_OPINION"
|
||
|
|
}
|
||
|
|
|
||
|
|
# If the targeted ruler isn't nomadic... time to rumble
|
||
|
|
modifier = {
|
||
|
|
add = 10
|
||
|
|
scope:faction.faction_target = {
|
||
|
|
NOR = {
|
||
|
|
government_has_flag = government_is_nomadic
|
||
|
|
government_has_flag = government_is_herder
|
||
|
|
}
|
||
|
|
}
|
||
|
|
desc = "FACTION_REASON_DISLIKE_NON_NOMADS"
|
||
|
|
}
|
||
|
|
|
||
|
|
legalism_virtue_and_sin_modifier = {
|
||
|
|
TARGET = scope:faction.faction_target
|
||
|
|
SCORE_PER_TRAIT = 10
|
||
|
|
}
|
||
|
|
|
||
|
|
# Realm Stability Settings
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_LESSER"
|
||
|
|
add = 25
|
||
|
|
has_game_rule = lesser_realm_stability
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_HIGHER"
|
||
|
|
add = -25
|
||
|
|
has_game_rule = higher_realm_stability
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_EXTREME"
|
||
|
|
add = -50
|
||
|
|
has_game_rule = extreme_realm_stability
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_LESSER"
|
||
|
|
add = 25
|
||
|
|
has_game_rule = lesser_realm_stability_ai_only
|
||
|
|
scope:faction.faction_target = {
|
||
|
|
is_ai = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_HIGHER"
|
||
|
|
add = -25
|
||
|
|
has_game_rule = higher_realm_stability_ai_only
|
||
|
|
scope:faction.faction_target = {
|
||
|
|
is_ai = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_EXTREME"
|
||
|
|
add = -50
|
||
|
|
has_game_rule = extreme_realm_stability_ai_only
|
||
|
|
scope:faction.faction_target = {
|
||
|
|
is_ai = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Conquerors
|
||
|
|
modifier = {
|
||
|
|
add = -100
|
||
|
|
scope:faction.faction_target = { ai_should_get_conqueror_bonuses = yes }
|
||
|
|
}
|
||
|
|
modifier = {
|
||
|
|
add = -200
|
||
|
|
scope:faction.faction_target = { ai_should_get_extreme_conqueror_bonuses = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
county_power = county_horde_riders_to_raise_power
|
||
|
|
|
||
|
|
ai_join_score = {
|
||
|
|
}
|
||
|
|
|
||
|
|
on_creation = {
|
||
|
|
random_faction_county_member = {
|
||
|
|
save_scope_as = founding_county
|
||
|
|
}
|
||
|
|
|
||
|
|
set_variable = {
|
||
|
|
name = faction_culture
|
||
|
|
value = scope:founding_county.culture
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = faction_faith
|
||
|
|
value = scope:founding_county.faith
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_destroy = {
|
||
|
|
set_variable = {
|
||
|
|
name = peasant_destroying
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { exists = special_character }
|
||
|
|
special_character = {
|
||
|
|
save_temporary_scope_as = destroyer_of_titles
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
has_variable = peasant_title
|
||
|
|
exists = this.var:peasant_title.holder
|
||
|
|
}
|
||
|
|
destroy_title = this.var:peasant_title
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = {
|
||
|
|
has_character_flag = successful_nomad_revolt_leader
|
||
|
|
}
|
||
|
|
}
|
||
|
|
every_held_title = {
|
||
|
|
limit = {
|
||
|
|
is_landless_type_title = yes
|
||
|
|
}
|
||
|
|
scope:destroyer_of_titles = { destroy_title = prev }
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { # To make sure we aren't in debt
|
||
|
|
gold > 0
|
||
|
|
}
|
||
|
|
remove_long_term_gold = gold # Zero out our wallet since the revolt is over and we're going back to being unlanded.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
is_alive = yes # To prevent dead people from being checked for variables
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
has_variable = rebel_leader_peasants
|
||
|
|
}
|
||
|
|
remove_variable = rebel_leader_peasants
|
||
|
|
}
|
||
|
|
remove_variable = peasant_title
|
||
|
|
remove_character_flag = peasant_faction_random_peasant
|
||
|
|
remove_character_flag = peasant_faction_claimant_without_title
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
has_character_flag = peasant_faction_random_peasant
|
||
|
|
NOT = { has_character_flag = peasant_revolt_do_not_kill }
|
||
|
|
}
|
||
|
|
death = {
|
||
|
|
death_reason = death_vanished
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
demand = {
|
||
|
|
setup_nomadic_leader_effect = yes
|
||
|
|
# Faction leader is unhappy if they reach the point of needing to issue an ultimatim.
|
||
|
|
faction_leader = {
|
||
|
|
add_opinion = {
|
||
|
|
modifier = angry_opinion
|
||
|
|
target = root.faction_target
|
||
|
|
opinion = -50
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Save scopes that will be used in the demand event.
|
||
|
|
save_scope_as = faction
|
||
|
|
special_character = {
|
||
|
|
save_scope_as = peasant_leader
|
||
|
|
}
|
||
|
|
|
||
|
|
# Check for relevant vassals that owns any land targeted by the faction.
|
||
|
|
save_temporary_scope_as = county_faction
|
||
|
|
every_faction_county_member = {
|
||
|
|
limit = {
|
||
|
|
holder = {
|
||
|
|
NOT = { this = scope:faction.faction_target }
|
||
|
|
NOT = { is_in_list = nomadic_faction_vassal_targets }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
holder = {
|
||
|
|
add_to_list = nomadic_faction_vassal_targets
|
||
|
|
}
|
||
|
|
}
|
||
|
|
every_faction_county_member = {
|
||
|
|
holder = {
|
||
|
|
every_liege_or_above = {
|
||
|
|
limit = {
|
||
|
|
NOT = { this = scope:faction.faction_target }
|
||
|
|
NOT = { is_in_list = nomadic_faction_vassal_targets }
|
||
|
|
}
|
||
|
|
add_to_list = nomadic_faction_vassal_targets
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Check if there is a player affected by the faction. AI rulers are blocked from accepting the faction demand if so.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
any_in_list = {
|
||
|
|
list = nomadic_faction_vassal_targets
|
||
|
|
is_ai = no
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:faction = {
|
||
|
|
set_variable = {
|
||
|
|
name = faction_targets_player
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Fire the demand event. A follow up event will be sent to affected vassals.
|
||
|
|
scope:faction.faction_target = {
|
||
|
|
trigger_event = faction_demand.9998
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
ai_demand_chance = {
|
||
|
|
base = 100
|
||
|
|
|
||
|
|
modifier = {
|
||
|
|
add = -1000
|
||
|
|
faction_target = {
|
||
|
|
involved_activity ?= {
|
||
|
|
has_activity_type = activity_coronation
|
||
|
|
activity_host = prev
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
on_war_start = {
|
||
|
|
# Duchy initialization so we can concentrate the rebels in just a few important counties instead of spreading them over the entire realm.
|
||
|
|
every_faction_county_member = {
|
||
|
|
duchy = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = {
|
||
|
|
is_in_list = areas_of_rebellion
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_to_list = areas_of_rebellion
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Check where in the duchy the rebellion troops should spawn, then spawn them.
|
||
|
|
every_in_list = {
|
||
|
|
list = areas_of_rebellion
|
||
|
|
save_temporary_scope_as = this_duchy
|
||
|
|
|
||
|
|
# Determine where in the duchy those troops should spawn.
|
||
|
|
ordered_in_de_jure_hierarchy = {
|
||
|
|
# Troops can only spawn in counties that belong to our faction!
|
||
|
|
limit = {
|
||
|
|
tier = tier_county
|
||
|
|
any_title_joined_faction = {
|
||
|
|
this = root
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
order_by = county_fertility
|
||
|
|
|
||
|
|
title_province = {
|
||
|
|
save_temporary_scope_as = local_center_of_rebellion
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Spawn the faction troops in the designated location.
|
||
|
|
root.faction_leader = {
|
||
|
|
spawn_nomadic_revolt_troops = yes
|
||
|
|
}
|
||
|
|
|
||
|
|
# Give the populist leader a commander for each stack of troops.
|
||
|
|
create_character = {
|
||
|
|
template = new_commander_character
|
||
|
|
location = scope:local_center_of_rebellion
|
||
|
|
faith = root.faction_leader.faith
|
||
|
|
culture = root.faction_leader.culture
|
||
|
|
save_scope_as = new_populist_commander
|
||
|
|
gender_female_chance = {
|
||
|
|
if = {
|
||
|
|
limit = { root.faction_leader.culture = { has_cultural_parameter = martial_custom_male_only_combatant } }
|
||
|
|
add = 0
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { root.faction_leader.culture = { has_cultural_parameter = martial_custom_female_only_combatant } }
|
||
|
|
add = 100
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
add = 50
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:new_populist_commander = {
|
||
|
|
set_employer = root.faction_leader
|
||
|
|
add_trait = nomadic_philosophy
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Give the populist leader a small purse so they don't immediately go bankrupt with army maintenance.
|
||
|
|
every_faction_county_member = {
|
||
|
|
root.faction_leader = {
|
||
|
|
add_gold = 25
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
leader_leaves = {
|
||
|
|
# Should only trigger when the leader is captured in battle.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
special_character ?= {
|
||
|
|
is_alive = no
|
||
|
|
}
|
||
|
|
}
|
||
|
|
faction_war = {
|
||
|
|
end_war = defender
|
||
|
|
}
|
||
|
|
destroy_faction = yes
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { has_variable = peasant_destroying }
|
||
|
|
exists = faction_war
|
||
|
|
}
|
||
|
|
faction_war = {
|
||
|
|
end_war = defender
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
character_allow_create = no
|
||
|
|
|
||
|
|
special_character_title = "FACTIONS_WINDOW_LEADER"
|
||
|
|
|
||
|
|
inherit_membership = no
|
||
|
|
|
||
|
|
multiple_targeting = no
|
||
|
|
}
|
||
|
|
|