diff --git a/common/script_values/wc_arthas_expedition_values.txt b/common/script_values/wc_arthas_expedition_values.txt index 0edf162d02..f7054fe746 100644 --- a/common/script_values/wc_arthas_expedition_values.txt +++ b/common/script_values/wc_arthas_expedition_values.txt @@ -97,6 +97,15 @@ find_uther_value = { limit = { has_trait = temperate } add = 10 } + + if = { + limit = { exists = character:60036 this = character:60036 } + add = 100 + } + if = { + limit = { is_landed = yes } + add = 20 + } } find_jaina_value = { value = 0.001 diff --git a/common/scripted_effects/wc_arthas_expedition_effects.txt b/common/scripted_effects/wc_arthas_expedition_effects.txt index d8d0f87d43..38e51c7416 100644 --- a/common/scripted_effects/wc_arthas_expedition_effects.txt +++ b/common/scripted_effects/wc_arthas_expedition_effects.txt @@ -17,21 +17,23 @@ set_global_variable = { name = arthas_character value = this } } } + find_uther_effect = { every_courtier = { add_to_temporary_list = valid_uthers } every_vassal = { add_to_temporary_list = valid_uthers } top_liege = { every_courtier = { add_to_temporary_list = valid_uthers } every_vassal = { add_to_temporary_list = valid_uthers } + every_vassal = { every_vassal = { add_to_temporary_list = valid_uthers } } + every_vassal = { every_vassal = { every_vassal = { add_to_temporary_list = valid_uthers } } } } faith = { every_faith_holy_order = { leader = { add_to_temporary_list = valid_uthers } } } + every_player = { add_to_temporary_list = valid_uthers } ordered_in_list = { - limit = { - is_ai = yes - - can_be_invited_in_arthas_expedition_trigger = { INVITER = scope:host } + limit = { # Uther wont be invited with the normal trigger + is_available_for_activity_trigger = yes } list = valid_uthers order_by = find_uther_value diff --git a/events/activities/arthas_expedition_activity/wc_arthas_expedition_events.txt b/events/activities/arthas_expedition_activity/wc_arthas_expedition_events.txt index fd230a0575..c16e9d79a3 100644 --- a/events/activities/arthas_expedition_activity/wc_arthas_expedition_events.txt +++ b/events/activities/arthas_expedition_activity/wc_arthas_expedition_events.txt @@ -56,9 +56,9 @@ wc_arthas_story.10 = { immediate = { if = { limit = { root = scope:host } - find_uther_effect = yes find_jaina_effect = yes + scope:uther = { if = { limit = { is_commanding_army = yes } @@ -124,6 +124,7 @@ wc_arthas_story.10 = { name = wc_arthas_story_10_OPT_arthas } } + # Everything around looks dead, you find an abandoned farm, is attacked by undead inside, briefly see Kel'Thuzad wc_arthas_story.15 = { type = activity_event @@ -298,6 +299,7 @@ wc_arthas_story.30 = { NOT = { root = scope:host } } } + on_trigger_fail = { # Stops the event chain if = { @@ -398,11 +400,11 @@ wc_arthas_story.30 = { if = { limit = { root = scope:host } share_event_with_group_delay_effect = { ID = wc_arthas_story.35 DAYS = 1 } - trigger_event = { id = wc_arthas_story.40 days = @stratholme_delay } } } } -# Arthas tells you about his decision (it depends on Arthas' decision above) + +# Arthas tells you about his decision (it depends on Arthas' decision above & Uther's interference) wc_arthas_story.35 = { type = activity_event title = { @@ -480,6 +482,7 @@ wc_arthas_story.35 = { purge_event_modifier = yes } + } # Stay (evacuate) option = { @@ -521,10 +524,18 @@ wc_arthas_story.35 = { } } trigger = { - NAND = { - scope:activity = { has_variable = jaina } - scope:activity.var:jaina = { is_alive = yes } - root = scope:activity.var:jaina + NOR = { + AND = { + scope:stratholme_action = flag:purge + scope:activity = { has_variable = uther } + root = scope:activity.var:uther + scope:activity.var:uther = { is_alive = yes } + } + AND = { + scope:activity = { has_variable = jaina } + scope:activity.var:jaina = { is_alive = yes } + root = scope:activity.var:jaina + } } } @@ -540,6 +551,37 @@ wc_arthas_story.35 = { } } } + # Uther's Reaction, might leave + option = { + name = wc_arthas_story_35_OPT_B_purge_uther + + trigger = { + scope:stratholme_action = flag:purge + scope:activity = { has_variable = uther } + scope:activity.var:uther = { is_alive = yes } + root = scope:activity.var:uther + scope:activity.var:uther = { is_ai = no } # no ai + scope:activity.var:uther = { is_uther_trigger = yes } #real uther + } + + scope:activity.var:uther = { + add_character_flag = uther_decision + trigger_event = { + id = uther_events.002 + } + } + + custom_tooltip = uther_tooltip + + ai_chance = { + base = 15 + + modifier = { + scope:activity.var:uther ?= root + add = 5 + } + } + } # Leave - Jaina option = { name = { @@ -580,6 +622,27 @@ wc_arthas_story.35 = { } } } + after = { + if = { + limit = { scope:activity.var:uther = { + has_character_flag = uther_decision + } } + #wait for uther decision + trigger_event = { + id = wc_arthas_story.40 + days = 6 + } + # This gives enough time for a decision to be made, and for arthas to do it, and then to decide to sail + current_travel_plan = { + delay_travel_plan = { days = 6 } + } + } + else = { + # continue like normal + trigger_event = { id = wc_arthas_story.40 days = 3 } + } + } + } # Arthas does what he wanted with the city (it depends on Arthas' decision above) wc_arthas_story.40 = { @@ -644,9 +707,25 @@ wc_arthas_story.40 = { } immediate = { + if = { #changes arthas decision based on uther event + limit = { scope:host = { has_character_flag = uther_q } } + save_scope_value_as = { name = stratholme_action value = flag:quarantine } + scope:host = { add_character_flag = { flag = original_purge days = 30 } } + current_travel_plan = { + delay_travel_plan = { days = 10 } + } + } + if = { + limit = { scope:host = { has_character_flag = uther_e } } + save_scope_value_as = { name = stratholme_action value = flag:evacuate } + scope:host = { add_character_flag = { flag = original_purge days = 30 } } + current_travel_plan = { + delay_travel_plan = { days = 10 } + } + } if = { limit = { root = scope:host } - + arthas_find_terenas_effect = yes scope:activity = { @@ -676,7 +755,7 @@ wc_arthas_story.40 = { } } } - + if = { limit = { scope:stratholme_action = flag:purge } purge_event_effect = yes @@ -688,19 +767,22 @@ wc_arthas_story.40 = { else = { quarantine_event_effect = yes } + } # Sail Northrend option = { trigger = { root = scope:host - scope:stratholme_action = flag:purge + OR = { + scope:host = { has_character_flag = original_purge } + scope:stratholme_action = flag:purge + } } name = wc_arthas_story_40_OPT_D sail_northrend_event_effect = yes - share_event_with_group_delay_effect = { ID = wc_arthas_story.45 DAYS = 1 } arthas_find_terenas_effect = yes global_var:terenas_character = { trigger_event = { id = wc_arthas_story.50 days = 1 } @@ -770,7 +852,6 @@ wc_arthas_story.40 = { } } } - # Reaction for world option = { trigger = { is_in_arthas_expedition_trigger = no } @@ -803,6 +884,17 @@ wc_arthas_story.40 = { } } } + after = { + if = { + limit = { + OR = { + scope:host = { has_character_flag = original_purge } + scope:stratholme_action = flag:purge + } + } + } + share_event_with_group_delay_effect = { ID = wc_arthas_story.45 DAYS = 1 } + } } # Arthas tells you about his plan to sail Northrend to chase Mal'ganis wc_arthas_story.45 = { diff --git a/events/wc_events/wc_uther_events.txt b/events/wc_events/wc_uther_events.txt index e426ab9104..b307a34d35 100644 --- a/events/wc_events/wc_uther_events.txt +++ b/events/wc_events/wc_uther_events.txt @@ -5,9 +5,11 @@ uther_events.001 = { title = uther_events.001.t desc = uther_events.001.d theme = dread - + override_background = { + reference = throne_room + } right_portrait = { - character = scope:uther + character = scope:uther animation = sadness } @@ -36,10 +38,12 @@ uther_events.001 = { # Anger at arthas option = { name = uther_events.001.b + set_relation_rival = { reason = rival_heresy target = scope:arthas } + add_trait = depressed_1 hidden_effect = { @@ -52,13 +56,329 @@ uther_events.001 = { # Protect lordaeron option = { name = uther_events.001.c + trigger = { + NOT = { has_trait = being_undead } + } + if = { + limit = { NOT = { faith = faith:scarlet } } + set_character_faith = faith:scarlet + } + add_trait = zealous - set_character_faith = faith:scarlet - + add_prowess_skill = 5 + hidden_effect = { stress_impact = { base = 150 } } } +} + +# The Culling +uther_events.002 = { + type = activity_event + title = uther_events.002.t + desc = uther_events.002.d + theme = plague + override_background = { + reference = wc_stratholme + } + + left_portrait = { + character = root + animation = disbelief + } + right_portrait = { + character = scope:host + animation = personality_bold + } + + #just in case + trigger = { + is_uther_trigger = yes + } + + immediate = { + stress_impact = { + base = medium_stress_impact_gain + } + involved_activity = { + save_scope_as = activity + } + save_scope_as = uther + } + + # Leave + option = { + name = uther_events.002.a + # Continue as normal + #scope:activity = { trigger_event = { id = wc_arthas_story.40 days = 3 } } + leave_arthas_expedition_event_effect = yes + } + + # Try and convince Arthas otherwise + option = { + name = uther_events.002.b + duel = { + target = scope:host + skills = { prowess intrigue } + 50 = { + modifier = { #rng + add = { -5 10 } + is_alive = yes + } + compare_modifier = { + value = scope:duel_value + multiplier = 3.5 + min = -49 + } + custom_tooltip = uther_win_tooltip + trigger_event = { + id = uther_events.003 + } + } + 50 = { #You lose + compare_modifier = { + value = scope:duel_value + multiplier = -3.5 + min = -49 + } + custom_tooltip = uther_lose_tooltip + trigger_event = { + id = uther_events.004 + } + } + } + } +} + +# Convince - Win +uther_events.003 = { + type = activity_event + title = uther_events.003.t + desc = uther_events.003.d + theme = plague + + override_background = { + reference = wc_stratholme + } + + left_portrait = { + character = root + animation = thinking + } + right_portrait = { + character = scope:host + animation = personality_rational + } + + #just in case + trigger = { + is_uther_trigger = yes + } + # Quarantine Instead + option = { + name = uther_events.003.a + scope:host = { add_character_flag = {flag = uther_q days=10} } + } + + # Evacuate instead + option = { + name = uther_events.003.b + scope:host = { add_character_flag = {flag = uther_e days=10} } + } + + # Arthas choice + option = { + name = uther_events.003.c + hidden_effect = { + random_list = { + 40 = { # he decides to quarantine + scope:host = { add_character_flag = {flag = uther_q days=10} } + } + 40 = { # evac + scope:host = { add_character_flag = {flag = uther_e days=10} } + } + 20 = { #betray + # no flag for arthas + add_character_flag = {flag = arthas_betrayal days=10} + } + } + } + } + + after = { + if = { + limit = { NOT = { has_character_flag = arthas_betrayal } } + #notify group of change + share_event_with_group_delay_effect = { + ID = uther_events.035 + DAYS = 1 + } + } + else = { + trigger_event = { + id = uther_events.004 + } + } + } +} + +#Notif for group +uther_events.035 = { + type = activity_event + title = uther_events.003.t + desc = { + desc = uther_events.035.d + triggered_desc = { + trigger = { scope:host = { has_character_flag = uther_q } } + desc = uther_events.035.d_q + } + triggered_desc = { + trigger = { scope:host = { has_character_flag = uther_e } } + desc = uther_events.035.d_e + } + } + + theme = plague + + trigger = { + NOT = { root = scope:host } + } + + left_portrait = { + character = root + animation = happiness + } + + right_portrait = { + character = scope:host + animation = personality_bold + } + + override_background = { + reference = wc_stratholme + } + + option = { + name = uther_events.035.a + } + + option = { # why would he consider doing that + name = uther_events.035.b + add_opinion = { + target = scope:host + modifier = disappointed_opinion + opinion = -15 + } + } + + after = { + remove_character_flag = uther_decision + # Continue as normal + #scope:activity = { trigger_event = { id = wc_arthas_story.40 days = 3 } + } +} + +# Convince - Fail +uther_events.004 = { + type = activity_event + title = uther_events.003.t + desc = { + first_valid = { + triggered_desc = { + trigger = { has_character_flag = arthas_betrayal } + desc = uther_events.004.d_betrayal + } + } + desc = uther_events.004.d + } + theme = plague + + override_background = { + reference = wc_stratholme + } + + left_portrait = { + character = root + animation = sadness + } + right_portrait = { + character = scope:host + animation = anger + } + + #just in case + trigger = { + is_uther_trigger = yes + } + + immediate = { + #kick arthas out of silver hand + } + + # Oh well... + option = { + name = uther_events.004.a + + random_list = { + 40 = { + progress_towards_rival_effect = { + CHARACTER = scope:host + REASON = rival_purge_stratholme + OPINION = -15 + } + stress_impact = { + base = massive_stress_impact_gain + } + } + 40 = { + progress_towards_rival_effect = { + CHARACTER = scope:host + REASON = rival_purge_stratholme + OPINION = -30 + } + stress_impact = { + base = major_stress_impact_gain + } + } + 20 = { + add_trait = depressed_1 + stress_impact = { + base = medium_stress_impact_gain + } + } + } + leave_arthas_expedition_event_effect = yes + } + + # He must pay... + option = { + name = uther_events.004.b + + add_trait = vengeful + set_character_faith = faith:scarlet + + progress_towards_rival_effect = { + CHARACTER = scope:host + REASON = rival_purge_stratholme + OPINION = -40 + } + leave_arthas_expedition_event_effect = yes + } + + # decide to stay? + + option = { + name = uther_events.004.c + custom_tooltip = uther_stay_tooltip + } + + + after = { + remove_character_flag = uther_decision + # Continue as normal + #scope:activity = { trigger_event = { id = wc_arthas_story.40 days = 3 } } + } } \ No newline at end of file diff --git a/localization/english/event_localization/wc_arthas_expedition_events_l_english.yml b/localization/english/event_localization/wc_arthas_expedition_events_l_english.yml index ed276ea40a..fee5d32644 100644 --- a/localization/english/event_localization/wc_arthas_expedition_events_l_english.yml +++ b/localization/english/event_localization/wc_arthas_expedition_events_l_english.yml @@ -45,6 +45,7 @@ wc_arthas_story_35_OPT_A_purge:0 "It must be done." wc_arthas_story_35_OPT_A_evacuate:1 "[GetGlobalVariable('arthas_character').Char.GetTitledFirstName], I'm with you." wc_arthas_story_35_OPT_B_purge:1 "Have you lost your mind, [GetGlobalVariable('arthas_character').Char.GetFirstName]?" + wc_arthas_story_35_OPT_B_purge_uther:0 "This cannot be your decision, [GetGlobalVariable('arthas_character').Char.GetFirstName]..." wc_arthas_story_35_OPT_B_evacuate:0 "Enough... I'm leaving." wc_arthas_story_40_DESC_purge_group:1 "Following [GetGlobalVariable('arthas_character').Char.Custom2('GetTitledFirstNamePossessiveOrMy', ROOT.Char)] decision, tormented screams and fierce battles echo through the streets. The boundary between living and undead, good and evil, blurs until indistinguishable. The culling is unbroken during the day and continues far into the night; the flames of the burning city illuminate the dark sky. Our spirits are held up solely by [GetGlobalVariable('arthas_character').Char.Custom2('GetTitledFirstNamePossessiveOrMy', ROOT.Char)] monomaniacal will.\n\nInside the city, we find [GetGlobalVariable('malganis').Char.GetFirstName] and defeat [GetGlobalVariable('malganis').Char.GetHerHis] army. However the demon [GetGlobalVariable('malganis').Char.GetHerHim]self escaped, taunting us with an invitation to settle the score in the arctic continent of Northrend.\n\nThree days pass until the city is reduced to nothing but cinders; only then do [GetGlobalVariable('arthas_character').Char.Custom2('GetTitledFirstNamePossessiveOrMy', ROOT.Char)] soldiers finally find time to catch their breaths." @@ -59,7 +60,6 @@ wc_arthas_story_40_OPT_B_positive:0 "How pity..." wc_arthas_story_40_OPT_B_neutral:0 "Interesting." wc_arthas_story_40_OPT_D:0 "To the ends of the earth!" - wc_arthas_story_45_TITLE:0 "Ends of the Earth" wc_arthas_story_45_DESC:1 "The surviving citizens pile the corpses of the dead onto pyres. Our group quickly learns that the undead commander [GetGlobalVariable('malganis').Char.GetFirstName] has fled to the frozen continent of Northrend, and our commander requires us to pursue [GetGlobalVariable('malganis').Char.GetHerHim] across the sea.\n\nWith the undead forces at [GetGlobalVariable('stratholme').Title.GetNameNoTier] defeated, many members of our expedition feel our mission is complete, yet [GetGlobalVariable('arthas_character').Char.GetFirstName], in [GetGlobalVariable('arthas_character').Char.GetHerHis] beginning madness, seems intent on hunting [GetGlobalVariable('malganis').Char.GetFirstName] to the ends of the earth. We are to rally at the shores of the city with [GetGlobalVariable('arthas_character').Char.GetFirstName] to man the navy ships and set sail." wc_arthas_story_45_OPT_A:0 "I'll follow!" diff --git a/localization/english/event_localization/wc_uther_events_l_english.yml b/localization/english/event_localization/wc_uther_events_l_english.yml index d360822b3b..a12a5d72f9 100644 --- a/localization/english/event_localization/wc_uther_events_l_english.yml +++ b/localization/english/event_localization/wc_uther_events_l_english.yml @@ -3,4 +3,28 @@ uther_events.001.d:0 "By the light!\n\nCrisis has befallen Lordaeron. Prince Arthas has returned from Northrend, consumed by madness. He has slain his own father and now seeks to bring destruction to Lordaeron and beyond.\n\nHow could this happen? I was his mentor, it was my duty to instill in him the virtues of the Silver Hand. Even when he crossed the line and purged the innocent at Stratholme, he still sought to protect the kingdom. All rulers must make difficult decisions to protect their people. But now, I must make my own.\n\nMy fellow paladins have gathered, and now I am to lead them in destroying the undead Scourge. But with Arthas at it's helm, that will mean killing him..." uther_events.001.a:0 "No, I cannot. I shall discard my hammer, forever." uther_events.001.b:0 "Damn it, I will put you down, Arthas." - uther_events.001.c:0 "Lordaeron must be protected at any cost." \ No newline at end of file + uther_events.001.c:0 "Lordaeron must be protected at any cost." + uther_tooltip:0 "You will try and convince [GetGlobalVariable('arthas_character').Char.GetFirstName] otherwise, or abandon the investigation." + uther_win_tooltip:0 "You convince him successfully." + uther_lose_tooltip:0 "You fail to convince him." + uther_stay_tooltip:0 "You will stay in the investigation party." + uther_events.002.t:0 "The Culling" + uther_events.002.d:0 "I nearly shudder when I hear the words come out of Arthas' mouth... #italic Purge?#! Who are we to sacrifice the innocents of Stratholme in pursuit of eradicating this plague?\n\nSurely this does not coincide with what I have been teaching him, and to kill is not a task that should be taken so lightly. Surely, there must be another way to save Stratholme. I must contemplate what the best course of action is from here, and quickly." + uther_events.002.a:0 "I cannot watch you do this, [GetGlobalVariable('arthas_character').Char.GetFirstName]!" + uther_events.002.b:0 "Maybe I can convince him otherwise..." + uther_events.003.t:0 "The Fate of Stratholme" + uther_events.003.d:0 "Fortunately, I have succeeded in convincing Arthas there is another way to proceed with Strathlome. But now, the real battle begins. We must devise another way to save the city, as its citizens are in dire need of our help.\n\nWe should..." + uther_events.003.a:0 "...Quarantine the city instead." + uther_events.003.b:0 "...Evacuate everyone." + uther_events.003.c:0 "...do whatever [GetGlobalVariable('arthas_character').Char.GetFirstName] wants." + uther_events.035.d:0 "Rejoice!\n\n[GetGlobalVariable('arthas_character').Char.GetTitledFirstName] has decided on another plan. We will be trying something less... #italic extreme#!.\n\nBecause of [uther.GetName]," + uther_events.035.d_q:0 " we will be attempting the quarantine the city instead. This will be a more gentle approach to the situation, albeit we will have quite the problem on our hand if it fails." + uther_events.035.d_e:0 " the city will be evacuated. We must be careful to identify sick citizens, so they do not spread the plague. This method will be risky, but it is better than them being dead..." + uther_events.035.a:0 "Thank the light! He was brought to his senses." + uther_events.035.b:0 "Why did he even consider that?" + uther_events.004.d_betrayal:0 "To my surprise, [GetGlobalVariable('arthas_character').Char.GetFirstName] has gone behind my back and decided to purge Strathlome once again! I can't believe he's done this.\n\n" + uther_events.004.d:0 "[GetGlobalVariable('arthas_character').Char.GetFirstName] has gone mad! My attempts to convince [GetGlobalVariable('arthas_character').Char.GetHerHim] have failed, and now others must suffer for my lacking. I do not believe I can continue to mentor [GetGlobalVariable('arthas_character').Char.GetFirstName] in this condition.\n\nThis day will be ever remembered as a grave historic trauma for my cherished Kingdom of Lordaeron. Innocents will die at [GetGlobalVariable('arthas_character').Char.GetFirstNamePossessive] hand, and I cannot stop him. May they and the $HighGodNameAlternate$ forgive me." + uther_events.004.a:0 "He cannot be saved." + uther_events.004.b:0 "I must take a more drastic approach." + uther_events.004.c:0 "There is nothing I can do..." + rival_purge_stratholme:0 "Purged Stratholme" \ No newline at end of file