From 0b2aa04364d45cab08c8680ff6598841961e962d Mon Sep 17 00:00:00 2001 From: Robin Date: Sun, 22 Sep 2024 17:32:34 +0200 Subject: [PATCH] Genocide (#1386) * Update 03_genes_special_accessories_hairstyles.txt * Update 05_genes_special_accessories_clothes.txt * Update 06_genes_special_accessories_headgear.txt * Update 07_genes_special_accessories_misc.txt * Update 08_genes_special_visual_traits.txt * Update 09_genes_special_misc.txt * Update 00_ethnicities_templates.txt * update activities events for 1.12.x * update marshal task events for 1.12 * update court_events_general.txt for 1.12 * update culture_tradition_events for 1.12.x * update death_management_events.txt for 1.12 * update diarchy_events.txt for 1.12 * update events/dlc/bp1 files for 1.12 * events/dlc/bp2 folder for 1.12 * events/dlc/ep1 & ep2 update 1.12 * events/dlc/fp1 update 1.12 * events/dlc/fp2 updates for 1.12 * update events/dlc/fp3 folder for 1.12 * update education events for 1.12 * update faction_demands.txt for 1.12 * events/lifestyles/intrigue_lifestyle 1.12 update * update lover_events.txt for 1.12 * add the most annoying thing about the new DLC * update debug events for 1.12 * update travel events for 1.12 * new funeral events files for 1.12 * new DLC events files for 1.12 * find and replace fix some issues * some more 1.12 update fixes - heritage audio parameter - dumb spelling mistakes - county growth even if baron - wc_legitimacy.txt BOM * fixes for 1.12 to traditions and activity loc * 1.12 update to relations custom loc * tweak fp3 decisions for clan govt * add _activity_type.info * documentation and fix some overzealous 1.12 f&r * add some more diversity for 1.12 * update 00_event_templates.txt for 1.12 * fix messed up parenthesis to GET 1.12 LOADING * 1.12 - add godly descent seed replacement * fixes for hold_court_events_general.txt * fix some weird date error * fix godly descent seed * add scarred trait xp * readd deleted files * gui shared folder * remove duplicate loc * gui errors 1 * g * gui jam part 1 * epidemic mitigation for long lived race characters * Update accessories Updated hairstyles.txt and headgear.txt * Updated portraits Updated: - female_body.asset - girl_body.asset - female_head.asset - boy_body.asset - male_body.asset - male_head.asset * Missed animation * gui pt 2 * add long lived races mitigation vs dvlpmnt loss * fixes for longevity and other 1.12 cultural issues * further tweaks to longevity stuff * add mitigation to epidemic events * add refrences to documentation for longevity ft * little 1.12 legends reflavorization & flavor check * blank out more stuff from 00_chronicles.txt * add some new warcraft legends * more legends fixes * Update wc_legend_seeds.txt * Update map render Update the render properties of map objects Cleaned some animations Delete duplicated bracked on genes/03_genes_special_accessories_hairstyles.txt * Removed some errors from the log - Fixed the icons for the theramore interface to the new paths. - Updated some accessory variations archives. - Changed a index on 03_genes_special_accessories_hairstyles. - Changed some index on 06_genes_special_accessories_headgear. - Deleted a duplicated object on 06_genes_special_accessories_headgear. - Moved some code to prevent future index overlap. * update common files for 1.12.3 * update event files for 1.12.3 * 1.12.3 error log PART 1 * GET RID OF THE BITCH IN THE BOAT * Update animations * Updated more animations * 1.12.4 * clothing fix * clothing triggers file fix * fix some bug * Topless fix (this time for real pls dont broke) * 12.x error log * error 2 * e er * add localization for new legends stuff * diones file location was better * fix some geography errors for 12.x * fix more geography errors 1.12.x * achievement error suppression * more error.log fixes and reorg ce1 effects 1.12 * more error.log fixes and reorg ce1 effects 1.12 * more error log fixes for 1.12.x * Utok the Chronicler * huln highmountain legend seed * reflavorize exotic location legend locations * legend effects cleanup and huln legend loc * remove unused cultural parameter * Update wc_legends_l_english.yml * Revert "Update wc_legends_l_english.yml" This reverts commit 6ccc2885f2f06b2f10eecd53a11b5d1bf4869d1f. * fixes to wc_get_appropriate_exotic_location * fix wc_chance_to_infect_with_epidemic_plus_message * error suppression and fixes for exotic locations * fix messed up brackets in exotic locations effect * fix random errors 1.12, pandaria, etc * reflavorize capitol plague event * fixes and loc for legend seeds * epidemic spread and outbreak reduction for LE1+ * chg epidemic infection change mitigation location * eredar and demonic cultures can reopen dark portal * Fix union button * Portrait positioning * Removed old hair assets * Fix barbershop gui * Fix epidemic spread bug * fix random bugs * Update window_barbershop.gui * Stormwind is the capital of ligma * Copy decision_view_widget_create_holy_order from vanilla, for void elves * Fix random errors + Barbershop GUI * Very basic purge * More purge stuff * Bonuses for having same culture or faith as county * ongoing genocide modifier * Take title on purge * Depopulation modifiers * Genocide triggers * Prettier trigger * Basic CB and trigger fix * Remove genocide vars correctly * cb on_victory * All participants get prestige and piety * White peace rewards * Defeat penalties * Improve rewards * Genocide CB rewards done * Genocide CB costs * Give vassals opinion boost when defending culture/faith * AI score mult * Simplify and clarify CB * Genocide CB loc and cleanup * Add BOM * Add genocide opinion to other rulers * Change Purge to Corrupt for evil characters * Basic corruptions * Add bonus for already having the corruption modifier * General speed boost for corruption * Corruption modifier scaling * Remove test trigger * Always remove corruption modifier before adding it * Better corruption modifier scaling * Refresh corruption modifiers when needed * Refresh corruption modifier when gaining being trait * Add corruption modifiers on game start * Cleanup for triggers * Slim down purge triggers * Reflavor Purge to Cleanse when county is corrupted * Purge removes Corruption, add fervor and development speed modifiers * Speed bonus for unraised army * Change modifier icons and add task icons * Icon with border * Genocide loc and icons * Corruption task tooltip loc * Slightly better tooltip for Purge * Better trigger for AI and minor fix * Final fixes and loc for Purge * Modifier loc * Modifier adjustments * Fix anyone being able to declare genocide war * Genocided ruler fucking hates you * Cultural genocide makes people hate you too * Minor changes to how the opinions are applied * Remove false conversion * Doesn't give speed bonus if false conversion * Corruption modifier tooltip * Start with monthly genocide events * Fix broken trigger * Event loc * Modifier loc and event background * Another event, renamed modifiers * Event trigger * Minor modification to modifier * Genocide event * Another genocide event * Purge emigration event * Fix wrong scope * Cleanse county uprising event pt1 * Cleanse county uprising event pt2 * Corruption rebellion gets more claims when successful * Finish up revolt * Cleansing event * Reduce amount of levies * Another genocide event * Enable event * Todo * Event to grant bonus purge speed * TODO * Genocide event: bonus to surrounding counties of same culture/faith * Another event * Another genocide event * Loc! * Replace event with duel * Last genocide event * Side effects loc * Corruption completion event * Purge completion event and fixes * Finish purge completion event * AI should always corrupt and cleanse * AI won't genocide parent/child cultures * Opinion mod loc * AI priority changes * Can't genocide enemy-controlled county * AI personality weights * Opposite being check for beneficial corruption * Remove debug check * Genocide event loc * Genocide event animations * Update wc_genocide_task_events_l_english.yml * Factor in conversion speed game rules * Remove references to forces * 0402 loc and small changes * Reword event * corrections by shatterstar * genocide_task.0302 loc * genocide_task.0501 loc * genocide_task.0502 loc and minor fixes * genocide_task.0401 loc * Genocide event AI weights * Fix up the remaining genocide events * Enable all events and set correct chances * Change how corruption is assigned at game start * Loc fixes * Remove unused stuff * Fix game rule value bug * Fix loc * Remove unused scope and fix loc * Use switch statement and fix killer * Fix stress values * More stress fixes * Fix animations * Replace all references to the word genocide, and add desc to game rule * Fix modifiers --------- Co-authored-by: Raged50 Co-authored-by: Edmund <447ght@gmail.com> Co-authored-by: name Co-authored-by: Chomski Co-authored-by: Grekopithikos Co-authored-by: ElMariuso --- common/casus_belli_types/00_civil_war.txt | 116 +- common/casus_belli_types/wc_genocide_wars.txt | 211 ++ .../wc_genocide_councilor_tasks.txt | 662 ++++++ .../wc_genocide_custom_loc.txt | 298 +++ .../wc_council_tasks_game_concepts.txt | 7 + common/modifiers/wc_genocide_modifiers.txt | 259 +++ common/on_action/culture_on_actions.txt | 3 + common/on_action/game_start.txt | 10 + common/on_action/religion_on_actions.txt | 3 + common/on_action/title_on_actions.txt | 17 + common/on_action/wc_genocide_on_actions.txt | 83 + .../wc_genocide_opinions.txt | 34 + common/script_values/wc_genocide_values.txt | 484 +++++ common/scripted_effects/wc_being_effects.txt | 12 + .../scripted_effects/wc_genocide_effects.txt | 847 ++++++++ common/scripted_effects/wc_war_effects.txt | 316 +++ .../scripted_triggers/wc_being_triggers.txt | 12 + .../wc_casus_belli_triggers.txt | 30 + .../wc_genocide_triggers.txt | 602 ++++++ .../wc_religious_triggers.txt | 4 +- .../wc_genocide_task_events.txt | 1909 +++++++++++++++++ .../task_purge_population.dds | Bin 0 -> 78528 bytes .../task_relocate_population.dds | Bin 0 -> 78528 bytes .../wc_genocide_task_events_l_english.yml | 111 + .../modifiers/wc_modifiers_l_english.yml | 41 +- .../wc_genocide_opinions_l_english.yml | 7 + .../english/wc_council_tasks_l_english.yml | 38 +- .../english/wc_game_concepts_l_english.yml | 6 +- localization/english/wc_wars_l_english.yml | 12 +- .../english/wc_game_rules_l_english.yml | 7 + 30 files changed, 6078 insertions(+), 63 deletions(-) create mode 100644 common/casus_belli_types/wc_genocide_wars.txt create mode 100644 common/council_tasks/wc_genocide_councilor_tasks.txt create mode 100644 common/customizable_localization/wc_genocide_custom_loc.txt create mode 100644 common/game_concepts/wc_council_tasks_game_concepts.txt create mode 100644 common/modifiers/wc_genocide_modifiers.txt create mode 100644 common/on_action/wc_genocide_on_actions.txt create mode 100644 common/opinion_modifiers/wc_genocide_opinions.txt create mode 100644 common/script_values/wc_genocide_values.txt create mode 100644 common/scripted_effects/wc_genocide_effects.txt create mode 100644 common/scripted_triggers/wc_casus_belli_triggers.txt create mode 100644 common/scripted_triggers/wc_genocide_triggers.txt create mode 100644 events/councillor_task_events/wc_genocide_task_events.txt create mode 100644 gfx/interface/icons/council_task_types/task_purge_population.dds create mode 100644 gfx/interface/icons/council_task_types/task_relocate_population.dds create mode 100644 localization/english/event_localization/wc_genocide_task_events_l_english.yml create mode 100644 localization/english/opinions/wc_genocide_opinions_l_english.yml diff --git a/common/casus_belli_types/00_civil_war.txt b/common/casus_belli_types/00_civil_war.txt index 4175534cd0..00f05d8885 100644 --- a/common/casus_belli_types/00_civil_war.txt +++ b/common/casus_belli_types/00_civil_war.txt @@ -241,7 +241,7 @@ independence_faction_war = { value = medium_prestige_value multiply = -1 } - + # Warcraft decrease_any_authority_effect = yes } @@ -286,9 +286,9 @@ independence_faction_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -303,8 +303,8 @@ independence_faction_war = { scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } add_character_flag = { flag = recent_independence_faction_war @@ -391,7 +391,7 @@ independence_faction_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -441,15 +441,15 @@ liberty_faction_war = { #EP2 Accolade glory gain from winning against higher ranked enemy scope:attacker = { accolade_attacker_war_end_glory_gain_med_effect = yes } - + # LEGITIMACY FROM LOSING FACTION WAR faction_war_end_defeat_legitimacy_effect = yes - + scope:defender = { # Warcraft decrease_any_authority_effect = yes - + add_prestige = -500 every_character_war = { @@ -540,9 +540,9 @@ liberty_faction_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -556,8 +556,8 @@ liberty_faction_war = { } scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } add_character_flag = { flag = recent_liberty_faction_war years = faction_war_white_peace_cooldown @@ -624,7 +624,7 @@ liberty_faction_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -682,7 +682,7 @@ populist_war = { on_victory_desc = { desc = populist_war_victory_desc - + } on_victory = { @@ -753,16 +753,16 @@ populist_war = { on_white_peace_desc = { desc = populist_war_white_peace_desc - + } on_white_peace = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } on_white_peace_faction_revolt_war = yes hidden_effect = { @@ -802,7 +802,7 @@ populist_war = { on_defeat_desc = { desc = populist_war_defeat_desc - + } on_defeat = { @@ -878,7 +878,7 @@ populist_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -974,15 +974,15 @@ claimant_faction_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } } on_white_peace_faction_revolt_war = yes @@ -1042,7 +1042,7 @@ claimant_faction_war = { max_attacker_score_from_battles = 50 max_defender_score_from_battles = 100 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -1178,14 +1178,14 @@ depose_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } } on_white_peace_faction_revolt_war = yes } @@ -1236,7 +1236,7 @@ depose_war = { defender_score_from_occupation_scale = 50 max_attacker_score_from_battles = 100 max_defender_score_from_battles = 100 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -1395,15 +1395,15 @@ refused_liege_demand_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -1459,7 +1459,7 @@ refused_liege_demand_war = { } } } - + on_lost_request_revolt_war = yes } @@ -1485,7 +1485,7 @@ refused_liege_demand_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -1644,9 +1644,9 @@ independence_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -1662,8 +1662,8 @@ independence_war = { scope:defender = { add_prestige = minor_prestige_value stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } } } @@ -1733,7 +1733,7 @@ independence_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 @@ -1794,7 +1794,7 @@ nation_fracturing_faction_war = { #EP2 Accolade glory gain from winning against higher ranked enemy scope:attacker = { accolade_attacker_war_end_glory_gain_med_effect = yes } - + create_title_and_vassal_change = { type = independency save_scope_as = change @@ -1863,9 +1863,9 @@ nation_fracturing_faction_war = { limit = { is_ai = no } send_interface_toast = { type = event_generic_neutral - title = liege_primary_title_dissolution - desc = liege_primary_title_dissolution_desc - left_icon = scope:defender + title = liege_primary_title_dissolution + desc = liege_primary_title_dissolution_desc + left_icon = scope:defender } } } @@ -1914,9 +1914,9 @@ nation_fracturing_faction_war = { scope:attacker = { show_pow_release_message_effect = yes stress_impact = { - ambitious = medium_stress_impact_gain - arrogant = medium_stress_impact_gain - } + ambitious = medium_stress_impact_gain + arrogant = medium_stress_impact_gain + } } hidden_effect = { scope:attacker = { @@ -1931,8 +1931,8 @@ nation_fracturing_faction_war = { scope:defender = { stress_impact = { - arrogant = medium_stress_impact_gain - } + arrogant = medium_stress_impact_gain + } add_character_flag = { flag = recent_nation_fracturing_faction_war @@ -2004,7 +2004,7 @@ nation_fracturing_faction_war = { max_attacker_score_from_battles = 100 max_defender_score_from_battles = 50 - + max_defender_score_from_occupation = 150 max_attacker_score_from_occupation = 150 diff --git a/common/casus_belli_types/wc_genocide_wars.txt b/common/casus_belli_types/wc_genocide_wars.txt new file mode 100644 index 0000000000..b709b6c4c1 --- /dev/null +++ b/common/casus_belli_types/wc_genocide_wars.txt @@ -0,0 +1,211 @@ +committed_genocide_war = { + group = invasion + ai = yes + + combine_into_one = yes + + allowed_for_character = { always = yes } + + allowed_against_character = { + OR = { + genocide_cb_can_avenge_culture = yes + genocide_cb_can_avenge_faith = yes + } + } + + target_titles = none + target_de_jure_regions_above = yes + + valid_to_start = { always = yes } + + ai_score_mult = { + value = 1 + + if = { + limit = { + genocide_cb_can_avenge_faith = yes + scope:attacker = { + has_trait = zealous + } + } + + add = 1 + } + } + + should_invalidate = { + NOT = { + OR = { + genocide_cb_can_avenge_culture = yes + genocide_cb_can_avenge_faith = yes + } + } + } + + on_invalidated_desc = msg_committed_genocide_invalid_message + + on_invalidated = { + + } + + cost = { + prestige = { + value = 0 + add = { + value = genocide_cb_prestige_cost + desc = CB_BASE_COST + } + } + piety = { + value = 0 + add = { + value = genocide_cb_piety_cost + desc = CB_BASE_COST + } + } + } + + on_declaration = { + on_declared_war = yes + + if = { # Vassals of the same culture approve of defending your culture + limit = { + genocide_cb_can_avenge_culture = yes + } + + scope:attacker = { + every_vassal_or_below = { + limit = { + culture = scope:attacker.culture + } + + add_opinion = { + target = scope:attacker + modifier = vassal_approves_of_defending_genocide_opinion + } + } + } + } + + if = { # Vassals of the same faith approve of defending your faith + limit = { + genocide_cb_can_avenge_faith = yes + } + + scope:attacker = { + every_vassal_or_below = { + limit = { + faith = scope:attacker.faith + } + + add_opinion = { + target = scope:attacker + modifier = vassal_approves_of_defending_genocide_opinion + } + } + } + } + } + + on_victory = { + scope:attacker = { + show_pow_release_message_effect = yes + accolade_attacker_war_end_glory_gain_med_effect = yes + } + + create_title_and_vassal_change = { + type = conquest + save_scope_as = change + add_claim_on_loss = yes + } + + add_genocide_cb_rewards = { OUTCOME = flag:win PRESTIGE_BASE_VALUE = medium_prestige_value PIETY_BASE_VALUE = medium_piety_value } + + resolve_title_and_vassal_change = scope:change + + # Legitimacy + add_legitimacy_attacker_victory_effect = yes + + # Truce + add_truce_attacker_victory_effect = yes + + # FP1: note the victory for future memorialisation via stele (if applicable). + scope:attacker = { fp1_remember_recent_conquest_victory_effect = yes } + } + + on_victory_desc = { + first_valid = { + triggered_desc = { + trigger = { scope:attacker = { is_local_player = yes } } + desc = committed_genocide_cb_victory_desc_attacker + } + desc = committed_genocide_cb_victory_desc + } + } + + on_white_peace = { + scope:attacker = { show_pow_release_message_effect = yes } + + add_genocide_cb_rewards = { OUTCOME = flag:white_peace PRESTIGE_BASE_VALUE = medium_prestige_value PIETY_BASE_VALUE = medium_piety_value } + + add_truce_white_peace_effect = yes + } + + on_white_peace_desc = { + first_valid = { + triggered_desc = { + trigger = { scope:defender = { is_local_player = yes } } + desc = committed_genocide_cb_white_peace_desc_defender + } + desc = committed_genocide_cb_white_peace_desc + } + } + + on_defeat = { + scope:attacker = { show_pow_release_message_effect = yes } + + # Legitimacy + add_legitimacy_attacker_defeat_effect = yes + + scope:defender = { + #EP2 accolade glory gain for winning against higher ranked enemy + accolade_defender_war_end_glory_gain_med_effect = yes + } + + add_genocide_cb_rewards = { OUTCOME = flag:loss PRESTIGE_BASE_VALUE = medium_prestige_value PIETY_BASE_VALUE = medium_piety_value } + + add_truce_attacker_defeat_effect = yes + + scope:attacker = { + save_temporary_scope_as = loser + } + on_lost_aggression_war_discontent_loss = yes + } + + on_defeat_desc = { + first_valid = { + triggered_desc = { + trigger = { scope:defender = { is_local_player = yes } } + desc = committed_genocide_cb_defeat_desc_defender + } + desc = committed_genocide_cb_defeat_desc + } + } + + on_primary_attacker_death = inherit + on_primary_defender_death = inherit + transfer_behavior = transfer + + check_attacker_inheritance_validity = yes + check_defender_inheritance_validity = yes + + attacker_allies_inherit = yes + defender_allies_inherit = yes + + war_name = "GENOCIDE_WAR_NAME" + cb_name = "GENOCIDE_WAR_CB_NAME" + interface_priority = 98 #Below take all and regular dejure. + + max_ai_diplo_distance_to_title = 500 + +} \ No newline at end of file diff --git a/common/council_tasks/wc_genocide_councilor_tasks.txt b/common/council_tasks/wc_genocide_councilor_tasks.txt new file mode 100644 index 0000000000..465a7b195e --- /dev/null +++ b/common/council_tasks/wc_genocide_councilor_tasks.txt @@ -0,0 +1,662 @@ +task_purge_population = { + position = councillor_marshal + + task_type = task_type_county + county_target = realm + ai_county_target = realm + task_progress = task_progress_value + task_current_value = scope:councillor_liege.marshal_purge_population_current_progress + task_max_value = marshal_purge_population_threshold + highlight_own_realm = yes + restart_on_finish = no + + effect_desc = { + desc = task_purge_population_effect_desc + triggered_desc = { + trigger = { + scope:councillor_liege = { can_corrupt_trigger = yes } + } + desc = task_purge_population_effect_corrupt_desc + } + triggered_desc = { + trigger = { scope:councillor_liege = { government_has_flag = government_dark_frenzy_from_conversions } } + desc = task_dark_frenzy_gain + } + triggered_desc = { + trigger = { + scope:councillor_liege = { + any_vassal = { + has_vassal_stance = minority + } + } + } + desc = minority_disapproves_genocide_tooltip + } + + desc = { + desc = council_task_possible_side_effects + # Corrupt + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = yes + } + scope:councillor ?= { + martial < high_skill_rating + } + } + desc = council_task_cursed_lands + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = yes + } + scope:councillor ?= { + martial < high_skill_rating + } + } + desc = council_task_marauders + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = yes + + cp:councillor_court_chaplain ?= { + learning > mediocre_skill_rating + } + } + scope:councillor ?= { + martial >= high_skill_rating + } + } + desc = council_task_devotion_demonstration + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = yes + } + scope:councillor ?= { + martial >= high_skill_rating + } + } + desc = council_task_harness_energy + } + + # Cleanse + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial < high_skill_rating + } + scope:county ?= { + has_county_modifier = ongoing_cleansing_modifier + } + } + desc = council_task_champion_challenge + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial < high_skill_rating + } + scope:county ?= { + has_county_modifier = ongoing_cleansing_modifier + } + } + desc = council_task_wild_energy + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial >= high_skill_rating + } + scope:county ?= { + has_county_modifier = ongoing_cleansing_modifier + } + } + desc = council_task_army_spawn + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial >= high_skill_rating + } + scope:county ?= { + has_county_modifier = ongoing_cleansing_modifier + } + } + desc = council_task_large_raid + } + + # Purge + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial < high_skill_rating + } + OR = { + NOT = { + exists = scope:county + } + scope:county ?= { + NOT = { + has_county_modifier = ongoing_cleansing_modifier + } + } + } + } + desc = council_task_neighboring_unrest + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial < high_skill_rating + } + OR = { + NOT = { + exists = scope:county + } + scope:county ?= { + NOT = { + has_county_modifier = ongoing_cleansing_modifier + } + } + } + } + desc = council_task_emigration + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial >= high_skill_rating + } + OR = { + NOT = { + exists = scope:county + } + scope:county ?= { + NOT = { + has_county_modifier = ongoing_cleansing_modifier + } + } + } + } + desc = council_task_friendly_champion + } + triggered_desc = { + trigger = { + scope:councillor_liege ?= { + can_corrupt_trigger = no + } + scope:councillor ?= { + martial >= high_skill_rating + } + OR = { + NOT = { + exists = scope:county + } + scope:county ?= { + NOT = { + has_county_modifier = ongoing_cleansing_modifier + } + } + } + } + desc = council_task_found_supplies + } + } + } + + progress = { + value = 0 + add = { + value = marshal_purge_population_base_total + desc = INCREASE_CONTROL_BASE + } + + add = { + value = marshal_purge_population_skill_bonus + desc = SCALED_COUNCILLOR_MARTIAL_VALUE + } + + # Relation Bonuses/Penalties + if = { # Friend + limit = { + scope:councillor_liege = { + has_relation_friend = scope:councillor + NOT = { has_relation_best_friend = scope:councillor } + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_friend_bonus + desc = COUNCILLOR_IS_YOUR_FRIEND + } + } + if = { # Best Friend + limit = { + scope:councillor_liege = { + has_relation_best_friend = scope:councillor + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_best_friend_bonus + desc = COUNCILLOR_IS_YOUR_BEST_FRIEND + } + } + if = { # Rival + limit = { + scope:councillor_liege = { + has_relation_rival = scope:councillor + NOT = { has_relation_nemesis = scope:councillor } + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_rival_bonus + desc = COUNCILLOR_IS_YOUR_RIVAL + } + } + if = { # Nemesis + limit = { + scope:councillor_liege = { + has_relation_nemesis = scope:councillor + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_nemesis_bonus + desc = COUNCILLOR_IS_YOUR_NEMESIS + } + } + + #Partially completed bonuses + if = { # Same culture + limit = { + scope:county = { + culture = scope:councillor_liege.culture + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_same_culture_bonus + desc = COUNTY_IS_YOUR_CULTURE + } + } + if = { # Same faith + limit = { + scope:county = { + faith = scope:councillor_liege.faith + + NOT = { + has_variable = false_convert + } + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_same_faith_bonus + desc = COUNTY_IS_YOUR_FAITH + } + } + if = { # Has corruption modifier + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + scope:county = { + has_beneficial_corruption_this_province_trigger = yes + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_already_corrupted_bonus + DESC = COUNTY_ALREADY_CORRUPTED + } + } + + # bonus for army strength when armies are unraised + if = { + limit = { + scope:councillor_liege = { has_raised_armies = no } + } + + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_unraised_army_bonus + desc = GENOCIDE_ARMY_STRENGTH_BONUS + } + } + + # Sacrificed cleanse speed bonus + if = { + limit = { + scope:councillor_liege = { + has_character_modifier = sacrificed_cleansing_targets_modifier + } + } + + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_sacrifice_bonus + desc = GENOCIDE_SACRIFICE_BONUS + } + } + + # Local champion purge speed bonus + if = { + limit = { + scope:councillor_liege = { + has_character_modifier = genocide_local_champion_modifier + } + } + + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_champion_bonus + desc = GENOCIDE_CHAMPION_BONUS + } + } + + # Fervor bonus + if = { + limit = { + scope:county = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + } + add = { + value = scope:councillor.marshal_purge_population_monthly_increase_fervor_penalty + DESC = MARSHAL_GENOCIDE_FERVOR_IMPACT + } + } + + # Development reduces the speed. Should be the last non-multiply modifier applied to avoid negative values + if = { + limit = { + exists = scope:county + scope:county = { + development_level > 0 + } + } + add = { + value = scope:county.marshal_purge_population_monthly_increase_development_penalty + desc = STEWARD_PROMOTE_CULTURE_DEVELOPMENT_PENALTY + } + } + + if = { + limit = { + exists = scope:county + scope:county = { + OR = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + NOT = { + marshal_purge_population_game_rule_mult = 1 + } + } + } + multiply = { + value = marshal_purge_population_game_rule_mult + desc = FROM_CONVERSION_SPEED_GAME_RULE + } + } + } + + potential_county = { + scope:county = { + trigger_if = { + limit = { + NOT = { + county_controller = holder + } + } + + county_controller = { + OR = { + is_liege_or_above_of = scope:county.holder + is_vassal_or_below_of = scope:county.holder + } + } + } + trigger_if = { + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + } + + allow_corrupt_this_province_trigger = yes + } + trigger_else_if = { + limit = { + allow_cleanse_this_province_trigger = yes + } + always = yes + } + trigger_else = { + OR = { + allow_genocide_this_province_trigger = yes + } + } + } + } + + on_start_task_county = { + scope:county = { + if = { + limit = { + allow_corrupt_this_province_trigger = yes + } + + add_county_modifier = ongoing_corruption_modifier + } + else_if = { + limit = { + allow_cleanse_this_province_trigger = yes + } + + add_county_modifier = ongoing_cleansing_modifier + } + else = { + add_county_modifier = ongoing_genocide_modifier + } + } + } + + on_cancel_task_county = { + scope:county = { + remove_genocide_modifiers = yes + } + } + + on_finish_task_county = { + scope:county = { + set_variable = { + name = finished_genocide + } + if = { + limit = { + has_county_modifier = ongoing_corruption_modifier + } + + scope:councillor_liege = { + trigger_event = genocide_task.2001 + } + } + else_if = { + limit = { + has_county_modifier = ongoing_cleansing_modifier + } + + scope:councillor_liege = { + trigger_event = genocide_task.2101 + } + } + else = { + scope:councillor_liege = { + trigger_event = genocide_task.2201 + } + } + } + + scope:councillor = { + start_default_task = yes + } + } + + on_monthly_county = { + if = { + limit = { + NOT = { + scope:county ?= { + has_variable = purge_population_current_progress + } + } + } + + scope:county = { + set_variable = { + name = purge_population_current_progress + value = 0 + } + } + } + + scope:county = { + change_variable = { + name = purge_population_current_progress + add = marshal_purge_population_total + } + } + + + scope:councillor_liege = { # monthly_on_action doesn't work + trigger_event = { + on_action = task_purge_population_side_effects + } + } + } + + ai_target_score = { + value = 20 + + if = { + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + scope:county = { + has_beneficial_corruption_this_province_trigger = no + } + } + + add = 100 + } + + if = { + limit = { # Only factor in opinion if genocide, not cleanse or corrupt + scope:councillor_liege = { + can_corrupt_trigger = no + } + scope:county = { + allow_cleanse_this_province_trigger = no + } + } + scope:councillor_liege = { # Only genocide if bad opinion of holder + add = { + value = "opinion(scope:county.holder)" + multiply = -1 + } + } + } + + if = { + limit = { # AI shouldn't genocide parent/child culture + scope:county = { + allow_genocide_this_province_parent_culture_trigger = no + } + } + + multiply = 0 + } + } + + ai_will_do = { + value = 0 + + if = { + limit = { + scope:councillor = { + is_performing_council_task = task_purge_population + } + } + add = 10000 # Always keep going if this is already chosen + } + else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + } + add = 1000 + } + else_if = { + limit = { + scope:councillor_liege = { + any_sub_realm_county = { + allow_cleanse_this_province_trigger = yes + } + } + } + add = 1000 + } + else = { + add = { + value = ai_zeal + } + add = { + value = ai_greed + } + add = { + value = ai_compassion + multiply = -1 + } + add = { + value = ai_honor + multiply = -1 + } + } + + if = { + # Don't do this too often + limit = { + scope:councillor_liege = { + has_character_flag = no_ai_genocide + } + } + multiply = 0 + } + } + +} +# task_relocate_population = { +# +# } \ No newline at end of file diff --git a/common/customizable_localization/wc_genocide_custom_loc.txt b/common/customizable_localization/wc_genocide_custom_loc.txt new file mode 100644 index 0000000000..e6e00fbc11 --- /dev/null +++ b/common/customizable_localization/wc_genocide_custom_loc.txt @@ -0,0 +1,298 @@ +TaskPurgePopulationTitle = { + type = character + text = { + localization_key = TaskPurgePopulationTitle_Corrupt + trigger = { + can_corrupt_trigger = yes + } + } + text = { + localization_key = TaskPurgePopulationTitle_Purge + fallback = yes + } +} + +GenocideEventRelevantMagic = { + type = character + text = { + localization_key = GenocideEventRelevantMagic_Light + trigger = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantMagic_Void + trigger = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + } + } + text = { + localization_key = GenocideEventRelevantMagic_Arcane + trigger = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + } + text = { + localization_key = GenocideEventRelevantMagic_Fel + trigger = { + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + } + } + text = { + localization_key = GenocideEventRelevantMagic_Life + trigger = { + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + } + text = { + localization_key = GenocideEventRelevantMagic_Death + trigger = { + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } +} + +GenocideEventRelevantCountyMagic = { + type = landed_title + text = { + localization_key = GenocideEventRelevantMagic_Light + trigger = { + has_county_modifier = county_corruption_light_modifier + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantMagic_Void + trigger = { + has_county_modifier = county_corruption_void_modifier + } + } + text = { + localization_key = GenocideEventRelevantMagic_Arcane + trigger = { + has_county_modifier = county_corruption_arcane_modifier + } + } + text = { + localization_key = GenocideEventRelevantMagic_Fel + trigger = { + has_county_modifier = county_corruption_fel_modifier + } + } + text = { + localization_key = GenocideEventRelevantMagic_Life + trigger = { + has_county_modifier = county_corruption_life_modifier + } + } + text = { + localization_key = GenocideEventRelevantMagic_Death + trigger = { + has_county_modifier = county_corruption_death_modifier + } + } +} + +GenocideEventRelevantGod = { + type = character + text = { + localization_key = GenocideEventRelevantGod_FaithGod + trigger = { + evil_public_religion_trigger = yes + faith = { + OR = { + has_doctrine = doctrine_light_magic_approved + has_doctrine = doctrine_shadow_magic_approved + has_doctrine = doctrine_order_magic_approved + has_doctrine = doctrine_disorder_magic_approved + has_doctrine = doctrine_life_magic_approved + has_doctrine = doctrine_death_magic_approved + } + } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantGod_Light + trigger = { + has_trait = being_light + } + } + text = { + localization_key = GenocideEventRelevantGod_Void + trigger = { + has_trait = being_void + } + } + text = { + localization_key = GenocideEventRelevantGod_Arcane + trigger = { + has_trait = being_order + } + } + text = { + localization_key = GenocideEventRelevantGod_Fel + trigger = { + has_trait = being_demon + } + } + text = { + localization_key = GenocideEventRelevantGod_Life + trigger = { + has_trait = being_life + } + } + text = { + localization_key = GenocideEventRelevantGod_Death + trigger = { + has_trait = being_undead + } + } +} + +GenocideEventRelevantPower = { + type = character + text = { + localization_key = GenocideEventRelevantPower_Holy + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantPower_Dark + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + } + text = { + localization_key = GenocideEventRelevantPower_Arcane + trigger = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + } +} + +GenocideEventRelevantName = { + type = character + text = { + localization_key = GenocideEventRelevantName_Hallowed + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantName_Unholy + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + } +} + +GenocideEventRelevantNameCounty = { + type = landed_title + text = { + localization_key = GenocideEventRelevantName_Hallowed + trigger = { + OR = { + has_county_modifier = county_corruption_light_modifier + has_county_modifier = county_corruption_arcane_modifier + has_county_modifier = county_corruption_life_modifier + } + } + fallback = yes + } + text = { + localization_key = GenocideEventRelevantName_Unholy + trigger = { + OR = { + has_county_modifier = county_corruption_void_modifier + has_county_modifier = county_corruption_fel_modifier + has_county_modifier = county_corruption_death_modifier + } + } + } +} + +GenocideEventGenocidedPopulationsOr = { + type = character + + text = { + localization_key = GenocideEventGenocidedPopulationsOr_Both + trigger = { + scope:second = { + allow_genocide_this_province_culture_trigger = { CHARACTER = root } + allow_genocide_this_province_religion_trigger = { CHARACTER = root } + } + } + fallback = yes + } + + text = { + localization_key = GenocideEventGenocidedPopulations_Culture + trigger = { + scope:second = { + allow_genocide_this_province_culture_trigger = { CHARACTER = root } + } + } + } + + text = { + localization_key = GenocideEventGenocidedPopulations_Faith + trigger = { + scope:second = { + allow_genocide_this_province_religion_trigger = { CHARACTER = root } + } + } + } +} + +GenocideEventGenocidedPopulationsAnd = { + type = character + + text = { + localization_key = GenocideEventGenocidedPopulationsAnd_Both + trigger = { + scope:second = { + allow_genocide_this_province_culture_trigger = { CHARACTER = root } + allow_genocide_this_province_religion_trigger = { CHARACTER = root } + } + } + fallback = yes + } + + text = { + localization_key = GenocideEventGenocidedPopulations_Culture + trigger = { + scope:second = { + allow_genocide_this_province_culture_trigger = { CHARACTER = root } + } + } + } + + text = { + localization_key = GenocideEventGenocidedPopulations_Faith + trigger = { + scope:second = { + allow_genocide_this_province_religion_trigger = { CHARACTER = root } + } + } + } +} \ No newline at end of file diff --git a/common/game_concepts/wc_council_tasks_game_concepts.txt b/common/game_concepts/wc_council_tasks_game_concepts.txt new file mode 100644 index 0000000000..9b5317f844 --- /dev/null +++ b/common/game_concepts/wc_council_tasks_game_concepts.txt @@ -0,0 +1,7 @@ + + +purge_population = { + alias = { genocide } + parent = councillor_task + texture = "gfx/interface/icons/council_task_types/task_purge_population.dds" +} \ No newline at end of file diff --git a/common/modifiers/wc_genocide_modifiers.txt b/common/modifiers/wc_genocide_modifiers.txt new file mode 100644 index 0000000000..830bc0b752 --- /dev/null +++ b/common/modifiers/wc_genocide_modifiers.txt @@ -0,0 +1,259 @@ +ongoing_corruption_modifier = { + icon = martial_negative + + levy_size = -10 + garrison_size = -10 + tax_mult = -10 + levy_reinforcement_rate = -10 + development_growth_factor = -10 +} + +ongoing_cleansing_modifier = { + icon = martial_negative + + levy_size = -10 + garrison_size = -10 + tax_mult = -10 + levy_reinforcement_rate = -10 + development_growth_factor = -10 +} + +ongoing_genocide_modifier = { + icon = martial_negative + + levy_size = -10 + garrison_size = -10 + tax_mult = -10 + levy_reinforcement_rate = -10 + development_growth_factor = -10 +} + +county_corruption_light_modifier = { + icon = magic_mixed + + county_opinion_add = 10 + supply_limit_mult = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_void_modifier = { + icon = magic_mixed + + monthly_county_control_growth_add = 0.1 + build_speed = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_arcane_modifier = { + icon = magic_mixed + + county_opinion_add = 10 + development_growth_factor = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_fel_modifier = { + icon = magic_mixed + + monthly_county_control_growth_add = 0.1 + tax_mult = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_life_modifier = { + icon = magic_mixed + + county_opinion_add = 10 + levy_reinforcement_rate = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_corruption_death_modifier = { + icon = magic_mixed + + monthly_county_control_growth_add = 0.1 + levy_size = 0.1 + + scale = { + value = corruption_modifier_scale_value + } +} + +county_purged_modifier_1 = { + icon = flame_negative + + county_opinion_add = -20 + levy_size = -0.2 + garrison_size = -0.2 + tax_mult = -0.2 + levy_reinforcement_rate = -0.2 + supply_limit_mult = -0.2 + epidemic_resistance = 5 + development_growth_factor = -0.2 +} + +county_purged_modifier_2 = { + icon = flame_negative + + county_opinion_add = -40 + levy_size = -0.4 + garrison_size = -0.4 + tax_mult = -0.4 + levy_reinforcement_rate = -0.4 + supply_limit_mult = -0.4 + epidemic_resistance = 15 + development_growth_factor = -0.4 +} + +county_purged_modifier_3 = { + icon = flame_negative + + county_opinion_add = -60 + levy_size = -0.6 + garrison_size = -0.6 + tax_mult = -0.6 + levy_reinforcement_rate = -0.6 + supply_limit_mult = -0.6 + epidemic_resistance = 25 + development_growth_factor = -0.6 +} + +harmonize_with_force_modifier = { + icon = prowess_positive + + prowess = 2 +} + +corruption_disease_modifier = { + icon = martial_negative + + development_growth_factor = -0.5 + build_speed = 0.25 + tax_mult = -0.25 +} + +genocidal_unrest_modifier = { + icon = martial_negative + + development_growth_factor = -0.5 + build_speed = 0.25 + tax_mult = -0.25 +} + +genocide_emigration_modifier = { + icon = stewardship_negative + + development_growth_factor = -0.10 + build_speed = 0.05 + tax_mult = -0.05 + levy_size = -0.05 + county_opinion_add = -5 +} + +genocide_immigration_modifier = { + icon = stewardship_mixed + + development_growth_factor = 0.25 + build_speed = -0.1 + tax_mult = 0.1 + levy_size = 0.1 + county_opinion_add = -10 +} + +genocide_channelled_energy_modifier = { + icon = magic_positive + + development_growth_factor = 0.50 + build_speed = -0.25 + tax_mult = 0.25 + levy_size = 0.25 +} + +genocide_dispersed_energy_modifier = { + icon = magic_positive + + development_growth_factor = 0.25 + build_speed = -0.1 + tax_mult = 0.1 + levy_size = 0.1 +} + +sacrificed_cleansing_targets_modifier = { + icon = martial_positive + + dread_gain_mult = 0.2 + # Speeds up genocide +} + +genocide_focused_resources_modifier = { + icon = stewardship_positive + + development_growth_factor = 0.50 + build_speed = -0.25 + tax_mult = 0.25 + levy_size = 0.25 +} + +genocide_dispersed_resources_modifier = { + icon = stewardship_positive + + development_growth_factor = 0.25 + build_speed = -0.1 + tax_mult = 0.1 + levy_size = 0.1 +} + +genocide_wild_energy_modifier = { + icon = magic_negative + + development_growth_factor = -0.125 + build_speed = 0.05 + tax_mult = -0.05 + levy_size = -0.05 +} + +genocide_controlled_energy_modifier = { + icon = magic_negative + + development_growth_factor = -0.25 + build_speed = 0.1 + tax_mult = -0.1 + levy_size = -0.1 +} + +genocide_marauding_forces_modifier = { + icon = martial_negative + + county_opinion_add = -5 + travel_danger = 5 +} + +genocide_purged_marauders_modifier = { + icon = martial_negative + + county_opinion_add = -10 + development_growth = -0.5 +} + +genocide_local_champion_modifier = { + icon = martial_positive + + same_culture_opinion = 10 + same_faith_opinion = 10 + # Speeds up genocide +} \ No newline at end of file diff --git a/common/on_action/culture_on_actions.txt b/common/on_action/culture_on_actions.txt index b2f3e185f8..6afbfde375 100644 --- a/common/on_action/culture_on_actions.txt +++ b/common/on_action/culture_on_actions.txt @@ -75,6 +75,9 @@ on_character_culture_change = { trigger_event = bp2_yearly.8050 } } + + # Warcraft + refresh_corruption_modifiers_all_counties = yes } } diff --git a/common/on_action/game_start.txt b/common/on_action/game_start.txt index 4004b62ed3..b91779042b 100644 --- a/common/on_action/game_start.txt +++ b/common/on_action/game_start.txt @@ -320,6 +320,16 @@ on_game_start = { } } } + + # Warcraft + every_county = { + save_scope_as = county + holder = { + save_scope_as = councillor_liege + } + + corrupt_county_effect = { ON_START = yes } + } } # Warcraft - FP3 Struggle stuff removed } diff --git a/common/on_action/religion_on_actions.txt b/common/on_action/religion_on_actions.txt index 242be6e105..b893ff0323 100644 --- a/common/on_action/religion_on_actions.txt +++ b/common/on_action/religion_on_actions.txt @@ -196,6 +196,9 @@ on_character_faith_change = { trigger_event = bp2_yearly.8050 } } + + # Warcraft + refresh_corruption_modifiers_all_counties = yes } events = { # Warcraft diff --git a/common/on_action/title_on_actions.txt b/common/on_action/title_on_actions.txt index c842bcccc5..58aa09a8ec 100644 --- a/common/on_action/title_on_actions.txt +++ b/common/on_action/title_on_actions.txt @@ -283,6 +283,23 @@ on_title_gain = { } } # Warcraft + scope:title = { + if = { + limit = { + scope:title.tier = tier_county + scope:title.holder = { + NOR = { + is_liege_or_above_of = scope:previous_holder + is_vassal_or_below_of = scope:previous_holder + } + } + } + + remove_genocide_modifiers = yes + remove_genocide_variables = { REMOVE = no } + refresh_corruption_modifiers = yes + } + } } events = { # Warcraft diff --git a/common/on_action/wc_genocide_on_actions.txt b/common/on_action/wc_genocide_on_actions.txt new file mode 100644 index 0000000000..ac1491f153 --- /dev/null +++ b/common/on_action/wc_genocide_on_actions.txt @@ -0,0 +1,83 @@ +on_reduce_purge_modifier_on_action = { + effect = { + scope:county = { + if = { + limit = { + has_county_modifier = county_purged_modifier_1 + } + + remove_county_modifier = county_purged_modifier_1 + remove_genocide_variables = { REMOVE = yes } + } + else_if = { + limit = { + has_county_modifier = county_purged_modifier_2 + } + + remove_county_modifier = county_purged_modifier_2 + add_county_modifier = { + modifier = county_purged_modifier_1 + days = 1201 + } + + trigger_event = { + on_action = on_reduce_purge_modifier_on_action + days = 1200 + } + } + else_if = { + limit = { + has_county_modifier = county_purged_modifier_3 + } + + remove_county_modifier = county_purged_modifier_3 + add_county_modifier = { + modifier = county_purged_modifier_2 + days = 1201 + } + + trigger_event = { + on_action = on_reduce_purge_modifier_on_action + days = 1200 + } + } + } + } +} + +task_purge_population_side_effects = { + trigger = { + NOT = { has_variable = had_genocide_task_side_effect } + exists = cp:councillor_marshal + } + + random_events = { + chance_to_happen = 25 + 250 = 0 + # Bad side effects + ## Corrupt + 100 = genocide_task.0001 # Gives neighboring counties genocidal_unrest_modifier + 100 = genocide_task.0002 # Gain dread and lose dev or lose dread + + ## Cleanse + 100 = genocide_task.0101 # Champion challenges you to fight + 100 = genocide_task.0102 # Gives maluses, opposite of genocide_task.0302 + + ## Purge + 100 = genocide_task.0201 # Copy of genocide_task.0001 + 100 = genocide_task.0202 # Gives counties of same culture/faith genocide_emigration_modifier and a random neighboring realm county genocide_immigration_modifier + + # Good side effects + ## Corrupt + 100 = genocide_task.0301 # Gives dread, piety, or bonus to prowess + 100 = genocide_task.0302 # Give already corrupted counties small boost + + ## Cleanse + 100 = genocide_task.0401 # Spawn army or speed up cleansing + 100 = genocide_task.0402 # Gives dread, prestige, or bonus to cleanse speed + + ## Purge + 100 = genocide_task.0501 # Spawn a friendly champion or speed up purge + 100 = genocide_task.0502 # Gives counties of your culture/faith modifier + } +} \ No newline at end of file diff --git a/common/opinion_modifiers/wc_genocide_opinions.txt b/common/opinion_modifiers/wc_genocide_opinions.txt new file mode 100644 index 0000000000..a86d9e5e64 --- /dev/null +++ b/common/opinion_modifiers/wc_genocide_opinions.txt @@ -0,0 +1,34 @@ +minority_disapproves_of_genocide_population_opinion = { + opinion = -50 + years = 10 + decaying = yes + stacking = yes +} + +genocided_my_culture_opinion = { + opinion = -25 + years = 10 + decaying = yes + stacking = yes +} + +genocided_my_faith_opinion = { + opinion = -50 + years = 10 + decaying = yes + stacking = yes +} + +ruler_disapproves_of_genocide_population_opinion = { + opinion = -100 + years = 50 + decaying = yes + stacking = yes +} + +vassal_approves_of_defending_genocide_opinion = { + opinion = 25 + years = 10 + decaying = yes + stacking = yes +} \ No newline at end of file diff --git a/common/script_values/wc_genocide_values.txt b/common/script_values/wc_genocide_values.txt new file mode 100644 index 0000000000..73624262a1 --- /dev/null +++ b/common/script_values/wc_genocide_values.txt @@ -0,0 +1,484 @@ +marshal_purge_population_threshold = 18 +council_same_culture_impact_percentage = 50 +council_same_faith_impact_percentage = 50 +council_already_corrupted_impact_percentage = 50 +council_sacrifice_impact_percentage = 20 +council_champion_impact_percentage = 20 + +genocide_task_side_effect_cooldown = 91 + +marshal_purge_population_current_progress = { + value = 0 + if = { + limit = { + scope:county ?= { + has_variable = purge_population_current_progress + } + } + add = scope:county.var:purge_population_current_progress + } +} + +marshal_purge_population_base = { + value = 1 +} + +marshal_purge_population_base_total = { + value = marshal_purge_population_base + + if = { + limit = { + OR = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + scope:county = { + allow_cleanse_this_province_trigger = yes + } + } + } + add = 1 + } +} + +marshal_purge_population_skill_bonus = { + value = scope:councillor.martial + subtract = 10 + divide = 10 +} + +marshal_purge_population_monthly_increase_friend_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_relation_friend = scope:councillor + NOT = { has_relation_best_friend = scope:councillor } + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_friend_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_best_friend_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_relation_best_friend = scope:councillor + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_best_friend_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_rival_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_relation_rival = scope:councillor + NOT = { has_relation_nemesis = scope:councillor } + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_rival_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_nemesis_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_relation_nemesis = scope:councillor + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_nemesis_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_same_culture_bonus = { + if = { + limit = { + scope:county = { + culture = scope:councillor_liege.culture + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_same_culture_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_same_faith_bonus = { + if = { + limit = { + scope:county = { + faith = scope:councillor_liege.faith + + NOT = { + has_variable = false_convert + } + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_same_faith_impact_percentage + divide = 100 + } + } + } +} +marshal_purge_population_monthly_increase_already_corrupted_bonus = { + if = { + limit = { + scope:councillor_liege = { + can_corrupt_trigger = yes + } + scope:county = { + has_beneficial_corruption_this_province_trigger = yes + } + } + add = { + value = marshal_purge_population_base + multiply = { + value = council_already_corrupted_impact_percentage + divide = 100 + } + } + } +} + +marshal_purge_population_monthly_increase_unraised_army_bonus = { + # bonus for army strength when armies are unraised + if = { + limit = { + scope:councillor_liege = { has_raised_armies = no } + } + + add = { + value = marshal_purge_population_base + multiply = { + value = scope:councillor_liege.current_military_strength + divide = 10000 + } + max = 2 + } + } +} + +marshal_purge_population_monthly_increase_sacrifice_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_character_modifier = sacrificed_cleansing_targets_modifier + } + } + + add = { + value = marshal_purge_population_base + multiply = { + value = council_sacrifice_impact_percentage + divide = 100 + } + } + } +} + +marshal_purge_population_monthly_increase_champion_bonus = { + if = { + limit = { + scope:councillor_liege = { + has_character_modifier = genocide_local_champion_modifier + } + } + + add = { + value = marshal_purge_population_base + multiply = { + value = council_champion_impact_percentage + divide = 100 + } + } + } +} + +marshal_purge_population_monthly_increase_fervor_penalty = { + if = { + limit = { + scope:county = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + } + add = { + value = marshal_purge_population_base + multiply = { + add = { + add = scope:councillor_liege.faith.fervor + } + subtract = { + add = scope:county.faith.fervor + } + divide = 100 + } + } + } +} + +# Development penalty +marshal_purge_population_monthly_increase_development_penalty = { + value = 0 + if = { + limit = { exists = scope:county } + add = { + value = scope:councillor.marshal_purge_population_base + multiply = { + subtract = scope:county.development_level + divide = 50 + } + } + } +} + +marshal_purge_population_faith_game_rule_mult = { + value = 1 + # Conversion speed game rules + if = { + limit = { + has_game_rule = slower_faith_conversion_speed + } + multiply = slower_game_rule_value + } + if = { + limit = { + has_game_rule = significantly_slower_faith_conversion_speed + } + multiply = significantly_slower_game_rule_value + } + if = { + limit = { + has_game_rule = faster_faith_conversion_speed + } + multiply = faster_game_rule_value + } + if = { + limit = { + has_game_rule = significantly_faster_faith_conversion_speed + } + multiply = significantly_faster_game_rule_value + } +} + +marshal_purge_population_culture_game_rule_mult = { + value = 1 + # Conversion speed game rules + if = { + limit = { + has_game_rule = slower_culture_conversion_speed + } + multiply = slower_game_rule_value + } + if = { + limit = { + has_game_rule = significantly_slower_culture_conversion_speed + } + multiply = significantly_slower_game_rule_value + } + if = { + limit = { + has_game_rule = faster_culture_conversion_speed + } + multiply = faster_game_rule_value + } + if = { + limit = { + has_game_rule = significantly_faster_culture_conversion_speed + } + multiply = significantly_faster_game_rule_value + } +} + +marshal_purge_population_game_rule_mult = { + value = 0 + if = { + limit = { + limit = { exists = scope:county } + scope:county = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + } + add = marshal_purge_population_culture_game_rule_mult + } + if = { + limit = { + scope:county ?= { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + } + add = marshal_purge_population_faith_game_rule_mult + } + + if = { + limit = { + scope:county ?= { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + } + divide = 2 + } + + if = { + limit = { + scope:county ?= { + NOR = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + } + } + add = 1 + } +} + +marshal_purge_population_total = { + value = marshal_purge_population_base_total + add = marshal_purge_population_skill_bonus + add = marshal_purge_population_monthly_increase_friend_bonus + add = marshal_purge_population_monthly_increase_best_friend_bonus + add = marshal_purge_population_monthly_increase_rival_bonus + add = marshal_purge_population_monthly_increase_nemesis_bonus + add = marshal_purge_population_monthly_increase_same_culture_bonus + add = marshal_purge_population_monthly_increase_same_faith_bonus + add = marshal_purge_population_monthly_increase_already_corrupted_bonus + add = marshal_purge_population_monthly_increase_unraised_army_bonus + add = marshal_purge_population_monthly_increase_sacrifice_bonus + add = marshal_purge_population_monthly_increase_champion_bonus + add = marshal_purge_population_monthly_increase_fervor_penalty + add = marshal_purge_population_monthly_increase_development_penalty + multiply = marshal_purge_population_game_rule_mult +} + +genocide_cb_prestige_cost = { + value = 0 + scope:defender = { + every_realm_county = { + limit = { + OR = { + AND = { + has_variable = culture_genocided + var:culture_genocided = scope:attacker.culture + } + } + } + + add = 100 + } + } +} + +genocide_cb_piety_cost = { + value = 0 + scope:defender = { + every_realm_county = { + limit = { + OR = { + AND = { + has_variable = faith_genocided + var:faith_genocided = scope:attacker.faith + } + } + } + + add = 100 + } + } +} + +genocide_cb_participation_prestige = { + value = 0 + add = scope:base_prestige + multiply = 0.5 + multiply = { + value = 0 + if = { + limit = { + scope:attacker_culture_reward_mult > scope:defender_culture_reward_mult + } + add = scope:attacker_culture_reward_mult + } + else = { + add = scope:defender_culture_reward_mult + } + } +} + +genocide_cb_participation_piety = { + value = 0 + add = scope:base_piety + multiply = 0.5 + multiply = { + value = 0 + if = { + limit = { + scope:attacker_faith_reward_mult > scope:defender_faith_reward_mult + } + add = scope:attacker_faith_reward_mult + } + else = { + add = scope:defender_faith_reward_mult + } + } +} + +corruption_modifier_scale_value = { + value = 0 + if = { + limit = { + corruption_scale_extreme_pos_trigger = yes + } + + add = 2 + } + else_if = { + limit = { + corruption_scale_mild_pos_trigger = yes + } + + add = 1 + } + else_if = { + limit = { + corruption_scale_mild_neg_trigger = yes + } + + add = -1 + } + else_if = { + limit = { + corruption_scale_extreme_neg_trigger = yes + } + + add = -2 + } +} \ No newline at end of file diff --git a/common/scripted_effects/wc_being_effects.txt b/common/scripted_effects/wc_being_effects.txt index 3009d11273..fe43a914b3 100644 --- a/common/scripted_effects/wc_being_effects.txt +++ b/common/scripted_effects/wc_being_effects.txt @@ -13,6 +13,8 @@ become_undead_no_notification_effect = { check_pregnancy_effect = yes check_available_government_event_effect = yes # Memory leak 4 GB of OM + + refresh_corruption_modifiers_all_counties = yes } become_undead_no_notification_event_effect = { trigger_event = WCBEI.2 @@ -126,6 +128,8 @@ become_demon_effect = { } check_pregnancy_effect = yes check_available_government_event_effect = yes # May be memory leak + + refresh_corruption_modifiers_all_counties = yes } become_being_void_effect = { add_trait = being_void @@ -136,6 +140,8 @@ become_being_void_effect = { } check_pregnancy_effect = yes check_available_government_event_effect = yes # May be memory leak + + refresh_corruption_modifiers_all_counties = yes } become_being_life_effect = { add_trait = being_life @@ -145,6 +151,8 @@ become_being_life_effect = { recover_from_all_diseases_event_effect = yes } check_pregnancy_effect = yes + + refresh_corruption_modifiers_all_counties = yes } become_being_order_effect = { add_trait = being_order @@ -154,6 +162,8 @@ become_being_order_effect = { recover_from_all_diseases_event_effect = yes } check_pregnancy_effect = yes + + refresh_corruption_modifiers_all_counties = yes } become_being_light_effect = { add_trait = being_light @@ -163,6 +173,8 @@ become_being_light_effect = { recover_from_all_diseases_event_effect = yes } check_pregnancy_effect = yes + + refresh_corruption_modifiers_all_counties = yes } send_being_notifications_effect = { diff --git a/common/scripted_effects/wc_genocide_effects.txt b/common/scripted_effects/wc_genocide_effects.txt new file mode 100644 index 0000000000..44a066298e --- /dev/null +++ b/common/scripted_effects/wc_genocide_effects.txt @@ -0,0 +1,847 @@ +# TODO: Give nickname + +reset_genocide_progress_effect = { + if = { + limit = { + has_variable = purge_population_current_progress + } + set_variable = { name = purge_population_current_progress value = 0 } + } +} + +# Remove ongoing modifiers when title changes hands: on_title_gain, on_county_occupied +remove_genocide_modifiers = { + reset_genocide_progress_effect = yes + if = { + limit = { + has_county_modifier = ongoing_corruption_modifier + } + + remove_county_modifier = ongoing_corruption_modifier + } + if = { + limit = { + has_county_modifier = ongoing_cleansing_modifier + } + + remove_county_modifier = ongoing_cleansing_modifier + } + if = { + limit = { + has_county_modifier = ongoing_genocide_modifier + } + + remove_county_modifier = ongoing_genocide_modifier + } +} + +add_corruption_modifier = { + remove_corruption_modifiers = yes + set_variable = { + name = corruption_type + value = flag:$MOD$ + } + add_county_modifier = $MOD$ + remove_variable = corruption_type +} + +remove_corruption_modifiers = { + if = { + limit = { + has_county_modifier = county_corruption_light_modifier + } + + remove_county_modifier = county_corruption_light_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_void_modifier + } + + remove_county_modifier = county_corruption_void_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_arcane_modifier + } + + remove_county_modifier = county_corruption_arcane_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_fel_modifier + } + + remove_county_modifier = county_corruption_fel_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_life_modifier + } + + remove_county_modifier = county_corruption_life_modifier + } + if = { + limit = { + has_county_modifier = county_corruption_death_modifier + } + + remove_county_modifier = county_corruption_death_modifier + } +} + +refresh_corruption_modifiers = { # Modifier scale only works when modifier is added, so we use this to remove modifier and re-add it + if = { + limit = { + has_county_modifier = county_corruption_light_modifier + } + + add_corruption_modifier = { MOD = county_corruption_light_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_void_modifier + } + + add_corruption_modifier = { MOD = county_corruption_void_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_arcane_modifier + } + + add_corruption_modifier = { MOD = county_corruption_arcane_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_fel_modifier + } + + add_corruption_modifier = { MOD = county_corruption_fel_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_life_modifier + } + + add_corruption_modifier = { MOD = county_corruption_life_modifier } + } + if = { + limit = { + has_county_modifier = county_corruption_death_modifier + } + + add_corruption_modifier = { MOD = county_corruption_death_modifier } + } +} + +refresh_corruption_modifiers_all_counties = { + every_held_title = { + limit = { + tier = tier_county + } + + refresh_corruption_modifiers = yes + } +} + +remove_genocide_variables = { + if = { + limit = { + has_variable = culture_genocided + OR = { + NOT = { + culture = holder.culture + } + always = $REMOVE$ + } + } + + remove_variable = culture_genocided + } + + if = { + limit = { + has_variable = faith_genocided + OR = { + NOT = { + faith = holder.faith + } + always = $REMOVE$ + } + } + + remove_variable = faith_genocided + } +} + +corrupt_county_effect = { + scope:county ?= { + if = { + limit = { + OR = { + $ON_START$ = yes + AND = { + has_variable = purge_population_current_progress + var:purge_population_current_progress >= marshal_purge_population_threshold + } + has_variable = finished_genocide + } + } + + remove_genocide_modifiers = yes + + save_temporary_scope_value_as = { + name = take_county + value = yes + } + + if = { + limit = { + $ON_START$ = yes + } + + save_temporary_scope_value_as = { + name = take_county + value = no + } + } + + if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_light MAGIC = light } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_light_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_light MAGIC = light } + } + } + + add_corruption_modifier = { MOD = county_corruption_light_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_void MAGIC = shadow } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_void_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_void MAGIC = shadow } + } + } + + add_corruption_modifier = { MOD = county_corruption_void_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_order MAGIC = order } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_arcane_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_order MAGIC = order } + } + } + + add_corruption_modifier = { MOD = county_corruption_arcane_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_demon MAGIC = disorder } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_fel_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_demon MAGIC = disorder } + } + } + + add_corruption_modifier = { MOD = county_corruption_fel_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_life MAGIC = life } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_life_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_life MAGIC = life } + } + } + + add_corruption_modifier = { MOD = county_corruption_life_modifier } + } + else_if = { + limit = { + trigger_if = { + limit = { + $ON_START$ = yes + } + scope:county = { + can_corrupt_at_game_start_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + trigger_else = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_death_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_undead MAGIC = death } + } + } + + add_corruption_modifier = { MOD = county_corruption_death_modifier } + + save_temporary_scope_value_as = { + name = take_county + value = no + } + + if = { + limit = { + $ON_START$ = no + NOT = { + holder = scope:councillor_liege + } + } + holder = { + raise_undead_by_basic_effect = { MASTER = scope:councillor_liege FROSTMOURNE = no } + } + } + } + + if = { + limit = { + $ON_START$ = no + } + + genocide_common_effect = { + OPINION = yes + MULT = 3 + MOD = minority_disapproves_of_genocide_population_opinion + TAKE_TITLE = scope:take_county + } + + set_county_culture = scope:councillor_liege.culture + set_county_faith = scope:councillor_liege.faith + } + + if = { + limit = { + has_variable = finished_genocide + } + remove_variable = finished_genocide + } + + scope:councillor_liege = { + add_character_flag = { + flag = no_ai_genocide + years = 1 + } + } + } + } +} + +cleanse_county_effect = { + scope:county ?= { + if = { + limit = { + OR = { + AND = { + has_variable = purge_population_current_progress + var:purge_population_current_progress >= marshal_purge_population_threshold + } + has_variable = finished_genocide + } + } + + remove_genocide_modifiers = yes + + genocide_culture_effect = { MULT = 2 MOD = genocided_my_culture_opinion } + genocide_faith_effect = { MULT = 2 MOD = genocided_my_faith_opinion } + genocide_common_effect = { + OPINION = no + MULT = 3 + MOD = minority_disapproves_of_genocide_population_opinion + TAKE_TITLE = yes + } + remove_corruption_modifiers = yes + + add_county_modifier = { + modifier = county_purged_modifier_3 + days = 1201 + } + + trigger_event = { + on_action = on_reduce_purge_modifier_on_action + days = 1200 + } + + # TODO: Should destroy random building, not sure if possible in CK3 + + if = { + limit = { + has_variable = finished_genocide + } + remove_variable = finished_genocide + } + + scope:councillor_liege = { + add_character_flag = { + flag = no_ai_genocide + years = 1 + } + } + } + } +} + +purge_population_effect = { + scope:county ?= { + if = { + limit = { + OR = { + AND = { + has_variable = purge_population_current_progress + var:purge_population_current_progress >= marshal_purge_population_threshold + } + has_variable = finished_genocide + } + } + + remove_genocide_modifiers = yes + + genocide_culture_effect = { MULT = 2 MOD = genocided_my_culture_opinion } + genocide_faith_effect = { MULT = 2 MOD = genocided_my_faith_opinion } + genocide_common_effect = { + OPINION = yes + MULT = 2 + MOD = minority_disapproves_of_genocide_population_opinion + TAKE_TITLE = no + } + + add_county_modifier = { + modifier = county_purged_modifier_3 + days = 1201 + } + + trigger_event = { + on_action = on_reduce_purge_modifier_on_action + days = 1200 + } + + # TODO: Should destroy random building, not sure if possible in CK3 + + if = { + limit = { + has_variable = finished_genocide + } + remove_variable = finished_genocide + } + + scope:councillor_liege = { + add_character_flag = { + flag = no_ai_genocide + years = 20 + } + } + } + } +} + +genocide_culture_effect = { + if = { + limit = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + + culture = { + save_scope_as = old_culture + change_cultural_acceptance = { + target = scope:councillor_liege.culture + value = { + value = -30 + multiply = $MULT$ + } + desc = cultural_acceptance_loss_purge_pupulation + } + custom_tooltip = { + text = $MOD$_desc + every_ruler = { + limit = { + NOT = { + target_is_liege_or_above = scope:councillor_liege + } + culture = scope:old_culture + NOT = { + this = scope:county.holder + } + } + add_opinion = { + target = scope:councillor_liege + modifier = $MOD$ + } + } + } + } + + set_variable = { + name = culture_genocided + value = scope:old_culture + } + + + set_county_culture = scope:councillor_liege.culture + } +} + +genocide_faith_effect = { + if = { + limit = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + + faith = { + save_scope_as = old_faith + + change_fervor = { + value = { + value = 5 + multiply = $MULT$ + } + desc = genoided_faith_fervor + } + + custom_tooltip = { + text = $MOD$_desc + every_faith_ruler = { + limit = { + NOT = { + target_is_liege_or_above = scope:councillor_liege + } + NOT = { + this = scope:county.holder + } + } + add_opinion = { + target = scope:councillor_liege + modifier = $MOD$ + } + } + } + } + + set_variable = { + name = faith_genocided + value = scope:old_faith + } + + if = { # Remove false conversion + limit = { + has_county_modifier = false_convert_modifier + } + + remove_county_modifier = false_convert_modifier + } + + if = { # Remove false conversion + limit = { + has_variable = false_convert + } + + remove_variable = false_convert + } + + set_county_faith = scope:councillor_liege.faith + } +} + +genocide_common_effect = { + scope:councillor_liege = { + if = { + limit = { + $OPINION$ = yes + any_vassal = { + has_vassal_stance = minority + } + } + custom_tooltip = $MOD$_desc + hidden_effect = { + every_vassal = { + limit = { + has_vassal_stance = minority + NOT = { + this = scope:county.holder + } + } + add_opinion = { + target = scope:councillor_liege + modifier = $MOD$ + } + } + } + } + + if = { + limit = { government_has_flag = government_dark_frenzy_from_conversions } + change_dark_frenzy_effect = { VALUE = dark_frenzy_from_convert_county } + } + } + + change_county_control = { + value = -30 + multiply = $MULT$ + } + change_development_level = { + value = -10 + multiply = $MULT$ + } + + holder = { + save_temporary_scope_as = old_holder + + if = { + limit = { + NOT = { + this = scope:councillor_liege + } + } + + add_opinion = { + target = scope:councillor_liege + modifier = ruler_disapproves_of_genocide_population_opinion + } + } + } + + if = { # Take the title you just genocided + limit = { + $TAKE_TITLE$ = yes + NOT = { + holder = scope:councillor_liege + } + NAND = { + holder.culture = scope:councillor_liege.culture + holder.faith = scope:councillor_liege.faith + } + } + + create_title_and_vassal_change = { + type = usurped + add_claim_on_loss = yes + save_scope_as = change + } + + change_title_holder = { + holder = scope:councillor_liege + change = scope:change + take_baronies = yes + } + + resolve_title_and_vassal_change = scope:change + + scope:old_holder = { # If this was their only title they're included in the genocide + if = { + limit = { + is_ruler = no + } + + override_death_killer_effect = { + death_reason = death_execution + killer = scope:councillor_liege + } + } + } + } +} + +genocide_spawn_champion_effect = { + create_character = { + location = scope:county.title_province + culture = $CULTURE$ + faith = $FAITH$ + dynasty = none + random_traits = no + random_traits_list = { + count = 1 + education_martial_prowess_2 = {} + education_martial_prowess_3 = {} + education_martial_prowess_4 = {} + } + gender_female_chance = { + if = { + limit = { $FAITH$ = { has_doctrine = doctrine_gender_male_dominated } } + add = 0 + } + else_if = { + limit = { $FAITH$ = { has_doctrine = doctrine_gender_female_dominated } } + add = 100 + } + else = { + add = 50 + } + } + martial = { 8 12 } + prowess = { + min_template_high_skill + max_template_high_skill + } + save_scope_as = champion + after_creation = { + if = { + limit = { + $GOOD$ = yes + } + random_list = { + 1 = { + add_trait = brave + } + 1 = { + add_trait = just + } + 1 = { + add_trait = gallant + } + } + random_list = { + 1 = { + add_trait = lustful + } + 1 = { + add_trait = chaste + } + 1 = { + add_trait = wrathful + } + 1 = { + add_trait = arrogant + } + 1 = { + add_trait = impatient + } + 1 = { + add_trait = deceitful + } + 1 = { + add_trait = ambitious + } + 1 = { + add_trait = stubborn + } + 1 = { + add_trait = fickle + } + 1 = { + add_trait = beauty_good_1 + } + } + } + else = { + + random_list = { + 1 = { + add_trait = wrathful + } + 1 = { + add_trait = arbitrary + } + 1 = { + add_trait = arrogant + } + } + random_list = { + 1 = { + add_trait = lustful + } + 1 = { + add_trait = impatient + } + 1 = { + add_trait = paranoid + } + 1 = { + add_trait = arrogant + } + 1 = { + add_trait = impatient + } + 1 = { + add_trait = deceitful + } + 1 = { + add_trait = sadistic + } + 1 = { + add_trait = stubborn + } + 1 = { + add_trait = fickle + } + 1 = { + add_trait = beauty_bad_1 + } + } + } + # Warcraft + trigger_race_giving_no_gene_effect = yes + } + } +} + +genocide_add_champion_being_trait_effect = { + save_temporary_scope_as = champion + scope:county = { + switch = { + trigger = has_county_modifier + } + + county_corruption_light_modifier = { scope:champion = { add_trait = being_light } } + county_corruption_void_modifier = { scope:champion = { add_trait = being_void } } + county_corruption_arcane_modifier = { scope:champion = { add_trait = being_order } } + county_corruption_fel_modifier = { scope:champion = { add_trait = being_demon } } + county_corruption_life_modifier = { scope:champion = { add_trait = being_life } } + county_corruption_death_modifier = { scope:champion = { add_trait = being_undead } } + } +} \ No newline at end of file diff --git a/common/scripted_effects/wc_war_effects.txt b/common/scripted_effects/wc_war_effects.txt index ec26f33d1d..3aa15e33d7 100644 --- a/common/scripted_effects/wc_war_effects.txt +++ b/common/scripted_effects/wc_war_effects.txt @@ -623,4 +623,320 @@ join_every_war_effect = { } } } +} + +add_genocide_cb_rewards = { + save_scope_value_as = { name = attacker_culture_reward_mult value = 0 } + save_scope_value_as = { name = attacker_faith_reward_mult value = 0 } + save_scope_value_as = { name = defender_culture_reward_mult value = 0 } + save_scope_value_as = { name = defender_faith_reward_mult value = 0 } + save_scope_value_as = { name = base_prestige value = $PRESTIGE_BASE_VALUE$ } + save_scope_value_as = { name = base_piety value = $PIETY_BASE_VALUE$ } + scope:defender = { + every_realm_county = { + limit = { + OR = { + AND = { + has_variable = culture_genocided + var:culture_genocided = scope:attacker.culture + } + + AND = { + has_variable = faith_genocided + var:faith_genocided = scope:attacker.faith + } + } + } + + if = { + limit = { + has_variable = culture_genocided + } + + save_scope_value_as = { + name = attacker_culture_reward_mult + value = { + value = scope:attacker_culture_reward_mult + if = { + limit = { + $OUTCOME$ = flag:win + } + add = 1 + } + if = { + limit = { + $OUTCOME$ = flag:white_peace + } + add = 0.5 + } + if = { + limit = { + $OUTCOME$ = flag:loss + } + add = -1 + } + } + } + save_scope_value_as = { + name = defender_culture_reward_mult + value = { + value = scope:defender_culture_reward_mult + if = { + limit = { + $OUTCOME$ = flag:win + } + add = -1 + } + if = { + limit = { + $OUTCOME$ = flag:loss + } + add = 1 + } + } + } + } + if = { + limit = { + has_variable = faith_genocided + } + + save_scope_value_as = { + name = attacker_faith_reward_mult + value = { + value = scope:attacker_faith_reward_mult + if = { + limit = { + $OUTCOME$ = flag:win + } + add = 1 + } + if = { + limit = { + $OUTCOME$ = flag:white_peace + } + add = 0.5 + } + if = { + limit = { + $OUTCOME$ = flag:loss + } + add = -1 + } + } + } + save_scope_value_as = { + name = defender_faith_reward_mult + value = { + value = scope:defender_faith_reward_mult + if = { + limit = { + $OUTCOME$ = flag:win + } + add = -1 + } + if = { + limit = { + $OUTCOME$ = flag:loss + } + add = 1 + } + } + } + } + + if = { + limit = { + $OUTCOME$ = flag:win + } + + change_title_holder = { + holder = scope:attacker + change = scope:change + take_baronies = yes + } + } + } + } + + scope:attacker = { + add_prestige = { + value = scope:base_prestige + multiply = scope:attacker_culture_reward_mult + } + + add_piety = { + value = scope:base_piety + multiply = scope:attacker_faith_reward_mult + } + } + + scope:defender = { + if = { + limit = { + NOT = { + scope:defender_culture_reward_mult = 0 + } + } + add_prestige = { + value = scope:base_prestige + multiply = scope:defender_culture_reward_mult + } + } + + if = { + limit = { + NOT = { + scope:defender_faith_reward_mult = 0 + } + } + add_piety = { + value = scope:base_piety + multiply = scope:defender_faith_reward_mult + } + } + } + + if = { + limit = { + $OUTCOME$ = flag:loss + } + + # Allies on both sides get full prestige value for helping in the war, based on their war participation. + modify_allies_of_participants_fame_values_genocide = { + WINNER = scope:defender + FAME_BASE = genocide_cb_participation_prestige + PIETY_BASE = genocide_cb_participation_piety + GIVE_FAITH_REWARDS = genocide_cb_can_avenge_faith + GIVE_CULTURE_REWARDS = genocide_cb_can_avenge_culture + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + } + else = { + # Allies on both sides get full prestige value for helping in the war, based on their war participation. + modify_allies_of_participants_fame_values_genocide = { + WINNER = scope:attacker + FAME_BASE = genocide_cb_participation_prestige + PIETY_BASE = genocide_cb_participation_piety + GIVE_FAITH_REWARDS = genocide_cb_can_avenge_faith + GIVE_CULTURE_REWARDS = genocide_cb_can_avenge_culture + WINNER_ALLY_FAME_SCALE = 1 + LOSER_ALLY_FAME_SCALE = 1 + } + } +} + +modify_allies_of_participants_fame_values_genocide = { + # Give the allies of both primary participants the appropriate type & amount of 'fame'. + + if = { + # Religious wars award Piety to participants. + limit = { + OR = { + $GIVE_FAITH_REWARDS$ = yes + #always = yes + } + } + if = { + # Award Piety to the victorious attacker's allies. + limit = { + $WINNER$ = scope:attacker + } + add_from_contribution_attackers = { + piety = { + value = $PIETY_BASE$ + multiply = $WINNER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + # Award Piety to the defeated defender's allies. + add_from_contribution_defenders = { + piety = { + value = $PIETY_BASE$ + multiply = $LOSER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + } + else = { + # Award Piety to the victorious defender's allies. + add_from_contribution_defenders = { + piety = { + value = $PIETY_BASE$ + multiply = $WINNER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + # Award Piety to the defeated attacker's allies. + add_from_contribution_attackers = { + piety = { + value = $PIETY_BASE$ + multiply = $LOSER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + } + } + if = { + limit = { + $GIVE_CULTURE_REWARDS$ = yes + } + # All other war types award Prestige to participants. + if = { + # Award Prestige to the victorious attacker's allies. + limit = { + $WINNER$ = scope:attacker + } + add_from_contribution_attackers = { + prestige = { + value = $FAME_BASE$ + multiply = $WINNER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + # Award Prestige to the defeated defender's allies. + add_from_contribution_defenders = { + prestige = { + value = $FAME_BASE$ + multiply = $LOSER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + } + else = { + # Award Prestige to the victorious defender's allies. + add_from_contribution_defenders = { + prestige = { + value = $FAME_BASE$ + multiply = $WINNER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + # Award Prestige to the defeated attacker's allies. + add_from_contribution_attackers = { + prestige = { + value = $FAME_BASE$ + multiply = $LOSER_ALLY_FAME_SCALE$ + } + opinion = { + modifier = contributed_in_war + } + } + } + } } \ No newline at end of file diff --git a/common/scripted_triggers/wc_being_triggers.txt b/common/scripted_triggers/wc_being_triggers.txt index ebe1367687..3493553369 100644 --- a/common/scripted_triggers/wc_being_triggers.txt +++ b/common/scripted_triggers/wc_being_triggers.txt @@ -8,6 +8,18 @@ has_trait = being_light } } +has_culture_being_trait_gfx_trigger = { + culture = { + OR = { + has_clothing_gfx = being_light_gfx + has_clothing_gfx = being_void_gfx + has_clothing_gfx = being_order_gfx + has_clothing_gfx = being_demon_gfx + has_clothing_gfx = being_life_gfx + has_clothing_gfx = being_undead_gfx + } + } +} valid_being_notification_target_trigger = { NOR = { this = scope:lost_character diff --git a/common/scripted_triggers/wc_casus_belli_triggers.txt b/common/scripted_triggers/wc_casus_belli_triggers.txt new file mode 100644 index 0000000000..5317722ff9 --- /dev/null +++ b/common/scripted_triggers/wc_casus_belli_triggers.txt @@ -0,0 +1,30 @@ +genocide_cb_can_avenge_culture = { + scope:defender = { + any_realm_county = { + trigger_if = { + limit = { + has_variable = culture_genocided + } + var:culture_genocided = scope:attacker.culture + } + trigger_else = { + always = no + } + } + } +} +genocide_cb_can_avenge_faith = { + scope:defender = { + any_realm_county = { + trigger_if = { + limit = { + has_variable = faith_genocided + } + var:faith_genocided = scope:attacker.faith + } + trigger_else = { + always = no + } + } + } +} \ No newline at end of file diff --git a/common/scripted_triggers/wc_genocide_triggers.txt b/common/scripted_triggers/wc_genocide_triggers.txt new file mode 100644 index 0000000000..ad60f89c23 --- /dev/null +++ b/common/scripted_triggers/wc_genocide_triggers.txt @@ -0,0 +1,602 @@ +# TODO: Infusion 2024, replace a lot of the corruption checks with infusion checks + +################################# +# Corruption # +################################# + +####################### +# Is corrupted # +####################### + +has_corruption_modifier_trigger = { + OR = { + has_county_modifier = county_corruption_light_modifier + has_county_modifier = county_corruption_void_modifier + has_county_modifier = county_corruption_arcane_modifier + has_county_modifier = county_corruption_fel_modifier + has_county_modifier = county_corruption_life_modifier + has_county_modifier = county_corruption_death_modifier + } +} + +# Check if province is corrupted with the modifier beneficial to the liege, with specific magic type +has_beneficial_corruption_this_province_specific_trigger = { + has_county_modifier = $MOD$ + + scope:councillor_liege = { + OR = { + can_corrupt_specific_trigger = { BEING = $BEING$ MAGIC = $MAGIC$ } + faith = { + OR = { + has_doctrine = doctrine_$MAGIC$_magic_approved + has_doctrine = doctrine_$MAGIC$_magic_accepted + } + } + } + NOT = { + has_trait = $BEING_OPPOSITE$ + } + } + trigger_if = { + limit = { scope:councillor_liege = { is_independent_ruler = no } } + scope:councillor_liege.top_liege = { + OR = { + can_corrupt_specific_trigger = { BEING = $BEING$ MAGIC = $MAGIC$ } + faith = { + OR = { + has_doctrine = doctrine_$MAGIC$_magic_approved + has_doctrine = doctrine_$MAGIC$_magic_accepted + } + } + } + NOT = { + has_trait = $BEING_OPPOSITE$ + } + } + } +} + +# Check if province is corrupted with the modifier beneficial to the liege, with any magic type +has_beneficial_corruption_this_province_trigger = { + OR = { + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_light BEING_OPPOSITE = being_void MAGIC = light MOD = county_corruption_light_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_void BEING_OPPOSITE = being_light MAGIC = shadow MOD = county_corruption_void_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_order BEING_OPPOSITE = being_demon MAGIC = order MOD = county_corruption_arcane_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_demon BEING_OPPOSITE = being_order MAGIC = disorder MOD = county_corruption_fel_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_life BEING_OPPOSITE = being_undead MAGIC = life MOD = county_corruption_life_modifier } + has_beneficial_corruption_this_province_specific_trigger = { BEING = being_undead BEING_OPPOSITE = being_life MAGIC = death MOD = county_corruption_death_modifier } + } +} + +has_same_corruption_trigger = { + trigger_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_light_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_light_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_void_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_void_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_arcane_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_arcane_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_fel_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_fel_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_life_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_life_modifier + } + } + trigger_else_if = { + limit = { + $COUNTY_1$ = { + has_county_modifier = county_corruption_death_modifier + } + } + $COUNTY_2$ = { + has_county_modifier = county_corruption_death_modifier + } + } + trigger_else = { + always = no + } +} + +####################### +# Can be corrupted # +####################### + +# Check if the character is allowed the Corrupt action instead of Purge +can_corrupt_trigger = { + OR = { + has_being_trait_trigger = yes + has_culture_being_trait_gfx_trigger = yes + AND = { + evil_public_religion_trigger = yes + faith = { + OR = { + has_doctrine = doctrine_light_magic_approved + has_doctrine = doctrine_shadow_magic_approved + has_doctrine = doctrine_order_magic_approved + has_doctrine = doctrine_disorder_magic_approved + has_doctrine = doctrine_life_magic_approved + has_doctrine = doctrine_death_magic_approved + } + } + } + } +} + +# Check if character can corrupt a specific magic type +can_corrupt_specific_trigger = { + OR = { + has_trait = $BEING$ + culture = { + has_clothing_gfx = $BEING$_gfx + } + AND = { + evil_public_religion_trigger = yes + faith = { + has_doctrine = doctrine_$MAGIC$_magic_approved + } + } + } +} + +can_corrupt_at_game_start_specific_trigger = { + OR = { + culture = { + has_clothing_gfx = $BEING$_gfx + } + AND = { + evil_public_religion_trigger = yes + faith = { + has_doctrine = doctrine_$MAGIC$_magic_approved + } + } + } +} + +# This is very clunky, but also the only way to get the tooltip to work properly +can_corrupt_this_province_valid_trigger = { + trigger_if = { + limit = { + OR = { + NOT = { has_county_modifier = $MOD$ } + NOT = { culture = scope:councillor_liege.culture } + NOT = { faith = scope:councillor_liege.faith } + } + } + always = yes + } + trigger_else = { + custom_tooltip = { + text = COUNTY_IS_YOUR_CULTURE + always = no + } + custom_tooltip = { + text = COUNTY_IS_YOUR_FAITH + always = no + } + custom_tooltip = { + text = COUNTY_ALREADY_CORRUPTED + always = no + } + } +} + +# Check if the liege will approve corruption, with a specific magic type +can_corrupt_this_province_liege_trigger = { + trigger_if = { + limit = { scope:councillor_liege = { is_independent_ruler = no } } + custom_tooltip = { + text = genocide_liege_disapproves + scope:councillor_liege.top_liege = { + can_corrupt_specific_trigger = { BEING = $BEING$ MAGIC = $MAGIC$ } + } + } + } +} + +# Check if the Corrupt task can be used on a county, with a any magic type +allow_corrupt_this_province_trigger = { + trigger_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_light_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_light MAGIC = light } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_void_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_void MAGIC = shadow } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_arcane_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_order MAGIC = order } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_fel_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_demon MAGIC = disorder } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_life_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_life MAGIC = life } + } + trigger_else_if = { + limit = { + scope:councillor_liege = { + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + can_corrupt_this_province_valid_trigger = { MOD = county_corruption_death_modifier } + can_corrupt_this_province_liege_trigger = { BEING = being_undead MAGIC = death } + } + trigger_else = { + always = no + } +} + +################################# +# Corruption modifier scale # +################################# + +corruption_scale_specific_trigger = { + var:corruption_type ?= flag:$MOD$ + holder = { + trigger_if = { + limit = { + $IS_EXTREME$ = yes + } + NOT = { + has_trait = $BEING_OPPOSITE$ + } + } + OR = { + trigger_if = { + limit = { + $IS_EXTREME$ = yes + } + OR = { + has_trait = $BEING$ + culture = { + has_clothing_gfx = $BEING$_gfx + } + } + } + faith = { + has_doctrine = doctrine_$MAGIC$_magic_$MAGIC_LEVEL$ + } + } + } +} + +corruption_scale_extreme_pos_trigger = { + OR = { + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_light BEING_OPPOSITE = being_void MAGIC = light MAGIC_LEVEL = approved MOD = county_corruption_light_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_void BEING_OPPOSITE = being_light MAGIC = shadow MAGIC_LEVEL = approved MOD = county_corruption_void_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_order BEING_OPPOSITE = being_demon MAGIC = order MAGIC_LEVEL = approved MOD = county_corruption_arcane_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_demon BEING_OPPOSITE = being_order MAGIC = disorder MAGIC_LEVEL = approved MOD = county_corruption_fel_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_life BEING_OPPOSITE = being_undead MAGIC = life MAGIC_LEVEL = approved MOD = county_corruption_life_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_undead BEING_OPPOSITE = being_life MAGIC = death MAGIC_LEVEL = approved MOD = county_corruption_death_modifier } + } +} + +corruption_scale_mild_pos_trigger = { + OR = { + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_light BEING_OPPOSITE = being_void MAGIC = light MAGIC_LEVEL = accepted MOD = county_corruption_light_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_void BEING_OPPOSITE = being_light MAGIC = shadow MAGIC_LEVEL = accepted MOD = county_corruption_void_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_order BEING_OPPOSITE = being_demon MAGIC = order MAGIC_LEVEL = accepted MOD = county_corruption_arcane_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_demon BEING_OPPOSITE = being_order MAGIC = disorder MAGIC_LEVEL = accepted MOD = county_corruption_fel_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_life BEING_OPPOSITE = being_undead MAGIC = life MAGIC_LEVEL = accepted MOD = county_corruption_life_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_undead BEING_OPPOSITE = being_life MAGIC = death MAGIC_LEVEL = accepted MOD = county_corruption_death_modifier } + } +} + +corruption_scale_extreme_neg_trigger = { + OR = { + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_void BEING_OPPOSITE = being_light MAGIC = light MAGIC_LEVEL = crime MOD = county_corruption_light_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_light BEING_OPPOSITE = being_void MAGIC = shadow MAGIC_LEVEL = crime MOD = county_corruption_void_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_demon BEING_OPPOSITE = being_order MAGIC = order MAGIC_LEVEL = crime MOD = county_corruption_arcane_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_order BEING_OPPOSITE = being_demon MAGIC = disorder MAGIC_LEVEL = crime MOD = county_corruption_fel_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_undead BEING_OPPOSITE = being_life MAGIC = life MAGIC_LEVEL = crime MOD = county_corruption_life_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = yes BEING = being_life BEING_OPPOSITE = being_undead MAGIC = death MAGIC_LEVEL = crime MOD = county_corruption_death_modifier } + } +} + +corruption_scale_mild_neg_trigger = { + OR = { + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_void BEING_OPPOSITE = being_light MAGIC = light MAGIC_LEVEL = shunned MOD = county_corruption_light_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_light BEING_OPPOSITE = being_void MAGIC = shadow MAGIC_LEVEL = shunned MOD = county_corruption_void_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_demon BEING_OPPOSITE = being_order MAGIC = order MAGIC_LEVEL = shunned MOD = county_corruption_arcane_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_order BEING_OPPOSITE = being_demon MAGIC = disorder MAGIC_LEVEL = shunned MOD = county_corruption_fel_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_undead BEING_OPPOSITE = being_life MAGIC = life MAGIC_LEVEL = shunned MOD = county_corruption_life_modifier } + corruption_scale_specific_trigger = { IS_EXTREME = no BEING = being_life BEING_OPPOSITE = being_undead MAGIC = death MAGIC_LEVEL = shunned MOD = county_corruption_death_modifier } + } +} + +################################# +# Cleanse # +################################# + +allow_cleanse_this_province_trigger = { + has_corruption_modifier_trigger = yes + NOT = { + has_beneficial_corruption_this_province_trigger = yes + } +} + +################################# +# Purge # +################################# + +# Monster cultures can genocide own heritage +monster_culture_trigger = { + OR = { + culture = culture:scourge + culture = culture:naga + culture = culture:satyr + culture = culture:faldorei + } +} + +# Can this character genocide their own heritage +can_genocide_own_culture_group_trigger = { + OR = { + monster_culture_trigger = yes + culture = { + has_cultural_pillar = heritage_mogu + } + $LIEGE$ = { + OR = { + monster_culture_trigger = yes + culture = { + has_cultural_pillar = heritage_mogu + } + } + } + } +} + +# Can this character genocide their own religion +can_genocide_own_religion_trigger = { + always = no + OR = { + $LIEGE$ = { + + } + } +} + +# Check if genocide should be allowed because they are evil +can_genocide_evil_trigger = { + OR = { + is_aggressive_trigger = yes + $LIEGE$ = { is_aggressive_trigger = yes } + evil_public_religion_trigger = yes + $LIEGE$ = { evil_public_religion_trigger = yes } + } +} + +has_faith_hostility_trigger = { + faith = { + faith_hostility_level = { + target = $LIEGE$.faith + value >= faith_$LEVEL$_level + } + } +} + +allow_character_genocide_this_province_culture_trigger = { + # These cultures can be genocided by their own group + OR = { + trigger_if = { + limit = { + can_genocide_own_culture_group_trigger = { LIEGE = $CHARACTER$ } + } + NOT = { culture = $CHARACTER$.culture } + } + trigger_else = { + NOT = { culture = { has_same_culture_heritage = $CHARACTER$.culture } } + } + + AND = { + NOT = { culture = $CHARACTER$.culture } + can_genocide_evil_trigger = { LIEGE = $CHARACTER$ } + } + } +} + +allow_genocide_this_province_parent_culture_trigger = { + trigger_if = { # AI shouldn't genocide parent/child cultures + limit = { + scope:councillor_liege = { + is_ai = yes + } + OR = { + scope:councillor_liege.culture = { + OR = { + is_hybrid_culture = yes + is_divergent_culture = yes + } + } + culture = { + OR = { + is_hybrid_culture = yes + is_divergent_culture = yes + } + } + } + } + culture = { + save_temporary_scope_as = culture_check + NOR = { + scope:councillor_liege.culture = { + any_parent_culture = { + this = scope:culture_check + } + } + any_parent_culture = { + this = scope:councillor_liege.culture + } + } + } + } +} + +allow_genocide_this_province_culture_trigger = { + allow_character_genocide_this_province_culture_trigger = { CHARACTER = $CHARACTER$ } + trigger_if = { # If the character is not independent, make sure their liege would approve + limit = { scope:councillor_liege = { is_independent_ruler = no } } + allow_character_genocide_this_province_culture_trigger = { CHARACTER = $CHARACTER$.top_liege } + } +} + +allow_character_genocide_this_province_religion_trigger = { + OR = { + # These religions can be genocided by their own group + trigger_if = { + limit = { + can_genocide_own_religion_trigger = { LIEGE = $CHARACTER$ } + } + NOT = { faith = $CHARACTER$.faith } + has_faith_hostility_trigger = { LIEGE = $CHARACTER$ LEVEL = astray } + } + trigger_else = { + NOT = { religion = $CHARACTER$.religion } + has_faith_hostility_trigger = { LIEGE = $CHARACTER$ LEVEL = hostile } + } + + AND = { + NOT = { faith = $CHARACTER$.faith } + can_genocide_evil_trigger = { LIEGE = $CHARACTER$ } + } + } +} + +allow_genocide_this_province_religion_trigger = { + allow_character_genocide_this_province_religion_trigger = { CHARACTER = $CHARACTER$ } + trigger_if = { # If the character is not independent, make sure their liege would approve + limit = { scope:councillor_liege = { is_independent_ruler = no } } + allow_character_genocide_this_province_religion_trigger = { CHARACTER = $CHARACTER$.top_liege } + } +} + +# This is the dumbest shit I've ever created +# Can't use OR = {} because the tooltip will only display triggers one level deep, so I came up with this shit instead +# Don't crucify me please +allow_genocide_this_province_trigger = { + trigger_if = { + limit = { + scope:councillor_liege = { + is_ai = yes + } + } + + NOT = { + scope:councillor_liege = { # AI should never genocide if they can cleanse first + any_sub_realm_county = { + allow_cleanse_this_province_trigger = yes + } + } + } + } + trigger_if = { + limit = { + OR = { + AND = { + allow_character_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + NOT = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + NOT = { + allow_character_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege.top_liege } + } + } + AND = { + NOT = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + allow_character_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + NOT = { + allow_character_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege.top_liege } + } + } + } + } + + custom_tooltip = { + text = genocide_liege_disapproves + always = no + } + } + trigger_else_if = { + limit = { + NAND = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + } + custom_tooltip = { + text = genocide_invalid_culture_faith + always = no + } + } + trigger_else = { + always = yes + } +} \ No newline at end of file diff --git a/common/scripted_triggers/wc_religious_triggers.txt b/common/scripted_triggers/wc_religious_triggers.txt index 81ebbfef40..8dcbdce58c 100644 --- a/common/scripted_triggers/wc_religious_triggers.txt +++ b/common/scripted_triggers/wc_religious_triggers.txt @@ -392,7 +392,9 @@ evil_public_religion_trigger = { } scope:faith = { - has_doctrine = doctrine_pluralism_dark + OR = { + has_doctrine = doctrine_pluralism_dark + } } } diff --git a/events/councillor_task_events/wc_genocide_task_events.txt b/events/councillor_task_events/wc_genocide_task_events.txt new file mode 100644 index 0000000000..7a2d369cbf --- /dev/null +++ b/events/councillor_task_events/wc_genocide_task_events.txt @@ -0,0 +1,1909 @@ +namespace = genocide_task + +genocide_task.0001 = { + type = character_event + title = genocide_task.0001.t + desc = genocide_task.0001.desc + theme = death + left_portrait = { + character = scope:councillor_liege + animation = personality_callous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_corruption_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + scope:county = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + scope:county = { + every_neighboring_county = { + limit = { + this.holder.top_liege = scope:county.holder.top_liege + } + + add_county_modifier = { + modifier = corruption_disease_modifier + days = 100 + } + } + } + } + + option = { + name = genocide_task.0001.a + + stress_impact = { + zealous = major_dread_loss + sadistic = major_dread_loss + arbitrary = major_dread_loss + callous = major_dread_loss + + forgiving = major_stress_impact_gain + just = major_stress_impact_gain + generous = major_stress_impact_gain + compassionate = major_stress_impact_gain + } + + ai_chance = { + base = 50 + } + } +} + +genocide_task.0002 = { + type = character_event + title = genocide_task.0002.t + desc = genocide_task.0002.desc + theme = martial + override_background = { reference = burning_building } + left_portrait = { + character = scope:councillor + animation = worry + } + + right_portrait = { + character = scope:councillor_liege + animation = personality_rational + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_corruption_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial <= high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + stress_impact = { + paranoid = minor_stress_impact_gain + } + + scope:county = { + add_county_modifier = { + modifier = genocide_marauding_forces_modifier + days = 100 + } + + every_neighboring_county = { + add_county_modifier = { + modifier = genocide_marauding_forces_modifier + days = 100 + } + } + + culture = { + change_cultural_acceptance = { + target = scope:councillor_liege.culture + value = -5 + desc = genocide_task.0002.accpetance + } + } + } + } + + option = { + name = genocide_task.0002.a + + add_dread = 25 + add_gold = 25 + + stress_impact = { + forgiving = 25 + just = 25 + generous = 25 + compassionate = 25 + sadistic = -25 + arbitrary = -25 + callous = -25 + wrathful = -25 + vengeful = -25 + } + + scope:county = { + + remove_county_modifier = genocide_marauding_forces_modifier + add_county_modifier = { + modifier = genocide_purged_marauders_modifier + days = 100 + } + + every_neighboring_county = { + remove_county_modifier = genocide_marauding_forces_modifier + add_county_modifier = { + modifier = genocide_purged_marauders_modifier + days = 100 + } + } + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = -1.0 + } + } + } + + option = { + name = genocide_task.0002.b + + add_dread = -25 + + stress_impact = { + paranoid = minor_stress_impact_gain + ambitious = minor_stress_impact_gain + wrathful = minor_stress_impact_gain + vengeful = minor_stress_impact_gain + } + + ai_chance = { + base = 25 + + ai_value_modifier = { + ai_compassion = 1.0 + } + } + } +} + +genocide_task.0101 = { + type = character_event + title = genocide_task.0101.t + desc = genocide_task.0101.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = anger + } + + lower_left_portrait = { + character = scope:councillor + } + + right_portrait = { + character = scope:champion + animation = aggressive_spear + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_cleansing_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + if = { + limit = { + scope:county = { + OR = { + has_county_modifier = county_corruption_light_modifier + has_county_modifier = county_corruption_arcane_modifier + has_county_modifier = county_corruption_life_modifier + } + } + } + genocide_spawn_champion_effect = { CULTURE = scope:county.culture FAITH = scope:county.faith GOOD = yes } + } + else = { + genocide_spawn_champion_effect = { CULTURE = scope:county.culture FAITH = scope:county.faith GOOD = no } + } + + scope:champion = { + if = { + limit = { + has_being_trait_trigger = no + } + + genocide_add_champion_being_trait_effect = yes + } + } + } + + option = { + name = genocide_task.0101.a + duel = { + skill = prowess + target = scope:champion + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + send_interface_toast = { + add_prestige = minor_prestige_gain + scope:champion = { + override_death_killer_effect = { death_reason = death_duel killer = scope:councillor_liege } + } + title = travel_events.2200.b.success + left_icon = scope:champion + } + } + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + add_prestige = medium_prestige_loss + random_list = { + 80 = { + root= { + send_interface_toast = { + current_travel_plan = { + every_entourage_character = { + custom = every_entourage_tt + add_opinion = { + target = root + modifier = respect_opinion + opinion = -20 + } + } + } + + + title = travel_events.2200.b.failure + left_icon = scope:champion + } + } + } + 20 = { + root = { + send_interface_toast = { + title = travel_events.2200.b.failure + left_icon = scope:champion + increase_wounds_no_death_effect = { REASON = fight } + } + } + } + } + } + } + + stress_impact = { + brave = minor_stress_impact_loss + wrathful = medium_stress_impact_loss + craven = medium_stress_impact_gain + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_boldness = 1.0 + } + } + } + + option = { + name = genocide_task.0101.b + scope:councillor = { + duel = { + skill = prowess + target = scope:champion + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + send_interface_toast = { + add_prestige = minor_prestige_gain + scope:champion = { + override_death_killer_effect = { death_reason = death_duel killer = scope:councillor } + } + title = travel_events.2200.b.success + left_icon = scope:champion + } + } + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + add_prestige = medium_prestige_loss + random_list = { + 80 = { + root= { + send_interface_toast = { + current_travel_plan = { + every_entourage_character = { + custom = every_entourage_tt + add_opinion = { + target = root + modifier = respect_opinion + opinion = -20 + } + } + } + + + title = travel_events.2200.b.failure + left_icon = scope:champion + } + } + } + 20 = { + root = { + send_interface_toast = { + title = travel_events.2200.b.failure + left_icon = scope:champion + increase_wounds_no_death_effect = { REASON = fight } + } + } + } + } + } + } + } + + stress_impact = { + brave = minor_stress_impact_gain + wrathful = medium_stress_impact_gain + craven = medium_stress_impact_loss + } + + ai_chance = { + base = 20 + + ai_value_modifier = { + ai_boldness = -1.0 + } + } + } +} + +genocide_task.0102 = { + type = character_event + title = genocide_task.0102.t + desc = genocide_task.0102.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = personality_zealous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_cleansing_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + OR = { + AND = { + OR = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + scope:councillor = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + } + scope:county = { + any_neighboring_county = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + } + } + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + } + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0302.a + + trigger = { + exists = capital_county + OR = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + scope:councillor = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + } + scope:county = { + any_neighboring_county = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + } + } + + add_piety = -100 + + scope:county = { + add_county_modifier = genocide_controlled_energy_modifier + every_neighboring_county = { + limit = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + + add_county_modifier = genocide_controlled_energy_modifier + } + } + + ai_chance = { + base = 99 + } + + stress_impact = { + compassionate = minor_stress_impact_loss + arrogant = minor_stress_impact_gain + sadistic = medium_stress_impact_gain + } + } + + option = { + name = genocide_task.0302.b + + trigger = { + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + } + } + } + + add_prestige = -100 + + scope:county = { + every_neighboring_county = { + save_temporary_scope_as = temp_county + if = { + limit = { + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + + add_to_list = counties + } + every_neighboring_county = { + limit = { + NOT = { + this = scope:county + } + has_corruption_modifier_trigger = yes + has_beneficial_corruption_this_province_trigger = no + } + + add_to_list = counties + } + } + } + + every_in_list = { + list = counties + + add_county_modifier = { + modifier = genocide_wild_energy_modifier + days = 100 + } + } + + stress_impact = { + compassionate = minor_stress_impact_gain + arrogant = minor_stress_impact_loss + sadistic = medium_stress_impact_loss + } + + ai_chance = { + base = 1 + } + } +} + +genocide_task.0201 = { # Re-flavored version of genocide_task.0001 for purge instead of corrupt + type = character_event + title = genocide_task.0201.t + desc = genocide_task.0201.desc + theme = death + left_portrait = { + character = scope:councillor_liege + animation = personality_callous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_genocide_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + scope:county = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + scope:county = { + every_neighboring_county = { + limit = { + this.holder.top_liege = scope:county.holder.top_liege + } + + add_county_modifier = { + modifier = genocidal_unrest_modifier + days = 100 + } + } + } + } + + option = { + name = genocide_task.0201.a + + stress_impact = { + zealous = major_stress_impact_loss + sadistic = major_stress_impact_loss + arbitrary = major_stress_impact_loss + callous = major_stress_impact_loss + + forgiving = major_stress_impact_gain + just = major_stress_impact_gain + generous = major_stress_impact_gain + compassionate = major_stress_impact_gain + } + + ai_chance = { + base = 50 + } + } +} + +genocide_task.0202 = { + type = character_event + title = genocide_task.0202.t + desc = genocide_task.0202.desc + theme = death + left_portrait = { + character = scope:councillor_liege + animation = anger + } + + right_portrait = { + character = scope:councillor + animation = shame + } + + lower_left_portrait = scope:target_ruler + + trigger = { + scope:county = { + has_county_modifier = ongoing_genocide_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial < high_skill_rating + } + any_neighboring_and_across_water_top_liege_realm_owner = { + any_realm_border_county = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + title_province = { + squared_distance = { + target = scope:county + value < squared_distance_medium + } + } + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = -0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + random_neighboring_and_across_water_top_liege_realm_owner = { + limit = { + any_realm_border_county = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + title_province = { + squared_distance = { + target = scope:county + value < squared_distance_medium + } + } + } + } + random_realm_border_county = { + limit = { + any_neighboring_county = { + holder.top_liege = scope:county.holder.top_liege + } + title_province = { + squared_distance = { + target = scope:county + value < squared_distance_medium + } + } + } + + save_scope_as = target_county + } + } + + every_realm_county = { + limit = { + trigger_if = { + limit = { + allow_genocide_this_province_culture_trigger = { CHARACTER = scope:councillor_liege } + } + + culture = scope:county.culture + } + + trigger_if = { + limit = { + allow_genocide_this_province_religion_trigger = { CHARACTER = scope:councillor_liege } + } + + faith = scope:county.faith + } + } + + add_county_modifier = { + modifier = genocide_emigration_modifier + days = 100 + } + } + + scope:target_county = { + add_county_modifier = { + modifier = genocide_immigration_modifier + days = 100 + } + + holder.top_liege = { + save_scope_as = target_ruler + } + } + + add_unpressed_claim = scope:target_county + + if = { + limit = { + can_set_relation_potential_rival_trigger = { + CHARACTER = scope:target_ruler + } + } + set_relation_potential_rival = scope:target_ruler + } + + stress_impact = { + paranoid = major_stress_impact_gain + arrogant = minor_stress_impact_gain + trusting = minor_stress_impact_loss + humble = minor_stress_impact_loss + } + } + + option = { + name = genocide_task.0202.a + + ai_chance = { + base = 50 + } + } +} + +genocide_task.0301 = { + type = character_event + title = genocide_task.0301.t + desc = genocide_task.0301.desc + theme = martial + override_background = { reference = burning_building } + left_portrait = { + character = cp:councillor_court_chaplain + animation = personality_zealous + } + + right_portrait = { + character = scope:councillor_liege + animation = throne_room_kneel_1 + } + + lower_center_portrait = { + character = scope:councillor + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_corruption_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + cp:councillor_court_chaplain ?= { + learning > mediocre_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.15 + offset = inverted_high_skill_rating + } + compare_modifier = { + target = cp:councillor_court_chaplain + value = learning + multiplier = 0.05 + offset = inverted_mediocre_skill_rating + } + } + + immediate = { + cp:councillor_court_chaplain = { + save_scope_as = cp_court_chaplain + } + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0301.a + + add_dread = major_dread_gain + + stress_impact = { + forgiving = major_stress_impact_gain + just = major_stress_impact_gain + generous = major_stress_impact_gain + compassionate = major_stress_impact_gain + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = -1.0 + } + } + } + + option = { + name = genocide_task.0301.b + + add_piety = 100 + + stress_impact = { + zealous = minor_stress_impact_gain + sadistic = minor_stress_impact_gain + callous = minor_stress_impact_gain + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_zeal = 1.0 + } + } + } + + option = { + name = genocide_task.0301.c + + trigger = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + + add_dread = medium_dread_gain + add_piety = minor_piety_value + add_character_modifier = { + modifier = harmonize_with_force_modifier + days = 100 + } # TODO: Infusion 2024, add infusion + + ai_chance = { + base = 250 + } + } +} + +genocide_task.0302 = { + type = character_event + title = genocide_task.0302.t + desc = genocide_task.0302.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = personality_zealous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_corruption_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + OR = { + OR = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + scope:councillor = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + } + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + has_beneficial_corruption_this_province_trigger = yes + } + } + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0302.a + + trigger = { + exists = capital_county + OR = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + scope:councillor = { + OR = { + has_trait = magic_good + has_trait = magic_good_noninheritable + } + } + } + } + + add_piety = 100 + + capital_county = { + add_county_modifier = genocide_channelled_energy_modifier + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_greed = 1.0 + } + } + } + + option = { + name = genocide_task.0302.b + + trigger = { + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + has_beneficial_corruption_this_province_trigger = yes + } + } + } + } + + add_prestige = 100 + + scope:county = { + every_neighboring_county = { + save_temporary_scope_as = temp_county + if = { + limit = { + has_beneficial_corruption_this_province_trigger = yes + } + + add_to_list = counties + } + every_neighboring_county = { + limit = { + NOT = { + this = scope:county + } + has_beneficial_corruption_this_province_trigger = yes + } + + add_to_list = counties + } + } + } + + every_in_list = { + list = counties + + add_county_modifier = { + modifier = genocide_dispersed_energy_modifier + days = 100 + } + } + + ai_chance = { + base = 50 + } + } +} + +genocide_task.0402 = { + type = character_event + title = genocide_task.0402.t + desc = genocide_task.0402.desc + theme = martial + override_background = { reference = burning_building } + + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + + right_portrait = { + character = scope:councillor + animation = marshal + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_cleansing_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0402.a + + add_dread = major_dread_gain + + stress_impact = { + forgiving = major_stress_impact_gain + just = major_stress_impact_gain + generous = major_stress_impact_gain + compassionate = major_stress_impact_gain + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = -1.0 + } + } + } + + option = { + name = genocide_task.0402.b + + add_prestige = 100 + + stress_impact = { + zealous = minor_stress_impact_gain + sadistic = minor_stress_impact_gain + callous = minor_stress_impact_gain + just = minor_stress_impact_loss + generous = minor_stress_impact_loss + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = 1.0 + } + } + } + + option = { + name = genocide_task.0402.c + skill = learning + + trigger = { + learning >= 20 + } + + stress_impact = { + zealous = minor_stress_impact_loss + sadistic = minor_stress_impact_loss + forgiving = medium_stress_impact_gain + just = minor_stress_impact_gain + generous = medium_stress_impact_gain + compassionate = major_stress_impact_gain + } + + add_dread = medium_dread_gain + add_piety = minor_prestige_value + add_character_modifier = { + modifier = sacrificed_cleansing_targets_modifier + days = 100 + } + + ai_chance = { + base = 250 + } + } +} + +genocide_task.0401 = { + type = character_event + title = genocide_task.0401.t + desc = genocide_task.0401.desc + theme = martial + override_background = { reference = burning_building } + left_portrait = { + character = scope:councillor_liege + animation = ecstasy + } + + right_portrait = { + character = scope:councillor + animation = marshal + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_cleansing_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0401.a + + scope:county = { + custom_tooltip = genocide_task.0401.a.progress + change_variable = { + name = purge_population_current_progress + add = 4 + } + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_zeal = 1.0 + } + } + } + + option = { + name = genocide_task.0401.b + + spawn_army = { + name = genocide_task.0401.army_name + levies = { + scope:county = { + add = { + value = total_county_levies + divide = 10 + } + } + if = { + limit = { + highest_held_title_tier = tier_county + } + add = 50 + } + else_if = { + limit = { + highest_held_title_tier = tier_duchy + } + + add = 100 + } + else_if = { + limit = { + highest_held_title_tier = tier_kingdom + } + + add = 250 + } + else_if = { + limit = { + highest_held_title_tier = tier_empire + } + + add = 500 + } + } + location = scope:county.title_province + inheritable = no + uses_supply = yes + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_greed = 1.0 + } + } + } +} + +genocide_task.0501 = { + type = character_event + title = genocide_task.0501.t + desc = genocide_task.0501.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + + lower_left_portrait = { + character = scope:councillor + } + + right_portrait = { + character = scope:champion + animation = admiration + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_genocide_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + + genocide_spawn_champion_effect = { CULTURE = scope:councillor_liege.culture FAITH = scope:councillor_liege.faith GOOD = yes } + } + + option = { + name = genocide_task.0501.a + + add_prestige = 100 + add_courtier = scope:champion + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_greed = 1.0 + } + } + } + + option = { + name = genocide_task.0501.b + + add_piety = 50 + add_character_modifier = { + modifier = genocide_local_champion_modifier + days = 100 + } + scope:champion = { + silent_disappearance_effect = yes + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_zeal = 1.0 + } + } + } +} + +genocide_task.0502 = { + type = character_event + title = genocide_task.0502.t + desc = genocide_task.0502.desc + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = personality_zealous + } + + trigger = { + scope:county = { + has_county_modifier = ongoing_genocide_modifier + } + exists = cp:councillor_marshal + scope:councillor = cp:councillor_marshal + scope:councillor ?= { + martial >= high_skill_rating + } + OR = { + OR = { + has_trait = administrator + scope:councillor = { + has_trait = administrator + } + } + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + OR = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + } + } + } + + weight_multiplier = { + base = 1 + compare_modifier = { + target = scope:councillor + value = martial + multiplier = 0.2 + offset = inverted_high_skill_rating + } + } + + immediate = { + set_variable = { + name = had_genocide_task_side_effect + value = yes + days = genocide_task_side_effect_cooldown + } + } + + option = { + name = genocide_task.0502.a + + trigger = { + exists = capital_county + OR = { + has_trait = administrator + scope:councillor = { + has_trait = administrator + } + } + } + + add_gold = 50 + + capital_county = { + add_county_modifier = genocide_focused_resources_modifier + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_greed = 1.0 + } + } + } + + option = { + name = genocide_task.0502.b + + trigger = { + scope:county = { + any_neighboring_county = { + any_neighboring_county = { + OR = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + } + } + + add_prestige = 100 + + scope:county = { + every_neighboring_county = { + save_temporary_scope_as = temp_county + if = { + limit = { + OR = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + + add_to_list = counties + } + every_neighboring_county = { + limit = { + NOT = { + this = scope:county + } + OR = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + + add_to_list = counties + } + } + } + + every_in_list = { + list = counties + + add_county_modifier = { + modifier = genocide_dispersed_resources_modifier + days = 100 + } + } + + ai_chance = { + base = 50 + + ai_value_modifier = { + ai_compassion = 1.0 + } + } + } +} + +genocide_task.2001 = { + type = character_event + title = genocide_task.2001.t + desc = { + first_valid = { + triggered_desc = { + trigger = { + OR = { + can_corrupt_specific_trigger = { BEING = being_void MAGIC = shadow } + can_corrupt_specific_trigger = { BEING = being_demon MAGIC = disorder } + can_corrupt_specific_trigger = { BEING = being_undead MAGIC = death } + } + } + desc = genocide_task.2001.desc.dark + } + triggered_desc = { + trigger = { + can_corrupt_specific_trigger = { BEING = being_light MAGIC = light } + } + desc = genocide_task.2001.desc.light + } + triggered_desc = { + trigger = { + can_corrupt_specific_trigger = { BEING = being_life MAGIC = life } + } + desc = genocide_task.2001.desc.nature + } + triggered_desc = { + trigger = { + can_corrupt_specific_trigger = { BEING = being_order MAGIC = order } + } + desc = genocide_task.2001.desc.arcane + } + } + } + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + right_portrait = { + character = scope:holder + trigger = { + exists = scope:holder + } + animation = grief + } + + immediate = { + if = { + limit = { + scope:county = { + NOT = { + holder = scope:councillor_liege + } + } + } + + scope:county.holder = { + save_scope_as = holder + } + } + + scope:county = { + corrupt_county_effect = { ON_START = no } + } + } + + option = { + name = genocide_task.2001.a + } +} + +genocide_task.2101 = { + type = character_event + title = genocide_task.2101.t + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:county = { + OR = { + has_county_modifier = county_corruption_void_modifier + has_county_modifier = county_corruption_fel_modifier + has_county_modifier = county_corruption_death_modifier + } + } + } + desc = genocide_task.2101.desc.dark + } + triggered_desc = { + trigger = { + has_county_modifier = county_corruption_light_modifier + } + desc = genocide_task.2101.desc.light + } + triggered_desc = { + trigger = { + has_county_modifier = county_corruption_life_modifier + } + desc = genocide_task.2101.desc.nature + } + triggered_desc = { + trigger = { + has_county_modifier = county_corruption_arcane_modifier + } + desc = genocide_task.2101.desc.arcane + } + } + } + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + right_portrait = { + character = scope:holder + trigger = { + exists = scope:holder + } + animation = grief + } + + immediate = { + if = { + limit = { + scope:county = { + NOT = { + holder = scope:councillor_liege + } + } + } + + scope:county.holder = { + save_scope_as = holder + } + } + + scope:county = { + cleanse_county_effect = yes + } + } + + option = { + name = genocide_task.2101.a + } +} + +genocide_task.2201 = { + type = character_event + title = genocide_task.2201.t + desc = { + desc = genocide_task.2201.desc + triggered_desc = { + trigger = { + scope:holder = { + NOT = { + this = scope:councillor_liege + } + NAND = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + desc = genocide_task.2201.desc.holder + } + } + theme = martial + left_portrait = { + character = scope:councillor_liege + animation = happiness + } + right_portrait = { + character = scope:holder + trigger = { + exists = scope:holder + } + animation = grief + } + + immediate = { + if = { + limit = { + scope:county = { + NOT = { + holder = scope:councillor_liege + } + } + } + + scope:county.holder = { + save_scope_as = holder + } + } + + scope:county = { + purge_population_effect = yes + } + } + + option = { + name = genocide_task.2201.a + + trigger = { + NOT = { + exists = scope:holder + } + } + } + + option = { + name = genocide_task.2201.a.holder + + trigger = { + scope:holder ?= { + NOT = { + this = scope:councillor_liege + } + NAND = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + } + + option = { + name = genocide_task.2201.b + + trigger = { + scope:holder ?= { + NOT = { + this = scope:councillor_liege + } + NAND = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + } + } + + scope:county = { + create_title_and_vassal_change = { + type = usurped + add_claim_on_loss = yes + save_scope_as = change + } + + change_title_holder = { + holder = scope:councillor_liege + change = scope:change + take_baronies = yes + } + + resolve_title_and_vassal_change = scope:change + } + } + + option = { + name = genocide_task.2201.c + + trigger = { + scope:holder ?= { + NOT = { + this = scope:councillor_liege + } + NAND = { + culture = scope:councillor_liege.culture + faith = scope:councillor_liege.faith + } + any_held_title = { + tier = tier_county + count = 1 + } + } + } + + scope:county = { + create_title_and_vassal_change = { + type = usurped + add_claim_on_loss = yes + save_scope_as = change + } + + change_title_holder = { + holder = scope:councillor_liege + change = scope:change + take_baronies = yes + } + + resolve_title_and_vassal_change = scope:change + } + + scope:holder = { + override_death_killer_effect = { + death_reason = death_execution + killer = scope:councillor_liege + } + } + } +} \ No newline at end of file diff --git a/gfx/interface/icons/council_task_types/task_purge_population.dds b/gfx/interface/icons/council_task_types/task_purge_population.dds new file mode 100644 index 0000000000000000000000000000000000000000..869bac63b11bacbeb4120f818fc7559e06ce15ab GIT binary patch literal 78528 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 W)w1DvD9fIc=hjt^c;0Wy?SBC-0y#$j literal 0 HcmV?d00001 diff --git a/gfx/interface/icons/council_task_types/task_relocate_population.dds b/gfx/interface/icons/council_task_types/task_relocate_population.dds new file mode 100644 index 0000000000000000000000000000000000000000..36a49466c6d949b62167ba2b4f55757a8ef384ce GIT binary patch literal 78528 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 literal 0 HcmV?d00001 diff --git a/localization/english/event_localization/wc_genocide_task_events_l_english.yml b/localization/english/event_localization/wc_genocide_task_events_l_english.yml new file mode 100644 index 0000000000..dc2fad5527 --- /dev/null +++ b/localization/english/event_localization/wc_genocide_task_events_l_english.yml @@ -0,0 +1,111 @@ +l_english: + + GenocideEventRelevantMagic_Light:0 "$LIGHT_NAME$" + GenocideEventRelevantMagic_Void:0 "$SHADOW_NAME$" + GenocideEventRelevantMagic_Arcane:0 "Arcane" + GenocideEventRelevantMagic_Fel:0 "Demonic" + GenocideEventRelevantMagic_Life:0 "Nature" + GenocideEventRelevantMagic_Death:0 "Necrotic" + + GenocideEventRelevantGod_FaithGod:0 "[ROOT.Char.GetFaith.HighGodName]" + GenocideEventRelevantGod_Light:0 "$LIGHT_NAME$" + GenocideEventRelevantGod_Void:0 "$VOID_NAME$" + GenocideEventRelevantGod_Arcane:0 "$MAGIC_NAME$" + GenocideEventRelevantGod_Fel:0 "$SARGERAS_NAME$" + GenocideEventRelevantGod_Life:0 "$LIFE_NAME$" + GenocideEventRelevantGod_Death:0 "$DEATH_NAME$" + + GenocideEventRelevantPower_Holy:0 "Holy" + GenocideEventRelevantPower_Dark:0 "Dark" + GenocideEventRelevantPower_Arcane:0 "Arcane" + + GenocideEventRelevantName_Hallowed:0 "Hallowed" + GenocideEventRelevantName_Unholy:0 "Unholy" + + GenocideEventGenocidedPopulationsOr_Both:0 "$GenocideEventGenocidedPopulations_Culture$ or $GenocideEventGenocidedPopulations_Faith$" + + GenocideEventGenocidedPopulationsAnd_Both:0 "$GenocideEventGenocidedPopulations_Culture$ and $GenocideEventGenocidedPopulations_Faith$" + GenocideEventGenocidedPopulations_Culture:0 "[second.GetProvince.GetCounty.GetCulture.GetCollectiveNoun]" + GenocideEventGenocidedPopulations_Faith:0 "[second.GetProvince.GetCounty.GetFaith.GetAdjective]" + + genocide_task.0001.t:0 "Cursed Lands Spreading" + genocide_task.0001.desc:0 "The surfeit of evil deeds in [county.GetName] has resulted in the spread of magical corruption and plagues of all kinds.\n\nThose who do are not cowering in their homes death or stricken with illness instead languish in an inexplicable apathy. Our forces range back and forth across the land; killing anything that moves, stealing anything of value, and burning anything that can be put to the flame.\n\nWhile this wanton violence surely pleases [councillor_liege.Custom('GenocideEventRelevantGod')], this land is dying and its productivity suffers." + genocide_task.0001.a:0 "We shall reap the powers of [councillor_liege.GetFaith.PantheonTerm]!" + + genocide_task.0002.t:0 "Marauding Forces Cause Unrest" + genocide_task.0002.desc:0 "The efforts of our forces have done much to please [councillor_liege.Custom('GenocideEventRelevantGod')], but the mortals of this land are boundless in their impudence. Reports have begun to filter in from our collaborators, scouts, and spies in [county.GetName] that resistance is growing amongst the populace.\n\nOur forces must act quickly to destroy this growing threat or we shall risk looking weak in front of those among us who wish to usurp power." + genocide_task.0002.a:0 "Kill anything that moves! Make an example of them!" + genocide_task.0002.b:0 "Do not bother me with these trifling rumors!" + + genocide_task.0101.t:0 "A Champion's Challenge" + genocide_task.0101.desc:0 "Our purification of the lands of [county.GetName] continues to move forward unhindered. The [champion.Custom('GenocideEventRelevantPower')] magic that taints this land continues to resist and struggle against our might, sending incursions and challenges to hinder the progress of our warriors.\n\nThis time, the abominable magic has risen up a befouled champion that has challenged us to single combat. I could fight them myself and benefit from the gains of glory that I will bring to our cause but it does pose some significant risks..." + genocide_task.0101.a:0 "I will cleanse this champion myself." + genocide_task.0101.b:0 "Perhaps my marshal is up to the challenge." + + genocide_task.0102.t:0 "Uncontrolled Magic" + genocide_task.0102.desc:0 "Our purification of the lands of [county.GetName] has run into some unforeseen consequences. The magic that corrupts this land resists and struggles against our will and as a consequence it is now out of our control. If we don't make a decision immediately, this corruption will uncontrollably spread through the surrounding region." + genocide_task.0102.a:0 "Contain this outbreak." + genocide_task.0102.b:0 "Perhaps we should leave this land to its fate.." + + genocide_task.0201.t:0 "Deep Unrest Spreading" + genocide_task.0201.desc:0 "The surfeit of... regrettable deeds in [county.GetName] has resulted in the spread of unrest of all kinds.\n\nThose who are not struck down by our soldiers are cowering in their homes in fear or starving. Our forces range back and forth across the land; killing any [councillor_liege.Custom2_Title('GenocideEventGenocidedPopulationsOr', SCOPE.sTitle('county'))] that move, stealing anything of value, and burning anything that can be put to the flame.\n\nWhile this wanton violence will surely accomplish our goals, our people are suffering, and their productivity with them." + genocide_task.0201.a:0 "Let us hope we are soon finished." + + genocide_task.0202.t:0 "[councillor_liege.Custom2_Title('GenocideEventGenocidedPopulationsAnd', SCOPE.sTitle('county'))] Emigration" + genocide_task.0202.desc:0 "The recent actions in [county.GetName] has caused a large emigration from our realm, the [councillor_liege.Custom2_Title('GenocideEventGenocidedPopulationsAnd', SCOPE.sTitle('county'))] fleeing in droves.\n\nThe [target_ruler.Custom('InsultAdjective')] [target_ruler.GetName] has \"generously\" decided to take them in, luring them with promises of safety and security, settling them in [target_county.GetName].\n\nWhile our soldiers have attempted to stop the migration, they have not been very successful so far." + genocide_task.0202.a:0 "Damn that villain!" + + genocide_task.0301.t:0 "Brutal Demonstration of Devotion" + genocide_task.0301.desc:0 "Pillars of smoke rise into the night sky. Blotting out the moon, they are lit only by the fires of burning buildings, fields, and bodies. The screams and chaos of the massacre inflicted on this village in [county.GetName] have left an eerie calm and silence in their wake, broken only by the crackling inferno and the occasional crash of a falling timber. Silhouetted against the flame, your [court_chaplain|E] [cp_court_chaplain.GetShortUINameNoTooltip] stands in exultant prayer. Just a few paces behind, you kneels in supplication. The ritual, begun just after the slaughter itself, finally nears its completion.\n\n'Oh [councillor_liege.Custom('GenocideEventRelevantGod')]!" He implores, "Accept the Souls of these wretches that they may demonstrate our supplication to your infinite power. Accept the Blood upon our blades as proof of our fealty to you and your servant [councillor_liege.GetNameNoTooltip|V]. Accept the Fires that surround us as a solemn proof of your will enforced in [councillor_liege.GetPrimaryTitle.GetName]. Let this destruction and suffering please You; may these Souls, Blood, and Fire provide payment for another infinitesimal fraction of your [councillor_liege.Custom('GenocideEventRelevantPower')] Power! In thy [councillor_liege.Custom('GenocideEventRelevantName')] name we pray...'\n\nYou remains silent and motionless even as the first shivers and tingles of [councillor_liege.Custom('GenocideEventRelevantMagic')] Energy begin to course through your veins. With all the clarity your mind can muster, you wish..." + genocide_task.0301.a:0 "...to be feared by your subjects." + genocide_task.0301.b:0 "...only to have your dedication known." + genocide_task.0301.c:0 "...to harmonize your power with [councillor_liege.GetFaith.PantheonTerm]." + + genocide_task.0302.t:0 "Fuel for [councillor_liege.GetFaith.PantheonTerm]" + genocide_task.0302.desc:0 "I feel a twisted pleasure coil within me with every death that follows our forces. Their weak souls clinging to life like insects - buzzing and writhing in their futile struggle. Their energy - their souls, are nothing more than fodder for the power I command.\n\nTheir power flows through me as a torrent of life which has been twisted into the [councillor_liege.Custom('GenocideEventRelevantPower')] power that I now command. I can guide it, shape it, force it into whatever I will. All that remains is the decision of where to invest this magic..." + genocide_task.0302.a:0 "This power belongs to [councillor_liege.GetCapitalLocation.GetName]." + genocide_task.0302.b:0 "Disperse it to the local region." + + genocide_task.0401.t:0 "Fervor of Purification" + genocide_task.0401.desc:0 "The fervor of our fight against the [county.GetProvince.GetCounty.GetCulture.GetCollectiveNoun] is spreading throughout the surrounding areas, kindling a desire for purification among the inhabitants. Inspired by our determination, locals have risen up, ready to take up arms to restore the power of $GenocideEventRelevantGod_FaithGod$ within our lands.\n\nTheir fervor is admirable, but without proper direction, their zeal could become misdirected and destructive. Already, rumors are circulating about isolated acts of violence against individuals perceived as [county.Custom('GenocideEventRelevantNameCounty')]. What should we do with this newfound force?" + genocide_task.0401.a:0 "Let them make themselves useful!" + genocide_task.0401.a.progress:0 "The progress of the Cleansing in [county.GetName] is increased" + genocide_task.0401.b:0 "They will fight by our side." + + genocide_task.0402.t:0 "Fortress of the [county.GetProvince.GetCounty.GetCulture.GetCollectiveNounNoTooltip]" + genocide_task.0402.desc:0 "The fortress of the [county.GetProvince.GetCounty.GetCulture.GetCollectiveNoun] in [county.GetName] is falling beneath a brutal assault led by our forces. Flames consume the walls and smoke blackens the sky, our troops begin to loot the fortress and gather the exhausted and broken defenders under tight guard.\n\nThe chaos of battle has started to subside, the air still thick with the scent of blood, when [councillor.GetFirstName] approaches me, hand on the hilt of [councillor.GetHerHis] weapon.\n\n"[ROOT.Char.GetTitleAsNameNoTooltip|U], we have taken prisoners during the attack. They are at your mercy. We await your orders."" + genocide_task.0402.a:0 "They shall pray for mercy before we are done with them." + genocide_task.0402.b:0 "Put them out of their misery." + genocide_task.0402.c:0 "They shall make a worthy sacrifice for [councillor_liege.GetFaith.PantheonTerm]!" + + genocide_task.0501.t:0 "A Purging Hand" + genocide_task.0501.desc:0 "Our purge of these lands is progressing well.\n\nOne day, an unknown individual has approached my court. They appear to be a champion of [councillor_liege.Custom('GenocideEventRelevantGod')] who has resided in [county.GetName] and believe in our righteous cause. They wish to pledge fealty to me, and in exchange, I allow them to help in the purge of these lands. Naturally, it is up to me to best decide where they should fit." + genocide_task.0501.a:0 "They would better serve in my court." + genocide_task.0501.b:0 "Purging it is." + + genocide_task.0502.t:0 "Supplies Of The Weak" + genocide_task.0502.desc:0 "Death follows our forces as we march uninhibited through these lands; cleansing and purifying them in our image. The inhabitants scatter like insects who scamper and flee on our approach. During the purge of their lands it has become evident that several caches of their supplies have been abandoned. All that remains is the decision of where to invest these resources..." + genocide_task.0502.a:0 "Send these to [councillor_liege.GetCapitalLocation.GetName]." + genocide_task.0502.b:0 "Disperse it to the local region." + + genocide_task.2001.t:0 "The Corruption of [county.GetName]" + genocide_task.2001.desc.dark:0 "Dark energies ripple through the land as your ritual reaches its peak, twisting the very essence of the county.\n\nOnce vibrant and thriving, it now pulses with malevolent power, its inhabitants succumbing to the creeping corruption. The air grows heavy, the skies darken, and the once-fertile fields wither beneath your influence. You feel the dark magic coursing through the earth, binding the county to your will, transforming it into a bastion of your newfound power.\n\nThe deed is done; the land is yours, reshaped in your image, but at what cost?" + genocide_task.2001.desc.light:0 "Radiant energies surge through the land as your ritual reaches its zenith, infusing the county with divine might.\n\nOnce ordinary and unremarkable, it now glows with celestial brilliance, its inhabitants uplifted by the overwhelming holiness. The air sparkles with sanctity, the skies clear with divine light, and the once-barren fields flourish under your touch. You sense the sacred power coursing through the earth, binding the county to your will, transforming it into a shining testament to your grace.\n\nThe deed is done; the land is yours, reshaped in your image, but at what cost?" + genocide_task.2001.desc.nature:0 "Nature’s energies flow through the land as your ritual reaches its zenith, breathing new life into the county.\n\nOnce barren and neglected, it now teems with verdant vitality, its inhabitants rejuvenated by the wild magic. The air hums with the vibrant pulse of nature, the skies clear with a lush glow, and the once-dry fields bloom under your influence. You feel the natural magic weaving through the earth, binding the county to your will, transforming it into a lush sanctuary of your creation.\n\nThe deed is done; the land is yours, flourishing under your command, but at what cost?" + genocide_task.2001.desc.arcane:0 "Arcane energies ripple through the land as your ritual reaches its climax, infusing the county with otherworldly brilliance.\n\nOnce ordinary and mundane, it now shimmers with mystical power, its inhabitants entranced by the swirling magic. The air crackles with arcane sparks, the skies swirl with ethereal hues, and the once-drained fields now glisten with magical vitality. You feel the arcane force weaving through the earth, binding the county to your will, transforming it into a beacon of your arcane mastery.\n\nThe deed is done; the land is yours, redefined by your touch, but at what cost?" + genocide_task.2001.a:0 "The deed is done." + + genocide_task.2101.t:0 "The Cleansing of [county.GetName]" + genocide_task.2101.desc.dark:0 "The dark energies dissipate from the land as your ritual reaches its peak, restoring the very essence of the county.\n\nOnce tainted and withering, it now flourishes with renewed vitality, its inhabitants freed from the clutches of corruption. The air grows lighter, the skies clear, and the once-barren fields begin to bloom again under your influence. You feel the pure magic coursing through the earth, releasing the county from its blight, returning it to its former glory.\n\nThe deed is done; the land is healed, restored to its natural state, and peace reigns once more." + genocide_task.2101.desc.light:0 "The holy energies dissipate from the land as your ritual reaches its peak, restoring the very essence of the county.\n\nOnce overwhelmed by celestial brilliance, it now returns to its natural state, its inhabitants freed from the grip of divine influence. The air grows calmer, the skies lose their blinding light, and the once-flourishing fields return to their humble form under your touch. You feel the pure magic coursing through the earth, releasing the county from its sacred bindings, returning it to its former, unremarkable glory.\n\nThe deed is done; the land is cleansed, restored to its natural state, and balance reigns once more." + genocide_task.2101.desc.nature:0 "The natural energies dissipate from the land as your ritual reaches its peak, restoring the very essence of the county. Once teeming with vibrant life, it now returns to its original state, its inhabitants freed from the overwhelming presence of nature’s magic. The air grows still, the skies lose their lush hues, and the once-flourishing fields settle back into their modest form under your touch. You feel the pure magic withdrawing from the earth, releasing the county from its natural bindings, returning it to its former, unremarkable state.\n\nThe deed is done; the land is cleansed, restored to its natural condition, and balance reigns once more." + genocide_task.2101.desc.arcane:0 "The arcane energies dissipate from the land as your ritual reaches its peak, restoring the very essence of the county. Once infused with vibrant magic, it now returns to its original state, its inhabitants freed from the overwhelming presence of arcane power. The air grows still, the skies lose their shimmering aura, and the once-enchanted fields settle back into their modest form under your touch. You feel the pure magic withdrawing from the earth, releasing the county from its arcane bindings, returning it to its former, unremarkable state.\n\nThe deed is done; the land is cleansed, restored to its natural condition, and balance reigns once more." + genocide_task.2101.a:0 "The foul corruption has been defeated." + + genocide_task.2201.t:0 "The Purge of [county.GetName]" + genocide_task.2201.desc:0 "An oppressive silence settles over [county.GetNameNoTooltip] as your purge reaches its zenith. The undesirable elements are driven out, their presence vanishing like shadows at dawn. The land breathes freely again, its once-chaotic energy now subdued. You stand amidst the calm, knowing your work has restored order and peace." + genocide_task.2201.desc.holder:0 "\n\nThe question remains of what to do with [holder.GetShortUIName]." + genocide_task.2201.a:0 "A job well done." + genocide_task.2201.a.holder:0 "Leave them be." + genocide_task.2201.b:0 "This land does not belong to them!" + genocide_task.2201.c:0 "They shall go the way of their subjects!" \ No newline at end of file diff --git a/localization/english/modifiers/wc_modifiers_l_english.yml b/localization/english/modifiers/wc_modifiers_l_english.yml index 4ed0f106ba..428e6efce0 100644 --- a/localization/english/modifiers/wc_modifiers_l_english.yml +++ b/localization/english/modifiers/wc_modifiers_l_english.yml @@ -285,4 +285,43 @@ wc_troll_mogu_pact_thunder_king_modifier_desc:0 "The [thunder_king|E] has been resurrected a Zandalari [ruler|E].\n\nThey may call them into a defensive [war|E] once for each remaining stack of this [modifier|E] via a [character_interaction|E]." union_block_modifier:0 "Union Block" - union_block_modifier_desc:0 "This character has recently left their union and is left with the consequences of standing alone." \ No newline at end of file + union_block_modifier_desc:0 "This character has recently left their union and is left with the consequences of standing alone." + + ongoing_corruption_modifier:0 "Ongoing Corruption" + ongoing_cleansing_modifier:0 "Ongoing Cleansing" + ongoing_genocide_modifier:0 "Ongoing Purge" + + county_corruption_light_modifier:0 "Light Corruption" + county_corruption_light_modifier_desc:0 "This county has been corrupted by Light.\n\nEffects scale based on Light Magic [doctrines|E] and [traits|E]." + county_corruption_void_modifier:0 "Shadow Corruption" + county_corruption_void_modifier_desc:0 "This county has been corrupted by Shadow.\n\nEffects scale based on Shadow Magic [doctrines|E] and [traits|E]." + county_corruption_arcane_modifier:0 "Arcane Corruption" + county_corruption_arcane_modifier_desc:0 "This county has been corrupted by the Arcane.\n\nEffects scale based on Arcane Magic [doctrines|E] and [traits|E]." + county_corruption_fel_modifier:0 "Fel Corruption" + county_corruption_fel_modifier_desc:0 "This county has been corrupted by Fel.\n\nEffects scale based on Fel Magic [doctrines|E] and [traits|E]." + county_corruption_life_modifier:0 "Nature Corruption" + county_corruption_life_modifier_desc:0 "This county has been corrupted by Nature.\n\nEffects scale based on Nature Magic [doctrines|E] and [traits|E]." + county_corruption_death_modifier:0 "Death Corruption" + county_corruption_death_modifier_desc:0 "This county has been corrupted by Death.\n\nEffects scale based on Death Magic [doctrines|E] and [traits|E]." + + county_purged_modifier_1:0 "Small Depopulation" + county_purged_modifier_2:0 "Large Depopulation" + county_purged_modifier_3:0 "Severe Depopulation" + + harmonize_with_force_modifier:0 "Harmonized With Power" + corruption_disease_modifier:0 "Corrupted Plague" + corruption_disease_modifier_desc:0 "The corruption of a neighboring county has caused a great outbreak of disease." + genocidal_unrest_modifier:0 "Genocidal Unrest" + genocidal_unrest_modifier_desc:0 "The purge of a neighboring county has caused a great deal of unrest here." + genocide_emigration_modifier:0 "Recent Emigration" + genocide_immigration_modifier:0 "Recent Immigration" + genocide_channelled_energy_modifier:0 "Harnessed Energy" + genocide_dispersed_energy_modifier:0 "Dispersed Energy" + sacrificed_cleansing_targets_modifier:0 "Cleansed Sacrifice" + genocide_focused_resources_modifier:0 "Focused Resources" + genocide_dispersed_resources_modifier:0 "Dispersed Resources" + genocide_wild_energy_modifier:0 "Rampaging Energy" + genocide_controlled_energy_modifier:0 "Corralled Energy" + genocide_marauding_forces_modifier:0 "Rampaging Marauders" + genocide_purged_marauders_modifier:0 "Purged Marauders" + genocide_local_champion_modifier:0 "Local Champion" \ No newline at end of file diff --git a/localization/english/opinions/wc_genocide_opinions_l_english.yml b/localization/english/opinions/wc_genocide_opinions_l_english.yml new file mode 100644 index 0000000000..2c39f698f8 --- /dev/null +++ b/localization/english/opinions/wc_genocide_opinions_l_english.yml @@ -0,0 +1,7 @@ +l_english: + disapproves_of_genocide:0 "Disapproves of Purge" + minority_disapproves_of_genocide_population_opinion:0 "[GetVassalStance( 'minority' ).GetTextIcon][GetVassalStance( 'minority' ).GetName] $disapproves_of_genocide$" + genocided_my_culture_opinion:0 "Purged My Culture" + genocided_my_faith_opinion:0 "Purged My Faith" + ruler_disapproves_of_genocide_population_opinion:0 "Purged My People" + vassal_approves_of_defending_genocide_opinion:0 "Avenged Purge" diff --git a/localization/english/wc_council_tasks_l_english.yml b/localization/english/wc_council_tasks_l_english.yml index ba790384c5..56833643ab 100644 --- a/localization/english/wc_council_tasks_l_english.yml +++ b/localization/english/wc_council_tasks_l_english.yml @@ -5,4 +5,40 @@ COURT_CHAPLAIN_FABRICATE_CLAIM_INNOVATION_BONUS_EXPANSIONISM:1 "[councillor_liege.GetCulture.GetName] — $innovation_expansionism$" - task_dark_frenzy_gain:0 "\n$TAB$Grants [dark_frenzy|E]" \ No newline at end of file + task_dark_frenzy_gain:0 "\n$TAB$Grants [dark_frenzy|E]" + + task_purge_population:0 "[GetPlayer.Custom('TaskPurgePopulationTitle')]" + TaskPurgePopulationTitle_Corrupt:0 "Corrupt County" + TaskPurgePopulationTitle_Purge:0 "Purge Population" + task_purge_population_VALUE_NAME:0 "" + task_purge_population_effect_desc:0 "#S At #V 100%#!#!:\n$TAB$The [county|E] will change [faith|E] to [councillor_liege.GetFaith.GetName]\n$TAB$The [county|E] will change culture to [councillor_liege.GetCulture.GetName]" + task_purge_population_effect_corrupt_desc:0 "\n$TAB$The [county|E] will become corrupted" + minority_disapproves_genocide_tooltip:0 "\n$TAB$Every $minority_vassal$ ([councillor_liege.MakeScope.ScriptValue('number_of_minority_vassals')|V0]) loses #N 25#! or #N 50#! [opinion|E] of [councillor_liege.GetShortUIName] for #V 10 years#! #weak (Disapproves Purge)#!" + COUNTY_IS_YOUR_CULTURE:0 "[county.GetName] is already [councillor_liege.GetCulture.GetName]" + COUNTY_IS_YOUR_FAITH:0 "[county.GetName] is already [councillor_liege.GetFaith.GetName]" + COUNTY_ALREADY_CORRUPTED:0 "[county.GetName] is already corrupted" + GENOCIDE_ARMY_STRENGTH_BONUS:0 "From unraised armies" + MARSHAL_GENOCIDE_FERVOR_IMPACT:0 "From [fervor|E]" + FROM_CONVERSION_SPEED_GAME_RULE:0 "From [culture|E] and [faith|E] conversion speed game rules" + genocide_liege_disapproves:0 "Liege does not approve of this purge" + genocide_invalid_culture_faith:0 "[county.GetProvince.GetCounty.GetCulture.GetName] and [county.GetProvince.GetCounty.GetFaith.GetName] are not valid targets" + cultural_acceptance_loss_purge_pupulation:0 "[old_culture.GetName] purged in [county.GetName]" + + genocided_my_culture_opinion_desc:0 "Every [old_culture.GetName] ruler lost #N 25#! [opinion|E] of #V you#! for #V 10 years#! #weak ($genocided_my_culture_opinion$)#!" + genocided_my_faith_opinion_desc:0 "Every [old_faith.GetName] ruler lost #N 50#! [opinion|E] of #V you#! for #V 10 years#! #weak ($genocided_my_faith_opinion$)#!" + minority_disapproves_of_genocide_population_opinion_desc:0 "Every $minority_vassal$ ([councillor_liege.MakeScope.ScriptValue('number_of_minority_vassals')|V0]) lost #N 25#! [opinion|E] of [councillor_liege.GetShortUIName] for #V 10 years#! #weak ($disapproves_of_genocide$)#!" + + council_task_cursed_lands:0 "\n$EFFECT_LIST_BULLET$#N Cursed Lands Spreading#!" + council_task_marauders:0 "\n$EFFECT_LIST_BULLET$#N Marauders Run Wild#!" + council_task_devotion_demonstration:0 "\n$EFFECT_LIST_BULLET$#P A Ritual To [councillor_liege.Custom('GenocideEventRelevantGod')]#!" + council_task_harness_energy:0 "\n$EFFECT_LIST_BULLET$#P Harness [councillor_liege.Custom('GenocideEventRelevantMagic')] Energy#!" + + council_task_champion_challenge:0 "\n$EFFECT_LIST_BULLET$#N An Unexpected Challenge#!" + council_task_wild_energy:0 "\n$EFFECT_LIST_BULLET$#N [county.Custom('GenocideEventRelevantCountyMagic')] Energy Runs Wild#!" + council_task_army_spawn:0 "\n$EFFECT_LIST_BULLET$#P Unexpected Aid Arrives#!" + council_task_large_raid:0 "\n$EFFECT_LIST_BULLET$#P A Large Raid#!" + + council_task_neighboring_unrest:0 "\n$EFFECT_LIST_BULLET$#N Neighboring Unrest#!" + council_task_emigration:0 "\n$EFFECT_LIST_BULLET$#N Large Emigration#!" + council_task_friendly_champion:0 "\n$EFFECT_LIST_BULLET$#P An Offer Of Assistance#!" + council_task_found_supplies:0 "\n$EFFECT_LIST_BULLET$#P A Windfall Of Supplies#!" \ No newline at end of file diff --git a/localization/english/wc_game_concepts_l_english.yml b/localization/english/wc_game_concepts_l_english.yml index aef1f69728..4c2190fc0b 100644 --- a/localization/english/wc_game_concepts_l_english.yml +++ b/localization/english/wc_game_concepts_l_english.yml @@ -120,4 +120,8 @@ game_concept_lei_shen:0 "Lei Shen" game_concept_thunder_king:0 "Thunder King" game_concept_the_thunder_king:0 "The Thunder King" - game_concept_the_thunder_king_desc:0 "One of the lesser [crises|E] on Azeroth. The [GetTrait('thunder_king').GetName( GetNullCharacter )] Lei Shen was the first Emperor of the Mogu Empire. He absorbed the powers of the titan watcher Ra-den to become one of the most powerful beings on Azeroth and conquered all of Pandaria, founding a tyrannical regime that would last for thousands of years. He was eventually killed alongside his Zandalari allies while attempting to claim the Forge of Origination in Uldum.\n\nThe Zandalari trolls are rumored to possess the secret ritual of his resurrection. If the legends are true, the resurrected Thunder King would waste no time rallying the [GetTrait('creature_mogu').GetName( GetNullCharacter )] Clans to reestablish his ancient [empire|E]'s dominion over Pandaria.\n\nAs an [ongoing_crisis|E], the Thunder King will have access to the [great_invasion|E] [casus_belli|E], but will generally not expand beyond Pandaria." \ No newline at end of file + game_concept_the_thunder_king_desc:0 "One of the lesser [crises|E] on Azeroth. The [GetTrait('thunder_king').GetName( GetNullCharacter )] Lei Shen was the first Emperor of the Mogu Empire. He absorbed the powers of the titan watcher Ra-den to become one of the most powerful beings on Azeroth and conquered all of Pandaria, founding a tyrannical regime that would last for thousands of years. He was eventually killed alongside his Zandalari allies while attempting to claim the Forge of Origination in Uldum.\n\nThe Zandalari trolls are rumored to possess the secret ritual of his resurrection. If the legends are true, the resurrected Thunder King would waste no time rallying the [GetTrait('creature_mogu').GetName( GetNullCharacter )] Clans to reestablish his ancient [empire|E]'s dominion over Pandaria.\n\nAs an [ongoing_crisis|E], the Thunder King will have access to the [great_invasion|E] [casus_belli|E], but will generally not expand beyond Pandaria." + + game_concept_purge_population:0 "Purge Population" + game_concept_genocide:0 "$game_concept_purge_population$" + game_concept_purge_population_desc:0 "A [councillor_task|E] performed by the [marshal|E] which targets a [county|E] of a different [culture|E] or [faith|E] than the [liege|E]\nProgress increases each month, and at 100%, the Target County has changed from their previous Culture and Faith to the Liege's.\n\nConversion speed is affected by many factors, including the [councillor|E]'s [martial_skill|E], the strength of the Liege's unraised [army|E], the County's [development|E], and the [fervor|E] of the two Faiths." \ No newline at end of file diff --git a/localization/english/wc_wars_l_english.yml b/localization/english/wc_wars_l_english.yml index 33d1bbb018..7a762c331d 100644 --- a/localization/english/wc_wars_l_english.yml +++ b/localization/english/wc_wars_l_english.yml @@ -27,4 +27,14 @@ MIGRATION_WAR_DUCHY_NAME:0 "[holy_war|E] for [duchy|E]" migration_theramore_war:0 "Migration War" - scourge_quelthalas_cb.undead_conversion:0 "All those you [Concept('vassal', 'Vassalize')|E] and their vassals become [GetTrait('being_undead').GetName( GetNullCharacter )]" \ No newline at end of file + scourge_quelthalas_cb.undead_conversion:0 "All those you [Concept('vassal', 'Vassalize')|E] and their vassals become [GetTrait('being_undead').GetName( GetNullCharacter )]" + + GENOCIDE_WAR_NAME:0 "#E Avenge Purge#! in [DEFENDER.GetPrimaryTitle.GetName]" + GENOCIDE_WAR_CB_NAME: "Avenge Purge" + msg_committed_genocide_invalid_message:0 "The [war.GetName] has ended: [attacker.GetTitledFirstName] can no longer avenge the purge" + committed_genocide_cb_victory_desc_attacker:0 "You gain all purged counties of your [culture|E] or [faith|E]" + committed_genocide_cb_victory_desc:0 "[attacker.GetShortUIName|U] gains all purged counties of their [culture|E] or [faith|E]" + committed_genocide_cb_white_peace_desc_defender:0 "You keep the purged counties" + committed_genocide_cb_white_peace_desc:0 "[defender.GetShortUIName|U] keeps the purged counties" + committed_genocide_cb_defeat_desc_defender:0 "$committed_genocide_cb_white_peace_desc_defender$" + committed_genocide_cb_defeat_desc:0 "$committed_genocide_cb_white_peace_desc$" \ No newline at end of file diff --git a/localization/replace/english/wc_game_rules_l_english.yml b/localization/replace/english/wc_game_rules_l_english.yml index b7f7ca5a54..6221088074 100644 --- a/localization/replace/english/wc_game_rules_l_english.yml +++ b/localization/replace/english/wc_game_rules_l_english.yml @@ -20,3 +20,10 @@ setting_random_ruler_placement_on_desc:0 "#warning (This game rule should already be set on a bookmark page to work)#! Rulers are randomly placed on the map. Each county gets a new faith and culture from it's new holder." setting_random_ruler_placement_on_conversion:1 "#high On (Conversion)#!" setting_random_ruler_placement_on_conversion_desc:1 "Rulers are randomly placed on the map. They convert to the historical holder's Faith." + + conversion_desc_genocide:0 "#clickable #Bold Warcraft#!#!: Also applies to Purges" + setting_default_culture_conversion_speed_desc:0 "Conversion speed is unchanged.\n$conversion_desc_genocide$" + setting_faster_culture_conversion_speed_desc:0 "The speed is increased, making conversion take roughly half of the time.\n$conversion_desc_genocide$" + setting_significantly_faster_culture_conversion_speed_desc:0 "The speed is significantly increased, making conversion take roughly a quarter of the time.\n$conversion_desc_genocide$" + setting_significantly_slower_culture_conversion_speed_desc:0 "The speed is significantly reduced, making conversion take roughly four times longer.\n$conversion_desc_genocide$" + setting_slower_culture_conversion_speed_desc:0 "The speed is reduced, making conversion take roughly twice the time.\n$conversion_desc_genocide$"