UnitSetData.NPC_Hades = { -- Hades NPC_Hades_Field_01 = { InheritFrom = { "NPC_Neutral", "NPC_Giftable" }, Portrait = "Portrait_Hades_Chained_01", AnimOffsetZ = 0, Groups = { "NPCs" }, SubtitleColor = Color.HadesVoice, Icon = "BoonSymbolHades", EmoteOffsetY = -280, EmoteOffsetX = 45, InvincibubbleScale = 1.2, RequiredRoomInteraction = true, TreatAsGodLootByShops = true, ExcludeFromLastRunBoon = true, IgnoreRestrictBoonChoices = true, IgnoreTempRarityBonus = true, BlockForceCommon = true, BlockDoubleBoon = true, OnUsedFunctionName = "UseLoot", OnUsedFunctionArgs = { SkipInteractAnim = true, SkipSound = true, ResetUseText = true, PreserveContextArt = true, }, RecheckConversationOnLootPickup = true, SpeakerName = "Hades", LightingColor = { 255, 0, 0, 255 }, LootColor = { 242, 49, 46, 255 }, UpgradeScreenOpenSound = "/SFX/Enemy Sounds/Hades/HadesSummonPresentation3", UpgradeSelectedSound = "/SFX/Menu Sounds/KeepsakeHadesSigil2", MenuTitle = "UpgradeChoiceMenu_Hades", PriorityUpgrades = { }, WeaponUpgrades = { }, -- if this gets updated, please also update ChronosBossAboutHades02 = Traits = { "HadesLifestealBoon", "HadesCastProjectileBoon", "HadesPreDamageBoon", "HadesChronosDebuffBoon", "HadesDashSweepBoon", "HadesDeathDefianceDamageBoon", "HadesManaUrnBoon", -- Legendary "HadesInvisibilityRetaliateBoon", }, LoadPackages = { "NPC_Hades_Field_01", "Hades", }, Consumables = { }, RarityChances = { Common = 1, Legendary = 0.1, }, RarityRollOrder = { "Common", "Heroic" }, FlavorTextIds = { "HadesUpgrade_FlavorText01", "HadesUpgrade_FlavorText02", "HadesUpgrade_FlavorText03", }, SetupEvents = { { GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, FunctionName = "GenericPresentation", Args = { SetAnimation = "Hades_Unchained_Idle", ThingProperties = { GrannyModel = "HadesEnding_Mesh" }, OverwriteSourceKeys = { PortraitSwapMap = { Portrait_Hades_Chained_01 = "Portrait_LordHades_01", Portrait_Hades_Chained_02 = "Portrait_LordHades_Averted_01", }, Speaker = "NPC_LordHades_01", }, EndFunctionName = "SwapAnimations", EndFunctionArgs = { Hades_Idle = "Hades_Unchained_Idle", Hades_Hello = "Hades_Unchained_Hello", Hades_Brooding = "Hades_Unchained_Brooding", Hades_Blessing = "Hades_Unchained_Blessing", Hades_Blessing_Short = "Hades_Unchained_Blessing_Short", }, }, } }, UpgradeMenuOpenVoiceLines = { { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.1, Queue = "Always", UsePlayerSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "HadesAboutUltimateProgress03" }, }, }, { Cue = "/VO/MelinoeField_5082", Text = "Con không có ý định đó..." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.2, Queue = "Always", UsePlayerSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "HadesAboutChronosNightmare01" }, }, }, { Cue = "/VO/MelinoeField_1570", Text = "Chúng ta có mọi cơ hội trên thế giới..." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.0, Queue = "Always", UsePlayerSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "HadesAboutAutomatons01" }, }, }, { Cue = "/VO/MelinoeField_2834", Text = "Họ... chiến đấu rất tốt." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 0.9, Queue = "Always", UsePlayerSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "HadesWithPersephoneAboutCerberus01" }, }, }, { Cue = "/VO/MelinoeField_5180", Text = "Không phải lúc nào cũng vậy..." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 0.9, Queue = "Always", UsePlayerSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "HadesWithPersephoneAboutBackstory01" }, }, }, { Cue = "/VO/MelinoeField_5221", Text = "Vì thời trang ư? Hah, không phải..." }, }, }, SpecialInteractFunctionName = "SpecialInteractSalute", SpecialInteractGameStateRequirements = { OrRequirements = { { { PathTrue = { "GameState", "UseRecord", "NPC_Hades_Field_01" }, }, }, { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, }, }, SpecialInteractCooldown = 60, InteractVoiceLines = { { PlayOnceThisRun = true, PreLineWait = 0.25, RandomRemaining = true, UsePlayerSource = true, SuccessiveChanceToPlayAll = 0.2, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 4 }, }, { Cue = "/VO/MelinoeField_1566", Text = "Bảo trọng nhé, Cha." }, { Cue = "/VO/MelinoeField_1567", Text = "Ta phụng sự, trong bóng tối!" }, { Cue = "/VO/Melinoe_5165", Text = "Chào Cha!", PlayFirst = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" }, Alive = false }, }, }, }, { Cue = "/VO/Melinoe_5064", Text = "Mẹ hãy bảo trọng!", GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, }, { Cue = "/VO/Melinoe_5065", Text = "Cảm ơn Cha Mẹ đã ở đây.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, }, { Cue = "/VO/Melinoe_5066", Text = "Rất vui được gặp mọi người.", GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, }, { Cue = "/VO/Melinoe_5067", Text = "Mẹ bảo trọng.", GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, { { RandomRemaining = true, PreLineWait = 0.28, -- PreLineAnim = "Persephone_Greet_Start", ObjectType = "NPC_Persephone_01", { Cue = "/VO/Persephone_0050", Text = "Con cũng vậy, con yêu.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5064" }, }, }, }, { Cue = "/VO/Persephone_0051", Text = "Chỉ để gặp con thôi.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5065" }, }, }, }, { Cue = "/VO/Persephone_0052", Text = "Oh, Con Gái...", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5066" }, }, }, }, { Cue = "/VO/Persephone_0053", Text = "Con cũng vậy.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5067" }, }, }, }, { Cue = "/VO/Persephone_0054", Text = "{#Emph}", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5066", "/VO/Melinoe_5067" }, }, }, }, { Cue = "/VO/Persephone_0055", Text = "Xin chào!", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698", "/VO/Melinoe_1699" }, }, }, }, { Cue = "/VO/Persephone_0056", Text = "Ít nhất là vẫn như cái cũ.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1700" }, }, }, }, { Cue = "/VO/Persephone_0057", Text = "Oh, cảm ơn con.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1701", "/VO/Melinoe_1703" }, }, }, }, { Cue = "/VO/Persephone_0058", Text = "Bọn ta sẽ dùng nó.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1704" }, }, }, }, { Cue = "/VO/Persephone_0059", Text = "Bọn ta sẽ cần đến nó.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1705" }, }, }, }, }, { RandomRemaining = true, PreLineWait = 0.3, ObjectType = "NPC_Hades_Field_01", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, }, { Cue = "/VO/Hades_0253", Text = "Xin chào.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698", "/VO/Melinoe_1699" }, }, }, }, { Cue = "/VO/Hades_0254", Text = "Chào Con Gái.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698", "/VO/Melinoe_1699", "/VO/Melinoe_5165" }, }, }, }, { Cue = "/VO/Hades_0255", Text = "Bóng tối hợp với ta hơn.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1701", "/VO/Melinoe_1703" }, }, }, }, { Cue = "/VO/Hades_0256", Text = "Đi trong lặng lẽ.", PreLineAnim = "Hades_Hello", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1567", "/VO/Melinoe_1705" }, }, }, }, { Cue = "/VO/Hades_0127", Text = "{#Emph}Hrm.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1566", "/VO/MelinoeField_1566", "/VO/Melinoe_1709", "/VO/Melinoe_1700", "/VO/Melinoe_1704" }, }, }, }, { Cue = "/VO/Hades_0136", Text = "To shadow, you'll return.", PlayFirst = true, PreLineAnim = "Hades_Hello", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1567" }, }, }, }, }, { RandomRemaining = true, PreLineWait = 0.4, PreLineAnim = "Hades_Hello", ObjectType = "NPC_Hades_Field_01", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, }, { Cue = "/VO/Hades_0127", Text = "{#Emph}Hrm.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1566", "/VO/MelinoeField_1566" }, }, }, }, { Cue = "/VO/Hades_0131", Text = "Ô, Con Gái.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1566", "/VO/MelinoeField_1566" }, }, }, }, { Cue = "/VO/Hades_0128", Text = "Chào...", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698", "/VO/Melinoe_1699" }, }, }, }, { Cue = "/VO/Hades_0129", Text = "Bọn ta đã từng thử một lần.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1700" }, }, }, }, { Cue = "/VO/Hades_0130", Text = "Cái Chết...", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1700" }, }, }, }, { Cue = "/VO/Hades_0132", Text = "Ở đây thì không được.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1704", "/VO/Melinoe_1709" }, }, }, }, { Cue = "/VO/Hades_0133", Text = "Ở đây?", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1703", "/VO/Melinoe_1704", "/VO/Melinoe_1705", "/VO/Melinoe_1709" }, }, }, }, { Cue = "/VO/Hades_0134", Text = "Theo ý con vậy.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1703", "/VO/Melinoe_1705" }, }, }, }, { Cue = "/VO/Hades_0135", Text = "Chào...", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698", "/VO/Melinoe_1699" }, }, }, }, { Cue = "/VO/Hades_0136", Text = "To shadow, you'll return.", PlayFirst = true, GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1567" }, }, }, }, }, }, }, InteractTextLineSets = { -- not yet found Chronos HadesFirstMeeting = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasNone = { "HadesFirstMeeting_B", "HadesFirstMeeting_C" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0049", Speaker = "NPC_Unnamed_01", SpeakerLabelOffsetY = 18, PreLineAnim = "Hades_Brooding", -- PreLineAnim = "Hades_Hello", -- PreLineAnim = "Hades_Brooding", -- PreLineAnim = "Hades_Blessing", -- PreLineAnim = "Hades_Blessing_Short", Text = "{#Emph}Pah! {#Prev}Lại một kẻ tra tấn khác đến chỉ để cố gắng khiến ta quy phục sao? Nhưng lần này lại cử đến một kẻ yếu đuối như thế này. Chẳng lẽ Đấng Titan đã hết người để cử đến rồi sao?" }, { Cue = "/VO/Melinoe_1056", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài... là... chủ nhân của con thú này sao?" }, { Cue = "/VO/Hades_0026", Speaker = "NPC_Unnamed_01", SpeakerLabelOffsetY = 18, EndSound = "/VO/CerberusBarks", PreLineAnim = "Hades_Blessing_Short", Text = "{#Emph}Chủ nhân của con thú này? Ha, haha! {#Prev}Phải, nếu ta được nhớ đến với tư cách là chủ nhân của nó, ta có thể khiến ấn tượng đó khủng khiếp hơn nhiều. Tuy nhiên, {#Emph}con thú {#Prev}này vẫn chưa hề gầm gừ với ngươi..." }, { Cue = "/VO/Melinoe_1057_B", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", PreLineWait = 0.35, Text = "{#Emph} {#Prev}Ngài Hades, ngài là.... Cha, con là... Melinoë đây. Con là con gái của cha." }, { Cue = "/VO/Hades_0027", Portrait = "Portrait_Hades_Chained_02", Emote = "PortraitEmoteSurprise", PreLineAnim = "Hades_Hello", Text = "...Con gái ta, Melinoë? Xin Định Mệnh hãy nhân từ...! Con không được ở đây. Hắn sẽ tìm thấy con. Hắn sẽ tìm thấy con và..." }, { Cue = "/VO/Melinoe_1058", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "...Con sẽ giết hắn ngay tại chỗ. Hắn đang ở đâu?" }, { Cue = "/VO/Hades_0028", PreLineAnim = "Hades_Brooding", Text = "Hắn đang ở trong Lãnh Địa của ta! Nơi mà đáng lẽ ra dành cho con và ta. Nhìn ta này, Con Gái. Ta đã không thể đối đầu với hắn một mình. Con mong điều gì sẽ xảy ra chứ?" }, { Cue = "/VO/Melinoe_1059", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con hy vọng hắn sẽ đánh giá thấp con. Thưa Cha, hãy để con giải thoát Cha khỏi những xiềng xích này." }, { Cue = "/VO/Hades_0029", PreLineAnim = "Hades_Brooding", Text = "{#Emph}Không! {#Prev}Đừng, việc này chỉ càng khiến tình hình tồi tệ hơn, không gì hơn. Ngay bây giờ, con hãy rời khỏi nơi này. Tuy nhiên, hãy để ta ban cho con một phần sức mạnh mà ta vẫn còn." }, }, -- found but not vanquished Chronos HadesFirstMeeting_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "RoomsEntered", "I_Boss01" }, }, { PathFalse = { "GameState", "EnemyKills", "Chronos" }, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "HadesFirstMeeting", "HadesFirstMeeting_C" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0049", Speaker = "NPC_Unnamed_01", SpeakerLabelOffsetY = 18, PreLineAnim = "Hades_Brooding", Text = "{#Emph}Pah! {#Prev}Another tormentor come to break me, or to try. And such a frail one, at that. Has the Titan Lord a lack for decent help?" }, { Cue = "/VO/Melinoe_1056", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "You... are you... the master of this beast?" }, { Cue = "/VO/Hades_0026", Speaker = "NPC_Unnamed_01", SpeakerLabelOffsetY = 18, EndSound = "/VO/CerberusBarks", PreLineAnim = "Hades_Blessing_Short", Text = "{#Emph}The master of this beast? Ha, haha! {#Prev}Well, if I'm to be remembered, I could think of far worse ways than that. Though, this {#Emph}beast {#Prev}has yet to so much as snarl at you..." }, { Cue = "/VO/Melinoe_1057_B", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", PreLineWait = 0.35, Text = "{#Emph} {#Prev}Lord Hades, you're my.... Father, I'm... Melinoë. I'm your daughter." }, { Cue = "/VO/Hades_0027", Portrait = "Portrait_Hades_Chained_02", Emote = "PortraitEmoteSurprise", PreLineAnim = "Hades_Hello", Text = "...My daughter. Melinoë. Merciful Fates...! You cannot be here. He shall find you. He'll find you, and..." }, { Cue = "/VO/MelinoeField_1689", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "...Con sẽ giết hắn ngay tại chỗ. Hắn có đang ở trong khu vực này không?" }, { Cue = "/VO/Hades_0028", PreLineAnim = "Hades_Brooding", Text = "He's in my blasted House! Where you were meant to be, and I. Look at me, Daughter. I could not confront him on my own. What do you expect shall happen?" }, { Cue = "/VO/Melinoe_1059", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "I expect he'll underestimate me. Father, let me free you from these bonds!" }, { Cue = "/VO/Hades_0029", PreLineAnim = "Hades_Brooding", Text = "{#Emph}No! {#Prev}No, that would bring greater ruin, nothing more. Now, get out of this place. Though let me lend to you what strength I still possess." }, }, -- already vanquished Chronos HadesFirstMeeting_C = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ZagreusPastFirstMeeting" }, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "HadesFirstMeeting", "HadesFirstMeeting_B" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0049", Speaker = "NPC_Unnamed_01", SpeakerLabelOffsetY = 18, PreLineAnim = "Hades_Brooding", Text = "{#Emph}Pah! {#Prev}Another tormentor come to break me, or to try. And such a frail one, at that. Has the Titan Lord a lack for decent help?" }, { Cue = "/VO/Melinoe_1056", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "You... are you... the master of this beast?" }, { Cue = "/VO/Hades_0026", Speaker = "NPC_Unnamed_01", SpeakerLabelOffsetY = 18, EndSound = "/VO/CerberusBarks", PreLineAnim = "Hades_Blessing_Short", Text = "{#Emph}The master of this beast? Ha, haha! {#Prev}Well, if I'm to be remembered, I could think of far worse ways than that. Though, this {#Emph}beast {#Prev}has yet to so much as snarl at you..." }, { Cue = "/VO/Melinoe_1057_B", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", PreLineWait = 0.35, Text = "{#Emph} {#Prev}Lord Hades, you're my.... Father, I'm... Melinoë. I'm your daughter." }, { Cue = "/VO/Hades_0027", Portrait = "Portrait_Hades_Chained_02", Emote = "PortraitEmoteSurprise", PreLineAnim = "Hades_Hello", Text = "...My daughter. Melinoë. Merciful Fates...! You cannot be here. He shall find you. He'll find you, and..." }, { Cue = "/VO/MelinoeField_1688", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "...I'll slay him where he stands. And not for the first." }, { Cue = "/VO/Hades_0145", PreLineAnim = "Hades_Brooding", Text = "{#Emph}Không phải lần đầu tiên{#Prev}, thật ư? Vậy thì con hẳn đã biết hành động đó là vô nghĩa chứ! Ta không thể tự mình chống lại hắn. Mặc dù ta đã đánh nhau với hắn trước đây. Đã từng {#Emph}giết {#Prev}hắn!" }, { Cue = "/VO/MelinoeField_1690", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con xin lỗi, thưa Cha. Nhưng con sẽ không dừng lại, kể cả cha đã khuyên. Giờ hãy để con giải thoát cha khỏi những xiềng xích này!" }, { Cue = "/VO/Hades_0029", PreLineAnim = "Hades_Brooding", Text = "{#Emph}No! {#Prev}No, that would bring greater ruin, nothing more. Now, get out of this place. Though let me lend to you what strength I still possess." }, }, HadesMeeting02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0031", PreLineAnim = "Hades_Brooding", Text = "Con lại đến đây làm gì nữa? Ta đã bảo con rồi, con {#Emph}không được {#Prev}đến đây!" }, { Cue = "/VO/Melinoe_1061", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Và con cũng đã nói với {#Emph}cha {#Prev}rồi, con sẽ trở lại vì cha. Nhưng mục đích chính của con vẫn là Chronos. Cha đã từng đánh bại hắn trước đây. Cha có thể tiết lộ cho con điểm yếu của hắn được không? Bất cứ điều gì?" }, { Cue = "/VO/Hades_0032", Text = "{#Emph}Ta {#Prev}đã đánh bại hắn với sự giúp đỡ của {#Emph}năm vị thần khác! {#Prev}Con hy vọng vào điều gì chứ, một mình con ư? Hắn không có điểm yếu, ngoại trừ sự kiêu ngạo. Và có vẻ như con cũng có điểm yếu đó." }, { Cue = "/VO/Melinoe_1062", UsePlayerSource = true, PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Mel_Vulnerable_01", WaitTime = 2.5 }, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có vẻ như bọn con đã ngang hàng ngang sức với nhau nhỉ. Thưa Cha, Cha đã bị giam cầm ở đây bao lâu rồi? Con có thể làm được gì giúp cha không?" }, { Cue = "/VO/Hades_0033", Text = "Con nghĩ ta có thể cảm nhận được thời gian ở một nơi như thế này không? Và ta đã nói những gì con có thể làm: {#Emph}Đừng có đánh cược mọi thứ. Rời khỏi đây ngay và đừng để bị phát hiện{#Prev}." }, }, HadesMeeting03 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { Force = true, { PathTrue = { "GameState", "RoomsEntered", "I_Boss01" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0034", Portrait = "Portrait_Hades_Chained_02", Text = "Ta không biết con sẽ chống lại Titan như thế nào, nếu con đã thực sự đối mặt với hắn. Nhưng ngay lúc này, hãy nói cho ta biết; Con có... ổn không?" }, { Cue = "/VO/Melinoe_1063", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con... ổn không? Cả cuộc đời con đã chuẩn bị cho thời khắc này, đưa kẻ chiếm đoạt Lãnh Địa của Hades ra trước công lý. Vậy nên, con sẽ trả lời sau, còn tùy thuộc vào tình hình đang diễn ra." }, { Cue = "/VO/Hades_0035", PreLineWait = 0.35, PreLineAnim = "Hades_Brooding", Portrait = "Portrait_Hades_Chained_02", Text = "...Ta xin lỗi... ta xin lỗi. Hãy báo cho ta biết nếu con cần giúp đỡ. Ta sẽ hỗ trợ con hết sức có thể. Nhưng đây là tất cả những gì ta có thể giúp con lúc này." }, }, HadesAboutPain01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/MelinoeField_1495", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineThreadedFunctionName = "PlayCharacterAnim", PreLineThreadedFunctionArgs = { Name = "MelTalkBrooding01", WaitTime = 1, UsePlayerSource = true }, PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con rất đau lòng khi thấy Cha như thế này. Nhưng nó mang đến sự thanh thản trong con. Và cả sức mạnh nữa. May mắn là không có Satyrs nào trong căn phòng này..." }, { Cue = "/VO/Hades_0053", Text = "Ô, bọn chúng đủ khôn ngoan để giữ khoảng cách với ta... hoặc có lẽ là Cerberus. Nếu việc nhìn ta trong tình trạng đáng thương như thế này lại khiến con tức giận tột độ, thì hãy cứ nổi giận đi." }, { Cue = "/VO/MelinoeField_1496", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cũng không hẳn là vậy; con không cảm thấy căm ghét hay thù hận. Có lẽ là ở nơi nào đó trong Tartarus, nhưng không phải ở đây. Không còn nữa. Con chỉ hy vọng sự xuất hiện của con không khiến cha phải đau khổ thêm." }, { Cue = "/VO/Hades_0054", PreLineAnim = "Hades_Brooding", Portrait = "Portrait_Hades_Chained_02", Text = "Không đâu. Nỗi đau duy nhất chính là... mẹ của con và ta, anh trai con, con thú này, đã không... bọn ta đã không ở đó để chứng kiến con trưởng thành. Mỗi lần ta gặp con như thế này... nó lấp đầy khoảng trống trong ta." }, }, HadesAboutHouse01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0117", Text = "Nếu con hơi tò mò vu vơ về... Thánh Điện của ta trong như thế nào? Anh trai con đã phụ trách không ít về khoản trang trí. Ta khá ngạc nhiên khi Titan lại có cùng sở thích với nó." }, { Cue = "/VO/MelinoeField_1573", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chà, trừ khi Zagreus say mê với đồ trang trí bằng vàng và hình ảnh chế nhạo Titan ở khắp nới, thì có lẽ nó rất khác so với những gì cha nhớ..." }, { Cue = "/VO/Hades_0118", PreLineAnim = "Hades_Brooding", Text = "{#Emph}Urgh... {#Prev}con thừa hưởng tính cách thẳng thắn của mẹ con một cách quá đáng. Lẽ ra con nên nói với ta rằng mọi thứ đều {#Emph}ổn! {#Prev}Đôi khi, một lời nói dối sẽ là điều an ủi mà chúng ta có." }, }, HadesAboutSurface01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeSurfacePenaltyCure" }, }, { PathTrue = { "GameState", "RoomsEntered", "P_Intro" }, }, { SumPrevRuns = 3, Path = { "RoomsEntered", "N_Opening01" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0147", Text = "Ta không tin mình lại hỏi điều này, nhưng Olympus sẽ xử lý chuyện này như thế nào? Ngay cả khi đang bị giam trong căn phòng này, ta vẫn có thể cảm nhận được đội quân của Titan đang tấn công Olympus." }, { Cue = "/VO/MelinoeField_1692", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Trần gian ngập tràn xác chết và quân đội của Chronos đang vây quanh ngọn núi. Gia đình chúng ta đang ngăn chặn bọn chúng. Con đã cố gắng phá vỡ thế bế tắc để giúp họ, nhưng nhìn chung thì tình hình trên đó, hiện tại cũng không khả quan lắm." }, { Cue = "/VO/Hades_0148", -- Emote = "PortraitEmoteSurprise", Portrait = "Portrait_Hades_Chained_02", PreLineAnim = "Hades_Hello", Text = "{#Emph}Tinh hình trên đó không khả quan... {#Prev}ý con là con đã tận mắt chứng kiến tất cả ư? {#Emph}Sao có thể?" }, { Cue = "/VO/MelinoeField_1693", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ý cha là giới hạn của chúng ta. Cha có tin rằng con đã tìm ra cách để có thể chịu được môi trường ở trần gian trong một khoảng thời gian không? Đủ lâu để tạo ra sự khác biệt ở trên đó... hoặc ít nhất là cố gắng đạt được." }, { Cue = "/VO/Hades_0149", PreLineAnim = "Hades_Brooding", Text = "Không thể tin được... nhưng dường như tất cả những chuyện này vẫn có thể xảy ra. Vậy nên con phải đánh bại Titan, cũng như giải cứu Olympus. Thật vô lý khi con phải gánh vác tất cả mọi thứ..." }, }, HadesAboutAutomatons01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutSurface01" }, }, { Path = { "GameState", "EnemyKills" }, HasAll = { "SentryBot", "AutomatonBeamer", "AutomatonEnforcer", "Talos" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HephaestusAboutAutomatons02", "PoseidonAboutAutomatons02", "AthenaAboutAutomatons01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0173", Text = "Con đã có thể tận mắt chứng kiến Olympus... điều mà anh trai con chưa từng có cơ hội. Còn ta... cả đời ta gắn bó với nơi này, chẳng có chút ký ức nào về những ngọn núi." }, { Cue = "/VO/MelinoeField_2833", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Olympus ngày xưa chắc hẳn đã từng là một nơi vô cùng tráng lệ. Nhưng giờ đây nó đã bị bao vây bởi đội quan Titan và những Người Máy Tự Động vô tri chỉ muốn tiêu diệt con tương tự như kẻ thù của chúng ta." }, { Cue = "/VO/Hades_0174", PreLineAnim = "Hades_Blessing_Short", Text = "Ta đã bảo họ đừng phụ thuộc vào những cỗ máy vô hồn đó rồi! Một đội quân đúng nghĩa phải được tiếp sức bởi khao khát vinh quang hoặc nỗi sợ tột cùng. Đám người máy của họ chẳng có cảm xúc gì cả! Làm sao bọn chúng có thể chiến đấu một cách hiệu quả được?" }, }, HadesAboutShrine01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "SpentShrinePointsCache" }, Comparison = ">=", Value = 8, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0168", PreLineAnim = "Hades_Brooding", Text = "Bóng tối đang gây náo loạn theo cách mà ta chưa từng cảm nhận được từ rất lâu rồi. Việc này không thể nào là do Titan gây ra được. Chắc hẳn là do Phù Thủy Crossroads, hoặc chỉ có thể do con gây ra." }, { Cue = "/VO/MelinoeField_2009", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Thưa Cha: {#Emph}Trong bóng tối, con phụng sự; vì bóng tối, con trở về. {#Prev}Vì con đã lập Lời Thề với Hội Vô Hình, phụng sự cho cõi này và thực hiện ý nguyện của Màn Đêm." }, { Cue = "/VO/Hades_0169", PreLineAnim = "Hades_Hello", Text = "Ta biết rất ít về Hội Vô Hình hơn con nghĩ. Đúng là vậy, để tránh Titan có thể biết nhiều về điều đó. Vậy nên, ta mong con sẽ phụng sự ý nguyện của Màn Đêm một cách khôn ngoan..." }, }, HadesAboutPersephoneAspect01 = { PlayOnce = true, UseableOffSource = true, SkipPreNarrativeUnequip = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "Hero", "TraitDictionary", "LobImpulseAspect" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0177", PreLineAnim = "Hades_Hello", Text = "Chiếc đầu lâu mà con đang cầm trên tay... chẳng lẽ là... sao con có thể sở hữu nó? Trước kia nó được giao cho mẹ của con giữ gìn... như một tấm bùa hộ mệnh cho bà ấy, theo một cách nào đó, cũng là cho con." }, { Cue = "/VO/MelinoeField_2836", UsePlayerSource = true, Text = "Đầu Lâu Bạc Revaal của Mẹ đã chọn con là người sở hữu... nhưng chính Nữ Chúa Hecate mới là người tập hợp những Vũ Khí Hắc Ám để phục vụ cho sứ mệnh của con." }, { Cue = "/VO/Hades_0178", PreLineAnim = "Hades_Blessing_Short", Text = "Được tạo ra bởi những Nữ Thần Định Mệnh! Những người thích đùa giỡn với chúng ta như những kẻ ngốc. Chiếc đầu lâu đó không bảo vệ được Nữ Hoàng như ta mong muốn; nhưng có lẽ sứ mệnh của nó vẫn chưa kết thúc." }, }, -- about characters / about other characters HadesAboutChronosBossW01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "TextLinesRecord", "ZagreusPastFirstMeeting" }, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "HadesFirstMeeting_C", "HadesAboutChronosBossW01_B" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0050", Text = "Sự hỗn loạn đã xảy ra sau lần cuối con đến đây. Chính xác từ khi nào thì ta không chắc. Nhưng tất cả đám tùy tùng của Titan đều trở nên hoảng loạn. Chúng không ngừng kêu la. Chuyện gì đã xảy ra vậy?" }, { Cue = "/VO/MelinoeField_1493", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có lẽ chúng đang lo lắng cho chủ nhân của mình. Hoặc đang cố gắng để hồi sinh hắn. Vì cuối cùng con đã giết được hắn. Và đó sẽ không phải là lần cuối cùng." }, { Cue = "/VO/Hades_0051", PreLineAnim = "Hades_Blessing_Short", Emote = "PortraitEmoteSurprise", Text = "Máu và bóng tối, {#Emph}hah... urgh! {#Prev}Vậy là con đã làm được... điều mà trước đây phải cần đến sức mạnh khủng khiếp của một nửa Olympus... chỉ mình con lại làm được tất cả." }, { Cue = "/VO/MelinoeField_1494", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Không phải chỉ mình con. Con nhận được sức mạnh từ họ, dù không được họ hỗ trợ trực tiếp; nhưng Cha cũng đã ban cho con sức mạnh của Cha. Thưa Cha, chúng ta có thể ngăn chặn hắn. Và bây giờ... chúng ta có thể giết hắn." }, { Cue = "/VO/Hades_0052", PreLineAnim = "Hades_Brooding", Text = "Hắn sẽ quyết tâm tìm cách báo thù. Toàn bộ kế hoạch này của hắn cũng vì một mục đích báo thù. Con sẽ phải giết hắn nếu không còn sự lựa chọn nào khác. Ít nhất thì... chết đi và sống lại khiến hắn mất nhiều thời gian hơn." }, }, HadesAboutChronosBossW01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "TextLinesRecord", "ZagreusPastMeeting02" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesFirstMeeting_C" }, }, { PathFalse = { "GameState", "TextLinesRecord", "HadesAboutChronosBossW01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0050", Text = "Such a cacophony occurred, after you last visited. Exactly when I cannot say. All of the Titan's wretched servants flew into a panic. Their cries would not cease. What transpired?" }, { Cue = "/VO/MelinoeField_1691", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có lẽ chúng lo cho chủ nhân của mình. Hoặc đang cố gắng tìm cách khiến hắn sống lại. Bời vì con đã giết hắn thêm lần nữa. Và đó sẽ không phải là lần cuối cùng con giết hắn." }, { Cue = "/VO/Hades_0146", PreLineAnim = "Hades_Blessing_Short", Emote = "PortraitEmoteSurprise", Text = "Máu và bóng tối, {#Emph}hah... urgh! {#Prev}Để đạt được điều đó... phải cần đến sức mạnh khủng khiếp của một nửa Olympus, nhưng chỉ mình con lại làm được tất cả." }, { Cue = "/VO/MelinoeField_1494", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Not on my own at all. I had their strength, if not their support; as you've given me yours. Father, we can stop him. And for now... we can kill him." }, { Cue = "/VO/Hades_0052", PreLineAnim = "Hades_Brooding", Text = "He shall seek vengeance with a renewed zeal. This entire plot of his is driven by the same impulse. Then, kill him if you must. At least... his many deaths ought keep him occupied." }, }, -- add alt below HadesAboutChronosNightmare01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "ChronosNightmare01", "MorosAboutFates02" } }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/MelinoeField_1568", UsePlayerSource = true, PreLineThreadedFunctionName = "PlayCharacterAnim", PreLineThreadedFunctionArgs = { Name = "MelTalkBrooding01", WaitTime = 1, UsePlayerSource = true }, PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Khi Chronos cướp đi gia đình và Lãnh Địa của chúng ta, và cha đã ra lệnh cho Phù Thủy Crossroads mang con đi... bằng cách nào đó con vẫn nhớ điều đó, hoặc đã mơ về nó. Hắn có... ép Cha khai cho hắn biết về Nữ Thần Định Mệnh không?" }, { Cue = "/VO/Hades_0273", Emote = "PortraitEmoteSurprise", Portrait = "Portrait_Hades_Chained_02", Text = "Sao con lại có thể...? Có lẽ chính Nữ Thần Định Mệnh đã cho con biết điều đó. Cha của ta đã truy tìm họ, nhưng ta không tiết lộ gì cả. Dù có muốn cũng không thể, bởi không ai biết họ đang ở đâu, ngoại trừ chính họ." }, { Cue = "/VO/MelinoeField_1569", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chờ đã, cha chưa từng nói cho Chronos cách tìm ra Nữ Thần Định Mệnh sao? Vậy thì làm sao hắn có thể? Bởi vì hắn đã bắt được họ. Có lẽ là chưa được lâu, nhưng chuyện đó đã xảy ra. Con chắc chắn về điều đó." }, { Cue = "/VO/Hades_0274", PreLineAnim = "Hades_Blessing_Short", Emote = "PortraitEmoteFiredUp", Text = "Sao cơ?! Không thể nào... nhưng nếu điều này là sự thật, thì kế hoạch chinh phục của cha ta sắp đến thành công rồi. Nếu ngay cả họ cũng không thể ngăn chặn hắn... thì con làm sao có thể, Con Gái...?" }, }, HadesAboutUltimateProgress01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "ZagreusPastMeeting02_2" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0397", PreLineAnim = "Hades_Hello", Text = "...Cha ta... gần đây hắn đến gặp ta. Hắn yêu cầu ta nói cho hắn biết nơi ở của con. Ta đã nói rằng ta không biết. Nhưng con đang thu hút ngày càng nhiều sự chú ý của hắn." }, { Cue = "/VO/MelinoeField_5078", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Vậy có nghĩa là hắn đã tra tấn cha ư? Tên khốn đó. Hắn không cần phải đi tìm con; con sắp tìm đến hắn rồi." }, { Cue = "/VO/Hades_0398", -- Portrait = "Portrait_Hades_Chained_02", Text = "Đừng hiểu lầm... bọn ta chỉ nói chuyện với nhau thôi. Phải thừa nhận rằng, điều đó thật hiếm hoi. Hắn chưa bao giờ biết phải làm gì với anh chị em bọn ta... lẽ ra hắn không nên sinh ra bọn ta ngay từ đầu." }, { Cue = "/VO/MelinoeField_5079", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Portrait = "Portrait_Mel_Vulnerable_01", Text = "Xin Cha đừng nói vậy. Vậy rốt cuộc chuyện gì đã xảy ra giữa mọi người vậy...? Con được nghe kể những câu chuyện về cha đã đánh bại hắn như thế nào, nhưng... con biết quá ít về cuộc đời của cha." }, { Cue = "/VO/Hades_0399", Portrait = "Portrait_Hades_Chained_02", PreLineAnim = "Hades_Brooding", PreLineWait = 0.5, Text = "...Bọn ta thường xảy ra xung đột. Hắn cho rằng bọn ta giống hắn. Nhưng chẳng ai trong bọn ta như thế cả. Và khi Nữ Thần Định Mệnh phán quyết rằng bọn ta sẽ thay hắn cai trị... hắn đã chống lại, cay nghiệt và dữ dội. Những ký ức cũ đó... ta sẽ chôn vùi chúng." }, }, HadesAboutUltimateProgress02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, OrRequirements = { { { PathTrue = { "GameState", "TextLinesRecord", "ZagreusPastMeeting04" } }, { PathFalse = { "GameState", "TextLinesRecord", "ZagreusPastMeeting04_2" } }, }, { { PathTrue = { "GameState", "TextLinesRecord", "ZagreusPastMeeting04_3" } }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/MelinoeField_5080", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Xin Cha hãy cố gắng chờ đợi. Con buộc phải giữ kín những chuyện này, nhưng... con đang tiến gần hơn đến một phương án... một cách để ngăn chặn Chronos, vĩnh viễn." }, { Cue = "/VO/Hades_0400", PreLineAnim = "Hades_Brooding", Portrait = "Portrait_Hades_Chained_02", Text = "Vĩnh viễn... ngay cả khi anh chị em bọn ta đã từng đánh bại hắn... bọn ta biết rằng hắn vẫn sẽ trở lại... một Titan bất tử. Nhưng bọn ta đã nghĩ... mọi chuyện sẽ diễn ra theo ý muốn của bọn ta. Bọn ta thật ngu ngốc." }, { Cue = "/VO/MelinoeField_5081", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Mọi người còn có thể làm gì khác chứ? Hắn không cho mọi người sự lựa chọn. Và mọi người cũng không có cách nào tiêu diệt hắn hoàn toàn." }, { Cue = "/VO/Hades_0401", PreLineAnim = "Hades_Hello", Portrait = "Portrait_Hades_Chained_02", Text = "Thật may mắn vì bọn ta không có sức mạnh đó... nếu không thì bọn ta đã dùng, và sẽ còn dùng với những người khác. Ta chỉ phán xét những kẻ đã chết, hoặc đã từng như vậy... Ta chưa từng đủ khả năng để phán xét người sống." }, }, HadesAboutUltimateProgress03 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutUltimateProgress02" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0402", Portrait = "Portrait_Hades_Chained_02", Text = "Nghĩ đến việc con có thể ngăn chặn Titan vĩnh viễn... khi còn trẻ, ta thậm chí còn không tin rằng bọn ta có chung huyết thống. Nhưng giờ ta đã nhận ra... khi già đi, ta trở nên khốn khổ và đầy phẫn nộ... giống hệt hắn." }, { Cue = "/VO/MelinoeField_5063", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Thưa Cha, chính sự phẫn nộ đã đưa con đến phương án này! Sao Cha lại tự so sánh mình như vậy? Hãy nhìn xem Titan đã làm gì với Cha kìa..." }, { Cue = "/VO/Hades_0394", Emote = "PortraitEmoteFiredUp", Portrait = "Portrait_Hades_Chained_01", PreLineAnim = "Hades_Blessing_Short", Text = "Chính bọn ta đã tự gây ra tất cả! Những vị thần và Titan... bị nguyền rủa phải sống vĩnh hằng, vậy mà chẳng học được gì trong suốt khoảng thời gian đó. Hãy làm những gì con phải làm... nhưng đừng trả thù nhân danh ta." }, }, HadesAboutPrometheus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutSurface01" } }, { PathTrue = { "GameState", "RoomsEntered", "P_Boss01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0171", PreLineAnim = "Hades_Blessing_Short", Text = "Con gái, hãy nói cho ta biết. Tại sao đội quân của Titan lại có thể tổ chức và bao vây Olympus, trong khi chính tên Titan lại đang ẩn mình ở Tartarus?" }, { Cue = "/VO/MelinoeField_2832", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Bọn con đang đối đầu với một Titan khác ở đó: Prometheus chính là kẻ chỉ huy đội quân tấn công. Con không rõ hắn đã thoát khỏi xiềng xích bằng cách nào, hoặc âm mưu thực sự của hắn là gì... ngoài việc trả thù những vị thần." }, { Cue = "/VO/Hades_0172", PreLineAnim = "Hades_Brooding", Text = "Lẽ nào việc báo thù những vị thần vẫn chưa thỏa đáng ư? Ta vốn không liên quan gì đến bản án của hắn... nhưng Ông Bác Zues của con, ông ấy... ông ấy luôn tự hào rằng có thể nghĩ ra những hình phạt sáng tạo hơn ta..." }, }, -- alt below HadesAboutTyphon01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutSurface01" } }, { PathFalse = { "GameState", "TextLinesRecord", "HadesAboutTyphon01_B" }, }, { PathTrue = { "GameState", "RoomsEntered", "Q_Boss01" } }, { Path = { "GameState", "EnemyKills", "TyphonHead" }, Comparison = "<=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/MelinoeField_3101", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", Text = "Thưa Cha, con e rằng tình hình trên Olympus còn nghiêm trọng hơn chúng ta tưởng... vì Chronos đã đánh thức Typhon, một con quái vật vô cùng to lớn... và hắn quyết tâm phá hủy Cung Điện của Zeus." }, { Cue = "/VO/Hades_0191", PreLineAnim = "Hades_Blessing_Short", Text = "{#Emph}Pah! {#Prev}Quả là hành động dễ đoán và liều lĩnh. Bác Zeus của con có lẽ không còn nhanh nhẹn khi ông ấy đối đầu với con quái vật đó trước đây nữa." }, { Cue = "/VO/MelinoeField_3102", UsePlayerSource = true, PreLineAnim = "MelinoeIdleWeaponless", PreLineAnimTarget = "Hero", Text = "Cha có vẻ không ngạc nhiên lắm. Trước đây mọi người từng đánh bại Typhon bằng cách nào vậy? Con chưa từng chiến đấu với thứ gì giống hắn cả." }, { Cue = "/VO/Hades_0192", PreLineAnim = "Hades_Brooding", Text = "Con không nên đối đầu với một kẻ như hắn, Con Gái! Hãy để Zeus tự giải quyết vấn đề của ông ấy. Tia sét của ông ấy từng rất hiệu quả trong quá khứ... dù khó tin rằng hiện thân của bão tố và thịnh nộ lại có thể chịu ảnh hưởng." }, { Cue = "/VO/MelinoeField_3103", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con sẽ không bao giờ bỏ mặc gia đình với mối đe dọa này." }, { Cue = "/VO/Hades_0193", PreLineAnim = "Hades_Hello", Text = "Vậy thì con đến nhầm chỗ rồi. Nếu con nghĩ rằng ngăn chặn Titan, đồng nghĩa với việc ngăn chặn Typhon, thì con đã lầm. Một con quái vật như hắn không thể bị kiểm soát. Hãy đi đi, tự mình kiểm chứng điều đó." }, }, HadesAboutTyphon01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutSurface01" } }, { PathFalse = { "GameState", "TextLinesRecord", "HadesAboutTyphon01" }, }, { PathTrue = { "GameState", "RoomsEntered", "Q_Boss01" } }, { Path = { "GameState", "EnemyKills", "TyphonHead" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/MelinoeField_3101", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", Text = "Thưa Cha, con e rằng tình hình trên Olympus còn nghiêm trọng hơn chúng ta tưởng... vì Chronos đã đánh thức Typhon, một con quái vật vô cùng to lớn... và hắn quyết tâm phá hủy Cung Điện của Zeus." }, { Cue = "/VO/Hades_0191", PreLineAnim = "Hades_Blessing_Short", Text = "{#Emph}Pah! {#Prev}Quả là hành động dễ đoán và liều lĩnh. Bác Zeus của con có lẽ không còn nhanh nhẹn khi ông ấy đối đầu với con quái vật đó trước đây nữa." }, { Cue = "/VO/MelinoeField_3930", UsePlayerSource = true, PreLineAnim = "MelinoeIdleWeaponless", PreLineAnimTarget = "Hero", Text = "Cha có vẻ không ngạc nhiên lắm. Trước đây mọi người từng đánh bại Typhon bằng cách nào vậy? Con chưa từng chiến đấu với thứ gì giống hắn cả." }, { Cue = "/VO/Hades_0275", PreLineAnim = "Hades_Brooding", Text = "Phương pháp của con? Hãy để Zeus tự giải quyết những vấn đề của ông ấy. Tia sét của ông ấy đã từng rất hiệu quả trong quá khứ... ai mà ngờ rằng hiện thân của bão tố và thịnh nộ lại có thể bị ảnh hưởng." }, { Cue = "/VO/MelinoeField_3103", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con sẽ không bao giờ bỏ mặc gia đình với mối đe dọa này." }, { Cue = "/VO/Hades_0193", PreLineAnim = "Hades_Hello", Text = "Vậy thì con đến nhầm chỗ rồi. Nếu con nghĩ rằng ngăn chặn Titan, đồng nghĩa với việc ngăn chặn Typhon, thì con đã lầm. Một con quái vật như hắn không thể bị kiểm soát. Hãy đi đi, tự mình kiểm chứng điều đó." }, }, HadesAboutTyphon02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" } }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesAboutTyphon01", "HadesAboutTyphon01_B" } }, { SumPrevRuns = 3, Path = { "RoomsEntered" }, TableValuesToCount = { "Q_Boss01", "Q_Boss02" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "EnemyKills", "TyphonHead" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0194", Text = "Gần đây con có tin tức gì về Typhon không, Con Gái? Zeus từng tự hào khoe khoang rằng ông ấy đã một mình đánh bại con quái vật đó. Giờ thì ta đoán cần nhiều nỗ lực phối hợp nhiều hơn mới có thể làm được." }, { Cue = "/VO/MelinoeField_3104", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Thưa Cha, nếu Cha có hiềm khích nào đó với Bác Zeus, thì điều đó chỉ càng có lợi cho kẻ thù của chúng ta thôi. Typhon vẫn là mối đe dọa đối với ngọn núi... hắn có thể bị đẩy lùi, nhưng không thể duy trì lâu." }, { Cue = "/VO/Hades_0195", PreLineAnim = "Hades_Brooding", Text = "Bọn ta đã từng chôn vùi hắn dưới một ngọn núi; đó không phải cách phô diễn sức mạnh thông thường, bởi những phương án khác đều thất bại. Dẫu vậy, ta tin rằng ông anh trai ta đã có một kế hoạch nào đó. Ông ấy luôn luôn có kế hoạch dự phòng." }, }, HadesAboutTyphon03 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesAboutTyphon01", "HadesAboutTyphon01_B" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0196", PreLineWait = 0.35, PreLineAnim = "Hades_Brooding", Text = "...Khi lần đầu chống lại Typhon từ rất lâu về trước, bọn ta không dám nghĩ rằng Chúa Tể Titan mà bọn ta từng đánh bại, đã đánh thức nó. Chắc chắn ngay cả hắn ta, với tất cả sự kiêu ngạo, cũng không tin rằng con quái vật nào có thể khuất phục trước mệnh lệnh của hắn!" }, { Cue = "/VO/MelinoeField_3105", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có lẽ tất cả những gì Chronos mong đợi là con quái vật này sẽ ngay lập tức tấn công Olympus. Làm sao hắn có thể đánh thức con quái vật đó mà gia đình chúng ta không hề hay biết?" }, { Cue = "/VO/Hades_0197", PreLineAnim = "Hades_Hello", Text = "Khi chính Nyx cũng bị giam cầm bởi Chúa Tể Titan, thì những gì diễn ra sâu dưới bên dưới long đất đều không bị ai phát giác. Và giờ đây... dù cả Typhon và Titan đều đã từng bị bọn ta đánh bại trước đây... bọn ta cũng chưa từng đối đầu với cả hai cùng lúc." }, }, HadesAboutTyphon04 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" } }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesAboutTyphon01", "HadesAboutTyphon01_B" } }, { SumPrevRuns = 5, Path = { "RoomsEntered" }, TableValuesToCount = { "Q_Boss01", "Q_Boss02" }, Comparison = ">=", Value = 1, }, { SumPrevRuns = 5, Path = { "EnemyKills", "TyphonHead" }, Comparison = ">=", Value = 1, }, { SumPrevRuns = 4, IgnoreCurrentRun = true, Path = { "SpawnRecord", "NPC_Hades_Field_01" }, Comparison = "<=", Value = 0, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0198", Text = "Đã lâu rồi không gặp con... có lẽ con đang bận rộn ngăn chặn Typhon, khi hắn đang cố phá hủy Cung Điện gần như bất khả xâm phạm của anh trai ta." }, { Cue = "/VO/MelinoeField_3106", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Đó chính xác là những gì con đang chứng kiến gần đây. Typhon có vẻ bất khả chiến bại, nhưng chẳng có sinh vật nào thích bị đánh liên tục vào mặt cả." }, { Cue = "/VO/Hades_0199", PreLineAnim = "Hades_Blessing_Short", Text = "Một chiến thuật cổ xưa đã giúp bọn ta thời trẻ trong những trận chiến vĩ đại. Ta đã đoán trước mọi chuyện sẽ như vậy; đến cuối cùng, thời gian vẫn chẳng thay đổi nhiều." }, }, HadesAboutChronosAllies01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutPrometheus01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0175", PreLineAnim = "Hades_Hello", Text = "Ngoài Prometheus ra, còn kẻ nào khác quy phục Chronos không? Ta muốn biết từng tên Titan hoặc bất kỳ kẻ nào đồng loại đám phản bội chúng ta." }, { Cue = "/VO/MelinoeField_2835", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Bên cạnh đội quân Satyr hung hãn, những kẻ đáng nhắc đến bao gồm Cyclops, Polyphemus... cùng Eris, con gái của Nyx... mặc dù cô ta có lẽ chỉ đang hành động đơn độc." }, { Cue = "/VO/Hades_0176", PreLineAnim = "Hades_Brooding", Text = "Xung Đột chưa bao giờ chịu bị kiểm soát, Nyx biết rõ điều đó. Còn về tên Cyclops... hắn và Bác Poseidon của con có quá khứ không mấy tốt đẹp, có thể điều đó đã thôi thúc lòng hận thù của hắn. Dẫu sao thì... đó vẫn chưa phải danh sách kẻ thù dài nhất." }, }, HadesAboutHecate01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0106", PreLineAnim = "Hades_Hello", Text = "Con Gái, hãy kể cho ta nghe... chuyện gì đã xảy ra khi con ở với Phù Thủy Crossroads, nếu con muốn. Khi mọi thứ dường như đã biến mất... mẹ con và ta, bọn ta đã gửi con cho bà ấy chăm sóc." }, { Cue = "/VO/MelinoeField_1497", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Và bà ấy đã chăm sóc con kể từ đó. Đã huấn luyện con. Nhưng tốt nhất chúng ta đừng nói về bà ấy trong những căn phòng như thế này. Chỉ cần biết rằng, Hội Vô Hình luôn ẩn mình trong bóng tối." }, { Cue = "/VO/Hades_0107", Text = "Được. Bà ấy đã... à, như con đã nói, tốt nhất chúng ta không nên nói gì thêm. Tuy nhiên, nếu có dịp, con hãy gửi đến bà ấy lòng biết ơn sâu sắc của ta." }, }, HadesAboutNyx01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "UseRecord" }, HasAll = { "NPC_Hypnos_01", "NPC_Skelly_01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0166", PreLineAnim = "Hades_Brooding", Text = "Nyx, ngay cả bà ấy... cũng bất lực trước Titan. Hai trong số những đứa con trai của HIện Thân Màn Đêm đã từng phụng sự trong Lãnh Địa của ta cùng bà ấy... Ta đoán hắn cũng đã bắt được họ." }, { Cue = "/VO/MelinoeField_2008", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Không, Hypnos đang ở cùng {#Emph}bọn con! {#Prev}Đã rơi vào giấc ngủ say suốt thời gian qua, có lẽ là một kiểu... phản ứng phòng thủ nào đó, vì bọn con vẫn chưa tìm ra cách nào để đánh thức ngài ấy. Schelemeus dũng cảm cũng đang ở cùng bọn con!" }, { Cue = "/VO/Hades_0167", PreLineAnim = "Hades_Blessing_Short", Text = "Hypnos, lại {#Emph}say giấc {#Prev}sao? Và ta cũng chẳng còn nhớ gì về cái tên đó... có lẽ thời gian đã bào mòn tâm trí ta. Dù sao thì, nếu Phù Thủy vẫn dẫn dắt Hội Vô Hình... thì ý chí của Màn Đêm vẫn chưa biến mất." }, }, HadesAboutBrothers01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "UseRecord" }, HasAll = { "ZeusUpgrade", "PoseidonUpgrade" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0164", PreLineAnim = "Hades_Brooding", Text = "Cả hai người em trai của ta đều đang giúp đỡ con phải không? Zeus, chắc chắn đang lãnh đạo phía sau bức tường thành an toàn của mình... còn Poseidon, phô trương như thể chiến thắng đã ở trong tầm tay..." }, { Cue = "/VO/MelinoeField_2007", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Thưa Cha, họ đang chiến đấu để bảo vệ ngôi nhà của mình... và họ đang chiến đấu vì cha! Cha đã đúng khi không ai trong số họ quan tâm những chuyện xung quanh, nhưng tại sao họ phải bận tâm chứ? Nỗi sợ chỉ khiến bản thân cảm thấy bất an." }, { Cue = "/VO/Hades_0165", PreLineAnim = "Hades_Blessing_Short", Text = "Họ đã bỏ quên những vấn đề ở trần gian quá lâu rồi...! Nhưng đừng tin những lời ca tụng về họ. Nếu con biết anh trai mình, có lẽ con sẽ hiểu rõ hơn về những lời nhận xét thiếu hiểu biết đó..." }, }, HadesAboutCerberus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0108", PreLineAnim = "Hades_Brooding", Text = "Tên Titan đáng nguyền rủa đó đã làm gì với Cerberus mà nó phải xông vào nơi này một cách hoảng loạn, để rồi bị đẩy ra ngoài thêm một lần nữa? Phải cần đến một đội quân nhỏ của Satyrs để đánh đuổi nó..." }, { Cue = "/VO/MelinoeField_1498", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chronos đuổi nó ra Cánh Đồng Than Khóc phía trên. Sau đó, sự tức giận và tuyệt vọng bao trùm nó, và mọi giác quan tốt nhất của nó bất đầu mất đi. Con đường riêng của con đẫn đến nơi mà nó đang ở." }, { Cue = "/VO/Hades_0109", Text = "Vậy là con đã đối đầu với nó trong tình trạng đáng thương đó. Cảm ơn Con Gái, vì đã thương cảm với con thú tội nghiệp này. Nó đã từng rất trung thành, nhưng đã phải trải qua quá nhiều biến cố. Con vẫn còn quá nhỏ để hình thành một mối liên kểt, nhưng có lẽ... vẫn chưa quá muộn." }, }, HadesAboutCerberus02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutTyphon01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0200", PreLineAnim = "Hades_Brooding", Text = "Cerberus đã trở nên khá kích động, và ta dần hiểu ra lý do. Không phải vì bị đánh đuổi ra Cánh Đồng Than Khóc; có lẽ nó đã cảm nhận được sự trở lại của Typhon." }, { Cue = "/VO/MelinoeField_3316", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Hầu hết mọi quái vật mà con từng đối đầu, đều có liên quan đến Typhon theo một cách nào đó. Con nghi ngờ rằng hắn chưa từng có mối quan hệ với bất kỳ người thân nào; kể cả Cerberus cũng không." }, { Cue = "/VO/Hades_0201", PreLineAnim = "Hades_Blessing_Short", Text = "Ta cũng nghi ngờ điều đó. Dường như không ai trong chúng ta có thể thoát khỏi sự ảnh hưởng của cha mình. Vậy mà cuối cùng chúng ta vẫn ở đây." }, }, HadesAboutHoundFamiliar01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, }, }, { Path = { "GameState", "EquippedFamiliar" }, IsAny = { "HoundFamiliar" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0205", PreLineAnim = "Hades_Hello", Text = "Tốt nhất là nên giữ khoảng cách nó, đúng hơn là với con chó đó. Mà... Phù Thủy Crossroads cũng từng có một con chó săn y hệt nó..." }, { Cue = "/VO/MelinoeField_3319", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Vậy thì chắc chắn là nó rồi. Bà ấy gọi nó là Hecuba, và con khá chắc là nó sẽ tôn trọng Cha và cả Cerberus nữa. Ngoài ra thì bọn chúng đã gặp nhau ở Cánh Đồng rồi..." }, { Cue = "/VO/Hades_0206", PreLineAnim = "Hades_Blessing_Short", PostLineFunctionName = "CerberusReaction", Text = "Vậy ra đây là sinh vật vừa trung thành vừa dũng cảm. Một sự kết hợp hiếm thấy, dù ở bất kỳ loài nào hay bất kỳ ai khác. Hãy cư xử thật tốt với nó nhé, Cerberus." }, }, -- alt below HadesAboutBouldy01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutSisyphus01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "HadesAboutBouldy01_B" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, Alive = false }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/MelinoeField_1577", UsePlayerSource = true, PreLineThreadedFunctionName = "PlayCharacterAnim", PreLineThreadedFunctionArgs = { Name = "MelTalkExplaining01", WaitTime = 1, UsePlayerSource = true }, PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Portrait = "Portrait_Mel_Hesitant_01", Text = "Cerberus đâu rồi, thưa Cha? Thường thì nó sẽ ở ngay đây mà. Trước đây con đã thấy nó ở trên những Cánh Đồng!" }, { Cue = "/VO/Hades_0124", PreLineAnim = "Hades_Blessing_Short", Text = "Nó đã lao mình đi một cách điên cuồng theo lệnh của ta. Khiến đội quân của Titan phân tâm và trở nên mỏng manh. Cuối cùng bọn chúng đã đuổi nó quay về, nhưng không thể làm hại nó được." }, { Cue = "/VO/MelinoeField_1578", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có vẻ như chỉ có Cha và tảng đá thôi. Trông như thể nó chưa được đẩy lên ngọn đồi nào trong một khoảng thời gian khá lâu rồi. Chronos không bắt Cha làm điều đó sao?" }, { Cue = "/VO/Hades_0125", PreLineAnim = "Hades_Hello", Text = "Ta sẽ không gặp khó khăn như bất kỳ Shade nào. Bên cạnh đó, những sợi xích này không thể mở được, ngoại trừ lệnh của Titan. Nhưng ta sẽ ở lại đây mãi mãi trước khi ta quy phục dưới chân hắn." }, { Cue = "/VO/MelinoeField_1579", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cha nói tảng đá này đã từng gắn liền với một vị vua người phàm sao? Con... có thể cảm nhận được điều đó. Nó có thể ẩn chứa nhiều năng lượng hơn tảng đá bình thường." }, { Cue = "/VO/Hades_0126", PostLineFunctionName = "CheckConversations", Text = "Ta hiểu ý con. Ta và tảng đá... không gắn bó nhau như trước đây nữa. Nhưng có lẽ nó sẽ gợi ra điều gì đó cho con; Phù Thủy hẳn đã dạy con mọi thứ." }, }, HadesAboutBouldy01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutSisyphus01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "HadesAboutBouldy01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, Alive = false }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/MelinoeField_1577", UsePlayerSource = true, PreLineThreadedFunctionName = "PlayCharacterAnim", PreLineThreadedFunctionArgs = { Name = "MelTalkExplaining01", WaitTime = 1, UsePlayerSource = true }, PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Portrait = "Portrait_Mel_Hesitant_01", Text = "Cerberus đâu rồi, thưa Cha? Thường thì nó sẽ ở ngay đây mà. Trước đây con đã thấy nó ở trên những Cánh Đồng!" }, { Cue = "/VO/Hades_0124", PreLineAnim = "Hades_Blessing_Short", Text = "Nó đã lao mình đi một cách điên cuồng theo lệnh của ta. Khiến đội quân của Titan phân tâm và trở nên mỏng manh. Cuối cùng bọn chúng đã đuổi nó quay về, nhưng không thể làm hại nó được." }, { Cue = "/VO/MelinoeField_1578_B", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có vẻ như chỉ có Cha và tảng đá thôi. Trông như thể nó chưa được đẩy lên ngọn đồi nào trong một khoảng thời gian khá lâu rồi. Chronos không bắt Cha làm điều đó sao?" }, { Cue = "/VO/Hades_0126", PostLineFunctionName = "CheckConversations", Text = "Ta hiểu ý con. Ta và tảng đá... không gắn bó nhau như trước đây nữa. Nhưng có lẽ nó sẽ gợi ra điều gì đó cho con; Phù Thủy hẳn đã dạy con mọi thứ." }, }, HadesAboutBouldy02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesAboutBouldy01", "HadesAboutBouldy01_B" }, }, { Path = { "GameState", "UseRecord", "NPC_Bouldy_01" }, Comparison = ">=", Value = 2, }, { SumPrevRuns = 8, Path = { "UseRecord", "NPC_Bouldy_01" }, Comparison = ">=", Value = 1, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, Alive = false }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0279", PreLineAnim = "Hades_Blessing_Short", Text = "Tảng đá đó tiết lộ điều gì cho con chưa? Ta không biết tại sao ta lại hỏi điều đó, chỉ là một chút mê tín cá nhân thôi... nhưng ta thấy con thỉnh thoảng lại đến gần nó." }, { Cue = "/VO/MelinoeField_4153", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cha từng kể về tù nhân bị giam ở nơi đây một cách nhẹ nhàng, cứ như thể cha đã tha thứ cho hắn. Con từng nghĩ rằng điều đó là không thể xảy ra ở Tartarus. Giờ thì tảng đá này khiến con nhận ra điều ngược lại." }, { Cue = "/VO/Hades_0280", PreLineAnim = "Hades_Hello", Text = "Hầu hết những kẻ khốn khổ mà bọn ta từng giam giữ ở đây, chẳng còn hy vọng được tha thứ hay tự do, vậy mà chúng cũng đã trốn thoát, dù không xứng đáng. Vậy nên, hãy để tảng đá này làm chứng cho những gì đã xảy ra và sắp xảy ra." }, }, HadesAboutCharon01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { FunctionName = "RequiredHealthFraction", FunctionArgs = { Comparison = "<=", Value = 0.4, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0113", PreLineWait = 0.35, Text = "...Mùi máu. Con đang bị thương. Và con vẫn định đối mặt với Titan sao? Ít nhất thì con nên ở đúng nơi nếu con chết." }, { Cue = "/VO/MelinoeField_1571", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con sẽ không chết ở đây dù có chuyện gì xảy ra đi nữa. Còn về vết thương của con, có lẽ Ngài Charon sẽ có một ít Tinh Chất Sự Sống trong kho." }, { Cue = "/VO/Hades_0114", Emote = "PortraitEmoteFiredUp", PreLineAnim = "Hades_Brooding", Text = "Người Lái Đò vẫn hoạt động ngay cả trong thời điểm này ư? Thật vô lý. Toàn bộ hoạt động của chúng ta đã bị ngừng lại! Tuy nhiên... ta nhớ ra rằng ông ấy phụng sự cho cõi này, không phải riêng ta." }, }, HadesAboutMelinoe01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesAboutChronosNightmare01" }, }, { Path = { "CurrentRun", "Hero", "LastStands" }, UseLength = true, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0160", Text = "Con Gái. Hãy kể cho ta nghe đôi điều về con, vì ta không biết gì cả. Chẳng hạn như... con thích làm gì? Khi con không... cố gắng thực hiện nhiệm vụ này." }, { Cue = "/VO/MelinoeField_1994", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Mel_Vulnerable_01", WaitTime = 8.3 }, Text = "Con thích làm gì ư? À thì... con luôn sắp xếp dược liệu của con theo đúng thứ tự, để khi luyện phép thuật, con luôn có sẵn mọi thứ trong tay. Và con thích... ừm, thưa Cha, lúc này không phải thời điểm thích hợp cho lắm..." }, { Cue = "/VO/Hades_0161", PreLineAnim = "Hades_Brooding", Text = "{#Emph}Mm. {#Prev}Không phải thời điểm nào cũng phù hợp cho những chuyện vặt vãnh... tuy nhiên, có lẽ một lúc nào đó... chúng ta có thể tâm sự nhiều hơn về chuyện đó. Nhưng có những vấn đề cần phải giải quyết trước đã." }, }, HadesAboutZagreus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesAboutChronosNightmare01" }, }, { Path = { "CurrentRun", "Hero", "LastStands" }, UseLength = true, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0115", Text = "Con có năng lực Thách Thức Cái Chết. Nó chảy trong huyết quản của chúng ta. Anh trai con, Zagreus, khá cứng rắn so với vóc dáng của nó. Khi còn nhỏ, nó cũng khá cứng đầu nữa." }, { Cue = "/VO/MelinoeField_1572", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Đừng kể về anh con như thể anh ấy đã chết chứ! Chronos đã bắt anh ấy, và Mẹ, và những người khác. Nhưng khi mọi chuyện kết thúc... chúng ta sẽ được gặp lại nhau." }, { Cue = "/VO/Hades_0116", Emote = "PortraitEmoteFiredUp", PreLineAnim = "Hades_Blessing_Short", Text = "Sao con có thể chắc chắn điều đó? Khẳng định những điều chưa chắc sẽ xảy ra! Titan... cha của ta... hắn sẽ không dừng lại. Hắn là kẻ cứng đầu nhất trong bọn ta." }, }, HadesAboutPersephone01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesAboutPain01", "HadesAboutZagreus01", "HadesGiftDecline01", "HadesAboutBouldy02", "HadesAboutMelinoe01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" }, Alive = false }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0119", Text = "Mẹ của con rất vui mừng khi con chào đời. Bọn ta... không phải lúc nào cũng nghĩ rằng sẽ có thêm một đứa nữa. Nhưng bọn ta đã quyết định cố gắng thêm lần nữa." }, { Cue = "/VO/MelinoeField_1574", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Và cha mẹ đã làm điều quan trọng có thể làm. Cha mẹ đã {#Emph}bảo vệ {#Prev}con. Về phần mẹ con, con biết nụ cười rạng rỡ của bà ấy. Cách bà ấy nhìn con trong bức tranh mà con đang có." }, { Cue = "/VO/Hades_0120", Emote = "PortraitEmoteSurprise", PreLineAnim = "Hades_Hello", Portrait = "Portrait_Hades_Chained_02", Text = "Bức tranh, vẫn còn tồn tại ư?! Phù Thủy, chắc chắn bà ấy đã lấy nó... và đó là một hành động mạo hiểm, chỉ từ điều nhỏ nhặt đó. Hãy nhớ rằng sự rạng rỡ của mẹ con... là thứ không thể lưu giữ được. Dù tài nghệ của họ có tốt đến đâu đi nữa." }, }, HadesAboutFamily01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesAboutChronosNightmare01" }, }, { Path = { "GameState", "EnemyKills", "Chronos" }, Comparison = ">=", Value = 2, }, { SumPrevRuns = 3, Path = { "EnemyKills", "Chronos" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/MelinoeField_1995", UsePlayerSource = true, PreLineThreadedFunctionName = "PlayCharacterAnim", PreLineThreadedFunctionArgs = { Name = "MelTalkBrooding01", WaitTime = 1, UsePlayerSource = true }, PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con đã thấy điều đã xảy ra... điều mà Chronos đã làm với Mẹ, với anh con, và những người khác. Họ đang ở đâu? Hắn có đang giam giữ họ không?" }, { Cue = "/VO/Hades_0162", PreLineAnim = "Hades_Brooding", Text = "Ta hoàn toàn không có ký ức về chuyện này. Hắn... khiến mọi người dừng lại, bằng cách nào đó. Ta đã thấy họ, đứng im như đá; không hẳn là hóa đá hoàn toàn nhưng bị mắc kẹt, trong Đại Sảnh của Thánh Điện. Hắn đã giam giữ họ ở một nơi khác bên trong..." }, { Cue = "/VO/MelinoeField_1996", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngay cả khi con có thể đánh bại Chronos vào một ngày nào đó, thì hầu hết Lãnh Địa vẫn bị phong tỏa, và con không thể nán lại lâu hơn được. Làm sao chúng ta có thể giải cứu họ được...?" }, { Cue = "/VO/Hades_0163", PreLineAnim = "Hades_Blessing_Short", Text = "Nếu con xin Titan một cách lịch sự, biết đâu hắn sẽ nghe theo thì sao? Con Gái, ta không biết cách nào để chống lại kế hoạch của hắn, và cũng không có ý tưởng nào để giúp con cả. Nhưng ta có thể cho con thứ này." }, }, HadesAboutAres01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "CurrentRun", "UseRecord", "AresUpgrade" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0202", Text = "Trước đây ta từng cảm nhận được tất cả Phước Lành của gia đình; những Phước Lành đó không được phép tồn tại ở cõi giới này. Nhưng cảm nhận đó đang dần phai mờ, bởi đến tận bây giờ ta mới nhận ra ảnh hưởng của Ares ở nơi này..." }, { Cue = "/VO/MelinoeField_3317", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Trực giác của Cha về những Phước Lành vẫn còn, thưa Cha. Con chỉ mới gặp Ares gần đây, sau tất cả những người khác. Có vẻ như cuộc chiến đã nghiêm trọng đến mức chính anh ta cũng đang muốn chấm dứt nó." }, { Cue = "/VO/Hades_0203", PreLineAnim = "Hades_Blessing_Short", Text = "Đó là những gì nó đã nói với con sao...? Lý do duy nhất mà ta nghĩ đến khi cháu trai ta muốn chấm dứt một cuộc chiến, là sẽ có một cuộc chiến lớn hơn có thể xảy ra. Tuy nhiên, nếu nó đã tuyên bố đứng về phía con, thì nó sẽ không nói dối trắng trợn." }, }, HadesAboutAres01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathFalse = { "GameState", "TextLinesRecord", "HadesAboutAres01" }, }, { PathTrue = { "CurrentRun", "UseRecord", "AresUpgrade" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0202", Text = "Trước đây ta từng cảm nhận được tất cả Phước Lành của gia đình; những Phước Lành đó không được phép tồn tại ở cõi giới này. Nhưng cảm nhận đó đang dần phai mờ, bởi đến tận bây giờ ta mới nhận ra ảnh hưởng của Ares ở nơi này..." }, { Cue = "/VO/MelinoeField_3317_B", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Trực giác của Cha về những Phước Lành vẫn còn, thưa Cha. Con chỉ mới gặp Ares gần đây, sau tất cả những người khác." }, { Cue = "/VO/Hades_0203_B", PreLineAnim = "Hades_Blessing_Short", Text = "The only reason I can think of that my nephew would endeavor to conclude a war is if it meant still-greater wars could then be waged instead. Nevertheless, if he is claiming to be on your side, he would not lie outright." }, }, HadesAboutSisyphus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "HadesGiftDecline01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0121", Text = "Căn phòng này... trước đây từng là nơi ta giam giữ một tên tù nhân người phàm. Một vị vua người phàm đã cố lừa gạt Tử Thần! Ta đã bắt kẻ đó phải đẩy tảng đá đó lên đỉnh núi mãi mãi. Nhưng hắn vẫn tha thứ cho ta." }, { Cue = "/VO/MelinoeField_1575", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Quên hắn đi, Cha. Việc gợi nhớ lại những kẻ người phàm đã chết này thì có nghĩa lý gì? Chronos muốn cha bị nhấn chìm trong tội lỗi của mình. Đừng để hắn toại nguyện." }, { Cue = "/VO/Hades_0122", PreLineAnim = "Hades_Brooding", Text = "Con hiểu lầm rồi. Tên tù nhân đó, hắn được gọi là vua Sisyphus. Tảng đá của hắn như một người bạn. Hắn... yêu cầu người bạn của hắn ở cạnh và bầu bạn với ta. Cho đến khi đến khi có thêm người khác đến, hắn đã nói như thế." }, { Cue = "/VO/MelinoeField_1576", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Vậy thì con nên biết ơn tảng đá và nhà vua đó. Chronos chắc hẳn không tính đến việc những tù nhân trước đây của cha lại yêu quý cha." }, { Cue = "/VO/Hades_0123", PreLineAnim = "Hades_Hello", Text = "Hầu hết trong số chúng thì không. Một số kẻ đã chọn gia nhập đội quân của Titan và ở lại Tartarus. Tất nhiên là không phải nơi nào ta cũng kiểm soát được." }, }, HadesAboutSisyphus01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesGiftDecline01", "HadesWithPersephoneGift01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "HadesAboutSisyphus01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0121", Text = "Căn phòng này... trước đây từng là nơi ta giam giữ một tên tù nhân người phàm. Một vị vua người phàm đã cố lừa gạt Tử Thần! Ta đã bắt kẻ đó phải đẩy tảng đá đó lên đỉnh núi mãi mãi. Nhưng hắn vẫn tha thứ cho ta." }, { Cue = "/VO/MelinoeField_1575_B", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Quên hắn đi, Cha. Việc gợi nhớ lại những kẻ người phàm đã chết này thì có nghĩa lý gì?" }, { Cue = "/VO/Hades_0122", PreLineAnim = "Hades_Brooding", Text = "Con hiểu lầm rồi. Tên tù nhân đó, hắn được gọi là vua Sisyphus. Tảng đá của hắn như một người bạn. Hắn... yêu cầu người bạn của hắn ở cạnh và bầu bạn với ta. Cho đến khi đến khi có thêm người khác đến, hắn đã nói như thế." }, { Cue = "/VO/MelinoeField_1576", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Vậy thì con nên biết ơn tảng đá và nhà vua đó. Chronos chắc hẳn không tính đến việc những tù nhân trước đây của cha lại yêu quý cha." }, { Cue = "/VO/Hades_0123", PreLineAnim = "Hades_Hello", Text = "Hầu hết trong số chúng thì không. Một số kẻ đã chọn gia nhập đội quân của Titan và ở lại Tartarus. Tất nhiên là không phải nơi nào ta cũng kiểm soát được." }, }, HadesAboutPersephoneAway01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" }, Alive = false }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0303", Text = "Mẹ của con gửi đến con những lời hỏi thăm ấm áp nhất, và bà ấy rất lấy làm tiếc vì không thể đến đây cùng ta. Có một số việc ở Thánh Điện cần mẹ của con giải quyết, thay vì ta." }, { Cue = "/VO/MelinoeField_4164", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con cảm ơn, và cũng xin gửi lời hỏi thăm đến Mẹ. Vậy là Cha có mặt ở đây, còn Mẹ lo liệu mọi việc ở đó... hai người đã rút thăm để quyết định ai sẽ làm gì sao?" }, { Cue = "/VO/Hades_0304", PreLineAnim = "Hades_Blessing_Short", Text = "Việc rút thăm cũng chính là cách mà ta đã đến cõi giới này, vậy nên ta sẽ không bao giờ lặp lại trò đó. Ngoài ra thì cũng đơn giản thôi: Việc ta xuất hiện ở đây là để đảm bảo sự thành công của con." }, }, HadesAboutStoryReset01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "LastAwardTrait" }, IsAny = { "HadesAndPersephoneKeepsake" }, }, { Path = { "CurrentRun", "Hero", "TraitDictionary" }, HasAny = { "HadesLifestealBoon", "HadesCastProjectileBoon", "HadesPreDamageBoon", "HadesChronosDebuffBoon", "HadesInvisibilityRetaliateBoon", "HadesDeathDefianceDamageBoon", "HadesManaUrnBoon", }, }, { Path = { "GameState", "StoryResetCount" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0412", Portrait = "Portrait_Hades_Chained_02", Emote = "PortraitEmoteSurprise", Text = "Sao có thể... sao con đã có được Phước Lành từ ta, Con Gái? Có phải là... con đang mang theo kỷ vật gia đình chúng ta... Lựu Hồng Ngọc? Con lấy nó ở đâu vậy?" }, { Cue = "/VO/MelinoeField_5219", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con... không nhớ đã lấy nó ở đâu nữa, con... chẳng phải luôn mang nó bên mình sao? Cha... con... chẳng phải Cha đã... Con không hiểu." }, { Cue = "/VO/Hades_0413", PreLineAnim = "Hades_Blessing_Short", Text = "Rất có thể Phù Thủy Crossroads đã mang nó theo, ai mà biết được? Ảnh hưởng của cha ta rất mạnh... Thời Gian có thể làm phai mờ ký ức, có lẽ vậy. Nhưng lúc này... ta có thể gia tăng sức mạnh của nó." }, }, -- Post-True Ending / -- Post-Ending HadesWithPersephone01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, InteractDistance = 300, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0068", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Joyful_01", -- Portrait = "Portrait_Persephone_Queen_FiredUp_01", -- Portrait = "Portrait_Persephone_Queen_Apprehensive_01", -- doubtful -- Portrait = "Portrait_Persephone_Queen_Calculating_01", -- eyes askance -- Portrait = "Portrait_Persephone_Queen_Joyful_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Persephone_Queen_01", WaitTime = 1.6 }, Text = "Ôi, Melinoë, con đã quay lại! Bọn ta đã nghĩ rằng sẽ gặp con ở đây... thật ra là Hades đã nghĩ vậy. Ta thì không đoán nổi." }, { Cue = "/VO/Hades_0215", Text = "Mẹ của con và ta đã mong ngóng được gặp lại con kể từ khi con rời đi. Dạo này con thế nào? Mọi chuyện ở Crossroads vẫn ổn chứ?" }, { Cue = "/VO/MelinoeField_4148", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Về cơ bản thì vẫn ổn, thưa Cha. Thật mừng khi thấy Cha trong căn phòng này, với tinh thần tốt hơn trước nhiều, nhưng... tại sao lại là nơi này? Con tưởng Cha thích ở nơi khác hơn." }, { Cue = "/VO/Hades_0216", PreLineAnim = "Hades_Brooding", Text = "Thánh Điện đã được khôi phục một phần, nhưng phần còn lại của Tartarus vẫn còn tàn dư từ sở thích xa hoa của ông nội. Dù ông ấy gây ra bao nhiều thiệt hại cho gia đình chúng ta, thì việc dọn dẹp những tàn dư của ông ấy sẽ mất khá nhiều thời gian!" }, { Cue = "/VO/MelinoeField_4149", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ông Nội sẽ lo phần việc của mình. Điều đó cũng có nghĩa là con được phép chào hỏi ông ấy." }, { Cue = "/VO/Hades_0217", PreLineAnim = "Hades_Hello", PostLineFunctionName = "ResourceGiftedInEventPresentation", PostLineFunctionArgs = { ResourceName = "DeathAreaPoints", SoundName = "/Leftovers/Menu Sounds/TalismanPowderDownLEGENDARY", GiftWaitTime = 0 }, Text = "Vậy thì ta sẽ lo phần việc của mình, dõi theo bước chân của con. Miễn là ta vẫn còn có thể giúp ích." }, EndVoiceLines = { { PreLineWait = 0.7, UsePlayerSource = true, { Cue = "/VO/MelinoeField_5008", Text = "Bồ Hóng từ Thánh Điện..." }, }, }, }, HadesWithPersephone02 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "AchillesTrueEnding01", "HadesWithPersephoneGift03" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/MelinoeField_4169", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Dạo này Cha Mẹ thế nào rồi? Hẳn đây là khoảng thời gian khá áp lực, khi phải cải tạo lại Thánh Điện lẫn Địa Ngục." }, { Cue = "/VO/Hades_0307", Portrait = "Portrait_LordHades_Averted_01", PreLineAnim = "Hades_Brooding", Text = "Ồ, việc đó vẫn nhẹ nhõm hơn nhiều so với việc bị giam cầm, lo sợ điều tồi tệ nhất sẽ xảy ra với gia dành và con chó của ta, và chứng kiến Địa Ngục trở thành một nơi xa lạ." }, { Cue = "/VO/Persephone_0144", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", -- Portrait = "Portrait_Persephone_Queen_FiredUp_01", -- Portrait = "Portrait_Persephone_Queen_Calculating_01", -- Portrait = "Portrait_Persephone_Queen_Joyful_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", Text = "Đối với ta thì khác. Trong kiếp này... mới khoảnh khắc trước, ta là người mẹ vừa mới sinh con, vậy mà giờ đã không còn nữa! Dù sao thì, con luôn là đứa con bé bỏng của ta, Melinoë!" }, { Cue = "/VO/MelinoeField_4170", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Con nghĩ là Mẹ luôn có thể sinh thêm một đứa con nữa mà, phải không? Với lại, thành viên trên đỉnh Olympus cũng chẳng đông lắm." }, { Cue = "/VO/Hades_0308", Portrait = "Portrait_LordHades_Averted_01", PreLineAnim = "Hades_Brooding", Emote = "PortraitEmoteFiredUp", Text = "{#Emph}Ôi trời! {#Prev}Chúng ta không nên thách thức Nữ Thần Định Mệnh bằng những lời lẽ đó, dù họ đang ở bất cứ đâu. Con và anh trai con là quá đủ rồi. " }, }, HadesWithPersephone03 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/MelinoeField_4154", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Việc cải tạo Thánh Điện thế nào rồi ạ? Ngay cả trước khi con rời đi, mọi việc cũng đã tiến triển rất tốt rồi." }, { Cue = "/VO/Hades_0281", Text = "Như con đã biết, Con Gái, đừng để vẻ ngoài đánh lừa. Phần việc ban đầu khá nhanh, nhưng xử lý các chi tiết thì mất rất nhiều thời gian." }, { Cue = "/VO/Persephone_0014", Speaker = "NPC_Persephone_01", -- Portrait = "Portrait_Persephone_Queen_01", Portrait = "Portrait_Persephone_Queen_FiredUp_01", -- Portrait = "Portrait_Persephone_Queen_Calculating_01", -- Portrait = "Portrait_Persephone_Queen_Joyful_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", Text = "Đặc biệt là khi mọi chi tiết đều phải y hệt như trước kia." }, { Cue = "/VO/Hades_0282", PreLineAnim = "Hades_Blessing_Short", Emote = "PortraitEmoteFiredUp", Text = "Tại sao chúng ta lại phải chấp nhận những thứ kém cỏi hơn? Bất cứ điều gì chúng ta không muốn thay đổi thì nên được giữ nguyên, đúng như những gì chúng ta mong muốn ban đầu." }, { Cue = "/VO/MelinoeField_4155", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Nghe có vẻ là một việc lớn. Con có thể giúp gì không?" }, { Cue = "/VO/Persephone_0015", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", -- Portrait = "Portrait_Persephone_Queen_FiredUp_01", -- Portrait = "Portrait_Persephone_Queen_Calculating_01", -- Portrait = "Portrait_Persephone_Queen_Joyful_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Persephone_Queen_Calculating_01", WaitTime = 8.0 }, Text = "Tốt nhất là hãy để bọn ta lo việc này, Melinoë. Bọn ta rất vui vì được gặp con! Cha của con có thể ban Phước Lành và tạm gác lại mọi chuyện! Phải không, Hades?" }, { Cue = "/VO/Hades_0283", Emote = "PortraitEmoteDepressed", Portrait = "Portrait_LordHades_Averted_01", PreLineAnim = "Hades_Brooding", Text = " Hãy chọn đi, Con Gái." }, }, HadesWithPersephoneAboutRenovations01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Hades_0284", Emote = "PortraitEmoteDepressed", Portrait = "Portrait_LordHades_Averted_01", PreLineAnim = "Hades_Blessing_Short", Text = "Vàng ở khắp mọi nơi, chết tiệt! Ánh sáng phản chiếu từ nó khiến mắt ta cảm thấy khó chịu. Việc cải tạo này sẽ kéo dài vô tận! Ngay cả Thánh Điện thì cũng còn rất lâu mới hoàn thành!" }, { Cue = "/VO/Persephone_0016", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Sẽ ổn thôi, Hades. Những chuyện trước đó còn tệ hơn nhiều, và chúng ta đã vượt qua. Sao phải vội vàng làm gì?" }, { Cue = "/VO/Hades_0285", Emote = "PortraitEmoteFiredUp", PreLineAnim = "Hades_Brooding", Text = "Nếu không phải vì ta, thì cũng là vì nàng! Khuôn viên này đáng lẽ phải đúng với những gì nàng mong muốn. Nhưng xem ra, chúng ta phải chịu đựng sở thích của cha ta thêm một thời gian nữa... Thứ lỗi cho bọn ta, Melinoë! Ừm, đây, hãy nhận lấy." }, }, HadesWithPersephoneAboutLegions01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/MelinoeField_4156", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Thật vui khi gặp Cha Mẹ ở đây. Bọn Satyr và những kẻ tương tự có làm phiền hai người không?" }, { Cue = "/VO/Hades_0286", PreLineAnim = "Hades_Blessing_Short", Text = "Bọn ta không phải những kẻ duy nhất thay đổi không gian nơi này như bọn ta từng nghĩ, Con Gái. Có vẻ như cha ta đã buộc phải cho phép những tín đồ cuồng tín của ông ấy được tự do thêm một thời gian nữa, để tránh phát sinh những rắc rối cho bọn ta." }, { Cue = "/VO/Persephone_0017", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Nhưng để giải thích cho dễ hiểu thì bọn Satyr và những kẻ khác đều bỏ chạy khi nhìn thấy bọn ta. Thường thì chúng còn hét lên như tiếng dê nữa!" }, { Cue = "/VO/Hades_0287", PreLineAnim = "Hades_Brooding", Text = "Ta biết con không được may mắn như vậy. Ít nhất thì mẹ của con và ta có thể chuẩn bị cho con trước cuộc chiến cuối cùng đang chờ phía trước." }, }, HadesWithPersephoneAboutGreeting01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { SumPrevRuns = 4, IgnoreCurrentRun = true, Path = { "RoomsEntered", "I_Boss01" }, Comparison = "<=", Value = 0, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Hades_0292", PreLineAnim = "Hades_Blessing_Short", Text = "Bọn ta nghe nói con đang trên đường đến, Con Gái. Vậy nên, mẹ của con đã sắp xếp để bọn ta đều có mặt ở đây để kịp lúc chào đón con." }, { Cue = "/VO/Persephone_0020", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_FiredUp_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Persephone_Queen_01", WaitTime = 2.7 }, Text = "Chàng vừa tiết lộ toàn bộ kế hoạch của ta đấy, Hades! Bọn ta chỉ muốn chào hỏi còn thôi, Melinoë. Vì hiện tại bọn ta chưa thể đón con về Thánh Điện được." }, { Cue = "/VO/MelinoeField_4159", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con chào Cha Mẹ. Mọi người vẫn khỏe chứ? Zagreus và những người hầu khác thế nào rồi?" }, { Cue = "/VO/Hades_0293", PreLineAnim = "Hades_Brooding", Text = "Họ đều đã trở về với công việc của mình; và chúng ta cũng nên như vậy, nhất là khi đã xong phần chào hỏi. Hãy giúp bọn ta loại bỏ tàn dư của cha ta, trong khi bọn ta xử lý những gì ông ấy đã làm với nơi này." }, }, HadesWithPersephoneAboutChamber01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0069", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Ta đã yêu cầu cha của con cải tạo căn phòng này, nếu đây là nơi mà thỉnh thoảng chúng ta lại gặp nhau. Và con biết ông ấy đã nói gì không?" }, { Cue = "/VO/Hades_0372", PreLineAnim = "Hades_Brooding", Emote = "PortraitEmoteDepressed", Portrait = "Portrait_LordHades_Averted_01", Text = "Ta chỉ nói rằng chúng ta nên để việc cải tạo căn phòng này sau cùng... vì ta không muốn quên ký ức về nó. Mặc dù nó vẫn sẽ tồn tại như thế này trong nhiều thế kỷ nữa, với tốc độ hiện tại." }, }, HadesWithPersephoneAboutUnseen01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0079", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Con Gái của chúng ta, một phần của Hội Vô Hình... trên thực tế thì, ta và Hades thậm chí còn không được phép biết đến con... con đang ở đâu... hay làm những gì." }, { Cue = "/VO/Hades_0373", PreLineAnim = "Hades_Brooding", Text = "Bảo vệ Địa Ngục là trách nhiệm chung của tất cả chúng ta... nhưng nghĩ lại thì, Nyx, với sự thông thái của mình, đã chuẩn bị thêm những biện pháp đề phòng." }, { Cue = "/VO/MelinoeField_4457", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con cũng chẳng rõ bí mật của Hội Vô Hình là gì. Trong suốt sự kiện này, bọn con phải lộ diện khỏi bóng tối vài lần." }, { Cue = "/VO/Persephone_0080", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Chính Nyx cũng là người đầu tiên nói rằng, việc Địa Ngục gieo rắc nỗi sợ là điều hữu ích. Nhưng ta cảm thấy thật may mắn khi bọn ta biết đến con không chỉ qua những lời thì thầm về sự báo thù, mà còn là chính con, bằng xương bằng thịt, Melinoë." }, }, HadesAboutNeoChronos01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "NeoChronosAboutTartarus02", "NeoChronosAboutOlympus02" } }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "NeoChronosGift02", "ZeusPalaceAboutTyphonDeath01" }, }, OrRequirements = { { { SumPrevRuns = 3, Path = { "RoomsEntered", "I_Boss01" }, Comparison = ">=", Value = 1, }, }, { { SumPrevRuns = 3, Path = { "RoomsEntered" }, TableValuesToCount = { "Q_Boss01", "Q_Boss02" }, Comparison = ">=", Value = 1, }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Hades_0305", Text = "Chronos... cha ta... ông ấy có đáp ứng những yêu cầu của con trong chuyện này không? Có thay đổi đột ngột hoặc rõ rệt nào trong hành vi hay thái độ của ông ấy không?" }, { Cue = "/VO/MelinoeField_4165", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ông ấy vẫn là chính mình... hay nói đúng hơn là phiên bản khác của ông ấy. Vô cùng hối lỗi, và con khá chắc là rất nhiệt tình trong việc khắc phục những ảnh hưởng tiêu cực còn sót lại ở đây và cả trên kia nữa." }, { Cue = "/VO/Hades_0306", PreLineAnim = "Hades_Hello", Text = "Dẫu vậy, chúng ta vẫn phải cảnh giác. Nhưng cha ta chưa bao giờ giấu được sự khinh miệt của mình. Nếu con đã loại bỏ được điều đó khỏi ông ấy... thì ông ấy thực sự không còn là tên Titan mà ta từng biết nữa." }, }, HadesAboutNeoChronos02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "HadesAboutNeoChronos01", "NeoChronosAboutNewJob01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/MelinoeField_4171", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ông Nội hiện tại ở Quần Đảo Phước Lành thế nào rồi? Con rất vui khi biết Bác Zeus và Cha đã tìm được vị trí công việc phù hợp cho ông ấy." }, { Cue = "/VO/Hades_0309", PreLineWait = 0.35, Text = "...Thật đáng ngạc nhiên, cha ta đã đảm nhiệm rất tốt vai trò này, ít nhất là cho đến hiện tại. Công việc này cũng không quá vất vả, mặc dù những cư dân ở Quần Đảo Phước Lành có thể rất khó tính." }, { Cue = "/VO/MelinoeField_4172", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Vậy là Ông Nội đang trông nom những người được tôn vinh nhất Elysium, đáp ứng mọi nhu cầu của họ, đại loại vậy ư?" }, { Cue = "/VO/Hades_0310", Text = "Về cơ bản thì đúng là vậy. Ông ấy rất chú trọng từng chi tiết, và hiếm khi quên. Bọn ta sẽ luôn theo dõi để đảm bảo ông ấy vẫn giữ được phẩm chất đó." }, }, HadesAboutNemesis01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "NemesisTakeRoomExitRecord", "I_Story01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Hades_0386", Text = "Hầu hết mọi người đều khiếp sợ khi bước vào căn phòng này, nhưng mới vừa nãy, hình bóng của Nyx đã xông vào. Chào hỏi qua loa rồi bước đi! Đó có phải là một trong những đứa con của Nyx?" }, { Cue = "/VO/MelinoeField_5028", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Nghe có vẻ như là Nemesis. Cô ấy muốn tự tay tiêu diệt Chronos hơn con. Giờ cô ấy đang truy lùng tàn dư của Chronos, giống như con. Giữa bọn con có một mối liên kết đặc biệt." }, { Cue = "/VO/Hades_0387", PreLineAnim = "Hades_Hello", Text = "Ta cảm thấy thương hại cho những tàn dư đó. Phải đối mặt với Hiện Thân Báo Ứng hoặc Hiện Thân Báo Thù, nếu không muốn nói là cả hai." }, }, HadesWithPersephoneAboutBackstory01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "HadesWithPersephoneGift03" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Hades_0414", Portrait = "Portrait_Hades_Chained_02", Text = "Con Gái... bọn ta... đã muốn hỏi về cánh tay của con, bởi vì... à thì, chỉ là tò mò thôi, và nếu không muốn nhắc đến thì con không cần trả lời cũng được..." }, { Cue = "/VO/MelinoeField_5220", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ồ, phải rồi! Giờ con đã quen đến nỗi chẳng còn nghĩ gì về chuyện đó nữa. Con... đã gặp một tai nạn nho nhỏ, từ rất lâu về trước. Hóa ra con không giỏi kiểm soát sinh tử như con tưởng. Kể từ đó đến nay, nó luôn là lời nhắc nhở về điều đó." }, { Cue = "/VO/Hades_0415", PreLineAnim = "Hades_Hello", Text = "Dẫu vậy, bọn ta vẫn cảm nhận được mối liên kết mạnh mẽ giữa con và cõi chết. Ai trong chúng ta đều có những vết sẹo từ những bài học của mình... hầu hết đều không lộ rõ hoặc gây tò mò như vậy. Mẹ của con và ta cho rằng đó là lựa chọn mang tính cá nhân." }, }, HadesWithPersephoneAboutHypnosWakeUp01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Hades_0411", Text = "Bọn ta phải cảm ơn con vì sự trở lại của Hypnos. Cậu ta không ngừng xin lỗi vì đã bỏ bê công việc của mình. Giờ thì cậu ta đang thông kế số ngày đã bỏ việc." }, { Cue = "/VO/Persephone_0150", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Calculating_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Bọn ta nghĩ rằng việc đó sẽ giúp cậu ta bớt nhàm chán... vì hiện tại bọn ta không thể tiếp nhận nhiều người như trước đây." }, { Cue = "/VO/Hades_0295", PreLineAnim = "Hades_Brooding", Text = "Tòa án chưa thể hoạt động! Nhưng số lượng Shade chờ phán xét đang ngày càng tăng, và bọn ta cần Hypnos giữ trật tự, cũng như cung cấp thông tin về họ." }, { Cue = "/VO/Persephone_0022", Speaker = "NPC_Persephone_01", -- Portrait = "Portrait_Persephone_Queen_01", Portrait = "Portrait_Persephone_Queen_FiredUp_01", -- Portrait = "Portrait_Persephone_Queen_Calculating_01", -- Portrait = "Portrait_Persephone_Queen_Joyful_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", Text = "Tuy vậy, cậu ta sẽ gặp khó khăn trong việc kiểm soát họ, nếu không biết đến khi nào tòa án mới hoạt động trở lại." }, { Cue = "/VO/Hades_0296", Emote = "PortraitEmoteDepressed", Portrait = "Portrait_LordHades_Averted_01", PreLineAnim = "Hades_Brooding", Text = "{#Emph}Augh{#Prev}, chúng ta không nên khiến con gái chán nản với những công việc giấy tờ tẻ nhạt. Vấn đề bây giờ là đứa con trai mất tích của Nyx đã trở lại. Điều đó có nghĩa là đã bớt đi một việc cần phải giải quyết." }, }, HadesWithPersephoneAboutZagreusFight01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { SumPrevRuns = 3, Path = { "RoomsEntered", "C_Boss01" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Hades_0311", Text = "Bọn ta nghe nói rằng con và anh trai con đã đánh nhau, đúng không? Ngay giữa Elysium, trước mặt mọi người...?" }, { Cue = "/VO/MelinoeField_4376", Emote = "PortraitEmoteSurprise", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cũng không hẳn, thưa Cha, không phải như cha nghĩ đâu! Đó chỉ là một trận đấu biểu diễn; một trận giao hữu, không hơn không kém. Dẫu vậy, Zagreus cũng không hề nương tay với con." }, { Cue = "/VO/Hades_0312", PreLineAnim = "Hades_Hello", Text = "Vậy ra đó là quyết định khôn ngoan từ thằng bé, hoặc nhiều khả năng là của con. Giữa những rắc rối ở Địa Ngục, một trận đấu biểu diễn, như cách con gọi, có thể chính là điều mà các Shade cần." }, { Cue = "/VO/Persephone_0027", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Một cách để khích lệ tinh thần! Ta đoán là họ khá thích kiểu giải trí bạo lực ở đó. Miễn là Melinoë và Zagreus đồng ý..." }, { Cue = "/VO/Hades_0313", PreLineAnim = "Hades_Hello", Text = "Con được huấn luyện bởi Phù Thủy Crossroads, còn anh của con được huấn luyện bởi chiến binh vĩ đại nhất từng chiến đấu trong các trận chiến của loài người. Ai giỏi hơn, có lẽ sẽ là chủ đề để tranh luận." }, }, HadesWithPersephoneAboutZagreusFight02 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "AchillesTrueEnding01", "HadesWithPersephoneAboutZagreusFight01" }, }, { SumPrevRuns = 2, Path = { "RoomsEntered", "C_Boss01" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0148", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Con lại đánh nhau với anh trai con nữa sao? Ở kiếp trước, ta đã rất ngạc nhiên khi hai đứa hòa thuận với nhau lúc còn nhỏ. Có lẽ vì anh của con lớn tuổi hơn..." }, { Cue = "/VO/MelinoeField_5223", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con còn nhớ bọn con đã gây ra khá nhiều rắc rối. Nhưng con không thể mong một người anh tốt hơn thế. Anh ấy luôn quan tâm, chơi đùa với con... và giờ thì đang đánh nhau với anh ấy!" }, { Cue = "/VO/Persephone_0149", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_DismissQuick_Start", PreLineAnimTarget = 731286, Text = "Chà, không cần nương tay với anh của con đâu. Miễn là để biểu diễn thôi! Ta nghĩ gia đình chúng ta đã quá mệt mỏi với những cuộc chiến thực sự trong thời gian dài rồi." }, }, HadesWithPersephoneAboutAchilles01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "AchillesTrueEnding01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0151", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Nhân tiện thì, Achilles gửi lời chào và lời chúc tốt đẹp nhất! Anh ta nói rằng anh ta vẫn nhớ những trận đấu tập của con và Zagreus... ừm, có lẽ là ở kiếp trước. Anh ta và những Người Hầu khác dạo gần đây đều khỏe hơn nhiều rồi." }, { Cue = "/VO/MelinoeField_5178", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Mel_Empathetic_01", WaitTime = 4 }, Text = "Thật mừng khi nghe điều đó, và xin hãy gửi lời chào và lời chúc tốt đẹp của con đến ngài ấy. Vì đã từng quen biết ngài ấy, ít nhất là trong kiếp trước... con lo rằng ngài ấy sẽ rất đau lòng về những gì đã xảy ra. Ý con là sự kiện tấn công Thánh Điện." }, { Cue = "/VO/Persephone_0152", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Calculating_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Ta nghĩ anh ta đã bị tổn thương, theo một cách nào đó. Trách nhiệm của anh ta là bảo vệ Thánh Điện, nhưng Chronos lại vượt quá khả năng của anh ta... cũng như với bất kỳ ai trong số bọn ta. Có lẽ những vị thần như chúng ta, hay những người hùng như Achilles, đôi khi cần được thế giới nhắc nhở về sự khiêm nhường..." }, }, HadesWithPersephoneAboutCerberus01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "AchillesTrueEnding01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0153", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Con còn nhớ lúc nhỏ con từng xem Cerberus như thể nó là ngựa chiến trung thành của con không? Ít nhất là nhờ con mà nó vẫn còn vận động nhiều như bây giờ." }, { Cue = "/VO/MelinoeField_5179", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con vẫn còn nhớ! Mẹ đã giúp con trèo lên lưng nó mà không bị ngã. Nó thật kiên nhẫn và hiền lành, dù con chơi đùa khá thô bạo với nó. Ở nơi con lớn lên, Crossroads, con chỉ có những sinh vật nhỏ hơn nhiều để bầu bạn." }, { Cue = "/VO/Persephone_0154", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Càng nhiều thì càng tốt, ta nghĩ vậy. Con luôn là nàng công chúa bé bỏng của bọn ta, trong kiếp trước... có lẽ bọn ta sẽ không nghiêm khắc với con như Hecate đã từng." }, }, HadesWithPersephoneAboutAltChildhood01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "AchillesTrueEnding01", "HadesWithPersephoneGift02" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0155", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Con thực sự rất giống với cô con gái mà mẹ nhớ ở kiếp trước... hoặc từng mơ thấy. Nhưng những khác biệt giữa con và Melinoë kiếp trước lại rất thú vị. Con có vẻ... trưởng thành hơn. Điềm tĩnh hơn." }, { Cue = "/VO/MelinoeField_5224", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ừm... có lẽ vì con lớn nhanh hơn khi ở Crossroads, so với ở trong Thánh Điện, điều đó cũng giải thích được phần nào. Con cũng không được huấn luyện nhiều như kiếp trước. Nhưng con vẫn là chính con, có lẽ vậy." }, { Cue = "/VO/Persephone_0156", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_DismissQuick_Start", PreLineAnimTarget = 731286, Text = "Ta luôn tự hỏi rằng chúng ta thực sự là ai, hay liệu hoàn cảnh và cách nuôi dạy mới là thứ định hình chúng ta. Có lẽ sự thật nằm giữa hai điều đó." }, }, HadesWithPersephoneAboutBlessings01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { Path = { "GameState", "EnemyKills", "Chronos" }, Comparison = ">=", Value = 10, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0024", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Con cũng nhận được phước lành từ ta, con biết điều đó mà phải không, Melinoë? Đáng tiếc là ta không được phép ban phước cho con một cách cụ thể, trong khi bọn ta đang xử lý những hậu quả mà Chronos để lại." }, { Cue = "/VO/Hades_0301", PreLineAnim = "Hades_Hello", Text = "Chẳng phải phước lành của ta đã đủ rồi sao? Con gái chúng ta đã nhiều lần đối đầu và đánh bại Titan... chẳng cần phải thay đổi những gì vốn đã hiệu quả." }, { Cue = "/VO/MelinoeField_4163", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chỉ cần gặp được Cha Mẹ thôi cũng đã tiếp sức giúp con vượt qua mọi khó khăn rồi. Dẫu vậy, con khá chắc rằng phước lành từ Mẹ sẽ còn giúp con mạnh mẽ hơn nữa. Quyền năng sinh tử và những thứ tương tự...!" }, { Cue = "/VO/Persephone_0025", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Calculating_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Được rồi, nếu con đã nói vậy... có lẽ ta giống mẹ của ta nhiều hơn ta tưởng." }, { Cue = "/VO/Hades_0302", Text = "Con Gái... mẹ của con đã mang sự sống đến cõi giới này, nơi mà lẽ ra nó không thể tồn tại, nhờ vậy mà chúng ta đã trở nên thịnh vượng hơn." }, }, HadesWithPersephoneAboutKeepsake01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, OrRequirements = { { { Path = { "GameState", "LastAwardTrait" }, IsAny = { "HadesAndPersephoneKeepsake" }, }, }, { { Path = { "CurrentRun", "Hero", "TraitDictionary" }, HasAny = { "HadesLifestealBoon", "HadesCastProjectileBoon", "HadesPreDamageBoon", "HadesChronosDebuffBoon", "HadesInvisibilityRetaliateBoon", "HadesDeathDefianceDamageBoon", "HadesManaUrnBoon", }, }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0083", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Quả Lựu mà bọn ta tặng cho con. Bọn ta đặt làm với số lượng rất hạn chế, chỉ dùng những loại đá quý chất lượng nhất, và dự định tặng cho con khi con trưởng thành..." }, { Cue = "/VO/MelinoeField_4459", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con thực sự rất bất ngờ! Và cảm ơn Cha Mẹ. Nó không chỉ đẹp, mà con giúp con cảm thấy gắn kết với hai người hơn." }, { Cue = "/VO/Persephone_0084", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Calculating_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Người ta nói rằng những Quả Lựu có tác dụng như thế. Chỉ cần ăn một nắm hạt của chúng thôi, thì chẳng còn ai muốn rời khỏi Địa Ngục nữa!" }, }, HadesWithPersephoneAboutPersephoneAspect01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, SkipPreNarrativeUnequip = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "CurrentRun", "Hero", "TraitDictionary", "LobImpulseAspect" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0087", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Đầu Lâu Revaal... Nyx từng tặng nó cho ta, để bảo vệ ta, phòng khi cần thiết. Ta chưa từng nghĩ rằng nó sẽ bảo vệ ta, ngay cả khi không còn ở bên ta." }, { Cue = "/VO/MelinoeField_4461", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", Text = "Mẹ có muốn nhận lại nó lúc này không? Có lẽ thời gian con sở hữu Revaal cũng sắp kết thúc, vì giờ Mẹ đã trở lại." }, { Cue = "/VO/Persephone_0088", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Dù là do Nữ Thần Định Mệnh đã sắp đặt từ trước, hay ta tự quyết định lúc này, thì câu trả lời vẫn là không, cảm ơn con. Nếu Đầu Lâu Bạc đã đưa con đến đây, thì cả hai thực sự rất ăn ý." }, }, HadesWithPersephoneAboutPersephoneAspect02 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, SkipPreNarrativeUnequip = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "AchillesTrueEnding01" }, }, { PathTrue = { "CurrentRun", "Hero", "TraitDictionary", "LobImpulseAspect" }, }, { Path = { "GameState", "LastAwardTrait" }, IsAny = { "HadesAndPersephoneKeepsake" }, }, { Path = { "CurrentRun", "Hero", "TraitDictionary" }, HasAny = { "HadesLifestealBoon", "HadesCastProjectileBoon", "HadesPreDamageBoon", "HadesChronosDebuffBoon", "HadesInvisibilityRetaliateBoon", "HadesDeathDefianceDamageBoon", "HadesManaUrnBoon", }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0146", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_DismissQuick_Start", PreLineAnimTarget = 731286, Text = "Con đang mang theo Ý Chí Revaal của ta, và còn sử dụng Lựu Hồng Ngọc của gia đình nữa... Ta đã mong được giúp đỡ con, nhưng không ngờ lại bằng cách này!" }, { Cue = "/VO/MelinoeField_5222", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", Text = "Phước lành của Cha và Đầu Lâu bạc đã kết hợp thành sức mạnh to lớn. Và con lại nhớ đến những khoảnh khắc chúng ta từng chia sẻ... hoặc có lẽ đã từng có thể chia sẻ." }, { Cue = "/VO/Persephone_0147", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Dù kiếp trước chỉ là những gì có thể xảy ra, nhưng những ký ức đó là thật, và ta sẽ trân trọng chúng... cùng với những kỷ niệm mà chúng ta đang có ở hiện tại." }, }, HadesWithPersephoneAboutNyxAspect01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, SkipPreNarrativeUnequip = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "GameState", "TextLinesRecord", "AchillesTrueEnding01" }, }, { PathTrue = { "CurrentRun", "Hero", "TraitDictionary", "SuitMarkCritAspect" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0159", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Con biết đấy, không phải lúc nào Nyx cũng nói ra, nhưng bà ấy rất biết ơn những gì con đã làm. Con thậm chí còn mang theo Ý Chí Xinth của bà ấy... may mắn là bà ấy không quá kiêu ngạo!" }, { Cue = "/VO/MelinoeField_5226", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", Text = "Con thường nhắc nhở mình rằng, phần lớn thế giới này tồn tại là nhờ bà ấy... chưa kể đến Hội Vô Hình. Bà ấy thật tuyệt vời... và chắc hẳn cũng vô cùng bận rộn." }, { Cue = "/VO/Persephone_0160", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_DismissQuick_Start", PreLineAnimTarget = 731286, Text = "Thật ra thì lý do ban đầu mà cha của con đến cõi giới này là để giảm bớt một phần trọng trách đó. Và hãy nghĩ mà xem... cai quản toàn bộ Địa Ngục chỉ là một phần trọng trách của bà ấy thôi. Cảm ơn con đã giúp đỡ bà ấy." }, }, HadesWithPersephoneAboutDemeter01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" } }, { PathTrue = { "CurrentRun", "UseRecord", "DemeterUpgrade" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "DemeterGift08", "HadesWithPersephoneGift06" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0095", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Con biết đấy, đôi khi ta ước chúng ta có thể dành nhiều thời gian bên nhau hơn. Nhưng rồi ta nhớ lại những năm tháng ta lớn lên. Chỉ là... đừng quên rằng bọn ta luôn ở đây nếu con cần bất kỳ điều gì." }, { Cue = "/VO/MelinoeField_4467", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Tất nhiên là con sẽ không quên. Cuộc sống với Bà Ngoại như thế nào? Bà Ngoại có vẻ rất nghiêm túc và tháo vát... Con rất yêu quý Bà Ngoại." }, { Cue = "/VO/Persephone_0096", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Ta mừng khi nghe điều đó. Bà Ngoại Demeter và ta, đôi lúc có những bất đồng, nhưng mọi chuyện đã tốt hơn kể từ khi ta chuyển xuống đây. Điều mà ta học được sau tất cả là con cái cần có không gian riêng... dù thật khó để buông tay chúng." }, }, HadesWithPersephonePostEpilogue01 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, GameStateRequirements = { NamedRequirements = { "ReachedEpilogue" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Hades_0288", Text = "Bọn ta đã nghe tin về sự trở lại của Ba Nữ Thần Định Mệnh. Việc con đã làm thế nào thì bọn ta không cần biết, nhưng ít nhất hãy nói cho bọn ta biết... họ có vui vẻ không?" }, { Cue = "/VO/MelinoeField_4157", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có vẻ là vậy. Cha nhắc con mới để ý, Clotho, người nói nhiều nhất, trông có vẻ rất vui! Vui đến mức con khó mà tưởng tượng được tính cách thật của cô ấy..." }, { Cue = "/VO/Hades_0289", Portrait = "Portrait_LordHades_Averted_01", Text = "Vậy thì có lẽ chúng ta thật may mắn... vì họ rất khó đoán. Tâm trạng của họ có thể không phải yếu tố quyết định sợi chỉ định mệnh, nhưng chắc chắn phải có mối tương quan nhất định." }, { Cue = "/VO/Persephone_0018", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Calculating_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Theo chúng ta được biết thì họ sẽ ngừng thêu dệt một thời gian. Nhưng chàng không tin điều đó phải không, Hades...?" }, { Cue = "/VO/Hades_0290", PreLineAnim = "Hades_Hello", Text = "Không, hoàn toàn không. Dù vậy, ta vẫn hoan nghênh mỗi người tự đưa ra kết luận của riêng mình." }, }, HadesWithPersephonePostEpilogue02 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { NamedRequirements = { "ReachedEpilogue" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/Persephone_0019", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Melinoë, con nghĩ sao về kỷ nguyên mới mà Nữ Thần Định Mệnh đã tiên đoán? Con biết bản thân mang một phần dòng máu phàm trần... có lẽ đó là điều tốt." }, { Cue = "/VO/MelinoeField_4158", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chúng ta đã xoay sở khá tốt, khi những Nữ Thần Định Mệnh dường như đã để mọi việc cho chúng ta tự quyết định... vậy nên, nếu đó là điều sẽ tiếp diễn, thì còn sẵn lòng chấp nhận. Nhưng Địa Ngục sẽ ra sao, nếu những vị thần không còn quyền cai trị nữa?" }, { Cue = "/VO/Hades_0291", PreLineAnim = "Hades_Hello", Text = "Chúng ta sẽ thích nghi, như cách chúng ta vẫn thường làm. Nhưng nếu kỷ nguyên mới khiến loài người không còn bị trói buộc bởi định mệnh — rằng tất cả rồi cũng phải chết, dù sớm hay muộn — thì ta nghĩ những việc chúng ta làm ở đây vẫn sẽ đóng một vai trò nào đó." }, }, HadesWithPersephonePostEpilogue03 = { Partner = "NPC_Persephone_01", PlayOnce = true, UseableOffSource = true, InteractDistance = 300, StatusAnimation = false, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "HadesWithPersephonePostEpilogue01", "HecatePostEpilogue01", "HadesWithPersephoneGift06" }, }, NamedRequirements = { "ReachedEpilogue" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesPersephoneGreeting, { Cue = "/VO/MelinoeField_4464", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Cha Mẹ có bao giờ... có dịp trò chuyện với Phù Thủy Crossroads... với Hecate chưa?" }, { Cue = "/VO/Persephone_0091", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Apprehensive_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Với trọng trách của bà ấy, chúng ta không nên để bị bắt gặp khi đang thưởng thức Ambrosia cùng nhau lúc này, mặc dù điều đó cũng áp dụng với con. Bọn ta vẫn nghe tin về bà ấy, nhưng luôn tôn trọng sự riêng tư của bà ấy." }, { Cue = "/VO/MelinoeField_4465", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ồ, con hiểu rồi... dù sao thì, con nghĩ là... bà ấy sẽ rất vui, nếu thỉnh thoảng nhận được tin tức từ Cha Mẹ, nếu Cha Mẹ không phiền. Bà ấy đã chiến đấu rất kiên cường để đưa mọi người trở lại... hơn bất kỳ ai." }, { Cue = "/VO/Persephone_0092", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Emote = "PortraitEmoteCheerful", Text = "{#Emph}Hahah{#Prev}, thôi được rồi. Ta nghĩ chúng ta có thể tìm cách gửi vài thông điệp xuyên qua cõi giới, phải không, Hades? Chúng ta sẽ mãi biết ơn Hecate. Dù sao thì bà ấy cũng đã cưu mang con gái chúng ta." }, }, -- Repeatable HadesChat01 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0036", PreLineAnim = "Hades_Brooding", Text = "Hãy ngừng chuyện ngu xuẩn này lại đi, Con Gái. Không có cách nào để ngăn chặn hăn đâu. Bản thân hắn đã là điều không thể ngăn chặn được." }, }, HadesChat02 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0037", Text = "Có quá nhiều rủi ro khi con đến gặp ta ở đây." }, }, HadesChat03 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0038", Text = "Con trai ta không bao giờ nghe lời ta; ta thật ngu xuẩn khi nghĩ rằng đó là điểm đặc biệt của riêng nó." }, }, HadesChat04 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0039", Text = "Gần đây ta đã trở nên suy yếu, nhưng dù sao con vẫn sẽ có một phần sức mạnh của ta." }, }, HadesChat05 = { UseableOffSource = true, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0040", Text = "Cảm ơn con đã chăm sóc Cerberus, nhưng hãy chăm sóc bản thân mình đi." }, }, HadesChat06 = { UseableOffSource = true, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0041", Text = "Con thật cứng đầu như anh trai con, chẳng thể khác được..." }, }, HadesChat07 = { UseableOffSource = true, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0096", Text = "Bất cứ khi nào con trở về... một phần sức mạnh của ta cũng trở lại." }, }, HadesChat08 = { UseableOffSource = true, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0097", Text = "Đừng mạo hiểm và đừng để bị phát hiện, Con Gái." }, }, HadesChat09 = { UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "EnemyKills", "Chronos" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0098", Text = "Con đã đánh bại Titan trước đây; con biết rõ những gì cần làm." }, }, HadesChat10 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0099", Text = "Ta không có ích gì cho con trong tình trạng hiện tại. Con nên làm những việc cần phải làm, đừng lo cho ta." }, }, HadesChat11 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0100", Text = "Đừng nghĩ về bất cứ điều gì khi chống lại Titan. Hắn sẽ không xem con là người thân của hắn đâu." }, }, HadesChat12 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0101", Text = "Hãy cứ đi đi, Con Gái. Ta không cần giúp đỡ ở đây." }, }, HadesChat13 = { UseableOffSource = true, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0102", Text = "Phù Thủy Crossroads đã thề sẽ không làm gì gây hại đến con; hãy đảm bảo bà ấy giữ lời hứa của mình." }, }, HadesChat14 = { UseableOffSource = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0103", Text = "Thật kỳ lạ khi có một khoảnh khắc bình yên với con và Cerberus trong thời buổi này." }, }, HadesChat15 = { UseableOffSource = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0104", Text = "Bọn ta đã đoán trước sự xuất hiện của con kể từ khi con chó nhảy vào đây." }, }, HadesChat16 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0105", Text = "Hãy đi đi, thực hiện việc trả thù của con. Vì gia đình chúng ta, chúng ta đủ sức để gánh vác hậu quả." }, }, -- 17 intentionally skipped HadesChat18 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0047", Text = "Hắn không chỉ là Titan. Hắn chính là Thời Gian; và Thời Gian thì không thể dừng lại..." }, }, HadesChat19 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0111", Text = "Những xiềng xích này khiến ta suy giảm ý chí; nhưng không hoàn toàn." }, }, HadesChat20 = { UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0112", Text = "Đây không phải cách ta tưởng tượng con gái ta sẽ dành những buổi tối vui chơi của tuổi trẻ..." }, }, -- post true ending HadesPostTrueEndingChat01 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0316", Text = "Những phước lành này chẳng có gì to tát, nhưng nếu chúng hữu ích, thì cũng tốt thôi." }, }, HadesPostTrueEndingChat02 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, -- Hades doesn't necessarily know { -- PathFalse = { "CurrentRun", "EnemyKills", "Zagreus" } } }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0320", Text = "Zagreus gửi lời chào. Gần đây Địa Ngục đã khiến nó bận rộn." }, }, HadesPostTrueEndingChat03 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0321", Text = "Những gì mà cha ta đã làm với Tartarus là nỗi ô nhục, nhưng chúng ta sẽ khắc phục theo thời gian..." }, }, HadesPostTrueEndingChat04 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0327", Text = "Nếu có bất cứ điều gì bọn ta có thể giúp con, cứ nói ra." }, }, HadesPostTrueEndingChat05 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0330", Text = "Phù Thủy Crossroads và những người khác vẫn khỏe chứ?" }, }, HadesPostTrueEndingChat06 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0331", Text = "Cha ta có thể đã khác, nhưng nếu vẫn còn sót lại tàn dư của ông ấy, hãy loại bỏ chúng." }, }, HadesPostTrueEndingChat07 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0334", Text = "Hãy đảm bảo rằng những gì chúng ta đã trải qua sẽ không tái diễn." }, }, HadesPostTrueEndingChat08 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0335", Text = "Ta sẽ luôn để dành sự phẫn nộ cho bất kỳ tàn dư nào của cha ta." }, }, HadesPostTrueEndingChat09 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0318", Text = "Mọi việc trong Thánh Điện đều được giải quyết ổn thỏa. Bọn ta hy vọng mọi việc của con cũng vậy." }, }, HadesPostTrueEndingChat10 = { UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "PrevRun", "BiomesReached", "N" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Hades_0324", Text = "Nhiệm vụ gần đây đã đưa con lên trần gian nhiều hơn, vậy nên thật tốt khi được gặp con ở đây." }, }, HadesWithPersephonePostTrueEndingChat01 = { Partner = "NPC_Persephone_01", UseableOffSource = true, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Persephone_0061", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Hẳn là hồi nhỏ con cũng rất đáng yêu, nhưng hiện tại cũng không tệ." }, }, HadesWithPersephonePostTrueEndingChat02 = { Partner = "NPC_Persephone_01", UseableOffSource = true, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Persephone_0062", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Calculating_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Một ngày nào đó, chúng ta phải cải tạo lại căn phòng này, Hades..." }, }, HadesWithPersephonePostTrueEndingChat03 = { Partner = "NPC_Persephone_01", UseableOffSource = true, StatusAnimation = false, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.HadesGreeting, { Cue = "/VO/Persephone_0065", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_FiredUp_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Hãy chứng tỏ năng lực cho Chronos thấy, ai mới là người thực sự nắm quyền ở đây." }, }, }, GiftTextLineSets = { HadesGiftDecline01 = { PlayOnce = true, Cost = { GiftPoints = 1, }, SkipGiftPresentationPost = true, GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Hades_Field_01" }, Comparison = ">=", Value = 2, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/MelinoeField_1499", UsePlayerSource = true, Text = "Thưa Cha, mặc dù biết điều này không nhất thiết phải được cho phép, nhưng con nghĩ nó có thể khiến Cha cảm thấy thoải mái hơn, nên con có thể mời Cha uống một chút Rượu Mật được không?" }, { Cue = "/VO/Hades_0110", PreLineAnim = "Hades_Brooding", PostLineThreadedFunctionName = "GiftPointRefundPresentation", Text = "Con giống hệt anh trai con, luôn bất ngờ... ta e rằng ta không có tâm trạng để nhận hoặc thưởng thức thứ này. Đừng quan tâm đến việc an ủi ta, hãy chú tâm vào mục tiêu từ sự phẫn nộ của con đi." }, }, HadesWithPersephoneGift01 = { PlayOnce = true, OnGiftTrack = true, LockedHintId = "Codex_HadesGiftHint", UnfilledIcon = "EmptyHeartWithGiftIcon", FilledIcon = "FilledHeartWithGiftIcon", Cost = { GiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "TrueEnding01" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HadesWithPersephone01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Persephone_01" } }, }, }, { Cue = "/VO/MelinoeField_4206", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", Text = "Mẹ, Cha, thật mừng khi cha mẹ đã trở lại trong đời con. Chúng ta còn rất nhiều điều phải chia sẻ, nhưng thời gian thì có hạn. Trước mắt, chỉ là một món quà mừng nhỏ cho Ngôi Nhà mới." }, { Cue = "/VO/Persephone_0070", Emote = "PortraitEmoteSurprise", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_Joyful_01", -- Portrait = "Portrait_Persephone_Queen_FiredUp_01", -- Portrait = "Portrait_Persephone_Queen_Calculating_01", -- Portrait = "Portrait_Persephone_Queen_Joyful_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Persephone_Queen_01", WaitTime = 2.5 }, Text = "Ôi, cảm ơn con, thật tuyệt vời! Kho dự trữ trong Thánh Điện đã hết rồi... có lẽ Chronos cũng thèm muốn thứ này." }, { Cue = "/VO/Hades_0218", PreLineAnim = "Hades_Blessing_Short", Text = "Rượu Mật từ đỉnh núi cao nhất... nghĩ lại thì bọn ta đã từng cấm thứ này ở đây, nhưng đó là thời đại trước khi con được sinh ra. Cảm ơn, Con Gái. Và bọn ta cũng có thứ này dành cho con. Một món quà nhỏ, nhưng cũng là biểu tượng của gia đình chúng ta." }, }, HadesWithPersephoneGift02 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "TrueEnding01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesWithPersephoneGift01" }, }, }, { Cue = "/VO/Persephone_0071", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", -- Portrait = "Portrait_Persephone_Queen_FiredUp_01", -- Portrait = "Portrait_Persephone_Queen_Calculating_01", -- Portrait = "Portrait_Persephone_Queen_Apprehensive_01", -- Portrait = "Portrait_Persephone_Queen_Joyful_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", Text = "Cảm ơn, Con Gái. Bọn ta chắc chắn sẽ tận dụng thứ này. Thực ra thì Hades đã lên kế hoạch cho nó rồi." }, { Cue = "/VO/Hades_0219", PreLineAnim = "Hades_Blessing_Short", Text = "Nếu con đồng ý, Con Gái... ta muốn ban tặng Rượu Mật này cho các Shade đang giúp đỡ cải tạo Địa Ngục. Như một lời cảm ơn cho công sức của họ. Con thấy sao?" }, { Cue = "/VO/MelinoeField_4377", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", Text = "Tất nhiên là được, thưa Cha, Cha có thể tùy ý sử dụng nó. Và con không thể nghĩ ra mục đích nào cao cả hơn là tưởng thưởng cho các Shade trung thành với chúng ta trong suốt thời gian qua." }, }, HadesWithPersephoneGift03 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "TrueEnding01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesWithPersephoneGift02" }, }, }, { Cue = "/VO/Persephone_0072", Speaker = "NPC_Persephone_01", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Persephone_Queen_01", WaitTime = 2.5 }, Text = "Một chai rượu tuyệt vời. Bọn ta xin nhận! Con biết đấy, đôi khi con khiến bọn ta nhớ đến anh trai con..." }, { Cue = "/VO/Hades_0220", Portrait = "Portrait_LordHades_Averted_01", PreLineAnim = "Hades_Brooding", PreLineWait = 0.35, Text = "Những phong tục mà chúng ta thừa hưởng từ những người thần trên đỉnh núi... ta mong con đừng tuân theo những truyền thống một cách mù quáng. Những truyền thống đó có thể là một phần nguyên nhân dẫn đến những sai lầm như hiện tại." }, { Cue = "/VO/MelinoeField_4378", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", Text = "Con cũng cảm thấy thận trọng giống như Cha, nhưng... theo quan điểm của con thì trong số nhiều phong tục của những vị thần, việc tặng Rượu Mật cho những người mà chúng ta yêu quý là một trong những phong tục tốt đẹp nhất." }, EndVoiceLines = { { PreLineWait = 0.42, ObjectTypes = { "NPC_Hades_01", "NPC_Hades_02" }, { Cue = "/VO/Hades_0221", Text = "...Có lẽ là vậy." }, }, }, }, HadesWithPersephoneGift04 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "TrueEnding01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesWithPersephoneGift03" }, }, }, { Cue = "/VO/Hades_0222", Portrait = "Portrait_LordHades_Averted_01", PreLineAnim = "Hades_Brooding", Text = "Chắc hẳn sẽ có nhiều người khác cũng vui vẻ khi nhận món quà này. Được lớn lên trong sự tách biệt ở Crossroads... ta e rằng đó hẳn là một cuộc sống rất cô đơn. Cô đơn đến mức không ai mong muốn." }, { Cue = "/VO/Persephone_0073", Portrait = "Portrait_Persephone_Queen_Calculating_01", Speaker = "NPC_Persephone_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", Text = "Sự cô đơn không phải lúc nào cũng xấu, nhưng... chắc chắn là khoảng thời gian khó khăn đối với con." }, { Cue = "/VO/MelinoeField_4379", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Cha Mẹ không cần lo lắng như vậy. Lớn lên ở Crossroads chưa bao giờ dễ dàng, nhưng... con chưa bao giờ cảm thấy cô đơn. Con luôn có ai đó, hoặc thứ gì đó để tâm sự... thậm chí con còn trò chuyện với đài phun nước mà bọn con xây dựng để tưởng nhớ Cha." }, { Cue = "/VO/Hades_0223", PreLineWait = 0.35, PreLineAnim = "Hades_Hello", Text = "Những lời nói của con vẫn chưa khiến bọn ta cảm thấy yên lòng. Nếu con lớn lên trong Thánh Điện của ta, con đã được nuông chiều, chứ không phải rèn luyện vất cả... nhất là khi con còn nhỏ tuổi như vậy." }, { Cue = "/VO/MelinoeField_4380", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con chưa bao giờ hối hận về những gì con phải trải qua, thưa Cha. Và con trân trọng những tình bạn mà con có. Có lẽ con đã có thể lớn lên với nhiều bạn bè hơn, nhưng con đã có tất cả những gì con cần. Ngoại trừ Cha, Mẹ, anh trai và chú chó thân yêu." }, EndVoiceLines = { { PreLineWait = 0.3, ObjectTypes = { "NPC_Persephone_01" }, { Cue = "/VO/Persephone_0074", Text = "Và giờ thì con cũng đã có bọn ta." }, }, { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/MelinoeField_4381", Text = "Tạ ơn Nữ Thần Định Mệnh." }, }, }, }, HadesWithPersephoneGift05 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "TrueEnding01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesWithPersephoneGift04" }, }, }, { Cue = "/VO/MelinoeField_4382", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con biết một phần Rượu Mật sẽ được dành tặng cho các Shade trung thành của chúng ta, nhưng con mong Cha và Mẹ có thể thưởng thức chai này. Bất cứ khi nào tiện thì... hãy thưởng thức nó." }, { Cue = "/VO/Hades_0225", PreLineAnim = "Hades_Blessing_Short", Text = "Để tận hưởng những thú vui này... có lẽ là sau khi công việc cải tạo Địa Ngục hoàn tất, khi bọn ta đã thống kê nguồn lực và các Shade, mới có thể nghỉ ngơi." }, { Cue = "/VO/Persephone_0029", Portrait = "Portrait_Persephone_Queen_FiredUp_01", Speaker = "NPC_Persephone_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Ồ, thôi nào, Hades. Chắc chắn chúng ta có thể đáp ứng yêu cầu của Melinoë sớm hơn thế đấy. Chàng hiểu rõ công việc này sẽ chẳng bao giờ kết thúc, vậy nên, hãy nắm bắt những khoảnh khắc nghỉ ngơi khi có cơ hội." }, { Cue = "/VO/Hades_0226", Portrait = "Portrait_LordHades_Averted_01", PreLineAnim = "Hades_Brooding", Text = "Nếu Nữ Hoàng đã nói như vậy. Cảm ơn con vì chai rượu này, Con Gái. Nhưng con thực sự không cần bận tâm về bọn ta như vậy. Chúng ta đã đoàn tụ với nhau. Bản thân ta không còn mong cầu điều gì hơn." }, }, -- bond forged HadesWithPersephoneGift06 = { PlayOnce = true, OnGiftTrack = true, UnfilledIcon = "EmptyHeartWithAmbrosiaIcon", FilledIcon = "FilledHeartWithAmbrosiaIcon", CompletedHintId = "Codex_BondForgedHadesPersephone", Cost = { SuperGiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "TrueEnding01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "HadesWithPersephoneGift05" }, }, }, { Cue = "/VO/MelinoeField_4383", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", Text = "Cha Mẹ đã thưởng thức Rượu Mật trong một dịp nhỏ, nên con muốn tặng thêm cho Cha Mẹ món này. Dành cho một dịp đặc biệt hơn, có lẽ là rất lâu sau này, khi chúng ta gần như quên đi cảm giác sống xa cách nhau, và hoàn cảnh thích hợp để ăn mừng." }, { Cue = "/VO/Persephone_0075", Portrait = "Portrait_Persephone_Queen_01", Speaker = "NPC_Persephone_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, Text = "Đây là... Ambrosia, màu sắc của sự thuần khiết... Cảm ơn Con Gái." }, { Cue = "/VO/Hades_0227", PreLineAnim = "Hades_Brooding", Text = "Ambrosia chính là món quà từ thiên đường... Ta gần như đã quên hương vị của nó nữa. Nhưng ta sẽ không bao giờ quên cảm giác sống xa nhau. Chúng ta cũng không nên mong chờ Thời Gian xóa nhòa nỗi đau đó. Hãy luôn ghi nhớ cách mà chúng ta đã cùng nhau vượt qua." }, { Cue = "/VO/MelinoeField_4384", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Khi con còn nhỏ, Nữ Chúa Hecate đã từng nói điều tương tự... rằng nỗi đau của quá khứ sẽ luôn tồn tại, dù thời gian có cố xóa nhòa. Vậy nên, có lẽ chúng ta nên tôn vinh những ký ức đó. Một kỷ nguyên nữa cũng được, miễn là có thể." }, { Cue = "/VO/Persephone_0076", Portrait = "Portrait_Persephone_Queen_Calculating_01", Speaker = "NPC_Persephone_01", PreLineAnim = "Persephone_Greet_Full", PreLineAnimTarget = 731286, Text = "Một lễ kỷ niệm sau một kỷ nguyên nữa, có vẻ như có rất nhiều thời gian để chuẩn bị, vậy thì... sao lại không nhỉ, Hades? Ambrosia này chắc chắn sẽ càng ngon theo thời gian." }, { Cue = "/VO/MelinoeField_4385", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Hãy cho con biết nếu con có thể giúp gì trong việc chuẩn bị cho đến lúc đó. Hoặc nếu có bất cứ việc gì khác mà con có thể làm trong lúc Cha Mẹ đang cải tạo lại Thánh Điện." }, { Cue = "/VO/Persephone_0077", Portrait = "Portrait_Persephone_Queen_01", Speaker = "NPC_Persephone_01", PreLineAnim = "Persephone_DismissA_Start", PreLineAnimTarget = 731286, PostLineAnim = "Persephone_DismissB_End", PostLineAnimTarget = 731286, PostLineThreadedFunctionName = "MaxedRelationshipPresentation", PostLineThreadedFunctionArgs = { Text = "NPC_Parents_01", Icon = "Keepsake_HadesAndPersephone" }, Text = "Bọn ta mới là người hỏi con điều đó. Khi con chào đời, Hades và ta đã cảm tạ những Nữ Thần Định Mệnh, vì đã ban cho bọn ta một đứa con tuyệt vời như thế này, mà bọn ta không hề hay biết..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/MelinoeField_4207_B", Text = "Cảm ơn cha mẹ...!" }, }, }, }, }, GiftGivenVoiceLines = { { PreLineWait = 0.5, ObjectType = "NPC_Persephone_01", { Cue = "/VO/Persephone_0028", Text = "Hãy nhận lấy." }, }, { BreakIfPlayed = true, PreLineWait = 1.0, UsePlayerSource = true, { Cue = "/VO/MelinoeField_4207", Text = "Cảm ơn Cha Mẹ vì thứ này." }, }, }, RepulseOnMeleeInvulnerableHit = 150, OnHitVoiceLines = { Cooldowns = { { Name = "HadesSpokeRecently", Time = 12 }, }, { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.25, ObjectType = "NPC_Hades_Field_01", PreLineAnim = "Hades_Brooding", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathFromArgs = true, Path = { "SourceProjectile", }, IsNone = { "FrogFamiliarLand", "CatFamiliarPounce" }, }, }, { Cue = "/VO/Hades_0258", Text = "Ta không có tâm trạng cho chuyện này." }, { Cue = "/VO/Hades_0259", Text = "Y hệt anh trai con.", PlayFirst = true }, { Cue = "/VO/Hades_0260", Text = "Dừng lại." }, { Cue = "/VO/Hades_0261", Text = "Con Gái?" }, { Cue = "/VO/Hades_0046", Text = "Oh, máu và bóng tối..." }, }, { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.25, ObjectType = "NPC_Hades_Field_01", PreLineAnim = "Hades_Brooding", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathFromArgs = true, Path = { "SourceProjectile", }, IsNone = { "FrogFamiliarLand", "CatFamiliarPounce" }, }, }, { Cue = "/VO/Hades_0042", Text = "Hãy phản công nếu cần thiết.", PlayFirst = true }, { Cue = "/VO/Hades_0043", Text = "Con đừng để thất bại như ta.", GameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "NPC_Hades_Field_01" }, }, }, }, { Cue = "/VO/Hades_0044", Text = "Hãy mặc kệ ta." }, { Cue = "/VO/Hades_0045", Text = "Mặc kệ ta đi." }, { Cue = "/VO/Hades_0046", Text = "Oh, máu và bóng tối..." }, }, }, }, -- @ ending NPC_Hades_Story_01 = { InheritFrom = { "NPC_Neutral" }, GenusName = "NPC_Hades_Field_01", Portrait = "Portrait_Hades_Past_01", EmoteOffsetY = -280, EmoteOffsetX = 45, AnimOffsetZ = -50, Groups = { "NPCs" }, SubtitleColor = Color.HadesVoice, SpeakerName = "Hades", LoadPackages = { "Hades", }, }, -- @ ending NPC_Hades_02 = { InheritFrom = { "NPC_Neutral" }, GenusName = "NPC_Hades_Field_01", Portrait = "Portrait_LordHades_01", Groups = { "NPCs" }, SubtitleColor = Color.HadesVoice, SpeakerName = "Hades", LoadPackages = { "Hades", }, SetupEvents = { { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_ChronosFlashback01" }, }, }, FunctionName = "GenericPresentation", Args = { SetAnimation = "HadesFlashback_Story_Idle", ThingProperties = { GrannyModel = "Hades_Mesh", }, }, }, }, SpecialInteractFunctionName = "SpecialInteractSalute", SpecialInteractCooldown = 14, SpecialInteractGameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusTrueEnding01" }, }, }, InteractVoiceLines = { { PlayOnceThisRun = true, PreLineWait = 0.25, RandomRemaining = true, UsePlayerSource = true, SuccessiveChanceToPlayAll = 0.2, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 4 }, }, { Cue = "/VO/MelinoeField_1566", Text = "Be well, Lord Father." }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, { RandomRemaining = true, PreLineWait = 0.3, ObjectType = "NPC_Hades_02", { Cue = "/VO/Hades_0253", Text = "Greetings.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698", "/VO/Melinoe_1699" }, }, }, }, { Cue = "/VO/Hades_0254", Text = "Hail, Daughter.", PlayFirst = true, GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698", "/VO/Melinoe_1699", "/VO/Melinoe_5165" }, }, }, }, { Cue = "/VO/Hades_0255", Text = "Darkness suits me best.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1701", "/VO/Melinoe_1703" }, }, }, }, { Cue = "/VO/Hades_0256", Text = "Go unseen.", PlayFirst = true, GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1566", "/VO/MelinoeField_1567", "/VO/Melinoe_1705" }, }, }, }, { Cue = "/VO/Hades_0257", Text = "Shadows conceal you.", PreLineAnim = "Hades_Unchained_Hello", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1567", "/VO/Melinoe_1703" }, }, }, }, { Cue = "/VO/Hades_0127", Text = "{#Emph}Hrm.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1566", "/VO/MelinoeField_1566", "/VO/Melinoe_1709", "/VO/Melinoe_1700", "/VO/Melinoe_1704", }, }, }, }, { Cue = "/VO/Hades_0136", Text = "Bóng tối che chở con.", PlayFirst = true, PreLineAnim = "Hades_Unchained_Hello", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/MelinoeField_1567" }, }, }, }, }, }, InteractTextLineSets = { HadesTrueEnding01 = { -- Partner = "NPC_Hecate_Story_01", Partner = "NPC_Chronos_02", PlayOnce = true, UseableOffSource = true, UseText = "UseListenNPC", StatusAnimation = false, -- played via script InitialGiftableOffSource = true, PreBlockSpecialInteract = true, GiftableOffSource = true, SkipContextArt = true, OnQueuedFunctionName = "OverwriteSelf", OnQueuedFunctionArgs = { AllowSpecialInteractInPartnerConversation = true, BlockChatting = true, }, { Cue = "/VO/Hades_0408", Text = "...Khi con gặp khó khăn với con trai mình... đôi khi con nghĩ đến Cha. Con không thể tưởng tượng nổi việc phải nuôi dạy cùng lúc nhiều đứa con như Cha đã từng làm." }, { Cue = "/VO/Chronos_1474", Source = "NPC_Chronos_02", Speaker = "NPC_Chronos_01", -- PreLineAnim = "NPC_Chronos_Enlightened_Greet", PreLineAnimTarget = 774458, -- Chronos -- PreLineAnimTarget = 774366, -- Hecate Text = "À thì... ta cũng không giỏi trong việc đối phó với các con nhỉ? Đặc biệt là Zeus... nghĩ đến việc sắp được gặp lại nó và những đứa khác." }, { Cue = "/VO/Hades_0409", Text = "Con không thể đảm bảo cha sẽ được đón tiếp như thế nào. Có vẻ như những ký ức mơ hồ mà chúng ta trải qua chưa từng chạm đến Đỉnh Olympus. Nhưng Zeus đã nhận được toàn bộ báo cáo của con." }, { Cue = "/VO/Chronos_1475", Source = "NPC_Chronos_02", Speaker = "NPC_Chronos_01", PreLineAnim = "NPC_Chronos_Enlightened_Greet", PreLineAnimTarget = 774458, -- Chronos -- PreLineAnimTarget = 774366, -- Hecate Text = "Nếu Thời Gian vốn đã tàn nhẫn, thì con cháu ta chắc hẳn cũng mang một phần dã tính đó. Cháu có đồng ý với ta không, Cháu Gái?" }, { Cue = "/VO/MelinoeField_5217", UsePlayerSource = true, Portrait = "Portrait_Mel_Default_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Có lẽ chúng ta có nhiều điểm chung hơn những gì chúng ta muốn thừa nhận. Dù sao thì, Bác Zeus đã yêu cầu ông đến một mình. Giờ chỉ có Nữ Thần Định Mệnh mới biết được chuyện gì đang chờ đợi... mặc dù đã có sự giúp đỡ của Nyx, nhưng vẫn chưa tìm thấy dấu vết nào của họ sao?" }, { Cue = "/VO/Chronos_1476", Source = "NPC_Chronos_02", Speaker = "NPC_Chronos_01", PreLineWait = 0.35, Text = "Vẫn chưa. Ta đã ném họ vào vực thẳm. Nếu ta biết chính xác đó là nơi nào, thì chắc hẳn họ cũng sẽ biết đường quay lại. Tuy nhiên, nếu giả thuyết của ta về những khả năng mà chúng ta đã trải qua là đúng... thì có lẽ chúng ta sẽ tìm thấy họ." }, { Cue = "/VO/MelinoeField_5167", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chúng ta sẽ tìm được. Và cháu mong chờ được kiểm chứng giả thuyết này. Có lẽ tất cả chúng ta sẽ học được điều gì đó về bản thân mình." }, { Cue = "/VO/Chronos_1477", Source = "NPC_Chronos_02", Speaker = "NPC_Chronos_01", PreLineWait = 0.35, Text = "Giá mà chúng ta có thể làm được! Những vị thần và Titan có thể bị nguyền phải sống bất tử... nhưng chúng ta không nhất thiết phải ràng buộc bản thân theo lối sống cũ." }, { Cue = "/VO/MelinoeField_5168", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Mel_Empathetic_01", WaitTime = 2.1 }, Text = "Đúng vậy. Ừm, Cha...? Cảm ơn Cha vì lòng hiếu khách. Thật mừng vì Cha vẫn ổn." }, { Cue = "/VO/Hades_0410", PreLineAnim = "Hades_Unchained_Hello", Portrait = "Portrait_LordHades_Averted_01", Text = "Ta đã chẳng được như ngày hôm nay nếu không có con, Con Gái. Ta tin rằng chúng ta sẽ sớm gặp lại nhau. Và có lẽ cả Cha nữa." }, { Cue = "/VO/Chronos_1478", Source = "NPC_Chronos_02", Speaker = "NPC_Chronos_01", PreLineWait = 0.35, PreLineAnim = "NPC_Chronos_Enlightened_Explaining", PreLineAnimTarget = 774458, -- Chronos Text = "Ta cũng vậy, Hades. Ít nhất thì Thánh Điện này đã khôi phục lại phần lớn theo ý muốn của con. Tất nhiên, ngoài đại sảnh này thì vẫn còn nhiều việc phải làm." }, { Cue = "/VO/MelinoeField_5169", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", PostLineFunctionName = "DeathAreaRestoredUpdateHallwayBlocks", Text = "Đúng vậy, thưa Cha, chúc Cha mọi điều tốt đẹp nhất trong công cuộc cải tạo lại Địa Ngục. Còn về phần bọn con, cỗ xe ngựa đã đến rồi." }, EndVoiceLines = { { PreLineWait = 0.35, ObjectType = "NPC_Chronos_02", { Cue = "/VO/Chronos_1027", Text = "Đến lúc rồi. Ta sẵn sàng rồi." }, }, { PreLineWait = 0.45, ObjectType = "NPC_Hades_02", { Cue = "/VO/Hades_0251", Text = "Shadows conceal you." }, }, }, }, HadesHideAndSeek01 = { PlayOnce = true, RoomUseableOffSource = true, InitialGiftableOffSource = true, GiftableOffSource = true, SkipContextArt = true, StatusAnimation = false, OnQueuedThreadedFunctionName = "AmbientChatting", OnQueuedFunctionArgs = PresetEventArgs.HadesZagreusChatting, { Cue = "/VO/Zagreus_0434", Portrait = "Portrait_Zag_Default_02", Speaker = "NPC_Zagreus_Past_01", Text = "Ồ, quả là dịp hiếm hoi. Cả hai người đều ở đây! Điều gì mang ông đến đây vậy, Ông Nội?" }, { Cue = "/VO/Chronos_1413", Source = "NPC_Chronos_01", Speaker = "NPC_Chronos_01", Portrait = "Portrait_Chronos_Pained_01", -- PreLineAnim = "NPC_Chronos_Enlightened_Greet", -- PreLineAnimTarget = 774458, -- Chronos Text = "Ta vẫn đang tìm kiếm tung tích của đứa cháu gái! Ta đã lục tung cả nơi này lên, nhưng vẫn chưa thấy dấu vết nào! Con bé quả là khó lường, y như con ngày xưa vậy, Hades." }, { Cue = "/VO/Hades_0392", Portrait = "Portrait_Hades_Past_01", Speaker = "NPC_LordHades_01", Text = "Hoặc có lẽ do cha đã già rồi. Con bé đã chạy đến chỗ Bếp Trưởng, giờ vẫn đang nấp ở đó. Cha mau qua đó đi, trước khi con bé hết kiên nhẫn." }, { Cue = "/VO/Zagreus_0435", Portrait = "Portrait_Zag_Empathetic_02", Speaker = "NPC_Zagreus_Past_01", PostLineFunctionName = "UpdateChronosFlashback", Text = "Ừm... ý Cha là, ờm, bọn con chẳng biết đứa cháu bé bỏng của ông đang ở đâu cả! Con bé có thể ở bất cứ đâu! Ông thử ghé qua phòng quản lý chưa? Ôi trời, cháu có cảm giác mình chẳng khác gì Hypnos cả." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Chronos_1414", Text = "Cảm ơn vì gợi ý." }, }, { PreLineWait = 0.25, ObjectTypes = { "NPC_Zagreus_Past_01", "NPC_Zagreus_01" }, { Cue = "/VO/Zagreus_0436", Text = "Cố lên ông nhé!" }, }, { PreLineWait = 0.5, UsePlayerSource = true, { Cue = "/VO/Chronos_1415", Text = "Cháu yêu của ta đâu rồi...?" }, }, { PreLineWait = 0.5, ObjectType = "NPC_Melinoe_Story_01", Speaker = "PlayerUnit", SkipAnim = true, { Cue = "/VO/MelinoeField_5053", Text = "{#Emph}" }, }, }, }, }, }, -- Persephone, Id = 731286 (in I_Story01) NPC_Persephone_01 = { InheritFrom = { "NPC_Neutral" }, SubtitleColor = Color.PersephoneVoice, Portrait = "Portrait_Persephone_Queen_01", LoadPackages = { "Persephone", }, SpeakerName = "Persephone", Groups = { "NPCs" }, EmoteOffsetY = -240, AnimOffsetX = 5, InvincibubbleScale = 1.1, RepulseOnMeleeInvulnerableHit = 150, UseTextSpecial = "PersephoneUseTextSpecial", SpecialInteractFunctionName = "HugPersephone", SpecialInteractCooldown = 12, SpecialInteractGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "PersephoneTrueEnding01" }, }, }, InteractVoiceLines = { { PreLineWait = 0.25, RandomRemaining = true, UsePlayerSource = true, SuccessiveChanceToPlayAll = 0.2, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 4 }, }, { Cue = "/VO/Melinoe_5064", Text = "Be well, Mother!" }, { Cue = "/VO/Melinoe_5065", Text = "Thank you for being here.", PlayFirst = true }, { Cue = "/VO/Melinoe_5067", Text = "Take care, Mother." }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, { { RandomRemaining = true, PreLineWait = 0.28, -- PreLineAnim = "Persephone_Greet_Start", ObjectType = "NPC_Persephone_01", { Cue = "/VO/Persephone_0050", Text = "You too, my baby girl.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5064" }, }, }, }, { Cue = "/VO/Persephone_0051", Text = "Only because of you.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5065" }, }, }, }, { Cue = "/VO/Persephone_0052", Text = "Oh, Daughter...", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5066" }, }, }, }, { Cue = "/VO/Persephone_0053", Text = "You take care too.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5067" }, }, }, }, { Cue = "/VO/Persephone_0054", Text = "{#Emph}", PlayFirst = true, GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_5066", "/VO/Melinoe_5067" }, }, }, }, { Cue = "/VO/Persephone_0055", Text = "Hello!", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698", "/VO/Melinoe_1699" }, }, }, }, { Cue = "/VO/Persephone_0056", Text = "The old one at least.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1700" }, }, }, }, { Cue = "/VO/Persephone_0057", Text = "Oh, thank you.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1701", "/VO/Melinoe_1703" }, }, }, }, { Cue = "/VO/Persephone_0058", Text = "We could use it.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1704" }, }, }, }, { Cue = "/VO/Persephone_0059", Text = "We'll need it.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1705" }, }, }, }, }, }, }, InteractTextLineSets = { PersephoneTrueEnding01 = { PlayOnce = true, UseableOffSource = true, -- Partner = "NPC_Chronos_02", Partner = "NPC_Hecate_Story_01", SkipContextArt = true, InitialGiftableOffSource = true, GiftableOffSource = true, -- StatusAnimation = false, -- played via script OnQueuedFunctionName = "OverwriteSelf", OnQueuedFunctionArgs = { AllowSpecialInteractInPartnerConversation = true, BlockChatting = true, }, { Cue = "/VO/Persephone_0137", PreLineThreadedFunctionName = "HugPersephone", PreLineThreadedFunctionArgs = { Silent = true }, Portrait = "Portrait_Persephone_Queen_01", -- Portrait = "Portrait_Persephone_Queen_FiredUp_01", -- Portrait = "Portrait_Persephone_Queen_Calculating_01", -- Portrait = "Portrait_Persephone_Queen_Joyful_01", -- PreLineAnim = "Persephone_Greet_Start", -- PostLineAnim = "Persephone_Greet_End", -- PreLineAnim = "Persephone_DismissA_Start", -- PostLineAnim = "Persephone_DismissB_End", Text = "Con gái xinh đẹp của ta... bọn ta vừa nhắc đến con đấy! Về những ngày còn bé của con, trong kiếp này lẫn kiếp khác. Trưởng thành trong khó khăn... và con đã trải qua điều đó đến hai lần." }, { Cue = "/VO/MelinoeField_5157", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Portrait = "Portrait_Mel_Empathetic_01", Text = "Nhờ vậy mà con cảm thấy mình may mắn biết bao. Hecate là người chăm sóc tuyệt vời nhất mà con từng biết. Và con vô cùng biết ơn vì được sống cùng Mẹ... nơi chất chứa rất nhiều tình yêu thương. Giờ đây, mẹ đã gặp một kiếp khác của con." }, { Cue = "/VO/Persephone_0138", Portrait = "Portrait_Persephone_Queen_01", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Persephone_Queen_Calculating_01", WaitTime = 4.1 }, Text = "Và ta rất háo hức để hiểu thêm về kiếp này của con. Còn về Hecate...? Bà có chắc việc chăm sóc con bé không phải gánh nặng đối với bà chứ?" }, { Cue = "/VO/HecateField_0435", Source = "NPC_Hecate_01", PreLineAnim = "HecateHubGreet", -- PreLineAnimTarget = 774458, -- Chronos PreLineAnimTarget = 774366, -- Hecate Text = "Ta đã thề rằng sẽ không để con gái của người bị tổn hại, thưa Nữ Hoàng, và lời thề đó vẫn còn hiệu lực. Và ta sẽ luôn chăm sóc cô ấy, dù cô ấy có ở cùng ta hay không." }, { Cue = "/VO/Persephone_0139", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_Greet_Full", Text = "Vậy là mọi chuyện đã ổn thỏa...! Và Melinoë... thật lòng mà nói... ta cũng chưa từng sống ở nhà khi còn trẻ!" }, { Cue = "/VO/HecateField_0436", Source = "NPC_Hecate_01", PreLineAnim = "Hecate_Hub_Scoff", -- PreLineAnimTarget = 774458, -- Chronos PreLineAnimTarget = 774366, -- Hecate Text = "Hãy suy xét lại, Melinoë... chẳng lẽ cô thực sự muốn quay về vùng đất phủ đầy tro bụi kia ư? Nơi này mới chính là ngôi nhà thực sự của cô, và khi cô rời đi, những luật lệ cổ xưa hơn cả thời đại của bọn ta sẽ ngăn không cho cô trở lại nữa. Để phụng sự Hội Vô Hình..." }, { Cue = "/VO/MelinoeField_5158", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "...là phụng sự trong bóng tối. Ta biết rõ điều đó, thưa Nữ Chúa, và không dễ dàng để đưa ra quyết định này, nhưng... ta không thể rời bỏ Crossroads. Nhất là khi chúng ta vẫn còn nhiều việc phải làm." }, { Cue = "/VO/Persephone_0140", Portrait = "Portrait_Persephone_Queen_01", Text = "Khi làm việc cùng Chronos trong công cuộc đổi mới này... con đóng vai trò quan trọng trong việc thay đổi Thời Gian theo cách chưa từng có. Vậy nên, con chắc chắn là người phù hợp nhất để duy trì mọi thứ theo cách đó." }, { Cue = "/VO/MelinoeField_5159", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Để giữ Thời Gian luôn vận hành theo hướng có lợi cho chúng ta, dường như là cách tốt nhất để tận dụng thời gian của bản thân! Chắc chắn sẽ rất thú vị, và việc này cũng quá quen thuộc đối với con. Có lẽ con được sinh ra vì điều này." }, { Cue = "/VO/Persephone_0141", Portrait = "Portrait_Persephone_Queen_01", PreLineAnim = "Persephone_DismissA_Start", PostLineAnim = "Persephone_DismissB_End", Text = "Con được sinh ra để làm những điều vĩ đại hơn. Nhưng bọn ta sẽ lo phần việc của mình. Cerberus đã bắt đầu tung hoành khắp Cánh Đồng theo ý mình, và cha của con cùng ta sẽ ở không xa. Còn về phần anh trai con thì... luôn xuất hiện đúng lúc!" }, { Cue = "/VO/MelinoeField_5160", UsePlayerSource = true, -- Portrait = "Portrait_Mel_Pleased_01", Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Tất cả những thay đổi này chắc sẽ cần thời gian để làm quen, phải không? Dù sao thì con cũng sẽ sớm gặp lại mọi người." }, { Cue = "/VO/Persephone_0142", Emote = "PortraitEmoteCheerful", Portrait = "Portrait_Persephone_Queen_Joyful_01", PostLineFunctionName = "DeathAreaRestoredUpdateHallwayBlocks", Text = "{#Emph}Ah, hahaha! {#Prev}Nói một cách đơn giản là thích nghi. Giờ thì đi tham quan một vòng đi, ta sẽ tiễn con trước khi rời đi. Ta yêu con, con gái bé bỏng." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/MelinoeField_5161", Text = "Con cũng yêu Mẹ." }, }, }, }, -- partner conversations HadesWithPersephone01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephone02 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephone03 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutHypnosWakeUp01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutZagreusFight01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutZagreusFight02 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutRenovations01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutLegions01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutAchilles01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutGreeting01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutBackstory01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutBlessings01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutKeepsake01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutPersephoneAspect01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, SkipPreNarrativeUnequip = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutPersephoneAspect02 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, SkipPreNarrativeUnequip = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutNyxAspect01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, SkipPreNarrativeUnequip = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutChamber01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutUnseen01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutCerberus01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutAltChildhood01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephoneAboutDemeter01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephonePostEpilogue01 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, StatusAnimation = false, UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephonePostEpilogue02 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephonePostEpilogue03 = { Partner = "NPC_Hades_Field_01", PlayOnce = true, -- StatusAnimation = false, -- persephone speaks first UseableOffSource = true, CopyDataFromPartner = true, }, -- repeatable HadesWithPersephonePostTrueEndingChat01 = { Partner = "NPC_Hades_Field_01", UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephonePostTrueEndingChat02 = { Partner = "NPC_Hades_Field_01", UseableOffSource = true, CopyDataFromPartner = true, }, HadesWithPersephonePostTrueEndingChat03 = { Partner = "NPC_Hades_Field_01", UseableOffSource = true, CopyDataFromPartner = true, }, }, }, -- Cerberus, Id = 506405 NPC_Cerberus_Field_01 = { InheritFrom = { "NPC_Neutral" }, GenusName = "NPC_Cerberus_01", Portrait = "Portrait_Cerberus_Default_01", LoadPackages = { "Cerberus", }, AnimOffsetX = 50, AnimOffsetZ = -250, Groups = { "NPCs" }, UseText = "UseCerberus", UseTextSpecial = "UseCerberusSpecial", UseTextTalkAndGift = "UseCerberusAndGift", UseTextTalkAndSpecial = "UseCerberusAndSpecial", UseTextTalkGiftAndSpecial = "UseCerberusGiftAndSpecial", SpecialInteractFunctionName = "AttemptPetCerberusThread", SetupEvents = { { FunctionName = "OverwriteSelf", Args = { UseTextSpecial = "UseCerberusSpecial_True", UseTextTalkAndSpecial = "UseCerberusAndSpecial_True", UseTextTalkGiftAndSpecial = "UseCerberusGiftAndSpecial_True", }, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, }, }, InteractTextLineSets = { CerberusFirstMeeting = { PlayOnce = true, UseableOffSource = true, UseInitialInteractSetup = true, StatusAnimation = false, -- PreEventFunctionName = "PetCerberus", { Cue = "/VO/Storyteller_0501", PreLineWait = 0.3, StartSound = "/VO/CerberusSnarls", LineHistoryName = "Speaker_Homer", IsNarration = true, Text = "{#Emph}Cerberus hung tợn vẫn trung thành bảo vệ chủ nhân, sau khi phát hiện ngài ấy ở tầng sâu nhất của nơi này." }, }, CerberusMeeting02 = { PlayOnce = true, UseableOffSource = true, UseInitialInteractSetup = true, StatusAnimation = false, -- PreEventFunctionName = "PetCerberus", { Cue = "/VO/Storyteller_0125", PreLineWait = 0.3, StartSound = "/VO/CerberusSnarls", LineHistoryName = "Speaker_Homer", IsNarration = true, Text = "{#Emph}Cerberus hung tợn vẫn tận tụy bảo vệ chủ nhân của mình, sau khi tìm thấy ngài ấy ở nơi sâu thẳm này." }, }, -- Repeatable CerberusChat01 = { UseableOffSource = true, PlayFirst = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Storyteller_0126", PreLineWait = 0.3, StartSound = "/VO/CerberusWhineSad", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Cerberus ba đầu không cho bất kỳ ai đến gần, kể cả chủ nhân của nó." }, }, CerberusChat02 = { UseableOffSource = true, PlayFirst = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Storyteller_0127", PreLineWait = 0.3, StartSound = "/VO/CerberusWhineSad", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Con Chó Săn Địa Ngục nhe hàm răng nanh ra như muốn cảnh báo, lùi lại." }, }, CerberusChat03 = { UseableOffSource = true, { Cue = "/VO/Storyteller_0128", PreLineWait = 0.3, StartSound = "/VO/CerberusWhineSad", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Con chó săn Cerberus đang quan sát Công Chúa bằng sáu con mắt đầy đe dọa." }, }, CerberusChat04 = { UseableOffSource = true, { Cue = "/VO/Storyteller_0242", PreLineWait = 0.3, StartSound = "/VO/CerberusSnarls", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Con quái thú ba đầu kiềm chế cơn cuồng nộ của mình bên cạnh Vị Vua Địa Ngục chân chính." }, }, CerberusChat05 = { UseableOffSource = true, PlayFirst = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Storyteller_0243", PreLineWait = 0.3, StartSound = "/VO/CerberusCuteGrowl_3", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Con chó săn địa ngục Cerberus có nhiều răng nanh nhưng không cho đi nhiều lòng tin." }, }, CerberusChat06 = { UseableOffSource = true, { Cue = "/VO/Storyteller_0244", PreLineWait = 0.3, StartSound = "/VO/CerberusExtraGrowl_1", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Con chó địa ngục đang nghỉ ngơi, tiếng gầm gừ ngụ ý không muốn bị làm phiền." }, }, CerberusChat07 = { UseableOffSource = true, { Cue = "/VO/Storyteller_0245", PreLineWait = 0.3, StartSound = "/VO/CerberusCuteGrowl_1", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Cerberus ba đầu nhìn khắp mọi ngóc ngách trong căn phòng cùng một lúc." }, }, CerberusChat08 = { UseableOffSource = true, { Cue = "/VO/Storyteller_0246", PreLineWait = 0.3, StartSound = "/VO/CerberusSniff", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Con chó canh gác nhìn Công Chúa Địa Ngục một cách dè chừng." }, }, CerberusChat09 = { UseableOffSource = true, { Cue = "/VO/Storyteller_0247", PreLineWait = 0.3, StartSound = "/VO/CerberusWhine", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Cerberus khét tiếng hung tợn ngồi cảnh giác bên cạnh chủ nhân của nó." }, }, CerberusChat10 = { UseableOffSource = true, { Cue = "/VO/Storyteller_0248", PreLineWait = 0.3, StartSound = "/VO/CerberusCuteGrowl_4", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Chó ba đầu canh gác địa ngục không muốn bị quấy rầy lúc này." }, }, CerberusChat11 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Storyteller_0505", PreLineWait = 0.3, StartSound = "/VO/CerberusCuteGrowl_4", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Con chó săn địa ngục hung tợn giờ đây đã cho phép Công Chúa Địa Ngục tiến lại gần." }, }, CerberusChat12 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Storyteller_0506", PreLineWait = 0.3, StartSound = "/VO/CerberusCuteGrowl_4", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Nơi nào có vua của người chết, nơi đó có chó săn Địa Ngục theo sau." }, }, CerberusChat13 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Storyteller_0507", PreLineWait = 0.3, StartSound = "/VO/CerberusCuteGrowl_4", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Kẻ canh giữ cánh cổng, giờ đây đã kiềm chế sự hung tợn của mình trước Công Chúa." }, }, CerberusChat14 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Storyteller_0508", PreLineWait = 0.3, StartSound = "/VO/CerberusCuteGrowl_4", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Không rõ lý do là gì, con thú hung tợn này đã quyết định không tấn công Công Chúa." }, }, CerberusChat15 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Storyteller_0509", PreLineWait = 0.3, StartSound = "/VO/CerberusCuteGrowl_4", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Bằng cách nào đó, Công Chúa đã sử dụng phép thuật của mình lên chó săn Địa Ngục." }, }, }, RepulseOnMeleeInvulnerableHit = 250, InvincibubbleAnim = "Invincibubble_Cerberus", --InvulnerableHitSound = "/VO/CerberusBarks", OnHitVoiceLines = { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.25, ObjectType = "NPC_Hades_Field_01", PreLineAnim = "Hades_Brooding", GameStateRequirements = { { Path = { "GameState", "UseRecord" }, HasAll = { "NPC_Hades_Field_01" }, }, ChanceToPlay = 0.25, }, Cooldowns = { { Name = "HadesSpokeRecently", Time = 12 }, }, { Cue = "/VO/Hades_0139", Text = "Hành động đó sẽ không chiếm được cảm tình của nó đâu." }, { Cue = "/VO/Hades_0140", Text = "Để nó yên đi.", PlayFirst = true }, { Cue = "/VO/Hades_0141", Text = "{#Emph}Nằm yên{#Prev}, Cerberus..." }, { Cue = "/VO/Hades_0142", Text = "Nó muốn được để yên." }, { Cue = "/VO/Hades_0143", Text = "Một sinh vật có tính khí thất thường." }, { Cue = "/VO/Hades_0144", Text = "Nó không muốn đùa." }, }, Using = { CerberusSounds = { "/VO/CerberusWhineSad", "/VO/CerberusBarks", "/VO/CerberusCuteGrowl_1", "/VO/CerberusCuteGrowl_3", "/VO/CerberusCuteGrowl_4", "/VO/CerberusExtraGrowl_1", "/VO/CerberusSnarls", "/VO/CerberusSniff", "/VO/CerberusWhine", }, }, }, -- @ ending NPC_Cerberus_Story_01 = { InheritFrom = { "NPC_Neutral" }, GenusName = "NPC_Cerberus_01", Portrait = "Portrait_Cerberus_Default_01", LoadPackages = { "Cerberus", }, AnimOffsetX = 120, AnimOffsetZ = -250, Groups = { "NPCs" }, UseText = "UseCerberus", UseTextSpecial = "UseCerberusSpecial_True", UseTextTalkAndGift = "UseCerberusAndGift", UseTextTalkAndSpecial = "UseCerberusAndSpecial_True", UseTextTalkGiftAndSpecial = "UseCerberusGiftAndSpecial_True", SpecialInteractFunctionName = "AttemptPetCerberusThread", SpecialInteractGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "CerberusTrueEnding01" }, }, }, InteractTextLineSets = { CerberusTrueEnding01 = { PlayOnce = true, UseableOffSource = true, UseInitialInteractSetup = true, -- StatusAnimation = false, SkipContextArt = true, -- PreEventFunctionName = "PetCerberus", { Cue = "/VO/Storyteller_0449", PreLineWait = 0.3, StartSound = "/VO/CerberusSnarls", IsNarration = true, LineHistoryName = "Speaker_Homer", Text = "{#Emph}Quái thú ba đầu khét tiếng Cerberus đang nằm nghỉ ở chỗ yêu thích của nó, và giờ đây, nó nhìn Công Chúa Địa Ngục với ba biểu cảm khác so với trước đây." }, { Cue = "/VO/MelinoeField_3890", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", PostLineFunctionName = "DeathAreaRestoredUpdateHallwayBlocks", PostLineThreadedFunctionName = "AttemptPetCerberusThread", PortraitExitWait = 0.35, Text = "Cậu bé ngoan, đây chắc hẳn là phần thưởng tuyệt nhất chỉ sau việc canh giữ Cánh Cổng Địa Ngục nhỉ. Cho phép ta vuốt ve mi nhé? Không giống như cách anh trai ta từng làm." }, }, }, }, -- Bouldy, Id = 506340 NPC_Bouldy_01 = { InheritFrom = { "NPC_Neutral", "NPC_Giftable" }, UseText = "NPCUseTextTalkAlt", AnimOffsetZ = 235, Portrait = "Portrait_Bouldy_Default_01", SubtitleColor = Color.BouldyVoice, BlockStatusAnimations = true, Groups = { "NPCs" }, GiftText = "GiftBouldyUseText", LoadPackages = { "Bouldy", }, InteractTextLineSets = { BouldyFirstMeeting = { PlayOnce = true, UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Bouldy", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HadesAboutBouldy01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, Alive = false }, }, }, { Cue = "/VO/MelinoeField_1681", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta biết ngươi không thể nghe ta nói, nhưng... vì ngươi đã an ủi cha ta trong hoàn cảnh như thế này nên... cảm ơn ngươi." }, { Cue = "/VO/BouldySilent01", SpeakerLabelOffsetY = 18, Text = ". . . ." }, }, -- Repeatable BouldyChat01 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Bouldy", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "BouldyFirstMeeting" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, Alive = false }, }, }, { Cue = "/VO/BouldySilent01", SpeakerLabelOffsetY = 18, Text = ". . . ." }, }, }, OnHitFunctionName = "BouldyHitPresentation", OnHitVoiceLines = { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.25, ChanceToPlay = 0.75, ObjectType = "NPC_Hades_Field_01", GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 506405 }, Alive = false }, }, }, Cooldowns = { { Name = "HadesSpokeRecently", Time = 12 }, }, { Cue = "/VO/Hades_0156", Text = "Kệ nó đi.", PlayFirst = true }, { Cue = "/VO/Hades_0157", Text = "Con thù này đã chịu đủ hình phạt rồi." }, { Cue = "/VO/Hades_0158", Text = "Dừng lại đi, Con Gái." }, { Cue = "/VO/Hades_0159", Text = "Hãy trút sự tức giận của con ở nơi khác." }, }, }, } -- Global Hades Lines GlobalVoiceLines.HadesCurseVoiceLines = { { RandomRemaining = true, PreLineWait = 0.35, NoTarget = true, Source = { LineHistoryName = "NPC_Hades_01", SubtitleColor = Color.HadesVoice }, { Cue = "/VO/Hades_0085", Text = "{#Emph}Đồ khốn..." }, { Cue = "/VO/Hades_0088", Text = "{#Emph}Hãy tránh xa con bé ra...!" }, { Cue = "/VO/Hades_0091", Text = "{#Emph}Đừng hòng thoát." }, { Cue = "/VO/Hades_0095", Text = "{#Emph}", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "EnemyKills", "Chronos" }, Comparison = ">=", Value = 3, }, } }, { Cue = "/VO/Hades_0379", Text = "{#Emph}Ngươi chẳng là gì cả, Typhon.", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss01", "Q_Boss02" }, }, }, }, { Cue = "/VO/Hades_0376", Text = "{#Emph}Con quái vật khốn kiếp...!", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss01", "Q_Boss02" }, }, }, }, { Cue = "/VO/Hades_0377", Text = "{#Emph}Đồ quái vật chết tiệt!", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss01", "Q_Boss02" }, }, }, }, { Cue = "/VO/Hades_0378", Text = "{#Emph}Đồ quái vật đáng nguyền rủa.", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss01", "Q_Boss02" }, }, }, }, { Cue = "/VO/Hades_0086", Text = "{#Emph}Lão Già khốn kiếp...", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, }, }, { Cue = "/VO/Hades_0087", Text = "{#Emph}Lão Già chết tiệt!", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, }, }, { Cue = "/VO/Hades_0089", Text = "{#Emph}Titan khốn kiếp...", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, }, }, { Cue = "/VO/Hades_0090", Text = "{#Emph}Đúng là một người cha tồi tệ!", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, }, }, { Cue = "/VO/Hades_0092", Text = "{#Emph}Biến khỏi Thánh Điện của ta!", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, }, }, { Cue = "/VO/Hades_0093", Text = "{#Emph}Hãy làm bạn với cái chết đi.", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, }, }, { Cue = "/VO/Hades_0094", Text = "{#Emph}Vì những gì đã gây ra với ta.", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, }, }, }, { Queue = "Interrupt", BreakIfPlayed = true, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.33, ObjectType = "Chronos", TriggerCooldowns = { "ChronosSpokeRecently" }, { Cue = "/VO/Chronos_1239", Text = "{#Emph}Aah! {#Prev}Ngươi là con gái của Hades!" }, { Cue = "/VO/Chronos_1240", Text = "{#Emph}Gah! {#Prev}Hades đã giúp ngươi tiếp cận ta ư?" }, { Cue = "/VO/Chronos_1241", Text = "{#Emph}Rng! {#Prev}Ta sẽ ghi nhớ điều đó, con trai!" }, { Cue = "/VO/Chronos_1242", Text = "{#Emph}Tsch! {#Prev}Là ngươi sao, con trai?" }, { Cue = "/VO/Chronos_1243", Text = "{#Emph}Argh! {#Prev}Ngươi đã đi quá giới hạn rồi, Hades!" }, }, } GlobalVoiceLines.HadesHarvestReactionVoiceLines = { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.65, SuccessiveChanceToPlayAll = 0.33, ObjectType = "NPC_Hades_Field_01", GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Hades_Field_01" }, Comparison = ">=", Value = 2, }, { PathTrue = { "CurrentRun", "UseRecord", "NPC_Hades_Field_01" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "HadesGiftDecline01" }, }, }, Cooldowns = { { Name = "HadesSpokeRecently", Time = 8 }, }, { Cue = "/VO/Hades_0152", Text = "Sao lại nhặt rác ở đây?" }, { Cue = "/VO/Hades_0153", Text = "Ở đây chẳng có gì hữu ích cả." }, { Cue = "/VO/Hades_0183", Text = "Hãy đi đi..." }, } GlobalVoiceLines.HadesPickaxeReactionVoiceLines = { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.65, SuccessiveChanceToPlayAll = 0.33, ObjectType = "NPC_Hades_Field_01", GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Hades_Field_01" }, Comparison = ">=", Value = 2, }, }, Cooldowns = { { Name = "HadesSpokeRecently", Time = 12 }, }, { Cue = "/VO/Hades_0179", Text = "Thật tốt khi nó biến mất.", PlayFirst = true }, { Cue = "/VO/Hades_0180", Text = "Đá cẩm thạch..." }, { Cue = "/VO/Hades_0181", Text = "Nó mang hình dạng của hắn..." }, { Cue = "/VO/Hades_0182", Text = "Ồ, hắn còn nhiều lắm..." }, { Cue = "/VO/Hades_0184", Text = "{#Emph}" }, } GlobalVoiceLines.HadesExorcismReactionVoiceLines = { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.65, SuccessiveChanceToPlayAll = 0.2, ObjectType = "NPC_Hades_Field_01", GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Hades_Field_01" }, Comparison = ">=", Value = 2, }, }, Cooldowns = { { Name = "HadesSpokeRecently", Time = 12 }, }, { Cue = "/VO/Hades_0154", Text = "Ta cứ nghĩ rằng nó đó sẽ không bao giờ rời đi." }, { Cue = "/VO/Hades_0155", Text = "Một Shade trung thành." }, { Cue = "/VO/Hades_0185", Text = "Nó đã chờ đợi ở đây rất lâu rồi." }, { Cue = "/VO/Hades_0186", Text = "Ít ra thì các Shade cũng chịu nghe lời con..." }, } GlobalVoiceLines.PersephoneGreetingVoiceLines = { { PlayOnceFromTableThisRun = true, PlayOnceContext = "PersephoneGreetingVO", PreLineWait = 0.35, RandomRemaining = true, SuccessiveChanceToPlay = 0.5, SuccessiveChanceToPlayAll = 0.85, ObjectType = "NPC_Persephone_01", GameStateRequirements = { { -- }, }, { Cue = "/VO/Persephone_0030", Text = "Con Gái!" }, { Cue = "/VO/Persephone_0031", Text = "Melinoë!" }, { Cue = "/VO/Persephone_0032", Text = "Melinoë." }, { Cue = "/VO/Persephone_0033", Text = "Chào mừng!" }, { Cue = "/VO/Persephone_0034", Text = "Xin chào!" }, { Cue = "/VO/Persephone_0035", Text = "Xin chào." }, { Cue = "/VO/Persephone_0036", Text = "Con đã đến!" }, { Cue = "/VO/Persephone_0037", Text = "Là con sao!" }, { Cue = "/VO/Persephone_0038", Text = "Hades, nhìn kìa!", PlayFirst = true }, { Cue = "/VO/Persephone_0039", Text = "Chào Con Gái!" }, }, } GlobalVoiceLines.HadesZagreusChattingLines = { RecheckRequirementsForSubLines = true, GameStateRequirements = { { PathFalse = { "CurrentRun", "TriggerRecord", "HadesZagreusInterrupt" }, }, }, { ObjectTypes = { "NPC_Zagreus_Past_01", "NPC_Zagreus_01" }, { Cue = "/VO/Zagreus_0431", Text = "Chính Cha nói rằng Mẹ cần nghỉ ngơi. Sao Cha không ở cùng bà ấy? Con có thể trông coi mọi việc." }, }, { PreLineWait = 0.4, ObjectType = "NPC_Hades_02", { Cue = "/VO/Hades_0390", Text = "Không cần. Nyx đang ở cùng Nữ Hoàng. Ta cũng không thể để con gái ta ở một mình được." }, }, { ObjectTypes = { "NPC_Zagreus_Past_01", "NPC_Zagreus_01" }, { Cue = "/VO/Zagreus_0432", Text = " Ở một mình ư? Cha nói như thể con chẳng quan tâm gì đến em ấy vậy!" }, }, { PreLineWait = 0.4, ObjectType = "NPC_Hades_02", { Cue = "/VO/Hades_0391", Text = "Ta không có ý đó." }, }, } GlobalVoiceLines.HadesZagreusGreeting = { Queue = "Interrupt", { ObjectTypes = { "NPC_Zagreus_Past_01", "NPC_Zagreus_01" }, -- PreLineAnim = "Hades_Hello", PreLineFunctionName = "StopHadesFlashbackSpeech", { Cue = "/VO/Zagreus_0433", Text = "Ồ, xin chào!" }, }, } OverwriteTableKeys( EnemyData, UnitSetData.NPC_Hades )