UnitSetData.NPC_Odysseus = { -- Odysseus, Id = 557112 NPC_Odysseus_01 = { InheritFrom = { "NPC_Neutral", "NPC_Giftable" }, Portrait = "Portrait_Odysseus_Default_01", AnimOffsetZ = 20, Groups = { "NPCs" }, SubtitleColor = Color.OdysseusVoice, EmoteOffsetY = -280, EmoteOffsetX = 80, SpeakerName = "Odysseus", LoadPackages = { "Odysseus" }, TurnInPlaceAnimation = "Odysseus_Turn", -- TavernaTeleportId = 589482, TavernaOverrides = { AnimOffsetX = -40, EmoteOffsetY = -180, EmoteOffsetX = 40, }, ActivateRequirements = { NamedRequirementsFalse = { "OdysseusWandering" }, }, RotatorRequirements = { NamedRequirementsFalse = { "OdysseusWandering" }, }, PreBathAnimationName = "Odysseus_Salute", SpecialInteractFunctionName = "SpecialInteractSaluteInterrupt", SpecialInteractGameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "NPC_Odysseus_01" }, }, }, SpecialInteractCooldown = 60, PreSelectGiftFunctionName = "ActivityInterrupt", InteractVoiceLines = { { PreLineWait = 0.3, PlayOnceThisRun = true, UsePlayerSource = true, -- RandomRemaining = true, SuccessiveChanceToPlay = 0.2, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 3 }, }, { Cue = "/VO/Melinoe_1707", Text = "Tiêu điệt Chronos, thưa ngài.", GameStateRequirements = { OrRequirements = { { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { { PathTrue = { "GameState", "SpeechRecord", "/VO/Chronos_1058" }, }, }, }, } }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, { PreLineWait = 0.3, RandomRemaining = true, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Salute", -- { Cue = "/VO/Odysseus_0213", Text = "Aye we do." }, { Cue = "/VO/Odysseus_0214", Text = "Và chúc mừng!", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698_2", "/VO/Melinoe_1699_2" }, }, }, }, { Cue = "/VO/Odysseus_0215", Text = "Xin chào!", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698_2", "/VO/Melinoe_1699_2" }, }, }, }, { Cue = "/VO/Odysseus_0216", Text = "Chào Nữ Thần.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1698_2", "/VO/Melinoe_1699_2" }, }, }, }, { Cue = "/VO/Odysseus_0217", Text = "Cô sẽ tìm được hắn thôi.", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1700_2", "/VO/Melinoe_1707" }, }, }, }, { Cue = "/VO/Odysseus_0224", Text = "Hắn sẽ nhận được những gì xứng đáng.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1700_2", "/VO/Melinoe_1707" }, }, }, }, { Cue = "/VO/Odysseus_0102", Text = "Ô, ước gì được như vậy.", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1700_2", "/VO/Melinoe_1707" }, }, }, }, { Cue = "/VO/Odysseus_0218", Text = "Cô cũng vậy.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1701_2", "/VO/Melinoe_1703_2" }, }, }, }, { Cue = "/VO/Odysseus_0317", Text = "Bóng tối che chở cô.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1701_2" }, }, }, }, { Cue = "/VO/Odysseus_0219", Text = "Cô cũng vậy.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1701_2", "/VO/Melinoe_1703_2" }, }, }, }, { Cue = "/VO/Odysseus_0220", Text = "Và mong cô thành công.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1703_2", "/VO/Melinoe_1705_2" }, }, }, }, { Cue = "/VO/Odysseus_0221", Text = "Chúng ta sẽ tìm ra cách.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1704_2", "/VO/Melinoe_1705_2", "/VO/Melinoe_1709_2" }, }, }, }, { Cue = "/VO/Odysseus_0222", Text = "Được rồi.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1704_2", "/VO/Melinoe_1705_2", "/VO/Melinoe_1709_2", "/VO/Melinoe_1707" }, }, }, }, { Cue = "/VO/Odysseus_0223", Text = "Chúng ta sẽ vượt qua chuyện này.", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_1704_2", "/VO/Melinoe_1705_2", "/VO/Melinoe_1709_2" }, }, }, }, }, }, NoConversationFunctions = { -- Odysseus Patrol -- Odysseus Idle Behavior - Garden Inspect { Name = "NPCFollowPath", GameStateRequirements = { { PathFalse = { "SessionState", "InFlashback" }, }, { Path = { "GameState", "GardenPlots", }, UseLength = true, Comparison = ">=", Value = 1, }, { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsNone = GameData.OdysseusTavernaEvents, }, }, }, Args = { Loop = true, Timeout = 13.0, Path = { { Branch = { -- Table { GameStateRequirements = { { --PathTrue = { "GameState", "GardenPlots", 558337 }, }, }, { Id = 561464, OffsetRadius = 50, MinDistanceForMove = 120, ArriveFunctionName = "OdysseusArriveAtTable", ArriveFunctionArgs = { GreetDistance = 300, }, }, }, -- Shade { GameStateRequirements = { { --PathTrue = { "GameState", "GardenPlots", 558337 }, }, }, { Id = 589590, OffsetRadius = 50, MinDistanceForMove = 120, ArriveFunctionName = "OdysseusArriveAtShade", }, }, }, }, { Branch = { { -- Branch Option A - Garden Plot 1 GameStateRequirements = { { PathTrue = { "GameState", "GardenPlots", 558337 }, }, }, { Id = 558337, ArriveFunctionName = "OdysseusArriveAtGardenPlot", ArriveFunctionArgs = { GreetDistance = 400, }, }, }, { -- Branch Option B - Garden Plot 2 GameStateRequirements = { { PathTrue = { "GameState", "GardenPlots", 558335 }, }, }, { Id = 558335, ArriveFunctionName = "OdysseusArriveAtGardenPlot", ArriveFunctionArgs = { GreetDistance = 400, }, }, }, { -- Branch Option C - Garden Plot 3 GameStateRequirements = { { PathTrue = { "GameState", "GardenPlots", 583640 }, }, }, { Id = 583640, ArriveFunctionName = "OdysseusArriveAtGardenPlot", ArriveFunctionArgs = { GreetDistance = 400, }, }, }, }, }, }, }, }, }, InteractTextLineSets = { OdysseusFirstMeeting = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "CurrentRun", "Cleared" } }, { PathFalse = { "GameState", "RoomsEntered", "I_Boss01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0002", PreLineAnim = "Odysseus_KnifeToss", -- PreLineAnim = "Odysseus_Pensive_Start", -- PostLineAnim = "Odysseus_Pensive_End", -- PreLineAnim = "Odysseus_Explaining", -- PreLineAnim = "Odysseus_Greet", -- PreLineAnim = "Odysseus_Salute", Text = "Cô đã giết được tên khốn đó chưa? Cấm gậy vào cái sọ não tàn của hắn, hay găm dao vào bụng hắn? {#Emph}Ungh {#Prev}, mà có làm thế thì hắn cũng chẳng chết đâu; nhưng với người phàm thì có đấy!" }, { Cue = "/VO/Melinoe_0016_C", UsePlayerSource = true, PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Mel_Vulnerable_01", WaitTime = 5.0 }, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chronos, Titan Thời Gian, đã bị đánh bại rồi, Odysseus. Đáng lẽ thì... ta đã mang được đầu của hắn về đây." }, EndVoiceLines = { { PreLineWait = 0.35, { Cue = "/VO/Odysseus_0225", Text = "Không sao đâu, lần sau kiểu gì cũng xử được hắn thôi." }, }, }, }, OdysseusAboutMountains01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathFalse = { "GameState", "RoomsEntered", "P_Intro" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0033", PreLineAnim = "Odysseus_Explaining", Text = "Phù thuỷ tốt bụng của chúng ta đây biết rằng cô còn một núi hành trình phía trước, thưa Nữ Thần. Cô đã nghe về những ngọn núi của chúng ta trên trần gian chưa? Những hòn đá to khổng lồ đấy?" }, { Cue = "/VO/Melinoe_0448", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Sao, ý ông là Núi Olympus, hay Núi Othrys? Tất nhiên ta đã nghe đến chúng! Chúng chạm đến cả bầu trời. Ta chỉ có thể tưởng tượng điều đấy." }, { Cue = "/VO/Odysseus_0034", PreLineAnim = "Odysseus_KnifeToss", Text = "Nếu nhìn lên từ chân đến đỉnh, cô sẽ bảo rằng nó không thể leo được, {#Emph}nhưng! {#Prev}Nếu cô chỉ bận tâm đến việc thực hiện bước tiếp theo... một ngày nào đó cô sẽ đến được đỉnh cao." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_0058", Text = "Đến đỉnh cao..." }, }, }, }, OdysseusAboutErebus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "NPC_Odysseus_01" }, }, { Path = { "CurrentRun", "BiomesReached" }, HasNone = { "H", "N" }, }, { PathFalse = { "GameState", "RoomsEntered", "H_Intro" }, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 3, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0028", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Những kẻ địch mà cô phải đối mặt... chúng không ngừng tăng lên theo mỗi báo cáo mà ta nhận được. Nếu cô có ý tưởng nào đó có thể giúp chúng ta chuẩn bị tốt hơn cho cô thì..." }, { Cue = "/VO/Melinoe_0056", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta sẽ chia sẻ ý tưởng của mình khi cần thiết, Odysseus. Hiện tại thì ta vẫn đang suy ngẫm về chúng." }, { Cue = "/VO/Odysseus_0029", PreLineAnim = "Odysseus_KnifeToss", Text = "À, tốt nhất vẫn là không nên nói khi chưa chuẩn bị. Ta hiểu cảm giác đó rất rõ. Nhưng cô sẽ báo cáo cho ta về tình hình, phải không?" }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_0057", Text = "Chắc rồi." }, }, }, }, OdysseusAboutAdvice01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Odysseus_01" }, Comparison = ">=", Value = 2, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0035", PreLineAnim = "Odysseus_Explaining", Text = "Nếu cô gặp bất cứ khó khăn nào ngoài kia, hãy đến nói chuyện với ta. Rất có khả năng ta đã từng gặp nó, chiến đấu với nó, hoặc vượt qua nó bằng cách nào đó và có thể sẽ đưa ra một số lời khuyên." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_0450", Text = "Chắc chắn rồi." }, }, }, }, OdysseusMeeting05 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Odysseus_01" }, Comparison = ">=", Value = 3, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0036", Text = "Cô hãy cẩn thận với những kẻ cô gặp ngoài kia, được chứ? Nếu cô gặp phải kẻ nào đó gây phiền phức cho cô, hãy tìm cách tấn công vào điểm yếu của chúng." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, -- I most certainly do. { Cue = "/VO/Melinoe_0451", Text = "Ta chắc chắn sẽ làm vậy." }, }, }, }, OdysseusAboutHecate01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusWithHecate01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift03" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_0456", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài đã gặp Nữ Chúa khá lâu rồi phải không? Hai người đã gặp nhau ở đâu vậy?" }, { Cue = "/VO/Odysseus_0040", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Odysseus_Thoughtful_01", WaitTime = 4.9 }, PreLineAnim = "Odysseus_Pensive_Start", Text = "{#Emph}Heh {#Prev}, chuyện là thế này. Những gì ta có thể miêu tả là... cô độc. Ở cuối cuộc đời và sẵn sàng bắt đầu cuộc đời mới. Lạc lõng. Bỗng nhiên bà ấy xuất hiện trước mắt ta, với vẻ đẹp lộng lẫy, và... bà ấy chỉ cho ta một con đường mà ta chưa từng biết." }, { Cue = "/VO/Melinoe_0457", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Nghe có vẻ rất trừu tượng. Có phải ngài đã chết không?" }, { Cue = "/VO/Odysseus_0041", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Phải, ta đã chết. Bà ấy nói rằng bà ấy sẽ ban cho ta cuộc sống mới. Bà ấy cần một chiến lược gia hiểu biết về trần gian. Và ta là ai mà dám từ chối một nữ thần chứ? Thế là ta theo bà ấy. Cũng được một khoảng thời gian rồi." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_0458", Text = "Ta khá chắc cũng lâu lắm rồi." }, }, }, }, OdysseusAboutLosingToHecate01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "F_Boss01", "F_Boss02" }, }, { PathFalse = { "CurrentRun", "EnemyKills", "Hecate" }, }, { PathFalse = { "CurrentRun", "RoomsEntered", "G_Intro" }, }, --[[ { Path = { "GameState", "RoomsEntered", "F_PostBoss01" }, Comparison = "<=", Value = 3, }, ]]-- }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0143", Text = "Phù thủy tốt bụng đã thử thách cô ngoài kia à? Một cách dạy khá khắc nghiệt đấy nhỉ. Bà ấy kỳ vọng rất nhiều ở cô ấy, nhưng điều đó cũng bình thường thôi khi cô có nhiều tiềm năng như vậy." }, { Cue = "/VO/Melinoe_2185", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Vậy thì chắc bà ấy thất vọng về thành tích của ta lắm, dù bà ấy cố không bộc lộ ra. Giống như ngài vậy, Odysseus à." }, { Cue = "/VO/Odysseus_0144", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Nào, ta hiểu cảm giác nản lòng khi vạch ra lộ trình, nhưng rồi lại lạc mất phương hướng lắm. Không phải lúc nào chúng ta cũng đến được đích một cách nhanh nhất đâu." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2186", Text = "Miễn là chúng ta đến được đó." }, }, }, OdysseusAboutArtemis01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "UseRecord", "NPC_Artemis_Field_01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "ArtemisHubSinging01" } }, -- @ somewhat hacky way of detecting duet singing { PathTrue = { "GameState", "SpeechRecord", "/VO/Artemis_0304" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0377", PreLineAnim = "Odysseus_Explaining", Text = "Nghe nói cô và Nữ Thần Artemis là một cặp đôi ăn ý. Và hai người hát cùng nhau cũng rất hay nữa...! Vậy là Olympus đã cử cô ấy đến để giám sát chúng ta, phải không?" }, { Cue = "/VO/Melinoe_4102", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta nghĩ là vậy. Nhưng nếu đó là điều mà ngài đang lo lắng thì ta hoàn toàn tin tưởng cô ấy. Artemis chỉ báo lại cho Olympus những gì họ cần biết, để họ yên tâm và hợp tác cùng chúng ta." }, { Cue = "/VO/Odysseus_0378", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Odysseus_Default_01", WaitTime = 4 }, Text = "Bản tính của cô ấy vốn là người khá cẩn trọng, phải không? Đối với ta thì ta rất vui khi cô ấy không chỉ là đồng minh của cô... mà còn là một người bạn tốt." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4103", Text = "Ta cũng nghĩ vậy." }, }, }, }, OdysseusAboutFamiliars01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "UseRecord", "CrossroadsPet01" }, Comparison = ">=", Value = 3, }, { Path = { "GameState", "SpecialInteractRecord" }, HasNone = { "HoundFamiliar", "PolecatFamiliar" }, }, NamedRequirementsFalse = { "HecateFamiliarsInHub" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3333", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Hecuba và Gale chạy đâu mất rồi? Ta có hỏi Nữ Chúa nhưng bà ấy không thích ta thể hiện sự quan tâm dù là nhỏ nhất với Linh Thú của bà ấy. {#Emph}Chúng sẽ ổn thôi, Melinoë." }, { Cue = "/VO/Odysseus_0268", PreLineAnim = "Odysseus_Greet", Text = "Ô, chúng sẽ {#Emph}ổn {#Prev}thôi! Mỗi con đều đang thực hiện một chuyến trinh sát nhỏ theo yêu cầu của ta, tất nhiên là dưới sự bảo hộ của phù thủy vĩ đại nữa. Chó săn đi một đường, chồn đi một hướng." }, { Cue = "/VO/Melinoe_3334", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Những cuộc trinh sát đó sẽ tốn một khoảng thời gian. Vậy nên ta sẽ để mắt đến chúng." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0269", Text = "Ở nơi chúng đến, chúng sẽ nhận ra người quen." }, }, }, }, OdysseusAboutErisCurse01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "UseRecord", "NPC_Eris_01" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "ErisGrantsCurse01" }, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = "<=", Value = 10, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0235", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Theo báo cáo thì Eris được phát hiện ở vùng đất sâu bên dưới, dọc theo con đường của cô... thông tin này có lẽ sẽ giúp cô tránh khỏi rắc rối mà cô ta mang đến cho cuộc hành trình của cô. Thứ lỗi cho ta, Nữ Thần..." }, { Cue = "/VO/Melinoe_3096", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cô ta đang cố cản đường ta hoặc ít nhất cũng khiến ta chậm lại. Và... cô ta cũng biết quá nhiều về kế hoạch của chúng ta. Vậy chúng ta nên làm gì? Đáng lẽ Những Đứa Con của Nyx phải đứng về phe chúng ta chứ." }, { Cue = "/VO/Odysseus_0236", PreLineAnim = "Odysseus_KnifeToss", Text = "Cô ta chưa biết được một nửa kế hoạch của chúng ta. Hơn nữa, sự buồn chán là động lực chính khiến cô ta làm như vậy. Nếu gặp cô thêm vài lần nữa, cô ta sẽ sớm chán nản và bỏ đi thôi." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_3097", Text = "Vậy ra đây là kế hoạch của Chiến Lược Gia Kỳ Cựu sao...?" }, }, { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0237", Text = "Đúng vậy, thưa Nữ Thần." }, }, }, }, OdysseusAboutEris01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "ErisAboutTask01" }, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "ErisGift06" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 585573 }, }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3335", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài có bắt gặp Eris đang soi xét kế hoạch của chúng ta hay gì không? Phải kín đáo hơn với cô ta, nếu không thì..." }, { Cue = "/VO/Odysseus_0270", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Cô ta chủ yếu chỉ ở quanh khu vực nhỏ của cô ta thôi, thưa Nữ Thần, nhưng ta vẫn luôn theo dõi cô ta, phòng trường hợp bất trắc xảy ra. Miễn là cô vẫn giữ khoảng cách với chúng ta..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_3336", Text = "Ý ngài là chúng ta có thể thay đổi kế hoạch à?" }, }, { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0271", Text = "Phải." }, }, }, }, OdysseusAboutErisBoss01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "RoomsEntered", "O_Boss01" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "ErisBossFirstMeeting" }, Max = 4 }, }, { PathFalse = { "GameState", "TextLinesRecord", "ErisGift06" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0272", PreLineAnim = "Odysseus_Explaining", Text = "Tuyệt, cô đã trở lại. Theo báo cáo, Eris đã bay về phía Rãnh Nứt Thessaly băng ngang qua một đội quân. Nhưng ta không nghĩ cô ta đến đó để giúp đỡ. Ít nhất thì không phải giúp cô." }, { Cue = "/VO/Melinoe_3311", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Thực ra thì những báo cáo này không giúp ích gì cho ta. Nhưng ít ra thì ta có thể xác nhận chúng hoàn toàn chính xác. Thật kỳ lạ khi chúng ta không thể thoát khỏi cô ta." }, { Cue = "/VO/Odysseus_0273", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Tất cả những gì chúng ta có thể làm là cố gắng hết sức. Ta xin lỗi vì bọn ta không thể cảnh báo trước cho cô về điều này. Bọn ta sẽ tiếp tục điều tra động cơ cũng như đồng phạm của cô ta." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_3312", Text = "Ta không tin cô ta có bất cứ lý do nào trong số đó." }, }, }, }, OdysseusAboutErisBossTactics01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "O_Boss01", "O_Boss02" }, }, { Path = { "GameState", "RoomsEntered" }, SumOf = { "O_Boss01", "O_Boss02" }, Comparison = ">=", Value = 3, }, { PathFalse = { "GameState", "EnemyKills", "Eris" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0422", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Eris đang gây rắc rối cho cô trên trần gian, phải không... nhất là khi cô ta ở rất gần mục tiêu của chúng ta. Nếu có điều gì có thể trấn an cô, thì đó là cách mà chúng ta nắm rõ cơ chế vũ khí của cô ta hơn chính cô ta. Chắc hẳn cô ta sẽ thường xuyên hết đạn..." }, { Cue = "/VO/Melinoe_4213", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Đúng vậy. Đôi khi cô ta còn làm kẹt đạn, bị phân tâm khi cố gắng gỡ nó ra. Và đó chính là thời điểm thích hợp để ra tay. Với lại cũng chẳng có nhiều chỗ để ẩn nấp." }, { Cue = "/VO/Odysseus_0423", PreLineAnim = "Odysseus_KnifeToss", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Cô ta đang cố đe dọa cô. Với Khẩu Adamant, cô ta nguy hiểm hơn nhiều khi ở xa. Có lẽ cô có thể vòng sang hai bên hoặc luồn ra sau bằng cách nào đó..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4214", Text = "Cũng đáng để thử." }, }, }, }, OdysseusAboutNemesis01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Nemesis_01" }, Comparison = ">=", Value = 3, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "OdysseusAboutNemesis02", "NemesisGift07", "ZeusPalaceAboutTyphonDeath01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0157", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Gần đây Nemesis có tâm trạng cực kỳ khó chịu. Có điều gì mà ta nên biết không?" }, { Cue = "/VO/Melinoe_2212", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta cũng định hỏi ngài điều tương tự. Cô ấy tìm kiếm nhiệm vụ của ta, nhưng đó không phải chuyện lạ. Tuy nhiên, cô ấy lại phát sinh tranh cãi với Nữ Chúa ngày càng nhiều..." }, { Cue = "/VO/Odysseus_0158", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "{#Emph}Ah {#Prev}, thật đáng tiếc khi mọi chuyện lại xảy ra như vậy. Cá nhân ta thà chịu Sự Trừng Phạt Xứng Đáng còn hơn là đối đầu. Ta đoán là cô không thể giải quyết vấn đề này với cô ấy phải không?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_2213", Text = "Ta cũng nghi ngờ điều đó..." }, }, }, }, OdysseusAboutNemesis02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "NemesisCombatFirstIntro", "NemesisGetFreeItemIntro01" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0159", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Vậy Nemesis ở ngoài đó thế nào rồi? Đang tự mình {#Emph}giải quyết vấn đề {#Prev}phải không? Hy vọng cô ấy không {#Emph}gây phiền phức {#Prev}cho cô nhỉ?" }, { Cue = "/VO/Melinoe_2214", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Vậy là ngài đã biết rồi sao? Và chắc hẳn Nữ Chúa cũng đã biết. Nemesis vẫn là Nemesis! Việc khám phá được nhiệm vụ của chúng ta không hề dễ dàng như chúng ta tưởng." }, { Cue = "/VO/Odysseus_0160", PreLineAnim = "Odysseus_KnifeToss", Text = "Vậy thì đừng nói nữa! Tuy nhiên, nếu cô ấy có ý định cản trở kết quả của cô thay vì đạt kết quả cho riêng mình, thì bọn ta sẽ can thiệp." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_2215", Text = "Không tệ đến mức đó đâu." }, }, }, }, OdysseusAboutHypnosWakeUp01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0622", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Một sự yên ắng kỳ lạ... ban đầu ta không nhận ra điều gì đã thay đổi, cho đến khi ta nhớ ra Hypnos đã rời đi. Ta đã quen với việc luôn nghe thấy tiếng ngáy của ngài ấy ở phía sau rồi..." }, { Cue = "/VO/Melinoe_5244", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chờ đã, ngài nhớ tiếng ngáy không ngừng của ngài ấy sao? Trong tất cả những người ở Crossroads, ngài là người ở gần nhất, nên ta cứ tưởng ngài sẽ vui mừng khi ngài ấy rời đi chứ." }, { Cue = "/VO/Odysseus_0623", PreLineAnim = "Odysseus_Greet", Text = "Đúng vậy, ta mừng cho ngài ấy, và sự thay đổi về âm thanh môi trường cũng không quá tệ, nhưng... ngay cả khi mọi thứ được cải thiện, thì vẫn cần thời gian để thích nghi." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_5245", Text = "Ta cũng sẽ nhớ ngài ấy, hầu hết là vì tiếng ngáy..." }, }, }, }, OdysseusAboutSkelly01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusGift03", "SkellyGift03" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_2218", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài và Chỉ Huy Schelemeus đều là những thủy thủ tài ba và nổi tiếng phải không, Od? Hai người có từng gặp nhau khi còn sống không?" }, { Cue = "/VO/Odysseus_0163", PreLineAnim = "Odysseus_Explaining", Text = "Oh, gọi anh ta là {#Emph}thủy thủ vĩ đại {#Prev}vẫn còn hơi nhẹ đấy, Nữ Thần! Họ nói rằng những thành tựu của anh ta có thể ngang ngửa hoặc thậm chí là hơn cả ta đấy! Tiếc là ta chưa từng có cơ hội chứng kiến năng lực đó của anh ta. {#Emph}Ah {#Prev}, chắc chắn đó là điều tiếc nuối nhất!" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_2219", Text = "Bọn ta thật may mắn khi đồng hành cùng hai người." }, }, }, }, OdysseusAboutHypnos01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift01" }, }, { Path = { "GameState", "UseRecord", "NPC_Hypnos_01"}, Comparison = "<=", Value = 3, }, { PathFalse = { "GameState", "TextLinesRecord", "HypnosWakeUp03" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_2209", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài đã bao giờ thấy Hypnos thay đổi tư thế ngủ chưa, Od? Ta biết ngài ấy đã trải qua nhiều chuyện trong giấc mơ, nhưng... vẫn không nhúc nhích." }, { Cue = "/VO/Odysseus_0151", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ta không thể khẳng định là có. Ngài ấy vẫn như vậy kể từ đêm mà phù thủy vĩ đại đã đưa ngài ấy về. Ta cũng quen dần với tiếng ngáy đó rồi..." }, { Cue = "/VO/Melinoe_2210", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài có nghĩ đến một lúc nào đó ngài ấy sẽ tỉnh lại không? Không có câu thần chú nào có tác dụng để đánh thức ngài ấy cả." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", RequiredMinElapsedTime = 2, { Cue = "/VO/Odysseus_0152", Text = "Chẳng phải ngài ấy là Thần Ngủ sao?" }, }, }, }, OdysseusAboutMoros01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeMorosUnlock" }, }, { SumPrevRuns = 8, Path = { "WorldUpgradesAdded", "WorldUpgradeMorosUnlock" }, CountPathTrue = true, Comparison = ">=", Value = 1, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 560612 }, }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0153", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Vậy là {#Emph}Doom {#Prev}đã đến ở với chúng ta được một thời gian rồi sao? Cuộc chạm chán cuối cùng và duy nhất của ta với ngài ấy {#Emph}không được suôn sẻ {#Prev}, vậy nên... ta sẽ giữ khoảng cách, nếu điều đó là cần thiết." }, { Cue = "/VO/Melinoe_2211", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Mọi đứa con của Nyx đều được chào đón ở Crossroads. Tuy nhiên, ta nghĩ ngay cả Ngài Moros cũng muốn giữ khoảng cách đấy." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", RequiredMinElapsedTime = 2, { Cue = "/VO/Odysseus_0154", Text = "Ta không phản đối đâu!" }, }, }, }, OdysseusAboutIcarus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Icarus_01", }, Alive = true }, }, { PathTrue = { "GameState", "TextLinesRecord", "IcarusHomeFirstMeeting" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0396", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ta đoán cô là lý do khiến Icarus quay lại. Cậu ta luôn cho thấy mình là một chàng trai tử tế. Khi cậu ta rời đi, ta đã không nói gì, nhưng trong lòng lại cảm thấy tiếc nuối." }, { Cue = "/VO/Melinoe_4508", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Đó là lựa chọn của anh ta. Ta nghĩ anh ta luôn đề cao những trải nghiệm của ngài. Khi còn sống, anh ta đâu được trải qua những chuyến phiêu lưu như ngài." }, { Cue = "/VO/Odysseus_0397", PreLineAnim = "Odysseus_KnifeToss", Text = "Ai mà biết được, Nữ Thần? Nhưng rõ ràng là cậu ta đã học hỏi được kha khá kinh nghiệm trong thời gian rời đi. Thậm chí còn có cả đôi cánh nữa! Không biết cậu ta có thêm bộ cánh dự phòng nào không?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_4509", Text = "Ồ, ta cũng không biết nữa..." }, }, { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0083", Text = "Ah well..." }, }, }, }, OdysseusAboutAthena01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "P_Intro" }, }, { PathTrue = { "CurrentRun", "UseRecord", "NPC_Athena_01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0393", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ở mặt trận Olympus, chúng ta chẳng có nhiều Shade, chỉ có vài Shade can đảm. Họ nói rằng cô đã gặp trực tiếp Nữ Thần Athena, tình hình của cô ấy thế nào rồi?" }, { Cue = "/VO/Melinoe_4185", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Xét đến việc cô ấy một mình chống lại đội quân đông đảo của Titan, cô ấy vẫn giữ được phong thái điềm tĩnh đến kinh ngạc." }, { Cue = "/VO/Odysseus_0394", PreLineAnim = "Odysseus_KnifeToss", Text = "Ta muốn nhờ cô gửi lời cảm ơn đến cô ấy, vì những lần cô ấy cứu ta thoát khỏi nguy hiểm, nhưng... tốt hơn nên giữ kín chuyện này." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_4186", Text = "Ngài có chắc là ta không nên nói gì chứ?" }, }, { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0395", Text = "Chắc chắn." }, }, }, }, OdysseusAboutCirce01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "NPC_Circe_01" }, }, { Path = { "GameState", "RoomsEntered", "O_Story01" }, Comparison = ">=", Value = 2, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3313", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Trong chuyến đi gần đây, ta đã gặp được Phù Thủy Circe trên hòn đảo nhỏ của cô ấy, rõ ràng là nơi an toàn nhất trước mọi biến động trên biển. Chẳng phải hai người đã từng quen biết nhau sao?" }, { Cue = "/VO/Odysseus_0261", PreLineWait = 0.35, Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Odysseus_Default_01", WaitTime = 5.0 }, Text = "Kể cả lúc còn sống lẫn đã chết, chúng ta chỉ có thể cố gắng hiểu nhau hơn, thưa Nữ Thần... Tuy ta đã biết Circe... chỉ chút ít thôi, ít nhất là vậy; chỉ là quen biết thoáng qua thôi, sao cô lại hỏi vậy?" }, { Cue = "/VO/Melinoe_3314", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ờ, chỉ để phòng trường hợp ngài muốn ta nhắn gửi điều gì đó với cô ấy khi bọn ta gặp lại nhau, vì có thể cô ấy sẽ hỗ trợ cho ta vượt qua Rãnh Nứt Thessaly." }, { Cue = "/VO/Odysseus_0262", PreLineAnim = "Odysseus_KnifeToss", Text = "Không, không cần phải nói gì với cô ấy cả. Tốt nhất là hãy tập trung vào nhiệm vụ trước mắt." }, EndVoiceLines = { { PreLineWait = 0.45, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3315", Text = "Đã hiểu." }, }, }, }, OdysseusAboutCirce02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "NPC_Circe_01" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusAboutCirce01", "CirceAboutOdysseus01", "OdysseusGift03" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3330", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chuyện gì xảy ra giữa ngài và Circe vậy, Od? Cô ấy có nhắc đến ngài, không nói gì quan trọng, chỉ là... ta cảm nhận được nỗi đau, và ta cũng cảm nhận được điều đó ở đây, ngay lúc này." }, { Cue = "/VO/Odysseus_0263", PreLineAnim = "Odysseus_Greet", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Đó không hẳn là nỗi đau, thưa Nữ Thần. Khi ta sống sót trở về từ trận chiến, ta đã gặp Circe và hòn đảo của cô ấy, và... ta đã sống ở đó khoảng một năm. Cô ấy cho ta và đồng đội của ta chỗ ở, và bọn ta đã trở nên thân thiết. Ta học được rất nhiều từ cô ấy, và sau đó... bọn ta rời đi." }, { Cue = "/VO/Melinoe_3331", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chuyến hành trình trở về của ngài. Ngài đã nán lại đó suốt một năm, rồi lại tiếp tục cuộc hành trình và không bao giờ gặp lại cô ấy nữa..." }, { Cue = "/VO/Odysseus_0264", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Đúng là vậy, cho đến khi ta gặp lại cô ấy ở đây. Chỉ là... nó đã là quá khứ, đối với cả hai bọn ta, ta nghĩ vậy. Không phải mọi mối quan hệ như vậy đều phải kéo dài mãi mãi." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3332", Text = "Ta hiểu rồi, ta nghĩ vậy..." }, }, }, }, OdysseusAboutChronos01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "RoomsEntered", "N_Opening01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0135", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Chúng ta được tin quân đội Chronos đang triệu tập trên mặt đất, nhưng vẫn chưa hay biết gì về cô. Ít ra cô không phải đối mặt với {#Emph}chúng {#Prev}, nhỉ?" }, { Cue = "/VO/Melinoe_2172", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Con đường băng qua Địa Ngục của ta vẫn còn đầy rẫy chông gai, nhưng đúng, ta cũng an tâm khi biết quân phản bội đấy không hay biết gì về ta." }, { Cue = "/VO/Odysseus_0136", PreLineAnim = "Odysseus_KnifeToss", Text = "Không con đường xuống nào có thể kín đáo hơn. Những đám gai nhọn trong khu rừng đấy, ít ra {#Emph}chúng {#Prev}cũng chẳng ưa gì tên Chronos." }, EndVoiceLines = { { PreLineWait = 0.45, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2173", Text = "Ta sẽ băng qua được." }, }, }, }, OdysseusAboutChronosAnomaly01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ChronosAnomalyIntro01" }, }, { PathFalse = { "GameState", "RoomsEntered", "I_Boss01" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0242", Text = "Trông cô như vừa nhìn thấy ma vậy, thứ lỗi cho ta vì cách dùng từ của người phàm, thưa Nữ Thần. Bọn ta thường nói với người khác như vậy khi trông họ mất bình tĩnh. Vậy mọi chuyện vẫn ổn chứ?" }, { Cue = "/VO/Melinoe_3304", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ổn, nhưng cũng không ổn; ta đã gặp Chronos ngoài đó. Ta cứ tưởng hắn đã bắt được ta, nhưng ta đã thoát khỏi ma thuật của hắn. Chuyện này đã xảy ra ở Oceanus, nhưng ta cũng bắt gặp hắn đang rình rập ở gần những con đường rời khỏi Erebus." }, { Cue = "/VO/Odysseus_0243", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Khốn kiếp... báo cáo của bọn ta không nói gì về việc đó cả, nhưng rồi... một số Shade cung cấp thông tin vẫn chưa trở về. Chúng ta có thể suy đoán rằng Chronos đang ở vùng sâu hơn. Chắc hẳn cô đã gây náo loạn đủ để thu hút sự chú ý của hắn đấy." }, { Cue = "/VO/Melinoe_3305", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta đã không cẩn thận trong cách tiếp cận của mình. Có thực sự là không còn cách khác không?" }, { Cue = "/VO/Odysseus_0244", PreLineAnim = "Odysseus_Pensive_End", Text = "Bọn ta e là không. Bọn ta đang trông chờ vào việc hắn nghĩ rằng cô không phải một phần đối với kế hoạch của chúng ta. Còn đối với kế hoạch của chúng ta, ta sẽ bàn bạc với phù thủy vĩ đại. Hãy bảo trọng và cảm ơn những báo cáo của cô." }, EndVoiceLines = { { PreLineWait = 0.45, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_3306", Text = "Tất nhiên rồi." }, }, }, }, OdysseusAboutChronos02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "ChronosReveal01B", "ChronosRevealFollowUp", }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutChronosAnomaly01" }, }, { PathFalse = { "GameState", "RoomsEntered", "I_Boss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0161", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ta nhận được một báo cáo đáng lo ngại, một dấu hiệu trên những con đường ở rìa của Erebus. Liệu những gì ta nghe được có phải sự thật không?" }, { Cue = "/VO/Melinoe_2216", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Nếu đó là Chronos mà họ thấy thì đúng. Ít nhất thì bây giờ ta đã biết hắn trông như thế nào; nhưng hắn cũng đã nhận ra ta. Ngài có nghĩ vì sao hắn thả ta đi không? Có phải chúng ta đã bị lộ không?" }, { Cue = "/VO/Odysseus_0162", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Không ai có thể vào Crossroads mà không được sự cho phép, hoặc kể cả hắn có thể biết nơi chúng ta đang ở đây... hắn vẫn không thể vào được. Vậy là hắn đang rình rập xung quanh đây sao? Tốt thôi. Hắn đang lãng phí thời gian trong khi cô đang tiến gần hơn đến mục tiêu của mình." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2217", Text = "Có thật là hắn đang lãng phí thời gian không...?" }, }, }, }, OdysseusAboutChronosBossW01 = { PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "EnemyKills", "Chronos" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0228", -- PreLineAnim = "Odysseus_KnifeToss", -- PreLineAnim = "Odysseus_Pensive_Start", -- PostLineAnim = "Odysseus_Pensive_End", PreLineAnim = "Odysseus_Explaining", -- PreLineAnim = "Odysseus_Greet", -- PreLineAnim = "Odysseus_Salute", Text = "Cô giết được hắn rồi, phải không? Giết được tên khốn đấy trong... dù chỉ là một đêm. Khi mới nghe được báo cáo, ta cũng khó lòng tin được, nhưng khi đến lần ba lần bốn, ta đã suy nghĩ lại. {#Emph}Làm tốt lắm{#Prev}, Nữ Thần!" }, { Cue = "/VO/Melinoe_2967", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cảm ơn, Od. Nhưng ta cũng không ngạc nhiên nếu giờ báo cáo đưa tin rằng hắn đã trở lại. Nhưng hiện tại ta đã có được thứ mình cần rồi. Và một chút trả thù, ta nghĩ vậy." }, { Cue = "/VO/Odysseus_0229", PreLineAnim = "Odysseus_KnifeToss", Text = "Aye, và ta đoán hắn sẽ rất cay nghiệt chuyện đấy, nhưng... mặc dù chưa tiến triển được đến mức đấy... ta nghĩ chúng ta cần thấy điều này. {#Emph}Cô {#Prev} rất cần điều này. Vậy là đến giai đoạn tiếp theo nhỉ?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_2968", Text = "Ồ phải." }, }, }, }, OdysseusAboutChronosBossL01 = { PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutChronosBossW01"}, }, { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { PathFalse = { "GameState", "EnemyKills", "Chronos" }, }, { PathFalse = { "CurrentRun", "Cleared" } }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0230", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Cô đã tìm thấy hắn rồi sao, Nữ Thần... ánh mắt của cô đã nói lên tất cả, cùng với những báo cáo ta nhận được. Cô đã khiến hắn phải nhớ đến cô, ngay cả khi trận chiến không diễn ra theo ý cô..." }, { Cue = "/VO/Melinoe_3094", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chronos chính xác là những gì chúng ta đang nói đến... nhưng ta không thể đoán trước được mọi trò ma thuật của hắn. Với lại, khả năng chống lại ma thuật của hắn từ ta cũng chỉ đến mức đó thôi." }, { Cue = "/VO/Odysseus_0231", PreLineAnim = "Odysseus_KnifeToss", Text = "Chà, may mắn cho cô, người già thường học hỏi rất chậm. Nếu cô đối đầu với hắn thêm vài lần nữa, cô sẽ sớm biết hết mọi chiêu trò ma thuật của hắn. Mặc dù vậy... hãy cẩn thận khi ra ngoài đó nhé?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3095", Text = "Được..." }, }, }, }, OdysseusAboutChronosBossTactics01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { Path = { "GameState", "RoomsEntered", "I_Boss01" }, Comparison = ">=", Value = 3, }, { PathFalse = { "GameState", "EnemyKills", "Chronos" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0420", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Các Shade của chúng ta không thể tiếp cận Thánh Điện của Hades, vậy nên họ không có bất kỳ thông tin nào về lối chiến đấu của Titan. Ta e rằng lần này cô sẽ phải tự xoay xở rồi, Nữ Thần..." }, { Cue = "/VO/Melinoe_4211", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ồ, ta có thể tự mình báo cáo. Hắn trông khá yếu ớt, nhưng rất nhanh nhẹn. Lưỡi hái của hắn vươn rất xa, lại còn có thể khống chế ta ngay lập tức, nhưng chỉ trong khoảng thời gian ngắn. Và đội quân của hắn luôn xuất hiện, để đảm bảo ta bị áp đảo về số lượng." }, { Cue = "/VO/Odysseus_0421", PreLineAnim = "Odysseus_KnifeToss", Text = "Không chế cô... nghĩa là hắn tận dụng thời gian để ngăn cản cô, nhưng không thể duy trì lâu. Vậy thì đúng như Nữ Chúa đã nói sao? Điều đó có nghĩa là quyền năng của hắn đối với cô đã bị giới hạn; cô mới là người không thể bị ngăn cản, chứ không phải hắn." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4212", Text = "Ta vẫn chưa cảm nhận được điều đó." }, }, }, }, -- similar alt below OdysseusAboutTyphon01 = { PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" }, }, { PathTrue = { "GameState", "RoomsEntered", "Q_Boss01" }, }, { SumPrevRuns = 3, Path = { "RoomsEntered" }, TableValuesToCount = { "Q_Boss01", "Q_Boss02" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "OdysseusAboutPolyphemus01", "OdysseusAboutPolyphemus02" }, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "OdysseusAboutTyphonW01", "OdysseusAboutTyphonL01", "OdysseusAboutTyphon01_B" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0384", -- PreLineAnim = "Odysseus_KnifeToss", -- PreLineAnim = "Odysseus_Greet", -- PreLineAnim = "Odysseus_Salute", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Cô đã đối đầu với Typhon trên đỉnh núi đó ư, Nữ Thần...? Các Shade có báo lại với ta rằng hắn to bằng ngọn núi... xin hãy nói với ta rằng họ đã phóng đại quá mức đi." }, { Cue = "/VO/Melinoe_4109", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "À thì, nói đơn giản là... theo ước tính thì hắn phải to gấp trăm lần Polyphemus. Mặc dù ta chưa có cơ hội đánh giá một cách chính xác." }, { Cue = "/VO/Odysseus_0385", PreLineAnim = "Odysseus_KnifeToss", Text = "Rồi cô sẽ sớm biết điều đó thôi, ta khá chắc là vậy. Cô vẫn luôn ghi chép mọi thứ về kẻ thù mà cô đối mặt mà! Các Shade của chúng ta và cả nữ chúa cho rằng thật thiếu khôn ngoan khi tự mình đối mặt với mối đe dọa như vậy, nhưng... có lẽ cô sẽ không chùn bước đâu nhỉ?" }, EndVoiceLines = { { PreLineWait = 0.42, UsePlayerSource = true, { Cue = "/VO/Melinoe_4110", Text = "Tất nhiên rồi." }, }, { PreLineWait = 0.42, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0386", Text = "Tốt." }, }, }, }, OdysseusAboutTyphon01_B = { PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" }, }, { PathTrue = { "GameState", "RoomsEntered", "Q_Boss01" }, }, { SumPrevRuns = 3, Path = { "RoomsEntered" }, TableValuesToCount = { "Q_Boss01", "Q_Boss02" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "OdysseusAboutTyphonW01", "OdysseusAboutTyphonL01", "OdysseusAboutTyphon01", "OdysseusAboutPolyphemus01", "OdysseusAboutPolyphemus02" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0384", -- PreLineAnim = "Odysseus_KnifeToss", -- PreLineAnim = "Odysseus_Greet", -- PreLineAnim = "Odysseus_Salute", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Cô đã đối đầu với Typhon trên đỉnh núi đó ư, Nữ Thần...? Các Shade có báo lại với ta rằng hắn to bằng ngọn núi... xin hãy nói với ta rằng họ đã phóng đại quá mức đi." }, { Cue = "/VO/Melinoe_4230", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "À thì, nói đơn giản là... theo ước tính thì hắn phải to gấp trăm lần Polyphemus. Mặc dù ta chưa có cơ hội đánh giá một cách chính xác." }, { Cue = "/VO/Odysseus_0385", PreLineAnim = "Odysseus_KnifeToss", Text = "Rồi cô sẽ sớm biết điều đó thôi, ta khá chắc là vậy. Cô vẫn luôn ghi chép mọi thứ về kẻ thù mà cô đối mặt mà! Các Shade của chúng ta và cả nữ chúa cho rằng thật thiếu khôn ngoan khi tự mình đối mặt với mối đe dọa như vậy, nhưng... có lẽ cô sẽ không chùn bước đâu nhỉ?" }, EndVoiceLines = { { PreLineWait = 0.42, UsePlayerSource = true, { Cue = "/VO/Melinoe_4110", Text = "Tất nhiên rồi." }, }, { PreLineWait = 0.42, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0386", Text = "Tốt." }, }, }, }, OdysseusAboutTyphonL01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { PathFalse = { "CurrentRun", "Cleared" }, }, { Path = { "GameState", "RoomsEntered" }, SumOf = { "Q_Boss01", "Q_Boss02" }, Comparison = ">=", Value = 2, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HecateAboutTyphonFight01", "HecateAboutTyphonFight01_B", "HecateBossAboutTyphonFight01", "HecateBossAboutTyphonFight01_B" } }, { Path = { "CurrentRun", "TextLinesRecord" }, HasNone = { "HecateAboutTyphonFight01", "HecateAboutTyphonFight01_B" } }, { Path = { "GameState", "EnemyKills", "TyphonHead" }, Comparison = "<=", Value = 3, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0387", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Nữ Chúa đã rất lo lắng về những lần đối đầu giữa cô và Typhon. Ta đoán là cô chưa từng được huấn luyện để đối phó với những kẻ địch to lớn như vậy." }, { Cue = "/VO/Melinoe_4111", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ồ, ta vừa luyện tập đêm qua xong. Typhon vô cùng to lớn và mạnh mẽ, nhưng rõ ràng là không phải bất khả chiến bại. Người ta nói rằng trước đây Thần Zeus đã từng đánh bại hắn." }, { Cue = "/VO/Odysseus_0388", PreLineAnim = "Odysseus_KnifeToss", Text = "Họ kể rất nhiều điều, Nữ Thần; nhưng ta quan tâm đến lời kể của cô hơn. Nếu trực giác của cô cho rằng con quái vật đó có thể bị ngăn chặn, thì lời nói của cô đã đủ tin cậy đối với ta rồi. Mặc dù ta... cũng muốn tận mắt chứng kiến, tất nhiên rồi." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_4112", Text = "Tất nhiên rồi." }, }, }, }, OdysseusAboutTyphonW01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, { PathFalse = { "GameState", "LastBossDifficultyRecord", "TyphonHead" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0389", PreLineAnim = "Odysseus_Explaining", Text = "Nữ Thần, cô đã thực sự đánh bại con quái vật khổng lồ đó...! Ta không phủ nhận là ta cũng có chút nghi ngờ, nhưng mà... chỉ một chút thôi, ta thề. Vậy rốt cuộc cô đã đánh bại hắn bằng cách nào?" }, { Cue = "/VO/Melinoe_4113", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chắc là... bằng mưu trí? Tất cả những gì ta có thể làm là dốc toàn lực để đánh hắn. May mắn thay, Thần Zeus cũng giáng xuống hắn những tia sét. Rồi cuối cùng, Typhon đã bị đánh bại." }, { Cue = "/VO/Odysseus_0390", PreLineWait = 0.35, PreLineAnim = "Odysseus_KnifeToss", Text = "Chà! Khả năng chiến đấu của cô thì rất tuyệt, nhưng khả năng kể chuyện thì... chưa được tốt lắm. Lần tới khi cô đánh bại Quái Vật Thủy Tổ, hãy kể cho ta nghe một câu chuyện hấp dẫn hơn nhé?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_4114", Text = "...Không hứa trước được." }, }, }, }, OdysseusAboutTyphonW02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, { PathTrue = { "GameState", "TextLinesRecord", "OdysseusAboutTyphonW01"} }, { PathTrue = { "GameState", "WeaponsUnlocked", "WeaponDagger" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0391", PreLineAnim = "Odysseus_Explaining", Text = "Vậy là cô đã ở đó, một mình trên đỉnh núi bị bao phủ bởi mưa bão... thì từ trong bóng tối vọng ra tiếng gầm rú chói tai đến mức rung chuyển cả Olympus. Và rồi Typhon xuất hiện, mang theo cơn thịnh nộ còn khủng khiếp hơn xưa...! Rồi chuyện gì xảy ra sau đó vậy, Nữ Thần?" }, { Cue = "/VO/Melinoe_4115", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Mel_Hesitant_01", WaitTime = 5, Emote2 = "PortraitEmoteFiredUp", Portrait2 = "Portrait_Mel_Intense_01", WaitTime2 = 4 }, Text = "Bọn ta đã giao chiến. Ta đã thắng. Ôi, chết tiệt thật... lẽ ra ta phải kể một câu chuyện hấp dẫn hơn. Ừm... hắn cố gắng nghiền nát ta bằng cái cằm khổng lồ, nhưng ta đã né được, và trèo lên đầu hắn, rồi cắm Song Dao Lim và Oros vào não hắn!" }, { Cue = "/VO/Odysseus_0392", PreLineWait = 0.35, PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "{#Emph}Oh{#Prev}, đoạn kết khá rùng rợn đấy, nhưng ta thích! Nếu được cho phép, thì lời góp ý của ta là... quá nhiều câu chuyện về quái vật khổng lồ đều kết thúc theo cách đó. Ừm, giả sử như... hắn nuốt chửng cô thì sao? Rồi cô chém một đường lên cổ họng hắn để thoát ra?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_4116", Text = "Ta cũng định kể đến đoạn đó mà!" }, }, { PreLineWait = 0.1, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0106", Text = "{#Emph}" }, }, }, }, OdysseusAboutTyphonDeath01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TyphonDefeatedWithStormStop" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0592", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Nữ Thần, cô ổn chứ...? Bản năng của ta thôi thúc mở tiệc ăn mừng cái chết của Typhon, nhưng... ta chưa từng quên gã đàn ông đầu tiên mà ta đã giết. Khoảnh khắc ánh sáng dần tan biến trong ánh mắt của hắn..." }, { Cue = "/VO/Melinoe_5050", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Typhon tìm kiếm sự hủy diệt, và hắn đã tự chuốc lấy kết cục đó. Ta se không vui mừng trước kết quả này, nhưng cũng không hối tiếc. Nhất là khi vẫn còn nhiều việc phải làm." }, { Cue = "/VO/Odysseus_0593", PreLineAnim = "Odysseus_KnifeToss", Text = "Cô có cách tiếp cận đúng đắn. Khi mọi chuyện kết thúc, cô sẽ có thời gian để nhìn lại từng lựa chọn và hệ quả của chúng, nhưng hiện tại... tốt nhất là hãy tiếp tục và hoàn thành những gì cô đã bắt đầu." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_5051", Text = "Ta cũng dự định sẽ làm vậy." }, }, }, }, OdysseusAboutUltimateProgress01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ZagreusPastMeeting05" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0588", PreLineAnim = "Odysseus_Pensive_Start", Text = "Mục tiêu của cô đã ở ngay trước mắt rồi, Nữ Thần, chỉ cần nhìn vẻ căng thẳng của Nữ Chúa là đủ hiểu. Ta không có ý can thiệp đâu, chỉ là muốn biết cô đã xác định những gì cần làm chưa?" }, { Cue = "/VO/Melinoe_5048", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta nghĩ là rồi. Ta cũng muốn kể cho ngài nghe toàn bộ, nhưng ngài cũng biết Nữ Chúa sẽ phản ứng thế nào rồi đấy. Tóm lại là, giai đoạn cuối cùng trong kế hoạch đã bắt đầu." }, { Cue = "/VO/Odysseus_0589", PreLineAnim = "Odysseus_Pensive_End", Text = "Ta chỉ cần biết như vậy là đủ. Giai đoạn này phụ thuộc vào cô và bà ấy. Về phần ta, có vẻ như cô đang duy trì lộ trình một cách ổn định nhất." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_5049", Text = "Đúng vậy. Cảm ơn kế sách của ngài." }, }, { PreLineWait = 0.3, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0590", Text = "Rất vinh hạnh." }, }, }, }, OdysseusAboutHecateKidnapped01 = { PlayOnce = true, UseableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, InitialGiftableOffSource = true, GiftableOffSource = true, GameStateRequirements = { NamedRequirements = { "HecateMissing" }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0594", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Nữ Thần, dạo gần đây cô có thấy Nữ Chúa đâu không? Nếu có điều gì bất ổn, chắc cô sẽ không giấu ta nhỉ?" }, EndVoiceLines = { { PreLineWait = 0.41, UsePlayerSource = true, { Cue = "/VO/Melinoe_5052", Text = "Không có gì phải lo lắng đâu." }, }, }, }, OdysseusAboutScylla01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "G_Boss01", "G_Boss02" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutScyllaTactics01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0172", Text = "Đời sống dưới đáy biển dạo này thế nào rồi? Nơi đấy có đủ thứ kinh khủng rình rập khắp mọi nơi, {#Emph}chúng {#Prev}đều được báo cáo nêu rõ cả. Ta cá cô đã chứng kiến được thứ gì đó." }, { Cue = "/VO/Melinoe_2181", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài thắng đậm rồi đấy. Tồi tệ nhất lại là một con thuỷ quái tên Scylla, cùng với đồng bọn Siren của cô ta. Chúng có màn trình diễn thật lố bịch..." }, { Cue = "/VO/Odysseus_0173", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Greet", Text = "Sao cơ, Scylla vẫn còn sống ư? Thậm chí còn đi chung với các Siren, {#Emph}hah! {#Prev}Cô về được là may mắn lắm đấy. Làm ơn nói với ta là cô không nghe được tiếng hát của chúng đi?" }, EndVoiceLines = { { PreLineWait = 0.45, UsePlayerSource = true, { Cue = "/VO/Melinoe_2182", Text = "Ồ, ta nghe rất rõ là đằng khác." }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0174", Text = "{#Emph}Ungh..." }, }, }, }, OdysseusAboutScylla02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "OdysseusAboutScylla01", "OdysseusAboutScyllaTactics01" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "G_Boss01", "G_Boss02" }, }, { Path = { "GameState", "EnemyKills", "Scylla" }, Comparison = ">=", Value = 1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0175", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Ta tường rất muốn nghe những bài hát của các Siren... Ta gần như không thể cưỡng lại sự cám dỗ của chúng; tất nhiên... ta vẫn chỉ là người phàm. Có lẽ cô ít bị ảnh hưởng bởi sự cám dỗ của chúng hơn." }, { Cue = "/VO/Melinoe_2183", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có lẽ vậy. Dù sao thì, ta cũng không cảm nhận được sự hấp dẫn. Tuy nhiên, có thể các Siren sẽ giỏi hơn nếu không có Scylla. Cô ta trông khá hách dịch..." }, { Cue = "/VO/Odysseus_0176", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Ồ, cô ta đúng là mối đe dọa. Bắt được nửa tá thủy thủ của ta như thể cô muốn tạo ra một đám người hâm mộ riêng cho mình vậy. Bọn ta không còn lựa chọn nào khác ngoài việc cầu nguyện các vị thần và tiếp tục chèo. Gửi lời chào đến cô ta thay ta nhé!" }, { Cue = "/VO/Melinoe_2184", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Vậy những vị thần có đáp lại lời cầu nguyện của ngài không?" }, EndVoiceLines = { { PreLineWait = 0.41, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0177", Text = "{#Emph}Ừm{#Prev}, hầu hết là không!" }, }, }, }, OdysseusAboutScylla03 = { PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, PreBlockSpecialInteract = true, -- taverna TeleportToId = 589482, SkipContextArt = true, GiftableOffSource = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusAboutScylla02" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = GameData.OdysseusTavernaEvents, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Melinoe_2202_B", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta thấy ngài thường xuyên ngồi cô đơn ở đây, Odysseus. Ngài đang nghĩ về gia đình, phải không? Một phần ký ức ám ảnh về quá khứ ư?" }, { Cue = "/VO/Odysseus_0195", -- PreLineAnim = "Odysseus_Drinking_LemonSpin_Full", -- PreLineAnim = "Odysseus_Drinking_LemonSpin_Start", -- PostLineAnim = "Odysseus_Drinking_LemonSpin_End", -- PreLineAnim = "Odysseus_Drinking_Sip", -- PreLineAnim = "Odysseus_Drinking_Toast", PreLineAnim = "Odysseus_Drinking_Toast", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "{#Emph}Ah{#Prev}, Nữ Thần, cô có thể nhìn thấu hầu hết những Shade bọn ta, nhưng sự đồng cảm của cô dành cho ta có chút... không đúng lúc. Penelope, Telemachus và ta... bọn ta vẫn rất thân thiết với nhau, nhưng... làm sao để nói ra điều này mà không giống như vô tâm chứ..." }, { Cue = "/VO/Melinoe_2203", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Hãy nói lên suy nghĩ của ngài với ta. Ta chắc chắn ngài không vô tâm đâu." }, { Cue = "/VO/Odysseus_0232", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Drinking_Sip", Text = "...Tâm trí của ta không nghĩ về những vấn đề gia đình, mà là... những bài hát chết tiệt của các Siren. Ta hiếm khi nghe được chúng dù chỉ một lần, khi giăng buồm qua vùng biển của chúng. Ta rất muốn lao mình xuống biển, chỉ để nghe thấy chúng rõ hơn..." }, { Cue = "/VO/Melinoe_2204", UsePlayerSource = true, Emote = "PortraitEmoteSurprise", Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Những bài hát của các Siren? Ngài không thể mong ta tin rằng những lời lảm nhảm không ngừng của Scylla là nguồn gốc của những mối lo lắng gần đây của Chiến Lược Gia Kỳ Cựu chứ?" }, { Cue = "/VO/Odysseus_0197", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Drinking_Sip", Text = "Thôi nào, đừng chế giễu ta nữa, ta đang nói nghiêm túc về chuyện này đấy. Cô không ở cùng ta trên trần gian vào đúng lúc đó nên cô không hiểu đâu..." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Melinoe_2205", Text = "Rõ ràng là không rồi..." }, }, }, }, OdysseusAboutScylla04 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusAboutScylla03" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_2206", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Lần cuối chúng ta nói chuyện ở quán rượu, ta không có ý khiến ngài mất mặt vì sở thích âm nhạc của ngài. Ta chỉ không ngờ Scylla có thể được ai đó xem trọng... chứ không riêng gì ngài." }, { Cue = "/VO/Odysseus_0233", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Greet", Text = "{#Emph}Ah{#Prev}, đừng nghĩ gì về chuyện đó. Nhạc của Siren cần thời gian để thưởng thức... được những người đã từng đi qua vùng biển của chúng cảm nhận, khi ta còn sống. Tuy nhiên, đối với cô thì chúng chỉ là những lời lảm nhảm không ngừng phải không?" }, { Cue = "/VO/Melinoe_2207", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chà... có lẽ ta hơi khắc khe quá với đánh giá của mình, chỉ là... ta gặp khó khăn trong việc cảm nhận chất lượng tác phẩm cùng sự khinh miệt đối với kẻ biểu diễn tác phẩm đó." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0199", Text = "Chắc hẳn sẽ cuốn hút lắm nhỉ?" }, }, { PreLineWait = 0.45, UsePlayerSource = true, { Cue = "/VO/Melinoe_2208", Text = "Phải..." }, }, }, }, OdysseusAboutScyllaAltFight01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ScyllaAboutAltFight01" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "G_Boss01", "G_Boss02" }, }, { PathTrue = { "GameState", "LastBossDifficultyRecord", "Scylla" }, }, NamedRequirementsFalse = { "SawOdysseusOnBigStageRecently" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_5248", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ngài có biết Scylla và Charybdis đã hợp tác với nhau không?" }, { Cue = "/VO/Odysseus_0626", PreLineAnim = "Odysseus_Pensive_Start", Text = "Ồ, tất nhiên là có rồi. Sao cô lại hỏi vậy?" }, { Cue = "/VO/Melinoe_5249", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta đã tham dự buổi biểu diễn mới nhất của họ. Phải thừa nhận là rất ngoạn mục. Đáng lẽ ta nên được biết trước rằng họ đang hợp tác với nhau!" }, { Cue = "/VO/Odysseus_0627", PostLineAnim = "Odysseus_Pensive_End", Text = "Thứ lỗi cho ta, Nữ Thần, vì ta cứ tưởng việc Scylla và Charybdis hợp tác với nhau là điều mà ai cũng biết... và đây cũng chẳng phải chuyện gì mới." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_5250", Text = "Có lẽ ta đã bỏ lỡ tin tức." }, }, { PreLineWait = 0.38, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Greet", { Cue = "/VO/Odysseus_0628", Text = "Ta không hiểu sao cô lại có thể bỏ lỡ được..." }, }, }, }, OdysseusAboutScyllaSponsor01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusAboutScylla03", "ScyllaAboutDiving01" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "G_Boss01", "G_Boss02" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_5246", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Scylla có nhắc đến một nhà tài trợ nào đó trong số khán giả của cô ta, Odysseus. Ngài có biết đó là ai không? Ta từng nghĩ là Chronos, nhưng thật khó mà tưởng tượng được hắn sẽ ngồi nghe nhạc của cô ta." }, { Cue = "/VO/Odysseus_0624", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Một nhà tài trợ... điều đó chưa được đề cập trong báo cáo của chúng ta, nhưng ta sẽ xem xét và thông báo cho cô nếu có thông tin gì đó. Có lẽ chỉ là một lão thủy thủ nào đó bị mê hoặc bởi tiếng hát của cô ta. Cô có biết việc tài trợ này bao gồm những gì không?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_5247", Text = "Có lẽ là nhiều buổi biểu diễn hơn của cô ta." }, }, { PreLineWait = 0.4, { Cue = "/VO/Odysseus_0625", Text = "Cô ta đang gặp vận may rồi..." }, }, }, }, OdysseusAboutScyllaTactics01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "G_Boss01", "G_Boss02" }, }, { Path = { "GameState", "RoomsEntered" }, SumOf = { "G_Boss01", "G_Boss02" }, Comparison = ">=", Value = 3, }, { PathFalse = { "GameState", "EnemyKills", "Scylla" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0418", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Bọn Siren quả thực là một trở ngại nhỉ? Các Shade của chúng ta đã trà trộn vào đám đông khán giả, và thu thập được một số thông tin quan trọng." }, { Cue = "/VO/Melinoe_4209", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Cụ thể là gì, về việc ta liên tục thất bại trước một đoàn nhạc điên loạn, dù đã dành cả đời để rèn luyện phép thuật lẫn cách chiến đấu ư?" }, { Cue = "/VO/Odysseus_0419", PreLineAnim = "Odysseus_KnifeToss", Text = "Không cần phải tự trách bản thân đâu, Nữ Thần. Khi đối đầu với Scylla và các Siren, cô đang đối đầu với ba kẻ địch cùng lúc. Kẻ gõ trống, chỉ ở yên một chỗ, nhưng cực kỳ nguy hiểm. Các Shade của chúng ta đề xuất nên xử lý cô ta trước." }, EndVoiceLines = { { PreLineWait = 0.41, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4210", Text = "Ta sẽ thử xem sao." }, }, }, }, OdysseusAboutScyllaSong01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/MusicPlayer/Iris/IrisMusicScylla1MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla1bMusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla2MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla2bMusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla3MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla3bMusicPlayer", }, }, { Path = { "ConfigOptionCache", "MusicVolume" }, Comparison = ">", Value = 0.1, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0398", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Bản nhạc đó... ta có thể nhận ra ở bất cứ đâu! Ngay cả khi không có lời bài hát. Và ta cứ tưởng mình là người duy nhất ở Crossroads bị mê hoặc bởi tiếng hát của Siren." }, { Cue = "/VO/Melinoe_4187", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta... chỉ muốn xem liệu Nhà Sáng Tác Nhạc của chúng ta có nhận ra giai điệu đó không. Có lẽ nó không được phép trình diễn ở đây. Nhất là khi nó mang sức mạnh mê hoặc người khác." }, { Cue = "/VO/Odysseus_0399", PreLineAnim = "Odysseus_KnifeToss", Text = "Oh, ta nghĩ người chết bọn ta không còn dễ bị ảnh hưởng nữa. Dù vậy, tốt nhất là ta nên nghe lại lần nữa, để chắc chắn." }, EndVoiceLines = { { PreLineWait = 0.45, UsePlayerSource = true, { Cue = "/VO/Melinoe_4188", Text = "Hãy báo cho ta biết nếu nó gây phân tâm nhé." }, }, }, }, -- if you haven't fought the infernal beast OdysseusAboutCerberus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "RoomsEntered", "H_Intro" }, }, { PathFalse = { "GameState", "RoomsEntered", "H_Boss01" }, }, { Path = { "CurrentRun", "BiomesReached" }, HasAny = { "F" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutCerberus01_B" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0254", Text = "Một lời cảnh báo, thưa Nữ Thần, liên quan đến trở ngại mà cô có thể phải đối mặt khi cô đi đến cuối Cánh Đồng Than Khóc. Những báo cáo cho biết rằng đó là quái vật địa ngục... một con quái vật to lớn. Những Shade của chúng ta chỉ dám giữ khoảng cách xa với nó." }, { Cue = "/VO/Melinoe_3324", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chúng ta biết một lối vào Tartarus an toàn ở quanh đó... con thú này chính là lý do đường hầm đó vẫn được bảo vệ. Liệu chúng ta có thêm thông tin chi tiết gì về nó không?" }, { Cue = "/VO/Odysseus_0255", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Theo báo cáo, có vẻ như nó có thể khạc lửa từ miệng, đặc điểm này rất trùng khớp với thú cưng trong lãnh địa của cha cô. Tuy nhiên, nếu đây là sự thật... mong nó sẽ cho phép cô đi qua!" }, { Cue = "/VO/Melinoe_3325", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Sao cơ, ý ngài là con thú đang canh giữ lối vào Tartarus chính là Cerberus ư? Tại sao nó lại tuân theo mệnh lệnh của Chronos? Không thể thế được." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0256", Text = "Những báo cáo chưa rõ ràng, nhưng ta nghĩ cô cũng nên biết." }, }, }, }, -- if you fought the infernal beast OdysseusAboutCerberus01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "RoomsEntered", "H_Boss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutCerberus01" }, }, { Path = { "CurrentRun", "BiomesReached" }, HasAny = { "F" }, }, { Path = { "GameState", "RoomsEntered" }, SumOf = { "H_Boss01", "H_Boss02" }, Comparison = "<=", Value = 4, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0254", Text = "Một lời cảnh báo, thưa Nữ Thần, liên quan đến trở ngại mà cô có thể phải đối mặt khi cô đi đến cuối Cánh Đồng Than Khóc. Những báo cáo cho biết rằng đó là quái vật địa ngục... một con quái vật to lớn. Những Shade của chúng ta chỉ dám giữ khoảng cách xa với nó." }, { Cue = "/VO/Melinoe_3326", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta có thể xác nhận báo cáo của các Shades. Đồng thời bổ sung thêm rằng con quái thú địa ngục này chính là Cerberus, thú cưng của cha ta... nó hành động theo bản năng và cơn thịnh nộ thuần tuý." }, { Cue = "/VO/Odysseus_0257", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "{#Emph}Ahh{#Prev}, ta đã lo sợ điều đấy. Họ báo cáo rằng con quái thú có nhiều cái miệng phun lửa. Chắc hẳn nó không nhận ra cô sau ngần ấy thời gian và... cho cô đi qua...?" }, EndVoiceLines = { { PreLineWait = 0.45, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_3327", Text = "Không hề. Ta phải giúp nó." }, }, }, }, OdysseusAboutPoseidon01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord", }, HasAll = { "PoseidonFirstPickUp", "ZeusFirstPickUp" }, }, { PathFalse = { "GameState", "RoomsEntered", "N_Boss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0129", Text = "Với những sự giúp đỡ từ người thân của cô ở Olympus, ta muốn yêu cầu cô cho họ biết rằng ta ủng hộ cô, ngoài trừ... ừm, không phải ai cũng yêu quý ta." }, { Cue = "/VO/Melinoe_0478", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Sao cơ? Nhưng ngài là Chiến Lược Gia Vĩ Đại mà, Odysseus! Ngay cả những vị thần cũng ấn tượng với chiến lược của ngài trong thời kỳ huy hoàng." }, { Cue = "/VO/Odysseus_0130", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Đúng là Nữ Thần Athena và những vị thần khác đã ưu ái cho ta, nhưng ông bác Poseidon của cô thì khác, à thì... ta nghĩ ta đã khiến ngài ấy tức giận. Có lẽ sau ngần ấy năm, ngài ấy đã bỏ qua chuyện đó, nhưng đó có thể là rủi ro mà ta chưa sẵn sàng đối mặt, vậy nên... hãy giữ bí mật về ta được không?" }, EndVoiceLines = { { PreLineWait = 0.45, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_0479", Text = "Ta hiểu rồi." }, }, }, }, OdysseusAboutHermes01 = { PlayOnce = true, UseableOffSource = true, -- StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HecateAboutHermes01", "HecateBossAboutHermes02" }, }, { PathFalse = { "PathFalse", "RoomsEntered", "N_Opening01" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0204", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Vậy là, kế hoạch của bọn ta đã thay đổi một chút. Bọn ta đã xác nhận một số chi tiết mà Hermes đã đề xuất cho cô, về những gì... đang diễn ra ở trần gian." }, { Cue = "/VO/Melinoe_2223", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", Text = "Hãy cho ta biết nếu có thể; và ngài có nghĩ rằng việc ta ngừng theo đuổi mục tiêu mà đổi sang giải quyết những vấn đề ở trần gian là việc khôn ngoan không?" }, { Cue = "/VO/Odysseus_0205", PreLineAnim = "Odysseus_KnifeToss", Text = "Đội quân của Chronos đang tập hợp lại để tiến công lên đỉnh Olympus thông qua một con kênh cắt xuyên qua lục địa. Cô đã sẵn sàng để phá vỡ hàng ngũ kẻ địch từ bên trong. Hỗ trợ Olympus, và cơ hội chống lại Chronos của cô sẽ càng thành công." }, { Cue = "/VO/Melinoe_2224", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01ReturnToIdle", PreLineAnimTarget = "Hero", Text = "Con đường dẫn lên trên được canh gác sẽ đưa ta đến thẳng trung tâm đồn địch phía trước. Có vẻ đó là nước đi liều lĩnh đấy..." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0206", Text = "Hãy xem đó là rủi ro có tính toán trước." }, }, }, }, OdysseusAboutTreant01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_MiniBoss01", }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_2189", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta muốn hỏi ngài điều này, Od. Lần cuối ngài gặp Rễ Cây Quỷ ở trong rừng là khi nào vậy?" }, { Cue = "/VO/Odysseus_0190", PreLineAnim = "Odysseus_Explaining", Text = "Cô thấy đấy, đây là loại câu hỏi mà ta mong ai đó đã gặp Rễ Cây Quỷ trong rừng gần đây sẽ nói. Vậy ra, vẫn còn nhiều thứ mục rữa khác trong Erebus sao?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2190", Text = "Thật không may, đúng là vậy." }, }, }, }, OdysseusAboutFogEmitter01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_MiniBoss02", }, }, { PathFalse = { "GameState", "EnemyKills", "Chronos" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0188", Text = "Nguyên nhân gây ra sự khó khăn cho cô là gì mà cô quay lại với vẻ mặt cau có vậy? Vài con Wailer, hay Casket ư? Ô... hay là một con {#Emph}Shadow-Spiller." }, { Cue = "/VO/Melinoe_2187", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Phải, một con Shadow-Spiller. Ta đã mất phương hướng trong trận chiến với con đó. Khó có thể nhìn thấy gì khi chúng ở gần! Ta nên mạnh mẽ hơn thế này..." }, { Cue = "/VO/Odysseus_0189", PreLineAnim = "Odysseus_KnifeToss", Text = "Cô đã đủ mạnh mẽ rồi. Chúng chỉ thách thức sự can đảm của cô thôi. Nhưng kẻ địch như vậy phải đối mặt trực diện, không do dự. Sẵn sàng cho cuộc hành trình tiếp theo chưa?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2188", Text = "Rồi." }, }, }, }, OdysseusAboutWaterUnitMiniboss01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_MiniBoss01", }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0191", Text = "Theo báo cáo thì cô đang tiến bộ rất tốt khi đến Oceanus, nhưng rõ ràng thì thông tin đó đã lỗi thời. Điều gì khiến cô quay lại vậy, Nữ Thần?" }, { Cue = "/VO/Melinoe_2191", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Một con Rắn Biển, chắc ngài đã biết. Một con thủy quái to lớn khiến ta phải chú ý. Ngài đã bao giờ đối mặt với chúng trong những cuộc hành trình đầy sinh tử của ngài chưa?" }, { Cue = "/VO/Odysseus_0192", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_KnifeToss", Text = "Có, ta có gặp. Nhưng không phải riêng mình ta! Dù có những đồng đội đi cùng, những thủy thủ dày dặn kinh nghiệm, nhưng bọn ta không thể dõi theo những con thủy quái đang rình rập dưới mặt nước. Ừm, không ổn chút nào phải không?" }, EndVoiceLines = { { PreLineWait = 0.42, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2192", Text = "Cũng không hẳn." }, }, }, }, -- lower-priority alt below OdysseusAboutVerminMiniboss01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_MiniBoss02" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutVerminMiniboss01_B" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0193", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Nữ Thần, báo cáo gần đây cho biết rằng cô đã gặp phải Vua Vermin! Dù không quan tâm cô bất tử hay không, ta rất vui khi cô đã trở về an toàn..." }, { Cue = "/VO/Melinoe_2193", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Thật không thể tin được. Ta đã chạm trán với một con quỷ hung tợn, nhưng nó lại nhỏ bé! Ta cứ ngỡ rằng Vua Vermin sẽ to lớn hơn nhiều." }, { Cue = "/VO/Odysseus_0194", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_KnifeToss", Text = "Những câu truyện được thêu dệt. Sức mạnh của Vua Vermin tỉ lệ nghịch với kích thước của nó. Và theo như ta biết, kích thước của nó rất nhỏ..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_2194", Text = "{#Emph}Brr..." }, }, }, }, OdysseusAboutVerminMiniboss01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "G_MiniBoss02", }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutVerminMiniboss01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0193", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Nữ Thần, báo cáo gần đây cho biết rằng cô đã gặp phải Vua Vermin! Dù không quan tâm cô bất tử hay không, ta rất vui khi cô đã trở về an toàn..." }, { Cue = "/VO/Melinoe_2193", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Thật không thể tin được. Ta đã chạm trán với một con quỷ hung tợn, nhưng nó lại nhỏ bé! Ta cứ ngỡ rằng Vua Vermin sẽ to lớn hơn nhiều." }, { Cue = "/VO/Odysseus_0194", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_KnifeToss", Text = "Những câu truyện được thêu dệt. Sức mạnh của Vua Vermin tỉ lệ nghịch với kích thước của nó. Và theo như ta biết, kích thước của nó rất nhỏ..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_2194", Text = "{#Emph}Brr..." }, }, }, }, -- lower-priority alt below OdysseusAboutOctofish01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_MiniBoss03", }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutOctofish01_B" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0403", Text = "Hiện tại đang là mùa sinh sản của Hellifish ở Oceanus, chắc cô cũng nhận ra rồi nhỉ. Nếu bắt gặp chúng, lời khuyên là đừng bận tâm đến những con non, mà hãy nhắm vào những con lớn nhất." }, { Cue = "/VO/Melinoe_4191", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta thà không muốn dính dáng đến chúng, nhất mà những cú chích của chúng. Mùa sinh sản thường kéo dài trong bao lâu?" }, { Cue = "/VO/Odysseus_0404", PreLineAnim = "Odysseus_KnifeToss", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Odysseus_Default_01", WaitTime = 5.3 }, Text = "Thật ra thì dùng từ mùa cũng không hợp lý lắm, vì nó đã bắt đầu từ khi ta còn nhỏ. Tin tốt là sau một thời gian, cô sẽ quen với những cú chích đó thôi!" }, EndVoiceLines = { { PreLineWait = 0.42, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4192", Text = "Tuyệt thật nhỉ." }, }, }, }, OdysseusAboutOctofish01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { --[[ OrRequirements = { { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_MiniBoss03", }, }, }, { { PathTrue = { "CurrentRun", "RoomsEntered", "G_MiniBoss03", }, }, { PathFalse = { "CurrentRun", "Cleared", }, }, }, }, ]]-- { PathTrue = { "CurrentRun", "RoomsEntered", "G_MiniBoss03", }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutOctofish01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0403", Text = "Hiện tại đang là mùa sinh sản của Hellifish ở Oceanus, chắc cô cũng nhận ra rồi nhỉ. Nếu bắt gặp chúng, lời khuyên là đừng bận tâm đến những con non, mà hãy nhắm vào những con lớn nhất." }, { Cue = "/VO/Melinoe_4191", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta thà không muốn dính dáng đến chúng, nhất mà những cú chích của chúng. Mùa sinh sản thường kéo dài trong bao lâu?" }, { Cue = "/VO/Odysseus_0404", PreLineAnim = "Odysseus_KnifeToss", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Odysseus_Default_01", WaitTime = 5.3 }, Text = "Thật ra thì dùng từ mùa cũng không hợp lý lắm, vì nó đã bắt đầu từ khi ta còn nhỏ. Tin tốt là sau một thời gian, cô sẽ quen với những cú chích đó thôi!" }, EndVoiceLines = { { PreLineWait = 0.42, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4192", Text = "Tuyệt thật nhỉ." }, }, }, }, -- lower-priority variant below OdysseusAboutVampire01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "H_MiniBoss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutVampire01_B" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0288", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ta đã tìm thấy Hang Shade ở những Cánh Đồng đó, nếu những Shade của ta báo cáo đúng. Bọn quỷ hút máu khốn kiếp đó... những Shade chứ không phải những Shade." }, { Cue = "/VO/Melinoe_3347", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chẳng phải những sinh vật như vậy thường đi săn ở trần gian, tìm kiếm những con mồi còn sống sao? Chắc chúng phải đói lắm khi ở Địa Ngục." }, { Cue = "/VO/Odysseus_0289", PreLineAnim = "Odysseus_KnifeToss", Text = "Thà như vậy còn hơn bị thiêu rụi dưới ánh bình mình, có lẽ chúng nghĩ vậy. Chắc cô biết chúng sẽ làm gì khi cô gặp lại chúng rồi đấy." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_3348", Text = "Chúng đừng hòng đạt được điều đó." }, }, }, }, OdysseusAboutVampire01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "H_MiniBoss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutVampire01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0288", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ta đã tìm thấy Hang Shade ở những Cánh Đồng đó, nếu những Shade của ta báo cáo đúng. Bọn quỷ hút máu khốn kiếp đó... những Shade chứ không phải những Shade." }, { Cue = "/VO/Melinoe_3347", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chẳng phải những sinh vật như vậy thường đi săn ở trần gian, tìm kiếm những con mồi còn sống sao? Chắc chúng phải đói lắm khi ở Địa Ngục." }, { Cue = "/VO/Odysseus_0289", PreLineAnim = "Odysseus_KnifeToss", Text = "Thà như vậy còn hơn bị thiêu rụi dưới ánh bình mình, có lẽ chúng nghĩ vậy. Chắc cô biết chúng sẽ làm gì khi cô gặp lại chúng rồi đấy." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3348", Text = "Chúng đừng hòng đạt được điều đó." }, }, }, }, OdysseusAboutLamia01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "H_MiniBoss02" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutVampire01_B" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0286", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Cô có thể xác nhận đã nhìn thấy Nữ Hoàng Lamia ở Cánh Đồng Than Khóc được không, Nữ Thần? Ta khuyên cô nên để ý đến những dấu hiệu của việc trườn bò, ngoại trừ việc, ta nghĩ đến lúc phát hiện ra cũng muộn rồi..." }, { Cue = "/VO/Melinoe_3346", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Có lẽ ta đã kéo cô ta ra khỏi hang. Hoặc ta đã xông vào đó, dù là gì đi nữa, phép thuật của cô ta quá mạnh đối với ta..." }, EndVoiceLines = { { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0287", Text = "Quá mạnh đối với cô ư? Ái chà." }, }, }, }, OdysseusAboutRatCatcher01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_MiniBoss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0290", Text = "Chúng đã cử {#Emph}Verminancer {#Prev}truy lùng cô ư, Nữ Thần? Chúng ta chỉ biết Satyr như một danh hiệu, và không ai biết năng lực khác ngoài danh hiệu đó. Hắn là một trong những thầy tế cấp cao của Chúa Tể Titan!" }, { Cue = "/VO/Melinoe_3349", UsePlayerSource = true, Text = "Vậy thì Chúa Tể Titan sẽ sớm mất đi một thầy tế cấp cao." }, { Cue = "/VO/Odysseus_0291", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ngay cả khi cô giết hắn, thì theo những báo cáo cho biết, hắn sẽ không thực sự chết. Một món quà từ Chronos, để đổi lấy việc thực hiện nghi thức tái sinh cho hắn..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3350", Text = "Ít nhất ta có thể xác thực tính chính xác của những báo cáo của chúng ta." }, }, }, }, OdysseusAboutGoldElemental01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_MiniBoss02" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3351", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Không phải những báo cáo mà ta muốn trình bày, nhưng dường như ta có vài suy đoán về việc Chronos đã làm gì với số Vàng của hắn... Đêm qua ta đã bị đánh bại bởi một Túi Vàng khổng lồ." }, { Cue = "/VO/Odysseus_0292", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_KnifeToss", Text = "Một con {#Emph}Goldwrath{#Prev}! Ta nghĩ nếu cô là Chronos và cô có nguồn cung vô hạn về thứ kim loại lấp lánh đó... cô cũng sẽ sử dụng chúng cho những nghiên cứu quái dị của mình. {#Emph}Ah{#Prev}, nhưng cô cũng gần giống rồi đấy..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3352", Text = "Có lẽ là vậy..." }, }, }, }, OdysseusAboutSatyrCrossbow01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "N_MiniBoss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0247", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ta chưa từng thấy Chronos xuất hiện ở trần gian. Tại sao phải mạo hiểm khi có những Satyr khát máu làm tay sai cho hắn nhỉ? Đội quân của hắn có vẻ có tổ chức hơn lần đầu rồi đấy." }, { Cue = "/VO/Melinoe_3320", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta vừa đụng độ với một trong những Satyr đó. Chúng được trang bị vũ khí tốt, được huấn luyện tốt... và Chronos có cả đội quân lớn." }, { Cue = "/VO/Odysseus_0248", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "{#Emph}Hrm{#Prev}, đây là cuộc chiến mà chúng đã khao khát tìm kiếm kể từ khi những vị thần chôn vùi Chronos. Hứa hẹn về sự trở lại của Titan; sự bất tử và sự giàu có không kể xiết..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3321", Text = "...Sự dối trá." }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0299", Text = "Phải, gần giống vậy." }, }, }, }, -- lower-priority alt below OdysseusAboutCharybdis01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "O_MiniBoss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutCharybdis01_B" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3316", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta phải thừa nhận rằng đôi khi những câu chuyện về thủy quái Charybdis mà ngài kể thật sự quá khó tin. Nhưng giờ đây, khi ta đối mặt với nó, ta cảm thấy ngài chưa miêu tả hết sự kinh khủng của nó." }, { Cue = "/VO/Odysseus_0410", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Sao cơ, cô đã đối đầu với Charybdis? Ôi, Nữ Thần. Ta đã nghe báo cáo về một xoáy nước nào đó ở Rãnh Nứt của Poseidon, và giờ nỗi sợ của ta đã được xác nhận. Ít nhất là nó cũng chưa nuốt chửng cô ngay lập tức...!" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_4199", Text = "Ngài có lời khuyên thiết thực nào để đối phó với nó không?" }, }, { PreLineWait = 0.4, { Cue = "/VO/Odysseus_0411", Text = "Tránh xa nó bằng mọi giá?" }, }, }, }, OdysseusAboutCharybdis01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "O_MiniBoss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutCharybdis01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3316", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta phải thừa nhận rằng đôi khi những câu chuyện về thủy quái Charybdis mà ngài kể thật sự quá khó tin. Nhưng giờ đây, khi ta đối mặt với nó, ta cảm thấy ngài chưa miêu tả hết sự kinh khủng của nó." }, { Cue = "/VO/Odysseus_0410", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Sao cơ, cô đã đối đầu với Charybdis? Ôi, Nữ Thần. Ta đã nghe báo cáo về một xoáy nước nào đó ở Rãnh Nứt của Poseidon, và giờ nỗi sợ của ta đã được xác nhận. Ít nhất là nó cũng chưa nuốt chửng cô ngay lập tức...!" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_4199", Text = "Ngài có lời khuyên thiết thực nào để đối phó với nó không?" }, }, { PreLineWait = 0.4, { Cue = "/VO/Odysseus_0411", Text = "Tránh xa nó bằng mọi giá?" }, }, }, }, OdysseusAboutCharybdis02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "OdysseusAboutCharybdis01", "OdysseusAboutCharybdis01_B" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "O_MiniBoss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0412", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Lẽ ra trong lần nói chuyện trước liên quan đến Charybdis, ta nên đề xuất những kế sách cho lộ trình của cô. Ta nhận ra rằng việc đi vòng qua nó gần như là bất khả thi..." }, { Cue = "/VO/Melinoe_4200", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Đúng vậy. Ta từng nghĩ rằng mối nguy hiểm chính là rơi vào cái miệng sâu không đáy của nó... nhưng hóa ra những xúc tu của nó mới chính là vấn đề nan giải nhất." }, { Cue = "/VO/Odysseus_0413", PreLineAnim = "Odysseus_Explaining", Text = "Vậy thì hãy tập trung vào chúng. Có lẽ cô nên cách ly từng cặp một, tận dụng không gian để di chuyển liên tục. Tấn công xúc tu của nó đủ nhiều chắc hẳn sẽ khiến nó rút lui." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4201", Text = "Ta hiểu cảm giác đó." }, }, }, }, -- alt below OdysseusAboutZombieCaptain01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusAboutThessaly01" } }, { PathTrue = { "CurrentRun", "RoomsEntered", "O_MiniBoss02" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutZombieCaptain01_B" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0405", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Một vài thủy thủ chết đuối mà cô chạm trán ở Rãnh Nứt của Poseidon có thể từng là những người mà ta quen biết... chỉ là giờ đây ta cũng chẳng còn nhận ra họ nữa." }, { Cue = "/VO/Melinoe_4193", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Có ít nhất một tên chỉ huy những kẻ còn lại, nếu dựa vào trang phục và vũ khí cầu kỳ của hắn. Ta vừa mới giao chiến với hắn đêm qua trên con thuyền lớn của hắn." }, { Cue = "/VO/Odysseus_0406", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Rất có thể là Yargonaut, nếu trùng khớp với báo cáo. Có lẽ hắn từng thuộc về một đoàn mạo hiểm với cái tên tương tự. Nhưng họ sống trước thời của ta một chút. Có lẽ họ vẫn đang cố gắng níu giữ những ngày tháng huy hoàng..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4194", Text = "Và cản đường ta." }, }, }, }, OdysseusAboutZombieCaptain01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusAboutThessaly01" } }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "O_MiniBoss02", }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutZombieCaptain01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0405", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Một vài thủy thủ chết đuối mà cô chạm trán ở Rãnh Nứt của Poseidon có thể từng là những người mà ta quen biết... chỉ là giờ đây ta cũng chẳng còn nhận ra họ nữa." }, { Cue = "/VO/Melinoe_4193", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Có ít nhất một tên chỉ huy những kẻ còn lại, nếu dựa vào trang phục và vũ khí cầu kỳ của hắn. Ta vừa mới giao chiến với hắn đêm qua trên con thuyền lớn của hắn." }, { Cue = "/VO/Odysseus_0406", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Rất có thể là Yargonaut, nếu trùng khớp với báo cáo. Có lẽ hắn từng thuộc về một đoàn mạo hiểm với cái tên tương tự. Nhưng họ sống trước thời của ta một chút. Có lẽ họ vẫn đang cố gắng níu giữ những ngày tháng huy hoàng..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4194", Text = "Và cản đường ta." }, }, }, }, -- lower-priority alt below OdysseusAboutDragonMiniBoss01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_MiniBoss02", }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutDragonMiniBoss01_B" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_4195", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Khi còn sống, ngài đã bao giờ đối đầu với Dracon chưa, Odysseus? Những sinh vật có cánh khổng lồ giống dơi. Gần đây chúng đang trở thành vấn đề khá nan giải trên đỉnh Olympus." }, { Cue = "/VO/Odysseus_0407", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Nơi ta sống là ở vùng núi, nhưng gần như không bị quái vật bay nào quấy rầy. Tuy nhiên, theo kinh nghiệm của ta thì bọn chúng đều có điểm chung: dễ bị bắn hạ." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4196", Text = "Ta hiểu rồi." }, }, }, }, OdysseusAboutDragonMiniBoss01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "P_MiniBoss02" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutDragonMiniBoss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_4195", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Khi còn sống, ngài đã bao giờ đối đầu với Dracon chưa, Odysseus? Những sinh vật có cánh khổng lồ giống dơi. Gần đây chúng đang trở thành vấn đề khá nan giải trên đỉnh Olympus." }, { Cue = "/VO/Odysseus_0407", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Nơi ta sống là ở vùng núi, nhưng gần như không bị quái vật bay nào quấy rầy. Tuy nhiên, theo kinh nghiệm của ta thì bọn chúng đều có điểm chung: dễ bị bắn hạ." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4196", Text = "Ta hiểu rồi." }, }, }, }, -- lower-priority alt below OdysseusAboutTalos01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "CurrentRun", "RoomsEntered", "P_MiniBoss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutTalos01_B" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3610", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ngài có biết Talos, lính gác tinh nhuệ của những vị thần Olympus không? Đây là một trong những phát minh vĩ đại của Hephaestus, một trong những kiệt tác sống động... nhưng lại hoàn toàn không thể phân biệt được đồng minh hay kẻ thù." }, { Cue = "/VO/Odysseus_0297", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Sự thiếu khả năng phán đoán đó không phải do sai sót. Olympus đã triển khai Talos đến những nơi mà họ không muốn ai đặt chân vào, một trong những nơi đó là ngọn núi của họ." }, { Cue = "/VO/Melinoe_3611", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Đôi khi ta nghĩ Olympus thực sự chẳng có kế hoạch phòng thủ chặt chẽ. Chẳng phải chính Nữ Thần Athena được cho là người phụ trách những việc này ư?" }, { Cue = "/VO/Odysseus_0298", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Đúng là vậy. Chắc cô cũng hiểu rõ gia đình của mình mà, Nữ Thần! Trong những việc quan trọng, ai cũng muốn can thiệp." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_3612", Text = "Vì lợi ích của họ, ta hy vọng việc sửa chữa Talos không quá tốn kém." }, }, }, }, OdysseusAboutTalos01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_MiniBoss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutTalos01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3610", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ngài có biết Talos, lính gác tinh nhuệ của những vị thần Olympus không? Đây là một trong những phát minh vĩ đại của Hephaestus, một trong những kiệt tác sống động... nhưng lại hoàn toàn không thể phân biệt được đồng minh hay kẻ thù." }, { Cue = "/VO/Odysseus_0297", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Sự thiếu khả năng phán đoán đó không phải do sai sót. Olympus đã triển khai Talos đến những nơi mà họ không muốn ai đặt chân vào, một trong những nơi đó là ngọn núi của họ." }, { Cue = "/VO/Melinoe_3611", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Đôi khi ta nghĩ Olympus thực sự chẳng có kế hoạch phòng thủ chặt chẽ. Chẳng phải chính Nữ Thần Athena được cho là người phụ trách những việc này ư?" }, { Cue = "/VO/Odysseus_0298", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Đúng là vậy. Chắc cô cũng hiểu rõ gia đình của mình mà, Nữ Thần! Trong những việc quan trọng, ai cũng muốn can thiệp." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_3612", Text = "Vì lợi ích của họ, ta hy vọng việc sửa chữa Talos không quá tốn kém." }, }, }, }, -- lower-priority alt below OdysseusAboutTyphonMiniboss01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_MiniBoss02", "Q_MiniBoss05" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutTyphonMiniboss01_B" } }, { PathTrue = { "GameState", "RoomsEntered", "Q_Boss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0408", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Gần đây những vị thần phải đối mặt với những loại quái vật gớm ghiếc nào vậy? Đội quân của Titan còn chưa đủ rắc rối, giờ lại thêm đàn con của Typhon..." }, { Cue = "/VO/Melinoe_4197", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Hãy tưởng tượng những sinh vật mang đủ loại hình dạng và kích cỡ, mỗi con là sự pha trộn giữa cơ bắp, mắt và răng. Chúng bò lên từ lòng đất... một số thì trườn ra từ bức tường! Con mà ta đánh bại đêm qua thực sự rất to." }, { Cue = "/VO/Odysseus_0409", PreLineAnim = "Odysseus_KnifeToss", Text = "Và ta cho rằng Typhon có nhiều con hơn cả Bác Zeus của cô đấy, và tất cả đều tệ hại hết mức. Một gia tộc thù địch! Nguyên nhân của hầu hết mọi cuộc chiến lớn mà ta từng biết." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4198", Text = "Ta chưa từng nghĩ theo hướng này..." }, }, }, }, OdysseusAboutTyphonMiniboss01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_MiniBoss02", "Q_MiniBoss05" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutTyphonMiniboss01" } }, { PathTrue = { "GameState", "RoomsEntered", "Q_Boss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0408", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Gần đây những vị thần phải đối mặt với những loại quái vật gớm ghiếc nào vậy? Đội quân của Titan còn chưa đủ rắc rối, giờ lại thêm đàn con của Typhon..." }, { Cue = "/VO/Melinoe_4197_B", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Hãy tưởng tượng những sinh vật mang đủ loại hình dạng và kích cỡ, mỗi con là sự pha trộn giữa cơ bắp, mắt và răng. Chúng bò lên từ lòng đất... một số thì trườn ra từ bức tường! Con mà ta đánh bại đêm qua thực sự rất to." }, { Cue = "/VO/Odysseus_0409", PreLineAnim = "Odysseus_KnifeToss", Text = "Và ta cho rằng Typhon có nhiều con hơn cả Bác Zeus của cô đấy, và tất cả đều tệ hại hết mức. Một gia tộc thù địch! Nguyên nhân của hầu hết mọi cuộc chiến lớn mà ta từng biết." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4198", Text = "Ta chưa từng nghĩ theo hướng này..." }, }, }, }, OdysseusAboutSurfaceThreat01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Intro" }, }, { PathFalse = { "GameState", "RoomsEntered", "Q_Boss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0541", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Điều gì khiến cô quay về trong dáng vẻ lộ rõ sự bất an như vậy, Nữ Thần? Bọn ta nghe nói cô đã lên đến đỉnh núi, nhưng báo cáo sau đó không còn rõ ràng nữa... hoặc khó có thể tin được." }, { Cue = "/VO/Melinoe_5079", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Một dạng dịch bệnh nào đó đang xâm chiếm đỉnh núi... đám quái vật kinh tởm xuất hiện khắp nơi. Chúng không thể nào là thuộc hạ của Chronos, nhưng... chắc chắn là một phần trong kế hoạch của hắn." }, { Cue = "/VO/Odysseus_0542", PreLineAnim = "Odysseus_KnifeToss", Text = "Tạm thời đừng vội kết luận trước khi thu thập đầy đủ thông tin cần thiết. Cô đã trực tiếp đối đầu với những con quái vật đó và vẫn an toàn trở về. Chắc hẳn người thần của cô biết nhiều thông tin hơn, miễn là họ... vẫn còn liên lạc được với cô." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_5080", Text = "Ta cần xác thực điều đó." }, }, }, }, OdysseusAboutAxe01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "Hero", "Weapons", "WeaponAxe" }, }, { PathTrue = { "CurrentRun", "WeaponsCache", "WeaponAxe" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0044", Text = "Cô thực sự sử dụng thứ cồng kềnh đó ư, Nữ Thần? Cây rìu hai lưỡi ấy. Ta không có ý xúc phạm, nhưng liệu nó có quá sức không? Ngay cả Ajax cũng không thể cầm được vũ khí đó." }, { Cue = "/VO/Melinoe_0059", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chẳng phải ngài là người đã dạy ta cách ứng biến sao, Odysseus? Ta sẽ sử dụng mọi thứ theo ý muốn. Mà Ajax là ai vậy?" }, { Cue = "/VO/Odysseus_0045", Emote = "PortraitEmoteSurprise", PreLineAnim = "Odysseus_Explaining", Text = "{#Emph}Ajax {#Prev}là ai ư? Chỉ là một chàng trai to lớn nhất mà ta từng gặp, {#Emph}đó chính là Ajax{#Prev}. Nhưng ta quên mất rằng anh ta không có sức mạnh của Hades chảy trong người. Hoặc có lẽ của riêng cô. Vậy nên, chúc đi săn vui vẻ." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_0219", Text = "{#Emph}Hm." }, }, }, }, OdysseusAboutBows01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WeaponsUnlocked", "WeaponAxe" }, }, { Path = { "GameState", "WeaponsUnlocked", }, HasAny = { "WeaponDagger", "WeaponTorch", "WeaponLob" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0131", PreLineAnim = "Odysseus_Explaining", Text = "Nữ Thần, cho phép ta được nói đôi lời chứ? Phù thủy các cô dựa vào phép thuật để giao chiến tầm xa. Cô đã bao giờ cân nhắc việc sử dụng lại cung tên chưa? Ta có thể chỉ dạy cho cô vài kỹ năng..." }, { Cue = "/VO/Melinoe_0480", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Đừng nhắc đến cung tên nữa, Odysseus. Ta vẫn chưa bình phục hẳn sau lần cuối ngài cho ta vài lời khuyên về nó." }, { Cue = "/VO/Odysseus_0132", Text = "À, vậy thôi. Ai cũng có điểm mạnh và điểm yếu cả. Trong trường hợp của cô thì... có lẽ chỉ có đúng một điểm yếu thôi." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, -- RequiredMinElapsedTime = 3, -- Doesn't count. { Cue = "/VO/Melinoe_0481", Text = "Không tính chuyện đó." }, }, }, }, OdysseusAboutBiomeMap01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "G_Intro" }, }, { PathFalse = { "CurrentRun", "RoomsEntered", "I_Intro" }, }, { Path = { "GameState", "RoomsEntered", "H_Intro" }, Comparison = "<=", Value = 12, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0354", PreLineAnim = "Odysseus_KnifeToss", Text = "Tấm bản đồ của bọn ta đến giờ vẫn giúp ích cho cô chứ? Cô đã đến được Oceanus, nhưng theo những gì bọn ta biết thì con đường phía trước sẽ càng phức tạp hơn." }, { Cue = "/VO/Melinoe_4089", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Có vẻ như ở Địa Ngục cũng có vô số lối đi chẳng kém gì sao trên trời... nhưng bản đồ của ngài lại chỉ dẫn chính xác đến từng chi tiết. Chắc hẳn ngài có khả năng định hướng rất tốt." }, { Cue = "/VO/Odysseus_0355", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ồ, ta cũng không biết nữa, nhưng nếu lộ trình của bọn ta có thể bù đắp cho sự kém cỏi về định hướng của ta thì cũng đáng mừng. Tuy nhiên, hãy thận trọng khi đến Cánh Đồng Than Khóc. Không có tấm bản đồ nào có thể giúp cô được." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, -- RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4090", Text = "Vậy còn những nhánh cây vàng thì sao?" }, }, { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0356", Text = "Hãy để ý đến chúng." }, }, }, }, OdysseusAboutBiomeMap02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Intro" }, }, { Path = { "GameState", "RoomsEntered", "I_Intro" }, Comparison = ">=", Value = 2, }, { Path = { "GameState", "RoomsEntered", "I_Intro" }, Comparison = "<=", Value = 16, }, { PathTrue = { "GameState", "RoomsEntered", "I_Boss01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0357", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Bọn ta đã ngừng việc tìm lộ trình thích hợp băng qua Elysium, nên cô mới phải đi vòng vào Tartarus theo một cách khác. Hành lang chính vẫn bị bỏ hoang sao?" }, { Cue = "/VO/Melinoe_4091", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Hoàn toàn vắng vẻ, yên tĩnh đến lạ thường. Nó dẫn ta thẳng đến nơi nghỉ ngơi, đúng như những gì ngài đã vạch ra." }, { Cue = "/VO/Odysseus_0358", PreLineAnim = "Odysseus_KnifeToss", Text = "Ồ, công lao thuộc về các Shade đồng minh của chúng ta, nhưng nếu cô cứ khăng khăng thì ta xin nhận một phần. Nhiệm vụ của cô đã đủ khó khăn rồi, nên bọn ta không muốn cô phải lạc đường nữa." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4092", Text = "Ta hoàn toàn không phản đối gì." }, }, }, }, OdysseusAboutTask01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "G_Intro" }, }, { PathFalse = { "CurrentRun", "ActiveBounty" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0352", PreLineAnim = "Odysseus_KnifeToss", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Đường đi xuống Địa Ngục có vẻ hơi quanh co, nhưng tránh những khu vực trọng yếu là cách tốt nhất để tránh chạm mặt Chronos cho đến khi cô đủ điều kiện để đối đầu với hắn." }, { Cue = "/VO/Melinoe_4088", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta đã thuộc lòng con đường đó từ lâu rồi; nếu có một lối đi thẳng xuống Tartarus thì nghe có vẻ quá viển vông. Ta rất biết ơn vì ít nhất vẫn còn tồn tại con đường thay thế này." }, { Cue = "/VO/Odysseus_0353", PreLineAnim = "Odysseus_Explaining", Text = "Và ta cũng thấy biết ơn vì vương quốc của cha cô thật rộng lớn, nhờ đó bọn ta có thể vạch ra một lộ trình dọc theo rang giới đó, dẫn cô đến đúng nơi cần đến." }, }, OdysseusAboutOceanus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "G_Intro" }, }, { PathFalse = { "GameState", "RoomsEntered", "G_PostBoss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutScylla01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0133", Text = "Phù thủy vĩ đại đã cho ta biết rằng cô đã đánh bại bà ấy trong một trận đấu. Ấn tượng đấy! Vậy cô đã đi được bao xa?" }, { Cue = "/VO/Melinoe_0482", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta đã làm được. Xuống những căn hầm dưới đáy biển. Một thứ âm nhạc kỳ lạ vang vọng khắp nơi. Ta chưa chuẩn bị tâm lý." }, { Cue = "/VO/Odysseus_0134", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Tiếng nhạc kỳ lạ? Nó nhắc ta nhớ đến... {#Emph}ừm{#Prev}. Ờ, ta sẽ kể câu chuyện đó khi khác vậy, cô có nhiều thứ phải lo rồi." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, -- RequiredMinElapsedTime = 3, -- { Cue = "/VO/Melinoe_0481", Text = "Doesn't count." }, }, }, }, OdysseusAboutFields01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "H_Intro" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasNone = { "H_Boss01", "H_Boss02" }, }, { Path = { "GameState", "RoomsEntered", "H_Intro" }, Comparison = "<=", Value = 8, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0245", Text = "{#Emph}Ah{#Prev}, cô đã đến được Cánh Đồng Than Khóc, làm tốt lắm! Tartarus vẫn không quá xa... nói chính xác là nằm ngay bên dưới, nhưng lối vào sẽ cách một đoạn khá xa nơi cô bắt đầu rơi xuống..." }, { Cue = "/VO/Melinoe_3318", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cách một đoạn, đầy rẫy quái vật ăn linh hồn và ác quỷ căm thù sự sống. Vì quá mạnh nên buộc phải để chúng hoành hành khắp nơi đấy, đại loại vậy đúng không?" }, { Cue = "/VO/Odysseus_0246", PreLineAnim = "Odysseus_Explaining", Text = "Người phàm chúng ta rất yêu thích loài Ác Quỷ, thưa Nữ Thần ạ! Một nơi để chấm dứt đau khổ của bản thân — hoặc đắm chìm trong đấy. Một điểm hoàn hảo cho loài quỷ, chỉ có {#Emph}một số {#Prev} con mới để cho ta yên." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_3319", Text = "Gần đây ta cũng thấy vậy." }, }, }, }, OdysseusAboutTartarus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Story01" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0258", Text = "Ta nghe nói những nỗ lực của cô đã thành công giúp Cerberus lấy lại ý thức... ít nhất là tạm thời, thưa Nữ Thần. Nó đã chạy thẳng đến Tartarus, để rồi bị đuổi ra Cánh Đồng một lần nữa?" }, { Cue = "/VO/Melinoe_3328", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Phải, đó là những gì ta làm được. Ở Tartarus, nó tìm kiếm chủ nhân của mình... cha ta. Ta tình cờ gặp được ông ấy, đang bị trói bởi xiềng xích! Chronos đang tra tấn họ... chế nhạo họ." }, { Cue = "/VO/Odysseus_0259", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Chronos đang lợi dụng họ để đánh đòn tâm lý với cô. Gieo rắc trong cô những suy nghĩ tiêu cực, khiến cô liều lĩnh. Hãy nhớ rằng, chiến tranh sẽ quyết định chiến thắng bởi trái tim và khối óc." }, { Cue = "/VO/Melinoe_3329", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài đã không hành động theo cảm xúc của mình khi ngài còn sống ư?" }, EndVoiceLines = { { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0438", Text = "And just look at the mess I'm in now!" }, }, }, }, OdysseusAboutSurface01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "HecateAboutHermes01", "HecateBossAboutHermes02" }, }, { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeAltRunDoor" }, }, { PathTrue = { "GameState", "TextLinesRecord", "OdysseusAboutHermes01" }, } }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_2225", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Tại sao không cử Nemesis lên trần gian thay ta? Dù ta có phá được phong ấn chặn đường, thì ta cũng không chắc mình có thể trụ được bao lâu trên đó." }, { Cue = "/VO/Odysseus_0207", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Vấn đề ở Olympus không mang tính cá nhân đối với Nemesis như đối với cô; và gần đây cô ấy cũng thường bất tuân lệnh nữa." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_2226", Text = "Không, ta e là không đâu." }, }, }, }, OdysseusAboutSurface02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "RoomsEntered", "N_Opening01" }, }, { SumPrevRuns = 3, Path = { "RoomsEntered", "N_Opening01" }, Comparison = ">=", Value = 1, }, { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeSurfacePenaltyCure" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0208", Text = "Phù thủy vĩ đại luôn cho rằng cô sẽ tìm cách để lên trần gian. Một khi cô đã sẵn sàng, cô sẽ tự tìm ra cách. Làm tốt lắm." }, { Cue = "/VO/Melinoe_2227", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Bà ấy đã phong ấn con đường đó, cho đến khi ta tìm ra cách để vượt qua. Nhưng không khí ở trần gian lại là một vấn đề khác..." }, { Cue = "/VO/Odysseus_0209", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Quyền thừa kế Địa Ngục lại là thứ đang cản trở cô phải không? Có vẻ như nó không chỉ là phước lành mà còn là lời nguyền. Nhưng, nếu phép thuật của cô có thể giúp cô tiến xa đến mức này, thì chắc chắn... nó có thể giúp cô vượt qua tình huống khó khăn này." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_2228", Text = "Kế hoạch là vậy." }, }, }, }, OdysseusAboutThessaly01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "O_Intro" }, }, { Path = { "CurrentRun", "BiomeDepthCache" }, Comparison = ">=", Value = 4, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0239", Text = "Làm thế nào để vượt qua Rãnh Nứt Thessaly vậy, Nữ Thần? Đôi khi ta nhớ lại những ngày tháng đã qua và những đêm trên biển. Có lẽ vì ta đã quên mất cảm giác khốn khổ là gì..." }, { Cue = "/VO/Melinoe_3307", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta cảm thấy lúc này ta có thể gợi lại cảm giác đó cho ngài. Chronos có một hạm đội tàu lớn từ đáy biển, với những thủy thủ chết đuối và nhiều thứ khác. Ta đã phải chiếm bất cứ con tàu nào có thể." }, { Cue = "/VO/Odysseus_0240", PreLineAnim = "Odysseus_KnifeToss", Text = "Một trải nghiệm vượt biển đúng nghĩa nhỉ! Đầy rẫy nguy hiểm và bí ẩn...! À, ta cũng có chút ghen tị với những thủy thủ chết đuối đó! Sau khi ta chết, ta đã nghĩ những ngày tháng vượt biển của ta đã hết rồi." }, { Cue = "/VO/Melinoe_3308", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Chà, Chronos có lẽ sẽ cần nhiều thủy htủ hơn sau những gì ta đã làm với họ." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Greet", { Cue = "/VO/Odysseus_0241", Text = "Hãy nhắn gửi lời tốt đẹp của ta đến cho họ nhé!" }, }, }, }, OdysseusAboutOlympus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "P_Intro" }, }, { PathFalse = { "GameState", "RoomsEntered", "Q_Boss01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0295", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Đây có lẽ không phải thời điểm thích hợp để thông báo cho cô, nhưng bọn ta có lý do để tin rằng rắc rối ở Olympus nghiêm trọng hơn nhiều so với vẻ ngoài. Ngay cả những vị thần cũng chẳng nhận ra. Đáng tiếc là bọn ta cũng vậy..." }, { Cue = "/VO/Melinoe_3608", UsePlayerSource = true, Portrait = "Portrait_Mel_Intense_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Đội quân của Chronos vẫn không ngừng tấn công, trong khi những vị thần đang cố gắng chống trả... liệu đây có phải kế hoạch nhằm che giấu âm mưu to lớn hơn của Titan không?" }, { Cue = "/VO/Odysseus_0296", PreLineAnim = "Odysseus_Greet", Text = "Ta cũng nghĩ vậy. Nhưng đừng lo lắng, Nữ Thần! Ta đã từng chiến đấu bên cạnh một chiến binh vĩ đại, người đã nói rằng sự sợ hãi chỉ dành cho kẻ yếu. Riêng ta thì nghĩ rằng, sự sợ hãi là dành cho người sống, nhưng giống như hầu hết những điều tốt đẹp khác, nhiều quá cũng không tốt." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_3609", Text = "Nỗi sợ là dành cho kẻ thù của chúng ta." }, }, { PreLineWait = 0.4, { Cue = "/VO/Odysseus_0304", Text = "Đúng vậy." }, }, }, }, OdysseusAboutPolyphemus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "N_Boss01", "N_Boss02" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0210", Text = "Trần gian trông như thế nào vậy, nó có ấm áp và thân thiện như ta nghĩ không? Cô xứng đáng được khen thưởng chỉ vì dám đặt chân lên đó." }, { Cue = "/VO/Melinoe_0060", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Thật kinh khủng. Thành phố Ephyra bị xâm chiếm hoàn toàn. Và, có một Cyclop mù đang canh gác không cho ai thoát ra." }, { Cue = "/VO/Odysseus_0031", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Chà, thật đáng tiếc. Một Cyclop mù ư? Chắc hẳn đó là Polyphemus. Chính ta đã gây ra vết thương đó từ rất lâu rồi. Hắn vẫn còn muốn ăn thịt người ư?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_0061", Text = "Đúng vậy." }, }, { PreLineWait = 0.3, { Cue = "/VO/Odysseus_0032", Text = "{#Emph}Augh..." }, }, }, }, OdysseusAboutPolyphemus02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "PolyphemusAboutNobody03" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_3337", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Kẻ thù cũ của ngài, Polyphemus, muốn ta thay hắn gửi lời nhắn đến cho ngài. Nhưng ta không chắc hắn muốn nói gì. Có lẽ chỉ là... muốn dẫm ngài một cách dã man chăng?" }, { Cue = "/VO/Odysseus_0274", PreLineAnim = "Odysseus_KnifeToss", Text = "{#Emph}Eh{#Prev}, nghe giống tên Cyclop mà ta từng biết đấy. Thủy thủ đoàn của ta và ta, bọn ta từng là tù nhân của hắn... và là nguồn thức ăn của hắn. Ta đã tìm cách để bọn ta thoát ra khỏi đó, nhưng nó đúng là thảm kịch..." }, { Cue = "/VO/Melinoe_3338", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Hắn gọi ngài là Nobody. Làm sao hắn biết ngài với cái tên đó?" }, { Cue = "/VO/Odysseus_0275", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "{#Emph}Nobody {#Prev}đã cướp đi con mắt của hắn, thưa Nữ Thần... Ta đã đưa cho hắn một cái tên chẳng có ý nghĩa gì để hắn phải kêu đồng bọn đến giúp. Bọn ta đã cố gắng sống sót." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_3339", Text = "Hắn có đồng bọn ư?" }, }, { PreLineWait = 0.37, { Cue = "/VO/Odysseus_0276", Text = "Có lẽ không còn nữa." }, }, }, }, OdysseusAboutPolyphemus03 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "N_Boss01", "N_Boss02" }, }, { Path = { "GameState", "EnemyKills", "Polyphemus" }, Comparison = ">=", Value = 4, }, { PathTrue = { "GameState", "TextLinesRecord", "PolyphemusAboutNobody03" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0277", Text = "Polyphemus đã già đến mức nào rồi? Có lẽ hắn đã chậm chạp hơn lúc còn trẻ chăng...? Ta gần như không thể sánh bằng hắn, nhưng ta vẫn chỉ là người phàm, trong khi cô là... thần." }, { Cue = "/VO/Melinoe_3340", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Hắn rất có tính bảo vệ lãnh thổ, nhưng dường như hắn chỉ quan tâm đến ngủ và cơn thèm ăn hơn bất kỳ điều gì khác. Vậy là, ngài đã khiến hắn bị mù ư...?" }, { Cue = "/VO/Odysseus_0278", PreLineWait = 0.35, Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_KnifeToss", Text = "Đúng vậy... và ước gì hắn có thêm con mắt khác để ta có thể chọc mù nó lần nữa. Rõ ràng hắn không hề hối hận về những gì hắn đã làm, và... như cô thấy đấy, ta cũng vậy." }, EndVoiceLines = { { PreLineWait = 0.41, UsePlayerSource = true, { Cue = "/VO/Melinoe_3341", Text = "...Ta sẽ hạ hắn thay ngài." }, }, { PreLineWait = 0.4, { Cue = "/VO/Odysseus_0279", Text = "Tuyệt." }, }, }, }, OdysseusAboutHeracles01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "SpawnRecord", "NPC_Heracles_01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_2220", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta đã gặp Heracles hùng mạnh ở trần gian. Không thể nhầm lẫn được! Mặc dù ta cứ ngỡ anh ta đã chết. Nhưng trông vẻ ngoài thì anh ta vẫn còn tràn trề sức sống. Và vẫn phụng sự những vị thần..." }, { Cue = "/VO/Odysseus_0211", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Heracles vĩ đại... đó là một trường hợp phức tạp. Một nửa là người, một nửa là thần... và một nửa là quái vật. Quy luật của cái chết không hoàn toàn có thể áp dụng với hắn. Hắn muốn gì? Hắn có gây rắc rối gì cho cô không?" }, { Cue = "/VO/Melinoe_2221", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Anh ta khá cộc cằn. Bảo ta phải tránh đường. Có lẽ anh ta đang có nhiệm vụ riêng. Có vẻ như Olympus không trông đợi vào sự thành công của ta..." }, { Cue = "/VO/Odysseus_0212", PreLineAnim = "Odysseus_Explaining", Text = "{#Emph}Eh, {#Prev}đừng bận tâm về điều đó. Cô có những người họ hàng thông thái và những người tàn nhẫn. Họ không thích đặt cược hết vào một người. Và... hãy thận trọng với Heracles nhé?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_2222", Text = "Được..." }, }, }, }, -- lower-priority alt below OdysseusAboutPrometheus01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "CurrentRun", "RoomsEntered", "P_Boss01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutPrometheus01_B" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0293", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Prometheus đang chống lại chúng ta... điều đó thật đáng thất vọng, Nữ Thần. Ông ta rất được kính trọng, thậm chí là được yêu mến bởi bọn ta, những kẻ phàm trần! Chính ông ta đã ban cho bọn ta ngọn lửa và tạo nên con người bọn ta như ngày hôm nay." }, { Cue = "/VO/Melinoe_3606", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Và khi làm vậy, hắn đã phạm luật của Olympus. Theo truyền thuyết thì hắn sở hữu món quà tiên tri... điều đó có nghĩa là hắn phải lường trước được hậu quả từ sự bất tuân của mình." }, { Cue = "/VO/Odysseus_0294", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Điều gì khiến cô nghĩ rằng ông ta không lường trước điều đó? Đó càng là lý do khiến bọn ta ngưỡng mộ ông ta. Ông ta biết cái giá phải trả cho những gì ông ta sẽ làm cho bọn ta và sẵn sàng đánh đổi, hoặc... ít nhất đó là điều ta tin. Nhưng tất cả đã là quá khứ. Vì nếu bây giờ ông ta chọn đứng về phe Chronos, thì có nghĩa là ông ta đã đánh mất chính mình." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3607", Text = "Cả hai đều đúng." }, }, }, }, OdysseusAboutPrometheus01_B = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "RoomsEntered", "P_Boss01" }, }, { SumPrevRuns = 3, Path = { "RoomsEntered", "P_Boss01" }, Comparison = ">=", Value = 1, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutPrometheus01" } }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0293", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Prometheus đang chống lại chúng ta... điều đó thật đáng thất vọng, Nữ Thần. Ông ta rất được kính trọng, thậm chí là được yêu mến bởi bọn ta, những kẻ phàm trần! Chính ông ta đã ban cho bọn ta ngọn lửa và tạo nên con người bọn ta như ngày hôm nay." }, { Cue = "/VO/Melinoe_3606", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Và khi làm vậy, hắn đã phạm luật của Olympus. Theo truyền thuyết thì hắn sở hữu món quà tiên tri... điều đó có nghĩa là hắn phải lường trước được hậu quả từ sự bất tuân của mình." }, { Cue = "/VO/Odysseus_0294", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Điều gì khiến cô nghĩ rằng ông ta không lường trước điều đó? Đó càng là lý do khiến bọn ta ngưỡng mộ ông ta. Ông ta biết cái giá phải trả cho những gì ông ta sẽ làm cho bọn ta và sẵn sàng đánh đổi, hoặc... ít nhất đó là điều ta tin. Nhưng tất cả đã là quá khứ. Vì nếu bây giờ ông ta chọn đứng về phe Chronos, thì có nghĩa là ông ta đã đánh mất chính mình." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_3607", Text = "Cả hai đều đúng." }, }, }, }, OdysseusAboutPrometheus02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "OdysseusAboutPrometheus01", "OdysseusAboutPrometheus01_B" }, }, { SumPrevRuns = 3, Path = { "RoomsEntered", "P_Boss01" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "TrueEndingFinale01", "OdysseusAboutPrometheusAltFight01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0379", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ta muốn hỏi thêm về Prometheus. Theo cảm nghĩ của cô thì liệu hắn có thực sự bị điên không...? Và nếu hắn chống lại gia đình cô, vậy thì kẻ nào đã thả hắn ra...?" }, { Cue = "/VO/Melinoe_4104", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta cũng không chắc về hai chuyện đó. Đôi khi hắn nói toàn những lời khó hiểu, nhưng nghe không giống một kẻ điên. Ta nghi ngờ rằng các thế lực của Chronos đã giải thoát cho hắn để đổi lấy sự phục tùng, nhưng..." }, EndVoiceLines = { { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0380", Text = "...Nhưng hắn không phải một tên đánh thuê, đúng không?" }, }, { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_4105", Text = "Không, ta nghĩ là không." }, }, }, }, OdysseusAboutPrometheus03 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "PrometheusAboutMortals03" }, }, { PathTrue = { "CurrentRun", "RoomsEntered", "P_Boss01" }, }, -- NamedRequirementsFalse = { "ReachedEpilogue" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_4106", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", Text = "Ngài hiểu người phàm hơn bất cứ ai ở đây. Prometheus nói rằng những vị thần rất tàn nhẫn, và rằng hắn không chiến đấu vì Chúa Tể Titan, mà vì toàn thể loài người. Ngài nghĩ sao về điều đó?" }, { Cue = "/VO/Odysseus_0381", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Nghe này, ta từng quen biết không ít người phàm cho rằng những vị thần có thể vô tâm. Vài người trong số họ còn thách thức những vị thần ngay cả sau khi chết. Những người khác lại cho rằng thần thánh... là tất cả. Chúng ta chỉ có cõi giới này, vẻ đẹp của nó che lấp hết mọi khiếm khuyết." }, { Cue = "/VO/Melinoe_4107", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01ReturnToIdle", PreLineAnimTarget = "Hero", Text = "Ngài đang nói một cách khá trừu tượng. Ta muốn nghe ý kiến cá nhân của ngài, Odysseus. Những vị thần có sai không? Hay bọn ta đã tự chuốc lấy chuyện này...?" }, { Cue = "/VO/Odysseus_0382", PreLineWait = 0.35, PreLineAnim = "Odysseus_KnifeToss", Text = "Theo quan điểm cá nhân của ta, thần thánh và loài người là những sinh vật phức tạp; và cô không nên nghi ngờ bản thân, nó sẽ khiến cô chùn bước. Nếu ta cho rằng cô hoặc Nữ Chúa đã sai, ta sẽ nói thẳng." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_4108", Text = "Ngài dám thề không?" }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0383", Text = "Ta thề, thưa Nữ Thần." }, }, }, }, OdysseusAboutPrometheusAltFight01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "PrometheusAboutAltFight01", "PrometheusAboutAltFight01_B" }, }, { SumPrevRuns = 3, Path = { "RoomsEntered", "P_Boss01" }, Comparison = ">=", Value = 1, }, { PathTrue = { "GameState", "LastBossDifficultyRecord", "Prometheus" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_5223", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", Text = "Odysseus, ta cần lời khuyên của ngài và hãy giữ bí mật về chuyện này. Prometheus có một đồng minh mà ta tưởng rằng là người trung thành với gia đình ta. Ta đã đối đầu với họ cùng lúc, gần đỉnh núi, nơi mù mịt khói. Nhưng ta không được tiết lộ người đó là ai..." }, { Cue = "/VO/Odysseus_0614", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "{#Emph}Mm{#Prev}, quả là một báo cáo thú vị, và ta cũng nghi ngờ vài người mà cô muốn nói đến. Chắc hẳn những vị thần phải biết chuyện này chứ, ít nhất là Thần Hermes, hay... cô cho rằng họ vẫn chưa biết?" }, { Cue = "/VO/Melinoe_5224", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01ReturnToIdle", PreLineAnimTarget = "Hero", Text = "Ta không nghĩ họ nhận ra điều đó, có thể Hermes đã biết, nhưng không tiết lộ. Prometheus nói rằng ta sẽ không tiết lộ với bất kỳ ai, vì làm như vậy sẽ dẫn đến hậu quả khó lường. Ngài nghĩ hắn đang nói thật chứ?" }, { Cue = "/VO/Odysseus_0615", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Ta cũng không dám đánh cược điều ngược lại. Tốt nhất lúc này chúng ta cứ xem đó là sự thật, trừ khi cô cho rằng tên đồng minh này đang gây ra mối đe dọa cho gia đình cô. Cô có thể điều tra thêm được không?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_5225", Text = "Ta nghĩ là được..." }, }, { PreLineWait = 0.38, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0616", Text = "Nhớ báo cho ta biết nhé." }, }, }, }, OdysseusAboutTravel01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeSurfacePenaltyCure" }, }, { Path = { "GameState", "EnemyKills", "Polyphemus" }, Comparison = ">=", Value = 2, }, { Path = { "GameState", "EnemyKills", "Scylla" }, Comparison = ">=", Value = 2, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0147", PreLineAnim = "Odysseus_Pensive_Start", Text = "Nữ Thần, ta vừa suy ngẫm về những chuến hành trình của cô, đưa cô lên đỉnh núi và xuống trần gian, hoặc đến nơi tận cùng thế giới! Không chỉ là một chuyến hành trình thông thường... chắc chắn phải có từ nào đó miêu tả hết sự vĩ đại của nó..." }, { Cue = "/VO/Melinoe_2195", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Gọi là cuộc hành trình vẫn chưa đủ cao cả ư? Có lẽ nên gọi là nhiệm vụ? Hay sứ mệnh? Nhiệm vụ thì nghe có vẻ không ổn lắm..." }, { Cue = "/VO/Odysseus_0148", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Không được, quá lạc quan, và cuộc hành trình giống như một thuật ngữ du ngoạn hơn... {#Emph}Ừm{#Prev}, chúng ta sẽ nghĩ ra được từ thích hợp hơn." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_2196", Text = "{#Emph}...cuộc hành trình... chuyến đi xa..." }, }, }, }, OdysseusAboutPressure01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "HecateHideAndSeek01", "OdysseusGift01" }, }, { PathFalse = { "CurrentRun", "Cleared" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_2174", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài đã giải quyết nó như thế nào vậy, Odysseus? Khi ngài phải gánh vác hậu quả của một cuộc chiến toàn diện, rồi đến một cuộc hành trình đầy nguy hiểm trên biển, tất cả đều là mục đích sống duy nhất... hoặc ít nhất là ngài nghĩ vậy?" }, { Cue = "/VO/Odysseus_0137", PreLineAnim = "Odysseus_KnifeToss", Text = "Chắc chắn suy nghĩ mục-đích-sống đã truyền cho ta ý chí để sinh tồn. Hầu hết mọi người đều cố níu giữ mục đích sống, nhưng ta giỏi hơn hầu hết họ trong việc loại bỏ những nghi ngờ của mình. Và khi kế hoạch của ta đổ vỡ, ta sẽ chọn cách ứng biến...!" }, { Cue = "/VO/Melinoe_2175", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "{#Emph}Kế hoạch {#Prev}của ngài bị thất bại? Vậy làm thế nào để ngài không trở nên quẩn trí? Luôn gạt bỏ những nghi ngờ khi đối mặt với thất bại?" }, { Cue = "/VO/Odysseus_0138", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Đó là lúc ta luôn thích tìm ra giải pháp. Bất kể ta đang dấn thân vào chuyện gì. Ta xem tình cảnh khó khăn như những mê cung cần tìm lối thoát, những câu đố cần lời giải đáp..." }, { Cue = "/VO/Melinoe_2176", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Nhưng có lúc sẽ gặp bế tắc; kết quả không như mong đợi..." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0139", Text = "Không đâu, thưa Nữ Thần. Nếu cô hỏi, ta sẽ trả lời như vậy." }, }, }, }, OdysseusAboutPressure02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusAboutPressure01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0140", Text = "Trước đây cô đã hỏi ta về cách để kiểm soát những áp lực... phải luôn tìm cách để vượt qua những tình huống, nhìn lại thì, chúng đều là... những tình huống đầy kịch tính, trong khi vẫn phải gánh vác những kỳ vọng từ người khác và cả chính bản thân ta." }, { Cue = "/VO/Melinoe_2177", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài nói rằng ngài luôn tin sẽ có một giải pháp, một kết quả tích cực của thể khám phá và đạt được... Ta đã suy nghĩ về điều đó." }, { Cue = "/VO/Odysseus_0141", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Tốt. Nhưng ta chợt nhận ra còn một điều nữa. Cũng chính tình yêu đã thúc đẩy ta tiến lên. Cuộc chiến vĩ đại đó đã giúp ta có một vị trí trong Elysium... Ta đã mong sẽ không bao giờ rời đi. Chỉ để ở lại với vợ và đứa con trai mới sinh của ta." }, { Cue = "/VO/Melinoe_2178", UsePlayerSource = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài không còn sự lựa chọn nào khác ngoài chiến đấu. Vậy nên ngài đã luôn hy vọng một ngày nào đó sẽ được gặp lại gia đình mình..." }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0142", Text = "Nghe quen quen, phải không?" }, }, }, }, OdysseusPostTrueEnding01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "NeoChronosAboutTartarus01", "NeoChronosAboutOlympus01" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0596", PreLineAnim = "Odysseus_KnifeToss", Text = "Cô đã tìm ra con đường dẫn đến chiến thắng và đã đưa mọi người đến đó. Kế hoạch sẽ chẳng thành công nếu không có sự ứng biến! Nhờ vậy mà kế hoạch của chúng ta đã bước sang một chương khác..." }, { Cue = "/VO/Melinoe_5738", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Dọn dẹp hậu quả của Chronos... ai cũng nghĩ rằng ta sẽ trừ khử ông ấy. Nhưng ta đã tìm ra một cách khác... một cách mà ta nghĩ sẽ tốt cho gia đình ta hơn, và có thể cho cả thế giới, về lâu dài." }, { Cue = "/VO/Odysseus_0597", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ta hoàn toàn hiểu, thưa Nữ Thần, và tin rằng quyết định của cô là sáng suốt. Còn về kế hoạch tiếp theo, mọi thứ đã sẵn sàng, chỉ chờ mỗi cô thôi." }, { Cue = "/VO/Melinoe_5739", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Loại bỏ những khả năng có thể dẫn đến sự thất bại... đảm bảo rằng dòng thời gian sẽ trôi chảy tự do, theo lời Chronos. Ta không biết chính xác điều gì sẽ xảy ra, nhưng sự thay đổi mà chúng ta đang chiến đấu vì nó sẽ không thể xảy ra trong một sớm một chiều. Ngài nghĩ sao về điều đó?" }, { Cue = "/VO/Odysseus_0598", PreLineAnim = "Odysseus_Explaining", Text = "{#Emph}Eh{#Prev}, theo ta thì cứ thử cũng chẳng mất mát gì! Nếu cô còn việc khác để giải quyết, hãy xem đây là cơ hội để thực hiện điều đó. Và bọn ta sẽ luôn mong chờ ngày trở về của cô." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_5055", Text = "Vậy thì hãy thử xem sao." }, }, }, }, OdysseusPostTrueEnding02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "NeoChronosAboutTartarus01", "NeoChronosAboutOlympus01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0599", PreLineAnim = "Odysseus_KnifeToss", Text = "Mọi việc trong giai đoạn mới của nhiệm vụ có tiến triển như cô mong muốn không, Nữ Thần? Có vẻ dùng từ mong muốn có hơi miễn cưỡng, vì... đây là lĩnh vực hoàn toàn mới đối với chúng ta." }, { Cue = "/VO/Melinoe_5111", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Đây là nhiệm vụ hoàn toàn khác: đảm bảo dòng thời gian trôi chảy tự do. Nếu làm đúng cách, mọi thứ sẽ trông như chẳng có gì thay đổi. Và ngay cả khi không thay đổi... cũng chẳng có gì đảm bảo rằng điều tồi tệ sẽ không xảy ra." }, { Cue = "/VO/Odysseus_0600", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Chà, hóa ra chuyện này quen thuộc hơn ta tưởng. Cuộc sống đầy rẫy những điều bất định! Dù sao thì, bọn ta đang theo dõi Chronos và đảm bảo lộ trình của cô không bị xáo trộn." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_5112", Text = "Ta sẽ tận dụng tốt những cơ hội này. Cảm ơn ngài." }, }, }, }, OdysseusPostTrueEndingAboutHouse01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "ChronosBossOutroPostTrueEnding01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0601", PreLineAnim = "Odysseus_KnifeToss", Text = "Nghe có vẻ như Thánh Điện của cha cô đã khôi phục được phần nào. Ta vẫn luôn muốn đến thăm nếu có cơ hội, dù chỉ để gặp lại vài chiến hữu năm xưa." }, { Cue = "/VO/Melinoe_5213", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta cũng muốn ghé thăm nơi đó lần nữa, nhưng chẳng biết khi nào có cơ hội, khi chúng ta vẫn còn là Hội Vô Hình. Vì trên thực tế, họ không được phép biết về chúng ta." }, { Cue = "/VO/Odysseus_0602", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ta biết, nhưng điều đó cũng không dập tắt được khao khát! Dù sao thì, miễn là những người thân của của Vua và Nữ Hoàng vẫn an toàn. Biết đâu sau này vận mệnh của chúng ta sẽ lại giao nhau." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5214", Text = "Nhờ các Nữ Thần Định Mệnh sao?" }, }, { PreLineWait = 0.31, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0603", Text = "Hoặc Prometheus, đúng vậy." }, }, }, }, OdysseusPostTrueEndingAboutTyphon01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0604", PreLineAnim = "Odysseus_Pensive_Start", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Typhon thực sự vẫn còn trên đỉnh núi ư? Hmm, ta không nhận được bất kỳ báo cáo nào về dấu vết của hắn, nhưng nếu Chronos... ừm, ông nội của cô... nếu ông ta đang sử dụng ma thuật thời gian nào đó để đưa cô đến đó thì..." }, { Cue = "/VO/Melinoe_5215", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Đúng vậy, ông ấy đã làm vậy. Và cuối cùng ta lại đối đầu với Typhon như trước đây. Dường như những khả năng này tồn tại trong những nhánh thời gian, nơi mà ta chưa thể chiến thắng... cho đến khi ta giành chiến thắng thực sự." }, { Cue = "/VO/Odysseus_0605", PreLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ta không hiểu sao điều đó có thể xảy ra được. Nghĩa là ngoài kia có hàng loạt bản thể khác của cô, người thì thất bại, người thì chiến thắng, tất cả cùng tồn tại song song với nhau ư?" }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5216", Text = "Một trong những cách giải thích hợp lý, nhỉ?" }, }, }, }, OdysseusPostEpilogue01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { NamedRequirements = { "ReachedEpilogue" }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_5217", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta đoán là ngài đã nghe tin tức về các Nữ Thần Định Mệnh rồi, phải không? Có vẻ như mọi người đều đã biết cả rồi, và ta nghĩ ngài là người biết đầu tiên. Nhưng ngẫm lại thì ta chưa từng nghe ngài nói gì nhiều về họ..." }, { Cue = "/VO/Odysseus_0608", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", PreLineWait = 0.35, Text = "...Bởi vì sâu thẳm trong lòng, ta luôn cảm thấy rằng chính chúng ta đã tự đưa ra lựa chọn của mình. Dĩ nhiên đó là một quan điểm gây tranh cãi, khi ta có bằng chứng rõ ràng rằng họ đã sắp đặt thay cho chúng ta, nhưng... lần này ta buộc phải nghe theo trực giác của mình." }, { Cue = "/VO/Melinoe_5218", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chờ đã, ngài không tin những gì họ làm ư? Những lời tiên tri, sự khởi đầu của một kỷ nguyên mới... không gì hết sao?" }, { Cue = "/VO/Odysseus_0609", PreLineAnim = "Odysseus_Explaining", Text = "Cũng không đến mức đó, nhưng... ta chọn tin vào những người mà ta quen biết và tin tưởng, bao gồm cả những người thân của gia đình cô. Nếu điều đó khiến ta thành kẻ ngốc, thì cũng đành chịu." }, { Cue = "/VO/Melinoe_5219", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", Text = "Cũng đành chịu? Nghe có vẻ như ngài đang chấp nhận số phận vậy." }, EndVoiceLines = { { PreLineWait = 0.31, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Greet", { Cue = "/VO/Odysseus_0610", Text = "Ồ, cô hiểu ý ta mà!" }, }, }, }, OdysseusPostEpilogue02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { NamedRequirements = { "ReachedEpilogue" }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_5220", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Kỷ nguyên mới mà Nữ Thần Định Mệnh đã tiên đoán, khi họ trao quyền quyết định cho loài người, có lẽ là những quyết định quan trọng... vậy các Shade nghĩ sao về chuyện đó?" }, { Cue = "/VO/Odysseus_0611", PreLineAnim = "Odysseus_Explaining", Text = "Ta đã nghe nhiều quan điểm khác nhau, nhưng nhìn chung thì họ đều tỏ ra hào hứng. Đúng là những kẻ vô ơn, nhỉ? Bọn ta có thể tồn tại đến giờ đều nhờ phước lành từ những vị thần thôi." }, { Cue = "/VO/Melinoe_5221", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01ReturnToIdle", PreLineAnimTarget = "Hero", Text = "Theo ta thì không phải lúc nào cũng nhờ phước lành. Nhiều Shade đã chết yểu vì ý muốn của các vị thần. Họ không muốn bị kiểm soát nữa." }, { Cue = "/VO/Odysseus_0612", PreLineAnim = "Odysseus_KnifeToss", Text = "Sẽ luôn tồn tại những thế lực nào đó gây khó dễ với loài người. Cho dù là thần thánh hay không thì cũng chẳng quan trọng. Ta biết các vị thần cũng có những lúc thất thường. Nhưng nếu không có họ, ta đã chẳng đi xa được thế này. Đó là lý do ta ở đây." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5222", Text = "Thật tốt khi ngài nói vậy." }, }, { PreLineWait = 0.31, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0613", Text = "Ta không nói vậy, ta thề luôn." }, }, }, }, OdysseusBackstory01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift02" }, }, { Path = { "GameState", "UseRecord", "NPC_Odysseus_01" }, Comparison = ">=", Value = 5, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_0452", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Phải thừa nhận rằng, ta đánh giá cao lời khuyên của ngài, Odysseus. Ngài giống như một người anh trai đối với ta vậy. Hay một người bác? Một trong số đó. Ngài biết rõ hơn ta mà." }, { Cue = "/VO/Odysseus_0037", PreLineAnim = "Odysseus_KnifeToss", Text = "Nghe này, cô không cần phải nói cho ta biết cảm giác khi không có gia đình ở bên là như thế nào. Ta đã dành phần lớn cuộc đời người phàm của mình để rời xa nhà. Có một cuộc chiến phải chiến đấu, để rồi lạc mất họ kể từ đó." }, { Cue = "/VO/Melinoe_0453", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Lạc mất? Nữ Chúa nói rằng ngài đã dành rất nhiều năm trên biển. Một trong số đó còn có sự xuất hiện của các nữ thần." }, { Cue = "/VO/Odysseus_0038", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", Text = "Đúng là vậy. Cuối cùng thì ta cũng trở về, nhưng ta hầu như chẳng nhận ra con trai và vợ ta... bọn ta đã cùng chung sống những ngày cuối cùng nhau ở trần gian. Ta nghĩ họ đang an nghỉ ở nơi nào đó bên dưới." }, { Cue = "/VO/Melinoe_0454", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ngài chưa gặp lại họ ư? Chuyện gì đã xảy ra vậy?" }, { Cue = "/VO/Odysseus_0039", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_End", Text = "Penelope và ta đã dần xa cách nhau. Đôi khi chuyện này thường xảy ra với người phàm. Và điều đó cũng xảy ra với những Shade khác. Về phần con trai ta, Telemachus, nó có cuộc sống riêng của nó. Cuộc sống là vậy. Hoặc kể cả cái chết cũng vậy, điều đó vẫn xảy ra." }, EndVoiceLines = { { PreLineWait = 0.55, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_0455", Text = "Phải..." }, }, }, }, OdysseusLooseEndsQuest01 = { PlayOnce = true, UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusAboutScylla03", "OdysseusAboutPolyphemus03", "OdysseusAboutCirce02" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "OdysseusBathHouse02", "OdysseusTaverna01" }, }, NamedRequirementsFalse = { "NearTrueEnding", "HecateMissing" }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0430", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Drinking_Sip", Text = "Ta rất tiếc phải báo trước, Nữ Thần, hiện tại ta đang cực kỳ khổ sở. Ta từng nghĩ mình đã có một cuộc đời trọn vẹn, nhưng chuyến những cuộc hành trình của cô đã khiến ta nhận ra nhiều điều mà ta chưa từng nói ra. Quá nhiều là đằng khác." }, { Cue = "/VO/Melinoe_4219", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Sao vậy? Những cuộc hành trình của ta thì có liên quan gì đến chuyện đó? Vậy hãy chấm dứt sự khốn khổ đó của ngài đi... hoặc nói cho ta biết làm sao để chấm dứt nó." }, { Cue = "/VO/Odysseus_0431", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Drinking_Sip", Text = "{#Emph}Eh{#Prev}, cô đã gặp qua Scylla và các Siren, gã Cyclops Polyphemus, Nữ Phù Thủy Circe... bằng cách này hay cách khác, mỗi người trong số họ đều để lại những dấu ấn khó phai mờ trong ta; còn chưa kể đến vợ và con trai ta, dù họ đang ở đâu. Ta nghĩ... ta cần phải đi..." }, { Cue = "/VO/Melinoe_4220", UsePlayerSource = true, Emote = "PortraitEmoteSurprise", Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Đi đâu? Odysseus, ngài không thể rời đi lúc này được, bọn ta rất cần ngài! Chắc chắn phải có cách nào đó để giúp ngài." }, { Cue = "/VO/Odysseus_0432", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Drinking_Sip", Text = "Eugh. Có lẽ là có, nhưng ta... không muốn trở thành gánh nặng của cô. Cô đã gánh vác quá nhiều rồi." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_4221", Text = "Kể cho ta nghe đi." }, }, { PreLineWait = 0.41, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Drinking_Sip", { Cue = "/VO/Odysseus_0433", Text = "Có lẽ... để dịp khác..." }, }, }, }, OdysseusLooseEndsQuest02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusLooseEndsQuest01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0563", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Thứ lỗi cho ta, ta đã... bắt đầu để lộ nỗi khổ của mình trước người khác. Những khoảnh khắc yếu đuối đến ngày một nhiều hơn những gì ta muốn thừa nhận. Ta đã suy ngẫm về những việc cần làm... một kế hoạch." }, { Cue = "/VO/Melinoe_5101", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Là gì vậy? Ngài đang nhắc đến Scylla, Polyphemus, Circe... ta gặp họ cũng khá thường xuyên, ngài có muốn ta có thể thay ngài nói chuyện với họ không?" }, { Cue = "/VO/Odysseus_0564", PreLineAnim = "Odysseus_Explaining", Text = "{#Emph}Oh{#Prev}, ta không định nhờ cô làm việc đó. Tuy nhiên, mối liên kết giữa cô và Đốt Xương Ngón Tay của ta đủ mạnh, nên có lẽ ta sẽ tự mình nói chuyện với họ. Chỉ cần mang theo Kỷ Vật của ta đến đó, ta sẽ lo phần còn lại." }, { Cue = "/VO/Melinoe_5102", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Phản chiếu linh hồn ư... có lẽ ta có thể duy trì nó trong một khoảng thời gian ngắn. Ý ngài là muốn đối mặt với những người quen cũ sao?" }, { Cue = "/VO/Odysseus_0565", PreLineAnim = "Odysseus_Greet", Text = "Tạm thời chỉ có vậy thôi, Nữ Thần. Nếu việc giúp đỡ ta theo cách này không ảnh hưởng đến mục tiêu của cô." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5103", Text = "Tất nhiên là không rồi. Chúng ta sẽ theo việc này đến cùng." }, }, }, }, OdysseusLooseEndsQuestComplete01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "ScyllaAboutOdysseusQuest01", "PolyphemusAboutOdysseusQuest01", "CirceAboutOdysseusQuest01" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0581", PreLineAnim = "Odysseus_Pensive_Start", Text = "Ta rất biết ơn vì cô đã cho phép ta gặp lại vài người quen cũ, Nữ Thần. Thật ra thì cũng chẳng thay đổi gì nhiều, nhưng... ta cảm thấy như mình đã giải quyết được vài vấn đề. Còn về những gì xảy ra sắp tới... có lẽ ta sẽ vắng mặt một thời gian..." }, { Cue = "/VO/Melinoe_5104", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Mọi việc ở đây đã ổn thỏa... ngài cứ thong thả bao lâu tùy thích, và ngài sẽ luôn được chào đón khi trở lại. Ngài có thể nói cho ta biết rằng ngài sẽ đi đâu không?" }, { Cue = "/VO/Odysseus_0582", PreLineWait = 0.35, Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Odysseus_Default_01", WaitTime = 4.1 }, Text = "...Tìm lại gia đình của ta... vợ và con trai ta. Ta đã từng làm điều đó trước đây. Chỉ mong lần này sẽ không mất nhiều thời gian đến vậy." }, { Cue = "/VO/Melinoe_5105", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Sẽ không đâu. Chắc hẳn bây giờ ngài đã vạch ra mọi lối đi ở Địa Ngục rồi! Nhưng sau đó ngài sẽ làm gì?" }, { Cue = "/VO/Odysseus_0583", PreLineAnim = "Odysseus_Pensive_End", Text = "Ta sẽ tính đến chuyện đó trên đường đi. Còn hiện tại, ta đã ủy quyền cho một vài Shade của chúng ta trông coi mọi việc, và cũng đã chào tạm biệt riêng với Nữ Chúa. Chúc cô bình an trong thời gian ta vắng mặt." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5106", Text = "Chúc thượng lộ bình an, Odysseus..." }, }, }, }, OdysseusAboutReturn01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusLooseEndsQuestComplete01" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Melinoe_5108", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Bọn ta đã rất nhớ ngài, và rất vui vì ngài đã trở lại! Chuyến đi của ngài thế nào? Ngài có tìm thấy gia đình mình không?" }, { Cue = "/VO/Odysseus_0585", PreLineAnim = "Odysseus_KnifeToss", Text = "Ta đã tìm được họ, Nữ Thần. Ta đã lần theo vài manh mối ở Elysium, gặp lại những người đồng đội cũ, và bọn ta đã tìm đến nơi. Penelope và Telemachus... ừm, họ nhận ra ta ngay lập tức." }, { Cue = "/VO/Melinoe_5109", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", Text = "Họ vẫn ổn chứ? Xin lỗi, ta không nên soi mói chi tiết về chuyện này, chỉ là... đây là câu chuyện mới nhất của ngài." }, { Cue = "/VO/Odysseus_0586", PreLineWait = 0.35, Text = "{#Emph}Ahh{#Prev}, có gì để kể nhỉ? Chuyện đó... ừm, cũng khá an ủi. Ta nghĩ khoảng thời gian bọn ta xa nhau đã phần nào hàn gắn những vết thương trước đó. Họ dặn ta sau này hãy quay lại thăm họ lần nữa." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5110", Text = "Ta nghĩ ngài nên làm vậy. Ta rất vui vì mọi chuyện diễn ra tốt đẹp." }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0587", Text = "Mọi chuyện lẽ ra có thể tồi tệ hơn nhiều." }, }, }, }, OdysseusAboutAssistance01 = { PlayOnce = true, UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "ScyllaAboutOdysseusQuest01", "PolyphemusAboutOdysseusQuest01", "CirceAboutOdysseusQuest01" }, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0543", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Cho phép ta nói vài điều được không, Nữ Thần? Suốt cuộc đời trần thế, ta chưa từng dựa dẫm vào ai. Nhưng ta luôn nhận được sự giúp đỡ... từ những chiến binh vĩ đại, đến những thủy thủ, và thậm chí là những vị thần! Tuy nhiên... việc nhờ vả người khác vì những vấn đề cá nhân là điều vô cùng khó." }, { Cue = "/VO/Melinoe_5081", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta hiểu rõ cảm giác đó. Cảm giác yếu đuối... bất lực trong việc mình tự làm điều gì đó. Chúng ta luôn muốn tự lực và không muốn tạo gánh nặng cho đồng đội." }, { Cue = "/VO/Odysseus_0544", PreLineAnim = "Odysseus_Drinking_Toast", -- heart unlock PostLineThreadedFunctionName = "RelationshipAdvancedPresentation", PostLineThreadedFunctionArgs = { Delay = 2.0 }, Text = "Đúng vậy, chúng ta biết đó không phải sự yếu đuối, nhưng... đôi khi vẫn phải kiềm nén bản năng của chính mình, nhỉ? Dù vậy, điều ta thực sự muốn nói là lời cảm ơn. Vì sự giúp đỡ của cô dành cho ta. Cô vốn không cần phải làm vậy vì ta." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5082", Text = "Không sao cả. Vì chúng ta đã cùng đồng hành suốt một quãng đường dài rồi." }, }, }, }, OdysseusAboutRain01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "NextBiomeStateName" }, IsAny = { "Rain" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0155", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "{#Emph}Ah{#Prev}, đôi khi ta nhớ lại cảm giác khi trời mưa. Rồi ta nhớ đến những năm tháng lênh đênh trên biển, ướt đẫm đến tận xương tủy, và tạ ơn những vị thần vì những cái chết đó không tìm đến ta như trước đây." }, { Cue = "/VO/Melinoe_2179", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cơn mưa mang lại sự sống cũng như cái chết... đặc biệt là vào đêm nay. Nhưng Linh Hồn Lạc Lối ngoài kia dường như cũng không thích nó như ngài." }, { Cue = "/VO/Odysseus_0156", Text = "Phải, nó khiến chúng yếu đi phải không? Để chúng trở nên mỏng manh và dễ tiêu diệt hơn. Cô đi bắt vài tên cho ta được không?" }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2180", Text = "Ta nghĩ là được." }, }, }, }, OdysseusAboutKeepsake01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift01" }, }, { PathTrue = { "CurrentRun", "TraitCache", "BossPreDamageKeepsake" }, }, { Path = { "GameState", "TraitUses", "BossPreDamageKeepsake" }, Comparison = ">=", Value = 4, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0400", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Những Đốt Xương Ngón Tay cũ đó có giúp ích gì cho cô không, Nữ Thần? Trông thì có vẻ đã mục nát, nhưng... chúng đã nhiều lần mang lại may mắn cho ta, trong những ván cược đỏ đen và những lần sinh tử." }, { Cue = "/VO/Melinoe_4189", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Odysseus, nếu chúng đã theo ngài suốt cả cuộc đời, vậy sao giờ ngài lại tặng nó cho ta? Và quả thực là chúng vẫn còn rất hữu dụng." }, { Cue = "/VO/Odysseus_0401", PreLineAnim = "Odysseus_Explaining", Text = "Thôi nào, không gì khiến ta vui hơn khi thấy cô thành công cả. Nếu một kỷ vật nhỏ bé từ quá khứ của ta có thể giúp ích cho cô, thì xin hãy nhận lấy. Với lại, ta cũng được tặng lại chai Rượu Mật còn gì!" }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Melinoe_4190", Text = "Đây không phải một cuộc trao đổi." }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0402", Text = "Cứ giữ lại mấy Đốt Xương chết tiệt đó đi." }, }, }, }, OdysseusAboutMailbox01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "AnyMailboxReady" }, }, { -- PathTrue = { "GameState", "ScreensViewed", "MailboxScreen" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "CharonGrantsMailbox01" }, Max = 8 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0145", PreLineAnim = "Odysseus_KnifeToss", Text = "Cô đã thấy đơn hàng mới của Charon chưa, Nữ Thần? Chuyến hàng bên bờ sông, tất cả đều thuộc về cô. Và bọn ta đang giám sát những con sông này, để đảm bảo rằng đây không phải lần cuối." }, { Cue = "/VO/Melinoe_2335", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài Charon mạo hiểm giúp đỡ nỗ lực của ta một cách trực tiếp như vậy, liệu có cách nào để chúng ta có thể đền đáp cho ngài ấy không?" }, { Cue = "/VO/Odysseus_0146", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Có, bằng những đồng Vàng mà chúng ta thu thập gần đây. Ngài ấy thực sự muốn nung chảy hết tất cả những đồng Vàng của Chronos mà chúng ta có thể tìm được." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2336", Text = "Ồ, phải." }, }, }, }, OdysseusAboutMailbox02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "AnyMailboxReady" }, }, { Path = { "GameState", "LifetimeResourcesSpent", "CharonPoints" }, Comparison = ">=", Value = 20, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0427", PreLineAnim = "Odysseus_KnifeToss", Text = "Chắc hẳn cô là khách hàng thân thiết nhất của Charon. Ta đoán ngài ấy rất tận hưởng chuyến đi đến Địa Ngục. Ít nhất thì bây giờ chủ yếu là vận chuyển hàng hóa, chứ không phải đưa tiễn những linh hồn người mới chết, hoang mang và sợ hãi..." }, { Cue = "/VO/Melinoe_4217", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Khi thời khắc cuối cùng đến, ngài có đón nhận cái chết của mình không, Odysseus? Có vẻ như ngài đã níu giữ sự sống bằng tất cả sức lực của mình." }, { Cue = "/VO/Odysseus_0428", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ồ, lúc đó ta cũng đã quá già rồi. Ta cũng không quan tâm đến hoàn cảnh, mà cũng chẳng ai quan tâm cả! Nhưng ta vẫn trân trọng cơ hội cuối cùng được gặp Người Lái Đò đáng sợ, và đi xuống Địa Ngục theo cách truyền thống." }, { Cue = "/VO/Melinoe_4218", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ngài từng nói về việc đi xuống Địa Ngục và trở về khi còn sống. Vậy khi đó Charon không đưa ngài đi sao?" }, EndVoiceLines = { { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0429", Text = "Tất nhiên là không rồi! Có lẽ đó sẽ là câu chuyện để kể vào dịp khác." }, }, }, }, OdysseusAboutGarden01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeGarden" }, }, { Path = { "GameState", "LifetimeResourcesGained", "PlantFNightshade" }, Comparison = ">=", Value = 3, }, { PathTrue = { "GameState", "LifetimeResourcesGained", "PlantGCattail" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0265", PreLineAnim = "Odysseus_Explaining", Text = "Khu vườn nhỏ của cô đã giúp nơi này vui tươi hơn một chút đấy, Nữ Thần! Trong những lúc thử thách, niềm vui đơn giản là những thứ đầu tiên bị lãng quên. Đúng lúc chúng ta cần chúng nhất." }, { Cue = "/VO/Melinoe_3309", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Cảm ơn ngài và ta rất vui khi nghe điều đó, Chiến Lược Gia Kỳ Cựu. Ta cũng không ngờ rằng một mảnh vườn hoa nhỏ lại có thể để lại ấn tượng sâu sắc đối với người như ngài đấy." }, { Cue = "/VO/Odysseus_0266", Text = "Thôi nào, tất cả những gì ta có thể làm là để ý đến từng chi tiết. Chiến thắng sẽ đến với những người có tinh thần sẵn sàng chiến đấu. Ý ta là, nhìn chúng ta mà xem, tinh thần là tất cả những gì chúng ta có; và bây giờ có cả hoa nữa!" }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Melinoe_3310", Text = "Ngài có thể giúp ta chăm sóc chúng được không?" }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0267", Text = "Tất nhiên là được." }, }, }, }, OdysseusAboutCrossroads01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "WorldUpgradesRevealed" }, HasAny = { "WorldUpgradeBathHouse", "WorldUpgradeGarden", "WorldUpgradeTaverna" }, }, { Path = { "GameState", "WorldUpgradesAdded" }, HasNone = { "WorldUpgradeBathHouse", "WorldUpgradeGarden", "WorldUpgradeTaverna" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0434", PreLineAnim = "Odysseus_KnifeToss", Text = "Nữ Thần, bọn ta có một số dự án để mở rộng Crossroads, và chúng cần phước lành từ cô khi thời điểm thích hợp. Tất cả tùy vào quyết định của cô, không hề vội vàng gì cả." }, { Cue = "/VO/Melinoe_4222", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Cuối cùng thì nước ở suối nước nóng và bến câu cá cũng cần được thanh lọc, chưa kể đến khuôn viên quán rượu nữa. Ngài có thứ tự ưu tiên nào giữa những việc đó không?" }, { Cue = "/VO/Odysseus_0435", PreLineWait = 0.3, PreLineAnim = "Odysseus_Explaining", Text = "Cô biết đấy, các Shade thích tụ tập ở quán rượu, nên ta nghĩ hãy bắt đầu từ đó... hoặc bất cứ nơi nào thuận tiện với cô!" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4223", Text = "Ta sẽ xem xét việc này." }, }, }, }, OdysseusAboutCosmetics01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "DoraGift01", "OdysseusGift01", "DoraListless03" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusAboutCosmetics02" }, }, { Path = { "GameState", "CosmeticsPurchasedCountCache", "Total" }, Comparison = "<=", Value = 7, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0183", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Dự án cải tạo mà chúng ta từng nói đến? Ta vẫn luôn nghĩ về nó, Crossroads này sẽ trở nên thịnh vượng và tràn đầy thú vui thế gian...!" }, { Cue = "/VO/Melinoe_3800", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta cũng nghĩ về chuyện đó, và đã thực hiện một số bước khởi đầu. Việc đảm bảo sự bình yên của những Shade ở nơi này là mục tiêu quan trọng của chúng ta." }, { Cue = "/VO/Odysseus_0184", PreLineAnim = "Odysseus_Explaining", Text = "Nhưng hiện tại có vẻ như chúng ta có vấn đề cấp bách hơn. Ý cô là tạm dừng chiến đấu với Chronos để cải tạo nơi này ư?" }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Melinoe_3801", Text = "Không hẳn là vậy. Ta có người để ủy thác công việc này." }, }, { PreLineWait = 0.4, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0185", Text = "Thú vị đấy..." }, }, }, }, OdysseusAboutCosmetics02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "DoraGrantsCosmeticsShop01" }, }, { Path = { "GameState", "CosmeticsPurchasedCountCache", "Total" }, Comparison = ">=", Value = 10, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0186", PreLineAnim = "Odysseus_Explaining", Text = "Cô đã chiêu mộ Shade trông có vẻ gian xảo đó để giao phó công việc? Một khởi đầu gian nan nhưng vẫn là khởi đầu, ta... rất vui khi thấy nó đang tiến hành!" }, { Cue = "/VO/Melinoe_3802", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta đoán ngài sẽ nói vậy mà! Nó cho Dora một công việc thực sự để làm. Và điều này cũng có nghĩa là dự án không chỉ còn là giấc mơ xa vời." }, EndVoiceLines = { { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0187", Text = "Kế hoạch hay đấy, Nữ Thần." }, }, }, }, OdysseusAboutTable01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "Cosmetic_OdysseusTable01a" }, }, --[[ { SumPrevRuns = 9, Path = { "WorldUpgradesAdded", "Cosmetic_OdysseusTable01a" }, CountPathTrue = true, Comparison = ">=", Value = 1, }, ]]-- }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0424", PreLineAnim = "Odysseus_Explaining", Text = "Chiếc bàn mới này thật tuyệt vời! Có đủ chỗ cho bản đồ cùng tất cả khu vực mà chúng ta đang theo dõi, lại còn có ngăn đựng báo cáo bên hông, và các đường viên trang trí thanh lịch nữa...!" }, { Cue = "/VO/Melinoe_4215", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Odysseus, ta không ngờ ngài lại hào hứng với một món đồ nội thất như vậy. Nhất là một trong những món đồ cần thiết cho việc lên kế hoạch của chúng ta ở đây." }, { Cue = "/VO/Odysseus_0425", PreLineAnim = "Odysseus_KnifeToss", Text = "Chà, những lời đó hơi tổn thương ta đấy... nhất là khi nó được thốt ra từ một người cũng tận tâm với công việc chẳng kém gì ta. Hoặc có lẽ cô chưa từng có một chiếc bàn tử tế cho riêng mình?" }, EndVoiceLines = { { PreLineWait = 0.39, UsePlayerSource = true, { Cue = "/VO/Melinoe_4216", Text = "Ngài nhắc ta mới nhận ra, ta không hay dùng bàn cho lắm." }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0426", Text = "Thiệt thòi cho cô thôi!" }, }, }, }, OdysseusAboutMusicPlayer01 = { PlayOnce = true, UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeMusicPlayer" }, }, { Path = { "AudioState", "AmbientTrackName" }, IsNone = { "/Music/ArtemisSong_MC", "/Music/IrisEndThemeCrossroads_MC" }, }, { PathTrue = { "AudioState", "AmbientTrackName" }, }, { Path = { "GameState", "UseRecord", "MusicPlayerScreen" }, Comparison = ">=", Value = 3, }, { SumPrevRuns = 4, Path = { "UseRecord", "MusicPlayerScreen" }, CountPathTrue = true, Comparison = ">=", Value = 1, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusTavernaEvents, Min = 2 }, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0525", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Từ khi có Nhà Sáng Tác Nhạc ở đây, không khí náo nhiệt hơn hẳn! Quả là một quyết định chiêu mộ sáng suốt, Nữ Thần. Ta luôn yêu thích những bản anh hùng ca máu lửa, nhưng có thể nhiều thể loại thì cũng tốt." }, { Cue = "/VO/Melinoe_4224", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta đoán là Nhà Sáng Tác Nhạc sẽ sớm thu hút sự chú ý của mọi người. Ngài có muốn yêu cầu bài nào không?" }, { Cue = "/VO/Odysseus_0526", PreLineAnim = "Odysseus_Drinking_Sip", Text = "Ồ, cô không muốn biết đâu; ta rất sẵn lòng nhường cho cô phần việc đó!" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4225", Text = "Và tự gánh chịu hậu quả, phải không?" }, }, }, }, OdysseusAboutGameStats01 = { PlayOnce = true, UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeGameStats" }, }, { Path = { "GameState", "UseRecord", "GameStatsScreen" }, Comparison = ">=", Value = 3, }, { SumPrevRuns = 4, Path = { "UseRecord", "GameStatsScreen" }, CountPathTrue = true, Comparison = ">=", Value = 1, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusTavernaEvents, Min = 2 }, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0527", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Nếu cô chưa biết thì Người Ghi Chép của chúng ta từng làm việc trong Phòng Hành Chính an ninh ở Thánh Điện của cha cô, Nữ Thần. Chắc hẳn đó là một trải nghiệm đáng nhớ!" }, { Cue = "/VO/Melinoe_4226", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Cha của ta chắc hẳn rất coi trọng những người có đầu óc phân tích sắc bén. Có lẽ khi mọi chuyện kết thúc, Người Ghi Chép có thể quay về làm việc trong Thánh Điện của cha ta." }, { Cue = "/VO/Odysseus_0528", PreLineAnim = "Odysseus_Drinking_Sip", Text = "Ta từng đưa ra đề xuất đó, nhưng không hiểu vì sao Người Ghi Chép lại co rúm người và từ chối nói chuyện với ta nữa! Khá kỳ lạ nhỉ?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4227", Text = "Chắc hẳn đã trải qua khá nhiều chuyện." }, }, }, }, OdysseusAboutRunProgress01 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 50, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = "<=", Value = 60, }, { Path = { "GameState", "WorldUpgradesAdded" }, HasAll = { "WorldUpgradeBathHouse", "WorldUpgradeGarden", "WorldUpgradeTaverna" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0414", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ít nhất thì cô đã miệt mài làm việc suốt năm mươi đêm rồi, Nữ Thần. Liệu đã đến lúc cô cho bản thân nghỉ ngơi một chút chưa? Cô đang tự ép bản thân quá đấy." }, { Cue = "/VO/Melinoe_4202", UsePlayerSource = true, PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta cũng đã có những khoảng nghỉ ngơi dọc đường rồi, cảm ơn ngài đã quan tâm. Suối nước nóng, khu vườn, quán rượu... và cả những cuộc trò chuyện này! Không phải lúc nào ta cũng ép bản thân đến mức kiệt sức đâu." }, { Cue = "/VO/Odysseus_0415", PreLineAnim = "Odysseus_KnifeToss", Text = "Đúng vậy, chúng ta không bao giờ ép bản thân mãi được. Nhưng cô đã tiến bộ hơn rất nhiều, và nếu cô không để ý thì ta vẫn đang theo dõi đấy!" }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4203", Text = "Tốt. Và ta sẽ còn tiến xa hơn nữa." }, }, }, }, OdysseusAboutRunProgress02 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 100, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = "<=", Value = 115, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0416", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Đây là đêm thứ một trăm của cô rồi, Nữ Thần... ít nhất cũng đã qua vài tháng theo cách tính của người phàm. Cảm giác như đã lâu rồi, nhưng cũng như mới thoáng chốc. Đúng là trò xảo quyệt của Chronos!" }, { Cue = "/VO/Melinoe_4204", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Có vẻ ngài nói đúng, giờ ta mới để ý. Ta cảm nhận thời gian trôi qua một cách kỳ lạ, nhất là từ khi mọi chuyện bắt đầu. Khi còn sống, ngài có cảm giác tương tự không?" }, { Cue = "/VO/Odysseus_0417", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_KnifeToss", Text = "Có, cô không hiểu cảm giác đó đâu. Đối với những vị thần các cô thì chắc hẳn còn kỳ lạ hơn... thời gian có thể trôi qua nhanh như cái chớp mắt! Điều tốt nhất mà bọn ta có thể làm là tận dụng nó một cách hiệu quả." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2222", Text = "Aye..." }, }, }, }, OdysseusAboutRunProgress03 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "CurrentRun", "Cleared" } }, { Path = { "GameState", "ClearedRunsCache" }, Comparison = ">=", Value = 50, }, { Path = { "GameState", "ClearedRunsCache" }, Comparison = "<=", Value = 70, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0710", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Nữ Thần, theo ghi nhận của bọn ta, cô đã giành chiến thắng hơn năm mươi đêm rồi. Ta chỉ muốn dành chút thời gian để tôn vinh thành tựu này của cô." }, { Cue = "/VO/Melinoe_5447", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Đã lâu như vậy rồi ư? Thời gian vận hành theo những cách thật khó hiểu." }, EndVoiceLines = { { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0711", Text = "Đúng vậy, cho đến hiện tại thì chúng ta đều đồng ý với điều đó." }, }, }, }, OdysseusAboutRunProgress04 = { PlayOnce = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 500, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = "<=", Value = 515, }, NamedRequirements = { "ReachedEpilogue" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0712", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Đã năm trăm đêm trôi qua, kể từ khi tất cả chuyện này bắt đầu rồi, Nữ Thần. Ừm, cũng gần giống như vậy. Nếu tính theo thời gian của người phàm... thì đó quả là một khoảng thời gian dài. Có lẽ ngay cả đối với người cũng vậy." }, { Cue = "/VO/Melinoe_5448", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta đã ngừng để ý đến thời gian, và cảm nhận về thời gian cũng đã lâu rồi. Theo ngài thì... khi nào chúng ta nên kết thúc tất cả chuyện này?" }, EndVoiceLines = { { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0713", Text = "Bất cứ khi nào cô muốn, chẳng cần vội vàng làm gì." }, }, }, }, -- other events -- alt below OdysseusBackstory02 = { PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, PreBlockSpecialInteract = true, -- taverna SkipContextArt = true, TeleportToId = 589482, GiftableOffSource = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, --[[ { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "OdysseusAboutMood01" }, Min = 2 }, }, ]]-- }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0178", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Hãy đến tham gia cùng bọn ta, Nữ Thần! Ta vừa kể cho những Shade nghe về lần đầu tiên ta đến Địa Ngục. Khi ta vẫn còn sống và còn thở, nếu cô tin điều đó! Và rồi ta đã thoát ra." }, { Cue = "/VO/Melinoe_2197", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Thôi nào, Odysseus, không có lối thoát nào để rời khỏi đây khi cha ta còn cai trị cả. Những Shade này thực sự tin vào câu chuyện đó ư?" }, { Cue = "/VO/Odysseus_0179", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Ồ, ta nghiêm túc đấy! Những câu chuyện của ta không... hoàn toàn phóng đại như cô nghĩ đâu. Nhưng ngay lúc này, cổng địa ngục đang được mở phải không...?" }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Melinoe_2198", Text = "We're going to seal them shut." }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0222", Text = "Aye that." }, }, }, }, OdysseusBackstory02_B = { PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, PreBlockSpecialInteract = true, -- taverna SkipContextArt = true, TeleportToId = 589482, GiftableOffSource = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusBackstory02" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, --[[ { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "OdysseusAboutMood01" }, Min = 2 }, }, ]]-- }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0178", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Hãy đến tham gia cùng bọn ta, Nữ Thần! Ta vừa kể cho những Shade nghe về lần đầu tiên ta đến Địa Ngục. Khi ta vẫn còn sống và còn thở, nếu cô tin điều đó! Và rồi ta đã thoát ra." }, { Cue = "/VO/Melinoe_2197_B", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Thôi nào, Odysseus. Những Shade này thực sự tin vào câu chuyện đó ư?" }, { Cue = "/VO/Odysseus_0179", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Ồ, ta nghiêm túc đấy! Những câu chuyện của ta không... hoàn toàn phóng đại như cô nghĩ đâu. Nhưng ngay lúc này, cổng địa ngục đang được mở phải không...?" }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Melinoe_5243", Text = "Sẽ không lâu nữa đâu!" }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0222", Text = "Aye that." }, }, }, }, OdysseusAboutMood01 = { PlayOnce = true, UseableOffSource = true, InitialGiftableOffSource = true, PreBlockSpecialInteract = true, -- taverna SkipContextArt = true, TeleportToId = 589482, GiftableOffSource = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { Path = { "GameState", "ExorcismSuccesses" }, Comparison = ">=", Value = 6, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0180", Emote = "PortraitEmoteSurprise", PreLineAnim = "Odysseus_Drinking_Toast", -- Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ô! Chào Nữ Thần, ta, ừm... không nhận ra sự hiện diện của cô. Ta muốn đổ lỗi cho tuổi tác, nhưng trong trường hợp này, ta không có lý do hợp lý nào để biện minh cả." }, { Cue = "/VO/Melinoe_2199", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta không có ý khiến ngài giật mình, Od. Tình hình ở đây thế nào rồi, mọi chuyện vẫn ổn chứ?" }, { Cue = "/VO/Odysseus_0181", PreLineAnim = "Odysseus_Drinking_Sip", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Tình hình và mọi thứ ở đây đều ổn. Hàng ngũ của chúng ta trở nên đông đảo hơn với những Shade bị lay động bởi câu chuyện về cô Công Chúa Địa Ngục đã trở lại, cùng với ý chí muốn báo thù." }, { Cue = "/VO/Melinoe_2200", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Không gì có thể khích lệ quần chúng tốt bằng một lời thề báo thù nhỉ. Thế còn ngài thì sao?" }, { Cue = "/VO/Odysseus_0182", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Mọi thứ đều suôn sẻ với ta; đặc biệt là sau một khoảng thời gian nghỉ ngơi ngắn ở đây. Bảo trọng nhé, Nữ Thần." }, EndVoiceLines = { { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Melinoe_2201", Text = "Ngài cũng vậy." }, }, }, }, -- flashback OdysseusHideAndSeek01 = { PlayOnce = true, SkipNextTextLinesCheck = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, InitialGiftableOffSource = true, GiftableOffSource = true, GameStateRequirements = { { Path = { "CurrentHubRoom", "Name" }, IsAny = { "Flashback_Hub_Main" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusHideAndSeek, PreEventFunctionName = "GenericPresentation", PreEventFunctionArgs = { KillTaggedThread = "HecateHideAndSeekHint", }, { Cue = "/VO/Melinoe_2118", UsePlayerSource = true, Portrait = "Portrait_Mel_Child_02", PreLineAnim = "Melinoe_Young_Brooding_Start", PreLineAnimTarget = "Hero", PostLineAnim = "Melinoe_Young_Brooding_End", PostLineAnimTarget = "Hero", Speaker = "PlayerUnit_Flashback", Text = "Odysseus, ngài có thấy Hecate đâu không?" }, { Cue = "/VO/Odysseus_0200", PreLineAnim = "Odysseus_Greet", PostLineThreadedFunctionName = "HecateHideAndSeekHint", Text = "{#Emph}Mm {#Prev}, hiện tại thì không, nữ thần bé nhỏ à. Nhưng ta nghĩ chiếc mũ nhọn đó sẽ khiến bà ấy bị lộ đấy!" }, EndVoiceLines = { { PreLineWait = 0.3, UsePlayerSource = true, { Cue = "/VO/Melinoe_2119", Text = "Ta sẽ đi tìm chiếc mũ đấy! Cảm ơn ngài!" }, }, { PreLineWait = 0.45, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0201", Text = "Bà ấy chắc chắn sẽ ở đâu đó quanh đây thôi, nữ thần bé nhỏ à!" }, }, }, }, -- resource donations OdysseusGrantsMetaCardPoints01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "MetaUpgradeCardLayout" }, }, { Path = { "GameState", "LifetimeResourcesGained", "MetaCardPointsCommon" }, Comparison = "<=", Value = 100, }, { Path = { "GameState", "LifetimeResourcesSpent", "MetaCardPointsCommon" }, Comparison = ">=", Value = 1, }, { PathTrue = { "GameState", "UseRecord", "MetaCardPointsCommonDrop" } }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0359", PreLineAnim = "Odysseus_Explaining", Text = "Tuy không có gì nhiều, nhưng các Shade của chúng ta ở ngoài kia... họ đã gom nhặt được một vài vật liệu mà bọn ta nghĩ sẽ có ích cho cô. Đây! Ít nhất thì đó là những gì bọn ta có thể làm." }, { Cue = "/VO/Melinoe_4093", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Tro của Người Chết... Odysseus, những thứ này... Các Shade đang dâng hiến chính hài cốt của mình ư? Tất cả vì đại cục của chúng ta." }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "MetaCardPointsCommon", ResourceAmount = 15, SoundName = "/SFX/AshRewardDrop" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0360", Text = "Và ai lại trách họ chứ?" }, }, }, }, OdysseusGrantsOreFSilver01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeToolsShop" }, }, { PathFalse = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeToolsShop" }, }, { Path = { "GameState", "LifetimeResourcesGained", "OreFSilver" }, Comparison = "<=", Value = 30, }, { Path = { "GameState", "LifetimeResourcesSpent", "OreFSilver" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "PickaxeSuccesses" }, Comparison = ">=", Value = 2, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0361", PreLineAnim = "Odysseus_Explaining", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Odysseus_Default_01", WaitTime = 7.0 }, Text = "Khi còn sống, đồng là kim loại quý nhất mà ta biết, bởi nó có thể cướp đi mạng sống của một người đàn ông cực kỳ nhanh chóng. Nhưng giờ ta đã hiểu lý do vì sao cô trân trọng bạc đến vậy! Đến đây, nhận thứ này đi! Các Shade và ta nài nỉ cô đấy." }, { Cue = "/VO/Melinoe_4094", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Thật ư? Bạc tinh khiết như thế này không dễ tìm được, kể cả khi có đủ công cụ. Ta sẽ sử dụng chúng một cách hợp lý, vì lợi ích của tất cả chúng ta." }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "OreFSilver", ResourceAmount = 5, SoundName = "/SFX/KeyPickup" }, EndVoiceLines = { { PreLineWait = 0.3, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0362", Text = "Bọn ta chỉ mong có thế." }, }, }, }, -- alt below OdysseusGrantsPlantFMoly01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "GhostAdmin" }, }, { Path = { "GameState", "LifetimeResourcesGained", "PlantFMoly" }, Comparison = "<=", Value = 8, }, { Path = { "GameState", "LifetimeResourcesSpent", "PlantFMoly" }, Comparison = ">=", Value = 1, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusGrantsPlantFMoly01_B" } }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0363", Text = "Nữ Thần, cô đang tìm nguyên liệu cho chiếc vạc đó, phải không? Đây, có lẽ cô sẽ cần đến những thứ này. Theo ta được biết thì đây không phải những bông hoa tầm thường." }, { Cue = "/VO/Melinoe_4095", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Moly tươi...! Rễ của chúng đen tuyền một cách hoàn hảo. Có một vài câu thần chú trong danh sách của ta cần những đến chúng. Sao ngài lại biết?" }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "PlantFMoly", ResourceAmount = 2, SoundName = "/Leftovers/World Sounds/Caravan Interior/MushroomLogInteract" }, EndVoiceLines = { { PreLineWait = 0.3, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0364", Text = "{#Emph}Oh{#Prev}, ta có cách của riêng mình." }, }, }, }, OdysseusGrantsPlantFMoly01_B = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "GhostAdmin" }, }, { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeToolsShop" }, }, { Path = { "GameState", "LifetimeResourcesGained", "PlantFMoly" }, Comparison = "<=", Value = 0, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusGrantsPlantFMoly01" } }, { PathFalse = { "CurrentRun", "Cleared" } }, { PathFalse = { "GameState", "BiomeVisits", "H" } }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0363", Text = "Nữ Thần, cô đang tìm nguyên liệu cho chiếc vạc đó, phải không? Đây, có lẽ cô sẽ cần đến những thứ này. Theo ta được biết thì đây không phải những bông hoa tầm thường." }, { Cue = "/VO/Melinoe_4095", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Moly tươi...! Rễ của chúng đen tuyền một cách hoàn hảo. Có một vài câu thần chú trong danh sách của ta cần những đến chúng. Sao ngài lại biết?" }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "PlantFMoly", ResourceAmount = 2, SoundName = "/Leftovers/World Sounds/Caravan Interior/MushroomLogInteract" }, EndVoiceLines = { { PreLineWait = 0.3, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0364", Text = "{#Emph}Oh{#Prev}, ta có cách của riêng mình." }, }, }, }, -- alt below OdysseusGrantsMemPointsCommon01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "MaxMetaUpgradeCostCache" }, Comparison = ">=", Value = 16, }, { Path = { "GameState", "LifetimeResourcesGained", "MemPointsCommon" }, Comparison = "<=", Value = 350, }, { Path = { "GameState", "LifetimeResourcesSpent", "MemPointsCommon" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "ExorcismSuccesses" }, Comparison = ">=", Value = 2, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusGrantsMemPointsCommon01_B" } }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0365", PreLineAnim = "Odysseus_Explaining", Text = "Nữ Thần, với tốc độ hiện tại, chẳng bao lâu nữa cô sẽ vượt qua cả Nữ Chúa đấy! Ít nhất thì các Shade của chúng ta đã nói vậy. Đây! Biểu tượng cho niềm tin của họ." }, { Cue = "/VO/Melinoe_4096", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Họ sẵn sàng hi sinh một Mảnh Linh Hồn của chính mình... để giúp ta hoàn thành sứ mệnh mà ta không thể tự làm một mình." }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "MemPointsCommon", ResourceAmount = 30, SoundName = "/SFX/Player Sounds/PsycheRewardPickup" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0366", Text = "May mắn thay, cô không cần phải làm việc đó một mình!" }, }, }, }, OdysseusGrantsMemPointsCommon01_B = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "MaxMetaUpgradeCostCache" }, Comparison = "<=", Value = 12, }, { Path = { "GameState", "MetaUpgradeCostCache" }, Comparison = ">=", Value = 10, }, { Path = { "GameState", "LifetimeResourcesGained", "MemPointsCommon" }, Comparison = "<=", Value = 60, }, { Path = { "GameState", "LifetimeResourcesSpent", "MemPointsCommon" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "ExorcismSuccesses" }, Comparison = ">=", Value = 2, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusGrantsMemPointsCommon01" } }, { PathFalse = { "CurrentRun", "Cleared" } }, { PathFalse = { "GameState", "BiomeVisits", "H" } }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0365", PreLineAnim = "Odysseus_Explaining", Text = "Nữ Thần, với tốc độ hiện tại, chẳng bao lâu nữa cô sẽ vượt qua cả Nữ Chúa đấy! Ít nhất thì các Shade của chúng ta đã nói vậy. Đây! Biểu tượng cho niềm tin của họ." }, { Cue = "/VO/Melinoe_4096", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Họ sẵn sàng hi sinh một Mảnh Linh Hồn của chính mình... để giúp ta hoàn thành sứ mệnh mà ta không thể tự làm một mình." }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "MemPointsCommon", ResourceAmount = 30, SoundName = "/SFX/Player Sounds/PsycheRewardPickup" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0366", Text = "May mắn thay, cô không cần phải làm việc đó một mình!" }, }, }, }, OdysseusGrantsMetaCurrency01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "MarketScreen" }, }, { PathFalse = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeMarket" } }, { Path = { "GameState", "LifetimeResourcesGained", "MetaCurrency" }, Comparison = ">=", Value = 50, }, { Path = { "GameState", "LifetimeResourcesGained", "MetaCurrency" }, Comparison = "<=", Value = 1000, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0367", PreLineAnim = "Odysseus_Explaining", Text = "Đây là món quà dành cho cô, Nữ Thần. Ở nơi ta sống, tặng hài cốt không được xem là điều hay ho, nhưng... cô lại tôn trọng người chết hơn hầu hết người phàm." }, { Cue = "/VO/Melinoe_4097", UsePlayerSource = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Nhiều Xương đến mức ta không thể đếm xuể, cũng chẳng thể tự mình tìm được. Vậy thì ta sẽ giao chúng cho Thương Nhân kia trông coi!" }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "MetaCurrency", ResourceAmount = 80, SoundName = "/SFX/BoneRewardPickup" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0368", Text = "Và đừng quên đưa ra thỏa thuận công bằng." }, }, }, }, -- alt below OdysseusGrantsMetaFabric01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeMorosUnlock" }, }, { SumPrevRuns = 3, Path = { "WorldUpgradesAdded", "WorldUpgradeMorosUnlock" }, CountPathTrue = true, Comparison = "<=", Value = 0, }, { Path = { "GameState", "LifetimeResourcesGained", "MetaFabric" }, Comparison = ">=", Value = 10, }, { Path = { "GameState", "LifetimeResourcesSpent", "MetaFabric" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "LifetimeResourcesGained", "MetaFabric" }, Comparison = "<=", Value = 50, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusGrantsMetaFabric01_B" } }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0369", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ta vốn không phải kiểu người hay bận tâm quá nhiều đến lời tiên tri của Ba Nữ Thần Định Mệnh, nhưng... ta có một Dải Lụa mà bọn ta cho rằng là của họ tạo ra. Và giờ nó thuộc về cô." }, { Cue = "/VO/Melinoe_4098", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Dải Lụa Định Mệnh! Ít có cách nào tốt hơn để đảm bảo chiếc vạc truyền dẫn ma thuật một cách chuẩn xác. Nếu ngài hào phóng, ta có thể tận dụng nó." }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "MetaFabric", ResourceAmount = 2, SoundName = "/Leftovers/Menu Sounds/TalismanRockUpLEGENDARY" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Explaining", { Cue = "/VO/Odysseus_0370", Text = "Ồ, ta không hào phóng đâu, chỉ là... ghét chấp nhận thất bại thôi." }, }, }, }, OdysseusGrantsMetaFabric01_B = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesRevealed", "WorldUpgradeMorosUnlock" }, }, { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeMorosUnlock" }, }, { Path = { "GameState", "LifetimeResourcesGained", "MetaFabric" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "LifetimeResourcesSpent", "MetaFabric" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "LifetimeResourcesGained", "MetaFabric" }, Comparison = "<=", Value = 8, }, { Path = { "GameState", "LifetimeResourcesGained", "MetaFabric" }, Comparison = "<=", Value = 8, }, { PathFalse = { "GameState", "TextLinesRecord", "OdysseusGrantsMetaFabric01" } }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0369", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Ta vốn không phải kiểu người hay bận tâm quá nhiều đến lời tiên tri của Ba Nữ Thần Định Mệnh, nhưng... ta có một Dải Lụa mà bọn ta cho rằng là của họ tạo ra. Và giờ nó thuộc về cô." }, { Cue = "/VO/Melinoe_4098", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Dải Lụa Định Mệnh! Ít có cách nào tốt hơn để đảm bảo chiếc vạc truyền dẫn ma thuật một cách chuẩn xác. Nếu ngài hào phóng, ta có thể tận dụng nó." }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "MetaFabric", ResourceAmount = 2, SoundName = "/Leftovers/Menu Sounds/TalismanRockUpLEGENDARY" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Explaining", { Cue = "/VO/Odysseus_0370", Text = "Ồ, ta không hào phóng đâu, chỉ là... ghét chấp nhận thất bại thôi." }, }, }, }, OdysseusGrantsCardUpgradePoints01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "MetaUpgradeCardUpgradeLayout" }, }, { Path = { "GameState", "LifetimeResourcesGained", "CardUpgradePoints" }, Comparison = ">=", Value = 3, }, { Path = { "GameState", "LifetimeResourcesSpent", "CardUpgradePoints" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "LifetimeResourcesGained", "CardUpgradePoints" }, Comparison = "<=", Value = 50, }, { Path = { "GameState", "GamePhase", }, Comparison = "~=", Value = 5, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0371", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Đêm nay đẹp thật, nhỉ? Một đêm mà cô chỉ có thể thoáng thấy Mặt Trăng lướt qua trên bầu trời. Người thậm chí còn để lại một món quà nhỏ cho cô nữa." }, { Cue = "/VO/Melinoe_4099", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Bụi Trăng. Ngài không thể tưởng tượng ta cần những thứ này đến mức nào cho những buổi ngồi thiền của ta đâu...! Mặc dù ngài lúc nào cũng biết hết rồi nhỉ?" }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "CardUpgradePoints", ResourceAmount = 3, SoundName = "/Leftovers/Menu Sounds/TalismanRockUpLEGENDARY" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Salute", { Cue = "/VO/Odysseus_0372", Text = "Ít nhất cũng một lần." }, }, }, }, OdysseusGrantsSeedMystery01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeGardenT3" }, }, { PathFalse = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeGardenT3" }, }, { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift03" }, }, { Path = { "GameState", "HarvestSuccesses" }, Comparison = ">=", Value = 15, }, { Path = { "GameState", "LifetimeResourcesGained", "SeedMystery" }, Comparison = "<=", Value = 50, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0373", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Đây là món quà dành cho cô, Nữ Thần. Phòng khi khu vườn nhỏ của chúng ta cần thêm chút cây xanh... hoặc khi cô còn do dự không biết nên trồng thứ gì tiếp theo." }, { Cue = "/VO/Melinoe_4100", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Cảm ơn ngài, Odysseus! Nhưng đây là thứ gì vậy? Ta đang cố gắng sắp xếp gọn gàng những hạt giống mà mình tìm được." }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "SeedMystery", ResourceAmount = 3, SoundName = "/SFX/TrashPickup" }, -- EndFunctionArgs = { ResourceName = "SeedMystery", ResourceAmount = 3, SoundName = "/SFX/TrashPickup", AllowOnAddVoiceLines = true }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0374", Text = "Hạt Giống Bí Ẩn! Một bất ngờ nho nhỏ." }, }, }, }, OdysseusGrantsFamiliarPoints01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "FamiliarsUnlocked" }, CountOf = { "FrogFamiliar", "RavenFamiliar", "CatFamiliar", "HoundFamiliar", "PolecatFamiliar", }, Comparison = ">=", Value = 3, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeFamiliarUpgradeSystem" }, }, { Path = { "GameState", "LifetimeResourcesGained", "FamiliarPoints" }, Comparison = "<=", Value = 30, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0375", PreLineAnim = "Odysseus_Explaining", Text = "Các Shade của chúng ta mang về những lời tán dương dành cho các Linh Thú của cô. Không phải sinh vật nào cũng thân thiện với linh hồn người chết, vậy nên... đây là một món quà nhỏ để thể hiện lòng biết ơn!" }, { Cue = "/VO/Melinoe_4101", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Bánh Thuần Thú, được nấu một cách hoàn hảo. Chắc hẳn Nữ Chúa đã đích thân làm mẻ này... bà ấy có biết ngài tặng ta thứ này không?" }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "FamiliarPoints", ResourceAmount = 2, SoundName = "/SFX/CrappyRewardPickup" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0376", Text = "Cứ nhận món quà chết tiệt này đi, Nữ Thần, các Shade cứ khăng khăng như vậy!" }, }, }, }, OdysseusGrantsGiftPoints01 = { PlayOnce = true, StatusAnimation = "StatusIconWantsToTalkImportant_Odysseus", UseableOffSource = true, GiftableOffSource = true, GameStateRequirements = { { Path = { "GameState", "LifetimeResourcesSpent", "GiftPoints" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "LifetimeResourcesGained", "GiftPoints" }, Comparison = "<=", Value = 30, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusResourceEvents, Min = 3 }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0629", PreLineAnim = "Odysseus_Salute", Text = "Ta có một món quà muốn tặng cho cô đây, Nữ Thần! Thay mặt toàn thể các Shade đang cư ngụ nơi đây, bọn ta rất vinh hạnh khi phụng sự cô, và sẵn sàng làm bất cứ điều gì cần thiết để giành chiến thắng! Xin hãy chia sẻ chiến lợi phẩm này cho bất kỳ ai mà cô thấy xứng đáng." }, { Cue = "/VO/Melinoe_5230", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Một chút Rượu Mật sao, cảm ơn ngài! Ta cảm thấy mình như một vị thần trên đỉnh Olympus vậy. Ngài có phiền không nếu ta tặng thứ này cho người khác?" }, EndFunctionName = "ResourceGiftedInEventPresentation", EndFunctionArgs = { ResourceName = "GiftPoints", ResourceAmount = 2, SoundName = "/SFX/GiftAmbrosiaBottlePickup" }, EndVoiceLines = { { PreLineWait = 0.35, -- RequiredMinElapsedTime = 2, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_KnifeToss", { Cue = "/VO/Odysseus_0630", Text = "Ta và các Shade chỉ thấy phiền khi cô cất chúng vào kho thôi." }, }, }, }, -- update OdysseusResourceEvents when adding more -- partner conversations OdysseusWithHecate01 = { Partner = "NPC_Hecate_01", PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, InitialGiftableOffSource = true, GiftableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 12, }, }, PlayOnce = true, UseText = "UseListenNPC", StatusAnimation = false, BlockDistanceTriggers = true, IgnoreSourceEndTextLinesThreadedFunctionName = true, UseableOffSource = true, TeleportToId = 566613, AngleTowardTargetId = 566620, -- TeleportOffsetX = 200, -- TeleportOffsetY = -300, InteractDistance = 450, { Cue = "/VO/Hecate_0201", Portrait = "Portrait_Hec_Default_01", Speaker = "NPC_Hecate_01", PreLineWait = 0.35, Text = "Nhà Chiến Lược Gia mang đến những tin tức xấu nhưng với thái độ lạc quan. Cũng tốt thôi. Và có tin tức gì về những gã đàn ông trên đảo, nếu có ai đó còn sống?" }, { Cue = "/VO/Odysseus_0042", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Explaining", Text = "Theo những người bạn tâm giao của ta, họ đã tuyên thệ với Chronos, ta e là vậy. Người phàm... họ thường mưu cầu những gì họ không có. Một Thời Kỳ Hoàng Kim khác, trong trường hợp này là vậy. Những điều được hứa hẹn về nó." }, { Cue = "/VO/Hecate_0202", Portrait = "Portrait_Hec_Default_01", Speaker = "NPC_Hecate_01", PreLineWait = 0.35, Text = "Đó là một lời nói dối, thôi thúc sự phản bội của chúng, chứ không phải một lời hứa. Sau đó chúng sẽ bị tiêu diệt... bởi cơn thịnh nộ của những vị thần." }, { Cue = "/VO/Odysseus_0043", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Và sau đó, những linh hồn thống khổ của họ sẽ truy lùng chúng ta với sự thù hận được tái sinh. Ta đã chứng kiến vô số cuộc chiến như vậy trước đây, thưa Nữ Chúa. Và những vị thần cũng vậy. Làm thế nào để chúng ta có thể ngăn chặn điều này?" }, { Cue = "/VO/Hecate_0203", Portrait = "Portrait_Hec_Default_01", Speaker = "NPC_Hecate_01", PreLineWait = 0.35, Text = "{#Emph}Chúng ta {#Prev}không thể. Còn cô thì sao, {#Emph}Melinoë{#Prev}? Chắc chắn cô có thể làm được, phải không?" }, EndVoiceLines = { PreLineWait = 0.35, UsePlayerSource = true, { Cue = "/VO/Melinoe_0459", Text = "Ta có thể và sẽ làm được." }, }, }, OdysseusWithHecate02 = { Partner = "NPC_Hecate_01", PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, InitialGiftableOffSource = true, GiftableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusWithHecate01" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAll = { "HecateGift01", "OdysseusGift01" } }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "OdysseusWithHecate01" }, Min = 4 }, }, }, PlayOnce = true, UseText = "UseListenNPC", BlockDistanceTriggers = true, IgnoreSourceEndTextLinesThreadedFunctionName = true, UseableOffSource = true, TeleportToId = 566613, AngleTowardTargetId = 566620, -- TeleportOffsetX = 200, -- TeleportOffsetY = -300, InteractDistance = 450, { Cue = "/VO/Odysseus_0149", PreLineAnim = "Odysseus_Greet", PreLineWait = 0.35, Text = "...Và, ừm, báo cáo lần này của ta đến đây là hết, thưa Nữ Chúa. Nếu bà có bất kỳ câu hỏi nào, hãy gọi ta bất cứ lúc nào." }, { Cue = "/VO/Hecate_0204", Portrait = "Portrait_Hec_Default_01", Speaker = "NPC_Hecate_01", PreLineWait = 0.35, Text = "Không cần thiết đâu, Odysseus. Tuy nhiên, còn một vấn đề nữa mà ta muốn thảo luận với ngài, và rất quan trọng..." }, EndVoiceLines = { PreLineWait = 0.44, UsePlayerSource = true, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Salute", { Cue = "/VO/Odysseus_0150", Text = "Đã rõ, thưa Nữ Chúa." }, }, }, OdysseusWithHecate03 = { Partner = "NPC_Hecate_01", PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, InitialGiftableOffSource = true, GiftableOffSource = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, PlayOnce = true, UseText = "UseListenNPC", -- StatusAnimation = false, BlockDistanceTriggers = true, IgnoreSourceEndTextLinesThreadedFunctionName = true, UseableOffSource = true, TeleportToId = 566613, AngleTowardTargetId = 566620, -- TeleportOffsetX = 200, -- TeleportOffsetY = -300, InteractDistance = 450, { Cue = "/VO/Odysseus_0708", PreLineWait = 0.35, PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "...Tóm lại thì, công cuộc tái thiết vẫn đang tiến hành, dù không được nhanh, và những thiệt hại ở trần gian đã được kiểm soát. Những vết thương rồi sẽ lành lại. Chúng ta sẽ xem xét những vết sẹo còn lưu lại." }, { Cue = "/VO/Hecate_0881", Portrait = "Portrait_Hec_Default_01", Speaker = "NPC_Hecate_01", PreLineWait = 0.35, Text = "Sister Selene cũng đưa ra nhận định tương tự. Vậy thì... ngươi sẽ làm gì tiếp theo, Odysseus? Ngươi có thể lên trần gian trong khi Địa Ngục đang trong quá trình khôi phục." }, { Cue = "/VO/Odysseus_0709", PreLineAnim = "Odysseus_KnifeToss", Text = "Ồ, có thể ta sẽ đi lang thang một thời gian, thưa Nữ Chúa, nhưng... nếu người cho phép, ta muốn tiếp tục lập căn cứ hoạt động ở Crossroads một thời gian. Có vẻ chúng ta vẫn đang hợp tác khá ổn, phải không?" }, EndVoiceLines = { PreLineWait = 0.38, ObjectType = "NPC_Hecate_01", PreLineAnim = "HecateHubGreet", { Cue = "/VO/Hecate_0882", Text = "Ta khá chắc là vậy." }, }, }, OdysseusWithNemesis01 = { Partner = "NPC_Nemesis_01", GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 12, }, }, PlayOnce = true, UseText = "UseListenNPC", BlockDistanceTriggers = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, IgnoreSourceEndTextLinesThreadedFunctionName = true, UseableOffSource = true, InitialGiftableOffSource = true, GiftableOffSource = true, TeleportToId = 566621, TeleportOffsetX = 0, TeleportOffsetY = 0, -- AngleTowardTargetId = 557113, InteractDistance = 450, { Cue = "/VO/Odysseus_0164", PreLineAnim = "Odysseus_Explaining", Text = "...Phải, ta đang nói đến những khả năng có thể xảy ra. Sự cảnh giác vĩnh hằng, gần như là điều không thể. Kẻ thù luôn tận dụng những sơ suất đó. Ta đã bao giờ kể cô nghe về trò lừa con ngựa gỗ chưa?" }, { Cue = "/VO/Nemesis_0135", Portrait = "Portrait_Nemesis_Default_01", Speaker = "NPC_Nemesis_01", Text = "Trò lừa con ngựa gỗ, phải. Chắc hẳn danh tiếng của Chiến Lược Gia Kỳ Cựu của ngài phụ thuộc nhiều vào câu chuyện này lắm nhỉ?" }, { Cue = "/VO/Odysseus_0165", Text = "{#Emph}Ah{#Prev}, nhưng những câu chuyện huy hoàng cần được lưu truyền! Tuy nhiên, nếu cô muốn, ta có nhiều câu chuyện khác về sự mưu mẹo và lòng dũng cảm. Chẳng hạn như tiến vào Hang của Cyclop!" }, EndVoiceLines = { { PreLineWait = 0.4, ObjectType = "NPC_Nemesis_01", { Cue = "/VO/Nemesis_0136", Text = "Hang của Cyclop thì không..." }, }, }, }, MorosWithOdysseus01 = { Partner = "NPC_Moros_01", PlayOnce = true, UseableOffSource = true, StatusAnimation = false, AngleTowardTargetId = 585621, PostBlockSpecialInteract = true, }, MorosWithOdysseus02 = { Partner = "NPC_Moros_01", PlayOnce = true, UseableOffSource = true, StatusAnimation = false, AngleTowardTargetId = 585621, PostBlockSpecialInteract = true, }, MorosWithOdysseus03 = { Partner = "NPC_Moros_01", PlayOnce = true, UseableOffSource = true, StatusAnimation = false, AngleTowardTargetId = 585621, PostBlockSpecialInteract = true, }, IcarusWithOdysseus01 = { Partner = "NPC_Icarus_01", PartnerVariant = "IcarusHome", PlayOnce = true, StatusAnimation = false, AngleTowardTargetId = 800098, UseableOffSource = true, CopyDataFromPartner = true, }, IcarusWithOdysseus02 = { Partner = "NPC_Icarus_01", PartnerVariant = "IcarusHome", PlayOnce = true, -- StatusAnimation = false, AngleTowardTargetId = 800098, UseableOffSource = true, CopyDataFromPartner = true, }, -- Repeatable OdysseusChat01 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0004", PreLineAnim = "Odysseus_KnifeToss", Text = "Hãy cẩn trọng khi ra ngoài nhé!" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat02 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0005", PreLineAnim = "Odysseus_KnifeToss", Text = "Sẵn sàng để thử lại lần nữa chưa, Nữ Thần?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat03 = { UseableOffSource = true, GameStateRequirements = { -- borderline { -- PathFalse = { "GameState", "ReachedTrueEnding" }, } }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0006", Text = "Nếu ta là Chronos, ta sẽ run sợ khi gặp cô." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat04 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0007", PreLineAnim = "Odysseus_KnifeToss", Text = "Mọi thứ ở đây vẫn được kiểm soát tốt." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat05 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0008", PreLineAnim = "Odysseus_Explaining", Text = "Can đảm lên, Nữ Thần. Và đừng khoan nhượng với kẻ thù của cô, được không?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat06 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0009", Text = "Ánh trăng dẫn lối cô, như những phù thủy vẫn thường nói." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat07 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0010", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Chúng ta đang vướng vào một mớ hỗn độn, phải không?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat08 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0011", Text = "Ta biết mọi thứ có vẻ rất khó khăn, nhưng hãy cố gắng lên. Chúng ta sẽ vượt qua tình cảnh này." }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusChat09 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0012", Text = "Có cơ hội nào lấy được đầu của Chronos không?" }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusChat10 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0013", PreLineAnim = "Odysseus_KnifeToss", Text = "Hãy tấn công vào điểm yếu của chúng thay ta được không?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat11 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0014", Text = "Mọi chuyện ở đây vẫn ổn. Bọn ta sẽ chờ đợi cô quay về." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat12 = { UseableOffSource = true, GameStateRequirements = { OrRequirements = { { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { { PathTrue = { "GameState", "SpeechRecord", "/VO/Chronos_1058" }, }, }, }, }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0015", PreLineAnim = "Odysseus_KnifeToss", Text = "Tiêu diệt Chronos và tất cả bọn chúng, phải không?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat13 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0016", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Xin thứ lỗi, thưa Nữ Thần, ta phải gửi bức thư này lên trần gian ngay lập tức." }, }, OdysseusChat14 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "AnyMailboxReady" }, }, }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0017", PreLineAnim = "Odysseus_KnifeToss", Text = "Lô hàng mới được giao đến khi cô ra ngoài." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat15 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0018", Text = "Đừng để ý đến ta, thưa Nữ Thần, ta chỉ đang bận soạn thảo một số kế hoạch mới nhất của chúng ta thôi." }, }, OdysseusChat16 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Odysseus_0019", Text = "Chúng ta có nhiều người cùng tư tưởng đang ở trần gian và dưới địa ngục vẫn trung thành với cha của cô." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusChat17 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0020", PreLineAnim = "Odysseus_KnifeToss", Text = "Hãy ra ngoài và tiêu diệt những kẻ phản bội khốn khổ đó được không, Nữ Thần?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat18 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0021", Text = "Lại một lần nữa, sự hiện diện của cô ở đây là niềm vinh hạnh đối với ta, thưa Nữ Thần." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat19 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0022", Text = "Giá mà chúng ta có thể nói chuyện với nhau lâu hơn chút nữa, đang tiếc thật." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat20 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0023", PreLineAnim = "Odysseus_Explaining", Text = "Nữ Thần Ác Mộng đứng trước mặt ta, trông thật lộng lẫy..." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat21 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0024", Text = "Nếu cô cần biết điều gì đó, cô biết tìm ta ở đâu rồi đấy, Nữ Thần." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat22 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0025", PreLineAnim = "Odysseus_KnifeToss", Text = "Hãy trở về an toàn, hoặc ta sẽ mạo hiểm lao ra ngoài đó và kéo cô về." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat23 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, { Cue = "/VO/Odysseus_0026", PreLineAnim = "Odysseus_KnifeToss", Text = "Cô chắc chắn sẽ báo thù được, thưa Nữ Thần. Ta cam đoan điều đó." }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusChat24 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0027", Text = "Chúng ta sẽ vượt qua chuyện này, hãy cứ yên tâm, Nữ Thần." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat25 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0320", Text = "Cầu mong ma thuật và bạc của cô sẽ hữu dụng đối với cô, Nữ Thần." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat26 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0321", Text = "Không ai biết được Nữ Thần Định Mệnh đã sắp đặt điều gì cho chúng ta, phải không?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat27 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0322", Text = "Được đồng hành cùng cô luôn là niềm vinh hạnh đối với ta, thưa Nữ Thần." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat28 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0323", Text = "Trong những thời điểm khó khăn như thế này, mối quan hệ của chúng ta sẽ càng bền chặt." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat29 = { UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "HecateGift06", "OdysseusGift06" } }, { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0324", Text = "Phù thủy vĩ đại rất tự hào về cô, cô biết điều đó chứ?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat30 = { UseableOffSource = true, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0325", Text = "Các Shade của bọn ta sẽ cập nhật liên tục về sự tiến bộ của cô." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat31 = { PlayFirst = true, UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusGift04" } }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0326", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Không gì tệ hơn khi bị chia cắt khỏi gia đình, phải không...?" }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusChat32 = { UseableOffSource = true, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusGift04" } }, }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", { Cue = "/VO/Odysseus_0327", PreLineAnim = "Odysseus_KnifeToss", Text = "Bọn ta sẽ hỗ trợ cô trên mọi cuộc hành trình, dù nó có kéo dài bao lâu đi nữa, thưa Nữ Thần." }, OnQueuedFunctionName = "CheckDistanceTriggerThread", OnQueuedFunctionArgs = PresetEventArgs.OdysseusGreeting, }, OdysseusTavernaChat01 = { UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusTavernaEvents, Min = 3 }, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0477", -- PreLineAnim = "Odysseus_Drinking_LemonSpin_Full", -- PreLineAnim = "Odysseus_Drinking_LemonSpin_Start", -- PostLineAnim = "Odysseus_Drinking_LemonSpin_End", -- PreLineAnim = "Odysseus_Drinking_Sip", -- PreLineAnim = "Odysseus_Drinking_Toast", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Ngay cả ta đôi lúc cũng cần nghỉ ngơi, và cô cũng nên như vậy!" }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusTavernaChat02 = { UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusTavernaEvents, Min = 3 }, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0478", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Ta chỉ ghé qua uống vài ngụm với các Shade thôi." }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusTavernaChat03 = { UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusTavernaEvents, Min = 3 }, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0479", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Hóa ra ta cũng có thể nhận được báo cáo ngay tại quán rượu đấy, Nữ Thần!" }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusTavernaChat04 = { UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusTavernaEvents, Min = 3 }, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0480", PreLineAnim = "Odysseus_Drinking_Sip", Text = "Họ trông náo nhiệt nhỉ, mặc dù chỉ toàn người chết." }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusTavernaChat05 = { UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusTavernaEvents, Min = 3 }, }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0481", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Mọi người thấy chưa? Ta đã bảo rồi mà, cô ấy sẽ xuất hiện!" }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, OdysseusTavernaChat06 = { PlayFirst = true, UseableOffSource = true, -- taverna SkipContextArt = true, TeleportToId = 589482, InitialGiftableOffSource = true, GiftableOffSource = true, PreBlockSpecialInteract = true, PostBlockSpecialInteract = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = GameData.OdysseusTavernaEvents, Min = 3 }, }, { PathTrue = { "CurrentRun", "Cleared" } }, }, OnQueuedFunctionName = "OdysseusAtTaverna", { Cue = "/VO/Odysseus_0482", PreLineAnim = "Odysseus_Drinking_Toast", Text = "Nữ Thần, nán lại thêm chút nữa đi! Cô xứng đáng được nghỉ ngơi mà." }, EndGlobalVoiceLines = "MiscEndVoiceLines_Odysseus", }, }, GiftTextLineSets = { OdysseusGift01 = { PlayOnce = true, OnGiftTrack = true, UnfilledIcon = "EmptyHeartWithGiftIcon", FilledIcon = "FilledHeartWithGiftIcon", Cost = { GiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "NPC_Odysseus_01" }, }, }, { Cue = "/VO/Melinoe_0471", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Chào Odysseus, ta có thứ này muốn tặng ngài. Cảm ơn ngài vì đã luôn để mắt đến mọi thứ!" }, { Cue = "/VO/Odysseus_0087", PreLineAnim = "Odysseus_Explaining", Text = "Nữ Thần, chỉ cần sự hiện diện của cô đối với ta là đủ rồi. Tuy nhiên, nếu cô đã muốn tặng quà rồi, thì có lẽ cô sẽ nhận lại món quà nhỏ của ta nhỉ?" }, }, OdysseusGift02 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { -- PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift01" }, }, }, { Cue = "/VO/Odysseus_0088", Text = "Ta vô cùng biết ơn cô, Nữ Thần, và mong chúng ta sẽ cùng uống chai rượu này ở quán rượu ngay khi có thể." }, { Cue = "/VO/Melinoe_0473", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Không cần vội, chỉ cần ngài muốn khi có cơ hội là được!" }, }, OdysseusGift03 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { -- PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift02" }, }, }, { Cue = "/VO/Odysseus_0089", Text = "Chà, nếu cô đã có lòng như thế thì làm sao ta có thể tự chối được? Có vẻ như cô đã tìm ra điểm yếu của ta rồi đấy, Nữ Thần." }, { Cue = "/VO/Melinoe_0474", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta khá chắc Chiến Lược Gia Vĩ Đại không hề có điểm yếu! Mặc dù bây giờ ngài ấy lại có thêm một chai Rượu Mật." }, }, OdysseusGift04 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { -- PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift03" }, }, }, { Cue = "/VO/Odysseus_0090", Text = "Lẽ ra ta mới là người tôn vinh cô, thưa Nữ Thần. Ý ta là để dành nó cho thời điểm chúng ta chiến thắng, những nó sẽ hữu ích trong một số trường hợp khẩn cấp, cô hiểu ý ta là gì rồi đấy." }, { Cue = "/VO/Melinoe_0475", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta hiểu mà. Và ngài đã tôn vinh ta bằng tình bạn của ngài, Odysseus! Cũng như với sự hiểu biết của ngài về cách gây ra cái chết nhanh chóng!" }, }, OdysseusGift05 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { -- PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift04" }, }, }, { Cue = "/VO/Odysseus_0091", PreLineAnim = "Odysseus_KnifeToss", Text = "Ồ, ta hiểu mục đích của cô là gì rồi, Nữ Thần. Nếu cô cứ tiếp tục đánh vào điểm yếu của ta bằng thứ này, có thể ta sẽ học được cách biến chúng thành điểm mạnh. Kế hoạch hay đấy!" }, { Cue = "/VO/Melinoe_0476", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Ta biết nói gì bây giờ? Ta học được từ người giỏi nhất mà. Chúc ngài này càng khỏe mạnh hơn." }, }, OdysseusGift06 = { PlayOnce = true, OnGiftTrack = true, Cost = { GiftPoints = 1, }, GameStateRequirements = { { -- PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift05" }, }, }, { Cue = "/VO/Odysseus_0653", PreLineAnim = "Odysseus_Pensive_Start", Text = "Cô biết đấy, trong những năm tháng ta còn sống, ta đã chu du khắp nơi, gặp gỡ những con người vĩ đại, và cả những vị thần vĩ đại hơn nữa, nhưng... ta chưa từng tưởng tượng rằng ta sẽ kết thúc hành trình ở đây, để rồi nhận được một món quà tuyệt vời từ cô." }, { Cue = "/VO/Melinoe_0477", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Người ta thường nói cuộc sống luôn thay đổi một cách kỳ lạ, và rõ ràng thì cái chết cũng vậy, Odysseus. Dù Nữ Thần Định Mệnh có sắp đặt điều gì đi nữa, ta mong ngài sẽ luôn đồng hành cùng ta, cho ta những lời khuyên hữu ích." }, { Cue = "/VO/Odysseus_0654", PreLineAnim = "Odysseus_Pensive_End", Text = "À thì ta thích phiêu lưu, nhưng... ta nghĩ cô cũng sẽ biết nên tìm ta ở đâu. Cảm ơn vì chai Rượu Mật nhé... nó chắc hẳn sẽ giúp ta vượt qua mọi khó khăn sắp tới." }, }, OdysseusGift07 = { PlayOnce = true, OnGiftTrack = true, LockedHintId = "Codex_OdysseusUnlockHint01", UnfilledIcon = "EmptyHeartWithAmbrosiaIcon", FilledIcon = "FilledHeartWithAmbrosiaIcon", Cost = { SuperGiftPoints = 1, }, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusAboutAssistance01", "OdysseusGift06", "OdysseusBathHouse02", "OdysseusTaverna01", "OdysseusFishing01" }, }, }, { Cue = "/VO/Melinoe_5083", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdleWeaponless", PostLineAnimTarget = "Hero", Text = "Này, nếu ngài không bận thì sao ghé qua quán rượu một chút nhỉ? Chai Ambrosia này cần phải được thưởng thức ngay!" }, { Cue = "/VO/Odysseus_0545", PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Quả thực là vậy, nhưng... đáng tiếc, hiện tại ta có quá nhiều báo cáo cần xác minh. Rất nhiều việc đang dồn lại. Vậy nên... để dịp khác nhé?" }, { Cue = "/VO/Melinoe_5084", UsePlayerSource = true, Portrait = "Portrait_Mel_Pleased_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Hay là ngài giữ lại chai rượu đó nhé? Dịp khác có thể là bất cứ lúc nào ngài muốn. Các Shade đưa tin của ngài cũng có thể đi cùng!" }, { Cue = "/VO/Odysseus_0546", PreLineAnim = "Odysseus_Explaining", Emote = "PortraitEmoteCheerful", Text = "{#Emph}Hah{#Prev}, đó cũng là ý hay! Có khi ta sẽ chẳng còn nghe tin tức gì tự họ nữa. Nhưng đổi lại thì ta có thể đến quán rượu thường xuyên hơn..." }, EndVoiceLines = { { PreLineWait = 0.36, UsePlayerSource = true, { Cue = "/VO/Melinoe_5085", Text = "Nghe có vẻ như ngài đã có kế hoạch cho việc đó...!" }, }, }, }, OdysseusGift08 = { PlayOnce = true, OnGiftTrack = true, UnfilledIcon = "EmptyHeartWithAmbrosiaIcon", FilledIcon = "FilledHeartWithAmbrosiaIcon", Cost = { SuperGiftPoints = 1, }, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusTaverna02", "OdysseusGift07" }, }, }, { Cue = "/VO/Melinoe_5092", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ngài nghĩ sao về một buổi tối hiệu quả ở quán rượu, vừa trò chuyện vừa gây dựng lòng trung thành với mọi người? Ta rất thích những cuộc trò chuyện của chúng ta ở đó." }, { Cue = "/VO/Odysseus_0553", PreLineAnim = "Odysseus_Pensive_Start", Text = "Ta cũng muốn đi ngay, nhưng ta đang chờ tin tức từ người cung cấp thông tin, nên phải ở lại đây. Với lại... ta cũng định hạn chế đến quán rượu hơn." }, { Cue = "/VO/Melinoe_5093", UsePlayerSource = true, Portrait = "Portrait_Mel_Vulnerable_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Oh! {#Prev}Ta xin lỗi. Ta không có ý định lôi kéo ngài sao nhãng công việc." }, { Cue = "/VO/Odysseus_0554", PreLineAnim = "Odysseus_Pensive_End", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Không sao cả, chỉ là... ta biết những kẻ ngày đêm ăn chơi trác táng, buông thả bản thân. Ta thề sẽ không bao giờ nuông chiều bản thân như vậy. Luôn luôn giữ lại một vài ham muốn chưa được thỏa mãn." }, { Cue = "/VO/Melinoe_5094", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta hiểu cảm giác đó. Khao khát một thứ gì đó chính là động lực thúc đẩy chúng ta tiến về phía trước. Vậy thì... sao chúng ta không tặng chai rượu này cho người đưa tin của ngài nhỉ? Như một phần thưởng vì đã hoàn thành nhiệm vụ." }, { Cue = "/VO/Odysseus_0555", PreLineWait = 0.25, PreLineAnim = "Odysseus_KnifeToss", Text = "Một chiến lược tuyệt vời. Ta sẽ nói với họ rằng đây là món quà do đích thân Công Chúa Địa Ngục ban tặng!" }, EndVoiceLines = { { PreLineWait = 0.36, UsePlayerSource = true, { Cue = "/VO/Melinoe_5095", Text = "Ta muốn cả hai ta sẽ là người tặng." }, }, { PreLineWait = 0.35, ObjectType = "NPC_Odysseus_01", { Cue = "/VO/Odysseus_0556", Text = "{#Emph}Hah. {#Prev}Được thôi." }, }, }, }, -- taverna OdysseusTaverna01 = { PlayOnce = true, OnGiftTrack = true, UseableOffSource = true, UnfilledIcon = "EmptyHeartWithAmbrosiaIcon", FilledIcon = "FilledHeartWithAmbrosiaIcon", HintId = "Codex_TavernaGiftHint", LockedHintId = "Codex_LockedActivityHint", Cost = { SuperGiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift05" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { PathFalse = { "CurrentRun", "TimePassageOccurred" }, HintId = "Codex_TimePassesGiftUsed", }, }, { Cue = "/VO/Melinoe_3342", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Nếu lúc này cô không quá bận tâm với những báo cáo, sao chúng ta không dùng chai Rượu Thần này vào đúng mục đích nhỉ?" }, { Cue = "/VO/Odysseus_0280", PostLineRemoveContextArt = true, PreLineAnim = "Odysseus_Explaining", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", Text = "Ta đang bận rộn với những báo cáo, thưa Nữ Thần! Nhưng phải tập trung vào chuyện quan trọng nhất... hẹn gặp cô ở quán rượu." }, { Cue = "/VO/Odysseus_0281", SkipContextArt = true, PreLineFunctionName = "TavernaStartPresentation", PreLineFunctionArgs = { IsOdysseus = true }, PreLineWait = 0.35, PreLineAnim = "Odysseus_Drinking_Toast", Text = "...Người phàm bọn ta có thứ thường được gọi là rượu, một loại đồ uống cay nồng được làm từ nho lên men. Đôi khi bọn ta ví vị ngon của nó như Rượu Thần, nhưng... thực tế thì không thể sánh bằng." }, { Cue = "/VO/Melinoe_3343", UsePlayerSource = true, SkipContextArt = true, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ngài đã kể về những khó khăn từ những ngày tháng ngài còn sống, nhưng vẫn luôn khao khát cảm giác đó... ngài nhớ những khoảng thời gian đó, phải không?" }, { Cue = "/VO/Odysseus_0282", SkipContextArt = true, PreLineAnim = "Odysseus_Drinking_Sip", Portrait = "Portrait_Odysseus_Thoughtful_01", PreLineWait = 0.35, Text = "...Những khoảnh khắc và tình huống tương tự thế vẫn xảy ra. Giờ ta đã biết nhiều hơn so với lúc đó, và... đôi khi ta nhớ cảm giác đó... dù rất ít. Hoặc tình đồng đội khi cùng nhau vượt biển với những thủy thủ đoàn của ta." }, { Cue = "/VO/Melinoe_3344", UsePlayerSource = true, SkipContextArt = true, Portrait = "Portrait_Mel_Empathetic_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Nhưng vẫn có vài thành viên trong đoàn của ngài vẫn ở đây, phải không? Ngay cả linh hồn con chó cũ của ngài cũng ở đây. Sao ngài vẫn có thể nhận ra họ khi họ ở quanh đây?" }, { Cue = "/VO/Odysseus_0283", SkipContextArt = true, PreLineAnim = "Odysseus_Drinking_Sip", Portrait = "Portrait_Odysseus_Thoughtful_01", Text = "Bọn ta đều là Shade, thưa Nữ Thần, và... không ai hoàn hảo như ta cả. Ngoài ra, cô vẫn có thể nhớ về quá khứ với những người bạn hiện tại cô biết! Còn nhớ khi cô còn nhỏ, cô từng chơi trốn tìm với nữ phù thủy vĩ đại của chúng ta không?" }, { Cue = "/VO/Melinoe_3345", UsePlayerSource = true, SkipContextArt = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta chưa từng nghĩ rằng bọn ta đang chơi đùa; bà ấy đang dạy ta cách săn những con mồi một cách bất ngờ. Nhưng, ta hiểu ý ngài muốn nói." }, { Cue = "/VO/Odysseus_0284", SkipContextArt = true, PreLineAnim = "Odysseus_Drinking_Toast", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineThreadedFunctionName = "LoungeRevelryPresentation", PostLineFunctionArgs = { Sound2 = "/EmptyCue", Sound3 = "/EmptyCue", TimeTicks = 20 }, Text = "Chà, ý của ta ban đầu chỉ là thứ Rượu Thần này thực sự rất đặc biệt! Hãy đảm bảo nó sẽ không bị lãng phí nhé." }, { Cue = "/VO/Odysseus_0285", PreLineAnim = "Odysseus_Greet", PreLineFunctionName = "TavernaEndPresentation", PreLineFunctionArgs = { IsOdysseus = true }, PreLineWait = 0.35, PostLineThreadedFunctionName = "InCombatTextEvent", PostLineThreadedFunctionArgs = GameData.PostTavernaArgs, Text = "Ta không ngờ mình lại cần nó đến vậy. Đúng như những gì họ đồn đoán, Rượu Thần sẽ ngon hơn khi có bạn cùng thưởng thức." }, EndVoiceLines = { { PreLineWait = 0.36, UsePlayerSource = true, { Cue = "/VO/Melinoe_0769", Text = "Tất nhiên rồi." }, }, }, }, OdysseusTaverna02 = { PlayOnce = true, OnGiftTrack = true, UseableOffSource = true, UnfilledIcon = "EmptyHeartWithAmbrosiaIcon", FilledIcon = "FilledHeartWithAmbrosiaIcon", HintId = "Codex_TavernaGiftHint", LockedHintId = "Codex_LockedActivityHint", Cost = { SuperGiftPoints = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift07" }, }, { PathFalse = { "CurrentRun", "TimePassageOccurred" }, HintId = "Codex_TimePassesGiftUsed", }, }, { Cue = "/VO/Melinoe_5086", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Tình hình báo cáo đêm nay thế nào rồi? Ngài đang tranh thủ nghỉ ngơi, hay đây là dịp thích hợp mà ngài nói?" }, { Cue = "/VO/Odysseus_0547", PostLineRemoveContextArt = true, PreLineAnim = "Odysseus_KnifeToss", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", Text = "Nghĩ lại thì, đây cũng là dịp thích hợp đấy, Nữ Thần. Cô sẵn sàng chưa?" }, { Cue = "/VO/Odysseus_0548", SkipContextArt = true, PreLineFunctionName = "TavernaStartPresentation", PreLineFunctionArgs = { IsOdysseus = true }, PreLineWait = 0.35, PreLineAnim = "Odysseus_Drinking_Toast", Text = "...Cô biết đấy, ta đã từng kề vai sát cánh cùng khá nhiều Shade trong số này. Trung thành khi còn sống, và giờ vẫn vậy khi đã chết... cô nghĩ lòng trung thành đó đến từ đâu?" }, { Cue = "/VO/Melinoe_5087", UsePlayerSource = true, SkipContextArt = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Có được mục tiêu hoặc lý tưởng để theo đuổi. Và khao khát về sự ổn định và chân lý. Lòng trung thành chính là sự nhất quán." }, { Cue = "/VO/Odysseus_0549", SkipContextArt = true, PreLineAnim = "Odysseus_Drinking_Sip", PreLineWait = 0.35, Text = "Ta hoàn toàn đồng ý với những điều đó, nhưng với ta thì đơn giản hơn nhiều! Lòng trung thành bắt nguồn từ mỗi cá nhân. Nó giống như một dạng của tình yêu vậy; có người cho đi, có người đón nhận, đôi khi là trao đổi qua lại, đôi khi thì không." }, { Cue = "/VO/Melinoe_5088", UsePlayerSource = true, SkipContextArt = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", Text = "Nữ Chúa luôn dạy ta rằng, đừng bao giờ đòi hỏi lòng trung thành. Bà ấy nói rằng lòng trung thành sẽ suy yếu nếu không được nuôi dưỡng bằng sự tin tưởng. Vậy những Shade đồng hành cùng ngài là vì lòng trung thành, hay vì nghĩa vụ?" }, { Cue = "/VO/Odysseus_0550", SkipContextArt = true, PreLineAnim = "Odysseus_Drinking_Sip", Text = "{#Emph}Hm! {#Prev}Có lẽ là cả hai. Nữ Chúa nói đúng, lòng trung thành tốt nhất nên bắt nguồn sự tự nguyện. Ta nghĩ cô đã truyền cảm hứng cho điều đó, Nữ Thần. Nếu không thì ta đã chẳng ở lại đây lâu đến vậy." }, { Cue = "/VO/Melinoe_5089", UsePlayerSource = true, SkipContextArt = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01ReturnToIdle", PreLineAnimTarget = "Hero", Text = "Chronos chắc hẳn rất cần một người có kỹ năng và kinh nghiệm như ngài. Với những lời hứa về một Thời Đại Hoàng Kim mới, chắc chắn hắn cũng nhận được không ít lòng trung thành." }, { Cue = "/VO/Odysseus_0551", SkipContextArt = true, PreLineAnim = "Odysseus_Drinking_Toast", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineThreadedFunctionName = "LoungeRevelryPresentation", PostLineFunctionArgs = { Sound2 = "/EmptyCue", Sound3 = "/EmptyCue", TimeTicks = 20 }, Text = "Ta từng thử phụng sự những kẻ bạo chúa rồi; không hợp với ta. Giò thì, cô thấy sao nếu ta khơi dậy một chút lòng trung thành ngay lúc này? Hãy mời các Shade này cũng tham gia với chúng ta nào." }, { Cue = "/VO/Odysseus_0552", PreLineAnim = "Odysseus_KnifeToss", PreLineFunctionName = "TavernaEndPresentation", PreLineFunctionArgs = { IsOdysseus = true }, PreLineWait = 0.35, PostLineThreadedFunctionName = "InCombatTextEvent", PostLineThreadedFunctionArgs = GameData.PostTavernaArgs, Text = "Thật kỳ lạ khi chúng ta có thể hoàn thành được khá nhiều việc trong lúc nghỉ ngơi nhỉ? Dù sao thì các Shade cũng rất biết ơn! Ta cũng vậy." }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5091", Text = "Chúng ta nên uống tiếp vào dịp khác!" }, }, }, }, OdysseusFishing01 = { PauseMusicPlayerMusic = true, PlayOnce = true, UseableOffSource = true, GiftableOffSource = true, OnGiftTrack = true, UnfilledIcon = "EmptyHeartWithLuresIcon", FilledIcon = "FilledHeartWithLuresIcon", HintId = "Codex_FishingGiftHint", LockedHintId = "Codex_LockedActivityHint", Cost = { GiftPointsEpic = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeFishingPoint" }, }, { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift02" }, }, { PathFalse = { "CurrentRun", "TimePassageOccurred" }, HintId = "Codex_TimePassesGiftUsed", }, }, { Cue = "/VO/Melinoe_0470", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Ta có nhiều Cặp Mồi này, Od, và ta không thể tự mình sử dụng chúng được. Ngài hiểu cách sử dụng là gì rồi đấy!" }, { Cue = "/VO/Odysseus_0066", PreLineAnim = "Odysseus_Greet", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", Emote = "PortraitEmoteFiredUp", PostLineRemoveContextArt = true, Text = "Câu cá! {#Emph}Ah{#Prev}, điểm yếu lớn nhất của ta, thưa Nữ Thần! Nước và ta chưa từng hợp nhau. Nhưng ta là ai mà dám từ chối cô chứ? Ngoài ra thì, ta nghĩ cũng đến lúc ta nên nghỉ ngơi một chút rồi. Đi thôi!" }, { Cue = "/VO/Odysseus_0251", Portrait = "Portrait_Odysseus_Thoughtful_01", SkipContextArt = true, PreLineFunctionName = "FishingPierStartPresentation", Text = "Ngày xưa, ta đánh bắt cá chỉ vì điều đó là cần thiết. Đất đai thường khô cằn và khó trồng trọt, trong khi biển cả lại cung cấp rất nhiều cho người phàm bọn ta nếu bọn ta biết nơi để đánh bắt." }, { Cue = "/VO/Melinoe_3322", UsePlayerSource = true, SkipContextArt = true, PostLineAnim = "MelTalkBrooding01", PostLineAnimTarget = "Hero", Text = "Sự khác biệt lớn nhất đối với ngài kể từ thời điểm đó là gì? Không cần phải ăn uống để duy trì sự sống? Không còn ngắm nhìn cơ thể người phàm của ngài đang dần lão hóa?" }, { Cue = "/VO/Odysseus_0252", Portrait = "Portrait_Odysseus_Thoughtful_01", SkipContextArt = true, PreLineAnim = "Odysseus_Greet", Text = "{#Emph}Heh{#Prev}, ái chà, cô đã đoán trước vài lý do, nhưng... điểm khác biệt nhất mà ta có thể nói là... cuối cùng ta đã được tự do." }, { Cue = "/VO/Melinoe_3323", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", SkipContextArt = true, PreLineAnim = "MelTalkBrooding01ReturnToIdle", PreLineAnimTarget = "Hero", Text = "Ngài được tự do ư? Nhưng với tư cách là người phàm, chẳng phải ngài giống như vị vua sao? Một chiến binh dũng mãnh, người lãnh đạo nhân loại... một người chồng, và là một người cha! Ở đây, ngài cũng có một vị trí quan trọng, nhưng... chúng ta sống trong bóng tối. Những câu chuyện về chúng ta sẽ không bao giờ được lưu truyền." }, { Cue = "/VO/Odysseus_0253", SkipContextArt = true, Text = "Chà, chúng ta sẽ phải tự kể lại câu chuyện của mình cho thế hệ sau! Có lẽ ta đã thỏa mãn hết những ham muốn khám phá trong tâm hồn mình khi còn sống. Hầu hết là vậy!", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineFunctionName = "GiftActivityFishing", PostLineFunctionArgs = { FishingPointId = 585640 }, PostLineThreadedFunctionName = "TimePassesPresentation", PostLineThreadedFunctionArgs = { TimeTicks = 16, IncludeFishingSFX = true }, }, { Cue = "/VO/Odysseus_0084", PreLineFunctionName = "FishingPierEndPresentation", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineFunctionName = "ResourceGiftedInEventPresentation", PostLineFunctionArgs = { ResourceName = "FishFRare", SoundName = "/Leftovers/SFX/BigFishSplash", GiftWaitTime = 0 }, PostLineThreadedFunctionName = "InCombatTextEvent", PostLineThreadedFunctionArgs = GameData.PostFishingArgs, Text = "Ta thực sự rất thích chuyến đi câu của chúng ta, mà dù ta vẫn rất ghét cá." }, }, -- bond forged OdysseusFishing02 = { PauseMusicPlayerMusic = true, PlayOnce = true, UseableOffSource = true, GiftableOffSource = true, OnGiftTrack = true, CompletedHintId = "Codex_BondForgedOdysseus", UnfilledIcon = "EmptyHeartWithLuresIcon", FilledIcon = "FilledHeartWithLuresIcon", HintId = "Codex_FishingGiftHint", LockedHintId = "Codex_LockedActivityHint", Cost = { GiftPointsEpic = 1, }, GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "OdysseusGift08", "OdysseusTaverna02" }, }, { PathFalse = { "CurrentRun", "TimePassageOccurred" }, HintId = "Codex_TimePassesGiftUsed", }, }, { Cue = "/VO/Melinoe_5096", UsePlayerSource = true, Portrait = "Portrait_Mel_Casual_01", PreLineAnim = "MelTalkExplaining01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkExplaining01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Này, hay là chúng ta cùng đến bến câu cá nhé? Đã lâu rồi không quay lại, và việc kiên nhân đứng chờ có vẻ tốt hơn nhiều so với việc uống Ambrosia nhỉ?" }, { Cue = "/VO/Odysseus_0557", PreLineAnim = "Odysseus_KnifeToss", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineRemoveContextArt = true, Text = "Cô đã thuyết phục được ta, Nữ Thần! Với lại, ta cần phải đối diện với sự bất an của mình trước mặt nước. Cô cứ đi trước đi, ta sẽ theo sau." }, { Cue = "/VO/Odysseus_0558", PreLineWait = 0.4, Portrait = "Portrait_Odysseus_Thoughtful_01", SkipContextArt = true, PreLineFunctionName = "FishingPierStartPresentation", Text = "...Nhân tiện thì ta có chuyện muốn nói với cô. Ta thực sự rất trân trọng những khoảng thời gian bên cô, nhưng... ta không muốn những Shade khác hiểu lầm." }, { Cue = "/VO/Melinoe_5097", UsePlayerSource = true, Portrait = "Portrait_Mel_Hesitant_01", SkipContextArt = true, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", Text = "Vậy họ sẽ nghĩ gì? Ồ, ý ngài là những định kiến trần tục. Một người đàn ông và một người phụ nữ khi ở bên nhau thì chỉ có một kết cục duy nhất." }, { Cue = "/VO/Odysseus_0559", SkipContextArt = true, PreLineAnim = "Odysseus_Salute", Text = "Đúng là vậy, nhưng đó là định kiến bắt nguồn từ những chuyện đã thực sự xảy ra... kể cả đối với ta. Và dù các Shade của chúng ta rất trung thành, nhưng họ cũng thích buôn chuyện, chúng ta đều biết điều đó." }, { Cue = "/VO/Melinoe_5098", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", SkipContextArt = true, Text = "Ta cũng nghĩ vậy. Nếu có gì đáng để bàn tán, thì họ nên bàn tán về Nữ Chúa và ngài, chứ không phải về chúng ta." }, { Cue = "/VO/Odysseus_0560", Emote = "PortraitEmoteSurprise", SkipContextArt = true, PreLineAnim = "Odysseus_Explaining", Text = "Sao cơ? Ôi thôi nào, Nữ Thần, Nữ Chúa và ta... bọn ta giống như... ôi chết tiệt thật, chắc chắn phải có phép so sánh thích hợp nào đó..." }, { Cue = "/VO/Melinoe_5099", UsePlayerSource = true, Portrait = "Portrait_Mel_Empathetic_01", SkipContextArt = true, PreLineAnim = "MelTalkPensive01ReturnToIdle", PreLineAnimTarget = "Hero", Text = "Ta không có ý định đi quá giới hạn, chỉ là... ừm, ta có thể nghĩ ra nhiều lý do vì sao Nữ Chúa khơi dậy lòng trung thành cho một người như ngài. Và ngài cũng mang lại điều tương tự cho bà ấy." }, { Cue = "/VO/Odysseus_0561", SkipContextArt = true, PreLineAnim = "Odysseus_Pensive_Start", PostLineAnim = "Odysseus_Pensive_End", Text = "Ôi trời ơi, cô cũng chẳng khác gì đám Shade buôn chuyện kia, chỉ khác ở chỗ là ta không thể trục xuất cô đi được. Giờ thì, chúng ta bắt vài con cá được không?", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineFunctionName = "GiftActivityFishing", PostLineFunctionArgs = { FishingPointId = 585640 }, PostLineThreadedFunctionName = "TimePassesPresentation", PostLineThreadedFunctionArgs = { TimeTicks = 16, IncludeFishingSFX = true }, }, { Cue = "/VO/Odysseus_0562", PreLineFunctionName = "FishingPierEndPresentation", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineFunctionName = "ResourceGiftedInEventPresentation", PostLineFunctionArgs = { ResourceName = "FishFLegendary", SoundName = "/Leftovers/SFX/BigFishSplash", GiftWaitTime = 0 }, PostLineThreadedFunctionName = "MaxedRelationshipPresentation", PostLineThreadedFunctionArgs = { Text = "NPC_Odysseus_01", Icon = "Keepsake_Odysseus", EndFunctionName = "InCombatTextEvent", EndFunctionArgs = GameData.PostFishingArgs }, Text = "...{#Emph}Ah. {#Prev}Thật tuyệt vời khi được trò chuyện thoải mái thế này, không phải lúc nào cũng đưa ra lời khuyên. Cảm ơn nhé, Nữ Thần. Nhưng đừng kể với Nữ Chúa hay bất kỳ ai về những gì cô đã nói với ta, được chứ...?" }, EndVoiceLines = { { PreLineWait = 0.38, UsePlayerSource = true, { Cue = "/VO/Melinoe_5100", Text = "Ta sẽ không kể đâu..." }, }, }, }, OdysseusBathHouse01 = { PauseMusicPlayerMusic = true, PlayOnce = true, OnGiftTrack = true, UseableOffSource = true, GiftableOffSource = true, DoNotFlipContextArt = true, UnfilledIcon = "EmptyHeartWithSaltsIcon", FilledIcon = "FilledHeartWithSaltsIcon", HintId = "Codex_HotSpringsGiftHint", LockedHintId = "Codex_LockedActivityHint", Cost = { GiftPointsRare = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBathHouse" }, }, { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift04" }, }, { PathFalse = { "CurrentRun", "TimePassageOccurred" }, HintId = "Codex_TimePassesGiftUsed", }, }, { Cue = "/VO/Melinoe_0462", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", Text = "Ta đang nghĩ rằng không gì có thể thư giản đầu óc tốt bằng một buổi ngâm mình trong suối nước nóng. Ngài muốn đi cùng ta không?" }, { Cue = "/VO/Odysseus_0655", PreLineAnim = "Odysseus_Greet", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineRemoveContextArt = true, Text = "Ồ, ta rất thích được thư giản trong bồn tắm, ngay cả khi đã chết, và ta làm sao có thể từ chối một nữ thần chứ... vậy thì đi thôi!" }, { Cue = "/VO/Odysseus_0656", PreLineFunctionName = "BathHouseStartPresentation", NarrativeContextArt = "DialogueBackground_Bathhouse", Portrait = "Portrait_Odysseus_Bath_01", PortraitExitAnimation = "Portrait_Odysseus_Bath_01_Exit", Text = "Ta biết phong tục của chúng ta không hoàn toàn giống nhau, nhưng... ta sẽ quay mặt đi lúc này, nếu đó là điều cô mong muốn." }, { Cue = "/VO/Melinoe_0464", UsePlayerSource = true, PreLineWait = 0.5, Portrait = "Portrait_Mel_Bath_01", PortraitExitAnimation = "Portrait_Mel_Bath_01_Exit", Text = "Người phàm thường không tắm sao, Odysseus?" }, { Cue = "/VO/Odysseus_0657", Portrait = "Portrait_Odysseus_Bath_01", PortraitExitAnimation = "Portrait_Odysseus_Bath_01_Exit", Text = "Oh! Ừm, hầu hết họ đều sẽ tắm, thường là vậy, nhưng... hiếm khi tắm cùng nhau, như thế này. Đàn ông với phụ nữ... có lẽ là... không hay cho lắm." }, { Cue = "/VO/Melinoe_0465", UsePlayerSource = true, Portrait = "Portrait_Mel_Bath_01", PortraitExitAnimation = "Portrait_Mel_Bath_01_Exit", Text = "Ta hiểu rồi. Thần thánh bọn ta thường không xấu hổ về điều đó. Ta có khiến ngài cảm thấy khó chịu không?" }, { Cue = "/VO/Odysseus_0658", Portrait = "Portrait_Odysseus_Bath_01", PortraitExitAnimation = "Portrait_Odysseus_Bath_01_Exit", Emote = "PortraitEmoteSurprise", Text = "Ta hả? Không, không hề, thưa Nữ Thần, tất nhiên là không rồi, không hề! Trên thực tế thì ta đã từng tắm chung với những nữ thần trước đây rồi, chỉ là... đã lâu lắm rồi." }, { Cue = "/VO/Melinoe_5242", UsePlayerSource = true, Portrait = "Portrait_Mel_Bath_01", PortraitExitAnimation = "Portrait_Mel_Bath_01_Exit", Text = "Ồ, không sao đâu, hẳn là ngài sẽ nhớ những điều quan trọng. Chủ yếu là học cách buông bỏ những gánh nặng của mình." }, { Cue = "/VO/Odysseus_0659", Portrait = "Portrait_Odysseus_Bath_01", PortraitExitAnimation = "Portrait_Odysseus_Bath_01_Exit", Text = "Nghe thì có vẻ đơn giản, vì ta có không ít những thứ như thế! Trên thực tế, dù ta buông bỏ bao nhiêu đi chăng nữa, thì vẫn còn sót lại vài điều. Nhưng nơi này cũng giúp ích phần nào." }, { Cue = "/VO/Melinoe_0466", UsePlayerSource = true, Portrait = "Portrait_Mel_Bath_01", PortraitExitAnimation = "Portrait_Mel_Bath_01_Exit", PostLineFunctionName = "BathHouseQuipPresentation", PostLineThreadedFunctionName = "TimePassesPresentation", PostLineThreadedFunctionArgs = { TimeTicks = 12, }, EndSound = "/Leftovers/Menu Sounds/EmoteThoughtful", PostLineRemoveContextArt = true, Text = "Chà... miễn là ngài thấy ổn với điều đó." }, { Cue = "/VO/Odysseus_0063", PreLineFunctionName = "BathHouseEndPresentation", PreLineWait = 0.2, PostLineThreadedFunctionName = "InCombatTextEvent", PostLineThreadedFunctionArgs = GameData.PostBathHouseArgs, Emote = "PortraitEmoteSparkly", Text = "Chà! Không biết cô cảm thấy thế nào, nhưng ta thì thực sự cảm thấy rất thoải mái." }, }, OdysseusBathHouse02 = { PauseMusicPlayerMusic = true, PlayOnce = true, OnGiftTrack = true, UseableOffSource = true, GiftableOffSource = true, DoNotFlipContextArt = true, UnfilledIcon = "EmptyHeartWithSaltsIcon", FilledIcon = "FilledHeartWithSaltsIcon", HintId = "Codex_HotSpringsGiftHint", LockedHintId = "Codex_LockedActivityHint", Cost = { GiftPointsRare = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBathHouse" }, }, { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift05" }, }, { PathFalse = { "CurrentRun", "TimePassageOccurred" }, HintId = "Codex_TimePassesGiftUsed", }, }, { Cue = "/VO/Melinoe_0463", UsePlayerSource = true, Text = "Này, ta nghĩ đến lúc ta cần ngâm mình một lúc ở suối nước nóng. Ngài đi cùng ta được chứ?" }, { Cue = "/VO/Odysseus_0048", PortraitExitAnimation = "Portrait_Odysseus_Default_01_Exit", PostLineRemoveContextArt = true, Text = "Đi cùng cô, đến suối nước nóng, ngay lúc này? {#Emph}Hah! {#Prev}Được chứ! Thật vinh hạnh cho ta khi được đi cùng cô, thưa Nữ Thần." }, { Cue = "/VO/Odysseus_0051", PreLineFunctionName = "BathHouseStartPresentation", NarrativeContextArt = "DialogueBackground_Bathhouse", Portrait = "Portrait_Odysseus_Bath_01", PortraitExitAnimation = "Portrait_Odysseus_Bath_01_Exit", Text = "Ta tin chắc nhiệt độ sẽ phù hợp với yêu cầu của cô, phải không?" }, { Cue = "/VO/Melinoe_0467", UsePlayerSource = true, Portrait = "Portrait_Mel_Bath_01", PortraitExitAnimation = "Portrait_Mel_Bath_01_Exit", PreLineWait = 0.5, Text = "Ngài đã gặp nhiều nữ thần khác khi còn sống phải không, Od?" }, { Cue = "/VO/Odysseus_0060", Portrait = "Portrait_Odysseus_Bath_01", PortraitExitAnimation = "Portrait_Odysseus_Bath_01_Exit", Text = "Về điều này, ta thực sự rất may mắn. Nữ Thần Athena đã che chở cho ta. Ta sẽ không thể sống sót sau cuộc chiến nếu không có cô ấy. Sau đó, trong chuyến trở về nhà của ta, ta đã gặp Calypso... và Circe... một phù thủy, giống như cô." }, { Cue = "/VO/Melinoe_3217", UsePlayerSource = true, Portrait = "Portrait_Mel_Bath_01", PortraitExitAnimation = "Portrait_Mel_Bath_01_Exit", Text = "Circe từng học phép thuật dưới sự chỉ dạy của Nữ Chúa, luôn mang theo những viên pha lê của cô ấy. Và Calypso... cô ấy là Tiên Nữ phải không? Một nữ thần thấp bé hơn, ta nghĩ vậy." }, { Cue = "/VO/Odysseus_0061", Portrait = "Portrait_Odysseus_Bath_01", PortraitExitAnimation = "Portrait_Odysseus_Bath_01_Exit", -- Emote = "PortraitEmoteSurprise", Text = "Với sự kính trọng của ta thì không ai thấp bé hơn cả. Những nữ thần này, với lòng hiếu khách mà họ dành cho ta, khiến ta... gần như quên mất bản thân mình... quên mất gia đình mình." }, { Cue = "/VO/Melinoe_0469", UsePlayerSource = true, Portrait = "Portrait_Mel_Bath_01", PortraitExitAnimation = "Portrait_Mel_Bath_01_Exit", Text = "Nhưng ngài đã không quên. Ngài đã hoàn thành chuyến hành trình trở về nhà. Ngay cả ta cũng biết câu chuyện đó" }, { Cue = "/VO/Odysseus_0062", Portrait = "Portrait_Odysseus_Bath_01", PortraitExitAnimation = "Portrait_Odysseus_Bath_01_Exit", PostLineFunctionName = "BathHouseQuipPresentation", PostLineThreadedFunctionName = "TimePassesPresentation", PostLineThreadedFunctionArgs = { TimeTicks = 12, }, EndSound = "/Leftovers/Menu Sounds/EmoteThoughtful", PostLineRemoveContextArt = true, Text = "Sự thật là vậy, thưa Nữ Thần. Dù sao đi nữa, cuộc sống luôn có những biến cố bất ngờ. Ta rút ra được từ kinh nghiệm của mình." }, { Cue = "/VO/Odysseus_0064", PreLineFunctionName = "BathHouseEndPresentation", PreLineWait = 0.2, PostLineThreadedFunctionName = "InCombatTextEvent", PostLineThreadedFunctionArgs = GameData.PostBathHouseArgs, Emote = "PortraitEmoteSparkly", Text = "Đó là khoảng thời gian tuyệt vời và rất cần thiết. Ta thực sự rất cảm kích lời mời của cô." }, }, OdysseusBathHouseDecline01 = { PlayOnce = true, SkipGiftPresentationPost = true, Cost = { GiftPointsRare = 1, }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBathHouse" }, }, { PathTrue = { "GameState", "UseRecord", "NPC_Odysseus_01" }, }, { PathFalse = { "CurrentRun", "TimePassageOccurred" }, HintId = "Codex_TimePassesGiftUsed", }, { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsNone = GameData.OdysseusTavernaEvents, }, }, }, { Cue = "/VO/Melinoe_0460", UsePlayerSource = true, Text = "Odysseus, ngài nghĩ sao về việc giảm bớt áp lực từ việc lên toàn bộ kế hoạch này bằng một chuyến đi đến suối nước nóng?" }, { Cue = "/VO/Odysseus_0046", PreLineWait = 0.35, PostLineThreadedFunctionName = "GiftPointRareRefundPresentation", Text = "{#Emph}Erm, {#Prev}ta thực sự rất cảm kích lời mời của cô, Nữ Thần, chỉ là... ta nghĩ Nữ Chúa của cô muốn ta ở lại đây hơn. Cô hiểu ý ta phải không?" }, EndVoiceLines = { { PreLineWait = 0.45, UsePlayerSource = true, { Cue = "/VO/Melinoe_0461", Text = "Có lẽ để khi khác nhé." }, }, }, }, }, MissingDistanceTrigger = { WithinDistance = 500, VoiceLines = { BreakIfPlayed = true, RandomRemaining = true, UsePlayerSource = true, SuccessiveChanceToPlayAll = 0.1, PlayOnceFromTableThisRun = true, SkipCooldownCheckIfNonePlayed = true, GameStateRequirements = { { Path = { "PreviousDeathAreaRoom", "Name" }, IsNone = { "Hub_PreRun" }, }, NamedRequirementsFalse = { "OdysseusWandering" }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech" }, }, { Cue = "/VO/Melinoe_1156", Text = "Odysseus đang nghỉ ngơi..." }, { Cue = "/VO/Melinoe_2412", Text = "Odysseus đang kiểm tra những báo cáo...", PlayFirst = true }, { Cue = "/VO/Melinoe_2413", Text = "Od chắc đang ở nơi khác...", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift01", }, }, } }, { Cue = "/VO/Melinoe_1157", Text = "Od đang làm nhiệm vụ ư?", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "OdysseusGift01", }, }, } }, }, }, RepulseOnMeleeInvulnerableHit = 150, OnHitVoiceLines = { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.25, ObjectType = "NPC_Odysseus_01", CooldownTime = 7, -- Pathetic. -- { Cue = "/VO/Hades_0050", Text = "Pathetic." }, }, GiftGivenVoiceLines = { BreakIfPlayed = true, PreLineWait = 1.0, PlayFromTarget = true, { Cue = "/VO/Melinoe_2899", Text = "Xương Ngón Tay đáng tin cậy của ngài ư? Cảm ơn!" }, }, }, } -- Global Odysseus Lines GlobalVoiceLines.OdysseusSongReactionVoiceLines = { PlayOnceFromTableThisRun = true, BreakIfPlayed = true, RandomRemaining = true, PreLineWait = 2.5, ObjectType = "NPC_Odysseus_01", PreLineAnim = "Odysseus_Drinking_Sip", RecheckRequirementsPostWait = true, GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = GameData.OdysseusTavernaEvents, }, }, { Path = { "AudioState", "AmbientTrackName" }, IsAny = { -- "/Music/MusicPlayer/Iris/IrisMusicScylla1MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla1bMusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla2MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla2bMusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla3MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla3bMusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla4MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla4bMusicPlayer", }, }, { Path = { "ConfigOptionCache", "MusicVolume" }, Comparison = ">", Value = 0.1, }, }, { Cue = "/VO/Odysseus_0566", Text = "Scylla và các Siren...", PlayFirst = true }, { Cue = "/VO/Odysseus_0312", Text = "Chết tiệt..." }, { Cue = "/VO/Odysseus_0475", Text = "{#Emph}Euuugh... " }, { Cue = "/VO/Odysseus_0476", Text = "{#Emph}" }, { Cue = "/VO/Odysseus_0504", Text = "{#Emph}Ooh {#Prev}good." }, } GlobalVoiceLines.OdysseusPreDamageVoiceLines = { { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.35, NoTarget = true, SuccessiveChanceToPlayAll = 0.75, Source = { LineHistoryName = "NPC_Odysseus_01", SubtitleColor = Color.OdysseusVoice }, { Cue = "/VO/Odysseus_0439", Text = "Chúng ta chơi để chiến thắng!", PlayFirst = true }, { Cue = "/VO/Odysseus_0440", Text = "Bất kể phải làm gì." }, { Cue = "/VO/Odysseus_0441", Text = "Hãy lấy lại sự cân bằng." }, { Cue = "/VO/Odysseus_0442", Text = "Chiến đấu để sinh tồn!" }, { Cue = "/VO/Odysseus_0443", Text = "Hãy giành chiến thắng!" }, { Cue = "/VO/Odysseus_0444", Text = "Chúng ta không bao giờ do dự!" }, { Cue = "/VO/Odysseus_0445", Text = "Chào lần nữa nhé, Scylla!", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_Boss01", "G_Boss02" }, }, }, }, { Cue = "/VO/Odysseus_0446", Text = "Nhớ ta không, Cyclops?", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "N_Boss01", "N_Boss02" }, }, }, }, { Cue = "/VO/Odysseus_0447", Text = "Hạ hắn đi, Nữ Thần!", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, }, }, { Cue = "/VO/Odysseus_0448", Text = "Cô có thể làm được, tiến lên!", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss01", "Q_Boss02" }, }, }, }, }, { GlobalVoiceLines = "OdysseusLaughVoiceLines" }, } GlobalVoiceLines.OdysseusLaughVoiceLines = { RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.35, NoTarget = true, Source = { LineHistoryName = "NPC_Odysseus_01", SubtitleColor = Color.OdysseusVoice }, { Cue = "/VO/Odysseus_0106", Text = "{#Emph}" }, { Cue = "/VO/Odysseus_0107", Text = "{#Emph}" }, { Cue = "/VO/Odysseus_0108", Text = "{#Emph}" }, { Cue = "/VO/Odysseus_0109", Text = "{#Emph}" }, } OverwriteTableKeys( EnemyData, UnitSetData.NPC_Odysseus )