Compare commits

...

3 commits

20 changed files with 14040 additions and 1592 deletions

View file

@ -21,7 +21,7 @@ codex_template = {
learning = 2
stress_gain_mult = 0.15
negate_health_penalty_add = 0.10
catholic_religion_opinion = 20
# catholic_religion_opinion = 20
}
ai_score = {

View file

@ -1473,9 +1473,9 @@ negotiate_settlement_interaction = {
}
# Story blockers.
## Hereward cannot be exiled by active participants in the Harrying of the North.
disable_interaction_for_hereward_trigger = yes
# disable_interaction_for_hereward_trigger = yes
## Hasan cannot be exiled by anyone during his story.
disable_interaction_for_hasan_trigger = yes
# disable_interaction_for_hasan_trigger = yes
}
on_send = {
@ -5700,9 +5700,9 @@ evict_adventurer_interaction = {
}
# Story blockers.
## Hereward cannot be exiled by active participants in the Harrying of the North.
disable_interaction_for_hereward_trigger = yes
# disable_interaction_for_hereward_trigger = yes
## Hasan cannot be exiled by anyone during his story.
disable_interaction_for_hasan_trigger = yes
# disable_interaction_for_hasan_trigger = yes
}
on_send = {

View file

@ -1,319 +1,319 @@
@default_tile_multiplier = 0.009702
smallpox = {
trait = smallpox
color = { 88 12 31 }
priority = 3
shader_data = {
strength = 0.8
edge_fade = 0.25
tile_multiplier = 0.004702
texture_index = 0
channel = alpha
}
name = {
first_valid = {
triggered_desc = {
trigger = {
outbreak_intensity = apocalyptic
outbreak_province = province:3045
}
desc = epidemic_bonifacy_gift
}
triggered_desc = {
trigger = {
outbreak_intensity = apocalyptic
outbreak_province = province:7596
}
desc = epidemic_raqguul_plague
}
random_valid = {
triggered_desc = {
trigger = {
outbreak_intensity = apocalyptic
outbreak_province = {
geographical_region = ghw_region_egypt
county.faith.religion = { is_in_family = rf_abrahamic }
}
}
desc = epidemic_eleventh_plague
}
desc = epidemic_rulers_pox
desc = epidemic_titled_rulers_pox
desc = epidemic_animal_pox # Monkeypox, chickenpox and the like
desc = epidemic_realm_pox
desc = epidemic_holder_pox
desc = epidemic_culture_pox
desc = epidemic_location_pox
}
desc = trait_smallpox
}
}
on_start = {
# LEGITIMACY LOSS FROM EPIDEMIC OUTBREAK
epidemic_outbreak_legitimacy_effect = { PROVINCE = root.outbreak_province }
#if = {
# limit = {
# outbreak_intensity = apocalyptic
# }
# if = {
# limit = {
# NOT = {
# exists = global_var:epidemic_smallpox_apocalyptic
# }
# }
# set_global_variable = {
# name = epidemic_smallpox_apocalyptic
# value = 1
# }
# }
# else = {
# change_global_variable = {
# name = epidemic_smallpox_apocalyptic
# add = 1
# }
# }
#}
#else_if = {
# limit = {
# outbreak_intensity = major
# }
# if = {
# limit = {
# NOT = {
# exists = global_var:epidemic_smallpox_major
# }
# }
# set_global_variable = {
# name = epidemic_smallpox_major
# value = 1
# }
# }
# else = {
# change_global_variable = {
# name = epidemic_smallpox_major
# add = 1
# }
# }
#}
#else = {
# if = {
# limit = {
# NOT = {
# exists = global_var:epidemic_smallpox_minor
# }
# }
# set_global_variable = {
# name = epidemic_smallpox_minor
# value = 1
# }
# }
# else = {
# change_global_variable = {
# name = epidemic_smallpox_minor
# add = 1
# }
# }
#}
}
on_monthly = {
trigger_event = {
on_action = epidemic_ongoing_events
}
}
character_infection_chance = {
value = character_infection_chance_default_value
}
can_infect_character = {
can_contract_disease_trigger = { DISEASE = smallpox }
immune_to_epidemic = { EPIDEMIC = scope:epidemic }
}
on_character_infected = {
contract_disease_notify_effect = { DISEASE = smallpox }
if = {
limit = {
is_commanding_army = yes
}
trigger_event = epidemic_events.0001 #we infect your army
}
}
infection_levels = {
10 = {
province_modifier = {
county_opinion_add = -2
epidemic_travel_danger = 10
development_decline = -1
}
}
50 = {
province_modifier = {
county_opinion_add = -3
epidemic_travel_danger = 20
development_decline = -2
}
}
80 = {
province_modifier = {
monthly_county_control_decline_add = -0.1
supply_limit_mult = -0.2
county_opinion_add = -5
epidemic_travel_danger = 30
development_decline = -3
}
}
}
outbreak_intensities = {
minor = {
outbreak_chance = {
value = outbreak_chance_minor_default_value
multiply = outbreak_chance_minor_mult_value
multiply = recent_epidemics_outbreak_mult_value
### NO DLC - We increase the chance to make up for the locked diseases ###
if = {
limit = {
NOT = { has_dlc_feature = legends_of_the_dead }
}
multiply = 2
}
if = {
limit = {
has_game_rule = epidemic_frequency_disabled
}
multiply = 0
}
}
spread_chance = {
value = spread_chance_epidemics_default_value
multiply = spread_chance_epidemics_mult_value
}
max_provinces = { 30 55 }
infection_duration = {
months = { 6 8 }
}
infection_progress_duration = {
days = { 80 120 }
}
infection_recovery_duration = {
days = { 15 22 }
}
}
major = {
outbreak_chance = {
value = outbreak_chance_major_default_value
multiply = outbreak_chance_major_mult_value
multiply = recent_epidemics_outbreak_mult_value
### NO DLC - We increase the chance to make up for the locked diseases ###
if = {
limit = {
NOT = { has_dlc_feature = legends_of_the_dead }
}
multiply = 1.5
}
if = {
limit = {
has_game_rule = epidemic_frequency_disabled
}
multiply = 0
}
}
spread_chance = {
value = spread_chance_epidemics_default_value
multiply = spread_chance_epidemics_mult_value
}
max_provinces = { 85 130 }
infection_duration = {
months = { 10 20 }
}
infection_progress_duration = {
days = { 40 60 }
}
infection_recovery_duration = {
days = 25
}
}
apocalyptic = {
outbreak_chance = {
value = outbreak_chance_apocalyptic_default_value
multiply = outbreak_chance_apocalyptic_mult_value
multiply = recent_epidemics_outbreak_mult_value
### NO DLC - We increase the chance to make up for the locked diseases ###
if = {
limit = {
NOT = { has_dlc_feature = legends_of_the_dead }
}
multiply = 1.25
}
if = {
limit = {
has_game_rule = epidemic_frequency_disabled
}
multiply = 0
}
}
spread_chance = {
value = spread_chance_epidemics_default_value
multiply = spread_chance_epidemics_mult_value
}
max_provinces = { 220 325 }
infection_duration = {
months = { 22 40 }
}
infection_progress_duration = {
days = { 15 20 }
}
infection_recovery_duration = {
days = { 25 35 }
}
}
}
on_province_infected = {
county = {
apply_infection_development_loss = { BASE = 5 }
}
cant_touch_this_achievement_effect = yes
}
on_province_recovered = {
county = {
remove_isolated_capital_modifiers_effect = yes
}
add_to_variable_list = {
name = epidemic_cooldown
target = scope:epidemic.epidemic_type
years = 50
}
set_variable = {
name = epidemic_cooldown_general
years = 15
}
# Prosperity event
plague_recovery_event_effect = yes
}
}
#smallpox = {
# trait = smallpox
# color = { 88 12 31 }
# priority = 3
#
# shader_data = {
# strength = 0.8
# edge_fade = 0.25
# tile_multiplier = 0.004702
# texture_index = 0
# channel = alpha
# }
#
# name = {
# first_valid = {
# triggered_desc = {
# trigger = {
# outbreak_intensity = apocalyptic
# outbreak_province = province:3045
# }
# desc = epidemic_bonifacy_gift
# }
# triggered_desc = {
# trigger = {
# outbreak_intensity = apocalyptic
# outbreak_province = province:7596
# }
# desc = epidemic_raqguul_plague
# }
# random_valid = {
# triggered_desc = {
# trigger = {
# outbreak_intensity = apocalyptic
# outbreak_province = {
# geographical_region = ghw_region_egypt
# county.faith.religion = { is_in_family = rf_abrahamic }
# }
# }
# desc = epidemic_eleventh_plague
# }
# desc = epidemic_rulers_pox
# desc = epidemic_titled_rulers_pox
# desc = epidemic_animal_pox # Monkeypox, chickenpox and the like
# desc = epidemic_realm_pox
# desc = epidemic_holder_pox
# desc = epidemic_culture_pox
# desc = epidemic_location_pox
# }
# desc = trait_smallpox
# }
# }
#
# on_start = {
# # LEGITIMACY LOSS FROM EPIDEMIC OUTBREAK
# epidemic_outbreak_legitimacy_effect = { PROVINCE = root.outbreak_province }
# #if = {
# # limit = {
# # outbreak_intensity = apocalyptic
# # }
# # if = {
# # limit = {
# # NOT = {
# # exists = global_var:epidemic_smallpox_apocalyptic
# # }
# # }
# # set_global_variable = {
# # name = epidemic_smallpox_apocalyptic
# # value = 1
# # }
# # }
# # else = {
# # change_global_variable = {
# # name = epidemic_smallpox_apocalyptic
# # add = 1
# # }
# # }
# #}
# #else_if = {
# # limit = {
# # outbreak_intensity = major
# # }
# # if = {
# # limit = {
# # NOT = {
# # exists = global_var:epidemic_smallpox_major
# # }
# # }
# # set_global_variable = {
# # name = epidemic_smallpox_major
# # value = 1
# # }
# # }
# # else = {
# # change_global_variable = {
# # name = epidemic_smallpox_major
# # add = 1
# # }
# # }
# #}
# #else = {
# # if = {
# # limit = {
# # NOT = {
# # exists = global_var:epidemic_smallpox_minor
# # }
# # }
# # set_global_variable = {
# # name = epidemic_smallpox_minor
# # value = 1
# # }
# # }
# # else = {
# # change_global_variable = {
# # name = epidemic_smallpox_minor
# # add = 1
# # }
# # }
# #}
# }
#
# on_monthly = {
# trigger_event = {
# on_action = epidemic_ongoing_events
# }
# }
#
# character_infection_chance = {
# value = character_infection_chance_default_value
# }
#
# can_infect_character = {
# can_contract_disease_trigger = { DISEASE = smallpox }
# immune_to_epidemic = { EPIDEMIC = scope:epidemic }
# }
#
# on_character_infected = {
# contract_disease_notify_effect = { DISEASE = smallpox }
# if = {
# limit = {
# is_commanding_army = yes
# }
# trigger_event = epidemic_events.0001 #we infect your army
# }
# }
#
# infection_levels = {
# 10 = {
# province_modifier = {
# county_opinion_add = -2
# epidemic_travel_danger = 10
# development_decline = -1
# }
# }
# 50 = {
# province_modifier = {
# county_opinion_add = -3
# epidemic_travel_danger = 20
# development_decline = -2
# }
# }
# 80 = {
# province_modifier = {
# monthly_county_control_decline_add = -0.1
# supply_limit_mult = -0.2
# county_opinion_add = -5
# epidemic_travel_danger = 30
# development_decline = -3
# }
# }
# }
#
# outbreak_intensities = {
# minor = {
# outbreak_chance = {
# value = outbreak_chance_minor_default_value
# multiply = outbreak_chance_minor_mult_value
# multiply = recent_epidemics_outbreak_mult_value
#
# ### NO DLC - We increase the chance to make up for the locked diseases ###
# if = {
# limit = {
# NOT = { has_dlc_feature = legends_of_the_dead }
# }
# multiply = 2
# }
# if = {
# limit = {
# has_game_rule = epidemic_frequency_disabled
# }
# multiply = 0
# }
# }
# spread_chance = {
# value = spread_chance_epidemics_default_value
# multiply = spread_chance_epidemics_mult_value
# }
# max_provinces = { 30 55 }
#
# infection_duration = {
# months = { 6 8 }
# }
#
# infection_progress_duration = {
# days = { 80 120 }
# }
#
# infection_recovery_duration = {
# days = { 15 22 }
# }
# }
#
# major = {
# outbreak_chance = {
# value = outbreak_chance_major_default_value
# multiply = outbreak_chance_major_mult_value
# multiply = recent_epidemics_outbreak_mult_value
#
# ### NO DLC - We increase the chance to make up for the locked diseases ###
# if = {
# limit = {
# NOT = { has_dlc_feature = legends_of_the_dead }
# }
# multiply = 1.5
# }
# if = {
# limit = {
# has_game_rule = epidemic_frequency_disabled
# }
# multiply = 0
# }
# }
# spread_chance = {
# value = spread_chance_epidemics_default_value
# multiply = spread_chance_epidemics_mult_value
# }
# max_provinces = { 85 130 }
#
# infection_duration = {
# months = { 10 20 }
# }
#
# infection_progress_duration = {
# days = { 40 60 }
# }
#
# infection_recovery_duration = {
# days = 25
# }
# }
#
# apocalyptic = {
# outbreak_chance = {
# value = outbreak_chance_apocalyptic_default_value
# multiply = outbreak_chance_apocalyptic_mult_value
# multiply = recent_epidemics_outbreak_mult_value
#
# ### NO DLC - We increase the chance to make up for the locked diseases ###
# if = {
# limit = {
# NOT = { has_dlc_feature = legends_of_the_dead }
# }
# multiply = 1.25
# }
# if = {
# limit = {
# has_game_rule = epidemic_frequency_disabled
# }
# multiply = 0
# }
# }
# spread_chance = {
# value = spread_chance_epidemics_default_value
# multiply = spread_chance_epidemics_mult_value
# }
# max_provinces = { 220 325 }
#
# infection_duration = {
# months = { 22 40 }
# }
#
# infection_progress_duration = {
# days = { 15 20 }
# }
#
# infection_recovery_duration = {
# days = { 25 35 }
# }
# }
# }
#
# on_province_infected = {
# county = {
# apply_infection_development_loss = { BASE = 5 }
# }
# cant_touch_this_achievement_effect = yes
# }
#
# on_province_recovered = {
# county = {
# remove_isolated_capital_modifiers_effect = yes
# }
# add_to_variable_list = {
# name = epidemic_cooldown
# target = scope:epidemic.epidemic_type
# years = 50
# }
# set_variable = {
# name = epidemic_cooldown_general
# years = 15
# }
# # Prosperity event
# plague_recovery_event_effect = yes
# }
#}
bubonic_plague = {
trait = bubonic_plague

View file

@ -0,0 +1,578 @@
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
}

View file

@ -0,0 +1,740 @@
@base_peasant_discontent_progress = 2
peasant_faction = {
casus_belli = peasant_war
short_effect_desc = peasant_faction_short_effect_desc
sort_order = 5
leaders_allowed_to_leave = no
player_can_join = no
power_threshold = 0 # Peasant Factions place their demand regardless of their Power
discontent_progress = {
base = @base_peasant_discontent_progress
# modifier = {
# faction_target = { ep3_restored_rome_hard_mode_trigger = yes }
# add = 10
# desc = ep3_story_cycle_restoring_rome_faction_discontent
# }
modifier = {
faction_target = { can_vassals_be_attacked = yes }
add = 2
desc = border_war_increased_peasant_discontent
}
modifier = {
faction_target = {
top_participant_group:dynastic_cycle ?= {
has_participant_group_parameter = dynastic_cycle_more_peasant_factions
}
}
add = 2
desc = instability_increased_peasant_discontent
}
}
name = FACTION_PEASANT_NAME
requires_county = yes
requires_character = no
is_valid = {
always = yes
}
is_county_valid = {
# Peasants can only join a faction against their direct liege. Unless their liege is Byzantium trying to restore the Roman Empire, then they go for the emperor
holder = scope:faction.faction_target
title_province = {
NOR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
is_character_valid = {
has_valid_faction_members_trigger = yes
}
demand = {
save_scope_as = faction
setup_peasant_leader_effect = yes
special_character = {
save_scope_as = peasant_leader
}
faction_leader = {
add_opinion = {
modifier = angry_opinion
target = root.faction_target
opinion = -50
}
}
scope:faction.faction_target = {
trigger_event = faction_demand.1101
}
}
ai_demand_chance = {
base = 0
modifier = {
add = 100
any_faction_county_member = {}
}
modifier = {
add = -1000
faction_target = {
involved_activity ?= {
has_activity_type = activity_coronation
activity_host = prev
}
}
}
}
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 = {
if = {
#Verify that the title exists before trying to destroy it
limit = {
has_variable = peasant_title
exists = this.var:peasant_title
NOT = { has_variable = peasant_war_escalates }
}
destroy_title = this.var:peasant_title
}
if = {
limit = { is_alive = yes }
# Zero out our wallet since the revolt is over.
if = {
limit = { # To make sure we're not in debt
gold > 0
}
remove_long_term_gold = gold
}
# The peasant leader mysteriously vanishes on the next game tick.
if = {
limit = { NOT = { has_character_flag = peasant_revolt_do_not_kill } }
trigger_event = {
id = faction_demand.1102
days = 1
}
}
}
}
}
}
county_join_score = {
base = 0
compare_modifier = {
desc = "FACTION_REASON_COUNTY_OPINION"
value = county_opinion
multiplier = -1.0
}
# If a suitable Popular Faction exists, perfer to join it instead.
modifier = {
desc = "FACTION_REASON_PREFER_POPULIST_FACTION"
add = -10
AND = {
county_opinion <= -15
scope:faction.faction_target = {
top_liege = {
any_targeting_faction = {
faction_type = populist_faction
any_faction_county_member = {
this.title_province.faith = root.title_province.faith
}
}
}
}
}
}
# If a suitable Escalated Faction exists, prefer to join it instead.
modifier = {
desc = "FACTION_REASON_PREFER_ESCALATED_FACTION"
add = -10
scope:faction.faction_target = {
any_targeting_faction = {
faction_type = escalated_peasant_faction
}
}
}
# Reduced weight for a character's own capital to join a revolt against them.
modifier = {
desc = "FACTION_REASON_CAPITAL_COUNTY"
add = -10
this.title_province = scope:faction.faction_target.capital_province
}
legalism_virtue_and_sin_modifier = {
TARGET = scope:faction.faction_target
SCORE_PER_TRAIT = 10 # Worth 10 opinion per virtue.
}
# Ruling Caste
modifier = {
desc = "FACTION_REASON_RULING_CASTE"
add = -25
culture != scope:faction.faction_target.culture
scope:faction.faction_target.culture = { has_cultural_parameter = peasant_and_populist_factions_less_common }
}
# Defiant Ambushers
modifier = {
add = 25
county_opinion < 0
culture != scope:faction.faction_target.culture
culture = { has_cultural_parameter = county_peasant_and_populist_factions_more_common }
}
# Difficulty Settings
modifier = { # Easy
desc = "FACTION_REASON_DIFFICULTY_EASY"
add = -50
has_game_rule = easy_difficulty
scope:faction.faction_target = {
is_ai = no
}
}
modifier = { # Very Easy
desc = "FACTION_REASON_DIFFICULTY_VERY_EASY"
add = -150
has_game_rule = very_easy_difficulty
scope:faction.faction_target = {
is_ai = no
}
}
modifier = { # Hard
desc = "FACTION_REASON_DIFFICULTY_HARD"
add = -50
has_game_rule = hard_difficulty
scope:faction.faction_target = {
is_ai = yes
}
}
modifier = { # Very Hard
desc = "FACTION_REASON_DIFFICULTY_VERY_HARD"
add = -150
has_game_rule = very_hard_difficulty
scope:faction.faction_target = {
is_ai = yes
}
}
modifier = { # Conquerors
desc = "NO_FRIVOLOUS_ACTIVITIES_REASON"
add = -85
scope:faction.faction_target = {
ai_should_get_conqueror_bonuses = yes
}
}
modifier = { # Conquerors
desc = "NO_FRIVOLOUS_ACTIVITIES_REASON"
add = -150
scope:faction.faction_target = {
ai_should_get_extreme_conqueror_bonuses = yes
}
}
# 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 = -50
has_game_rule = higher_realm_stability
}
modifier = {
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_EXTREME"
add = -100
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 = -50
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 = -100
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 }
}
# stay if at war with the target
modifier = {
desc = "FACTION_REASON_AT_WAR_WITH_TARGET"
add = 1000
exists = joined_faction
joined_faction = {
faction_is_at_war = yes
}
}
# TGP Dynastic Cycle in Instability phase
modifier = {
desc = "FACTION_REASON_DYNASTIC_CYCLE_INSTABILITY"
add = 25
county_opinion < 0
scope:faction.faction_target = {
top_participant_group:dynastic_cycle ?= {
has_participant_group_parameter = dynastic_cycle_more_peasant_factions
}
}
}
# Pure Land
modifier = {
desc = "FACTION_REASON_POPULIST_PEASANT_MORE_LIKELY"
add = 25
county_opinion < 0
faith != scope:faction.faction_target.faith
faith = {
has_doctrine_parameter = peasant_and_populist_factions_more_common
}
}
}
county_create_score = {
base = 0
####
# AI Modifiers
####
compare_modifier = {
value = county_opinion
multiplier = -1.0
}
# If a suitable Popular Faction exists, perfer to join it instead.
modifier = {
add = -10
AND = {
county_opinion <= -15
scope:target = {
top_liege = {
any_targeting_faction = {
faction_type = populist_faction
any_faction_county_member = {
this.title_province.faith = root.title_province.faith
}
}
}
}
}
}
# If a suitable Escalated Faction exists, prefer to join it instead.
modifier = {
desc = "FACTION_REASON_PREFER_ESCALATED_FACTION"
add = -100
scope:target = {
any_targeting_faction = {
faction_type = escalated_peasant_faction
}
}
}
# Reduced weight for a character's own capital to join a revolt against them.
modifier = {
add = -20
exists = scope:target.capital_province
this.title_province = scope:target.capital_province
}
legalism_virtue_and_sin_modifier = {
TARGET = scope:target
SCORE_PER_TRAIT = 10 # Worth 10 opinion per virtue.
}
# Ruling Caste
modifier = {
add = -25
culture != scope:target.culture
scope:target.culture = {
has_cultural_parameter = peasant_and_populist_factions_less_common
}
}
# Defiant Ambushers
modifier = {
add = 25
county_opinion < 0
culture != scope:target.culture
culture = { has_cultural_parameter = county_peasant_and_populist_factions_more_common }
}
# Difficulty Settings
modifier = { # Easy
add = -50
has_game_rule = easy_difficulty
scope:target = {
is_ai = no
}
}
modifier = { # Very Easy
add = -150
has_game_rule = very_easy_difficulty
scope:target = {
is_ai = no
}
}
modifier = { # Hard
desc = "FACTION_REASON_DIFFICULTY_HARD"
add = -50
has_game_rule = hard_difficulty
scope:target = {
is_ai = yes
}
}
modifier = { # Very Hard
desc = "FACTION_REASON_DIFFICULTY_VERY_HARD"
add = -150
has_game_rule = very_hard_difficulty
scope:target = {
is_ai = yes
}
}
modifier = { # Conquerors
add = -150
scope:target = {
ai_should_get_extreme_conqueror_bonuses = yes
}
}
# Realm Stability Settings
modifier = {
add = 25
has_game_rule = lesser_realm_stability
}
modifier = {
add = -50
has_game_rule = higher_realm_stability
}
modifier = {
add = -100
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 = -50
has_game_rule = higher_realm_stability_ai_only
scope:target = {
is_ai = yes
}
}
modifier = {
desc = "FACTION_REASON_GAME_RULE_REALM_STABILITY_EXTREME"
add = -100
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 }
}
# TGP Dynastic Cycle in Instability phase
modifier = {
desc = "FACTION_REASON_DYNASTIC_CYCLE_INSTABILITY"
add = 25
county_opinion < 0
scope:target = {
top_participant_group:dynastic_cycle ?= {
has_participant_group_parameter = dynastic_cycle_more_peasant_factions
}
}
}
# Pure Land
modifier = {
add = 25
county_opinion < 0
faith != scope:target.faith
faith = {
has_doctrine_parameter = peasant_and_populist_factions_more_common
}
}
}
ai_join_score = {
}
can_character_join = {
custom_tooltip = {
text = can_join_escalated_peasant_faction_tt
OR = {
joined_faction = scope:faction
domicile ?= {
has_domicile_parameter = can_join_peasant_factions
}
has_trait = peasant_leader
}
}
}
can_county_join = {
# Peasants can only join a faction against their direct liege. Unless their liege is Byzantium trying to restore the Roman Empire, then they go for the emperor
holder = scope:faction.faction_target
title_province = {
NOR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
can_county_create = {
# Peasants can only join a faction against their direct liege. Unless their liege is Byzantium trying to restore the Roman Empire, then they go for the emperor
holder = scope:target
scope:target = {
NAND = {
is_ai = yes
OR = {
has_trait = greatest_of_khans
has_character_modifier = the_great_khan_modifier
}
}
}
####
# BLOCKERS
####
# General Faction immunity
custom_description = {
text = character_is_immune_to_factions
subject = scope:target
NOT = { scope:target = { immune_to_factions_trigger = yes } }
}
title_province = {
NOR = {
has_holding_type = nomad_holding
has_holding_type = herder_holding
}
}
}
can_character_become_leader = {
always = yes
}
on_war_start = {
# Give the peasant leader a small purse so they don't immediately go bankrupt with army maintenance.
every_faction_county_member = {
root.faction_leader = {
add_gold = 10
}
}
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 = root.faction_leader.location
origin = root.faction_leader.location
inheritable = no
}
}
remove_variable = ep3_governor_yearly_8150_ignored
}
# If the target is Restoring Rome, the faction gets a military boon
# if = {
# limit = {
# root.faction_target = { ep3_restored_rome_hard_mode_trigger = yes }
# }
# save_scope_value_as = {
# name = spawn_army_size_levies
# value = {
# value = 1
# root = {
# every_faction_county_member = {
# add = building_levies
# }
# }
# }
# }
# root.faction_leader = {
# spawn_army = {
# name = ep3_restoring_rome_citizen_army_name
# levies = scope:spawn_army_size_levies
# men_at_arms = {
# type = pikemen_unit
# stacks = 16
# }
# men_at_arms = {
# type = mangonel
# stacks = 6
# }
# men_at_arms = {
# type = armored_footmen
# stacks = 10
# }
# men_at_arms = {
# type = light_footmen
# stacks = 10
# }
# men_at_arms = {
# type = bowmen
# stacks = 10
# }
# war = root.faction_war
# location = root.faction_leader.location
# origin = root.faction_leader.location
# inheritable = no
# }
# }
# }
root.faction_leader = {
spawn_army = {
name = peasant_leader_army_name
men_at_arms = {
type = pikemen_militia
stacks = {
value = root.faction_leader.location.county.county_levies_to_raise
divide = 100
multiply = {
value = "root.faction_leader.has_trait_xp(peasant_leader)"
multiply = 0.05
}
round = yes
min = 1
}
}
men_at_arms = {
type = torch_bearers
stacks = {
value = "root.faction_leader.has_trait_xp(peasant_leader)"
multiply = 0.1
round = yes
min = 1
}
}
war = root.faction_war
location = root.faction_leader.location
origin = root.faction_leader.location
inheritable = no
war_keep_on_attacker_victory = yes
}
}
}
leader_leaves = {
# Should only trigger when the leader is captured in battle.
if = {
limit = {
NOT = { has_variable = peasant_destroying }
exists = faction_war
}
faction_war = {
end_war = defender
}
}
}
county_power = {
value = county_levies_to_raise
# if = {
# limit = {
# scope:faction.faction_target = { ep3_restored_rome_hard_mode_trigger = yes }
# }
# multiply = 2
# }
if = {
limit = {
faith = { has_doctrine_parameter = peasant_and_populist_factions_more_common }
}
multiply = 1.5
}
}
character_allow_create = no
special_character_title = "FACTIONS_WINDOW_LEADER"
inherit_membership = no
county_can_switch_to_other_faction = yes
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,378 @@
== Structure ==
This documentation does not currently include all possible parameters due to the limited knowledge of the author.
# Identifier for the faction is also used for localizing the name & description.
<faction key> = {
# Dynamic name, will look for the identifier of the type (faction_name) if doesn't exist or if it's empty.
name = [loc_key|dynamic descriotion]
# Dynamic description, will look for the identifier of the type + _desc (faction_name_desc) if doesn't exist or if it's empty.
description = [loc_key|dynamic description]
# Dynamic description of the effect, used to summarize faction goals
short_effect_desc = [loc_key|dynamic description]
## Faction with claimant for a title
#
# Faction needs a character and a title to properly function.
# Used for claimant factions where a character and a title must be provided by the player.
#
# Default: no
#
claimant = <yes/no>
## Character interaction creates the faction (optional)
#
# Used for claimant factions where a character and a title must be provided by the player.
#
# Enabling this will replace the original behaviour of the faction buttons in the faction window.
# Instead of starting a faction it will pop up a window for a character interaction.
# The character interaction is then responsible for starting the faction.
#
character_interaction = <character interaction key>
## Effect fired when a faction of this type is created.
#
# Scopes:
# - root: the faction
#
on_creation = <effets>
## Effect fired when a faction of this type is destroyed.
#
# Scopes:
# - root: the faction
#
on_destroy = <effects>
## Effect that will launch when the demand triggers.
#
# Scopes:
# - root: the faction
#
demand = <effects>
# Effect that will launch every NDefines::NFaction::UPDATE_INTERVAL_DAYS.
#
# Scopes:
# - root: the faction
#
update_effect = <effects>
## Effect that will launch when the faction declares war.
#
# Scopes:
# - root: the faction
#
on_declaration = <effects>
## Effect that will launch when a character leaves the faction.
#
# Scopes:
# - root: the faction
# - faction_member: The leaving faction member
#
character_leaves = <effects>
## Effect that will launch when the leader leaves the faction.
#
# Scopes:
# - root: the faction
# - faction_member: The leaving faction member
#
leader_leaves = <effects>
## Does AI character want to join?
#
# MTTH that calculates the the score to join an active faction of this type.
#
# Scopes:
# - root: character that might join.
# - faction: target is the active faction.
#
# Note that the score is then modified by code to weigh in the effects of Boldness/Dread, Energy and Rationality.
# See NFaction AI defines.
#
ai_join_score = <mtth>
# MTTH that calculates the the score to create an active faction of this type.
#
# Uses the SCOPE_CHARACTER of the character that tries to create it.
# - target: target is the targeted character.
#
# The claimant faction has two additional scopes:
# - claimant: (who is the potential claimant)
# - title: (the title to claim for).
#
# Note that the score is then modified by code to weigh in the effects of Boldness/Dread, Energy and Rationality. See NFaction AI defines.
ai_create_score = <mtth>
## MTTH that calculates the score to join an active faction of this type.
#
# Scopes:
# - root: the title that tries to join
# - faction: target is the active faction.
#
county_join_score = <mtth>
## MTTH that calculates the score to create an active faction of this type.
#
# Scopes:
# - root: the title that tries to create it.
# - target: the targeted character.
#
# If the score is >= NDefines::NFaction::COUNTY_CREATE_MIN_SCORE, and it gets a random chance 0-100 on a monthly update.
#
county_create_score = <mtth>
## Script value defining the absolute power of a single county member.
#
# The final power is calculated as ratio of this power and the target's military strength.
#
county_power = <script value>
## MTTH that calculates the score to trigger the demand effect of active faction of this type.
#
# Scope:
# - root: the faction
#
# Checked once a month
#
ai_demand_chance = <mtth>
## MTTH that calculates the discontent progress change of the active faction.
#
# Scope:
# - root: the faction
#
discontent_progress = <mtth>
## MTTH for power threshold at which the discontent starts ticking up.
#
# Scopes:
# - root: the faction
#
# NFaction::DEFAULT_POWER_THRESHOLD define if not set
#
power_threshold = <mtth>
## Trigger to check if the faction is still valid.
#
# Scopes:
# - root: the faction
#
is_valid = <triggers>
## Trigger to check if the faction type should be shown to the player
#
# Scopes:
# - root: the player
#
is_shown = <triggers>
## Trigger to check if a character is still valid to be part of the faction.
#
# Scopes:
# - root: the member character
# - faction: the faction
#
is_character_valid = <triggers>
## Trigger to check if a county is still valid to be part of the faction.
#
# Scopes:
# - root: the county county
# - faction: the active faction
#
is_county_valid = <triggers>
## Trigger to check if a character can join the active faction.
#
# Scopes:
# - root: the character that tries to join.
# - faction: the active faction.
#
# The is_character_valid check ais automatically included, so its triggers should not be repeated here.
#
can_character_join = <triggers>
## Trigger to check if a character can create the active faction.
#
# Scopes:
# - root: the character that tries to create.
# - SCOPE:target target is target character of the faction.
#
can_character_create = <triggers>
## Can faction be created by a player?
#
# Trigger to check if the button to create a faction will be enabled.
#
# Scopes:
# - root: the character that might create a faction of this type
# - target: target character of the faction
#
# Falls back to the regular can_character_create triggers if left empty.
#
can_character_create_ui = <triggers> # ???
## Trigger to check if a member character can become the leader of the faction.
#
# Scopes:
# - root: the character attempting to become leader
# - faction: the faction
#
can_character_become_leader = <triggers>
## Trigger to check if a title can join the active faction
#
# Scopes:
# - root: landed title that tries to join
# - faction: the active faction.
#
# Note: is_county_valid is automatically included and its triggers should not be repeated here.
#
can_county_join = <triggers>
# Trigger to check if a title can create the active faction.
#
# Scopes:
# - root: the title that tries to create this faction
# - target: character that the faction is intended to target
#
can_county_create = <triggers>
## Are characters allowed to create this at all?
#
# Default: yes
#
character_allow_create = <yes/no>
## Are characters allowed to join all?
#
# Default: yes
#
character_allow_join = <yes/no>
## Is county allowed to create this faction type?
#
# Default: yes
#
county_allow_create = <yes>
## Is a county allow joint this faction type?
#
# Default: yes
#
county_allow_join = <yes/no>
## Is the leader allowed to leave the faction?
#
# (used for faction that create leaders)
#
# Default: yes
#
leaders_allowed_to_leave = <yes/no>
## Are player characters allowed to join?
#
# When not allowed the join button for this faction type will be hidden for players.
#
# Default: yes
#
player_can_join = <yes/no>
## Can the target have more of one faction of this type targeting them?
#
# Default: no
#
multiple_targeting = <yes/no>
# The casus belly to be executed for the war
casus_belli = <casus belly key>
# How the special character of this faction will be called
special_character_title = <loc key>
## Will this faction ignore the faction soft block?
#
# Default: no
#
ignore_soft_block = <yes/no>
## Inherit membership?
#
# Heirs that changed liege or tier as a result of succession will inherit faction membership.
#
# Default: yes
#
inherit_membership = <yes/no>
## Requires at least one county member, otherwise it will be destroyed.
#
# Default: no
#
requires_county = <yes/no>
## Requires at least one character member, otherwise it will be destroyed.
#
# Default: yes
#
requires_character = <yes/no>
## Requires a valid faction leader, otherwise it will be destroyed.
#
# Default: no
#
requires_leader = <yes/no>
## Will counties switch factions?
#
# Make counties leave this faction if there's a better factions available for them to join or create
#
# Default: no
#
county_can_switch_to_other_faction = <yes/no>
# Order to sort factions in the UI. Lower value => higher in list.
#
# Default: 0
#
sort_order = 1..n
## Should the special title be shown in the interface or not?
#
# Default: no
#
show_special_title = <yes/no>
}
== Event targets ==
[SCOPE_FACTION.faction_target] - Links to the character targeting the faction
[SCOPE_FACTION.faction_leader] - Links to the character leading the faction
[SCOPE_FACTION.faction_war] - Links to the faction war
[SCOPE_FACTION.special_character] - Links to the special character
[SCOPE_FACTION.special_title] - Links to the special title
[SCOPE_CHARACTER.leading_faction] - Links to the faction is leading. Null faction if it's not leading any faction
[SCOPE_CHARACTER.joined_faction] - Links to the faction the character is in. Null faction if it's not in any faction
== Related loc/UI functions ==
[Faction.GetName] - Gets the name of the faction type. E.G., "Independent Faction"
[Faction.GetDescription] - Gets the description of the faction type
[Faction.GetDiscontent] - Gets the current dicontent of the faction
[Faction.IsAtWar] - Gets if the faction is currently at war
[Faction.GetPower] - Gets tthe current power of the faction
[Faction.GetTarget] - Gets the target character of the faction
[Faction.GetLeader] - Gets the leader of the faction
[Faction.GetSpecialCharacter] - Gets the special character of the faction
[Faction.GetSpecialTitle] - Gets the special title of the faction
[Faction.GetSpecialCharacterTitle] - Gets the title for the faction's special character eg: Claimant, Leader etc.
[Faction.HasSpecialCharacter] - Checks if there is a special character of the faction
[Faction.HasSpecialTitle] - Checks if there is a special title of the faction
== Related lists ==
[targeting_faction] - List of the factions targeting the SCOPE_CHARCTER
[faction_member] - List of the character members in the SCOPE_FACTION
[faction_county_member] - List of the county members in the SCOPE_FACTION

View file

@ -384,7 +384,7 @@ count_theocracy_male_bon_religion = {
tier = county
priority = 18
governments = { theocracy_government }
religions = { taoism_religion zunism_religion }
religions = { taoism_religion }
flavourization_rules = {
top_liege = no
}
@ -396,7 +396,7 @@ count_theocracy_female_bon_religion = {
tier = county
priority = 18
governments = { theocracy_government }
religions = { taoism_religion zunism_religion }
religions = { taoism_religion }
flavourization_rules = {
top_liege = no
}
@ -456,7 +456,7 @@ emperor_feudal_male_novelist_religion = {
religions = { novelist_religion }
heritages = { heritage_french }
flavourization_rules = {
independent = yes
only_independent = yes
}
}
emperor_feudal_female_novelist_religion = {
@ -469,7 +469,7 @@ emperor_feudal_female_novelist_religion = {
religions = { novelist_religion }
heritages = { heritage_french }
flavourization_rules = {
independent = yes
only_independent = yes
}
}
empire_feudal_novelist_religion = {
@ -479,7 +479,7 @@ empire_feudal_novelist_religion = {
religions = { novelist_religion }
heritages = { heritage_french }
flavourization_rules = {
independent = yes
only_independent = yes
}
priority = 103
}
@ -494,7 +494,7 @@ duke_feudal_male_novelist_religion = {
religions = { novelist_religion }
heritages = { heritage_french }
flavourization_rules = {
independent = yes
only_independent = yes
}
}
duke_feudal_female_novelist_religion = {
@ -507,7 +507,7 @@ duke_feudal_female_novelist_religion = {
religions = { novelist_religion }
heritages = { heritage_french }
flavourization_rules = {
independent = yes
only_independent = yes
}
}
duke_feudal_novelist_religion = {
@ -517,7 +517,7 @@ duke_feudal_novelist_religion = {
religions = { novelist_religion }
heritages = { heritage_french }
flavourization_rules = {
independent = yes
only_independent = yes
}
priority = 40
}
@ -950,7 +950,7 @@ barony_theocracy_germanic_religion = {
}
priority = 7
holding = church_holding
religions = { folkgerman_religion theomach_religion taoism_religion zunism_religion }
religions = { folkgerman_religion theomach_religion taoism_religion }
}
count_theocracy_male_germanic_religion = {
type = character
@ -984,7 +984,7 @@ county_theocracy_germanic_religion = {
}
priority = 18
governments = { theocracy_government }
religions = { folkgerman_religion theomach_religion taoism_religion zoroastrianism_religion zunism_religion }
religions = { folkgerman_religion theomach_religion taoism_religion zoroastrianism_religion }
}
king_theocracy_male_germanic_religion = {
type = character
@ -1926,7 +1926,7 @@ baron_theocracy_male_paganism_religion = {
top_liege = no
}
governments = { theocracy_government }
religions = { paganism_religion hungaric_religion baltic_religion slavic_religion finnic_religion } #tengrism_religion
religions = { hungaric_religion baltic_religion slavic_religion finnic_religion } #tengrism_religion
}
baron_theocracy_female_paganism_religion = {
type = character
@ -1950,30 +1950,30 @@ barony_theocracy_paganism_religion = {
holding = church_holding
religions = { hungaric_religion baltic_religion slavic_religion finnic_religion } #west_african_religion west_african_bori_religion west_african_roog_religion tengrism_religion paganism_religion
}
count_theocracy_male_paganism_religion = {
type = character
gender = male
special = holder
tier = county
priority = 18
flavourization_rules = {
top_liege = no
}
governments = { theocracy_government }
religions = { paganism_religion } #tengrism_religion
}
count_theocracy_female_paganism_religion = {
type = character
gender = female
special = holder
tier = county
priority = 18
flavourization_rules = {
top_liege = no
}
governments = { theocracy_government }
religions = { paganism_religion } #tengrism_religion
}
#count_theocracy_male_paganism_religion = {
# type = character
# gender = male
# special = holder
# tier = county
# priority = 18
# flavourization_rules = {
# top_liege = no
# }
# governments = { theocracy_government }
# religions = { } #tengrism_religion
#}
#count_theocracy_female_paganism_religion = {
# type = character
# gender = female
# special = holder
# tier = county
# priority = 18
# flavourization_rules = {
# top_liege = no
# }
# governments = { theocracy_government }
# religions = { } #tengrism_religion
#}
county_theocracy_paganism_religion = {
type = title
tier = county
@ -2016,7 +2016,7 @@ duchy_theocracy_paganism_religion = {
}
priority = 27
governments = { theocracy_government }
religions = { paganism_religion hungaric_religion baltic_religion slavic_religion finnic_religion folkgerman_religion buddhism_religion hinduism_religion jainism_religion judaism_religion } #tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion zunism_religion zoroastrianism_religion bon_religion taoism_religion
religions = { hungaric_religion baltic_religion slavic_religion finnic_religion folkgerman_religion buddhism_religion hinduism_religion jainism_religion judaism_religion } #tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion zunism_religion zoroastrianism_religion bon_religion taoism_religion
}
king_theocracy_male_paganism_religion = {
type = character
@ -2050,7 +2050,7 @@ kingdom_theocracy_paganism_religion = {
}
priority = 47
governments = { theocracy_government }
religions = { paganism_religion hungaric_religion baltic_religion slavic_religion finnic_religion folkgerman_religion theomach_religion zunism_religion zoroastrianism_religion bon_religion taoism_religion buddhism_religion hinduism_religion jainism_religion judaism_religion } #tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion
religions = { hungaric_religion baltic_religion slavic_religion finnic_religion folkgerman_religion theomach_religion zunism_religion zoroastrianism_religion bon_religion taoism_religion buddhism_religion hinduism_religion jainism_religion judaism_religion } #tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion
}
emperor_theocracy_male_paganism_religion = {
type = character
@ -2062,7 +2062,7 @@ emperor_theocracy_male_paganism_religion = {
top_liege = no
}
governments = { theocracy_government }
religions = { paganism_religion hungaric_religion baltic_religion slavic_religion finnic_religion taoism_religion zoroastrianism_religion } #tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion
religions = { hungaric_religion baltic_religion slavic_religion finnic_religion taoism_religion zoroastrianism_religion } #tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion
}
emperor_theocracy_female_paganism_religion = {
type = character
@ -2074,7 +2074,7 @@ emperor_theocracy_female_paganism_religion = {
top_liege = no
}
governments = { theocracy_government }
religions = { paganism_religion hungaric_religion baltic_religion slavic_religion finnic_religion taoism_religion tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion zoroastrianism_religion }
religions = { paganism_religion hungaric_religion baltic_religion slavic_religion finnic_religion taoism_religion zoroastrianism_religion } #tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion
}
empire_theocracy_paganism_religion = {
type = title
@ -2084,7 +2084,7 @@ empire_theocracy_paganism_religion = {
}
priority = 102
governments = { theocracy_government }
religions = { paganism_religion hungaric_religion baltic_religion slavic_religion finnic_religion tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion folkgerman_religion theomach_religion taoism_religion zunism_religion zoroastrianism_religion judaism_religion }
religions = { hungaric_religion baltic_religion slavic_religion finnic_religion folkgerman_religion theomach_religion taoism_religion zoroastrianism_religion judaism_religion } #tengrism_religion west_african_religion west_african_bori_religion west_african_roog_religion zunism_religion
}
# Baltic

View file

@ -8752,7 +8752,7 @@ on_game_start_after_lobby = {
}
events = {
game_rule.1011 #Hungarian Migration management.
# game_rule.1011 #Hungarian Migration management.
historical_artifacts.0023 # Historical Artifacts Generator
coronation_events.0302 # ACH crown giveaway
}

File diff suppressed because it is too large Load diff

View file

@ -1237,7 +1237,7 @@
doctrine = doctrine_deviancy_accepted
doctrine = doctrine_witchcraft_virtuous
doctrine = doctrine_deviancy_accepted
doctrine = doctrine_clerical_function_control
doctrine = doctrine_clerical_function_recruitment
doctrine = doctrine_adultery_men_accepted
doctrine = doctrine_adultery_women_accepted

View file

@ -29,7 +29,7 @@ slavic_religion = { #placeholder
#Clerical Functions | placeholder
doctrine = doctrine_clerical_function_recruitment
doctrine = doctrine_clerical_marriage_allowed
doctrine = doctrine_clerical_succession_temporal_revokeable
doctrine = doctrine_clerical_succession_temporal
doctrine = doctrine_clerical_gender_either
#Allow pilgrimages | placeholder
@ -269,7 +269,7 @@ slavic_religion = { #placeholder
doctrine = doctrine_no_head
doctrine = doctrine_pilgrimage_local_rites
doctrine = doctrine_funeral_bewailment # Keening
doctrine = doctrine_witchcraft_criminal
doctrine = doctrine_witchcraft_crime
doctrine = doctrine_clerical_gender_male_only
doctrine = doctrine_theocracy_temporal

View file

@ -1570,51 +1570,51 @@ great_holy_war_target_kingdom_weight = {
}
add = ghw_target_fringe
}
# Zunist heartlands
else_if = {
limit = {
scope:the_faith.religion = religion:zunism_religion
title_capital_county.title_province = { geographical_region = ghw_region_afghanistan }
}
add = ghw_target_heartlands
}
# Zunist frontier
else_if = {
limit = {
scope:the_faith.religion = religion:zunism_religion
title_capital_county.title_province = {
OR = {
geographical_region = ghw_region_western_india
geographical_region = ghw_region_persia
geographical_region = ghw_region_transoxiana
}
}
}
add = ghw_target_frontier
}
# Zunist fringe
else_if = {
limit = {
scope:the_faith.religion = religion:zunism_religion
title_capital_county.title_province = {
OR = {
geographical_region = ghw_region_caucasus
geographical_region = ghw_region_holy_land
geographical_region = ghw_region_near_east
geographical_region = ghw_region_southwestern_india
}
}
}
add = ghw_target_fringe
}
# Zunist stretch goal
else_if = {
limit = {
scope:the_faith.religion = religion:zunism_religion
title_capital_county.title_province = { geographical_region = ghw_region_egypt }
}
add = ghw_target_stretch
}
# # Zunist heartlands
# else_if = {
# limit = {
# scope:the_faith.religion = religion:zunism_religion
# title_capital_county.title_province = { geographical_region = ghw_region_afghanistan }
# }
# add = ghw_target_heartlands
# }
# # Zunist frontier
# else_if = {
# limit = {
# scope:the_faith.religion = religion:zunism_religion
# title_capital_county.title_province = {
# OR = {
# geographical_region = ghw_region_western_india
# geographical_region = ghw_region_persia
# geographical_region = ghw_region_transoxiana
# }
# }
# }
# add = ghw_target_frontier
# }
# # Zunist fringe
# else_if = {
# limit = {
# scope:the_faith.religion = religion:zunism_religion
# title_capital_county.title_province = {
# OR = {
# geographical_region = ghw_region_caucasus
# geographical_region = ghw_region_holy_land
# geographical_region = ghw_region_near_east
# geographical_region = ghw_region_southwestern_india
# }
# }
# }
# add = ghw_target_fringe
# }
# # Zunist stretch goal
# else_if = {
# limit = {
# scope:the_faith.religion = religion:zunism_religion
# title_capital_county.title_province = { geographical_region = ghw_region_egypt }
# }
# add = ghw_target_stretch
# }
# Hellenic heartlands
else_if = {
limit = {

View file

@ -62,6 +62,18 @@ physician_high_character_template = {
medium_lifestyle_random_xp_high
}
}
random = {
chance = 10
if = {
limit = {
root.capital_province = {
geographical_region = world_europe
}
}
add_character_flag = ai_will_not_convert
set_character_faith = faith:trenchsinger
}
}
}
}
@ -104,5 +116,17 @@ physician_excellent_character_template = {
add_trait = lifestyle_herbalist
}
}
random = {
chance = 33
if = {
limit = {
root.capital_province = {
geographical_region = world_europe
}
}
add_character_flag = ai_will_not_convert
set_character_faith = faith:trenchsinger
}
}
}
}

View file

@ -58,25 +58,25 @@ setup_tributaries_effect = {
## $TRIBUTARY$ = the new tributary
## $SUZERAIN$ = their suzerain
## $WAR$ = determines if this was caused by war or agreement, yes or no
#break_subject_contract_and_establish_tributary_effect = {
# if = {
# limit = { liege != this }
# create_title_and_vassal_change = {
# type = independency
# save_scope_as = change
# add_claim_on_loss = no
# }
# becomes_independent = {
# change = scope:change
# }
# resolve_title_and_vassal_change = scope:change
# }
# start_tributary_interaction_effect = {
# SUZERAIN = $SUZERAIN$
# TRIBUTARY = $TRIBUTARY$
# }
#}
#
break_subject_contract_and_establish_tributary_effect = {
if = {
limit = { liege != this }
create_title_and_vassal_change = {
type = independency
save_scope_as = change
add_claim_on_loss = no
}
becomes_independent = {
change = scope:change
}
resolve_title_and_vassal_change = scope:change
}
start_tributary_interaction_effect = {
SUZERAIN = $SUZERAIN$
TRIBUTARY = $TRIBUTARY$
}
}
#mpo_867_tributary_setup_effect = {
##
## #### k_magyar

View file

@ -1,4 +1,6 @@
historical_artifacts.999 = {
namespace = historical_artifacts
historical_artifacts.999 = {
scope = none
hidden = yes
@ -12,9 +14,6 @@
create_artifact_crown_wenceslas_effect = { OWNER = this }
}
}
}
immediate = {
if = {
limit = {
has_dlc_feature = royal_court
@ -24,9 +23,6 @@
create_artifact_codex_gigas_effect = { OWNER = this }
}
}
}
immediate = {
if = {
limit = {
has_dlc_feature = royal_court
@ -36,15 +32,10 @@
create_artifact_sword_wenceslas_effect = { OWNER = this }
}
}
}
immediate = {
title:d_bacs.holder = {
create_artifact_crown_stephen_effect = { OWNER = this }
}
}
immediate = {
title:k_france.holder = {
create_artifact_crown_charlemagne_effect = { OWNER = this }
}

7421
events/game_rule_events.txt Normal file

File diff suppressed because it is too large Load diff

View file

@ -212,7 +212,7 @@
epidemic_events.1110.a: "Very well."
epidemic_events.1110.b: "That site is only for me and mine."
epidemic_events.1120.t: "A Gruesome Gift"
epidemic_events.1120.desc: "As we enter [flung_corpse_location.GetName], a devilish idea crosses my mind. A few troops lie on the brink of death with [epidemic_scope.GetName] and soon will depart from this world. It is possible, however, for them to serve me in this war even in death.\n\nThe miasma from the corpses will surely cause more of my soldiers to fall ill, unless we were to dispose of the bodies somehow. Perhaps we may bring [corpse_flingee.GetName] to [corpse_flingee.GetHerHis] knees by sending [corpse_flingee.GetHerHim] a gift via catapult..."
epidemic_events.1120.desc: "As we enter [flung_corpse_location.GetName], a devilish idea crosses my mind. A few troops lie on the brink of death with [epidemic_scope.GetName] and soon will depart from this world. It is possible, however, for them to serve me in this war even in death.\n\nThe germs from the corpses will surely cause more of my soldiers to fall ill, unless we were to dispose of the bodies somehow. Perhaps we may bring [corpse_flingee.GetName] to [corpse_flingee.GetHerHis] knees by sending [corpse_flingee.GetHerHim] a gift via catapult..."
epidemic_events.1120.a: "Load up the bodies!"
epidemic_events.1120.b: "This is obscene!"
epidemic_events.1121.t: "A Gift From Above"

View file

@ -1,13 +1,13 @@
l_english:
physician_epidemic_events.1000.t: "Unorthodox Treatment"
physician_epidemic_events.1000.desc: "My [physician.Custom2('MyCharacterIntroduction', ROOT.Char)] and [zealous_courtier.Custom2('MyCharacterIntroduction', ROOT.Char)] are at each other's throats over how to handle the spreading [epidemic_scope.GetName].\n\n"I am a physician!" Talāra insists. "Let me purge this plague!"\n\n"Heresy!" Mahakala snarls. "We must anoint the dead and give them proper [zealous_courtier.GetFaith.GetAdjective] rites.""
physician_epidemic_events.1000.desc: "My [physician.Custom2('MyCharacterIntroduction', ROOT.Char)] and [zealous_courtier.Custom2('MyCharacterIntroduction', ROOT.Char)] are at each other's throats over how to handle the spreading [epidemic_scope.GetName].\n\n"I am a physician!" [physician.GetFirstNameNoTooltip] insists. "Let me purge this plague!"\n\n"Heresy!" [zealous_courtier.GetFirstNameNoTooltip] snarls. "We must anoint the dead and give them proper [zealous_courtier.GetFaith.GetAdjective] rites.""
physician_epidemic_events.1000.a: "Perhaps we should simply keep the bodies away from the living."
physician_epidemic_events.1000.b: "We must do whatever we can to end this plague."
physician_epidemic_events.1000.b.success: "The treatment works"
physician_epidemic_events.1000.b.failure: "The treatment fails"
physician_epidemic_events.1000.c: "We will not defile these bodies."
physician_epidemic_events.1010.t: "Quarantine"
physician_epidemic_events.1010.desc: "As [epidemic_scope.GetName] spreads, my [physician.Custom2('MyCharacterIntroduction', ROOT.Char)] urges a drastic course: seal off the sick. "Miasma clings to corpses," [physician.GetSheHe] warns, "and bad air feeds the plague."\n\n[physician.GetSheHe|U] wants quarantine — no one in or out of infected lands.\n\n"In desperate times, my Kaiser, we must do what we must.""
physician_epidemic_events.1010.desc: "As [epidemic_scope.GetName] spreads, my [physician.Custom2('MyCharacterIntroduction', ROOT.Char)] urges a drastic course: seal off the sick. "Germs cling to corpses," [physician.GetSheHe] warns, "and unsanitary conditions feed the plague."\n\n[physician.GetSheHe|U] wants quarantine — no one in or out of infected lands.\n\n"In desperate times, my [ROOT.Char.GetTitleAsNameNoTooltip|U], we must do what we must.""
physician_epidemic_events.1010.a: "Seal the roads. Quarantine the sick."
physician_epidemic_events.1010.b: "This is too extreme."
physician_epidemic_events.1020.t: "[epidemic.GetNameNoTooltip|U]: Early Prevention"
@ -26,7 +26,7 @@
physician_epidemic_events.1021.desc: "It would seem the moderate approach has proven successful, with a slow in spread of disease symptoms among the commoners. Though the impact is quite minimal, it should at least grant more time to work on a more permanent solution."
physician_epidemic_events.1021.a: "Wonderful!"
physician_epidemic_events.1022.t: "Early Prevention: Failure"
physician_epidemic_events.1022.desc: "Not only have [physician.GetNamePossessive] preventative measures failed, they seem to have actually irritated the humors and made the corruption both more infectious and more severe."
physician_epidemic_events.1022.desc: "Not only have [physician.GetNamePossessive] preventative measures failed, they seem to have actually invigorated the germs and made the pathogen both more infectious and more severe."
physician_epidemic_events.1023.t: "$physician_epidemic_events.1021.t$"
physician_epidemic_events.1023.desc: "The disease which was set to spread like a flame to paper across my realm has slowed to a crawl. The radical measures proposed by [physician.GetFirstName] have taken a toll on the economy in the short term, but [epidemic.GetName] may not quite be the threat we had all feared."
physician_epidemic_events.1023.a: "$physician_epidemic_events.1021.a$"
@ -48,7 +48,7 @@
physician_epidemic_events.1040.a: "Let them feel the royal touch."
physician_epidemic_events.1040.b: "Let the priests handle the poor."
physician_epidemic_events.1050.t: "The [ROOT.Char.GetPrimaryTitle.GetAdjectiveNoTooltip|U] Inn"
physician_epidemic_events.1050.desc: "My guards drag [physician.Custom2('MyCharacterIntroduction', ROOT.Char)] before me in irons. [physician.GetSheHe]'s been treating wounded soldiers — friend and foe alike — after every battle.\n\nThey call [physician.GetHerHis] shelter the "[ROOT.Char.GetPrimaryTitle.GetAdjective|U] Inn", and my commanders demand it shut down. But Edaraja only says, "They bleed and suffer like our own. Who am I to turn them away?""
physician_epidemic_events.1050.desc: "My guards drag [physician.Custom2('MyCharacterIntroduction', ROOT.Char)] before me in irons. [physician.GetSheHe]'s been treating wounded soldiers — friend and foe alike — after every battle.\n\nThey call [physician.GetHerHis] shelter the "[ROOT.Char.GetPrimaryTitle.GetAdjective|U] Inn", and my commanders demand it shut down. But [physician.GetFirstNameNoTooltip] only says, "They bleed and suffer like our own. Who am I to turn them away?""
physician_epidemic_events.1050.a: "[physician.GetSheHe|U] has my leave to continue."
physician_epidemic_events.1050.b: "You only serve #EMP me!#!"
physician_epidemic_events.1060.t: "A Desperate Banishment"