diff --git a/common/coat_of_arms/coat_of_arms/00_wc_landed_titles.txt b/common/coat_of_arms/coat_of_arms/00_wc_landed_titles.txt index 82a4d1ec54..76cf5478a6 100644 --- a/common/coat_of_arms/coat_of_arms/00_wc_landed_titles.txt +++ b/common/coat_of_arms/coat_of_arms/00_wc_landed_titles.txt @@ -6371,6 +6371,32 @@ k_pearlfin = { } +# Vrykul +k_drustvar = { + pattern = "pattern_solid.dds" + color1 = "black" + color2 = "blue" + colored_emblem = { + texture = "ce_circle_mask.dds" + color1 = "black" + color2 = "black" + instance = { position = { 0.5 0.48 } scale = { 0.7 0.7 } } + } + colored_emblem = { + texture = "ce_frame_circle_borre_single.dds" + color1 = "blue" + color2 = "black" + instance = { position = { 0.5 0.48 } scale = { 0.95 0.95 } } + } + colored_emblem = { + texture = "ce_norse_triquetra_ivaring.dds" + color1 = "black" + color2 = "blue" + color3 = "blue" + instance = { position = { 0.5 0.48 } scale = { 0.9 0.9 } } + } +} + # Satyr d_jozaes={ pattern="pattern_solid.dds" @@ -6400,7 +6426,7 @@ d_jozaes={ } } -d_eldrethalas={ +d_eldrethalas = { pattern="pattern_solid.dds" color1=white color2=white diff --git a/common/decisions/wc_major_drust_decisions.txt b/common/decisions/wc_major_drust_decisions.txt new file mode 100644 index 0000000000..6f52609366 --- /dev/null +++ b/common/decisions/wc_major_drust_decisions.txt @@ -0,0 +1,58 @@ +# DRUST INCURSION # +summon_gorak_tul = { + ai_check_interval = 120 + major = yes + picture = "gfx/interface/illustrations/decisions/drustvar.dds" + selection_tooltip = summon_gorak_tul_tooltip + + is_shown = { + is_independent_ruler = yes + capital_county = { title_province = { geographical_region = world_eastern_kingdoms_lordaeron_kul_tiras } } + NOT = { has_global_variable = drustvar_crisis_ongoing_var } # Blocked until Heartsbane opening events are completed + + NOT = { + k_drustvar = { + has_holder = yes + } + has_global_variable = drust_incursion_happened + } + } + + is_valid = { + faith = faith:throsic + OR = { + custom_tooltip = { + text = heartsbane_coven_formed + has_global_variable = heartsbane_coven_event_var # This checks if Heartsbane has formed via opening events + } + custom_tooltip = { + text = summon_gorak_tul_decision_tt + completely_controls = title:d_drustwar + highest_held_title_tier < tier_kingdom + is_independent_ruler = yes # Must not be a vassal of Kul Tiras or something else + has_trait = magic_good_3 + } + } + } + + is_valid_showing_failures_only = { + is_imprisoned = no + is_capable_adult = yes + is_at_war = no + } + + effect = { + custom_tooltip = { + text = summon_gorak_tul_tooltip + hidden_effect = { trigger_event = drust_crisis.4 } + } + } + + ai_potential = { + always = yes + } + + ai_will_do = { + factor = 1 + } +} \ No newline at end of file diff --git a/common/dynasties/70000_vrykul.txt b/common/dynasties/70000_vrykul.txt index 239a9911eb..239f91fde1 100644 --- a/common/dynasties/70000_vrykul.txt +++ b/common/dynasties/70000_vrykul.txt @@ -209,26 +209,26 @@ frost_vrykul2 = { name = "dynn_Akerman" culture = frost_vrykul } #Generated #drust 70200 = { name = "dynn_Inath" culture = drust } -# 70201 = { name = "dynn_Vigo" culture = drust } -# 70202 = { name = "dynn_Jormun" culture = drust } -# 70203 = { name = "dynn_Koval" culture = drust } -# 70204 = { name = "dynn_Osigr" culture = drust } -# 70205 = { name = "dynn_Norddahl" culture = drust } -# 70206 = { name = "dynn_Thovas" culture = drust } -# 70207 = { name = "dynn_Ufrang" culture = drust } -# 70208 = { name = "dynn_Var" culture = drust } -# 70209 = { name = "dynn_Ogren" culture = drust } -# 70210 = { name = "dynn_Sandell" culture = drust } -# 70211 = { name = "dynn_Sohlmann" culture = drust } -# 70212 = { name = "dynn_Lagerfeld" culture = drust } -# 70213 = { name = "dynn_Sjustrum" culture = drust } -# 70214 = { name = "dynn_Sjuberg" culture = drust } -# 70215 = { name = "dynn_Lagerluf" culture = drust } -# 70216 = { name = "dynn_Brahe" culture = drust } -# 70217 = { name = "dynn_Ahlgren" culture = drust } -# 70218 = { name = "dynn_Blomqvist" culture = drust } -# 70219 = { name = "dynn_Gylling" culture = drust } -# 70220 = { name = "dynn_Sandell" culture = drust } +70201 = { name = "dynn_Vigo" culture = drust } +70202 = { name = "dynn_Jormun" culture = drust } +70203 = { name = "dynn_Koval" culture = drust } +70204 = { name = "dynn_Osigr" culture = drust } +70205 = { name = "dynn_Norddahl" culture = drust } +70206 = { name = "dynn_Thovas" culture = drust } +70207 = { name = "dynn_Ufrang" culture = drust } +70208 = { name = "dynn_Var" culture = drust } +70209 = { name = "dynn_Ogren" culture = drust } +70210 = { name = "dynn_Sandell" culture = drust } +70211 = { name = "dynn_Sohlmann" culture = drust } +70212 = { name = "dynn_Lagerfeld" culture = drust } +70213 = { name = "dynn_Sjustrum" culture = drust } +70214 = { name = "dynn_Sjuberg" culture = drust } +70215 = { name = "dynn_Lagerluf" culture = drust } +70216 = { name = "dynn_Brahe" culture = drust } +70217 = { name = "dynn_Ahlgren" culture = drust } +70218 = { name = "dynn_Blomqvist" culture = drust } +70219 = { name = "dynn_Gylling" culture = drust } +70220 = { name = "dynn_Sandell" culture = drust } # 70221 = { name = "dynn_Naslund" culture = drust } # 70222 = { name = "dynn_Lundberg" culture = drust } # 70223 = { name = "dynn_Bergkvist" culture = drust } diff --git a/common/dynasty_houses/wc_dynasty_houses.txt b/common/dynasty_houses/wc_dynasty_houses.txt index 2f09e13389..cb453c3933 100644 --- a/common/dynasty_houses/wc_dynasty_houses.txt +++ b/common/dynasty_houses/wc_dynasty_houses.txt @@ -96,6 +96,33 @@ house_sagewhisper = { motto = "dynn_sagewhisper_motto" dynasty = 170004 } + +### Vrykul +house_vigo = { + name = "dynn_Vigo" + motto = "dynn_Vigo_motto" + dynasty = 70201 +} +house_jormun = { + name = "dynn_Jormun" + motto = "dynn_Jormun_motto" + dynasty = 70202 +} +house_koval = { + name = "dynn_Koval" + motto = "dynn_Koval_motto" + dynasty = 70203 +} +house_osigr = { + name = "dynn_Osigr" + motto = "dynn_Osigr_motto" + dynasty = 70204 +} +house_norddahl = { + name = "dynn_Norddahl" + motto = "dynn_Norddahl_motto" + dynasty = 70205 + ### Quilboar house_thornmantle = { name = "dynn_Thornmantle" diff --git a/common/event_backgrounds/wc_event_backgrounds.txt b/common/event_backgrounds/wc_event_backgrounds.txt index 3f8a34bdbc..80d0e0c606 100644 --- a/common/event_backgrounds/wc_event_backgrounds.txt +++ b/common/event_backgrounds/wc_event_backgrounds.txt @@ -213,6 +213,46 @@ wc_throne_of_thunder_fullscreen = { } } +wc_boralus = { + background = { + reference = "gfx/interface/illustrations/event_scenes/wc_boralus.dds" + environment = "environment_event_alley_day" + ambience = "event:/SFX/Events/Backgrounds/city_alley_day_western" + } +} + +wc_boralus_siege = { + background = { + reference = "gfx/interface/illustrations/event_scenes/wc_boralus_siege.dds" + environment = "environment_event_bp1_bonfire" + ambience = "event:/SFX/Events/Backgrounds/burning_building" + } +} + +wc_waycrest_manor = { + background = { + reference = "gfx/interface/illustrations/event_scenes/wc_waycrest_manor.dds" + environment = "environment_character_undead" + ambience = "event:/SFX/Events/Backgrounds/dungeon" + } +} + +wc_fullscreen_kul_tiras = { + background = { + reference = "gfx/interface/illustrations/event_scenes/wc_kul_tiras_full_screen.dds" + environment = "environment_event_fp1_ocean" + ambience = "event:/DLC/FP1/SFX/Events/event_ocean_longship" + } +} + +wc_death_tree = { + background = { + reference = "gfx/interface/illustrations/event_scenes/wc_death_tree.dds" + environment = "environment_character_undead" + ambience = "event:/SFX/Events/Backgrounds/dungeon" + } +} + wc_jade_forest_fullscreen = { background = { reference = "gfx/interface/illustrations/event_scenes/wc_jade_forest_fullscreen.dds" diff --git a/common/flavorization/wc_title_holders.txt b/common/flavorization/wc_title_holders.txt index eeef4c9390..d258f1d5aa 100644 --- a/common/flavorization/wc_title_holders.txt +++ b/common/flavorization/wc_title_holders.txt @@ -1849,6 +1849,90 @@ drottlag_kvaldir_duchy = { name_lists = { name_list_kvaldir } } +### Drust Special ### +# Feudal +ingra_male_drust_duke = { + type = character + gender = male + special = holder + tier = duchy + priority = @special_prio + top_liege = no + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} +ingra_female_drust_duke = { + type = character + gender = female + special = holder + tier = duchy + priority = @special_prio + top_liege = no + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} +ingralag_drust_duchy = { + type = title + tier = duchy + priority = @special_prio + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} +gorak_male_drust_king = { + type = character + gender = male + special = holder + tier = kingdom + priority = @special_prio + top_liege = no + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} +gorak_female_drust_king = { + type = character + gender = female + special = holder + tier = kingdom + priority = @special_prio + top_liege = no + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} +gorakdom_drust_kingdom = { + type = title + tier = kingdom + priority = @special_prio + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} +high_gorak_male_drust_emperor = { + type = character + gender = male + special = holder + tier = empire + priority = @special_prio + top_liege = no + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} +high_gorak_female_drust_emperor = { + type = character + gender = female + special = holder + tier = empire + priority = @special_prio + top_liege = no + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} +high_gorakdom_drust_empire = { + type = title + tier = empire + priority = @special_prio + governments = { feudal_government clan_government tribal_government necro_government } + name_lists = { name_list_drust } +} + ### Lucardir Special ### # Feudal #blood_thane_male_lucardir_count = { diff --git a/common/landed_titles/01_landed_titles.txt b/common/landed_titles/01_landed_titles.txt index f478c6230b..a1a0417021 100644 --- a/common/landed_titles/01_landed_titles.txt +++ b/common/landed_titles/01_landed_titles.txt @@ -22271,10 +22271,18 @@ e_kul_tiras = { c_boralus = { color = { 54 197 38 } + + cultural_names = { + name_list_drust = cn_new_inath + } b_boralus = { province = 2179 color = { 54 197 38 } + + cultural_names = { + name_list_drust = cn_new_inath + } } } c_anglepoint = { diff --git a/common/modifiers/wc_event_modifiers.txt b/common/modifiers/wc_event_modifiers.txt index e4bf0271ed..40f05df6b1 100644 --- a/common/modifiers/wc_event_modifiers.txt +++ b/common/modifiers/wc_event_modifiers.txt @@ -332,8 +332,15 @@ wc_thorium_base_modifier = { supply_limit_mult = 0.25 } -# Suramar modifiers +# Drust Incursion Modifiers +wc_gorak_tul_initial_modifier = { + icon = prestige_positive + men_at_arms_recruitment_cost = -0.15 + levy_reinforcement_rate = 0.15 + army_maintenance_mult = -0.10 +} +# Suramar modifiers wc_suramar_isolated_modifier = { icon = county_modifier_development_positive development_growth = 3 diff --git a/common/on_action/army_on_actions.txt b/common/on_action/army_on_actions.txt index 8447af8452..61b3e861b8 100644 --- a/common/on_action/army_on_actions.txt +++ b/common/on_action/army_on_actions.txt @@ -86,6 +86,36 @@ on_county_occupied = { } } } + + # Warcraft + # Mongol Devastation + + # Warcraft + # Drust Devastation + if = { + limit = { + scope:barony = title:b_boralus + root = { is_from_the_drust_trigger = yes } + } + trigger_event = drust_crisis.8 + + # Notifications + scope:county = { + every_county_province = { + every_character_in_location = { + limit = { + NOT = { this = root } + is_ai = no + } + if = { + limit = { is_from_the_drust_trigger = yes } + trigger_event = drust_crisis.8 # Drust side + } + else = { trigger_event = drust_crisis.9 } # Boralus side + } + } + } + } } } diff --git a/common/on_action/wc_drust_on_actions.txt b/common/on_action/wc_drust_on_actions.txt new file mode 100644 index 0000000000..fc99050ce0 --- /dev/null +++ b/common/on_action/wc_drust_on_actions.txt @@ -0,0 +1,71 @@ +#### Yearly check to see if Drust event can begin +yearly_global_pulse = { on_actions = { heartsbane_check } } + +heartsbane_check = { + trigger = { + title:d_drustwar.holder ?= { + NOT = { has_global_variable = drust_incursion_happened } + NOT = { has_global_variable = heartsbane_coven_event_var } + + exists = title:k_kul_tiras.holder + highest_held_title_tier < tier_kingdom + + trigger_if = { + limit = { drust_sick_spouse_trigger = yes } + any_spouse = { drust_worried_spouse_trigger = yes } + } + trigger_else = { + drust_worried_spouse_trigger = yes + any_spouse = { drust_sick_spouse_trigger = yes } + } + } + } + effect = { + title:d_drustwar.holder ?= { + set_global_variable = heartsbane_coven_event_var + set_global_variable = drustvar_crisis_ongoing_var # Blocks summon_gorak_tul + + # Picks who is sick and who isn't + if = { + limit = { drust_sick_spouse_trigger = yes } + save_scope_as = sick_spouse + random_spouse = { + limit = { drust_worried_spouse_trigger = yes } + save_scope_as = worried_spouse + } + } + else = { + save_scope_as = worried_spouse + random_spouse = { + limit = { drust_sick_spouse_trigger = yes } + save_scope_as = sick_spouse + } + } + + scope:worried_spouse = { trigger_event = drust_crisis.1 } + } + } +} + +on_title_lost = { + on_actions = { + wc_drust_incursion_on_actions + } +} + +wc_drust_incursion_on_actions = { + effect = { + if = { + limit = { + scope:title = title:c_boralus + scope:new_holder = { is_from_the_drust_trigger = yes } + } + scope:new_holder = { + trigger_event = { + id = drust_crisis.10 + days = 7 + } + } + } + } +} \ No newline at end of file diff --git a/common/on_action/wc_on_actions.txt b/common/on_action/wc_on_actions.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/common/scripted_character_templates/wc_drust_templates.txt b/common/scripted_character_templates/wc_drust_templates.txt new file mode 100644 index 0000000000..69086e5c9e --- /dev/null +++ b/common/scripted_character_templates/wc_drust_templates.txt @@ -0,0 +1,85 @@ +gorak_tul_character_template = { + age = 600 + name = Tul + gender = male + culture = culture:drust + faith = faith:throsic + dynasty_house = house:house_vigo + martial=5 diplomacy=5 stewardship=5 intrigue=6 learning=8 + trait=education_learning_4 trait=callous trait=patient trait=zealous trait=deceitful + trait = magic_good_3 + trait=creature_vrykul + random_traits = no + after_creation = { + really_make_important_lore_character_effect = yes + add_character_flag = gorak_tul_flag + } +} + +gorak_zhar_character_template = { + age = 600 + name = Zhar + gender = female + culture = culture:drust + faith = faith:throsic + dynasty_house = house:house_jormun + martial=3 diplomacy=5 stewardship=5 intrigue=6 learning=8 + trait=education_learning_4 trait=compassionate trait=calm trait=zealous trait=chaste trait=patient trait=brave + trait=creature_vrykul trait = lifestyle_mystic trait = magic_good_3 + random_traits = no + after_creation = { + really_make_important_lore_character_effect = yes + add_character_flag = gorak_zhar_flag + } +} + +ingra_maloch_character_template = { + age = 600 + name = Maloch + gender = male + culture = culture:drust + faith = faith:throsic + dynasty_house = house:house_koval + martial=6 diplomacy=3 stewardship=5 intrigue=3 learning=7 + trait=education_learning_4 trait=zealous trait=cruel trait=proud + trait=creature_vrykul trait = lifestyle_mystic trait = magic_good_2 + random_traits = no + after_creation = { + really_make_important_lore_character_effect = yes + add_character_flag = ingra_maloch_flag + } +} + +ingra_drif_character_template = { + age = 600 + name = Drif + gender = male + culture = culture:drust + faith = faith:throsic + dynasty_house = house:house_osigr + martial=6 diplomacy=3 stewardship=4 intrigue=5 learning=4 + trait=education_martial_4 trait=zealous trait=sturdy trait=brave trait=wrathful + trait=creature_vrykul + random_traits = no + after_creation = { + really_make_important_lore_character_effect = yes + add_character_flag = ingra_drif_flag + } +} + +ingra_saor_character_template = { + age = 600 + name = Saor + gender = male + culture = culture:drust + faith = faith:throsic + dynasty_house = house:house_norddahl + martial=5 diplomacy=5 stewardship=4 intrigue=4 learning=6 + trait=education_diplomacy_4 trait=zealous trait=shrewd trait=cruel trait=temperate trait=patient + trait=creature_vrykul + random_traits = no + after_creation = { + really_make_important_lore_character_effect = yes + add_character_flag = ingra_saor_flag + } +} \ No newline at end of file diff --git a/common/scripted_effects/wc_drust_effects.txt b/common/scripted_effects/wc_drust_effects.txt new file mode 100644 index 0000000000..b5fb897e9a --- /dev/null +++ b/common/scripted_effects/wc_drust_effects.txt @@ -0,0 +1,625 @@ +gorak_tul_create_court_effect = { # Gorak Tul Realm, Court and Army Setup + hidden_effect = { + ### Summon Gorak Tul's most trusted courtiers + # Gorak Zhar + create_character = { + template = gorak_zhar_character_template + save_scope_as = gorak_zhar + employer = scope:gorak_tul + } + scope:gorak_tul = { marry = scope:gorak_zhar } + add_hook = { + target = scope:gorak_zhar + type = loyalty_hook + } + + # Ingra Maloch + create_character = { + template = ingra_maloch_character_template + save_scope_as = ingra_maloch + employer = scope:gorak_tul + } + add_hook = { + target = scope:ingra_maloch + type = loyalty_hook + } + + # Ingra Drif + create_character = { + template = ingra_drif_character_template + save_scope_as = ingra_drif + employer = scope:gorak_tul + } + add_hook = { + target = scope:ingra_drif + type = loyalty_hook + } + + # Ingra Saor + create_character = { + template = ingra_saor_character_template + save_scope_as = ingra_saor + employer = scope:gorak_tul + } + add_hook = { + target = scope:ingra_saor + type = loyalty_hook + } + } +} + +gorak_tul_effect = { # Title management for Gorak Tul + ROOT = { save_scope_as = summoner } + set_variable = { + name = summoner + value = scope:summoner + } + + # Set up Titles + create_title_and_vassal_change = { + type = returned + save_scope_as = change + #add_claim_on_loss = no + } + title:k_drustvar = { + holder = { + if = { + limit = { NOT = { this = scope:summoner } } + add_opinion = { + target = scope:gorak_tul + modifier = revoked_title + opinion = -30 + } + } + } + change_title_holder = { + holder = scope:gorak_tul + change = scope:change + } + } + title:c_fates_end = { + holder = { + if = { + limit = { NOT = { this = scope:summoner } } + add_opinion = { + target = scope:gorak_tul + modifier = revoked_title + opinion = -30 + } + } + } + change_title_holder = { + holder = scope:gorak_tul + change = scope:change + } + } + title:b_fates_end = { + holder = { + if = { + limit = { NOT = { this = scope:summoner } } + add_opinion = { + target = scope:gorak_tul + modifier = revoked_title + opinion = -30 + } + } + } + change_title_holder = { + holder = scope:gorak_tul + change = scope:change + } + } + + scope:summoner = { + every_held_title = { + if = { + limit = { + tier = tier_kingdom + } + change_title_holder = { + holder = scope:gorak_tul + change = scope:change + } + } + else_if = { + limit = { + OR = { + NOT = { exists = scope:secondary_title } + tier > scope:secondary_title.tier + } + } + save_temporary_scope_as = secondary_title + } + } + } + + scope:summoner = { + if = { + limit = { + exists = scope:secondary_title + } + every_vassal = { + limit = { + primary_title.tier >= scope:secondary_title.tier + NOT = { + primary_title.tier = tier_barony + } + } + change_liege = { + liege = scope:gorak_tul + change = scope:change + } + } + } + } + + scope:summoner = { + change_liege = { + liege = scope:gorak_tul + change = scope:change + } + } + + resolve_title_and_vassal_change = scope:change + + if = { + limit = { + has_title = title:k_drustvar + } + set_primary_title_to = title:k_drustvar + title:k_drustvar = { + set_capital_county = title:c_fates_end + } + } + + scope:summoner = { + #Add Alliance + custom_tooltip = gorak_tul_negotiate_alliance_effect_tooltip + hidden_effect = { + create_alliance = { + target = scope:gorak_tul + allied_through_owner = this + allied_through_target = scope:gorak_tul + } + } + add_truce_both_ways = { + character = scope:gorak_tul + years = 5 + name = TRUCE_GORAK_TUL + } + } + #Set max authority + if = { + limit = { has_realm_law_flag = uses_crown_authority } + add_realm_law = crown_authority_3 + } + if = { + limit = { has_realm_law_flag = uses_tribal_authority } + add_realm_law = tribal_authority_3 + } + if = { + limit = { realm_law_use_dark_frenzy_trigger = yes } + change_dark_frenzy_effect = { VALUE = 50 } + } + + #Control Counties + every_held_county = { change_county_control = 100 } + title:c_fates_end = { + set_county_culture = culture:drust + set_county_faith = faith:throsic + } + + # Add hooks to loyal servant + add_hook = { + target = scope:summoner + type = loyalty_hook + } + scope:summoner = { + add_opinion = { + modifier = became_vassal + target = scope:gorak_tul + opinion = 50 + } + #Add Alliance + custom_tooltip = gorak_tul_negotiate_alliance_effect_tooltip + hidden_effect = { + create_alliance = { + target = scope:gorak_tul + allied_through_owner = this + allied_through_target = scope:gorak_tul + } + } + add_truce_both_ways = { + character = scope:gorak_tul + years = 5 + name = TRUCE_GORAK_TUL + } + if = { + limit = { + is_landed = no + } + set_employer = scope:gorak_tul + } + } + scope:gorak_tul = { + declare_war_on_kt_gorak_tul_effect = yes + } + + # Add initial buff + scope:gorak_tul = { + add_gold = 1000 + add_prestige = 500 + add_piety = 250 + add_dread = 50 + hidden_effect = { + add_character_modifier = { + modifier = wc_gorak_tul_initial_modifier + years = 10 + } + } + debug_log = "Gorak Tul has been summoned" + } +} + +gorak_tul_spawn_starting_troops_effect = { # Should give a massive army to counterbalance the Alliance + if = { + limit = { exists = capital_province } + spawn_army = { + uses_supply = no + inheritable = no + name = gorak_tul_elite_army_name + levies = 7500 + men_at_arms = { + type = hag_maa + stacks = 18 + } + men_at_arms = { + type = pikemen_unit + stacks = 18 + } + men_at_arms = { + type = armored_footmen + stacks = 18 + } + men_at_arms = { + type = mangonel + stacks = 15 + } + location = root.capital_province + origin = root.capital_province + } + } +} + +heartsbane_spawn_starting_troops_effect = { # Should give a massive army to counterbalance the Alliance + if = { + limit = { exists = capital_province } + spawn_army = { + uses_supply = no + inheritable = no + name = heartsbane_army_name + levies = 3000 + men_at_arms = { + type = hag_maa + stacks = 10 + } + men_at_arms = { + type = pikemen_unit + stacks = 12 + } + men_at_arms = { + type = armored_footmen + stacks = 12 + } + men_at_arms = { + type = mangonel + stacks = 8 + } + location = capital_province + } + } +} + +# Declare war on Kul Tiras (Heartsbane) +declare_war_on_kt_heartsbane_effect = { + debug_log = "Drustvar has declared war on Kul Tiras!" + debug_log_date = yes + + start_war = { + cb = independence_war + target = title:k_kul_tiras.holder + target_title = title:d_drustwar + } +} + +# Declare war on Kul Tiras (Gorak Tul) +declare_war_on_kt_gorak_tul_effect = { + debug_log = "Gorak Tul has begun invasion of Kul Tiras!" + debug_log_date = yes + + scope:gorak_tul = { + add_character_flag = { + flag = free_mongol_cb + days = 14 + } + start_war = { + cb = mongol_invasion_war + target = title:k_kul_tiras.holder + target_title = title:k_kul_tiras + } + } +} + +### WAR EFFECTS ### + +# Boralus bloodshed +drust_bloodshed_effect = { + $LOCATION$ = { save_scope_as = bloodshed_location } + set_variable = { + name = victims_killed + value = 0 + } + + set_variable = { + name = victims_enslaved + value = 0 + } + + every_hired_mercenary = { #Gets mercenaries hired by the Player + mercenary_company_leader = { + every_courtier = { + add_to_temporary_list = hired_characters + } + every_vassal_or_below = { + add_to_temporary_list = hired_characters + } + add_to_temporary_list = hired_characters + } + } + every_patroned_holy_order = { + leader = { + add_to_temporary_list = hired_characters + } + } + every_vassal_or_below = { + every_patroned_holy_order = { + leader = { + add_to_temporary_list = hired_characters + } + } + every_courtier = { + add_to_temporary_list = hired_characters + } + } + + + scope:bloodshed_location = { + hidden_effect = { + every_county_province = { + + every_character_in_location = { + limit = { + NOR = { + this = root + is_vassal_or_below_of = root + employer ?= root + is_courtier_of = root + is_in_list = hired_characters + } + } + save_scope_as = victim + + random_list = { + 5 = { + #Nothing + } + 15 = { + # Slave + prisoner_of_war_capture_effect = { + TARGET = scope:victim + IMPRISONER = root + } + root = { + change_variable = { + name = victims_enslaved + add = 1 + } + } + } + 85 = { + root = { + change_variable = { + name = victims_killed + add = 1 + } + } + override_death_effect = { death_reason = death_horde } + } + } + } + } + } + } + + hidden_effect = { # Dont unhide this or the TOOLTIP will show 0 people killed + send_interface_toast = { + title = drust_bloodshed.t + add_prestige = medium_prestige_gain + left_icon = root + if = { + limit = { + NAND = { + exists = var:victims_enslaved + exists = var:victims_killed + var:victims_killed = 0 + var:victims_enslaved = 0 + } + } + custom_tooltip = drust_bloodshed.d + } + } + remove_variable = victims_enslaved + remove_variable = victims_killed + } + + show_as_tooltip = { custom_tooltip = drust_bloodshed.residents } +} + +# Drust sack area +drust_sack_area_effect = { + $TITLE$ = { save_scope_as = target_title } + scope:target_title = { #Only for duchies + every_de_jure_county = { + limit = { + NOT = { this = { has_county_modifier = recently_sacked_by_the_drust_modifier } } + } + drust_sack_county_effect = { LOCATION = this } + } + } +} + +# Drust sack county +drust_sack_county_effect = { + $LOCATION$ = { save_scope_as = sacked_location } + + root = { add_gold = massive_gold_value } + scope:sacked_location = { + change_development_level = { # Lower Dev Level + value = { + add = development_level + multiply = { -0.8 -0.9 } + } + } + + change_county_control = { # Lower control + value = { add = monumental_county_control_loss } + } + + add_county_modifier = { + modifier = recently_sacked_by_the_drust_modifier + years = 20 + } + + every_county_province = { + if = { + limit = { # Remove all of the buildings + NOT = { has_holding_type = tribal_holding } + } + set_holding_type = tribal_holding + } + + barony = { + if = { + limit = { + exists = lessee + } + revoke_lease = yes + } + } + } + } +} + +# Drust take control of title +take_control_drust_effect = { + save_temporary_scope_as = target + $PREVIOUS_HOLDER$ = { save_temporary_scope_as = previous_holder } + $NEW_TITLE$ = { save_temporary_scope_as = conquered_title } + + create_title_and_vassal_change = { + type = conquest + save_scope_as = title_conquest + add_claim_on_loss = yes + } + + scope:previous_holder = { + scope:conquered_title = { + change_title_holder = { + holder = scope:target + change = scope:title_conquest + take_baronies = yes + } + } + } + resolve_title_and_vassal_change = scope:title_conquest + + scope:conquered_title = { + every_county_province = { + barony = { + if = { + limit = { + exists = lessee + } + revoke_lease = yes + } + } + } + } +} + +# Changes culture and faith on county scale +change_culture_and_faith_drust_effect = { + save_temporary_scope_as = target + + scope:conquered_title = { + set_county_culture = scope:target.culture + set_county_faith = scope:target.faith + } +} + +# Changes culture and faith on duchy scale +change_culture_and_faith_drust_area_effect = { + $TITLE$ = { save_scope_as = target_title } + $CHARACTER$ = { save_scope_as = target_character } + + + scope:target_title = { #Only for duchies + every_de_jure_county = { + limit = { + NOT = { + this.culture = scope:target_character.culture + this.faith = scope:target_character.faith + } + } + set_county_culture = scope:target_character.culture + set_county_faith = scope:target_character.faith + } + } +} + +# Drust sack area but not take control of it +drust_minor_sack_area_effect = { + $TITLE$ = { save_scope_as = target_title } + scope:target_title = { #Only for duchies + every_de_jure_county = { + limit = { + NOT = { this = { has_county_modifier = recently_sacked_by_the_drust_modifier } } + } + drust_minor_sack_county_effect = { LOCATION = this } + } + } +} + +# Drust sack county but not take control of it +drust_minor_sack_county_effect = { + $LOCATION$ = { save_scope_as = sacked_location } + + root = { add_gold = minor_gold_value } + scope:sacked_location = { + change_development_level = { # Lower Dev Level + value = { + add = development_level + multiply = { -0.1 -0.2 } + } + } + + change_county_control = { # Lower control + value = { add = medium_county_control_loss } + } + + add_county_modifier = { + modifier = recently_sacked_by_the_drust_modifier + years = 5 + } + } +} \ No newline at end of file diff --git a/common/scripted_modifiers/wc_drust_modifiers.txt b/common/scripted_modifiers/wc_drust_modifiers.txt new file mode 100644 index 0000000000..d89719849f --- /dev/null +++ b/common/scripted_modifiers/wc_drust_modifiers.txt @@ -0,0 +1,17 @@ +### Destruction caused by the Drust Incursion ### +recently_sacked_by_the_drust_modifier = { + icon = martial_negative + + levy_size = -0.5 + levy_reinforcement_rate = -0.5 + development_growth_factor = -0.5 + tax_mult = -0.5 +} + +brought_discipline_drust_modifier = { + icon = martial_negative + + dread_gain_mult = 0.1 + general_opinion = -10 + levy_size = -0.1 +} \ No newline at end of file diff --git a/common/scripted_triggers/wc_crisis_triggers.txt b/common/scripted_triggers/wc_crisis_triggers.txt index ef898bce57..c3923ecef4 100644 --- a/common/scripted_triggers/wc_crisis_triggers.txt +++ b/common/scripted_triggers/wc_crisis_triggers.txt @@ -30,6 +30,10 @@ } ruler_realm_is_on_same_continent_trigger = { CHARACTER = title:e_pandaria_empire.holder } } + trigger_if = { + limit = { exists = title:k_drustvar.holder NOT = { this = title:k_drustvar.holder } } + ruler_realm_is_on_same_continent_trigger = { CHARACTER = title:k_drustvar.holder } + } always = no } } @@ -38,6 +42,7 @@ is_crisis_trigger = { OR = { is_horde_invader_trigger = yes is_mogu_thunder_king_trigger = yes + is_drust_gorak_tul_trigger = yes is_existential_crisis_trigger = yes } } @@ -52,4 +57,32 @@ is_existential_crisis_trigger = { has_title = title:e_burning_legion has_title = title:e_black_empire } +} + +# Used in Drust Crisis events +drust_spouse_trigger = { + is_alive = yes + is_capable_adult = yes + is_imprisoned = no + + OR = { + is_ruler = no + government_has_flag = government_is_feudal + government_has_flag = government_is_tribal + } + + NOT = { has_character_flag = heartsbane_coven_declined_flag } + NOT = { has_trait = being_undead } +} +drust_sick_spouse_trigger = { + drust_spouse_trigger = yes + + character_disease_trigger = yes +} +drust_worried_spouse_trigger = { + drust_spouse_trigger = yes + + is_incapable = no + + character_disease_trigger = no } \ No newline at end of file diff --git a/common/scripted_triggers/wc_drust_triggers.txt b/common/scripted_triggers/wc_drust_triggers.txt new file mode 100644 index 0000000000..7471386523 --- /dev/null +++ b/common/scripted_triggers/wc_drust_triggers.txt @@ -0,0 +1,13 @@ +is_from_the_drust_trigger = { + OR = { + AND = { + has_title = title:k_drustvar + owns_story_of_type = story_drust_incursion + } + OR = { + is_vassal_or_below_of = title:k_drustvar.holder + employer ?= title:k_drustvar.holder + is_courtier_of = title:k_drustvar.holder + } + } +} \ No newline at end of file diff --git a/common/scripted_triggers/wc_health_triggers.txt b/common/scripted_triggers/wc_health_triggers.txt index dbeeb794a3..b07c9753d3 100644 --- a/common/scripted_triggers/wc_health_triggers.txt +++ b/common/scripted_triggers/wc_health_triggers.txt @@ -163,3 +163,16 @@ does_not_need_food_trigger = { } } } +character_disease_trigger = { + OR = { + has_trait = gout_ridden + has_trait = consumption + has_trait = cancer + has_trait = typhus + has_trait = bubonic_plague + has_trait = smallpox + has_trait = measles + has_trait = dysentery + has_trait = ergotism + } +} diff --git a/common/scripted_triggers/wc_war_triggers.txt b/common/scripted_triggers/wc_war_triggers.txt index 8210801d41..fc8865c55d 100644 --- a/common/scripted_triggers/wc_war_triggers.txt +++ b/common/scripted_triggers/wc_war_triggers.txt @@ -10,6 +10,7 @@ is_great_invader_trigger = { is_existential_crisis_trigger = yes is_horde_invader_trigger = yes is_mogu_thunder_king_trigger = yes + is_drust_gorak_tul_trigger = yes } } is_horde_invader_trigger = { @@ -22,6 +23,10 @@ is_mogu_thunder_king_trigger = { any_owned_story = { story_type = story_thunder_king } #has_trait = thunder_king } +is_drust_gorak_tul_trigger = { + any_held_title = { this = title:k_drustvar } + any_owned_story = { story_type = story_drust_incursion } +} is_good_war_target_trigger = { is_possible_war_target_trigger = { ATTACKER = $ATTACKER$ } diff --git a/common/story_cycles/wc_story_cycle_drust_incursion.txt b/common/story_cycles/wc_story_cycle_drust_incursion.txt new file mode 100644 index 0000000000..67a9e41f9e --- /dev/null +++ b/common/story_cycles/wc_story_cycle_drust_incursion.txt @@ -0,0 +1,36 @@ +story_drust_incursion = { + on_setup = { + if = { + limit = { + NOT = { + is_target_in_global_variable_list = { + name = unavailable_unique_decisions + target = flag:summon_gorak_tul + } + } + } + add_to_global_variable_list = { + name = unavailable_unique_decisions + target = flag:summon_gorak_tul + } + } + story_owner = { + save_scope_as = gorak_tul + var:summoner ?= { + save_scope_as = summoner + } + } + + # Spawn troops + story_owner = { + trigger_event = { + id = drust_crisis.5 + days = 2 + } + } + } + + on_owner_death = { + end_story = yes + } +} \ No newline at end of file diff --git a/events/decisions_events/wc_major_drust_events.txt b/events/decisions_events/wc_major_drust_events.txt new file mode 100644 index 0000000000..54247d7d98 --- /dev/null +++ b/events/decisions_events/wc_major_drust_events.txt @@ -0,0 +1,439 @@ +namespace = drust_crisis + +### DRUST INCURSION DECISION EVENTS ### +#Drust King, Gorak Tul contacts the grief-stricken spouse +drust_crisis.1 = { + type = character_event + title = drust_crisis.1.t + desc = drust_crisis.1.desc + theme = intrigue + override_background = wc_waycrest_manor + + left_portrait = { + character = scope:sick_spouse + animation = sick + } + + right_portrait = { + character = scope:worried_spouse + animation = grief + } + + # Not even death will do us part + option = { + name = drust_crisis.1.a + + scope:worried_spouse = { + add_trait = being_undead + set_character_faith = faith:throsic + } + scope:sick_spouse = { + add_trait = being_undead + set_character_faith = faith:throsic + } + + scope:sick_spouse = { trigger_event = drust_crisis.2 } + + title:d_drustwar.holder = { + # Gives troops + heartsbane_spawn_starting_troops_effect = yes + heartsbane_spawn_starting_troops_effect = yes + } + + # Independence stuff goes here + title:d_drustwar.holder = { + declare_war_on_kt_heartsbane_effect = yes + } + + # Notify the Admiral + title:k_kul_tiras.holder = { trigger_event = drust_crisis.3 } + + ai_chance = { + base = 1 + } + } + + # I refuse + option = { + name = drust_crisis.1.b + + add_character_flag = heartsbane_coven_declined_flag + + custom_tooltip = { + text = stops_the_event_chain + remove_global_variable = heartsbane_coven_event_var + remove_global_variable = drustvar_crisis_ongoing_var # Blocks summon_gorak_tul + } + + ai_chance = { + base = 0 + } + } +} + +#Ping the raised spouse +drust_crisis.2 = { + type = character_event + title = drust_crisis.2.t + desc = drust_crisis.2.desc + theme = intrigue + override_background = wc_waycrest_manor + + right_portrait = { + character = scope:sick_spouse + animation = disbelief + } + + left_portrait = { + character = scope:worried_spouse + animation = flirtation + } + + option = { + + name = drust_crisis.2.a # Dynloc is to be used depending on spouse's gender here, if male bargainer, Gorak raises his spouse as Mother of the Heartsbane + } +} + +#Notify the Admiral +drust_crisis.3 = { + type = character_event + title = drust_crisis.3.t + desc = drust_crisis.3.desc + theme = war + override_background = wc_boralus + + right_portrait = { + character = title:k_kul_tiras.holder + animation = worry + } + + immediate = { + remove_global_variable = drustvar_crisis_ongoing_var + } + + option = { + name = drust_crisis.3.a + } +} + +#Gorak Tul invades - triggered by Summon Gorak Tul decision +drust_crisis.4 = { + type = character_event + title = drust_crisis.4.t + desc = drust_crisis.4.desc + theme = war + override_background = wc_death_tree + + immediate = { + save_scope_as = summoner + set_global_variable = drust_incursion_happened # Locks the crisis opening event if it didn't happen + + # Summon Gorak Tul + create_character = { + template = gorak_tul_character_template + save_scope_as = gorak_tul + location = root.location + } + + # Set up Gorak Tul's assets + gorak_tul_effect = yes + gorak_tul_create_court_effect = yes + } + + left_portrait = { + character = scope:gorak_tul + animation = personality_honorable + } + + right_portrait = { + character = scope:summoner + animation = spymaster + } + + lower_left_portrait = { + character = scope:ingra_maloch + } + lower_right_portrait = { + character = scope:ingra_drif + } + lower_center_portrait = { + character = scope:ingra_saor + } + + option = { + name = drust_crisis.4.a + custom_tooltip = drust_crisis.4.a.tt + + trigger_event = drust_crisis.6 + } +} + +#Spawns Drust troops, fires the notifier event +drust_crisis.5 = { + type = character_event + hidden = yes + + immediate = { + gorak_tul_spawn_starting_troops_effect = yes + gorak_tul_spawn_starting_troops_effect = yes + + + every_player = { + limit = { get_news_from_region_trigger = { REGION = world_eastern_kingdoms } } + trigger_event = { id = drust_crisis.7 days = 1 } # Notification + } + } +} + +# Summoner swears fealty to Gorak Tul +drust_crisis.6 = { + type = character_event + title = drust_crisis.6.t + desc = drust_crisis.6.desc + theme = diplomacy + override_background = wc_death_tree + + immediate = { + save_scope_as = summoner + scope:gorak_tul = { + save_scope_as = gorak_tul + set_variable = { + name = summoner + value = ROOT + } + } + } + + left_portrait = { + character = ROOT + animation = celebrate_sword + } + + right_portrait = { + character = scope:gorak_tul + animation = war_over_win + } + + option = { + name = drust_crisis.6.a + set_player_character = scope:gorak_tul + ai_chance = { + base = 0 + } + } + + option = { + name = drust_crisis.6.b + } + after = { + scope:gorak_tul = { # Gorak Tul Setup + create_story = story_drust_incursion + } + } +} + +#Notify the Eastern Kingdoms +drust_crisis.7 = { + type = character_event + window = fullscreen_event + title = drust_crisis.7.t + desc = { + first_valid = { + triggered_desc = { # Throsic option + trigger = { faith = faith:throsic } + desc = drust_crisis.7.drust.desc + } + triggered_desc = { # Tirassian/Daeric option + trigger = { + OR = { + faith = faith:old_ways + faith = faith:tidemother + } + } + desc = drust_crisis.7.kt.desc + } + desc = drust_crisis.7.others.desc + } + } + theme = war + override_background = wc_fullscreen_kul_tiras + + option = { + name = { + text = { + first_valid = { + triggered_desc = { # Throsic option + trigger = { faith = faith:throsic } + desc = drust_crisis.7.a + } + triggered_desc = { # Tirassian/Daeric option + trigger = { + OR = { + faith = faith:old_ways + faith = faith:tidemother + } + } + desc = drust_crisis.7.b + } + desc = drust_crisis.7.c # Outsider option + } + } + } + } +} + +# Conquest of Boralus +drust_crisis.8 = { + title = drust_crisis.8.t + desc = drust_crisis.8.desc + type = character_event + theme = war + override_background = wc_boralus_siege + + left_portrait = { + character = root + animation = celebrate_axe + } + + #Kill them all! + option = { + trigger = { root = title:b_boralus.barony_controller } + name = drust_crisis.8.a + + drust_bloodshed_effect = { LOCATION = scope:county } + drust_sack_county_effect = { LOCATION = scope:county } + take_control_drust_effect = { + PREVIOUS_HOLDER = title:c_boralus.holder + NEW_TITLE = scope:county + } + change_culture_and_faith_drust_effect = yes + title:k_drustvar.holder = { + set_realm_capital = title:c_boralus + } + } + + # Kill them all! - Notification + option = { + trigger = { NOT = { root = title:b_boralus.barony_controller } } + name = drust_crisis.8.b + + show_as_tooltip = { + drust_bloodshed_effect = { LOCATION = scope:county } + } + } +} + +# Conquest of Boralus - Boralus side +drust_crisis.9 = { + title = drust_crisis.9.t + desc = drust_crisis.9.desc + type = character_event + theme = war + override_background = wc_boralus_siege + + right_portrait = { + character = root + animation = fear + } + + # For Kul Tiras! + option = { + name = drust_crisis.9.a + custom_tooltip = drust_crisis.9.tt.a + + show_as_tooltip = { + drust_bloodshed_effect = { LOCATION = scope:county } + } + } +} + +# Sacking of Tiragarde Sound +drust_crisis.10 = { + title = drust_crisis.10.t + desc = drust_crisis.10.desc + type = character_event + theme = war + override_background = wc_boralus_siege + + left_portrait = { + character = scope:new_holder + animation = war_over_win + } + + # Sack everything and capture the remnants + option = { + name = drust_crisis.10.a + custom_tooltip = drust_crisis.10.a.tt + + drust_sack_area_effect = { TITLE = title:d_tiragarde } + change_culture_and_faith_drust_area_effect = { + TITLE = title:d_tiragarde + CHARACTER = scope:new_holder + } + + ai_chance = { + base = 150 + } + } + + # Keep this untouched + option = { + name = drust_crisis.10.b + custom_tooltip = drust_crisis.10.b.tt + + add_character_modifier = { + modifier = brought_discipline_drust_modifier + years = 2 + } + drust_minor_sack_area_effect = { TITLE = title:d_tiragarde } + + ai_chance = { + base = 1 + } + } +} + +###################### +# DEBUG EVENT # +###################### + + +# test event 5 with root as worried spouse +drust_crisis.9005 = { + hidden = yes + orphan = yes + + immediate = { + save_scope_as = worried_spouse + + scope:worried_spouse = { + random_spouse = { + save_scope_as = sick_spouse + } + trigger_event = { + id = drust_crisis.5 + } + } + } +} + +# test event 6 with root as sick spouse +drust_crisis.9006 = { + hidden = yes + orphan = yes + + immediate = { + save_scope_as = sick_spouse + + scope:sick_spouse = { + random_spouse = { + save_scope_as = worried_spouse + } + trigger_event = { + id = drust_crisis.6 + } + } + } +} + diff --git a/gfx/interface/illustrations/decisions/drustvar.dds b/gfx/interface/illustrations/decisions/drustvar.dds new file mode 100644 index 0000000000..d05c07d093 Binary files /dev/null and b/gfx/interface/illustrations/decisions/drustvar.dds differ diff --git a/gfx/interface/illustrations/event_scenes/wc_boralus.dds b/gfx/interface/illustrations/event_scenes/wc_boralus.dds new file mode 100644 index 0000000000..546f6228c4 Binary files /dev/null and b/gfx/interface/illustrations/event_scenes/wc_boralus.dds differ diff --git a/gfx/interface/illustrations/event_scenes/wc_boralus_siege.dds b/gfx/interface/illustrations/event_scenes/wc_boralus_siege.dds new file mode 100644 index 0000000000..99efe3eb97 Binary files /dev/null and b/gfx/interface/illustrations/event_scenes/wc_boralus_siege.dds differ diff --git a/gfx/interface/illustrations/event_scenes/wc_death_tree.dds b/gfx/interface/illustrations/event_scenes/wc_death_tree.dds new file mode 100644 index 0000000000..686a4be29d Binary files /dev/null and b/gfx/interface/illustrations/event_scenes/wc_death_tree.dds differ diff --git a/gfx/interface/illustrations/event_scenes/wc_kul_tiras_full_screen.dds b/gfx/interface/illustrations/event_scenes/wc_kul_tiras_full_screen.dds new file mode 100644 index 0000000000..8406aa0b14 Binary files /dev/null and b/gfx/interface/illustrations/event_scenes/wc_kul_tiras_full_screen.dds differ diff --git a/gfx/interface/illustrations/event_scenes/wc_waycrest_manor.dds b/gfx/interface/illustrations/event_scenes/wc_waycrest_manor.dds new file mode 100644 index 0000000000..0968bf459b Binary files /dev/null and b/gfx/interface/illustrations/event_scenes/wc_waycrest_manor.dds differ diff --git a/localization/english/culture/wc_culture_titles_l_english.yml b/localization/english/culture/wc_culture_titles_l_english.yml index 7a701c571d..ad15739532 100644 --- a/localization/english/culture/wc_culture_titles_l_english.yml +++ b/localization/english/culture/wc_culture_titles_l_english.yml @@ -247,6 +247,18 @@ drottning_female_kvaldir_duke:0 "Drottning" drottlag_kvaldir_duchy:0 "Drottlag" + ### Drust Special ### + # Feudal + ingra_male_drust_duke:0 "Ingra" + ingra_female_drust_duke:0 "Ingra" + ingralag_drust_duchy:0 "Ingralag" + gorak_male_drust_king:0 "Gorak" + gorak_female_drust_king:0 "Gorak" + gorakdom_drust_kingdom:0 "Gorakdom" + high_gorak_male_drust_emperor:0 "High Gorak" + high_gorak_female_drust_emperor:0 "High Gorak" + high_gorakdom_drust_empire:0 "High Gorakdom" + ### Lucardir Special ### # Feudal blood_thane_male_lucardir_count:0 "Blood-Thane" diff --git a/localization/english/dynasties/wc_dynasty_names_l_english.yml b/localization/english/dynasties/wc_dynasty_names_l_english.yml index bd01a49eba..8f9e2f2a44 100644 --- a/localization/english/dynasties/wc_dynasty_names_l_english.yml +++ b/localization/english/dynasties/wc_dynasty_names_l_english.yml @@ -9376,7 +9376,14 @@ dynn_Deepfin:0 "Deepfin" dynn_Muckskin:0 "Muckskin" dynn_Murkmouth:0 "Murkmouth" - + + ### Drust ### + dynn_Vigo:0 "Vigo" + dynn_Jormun:0 "Jormun" + dynn_Koval:0 "Koval" + dynn_Osigr:0 "Osigr" + dynn_Norddahl:0 "Norddahl" + Harmon:0 "Harmon" Holyoak:0 "Holyoak" Quarvel:0 "Quarvel" diff --git a/localization/english/event_localization/wc_drust_events_l_english.yml b/localization/english/event_localization/wc_drust_events_l_english.yml new file mode 100644 index 0000000000..c3d86fb08c --- /dev/null +++ b/localization/english/event_localization/wc_drust_events_l_english.yml @@ -0,0 +1,48 @@ +l_english: + drust_crisis.1.t:0 "The Face in the Floor" + drust_crisis.1.desc:0 "\"Rest well, my love.\"\n\n The candle burns out on another evening as [ROOT.Char.GetName]'s nightly vigil over [ROOT.Char.GetHerHis] sicky spouse, [sick_spouse.GetFirstName] comes to a close. Eyes heavy with exhaustion and nascent tears, [ROOT.Char.GetTitledFirstNameNoTooltip] rises quietly from [ROOT.Char.GetHerHis] chair, gingerly exits the guest bedroom, and rests [ROOT.Char.GetHerHis] head against the ornate hallway wallpaper.\n\nIt has been months since [sick_spouse.GetTitledFirstNameNoTooltip] first fell ill; and no magic, no potion, no remedy can cure [sick_spouse.GetHerHim]. In a rush of emotion and stress, the tears become a waterfall, cascading down [ROOT.Char.GetTitledFirstNamePossessiveNoTooltip] cheeks.\n\"Oh Gods," [ROOT.Char.GetSheHe] sobs, \"oh powers of this world and beyond, I beg of you. I plead of you! I would do anything to see [sick_spouse.GetHerHim] well!\"\n\n\"Would you serve?\"\n\n A voice comes from the floor where [ROOT.Char.GetTitledFirstNamePossessiveNoTooltip] tears stained the ancient floorboards. It is a soft voice at first, creaky like old stairs underfoot. [ROOT.Char.GetTitledFirstNameNoTooltip] opens [ROOT.Char.GetHerHis] eyes.\nThere in the floorboard right before the baseboard a face with glowing blue eyes framed by hornlike growths stares upwards, its square jaw locked in grim and assured authority. Something has made its way into this world, through a tiny window of wood— Something with an ancient power that [ROOT.Char.GetTitledFirstNameNoTooltip] can sense intuitively.\n\n\"Would you serve?\" The tiny face asks again, its loudening voice laden with intent and expectation as it appears to swell and expand to take up [ROOT.Char.GetHerHis] entire field of view.\n \"WOULD YOU SERVE— #EMP ME#!?\"" + drust_crisis.1.a:0 "For [sick_spouse.GetHerHim]? I would. With all my heart." + drust_crisis.1.b:0 "You're just a hallucination! You'll get nothing from me!"" + + drust_crisis.2.t:0 "The Face Behind the Door" + drust_crisis.2.desc:0 "A laden cough escapes [ROOT.Char.GetNamePossessive] lungs, waking [ROOT.Char.GetHerHim] in the dark predawn hours and producing a choking wad of phlegm. A sudden, panicked, drowning feeling overcomes [ROOT.Char.GetTitledFirstNameNoTooltip], and all that keeps it from overcoming [ROOT.Char.GetHerHim] with suffocation is the continued fit of coughing. Whirling, confused by illness, [ROOT.Char.GetTitledFirstNamePossessiveNoTooltip] mind immediately goes to [ROOT.Char.GetHerHis] [worried_spouse.GetWifeHusband] [worried_spouse.GetTitledFirstName], as if the thought might be [ROOT.Char.GetHerHis] last.\n\nSuddenly, as if summoned, [worried_spouse.GetTitledFirstNameNoTooltip] calmly opens the door, a small bowl in [worried_spouse.GetHerHis] off-hand. She looks thoroughly exhausted but overcome with a strange animating energy as [worried_spouse.GetSheHe] smiles.\n\"My love!\" [worried_spouse.GetTitledFirstNameNoTooltip] says dotingly above [ROOT.Char.GetTitledFirstNamePossessiveNoTooltip] coughing as [worried_spouse.GetSheHe] places the bowl under [ROOT.Char.GetHerHis] nose, \"breathe in as deeply as you can.\"\nThe smell overcomes the coughing [ROOT.Char.GetTitledFirstNameNoTooltip], a smell like rotting pine and brimstone that makes [ROOT.Char.GetHerHis] arm hairs stand on end. Suddenly, [ROOT.Char.GetHerHis] breath returns with a jold. Yet before he can speak, [worried_spouse.GetTitledFirstNameNoTooltip] shushes [ROOT.Char.GetHerHim].\n\"All is well,\" [worried_spouse.GetSheHe] says, \"All #italic will#! be well. I have found someone to help us.\"\n\nOver [ROOT.Char.GetHerHis] [worried_spouse.GetWifeHusband]'s shoulder, in the dark space where the door was left open, something appears to fade into view— A face, wooden and grainy with glowing blue eyes set deep beneath a pair of hornlike growths and above a grim, authoritative, glowering square jaw. The world seems to warp around the face, pulling it towards [ROOT.Char.GetTitledFirstNamePossessiveNoTooltip] field of view. It keeps growing, and [ROOT.Char.GetSheHe] can feel its othworldly power in the scent from the bowl that lingers in [ROOT.Char.GetHerHis] nose. [ROOT.Char.GetTitledFirstNameNoTooltip] closes [ROOT.Char.GetHerHis] eyes, overcome with a fearful resignation to the eldritch power that now surges through him." + drust_crisis.2.a:0 "#italic [worried_spouse.GetTitledFirstNameNoTooltip], what have you done?#!" + + drust_crisis.3.t:0 "Crisis in [GetTitleByKey('d_drustvar').GetNameNoTier]" + drust_crisis.3.desc:0 "Over the past few weeks, the ruling elite of the [GetTitleByKey('d_drustvar').GetName]has gone dark; millitary communiques went unacknowledged and noble invitations went unanswered. The situation became critical days ago as food supplies to the rest of [GetTitleByKey('k_kul_tiras').GetNameNoTier] petered out and have recently been replaced by scattered refugees bearing strange rumors and dark news. Abandoned wives and orphaned children report entire families disappearing from their homes, their fields, and roads which were once deemed safe. Frantic refugees describe shadowy covens lurking in the darkest recesses of [GetTitleByKey('d_drustvar').GetNameNoTier]'s forests, corrupting the land and replacing its populace with strange constructs of wood and bone. Many believe that these strange occurences are caused by an ancient curse which has befallen the ruling house of [GetTitleByKey('d_drustvar').GetNameNoTier]. To counter whatever this new threat might be, an inquisition comprised of many battle-hardened champions from [GetTitleByKey('k_kul_tiras').GetNameNoTier] and beyond has been called to action." + drust_crisis.3.a:0 "Let us hope that the situation will be contained swiftly." + + drust_crisis.4.t:0 "The Summoning of Gorak Tul" + drust_crisis.4.desc:0 "\"One last broken, severed limb; one last wrap of hidebound bark— and so, the wicker effigy is complete. Now to begin the ritual, to cast the spell to give it unlife and mold it into the Master's visage.\"\n\nAll around [ROOT.Char.GetName], a ring of hooded figures begins a chant older than the name of [[GetTitleByKey('k_kul_tiras').GetNameNoTier] and the air begins to charge with dark power. [ROOT.Char.GetTitledFirstName] begins to chant, face obscured under [ROOT.Char.GetHerHis] hood as [ROOT.Char.GetHeShe] takes a few steps back, slowly lifting [ROOT.Char.GetHerHis] hands in adulation. The shadows of the ancient, undying trees that arc and crisscross the night sky begin to darken, as if they are absorbing the very blackness of night into themselves.\n\nSuddenly, there is a crack like a rotting trunk breaking beneath its own weight. The effigy itself begins to shift, shake, and fuse with itself. The mask over its head, the severed and skinned skull of a [GetTitleByKey('c_fallhaven').GetNameNoTier] dockworker, bends as if made of clay and melts into the flyblown tissue. Rarified darkness pours from the cursed trees into the wicker effigy and its form takes on the sculpted muscle and smooth skin of a Vrykul. As the chant reaches a crescendo, the former effigy steps forward. No longer a crude statue; it is a fusion of tree and Vrykul that is graceful, strong, and terrifying— a Drust. The face that [ROOT.Char.GetTitledFirstName] saw long ago in Waycrest Manor is now given flesh and form, and it is magnificent. The chant ceases, the ritual complete, and the ancient being raises its head to speak.\n\n\"Gorak Tul stands before you. All who do not kneel shall fall.\"" + drust_crisis.4.a:0 "Night has fallen on the isles of [GetTitleByKey('k_kul_tiras').GetNameNoTier]." + drust_crisis.4.a.tt:0 "Gorak Tul is summoned to Azeroth and the Drust onslaught begins." # note - when GT is implemented make sure he is scoped so that he can be tooltipped in this localization + + drust_crisis.6.t:0 "Vengeance of Thros" + drust_crisis.6.desc:0 "Something about an adequate reward for our servants in Drustvar." # note - when GT is implemented make sure he is scoped so that he can be tooltipped in this localization + drust_crisis.6.a:0 "Tremble, outlanders. The vengeance of Thros is upon you!" + drust_crisis.6.b:0 "We shall serve and be of service." + + drust_crisis.7.t:0 "The Drust Incursion" + drust_crisis.7.drust.desc:0 "At last. The eons of preparations have finally paid off. Our servants in Drustvar have summoned the armies of Thros into Fate's End, the staging ground for our reclamation of our ancient homeland." + drust_crisis.7.kt.desc:0 "It is as we feared. The Drust have risen and their armies are set upon our kingdom." + drust_crisis.7.others.desc:0 "Troubling news has reached us from [GetTitleByKey('k_kul_tiras').GetName]. An unknown type of corruption has befallen the westernmost region of Drustvar, with shadowy covens and constructs never seen before roaming the land. Apparently, the local elites have managed to strike some kind of bargain with an ancient group of vrykul-looking humanoids called Drust, and now their vile armies gather on the island of [GetTitleByKey('c_fates_end').GetNameNoTier], preparing to strike at the heart of the isle. We can only hope this threat can be contained, lest they set their sights beyond the isles." + drust_crisis.7.a:0 "Show no mercy." + drust_crisis.7.b:0 "We shall not falter." + drust_crisis.7.c:0 "Disconcerting." + + drust_crisis.8.t:0 "The Conquest of [GetTitleByKey('c_boralus').GetNameNoTier]" + drust_crisis.8.desc:0 "A lone figure stands atop the highest remaining tower of the ruined, battered, and burining ruin that was once Proudmoore Keep. Though three times as tall as a man, he is barely visible to a ground level observer. The normally bustling city has gone quiet in the wake of the advancing Drust army, its canals and streets choked with the dead and dismembered, thoroughfares running red with blood. The scant human survivors are now crowded in what was once known as Unity Square, menaced by the brutal Wicker Constructs and held in magically enforced silence by the coven witches.\n\nA cowering figure ascends the stairs to address the lone, towering figure as he surveys the helpless throng— mostly women, children, and the elderly— gathered below like a heard of cattle ready for slaughter. The figure kneels in supplication, her face just inches away from the Drust lord's boot.\n\n\"My Lord Gorak Tul,\" she wheezes, \"The infidels are ready for your judgement, their pathetic city laid low before your armies. What shall be their fate?\"" + drust_crisis.8.a:0 "Kill them all. Burn it to the ground." + drust_crisis.8.b:0 "Begin the enthrallment ritual at once." + + drust_crisis.9.t:0 "The Fall of [GetTitleByKey('c_boralus').GetNameNoTier]" + drust_crisis.9.desc:0 "Under the cover of mists a lone dinghy limps ashore, its prow grinding against the rocks of a sheltered fjord on the outer edge of Tiragarde Sound. The lifeboat's twelve occupants are dressed in the once-proud colors of [GetTitleByKey('k_kul_tiras').GetName], and every one of their uniforms is in a torn and bloodied disarray. Their armor and weapons largely discarded in the swim to safety, the able soldiers use their remaining strength to help wounded comrades to shore.\n Beneath an escarpment not far ahead, a few weathered tents are gathered around a small stockpile of food and equipment. The harried soldiers wince as their battle wounds strain under the effort of carrying their broken bodies up the rocky beach; but far worse is the pain of knowing that those they swore to defend were even now being rounded up to be put to death— or suffer a fate far worse. As the group lamentfully makes its way ashore, a few young pages rush out from the largest tent to meet them with squalid water, powdery hardtack, and bandages wrought from the torn sails of scuttled ships.\n\nThis is all that now remains of the proud defenders of [GetTitleByKey('c_boralus').GetNameNoTier]." + drust_crisis.9.a:0 "If this is not the end, it will be here soon." + drust_crisis.9.a.tt:0 "The fate of[GetTitleByKey('c_boralus').GetNameNoTier] is now in the hands of the Drust." + + drust_crisis.10.t:0 "The Occupation of Tiragarde Sound" + drust_crisis.10.desc:0 "Over the hills and bridges, from Drustvar they marched in a seemingly endless line; zombies, wicker constructs, the Drust arrayed with magicked wooden armor, and the coven of witches who served them. The line snaked across half of [GetTitleByKey('k_kul_tiras').GetNameNoTier] and into the heartland of the region, Tiragarde Sound, which surrounded the capitol of [GetTitleByKey('c_boralus').GetNameNoTier]. Even the great battles fought in defense of this land have not managed to diminish the endless army of Drust and their conspirators. The long line terminates in a massive encampent located in a strategic cluster of hills; favored for its defenisbility, the view of its surroundings, and the mass of nearby graves and barrows ripe for plunder. In the main tent, Gorak Tul stands astride his high council of reusurrected Drust nobility and their witch servants.\n\n\"My Lord Gorak Tul,\" wheezes one of the witches, her ragged robes shaking under her effort to speak in a feeble appearance that belied the unbelievable necrotic and void powers concentrated in her barely-living husk of a body, \"The infidels have been scattered, and the environs are ours to plunder as you see fit. Does the work of these wretches please you as a foundation for the Drust way?\"\n"\FAUGH!\"One of the Drust generals spits in disgust, \"The Drust shall not cower in the blasphemous tinder-piles and scoured fields of these rats! Let us put it all to the torch, erase the mistake that has been their millennia-long blight upon our islands!\"" + drust_crisis.10.a:0 "Keep what is useful to us and uproot the rest." + drust_crisis.10.a.tt:0 "PH" # can you describe what happens + drust_crisis.10.b:0 "Scour this land for every wretched trace of the Human stain." + drust_crisis.10.b.tt:0 "PH" # can you describe what happens \ No newline at end of file diff --git a/localization/english/names/wc_character_names_l_english.yml b/localization/english/names/wc_character_names_l_english.yml index 4a4fedc0b1..50983b13ce 100644 --- a/localization/english/names/wc_character_names_l_english.yml +++ b/localization/english/names/wc_character_names_l_english.yml @@ -18327,6 +18327,11 @@ Kuk'Ald:0 "Kuk'Ald" Tcha'Du:0 "Tcha'Du" Shrok:0 "Shrok" + Tul:0 "Tul" + Zhar:0 "Zhar" + Maloch:0 "Maloch" + Drif:0 "Drif" + Saor:0 "Saor" Kolkanis:0 "Kolkanis" Krom'zar:0 "Krom'zar" Stonearm:0 "Stonearm" @@ -18628,4 +18633,4 @@ Leaxa:0 "Leaxa" Ja_rin:0 "Ja'rin" Vejcovod:0 "Ve'jco'vod" - Murlocus:0 "Murlocus" \ No newline at end of file + Murlocus:0 "Murlocus" diff --git a/localization/english/wc_decisions_l_english.yml b/localization/english/wc_decisions_l_english.yml index e7c06796f2..62a5e84fce 100644 --- a/localization/english/wc_decisions_l_english.yml +++ b/localization/english/wc_decisions_l_english.yml @@ -199,6 +199,14 @@ resurrect_kelthuzad_decision_effect_tt2: "Kel'Thuzad shall be reborn as a [GetTrait('creature_lich').GetName(GetNullCharacter)] and will join your court." resurrect_kelthuzad_decision_confirm: "For the Lich King!" + # Summon Gorak Tul into material plane + summon_gorak_tul:0 "Summon the armies of Gorak Tul" + summon_gorak_tul_desc:0 "With our hold over Drustvar secure, we are now able to summon the mighty armies of Thros and their King, Gorak Tul into the material plane. With his return, the vengeance of the ancient drust can finally be unleashed upon the living of Kul Tiras." + summon_gorak_tul_tooltip:0 The ruler of [GetTitleByKey('d_drustwar').GetName] summons the warband of Gorak Tul." + summon_gorak_tul_confirm:0 "Let the nightmare begin." + heartsbane_coven_formed:0 "The Heartsbane Coven has been formed" + summon_gorak_tul_decision_tt:0 "You [completely_control|E] [GetTitleByKey('d_drustwar').GetNameNoTier] as [GetTrait('magic_good_3').GetName(GetNullCharacter)] independent Throsic ruler." + # Thorium Brotherhood thorium_invite_craftsmen_decision:0 "Invite Craftsmen from Thorium Brotherhood" thorium_invite_craftsmen_decision_desc:0 "The Thorium Brotherhood comprises many exceptionally talented craftsmen, and the blacksmiths of the Brotherhood are rumored to be among the finest Azeroth has ever seen. Using the formulas they have created or acquired, they make enchanted weapons and armor for anyone who can meet their exorbitant prices." diff --git a/localization/english/wc_titles_cultural_names_l_english.yml b/localization/english/wc_titles_cultural_names_l_english.yml index 0b9cf3c94d..23d6f8f703 100644 --- a/localization/english/wc_titles_cultural_names_l_english.yml +++ b/localization/english/wc_titles_cultural_names_l_english.yml @@ -7,6 +7,10 @@ cn_krazzworks:0 "Krazzworks" cn_hammerfall:0 "Hammerfall" + # Drust + cn_new_inath:0 "New Inath" + cn_new_inath_adj:0 "New Inathi" + # Quilboar cn_briarback:0 "Briarback" cn_briarback_adj:0 "Briarback"