GameData.HubMapName = "Hub_Main" HubRoomData = HubRoomData or {} OverwriteTableKeys( HubRoomData, { BaseHub = { -- NarrativeContextArt = "DialogueBackgroundBiome_Woods", ObjectiveStartX = 40, SaveProfileLocationText = "Location_Home" }, -- Crossroads Main Hub Hub_Main = { InheritFrom = { "BaseHub", }, RichPresence = "#RichPresence_Hub", FullscreenEffectGroup = "LoungeHider_01", EntranceFunctionName = "EnterHubRoomPresentation", NarrativeContextArt = "DialogueBackgroundBiome_Woods", NarrativeContextArtFlippable = true, FishBiome = "F", GlobalEcho = 0.0, LoadPackages = { "Moros", }, OnLoadEvents = { { -- @ ending FunctionName = "StartDeathLoop", Args = { PresentationFunctionName = "HubPostCreditsStartPresentation", PresentationFunctionArgs = { PortraitArgs = { StartScale = 0.93, EndScale = 0.63, PanDuration = 9.8, UnthreadedVoiceLines = true, }, PostPortraitTextLines = { TrueEndingFinaleResponse01 = { PlayOnce = true, SkipContextArt = true, { Cue = "/VO/Melinoe_5736", UsePlayerSource = true, Portrait = "Portrait_Mel_Proud_01", PreLineThreadedFunctionName = "PlayEmoteAnimFromSource", PreLineThreadedFunctionArgs = { Emote = "None", Portrait = "Portrait_Mel_Empathetic_01", WaitTime = 2.4 }, PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkPensive01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "Mong mọi chuyện sẽ diễn ra như vậy theo thời gian, Homer. Tuy nhiên, chúng ta vẫn chưa đạt được điều đó, nhất là khi Nữ Thần Định Mệnh vẫn đang mất tích. Chúng ta đã đạt được thành quả, nhưng vẫn còn nhiều việc phải làm." }, EndFunctionName = "DisplayTrueEndingInfoBanner", EndFunctionArgs = { Title = "TrueEndingReached", PreWait = 0.1, PostCreditsMusicFadeOutDuration = 0.3, Stinger = "/Music/IrisVictoryStingerLARGE", EndFunctionName = "RestoreMusicianMusic" }, EndVoiceLines = { { PreLineWait = 3.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_5737", Text = "...Đã bảo là chúng ta chưa xong việc mà!" }, }, }, }, }, }, }, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_DeathAreaRestored" }, }, { PathFalse = { "CurrentRun", "UsedStoryReset" }, }, { PathFalse = { "CurrentHubRoom", }, }, }, BreakIfPlayed = true, }, { FunctionName = "StartDeathLoop", Args = { PresentationFunctionName = "HubPostStoryResetStartPresentation", }, GameStateRequirements = { { PathTrue = { "CurrentRun", "UsedStoryReset" }, }, { PathFalse = { "CurrentHubRoom" }, }, }, BreakIfPlayed = true, }, { FunctionName = "StartDeathLoop", Args = { PresentationFunctionName = "StartDeathLoopPresentation", }, GameStateRequirements = { { PathFalse = { "CurrentHubRoom" } }, }, BreakIfPlayed = true, }, { FunctionName = "DeathAreaRoomTransition", }, }, -- camera ZoomFraction = 1.23, ZoomLerpTime = 4.0, SoftClamp = 0.8, CameraZoomWeights = { --[576055] = 1.05, -- tent intro [576048] = 1.05, -- tent back [576047] = 0.690, -- leaving tent --[576056] = 0.500, -- cauldron 1 --[576057] = 0.500, -- cauldron 2 [576046] = 0.550, -- behind Hecate (target 0.68) --[576052] = 0.600, -- broker --[576053] = 0.71, -- cafeteria --[576054] = 0.71, -- Eris --[576051] = 0.72, -- Nemesis --[576050] = 1.10, -- Hypnos [576049] = 0.720, -- PreRun exit }, IntroSequenceDuration = 0.6, RushMaxRangeOverride = 455, BlockCombat = true, UnloadWeapons = false, IgnoreStemMixer = true, AmbientMusicSourceId = 561502, AmbientMusicParams = { LowPass = 0.0, Vocals = 1.0, Vocals2 = 0.0, }, AmbientMusicParamsInTent = { LowPass = 0.6, Vocals = 0.6, }, AmbientMusicVolume = 1.0, Ambience = "/Ambience/RunstartIntroAmbience", ReverbValue = 0.4, GhostCollisionEmote = "Disgruntled", FailedToFireFunctionName = "DeathAreaAttackFailPresentation", DistanceTriggers = { -- Tent Dim { TriggerGroup = "TentExit", WithinDistance = 200, FunctionName = "TentExitPresentation", Repeat = true, }, { TriggerGroup = "TentEntrance", WithinDistance = 250, FunctionName = "TentEnterPresentation", Repeat = true, }, -- Tent Exit { TriggerGroup = "TentExit", WithinDistance = 150, TriggerOnceThisRun = true, GameStateRequirements = { { PathFalse = { "CurrentRun", "ActiveBounty" }, }, }, FunctionName = "OncePerRunTentExitPresentation", Args = { CheckCodexDelay = 0.5, DisplayInfoBannerArgs = { Text = "Location_Home", Color = Color.White, FadeColor = Color.Red, AnimationName = "LocationBackingIrisDeathIn", AnimationOutName = "LocationBackingIrisDeathOut", Delay = 0.2, Duration = 2.25, }, }, VoiceLines = { { PlayOnce = true, PreLineWait = 0.75, Queue = "Never", GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "==", Value = 0, }, }, { Cue = "/VO/Melinoe_1164", Text = "Đứng hiên ngang và không để lộ sự yếu mềm...", GameStateRequirements = { { PathFalse = { "CurrentRun", "Cleared" }, }, }, }, { Cue = "/VO/Melinoe_2950", Text = "{#Emph}Ah! {#Prev}Tiếp tục đi, mọi người. Ta vẫn ổn.", GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, }, }, }, -- for Ghost Groupies { BreakIfPlayed = true, RandomRemaining = true, PreLineWait = 0.65, PlayOnceFromTableThisRun = true, SuccessiveChanceToPlayAll = 0.33, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">", Value = 0, }, { PathTrue = { "CurrentRun", "Cleared" }, }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech" }, { Name = "MorosBeingPolite", Time = 2 }, }, { Cue = "/VO/Melinoe_2425", Text = "Oh, xin chào...!", PlayFirst = true }, { Cue = "/VO/Melinoe_2426", Text = "Ta ổn, thật đấy!" }, { Cue = "/VO/Melinoe_2427", Text = "Không cần phải lo lắng!" }, { Cue = "/VO/Melinoe_2428", Text = "Xin lỗi đã làm phiền, Shade." }, { Cue = "/VO/Melinoe_2429", Text = "Chào buổi tối mọi người...!" }, { Cue = "/VO/Melinoe_2430", Text = "Cảm ơn vì đã chờ đợi..." }, { Cue = "/VO/Melinoe_2431", Text = "Vậy thì đi thôi...!" }, { Cue = "/VO/Melinoe_2432", Text = "Hãy cùng đi tham quan nào." }, }, }, }, -- Cauldron Unlock { TriggerObjectType = "CriticalItemWorldObject01", WithinDistance = 400, VoiceLines = { PlayOnce = true, PlayOnceContext = "FatedListReveal", UsePlayerSource = true, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "==", Value = 1, }, }, { Cue = "/VO/Melinoe_2820", Text = "Chiếc vạc đã sẵn sàng rồi..." }, }, }, -- Fated List Reveal { TriggerObjectType = "CrossroadsFatedList", WithinDistance = 400, VoiceLines = { { PlayOnce = true, PlayOnceContext = "FatedListReveal", UsePlayerSource = true, GameStateRequirements = { { PathFalse = { "GameState", "ScreensViewed", "QuestLog" }, }, }, { Cue = "/VO/Melinoe_1585", Text = "Có phải là...?" }, }, -- Moros after Supay { GameStateRequirements = { { PathTrue = { "CurrentRun", "WorldUpgradesRevealed", "TorchAutofireAspect" } }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Moros_01" }, Alive = false }, }, }, { Cue = "/VO/Melinoe_4693", Text = "Ngài Moros vừa mới ở đây..." }, }, }, }, -- Eris Trash / Eris Rubbish { TriggerGroup = "ErisCorner", WithinDistance = 460, TriggerOnceThisRun = true, VoiceLines = { { PlayOnce = true, PlayOnceContext = "ErisTrashIntroVO", GameStateRequirements = { { PathNotEmpty = { "GameState", "ActiveLitter" }, }, }, { Cue = "/VO/Melinoe_2439", Text = "Chuyện quái gì đây...?" }, }, }, }, -- East/West Entrances (for Dora) { TriggerGroup = "WestSideEntrance", WithinDistance = 175, FunctionName = "HubWestSideEnterPresentation", Repeat = true, }, { TriggerGroup = "EastSideEntrance", WithinDistance = 175, FunctionName = "HubEastSideEnterPresentation", Repeat = true, }, }, StartUnthreadedEvents = { -- Taverna Unlock { FunctionName = "ClearMapBlockers", GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, }, Args = { DeleteGroups = { "Taverna_Blocker", "TavernaDimmer_01" }, }, }, -- Fishing Unlock / Docks Unlock { FunctionName = "ClearMapBlockers", GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeFishingPoint" }, } }, Args = { DeleteGroups = { "Docks_Blocker", "DocksDimmer_01" }, }, }, -- HotSprings Unlock / BathHouse Unlock { FunctionName = "ClearMapBlockers", GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBathHouse" }, }, }, Args = { DeleteGroups = { "Bath_Blocker", "BathDimmer_01" }, }, }, -- iris npcs / critical conversations / critical events / key events / priority conversations / priority events { FunctionName = "CheckPriorityConversations", GameStateRequirements = { -- None }, Args = { Variants = { NPC_Icarus_01 = "IcarusHome", }, IgnorePartnerExists = true, Conversations = { -- introductions "DoraFirstMeeting", "OdysseusFirstMeeting", "NemesisFirstMeeting", "MorosFirstMeeting", "ErisFirstMeeting_B", "ErisFirstMeeting", -- Nyx key events "NyxWithHecate01", "NyxWithNemesis01", -- Icarus key events -- "IcarusHubAboutCrossroads02", "IcarusHomePostEpilogue01", "IcarusHomeAboutTyphonDeath01", -- Hecate key events "HecateBathHouseEpilogue01", "HecatePostTrueEnding01", "HecatePostTrueEnding02", "HecatePostTrueEnding04", "HecatePostTrueEnding03", "HecateAboutTyphonDeath01", "HecateAboutStormStop01", "HecateAboutTyphonFight03", "HecateAboutTyphonFight03_B", "HecateAboutTyphonFight01_B", "HecateAboutTyphonFight01", "HecateAboutTyphonFight02_B", "HecateAboutChronosBossW04", "HecateAboutChronosBossW04_A", "HecateAboutChronosBossW04_B", "HecateAboutChronosBossW03", "HecateAboutChronosBossW02", "HecateAboutChronosBossW01", "HecateAboutChronosBossW01Cont1", "HecateAboutTimeStop01", "HecateAboutStormStop01_B", "HecateAboutUltimateProgress03_A", "HecateAboutUltimateProgress03", "HecateAboutUltimateProgress04", "HecateAboutUltimateProgress02", "HecateAboutUltimateProgress01", "HecateAboutStormStopNotCast01", "HecateAboutPalace01", "HecateUnderworldRunCleared01", "HecateAboutChronosBossL01", "HecateAboutChronosBossEarlyL01", "HecateAboutChronosAnomaly01", "HecateAboutChronos01", "HecateGrantsWeaponUpgradeSystem01", "HecateGrantsFamiliars01", "HecateGrantsShrineUpgrade01", "HecateAboutHermes01", "HecateAboutQuestLog02", "HecateAboutSurface03", "HecateAboutTyphonAltFightW01", -- Odysseus key events -- note: all of these should have NamedRequirementsFalse = { "OdysseusWandering" }, "OdysseusAboutReturn01", "OdysseusPostTrueEnding01", "OdysseusPostEpilogue01", "OdysseusAboutHecateKidnapped01", "OdysseusAboutTyphonDeath01", "OdysseusAboutPrometheusAltFight01", "OdysseusAboutSurface02", "OdysseusAboutChronosAnomaly01", "OdysseusAboutHermes01", "OdysseusAboutTyphonL01", "OdysseusAboutTyphonW01", "OdysseusAboutChronosBossW01", "OdysseusAboutUltimateProgress01", "OdysseusAboutChronosBossTactics01", "OdysseusAboutChronosBossL01", "OdysseusAboutErisBossTactics01", "OdysseusAboutScyllaTactics01", "OdysseusGrantsPlantFMoly01_B", "OdysseusGrantsMemPointsCommon01_B", "OdysseusGrantsMetaFabric01_B", "OdysseusAboutTyphon01", -- Dora key events "DoraPostTrueEnding01", "DoraPostEpilogue01", "DoraAboutChronosBossW01", "DoraAboutTask01", "DoraGrantsCosmeticsShop01", "DoraAboutMemories01", "DoraAboutNightmares01", -- Moros key events "MorosAboutRelationship03", "MorosAboutRelationship03_B", "MorosAboutEpilogueProgress01", "MorosPostEpilogue01", "MorosPostTrueEnding01", "MorosPostTrueEnding02", "MorosAboutHecateKidnapped01", "MorosAboutTyphonDeath01", "MorosAboutFates02", "MorosAboutSurfacePenaltyCure01", "MorosAboutChronosBossW01", "MorosAboutTyphon01", -- Nemesis key events "NemesisPostTrueEnding01", "NemesisPostEpilogue01", "NemesisPostTrueEndingTimeStopped01", "NemesisAboutHecateKidnapped01", "NemesisAboutTyphonDeath01", "NemesisAboutRelationship01", "NemesisAboutRelationship01_B", "NemesisAboutFieldMeeting01", "NemesisAboutChronosBossL02", "NemesisAboutCombatFailure01", "NemesisAboutTyphon01", "NemesisAboutChronosNightmare01", -- Eris key events "ErisPostTrueEnding01", "ErisAboutUltimateProgress01", "ErisAboutChronos01", "ErisAboutTyphon01", "ErisFoughtAgainstHer01", "ErisAboutCloseMatch01", -- Charon key events "CharonWithHecate01", -- Mailbox -- Artemis key events "ArtemisHubFirstMeeting01", "ArtemisHubAboutChronosBoss01", "ArtemisHubSinging01", -- Selene key events "SeleneWithHecate01", "SeleneHome01", -- Arachne key events "ArachneHubFirstMeeting01", "ArachneWithHecateInHub01", "ArachneWithHecateInHub02", -- Medea key events "MedeaHubFirstMeeting01", }, }, }, -- hypnos always present (until he makes his dramatic exit) { FunctionName = "ActivatePrePlaced", GameStateRequirements = { { PathFalse = { "GameState", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, }, Args = { Types = { "NPC_Hypnos_01", }, }, }, -- frinos always present { FunctionName = "ActivateFamiliar", GameStateRequirements = { -- }, Args = { Id = 566831, Name = "FrogFamiliar", OverwriteSelf = { OnUsedFunctionName = "nil", }, }, }, -- hecate always present until flashback or if you lost to her { FunctionName = "ActivatePrePlaced", GameStateRequirements = { OrRequirements = { { { PathFalse = { "GameState", "TextLinesRecord", "HecateHideAndSeek01" }, }, }, { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_Boss01", "F_Boss02" }, }, }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "HecateHideAndSeek01" }, }, -- @ ending NamedRequirementsFalse = { "HecateMissing" }, }, Args = { Types = { "NPC_Hecate_01", }, }, }, -- odysseus always present till after 1st Chronos clear { FunctionName = "ActivatePrePlaced", GameStateRequirements = { { PathFalse = { "GameState", "EnemyKills", "Chronos" } }, }, Args = { Types = { "NPC_Odysseus_01", }, }, }, -- Main NPC randomization { FunctionName = "ActivateRotatingNPCs", GameStateRequirements = { -- None }, Args = { Types = { "NPC_Hecate_01", "NPC_Odysseus_01", "NPC_Nemesis_01", "NPC_Eris_01", "NPC_Moros_01", "NPC_Dora_01", "NPC_Icarus_01", -- "NPC_Hypnos_01", }, LeaveOutMin = 1, LeaveOutMax = 1, ActivationsMin = 3, ActivationsMax = 9, Variants = { NPC_Icarus_01 = "IcarusHome", }, }, }, -- dora always present after Cosmetics unlocked { FunctionName = "ActivatePrePlaced", GameStateRequirements = { NamedRequirements = { "CosmeticsShopUnlocked" }, { PathFalse = { "CurrentRun", "BlockDoraSpawn" }, }, }, Args = { Types = { "NPC_Dora_01", }, OverwriteSelf = { DefaultCategoryIndex = 1, }, }, }, { FunctionName = "TentExitPresentation", Args = { Override = true }, GameStateRequirements = { { Path = { "PreviousDeathAreaRoom", "Name" }, IsAny = { "Hub_PreRun" }, }, }, }, { FunctionName = "RestoreLitter", GameStateRequirements = { -- None }, }, -- charon present when deliveries arrive { FunctionName = "ActivatePrePlaced", GameStateRequirements = { { PathTrue = { "CurrentRun", "AnyMailboxReady" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "FatesEpilogue01" } }, NamedRequirementsFalse = { "JustBeforeOrAfterTrueEnding" }, }, Args = { Types = { "NPC_Charon_01", }, }, }, -- artemis singing / present after her singing intro { FunctionName = "ActivatePrePlaced", GameStateRequirements = { { PathFalse = { "CurrentRun", "ArtemisHubSong" }, -- handled below }, { PathFalse = { "PreviousDeathAreaRoom" }, }, { PathTrue = { "CurrentRun", "UseRecord", "NPC_Artemis_Field_01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "ArtemisHubSinging01" } }, { SumPrevRuns = 4, IgnoreCurrentRun = true, Path = { "SpawnRecord", "NPC_Artemis_01" }, Comparison = "<=", Value = 0, }, { Path = { "ConfigOptionCache", "MusicVolume" }, Comparison = ">", Value = 0.1, }, NamedRequirementsFalse = { "ArtemisSingingBlockedByEvents" }, ChanceToPlay = 0.85, }, Args = { Types = { "NPC_Artemis_01", }, }, }, -- artemis should spawn again when re-entering from Hub_PreRun { FunctionName = "RespawnArtemisForSinging", GameStateRequirements = { { PathTrue = { "CurrentRun", "ArtemisHubSong" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Artemis_01" }, Alive = false }, }, }, }, { FunctionName = "ActivateConditionalItems", Args = { CosmeticsShopCategoryIndex = 1, GhostAdminCategoryIndex = 1, }, }, { FunctionName = "ActivateConditionalItems", Args = { CosmeticsShopCategoryIndex = 2, }, }, { FunctionName = "ActivateConditionalItems", Args = { CosmeticsShopCategoryIndex = 3, }, }, -- selene present on new moons { FunctionName = "ActivatePrePlaced", GameStateRequirements = { { Path = { "GameState", "GamePhase" }, Comparison = "==", Value = 5, }, { SumPrevRuns = 8, IgnoreCurrentRun = true, Path = { "SpawnRecord", "NPC_Selene_01" }, Comparison = "<=", Value = 0, }, { PathTrue = { "GameState", "TextLinesRecord", "SeleneHome01" } }, { PathFalse = { "CurrentRun", "TextLinesRecord", "FatesEpilogue01" }, }, OrRequirements = { { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "TrueEndingFinale01" }, Min = 4 }, }, }, }, NamedRequirementsFalse = { "JustBeforeOrAfterTrueEnding" }, }, Args = { Types = { "NPC_Selene_01", }, }, }, -- Ghost Eavesdroppers -- first run (alts below) { FunctionName = "GhostEavesdroppers", Args = { RandomGroups = { { 590510, 590509, 590508, }, }, InspectPoint = { Name = "GhostInspectPoint", UseTextSpecial = "UseGhostEavesdropper", SpecialInteractFunctionName = "UseGhostEavesdropper", RandomLines = { { Name = "Ghost_Agent05", PlayFirst = true, GameStateRequirements = { -- None }, }, }, } }, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "==", Value = 0, }, ChanceToPlay = 1.0, }, }, -- artemis singing { FunctionName = "GhostEavesdroppers", Args = { RandomGroups = { { 743524, 743523, 743522, }, { 743528, 743530, 743529, }, }, InspectPoint = { Name = "GhostInspectPoint", UseTextSpecial = "UseGhostEavesdropper", SpecialInteractFunctionName = "UseGhostEavesdropper", AgeOfDeath = 24, RandomLines = { { Name = "Ghost_Scout10" }, { Name = "Ghost_Scout10a" }, { Name = "Ghost_Agent16" }, { Name = "Ghost_Agent19" }, }, } }, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ArtemisHubSinging01" }, }, { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/ArtemisSong_MC", "/Music/IrisEndThemeCrossroads_MC" }, }, { Path = { "ConfigOptionCache", "MusicVolume" }, Comparison = ">", Value = 0.1, }, ChanceToPlay = 0.85, }, }, -- subsequent runs (after taverna) { FunctionName = "GhostEavesdroppers", Args = { RandomGroups = { { 590510, 590509, 590508, }, { 590511, 590512, 590507, }, { 590513, 590514, 590515, }, { 590880, 590882, 590879, }, { 590891, 590893, 590890, }, { 743521, 743520, 743519, }, { 743517, 743516, 743518, }, }, InspectPoint = { Name = "GhostInspectPoint", UseTextSpecial = "UseGhostEavesdropper", SpecialInteractFunctionName = "UseGhostEavesdropper", AgeOfDeath = 24, RandomLines = { { Name = "Ghost_Agent01", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent02", }, { Name = "Ghost_Agent03", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent04", }, { Name = "Ghost_Agent05", }, { Name = "Ghost_Agent06", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent07", }, { Name = "Ghost_Agent08", }, { Name = "Ghost_Agent09", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent10", }, { Name = "Ghost_Agent11", }, { Name = "Ghost_Agent12", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent13", }, { Name = "Ghost_Agent14", }, { Name = "Ghost_Agent15", }, { Name = "Ghost_Agent16", }, { Name = "Ghost_Agent17", }, { Name = "Ghost_Agent18", }, { Name = "Ghost_Agent19", }, { Name = "Ghost_Agent20", }, { Name = "Ghost_Agent21", }, { Name = "Ghost_Agent22", }, { Name = "Ghost_Agent23", }, { Name = "Ghost_Agent24", }, { Name = "Ghost_Scout01", PlayFirst = true, GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/ArtemisSong_MC", "/Music/IrisEndThemeCrossroads_MC" }, }, }, }, { Name = "Ghost_Scout02", PlayFirst = true, GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/ArtemisSong_MC", "/Music/IrisEndThemeCrossroads_MC" }, }, }, }, { Name = "Ghost_Scout03", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Eris_01", } }, }, }, }, { Name = "Ghost_Scout04", PlayFirst = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "NeoChronosAboutTartarus02", "NeoChronosAboutOlympus02" }, }, }, }, { Name = "Ghost_Scout04a", PlayFirst = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, }, }, { Name = "Ghost_Scout05", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, }, }, { Name = "Ghost_Scout05a", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, { PathFalse = { "GameState", "TextLinesRecord", "ZeusPalacePostTrueEnding01" }, }, }, }, { Name = "Ghost_Scout06", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_Boss01" }, }, }, }, { Name = "Ghost_Scout07", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Moros_01", "NPC_Eris_01" }, }, }, }, }, { Name = "Ghost_Scout08", PlayFirst = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "TrophyQuestComplete03" }, }, }, }, { Name = "Ghost_Scout09", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "NextBiomeStateName" }, IsAny = { "Rain" }, }, }, }, { Name = "Ghost_Scout11", PlayFirst = true, GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/MusicPlayer/Iris/IrisMusicScylla1MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla1bMusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla2MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla2bMusicPlayer", }, }, { Path = { "ConfigOptionCache", "MusicVolume" }, Comparison = ">", Value = 0.1, }, }, }, { Name = "Ghost_Scout11a", PlayFirst = true, GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/MusicPlayer/Iris/IrisMusicScylla1MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla1bMusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla2MusicPlayer", "/Music/MusicPlayer/Iris/IrisMusicScylla2bMusicPlayer", }, }, { Path = { "ConfigOptionCache", "MusicVolume" }, Comparison = ">", Value = 0.1, }, }, }, { Name = "Ghost_Agent25", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, }, }, { Name = "Ghost_Agent26", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "RoomsEntered" }, HasAll = { "I_Boss01", "Q_Boss01" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent27", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Icarus_01", } }, }, }, }, { Name = "Ghost_Agent28", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "CosmeticsPurchasedCountCache", "Total" }, Comparison = ">=", Value = 18, }, }, }, { Name = "Ghost_Agent29", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Eris_01", } }, }, }, }, { Name = "Ghost_Agent30", PlayFirst = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "EnemyKills", "TyphonHead" }, }, }, }, { Name = "Ghost_Ranger01", PlayFirst = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "I_DeathAreaRestored", "I_Story01" } }, }, }, { Name = "Ghost_Ranger02", PlayFirst = true, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "NeoChronosAboutTartarus02", "NeoChronosAboutOlympus02" } }, }, }, { Name = "Ghost_Ranger03", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Ranger04", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "NextBiomeStateName" }, IsAny = { "Rain" }, }, { PathTrue = { "GameState", "TextLinesRecord", "DemeterGift03" }, }, }, }, { Name = "Ghost_Ranger05", PlayFirst = true, GameStateRequirements = { NamedRequirements = { "ReachedEpilogue" }, }, }, { Name = "Ghost_Ranger06", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Ranger07", GameStateRequirements = { NamedRequirements = { "ReachedEpilogue" }, }, }, { Name = "Ghost_Ranger08", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Selene_01", } }, }, }, }, { Name = "Ghost_Ranger09", PlayFirst = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "EnemyKills", "Zagreus" }, }, }, }, { Name = "Ghost_Ranger10", PlayFirst = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "C_Boss01" }, }, }, }, }, } }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { Path = { "CurrentRun", "NumGhostGroupsActive" }, Comparison = "<=", Value = 0, }, ChanceToPlay = 0.85, }, }, -- subsequent runs (before taverna) { FunctionName = "GhostEavesdroppers", Args = { RandomGroups = { { 590510, 590509, 590508, }, { 590511, 590512, 590507, }, { 590513, 590514, 590515, }, { 590880, 590882, 590879, }, { 743517, 743516, 743518, } }, InspectPoint = { Name = "GhostInspectPoint", UseTextSpecial = "UseGhostEavesdropper", SpecialInteractFunctionName = "UseGhostEavesdropper", AgeOfDeath = 24, RandomLines = { { Name = "Ghost_Agent01", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent02", }, { Name = "Ghost_Agent03", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent04", }, { Name = "Ghost_Agent05", }, { Name = "Ghost_Agent06", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent07", }, { Name = "Ghost_Agent08", }, { Name = "Ghost_Agent09", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent10", }, { Name = "Ghost_Agent11", }, { Name = "Ghost_Agent12", GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Name = "Ghost_Agent13", }, { Name = "Ghost_Agent14", }, { Name = "Ghost_Agent15", }, { Name = "Ghost_Agent16", }, { Name = "Ghost_Agent17", }, -- { Name = "Ghost_Agent18", }, -- { Name = "Ghost_Agent19", }, { Name = "Ghost_Agent20", }, { Name = "Ghost_Agent21", }, { Name = "Ghost_Agent22", }, { Name = "Ghost_Agent23", }, { Name = "Ghost_Agent24", }, { Name = "Ghost_Scout03", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Eris_01", } }, }, }, }, { Name = "Ghost_Scout04", PlayFirst = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, }, }, { Name = "Ghost_Scout04a", PlayFirst = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, }, }, { Name = "Ghost_Scout05", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, }, }, { Name = "Ghost_Scout05a", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { PathTrue = { "CurrentRun", "Cleared" }, }, { PathFalse = { "GameState", "TextLinesRecord", "ZeusPalacePostTrueEnding01" }, }, }, }, { Name = "Ghost_Scout06", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_Boss01" }, }, }, }, { Name = "Ghost_Scout07", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Moros_01", "NPC_Eris_01" }, }, }, }, }, { Name = "Ghost_Scout08", PlayFirst = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "TrophyQuestComplete03" }, }, }, }, { Name = "Ghost_Scout09", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "NextBiomeStateName" }, IsAny = { "Rain" }, }, }, }, }, } }, GameStateRequirements = { { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 1, }, { Path = { "CurrentRun", "NumGhostGroupsActive" }, Comparison = "<=", Value = 0, }, ChanceToPlay = 0.8, }, }, -- deep underworld shades { FunctionName = "GhostEavesdroppers", Args = { RandomGroups = { { 590511, 590512, 743554, }, { 743547, 743549, 743548, }, { 743553, 743550, 743551, }, { 590880, 590882, 743555, }, }, InspectPoint = { Name = "GhostInspectPoint", UseTextSpecial = "UseGhostEavesdropper", SpecialInteractFunctionName = "UseGhostEavesdropper", RandomLines = { { Name = "Ghost_Recruit01" }, { Name = "Ghost_Recruit02" }, { Name = "Ghost_Recruit03" }, { Name = "Ghost_Recruit04" }, { Name = "Ghost_Recruit05" }, { Name = "Ghost_Recruit06" }, { Name = "Ghost_Agent30" }, { Name = "Ghost_Ranger06", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, }, }, } }, GameStateRequirements = { { Path = { "GameState", "ExorcisedNames", "ShadeFieldsGreyIdle" }, Comparison = ">=", Value = 3, }, { Path = { "GameState", "ExorcisedNames", "ShadeClockworkIdle" }, Comparison = ">=", Value = 3, }, { Path = { "CurrentRun", "NumGhostGroupsActive" }, Comparison = "<=", Value = 0, }, ChanceToPlay = 0.5, --[[ { Path = { "CurrentRun", "ExorcisedNames", }, HasAny = { "ShadeErebusIdle", "ShadeEphyraIdle", "ShadeOceanusSIdle", "ShadeFieldsGreyIdle", "ShadeClockworkIdle", "ShadeShipsOneIdle", "ShadeTyphonIdle", }, }, ]]-- }, }, -- Ghost Admirers / Ghost Groupies { FunctionName = "GhostFollowers", Args = { -- if this changes, need to adjust VO under 'for Ghost Groupies' SpawnChance = 1, SpawnCountMin = 4, SpawnCountMax = 6, ScaleMin = 0.5, ScaleMax = 0.7, SpawnTypes = { "SmallGhost01", }, SpawnPointIds = { 560622, 585574 }, SpawnRadius = 150, FollowDistance = 85, BufferDistance = 20, AggroDistance = 425, LoseAggroDistance = 1200, LoseAggroMeetUpId = 585574, LoseAggroMeetUpRadis = 100, Speed = 275, CloseMoveDuration = 1.0, CloseMoveDistance = 200, }, GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, }, }, -- Moros Accessories { FunctionName = "ActivatePrePlacedObstacles", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "MorosSecondAppearance" }, }, }, Args = { Groups = { "MorosAccessories" }, }, }, -- Eris Graffiti { FunctionName = "GenericPresentation", GameStateRequirements = { NamedRequirementsFalse = { "ErisUnlocked" }, }, Args = { SetAlpha = 0.0, Ids = { 800360, 800379, 800359, 800380, }, -- ErisGraffiti group }, }, -- Eris Bullets { FunctionName = "ActivatePrePlacedObstacles", GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Eris_01" } }, }, }, Args = { Groups = { "ErisBullets" }, }, }, -- Hypnos Plushes { FunctionName = "ActivatePrePlacedObstacles", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, }, Args = { Ids = { 800616, 800612, 800648, 800647, }, }, }, { FunctionName = "HideAmbientCritters", }, -- Ambient Critters (Main Hub) -- first run { FunctionName = "ActivateAmbientCritters", Args = { MinGroupsToActivate = 7, MaxGroupsToActivate = 7, Groups = { -- Eris/Moros Area "Frogs_ArtemisLilies", "Birds_DeerStatue", -- "Birds_ArtemisAreaGround", -- "Birds_ErisRock", -- "Birds_NorthBroker", -- Hecate Cauldron Area "Birds_HecateTrees", "Birds_NorthCauldrons", -- "Birds_SouthCauldrons", -- Broker Area -- "Cats_Broker", -- "Frogs_DockNorth", "Frogs_DockSouth", -- "Dogs_NemesisTent", "Birds_CharonDock", -- Farm Area -- "Birds_NearHypnos", "Birds_HadesFountain", -- "Cats_NearHypnos", -- "Birds_FarmBench", -- "Birds_NearOdysseus", -- "Cats_NearPrerunDoor", }, }, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "==", Value = 0, }, -- ChanceToPlay = 1.0, }, }, -- before toula { FunctionName = "ActivateAmbientCritters", Args = { MinGroupsToActivate = 6, MaxGroupsToActivate = 8, Groups = { -- Eris/Moros Area "Frogs_ArtemisLilies", "Birds_DeerStatue", "Birds_ArtemisAreaGround", "Birds_ErisRock", "Birds_NorthBroker", -- Hecate Cauldron Area "Birds_HecateTrees", "Birds_NorthCauldrons", "Birds_SouthCauldrons", -- Broker Area -- "Cats_Broker", "Frogs_DockNorth", "Frogs_DockSouth", -- "Dogs_NemesisTent", "Birds_CharonDock", -- Farm Area "Birds_NearHypnos", "Birds_HadesFountain", -- "Cats_NearHypnos", "Birds_FarmBench", "Birds_NearOdysseus", -- "Cats_NearPrerunDoor", }, }, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 1, }, { PathFalse = { "GameState", "FamiliarsUnlocked", "CatFamiliar" }, }, -- ChanceToPlay = 1.0, }, }, -- after toula, no clear { FunctionName = "ActivateAmbientCritters", Args = { MinGroupsToActivate = 7, MaxGroupsToActivate = 9, Groups = { -- Eris/Moros Area "Frogs_ArtemisLilies", "Birds_DeerStatue", "Birds_ArtemisAreaGround", "Birds_ErisRock", "Birds_NorthBroker", -- Hecate Cauldron Area "Birds_HecateTrees", "Birds_NorthCauldrons", "Birds_SouthCauldrons", -- Broker Area "Cats_Broker", "Frogs_DockNorth", "Frogs_DockSouth", "Dogs_NemesisTent", "Birds_CharonDock", -- Farm Area "Birds_NearHypnos", "Birds_HadesFountain", "Cats_NearHypnos", "Birds_FarmBench", "Birds_NearOdysseus", "Cats_NearPrerunDoor", }, }, GameStateRequirements = { { PathTrue = { "GameState", "FamiliarsUnlocked", "CatFamiliar" }, }, -- ChanceToPlay = 1.0, }, }, -- Ambient Critters (Spawn Area) { FunctionName = "ActivateAmbientCritters", Args = { MinGroupsToActivate = 1, MaxGroupsToActivate = 2, Groups = { "Birds_MelSpawnEast", "Birds_MelSpawnWest", }, }, GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, ChanceToPlay = 0.75, }, }, -- Ambient Critters (Taverna) { FunctionName = "ActivateAmbientCritters", Args = { MinGroupsToActivate = 1, MaxGroupsToActivate = 2, Groups = { "Cats_Taverna", "Birds_TavernaSouthEast", "Birds_WestTaverna", }, }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, ChanceToPlay = 0.75, }, }, -- Ambient Critters (Fishing) { FunctionName = "ActivateAmbientCritters", Args = { MinGroupsToActivate = 1, MaxGroupsToActivate = 3, Groups = { "Frogs_FishingPier", "Cats_FishingPier", "Birds_FishingPierCrates", "Birds_FishingPierBarrels", "Birds_FishingPierGate", }, }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeFishingPoint" }, }, ChanceToPlay = 0.5, }, }, -- Ambient Critters (Bathhouse) { FunctionName = "ActivateAmbientCritters", Args = { MinGroupsToActivate = 1, MaxGroupsToActivate = 1, Groups = { "Birds_Bathhouse", }, }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBathHouse" }, }, ChanceToPlay = 0.33, }, }, { FunctionName = "SetupPrePlacedUnits", Args = { TypeNames = { "NPC_LightRanged" }, }, }, { FunctionName = "UnlockDeathAreaInteractables", Args = {}, }, { FunctionName = "RestoreMusicianMusic", GameStateRequirements = { OrRequirements = { { { PathFalse = { "CurrentRun", "PlayedTrueEnding" }, }, }, { { PathTrue = { "PreviousDeathAreaRoom" }, }, }, }, }, }, { FunctionName = "CheckConversations", Args = { CheckNoConversationFunctions = true, }, GameStateRequirements = { { PathFalse = { "CurrentRun", "ActiveBounty" }, }, }, FailedFunctionName = "CheckConversations", FailedFunctionArgs = { CheckNoConversationFunctions = true, PlayOnceFlag = "AllowPostBounty", }, }, { FunctionName = "CheckDashOverride", Args = {}, }, { FunctionName = "PreGenerateNextBiomeState", Args = {}, }, }, ThreadedEvents = { -- Ghost Patrols / GhostPatrol { FunctionName = "PatrolPath", GameStateRequirements = { -- None }, Args = { SpawnTypes = { "ShadeHubGarlicIdle01" }, MaxPatrols = 1, SendPatrolInterval = 4, SpeedMin = 40, SpeedMax = 60, ScaleMin = 0.8, ScaleMax = 0.9, FadeInDuration = 0.5, Loop = true, Path = { { Id = 585636, OffsetRadius = 50, PostArriveWait = 5, AngleTowardIdOnStop = 583631 }, { Id = 585635, OffsetRadius = 50, PostArriveWait = 5, AngleTowardIdOnStop = 567390 }, }, }, }, { FunctionName = "PatrolPath", GameStateRequirements = { -- None }, Args = { SpawnTypes = { "ShadeHubWaterIdle01" }, MaxPatrols = 2, SendPatrolInterval = 12, SpeedMin = 70, SpeedMax = 100, ScaleMin = 0.8, ScaleMax = 0.9, FadeInDuration = 0.5, Loop = true, Path = { { Id = 585618, OffsetRadius = 50 }, { Id = 585633, OffsetRadius = 50 }, { Id = 585619, OffsetRadius = 50 }, { Branch = { { -- Branch Option A -- Nemesis Loop { Id = 585620, OffsetRadius = 50, PostArriveWait = 1, EmoteOnEndChance = 0.3, EmoteOnEnd = "Fear", AngleTowardIdOnStop = 585215 }, { Id = 585621, OffsetRadius = 50, PostArriveWait = 3, AngleTowardIdOnStop = 561072 }, { Id = 585622, OffsetRadius = 50 }, }, { -- Branch Option B -- Familiars { Id = 585627, OffsetRadius = 50, PostArriveWait = 3, EmoteOnEndChance = 0.3, EmoteOnEnd = "Smile", AngleTowardIdOnStop = 576298 }, { Id = 800764, OffsetRadius = 50 }, { Id = 800765, OffsetRadius = 50 }, { Id = 800766, OffsetRadius = 50 }, }, }, }, { Id = 585623, OffsetRadius = 50 }, { Branch = { { -- Branch Option A -- Cauldron { Id = 585630, OffsetRadius = 50, PostArriveWait = 3, EmoteOnEndChance = 0.3, EmoteOnEnd = "Victory", AngleTowardIdOnStop = 567390 }, { Id = 585631, OffsetRadius = 50 }, }, { -- Branch Option B -- { Id = 585623, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Determined", AngleTowardIdOnStop = 567390 }, { Id = 585623, OffsetRadius = 50, }, { Id = 585624, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, }, }, }, }, -- Mel's Tent { Id = 585625, OffsetRadius = 50 }, { Branch = { { -- Branch Option A { Id = 800767, OffsetRadius = 50 }, { Id = 585637, OffsetRadius = 50 }, }, { -- Branch Option B { Id = 800769, OffsetRadius = 50 }, }, }, }, }, }, }, --[[ fountain of the dead patrol path { FunctionName = "PatrolPath", GameStateRequirements = { -- None }, Args = { SpawnTypes = { "ShadeHubMIdle01" }, MaxPatrols = 1, SendPatrolInterval = 4, SpeedMin = 45, SpeedMax = 60, ScaleMin = 0.8, ScaleMax = 0.9, FadeInDuration = 0.5, Loop = true, Path = { { Id = 743562, OffsetRadius = 50, PostArriveWait = 8, AngleTowardIdOnStop = 567390 }, { Id = 743559, OffsetRadius = 50 }, { Id = 743558, OffsetRadius = 50 }, { Id = 743557, OffsetRadius = 50 }, { Id = 743556, OffsetRadius = 50 }, { Id = 743563, OffsetRadius = 50, PostArriveWait = 8, EmoteOnEndChance = 0.3, AngleTowardIdOnStop = 743214, EmoteOnEnd = "Fear" }, { Id = 743564, OffsetRadius = 50 }, { Id = 743557, OffsetRadius = 50 }, { Id = 743558, OffsetRadius = 50 }, { Id = 743559, OffsetRadius = 50 }, }, }, }, ]]-- --[[ taverna patrol path { FunctionName = "PatrolPath", GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, }, Args = { SpawnTypes = { "ShadeHubSIdle01", "ShadeHubSIdle01", "ShadeHubHatIdle01" }, MaxPatrols = 3, SendPatrolInterval = 8, SpeedMin = 45, SpeedMax = 60, ScaleMin = 0.7, ScaleMax = 0.8, FadeInDuration = 1.0, Loop = true, Path = { { Id = 743570, OffsetRadius = 50 }, { Id = 743571, OffsetRadius = 50 }, { Id = 743572, OffsetRadius = 50 }, { Id = 743565, OffsetRadius = 50 }, { Id = 743566, OffsetRadius = 50 }, { Id = 743567, OffsetRadius = 50 }, { Id = 743568, OffsetRadius = 50 }, { Id = 743569, OffsetRadius = 50 }, }, }, }, ]]-- --[[ { FunctionName = "PatrolPath", GameStateRequirements = { -- None }, Args = { SpawnTypes = { "TartarusGhost01" }, MaxPatrols = 2, SendPatrolInterval = 2.5, SpeedMin = 120, SpeedMax = 120, FadeInDuration = 0.5, Loop = true, Path = { -- Mel's Tent { Id = 585590, OffsetRadius = 50 }, { Id = 585605, OffsetRadius = 50 }, { Id = 585609, OffsetRadius = 50 }, { Id = 585588, OffsetRadius = 50 }, { Id = 585606, OffsetRadius = 50 }, { Id = 585607, OffsetRadius = 50 }, -- { Id = 585607, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, AngleTowardIdOnStop = 567390 }, { Id = 585608, OffsetRadius = 50 }, }, }, }, { FunctionName = "PatrolPath", GameStateRequirements = { -- None }, Args = { SpawnTypes = { "TartarusGhost01" }, MaxPatrols = 4, SendPatrolInterval = 3.0, SpeedMin = 100, SpeedMax = 200, FadeInDuration = 1.0, Loop = true, Path = { { Id = 585587, OffsetRadius = 50 }, { Branch = { { -- Branch Option A -- Tree Loop { Id = 585588, OffsetRadius = 50 }, { Id = 585589, OffsetRadius = 50 }, { Id = 585590, OffsetRadius = 50 }, { Id = 585602, OffsetRadius = 50 }, }, { -- Branch Option B { Id = 585587, OffsetRadius = 50 }, }, }, }, { Branch = { -- Cauldron South { -- Branch Option A { Id = 585578, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Determined", AngleTowardIdOnStop = 567390 }, }, { -- Branch Option B { Id = 585603, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Determined", AngleTowardIdOnStop = 567390 }, }, { -- Branch Option C { Id = 585604, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Determined", AngleTowardIdOnStop = 567390 }, }, }, }, { Branch = { { -- Branch Option A { Id = 585579, OffsetRadius = 30, }, -- Broker { Id = 585580, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Smile", AngleTowardIdOnStop = 558012 }, { Id = 585581, OffsetRadius = 30, }, }, { -- Branch Option B { Id = 585582, OffsetRadius = 50, }, }, }, }, { Id = 585582, OffsetRadius = 50, }, { Id = 585576, OffsetRadius = 50, }, { Branch = { { -- Branch Option A -- Nemesis { Id = 585575, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Disgruntled", AngleTowardIdOnStop = 585215 }, { Id = 585613, OffsetRadius = 50, }, { Id = 585614, OffsetRadius = 50, }, { Id = 585595, OffsetRadius = 50, }, }, { -- Branch Option B { Id = 585615, OffsetRadius = 50, }, }, }, }, { Id = 585610, OffsetRadius = 50, }, -- Odysseus { Id = 585583, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "OhBoy", AngleTowardIdOnStop = 561464 }, { Branch = { { -- Branch Option A { Id = 585584, OffsetRadius = 50, }, -- Hypnos { Id = 585593, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Grief", AngleTowardIdOnStop = 575786 }, { Id = 585584, OffsetRadius = 50, }, { Id = 585583, OffsetRadius = 50, }, }, { -- Branch Option B { Id = 585585, OffsetRadius = 50, }, }, }, }, { Id = 585585, OffsetRadius = 50, }, { Branch = { { -- Branch Option A -- Hecate Familiars { Id = 585594, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Fear", AngleTowardIdOnStop = 575786 }, { Id = 585611, OffsetRadius = 50, }, }, { -- Branch Option B { Id = 585611, OffsetRadius = 50, }, }, }, }, -- Cauldron East { Id = 585586, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Determined", AngleTowardIdOnStop = 567390 }, { Id = 585596, OffsetRadius = 50, }, { Id = 585578, OffsetRadius = 50, }, -- Cauldron West { Id = 585577, OffsetRadius = 50, }, { Branch = { { -- Branch Option A -- Mel's Tent { Id = 585590, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Embarrassed", AngleTowardIdOnStop = 576011 }, -- Fated List { Id = 585589, OffsetRadius = 50, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Fear", AngleTowardIdOnStop = 560662 }, { Id = 585588, OffsetRadius = 50 }, }, { -- Branch Option B { Id = 585612, OffsetRadius = 50, }, }, }, }, --[[ { Id = 393497, OffsetRadius = 200 }, { Branch = { { { Id = 393491, OffsetRadius = 30, }, { Branch = { { { Id = 393499, OffsetRadius = 10 }, { Id = 393485, OffsetRadius = 10, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Smile", AngleTowardIdOnStop = 370010 }, { Id = 393499, OffsetRadius = 10 }, }, { { Id = 393484, OffsetRadius = 100, }, { Id = 393483, OffsetRadius = 30, }, { Id = 424986, OffsetRadius = 30, }, { Id = 424987, OffsetRadius = 10, PostArriveWait = 4, EmoteOnEnd = "Smile" }, { Id = 424986, OffsetRadius = 30, }, { Id = 393483, OffsetRadius = 30, }, { Id = 393484, OffsetRadius = 30, }, }, { { Id = 393499, OffsetRadius = 10 }, { Id = 393498, OffsetRadius = 10, PostArriveWait = 2, EmoteOnEndChance = 0.3, EmoteOnEnd = "Disgruntled" }, { Id = 393499, OffsetRadius = 30, }, }, }, }, }, { { Id = 393492, OffsetRadius = 10 }, { Branch = { { { Id = 393486, OffsetRadius = 50, }, { Branch = { { { Id = 393489, OffsetRadius = 10, PostArriveWait = 1.0 }, { Id = 393486, OffsetRadius = 10, PostArriveWait = 1.0 }, }, { { Id = 393487, OffsetRadius = 10 }, { Id = 393488, OffsetRadius = 10, PostArriveWait = 3.0 }, { Id = 393487, OffsetRadius = 10 }, { Id = 393486, OffsetRadius = 10 }, }, { { Id = 421074, OffsetRadius = 10 }, { Id = 393490, OffsetRadius = 10, PostArriveWait = 2.0 }, { Id = 421074, OffsetRadius = 10 }, { Id = 393486, OffsetRadius = 10 }, }, { { Id = 421072, OffsetRadius = 10, PostArriveWait = 2.0, MinUseInterval = 2.0, EmoteOnEnd = "Smile" }, { Id = 393486, OffsetRadius = 10 }, }, }, }, }, }, }, }, }, }, }, }, },]]-- }, UnthreadedEvents = { }, EnterVoiceLines = { { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "==", Value = 0, }, { Path = { "PreviousDeathAreaRoom", "Name" }, IsAny = { "Hub_PreRun" }, }, }, { Cue = "/VO/Melinoe_1900", Text = "Thôi nào, Mel. Lối ra ở hướng kia mà..." }, }, }, InspectPointPriority = { 421076, -- Homer Reveal 560663, -- Fated List 576171, -- Moros 743477, -- Artemis Singing 743473, -- Hecate Absent 743472, -- Eris 743475, -- Hades Fountain }, -- Hub_Main InspectPoints / Inspect Points InspectPoints = { [421076] = { PlayOnce = true, UseText = "UseExamineMisc", InteractTextLineSets = { InspectCrossroads01 = { { Cue = "/VO/Storyteller_0234", PreLineAngleHeroTowardTargetId = 575836, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Crossroads: Nơi ẩn náu huyền bí nằm giữa ranh giới của thế giới phàm trần và Địa Ngục, che chở những kẻ vẫn trung thành với Thần Hades, vị chúa tể chân chính của người chết." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_2959", Text = "Cùng nhau, chúng ta sẽ lấy lại vương quốc của cha ta." }, -- { Cue = "/VO/Melinoe_0031", Text = "Not many of us left..." }, }, }, }, }, }, -- Inspect: Tent 1 [566844] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "InspectHomerReveal01", }, }, -- Dora inactive { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 560708, }, Alive = false }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "InspectHomerReveal01" }, Min = 1 }, }, }, InteractTextLineSets = { InspectTent01 = { { Cue = "/VO/Storyteller_0078", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Căn lều đơn sơ của vị Công Chúa Melinoë kiên cường vẫn gọn gàng và sạch sẽ không tì vết." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_0032", Text = "Ta thích ở sạch hơn." }, }, }, }, }, -- Inspect: Frinos [576169] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "GameState", "SpecialInteractRecord", "FrogFamiliar" }, Comparison = ">=", Value = 5, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 4, }, { Path = { "CurrentRun" }, HasNone = { "Cleared", "BountyCleared" } }, }, InteractTextLineSets = { InspectTent01 = { { Cue = "/VO/Storyteller_0121", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Cô Công Chúa bóng đêm tiết lộ những nỗi sợ sâu thẳm nhất đến cho một sinh vật lưỡng cư già điềm tĩnh, cách đây rất lâu sinh vật này đã nhảy vào trong lều, và sau đó là chạm đến trái tim cô." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_1684", Text = "Chỉ những nỗi sợ sâu thẳm nhất cho ngươi thôi, Frinos!", PostLineFunctionName = "FrogFamiliarReaction" }, }, }, }, }, -- Inspect: Hypnos thicket [558339] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosFirstMeeting" }, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 3, }, { PathFalse = { "GameState", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, }, InteractTextLineSets = { InspectCrossroadsHypnos01 = { { Cue = "/VO/Storyteller_0340", Text = "{#Emph}Hiện Thân Giấc Ngủ chìm vào giấc ngủ vĩnh hằng tại một góc rừng nhỏ, nơi mà đôi khi Công Chúa Địa Ngục tìm để mỗi khi cần tĩnh tâm và suy ngẫm." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4070", Text = "Hoặc chỉ để kiểm tra ngài ấy thôi." }, }, }, }, }, -- Inspect: Hypnos Gift [800722] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, }, InteractTextLineSets = { InspectHypnosGift01 = { { Cue = "/VO/Storyteller_0502", Text = "{#Emph}Sau khi vội vã rời khỏi Crossroads, Hiện Thân Giấc Ngủ vừa mới tỉnh dậy sau thời gian dài, đã trao lại vài món đồ để bày tỏ lòng biết ơn, và... có thể nhiều hơn thế nữa..." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_5435", Text = "Ta đã kết thúc giấc mơ của ngài ấy, theo một nghĩa nào đó, ngài ấy cũng đã kết thúc giấc mơ của ta." }, }, }, }, }, -- Inspect: Hades Fountain / Fountain of the Dead [743475] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, InteractTextLineSets = { InspectHadesFountain01 = { { Cue = "/VO/Storyteller_0341", PreLineAngleHeroTowardTargetId = 743214, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Khuôn mặt được chạm khắc tinh xảo của vị vua Địa Ngục đã bị lật đổ, mang đến cảm giác trầm ngâm và ý chí kiên cường cho những kẻ nhìn vào đôi mắt vô hồn đó." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 5 }, }, { Cue = "/VO/Melinoe_4071", Text = "Hãy dõi theo con, thưa Cha..." }, }, }, }, }, -- Inspect: Hades Fountain / Fountain of the Dead (StoryReset) [800770] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeStoryReset" }, }, }, InteractTextLineSets = { InspectHadesFountain02 = { { Cue = "/VO/Storyteller_0526", PreLineAngleHeroTowardTargetId = 743214, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", PostLineFunctionName = "SetupStoryResetObject", Text = "{#Emph}Không có cơ hội thứ hai trên thế giới này. Titan Chronos từng nói rằng, có những sai lầm trong quá khứ không thể sửa chữa... chỉ là những viễn cảnh thoáng quá, bị Thời Gian lãng quên." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_5764", Text = "Có những viễn cảnh có thể xảy ra..." }, -- { Cue = "/VO/Melinoe_5762", Text = "My task..." }, }, }, }, }, -- Inspect: Eris passage / Eris gate [558340] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAny = { "ErisFirstMeeting", "ErisFirstMeeting_B", "ErisFoughtAgainstHer01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 590880, 590879, 590882, }, Alive = false }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, InteractTextLineSets = { InspectCrossroadsPassage01 = { { Cue = "/VO/Storyteller_0012", Text = "{#Emph}Crossroads đã che giấu kế hoạch và hành động của nàng phù thủy cùng đồng minh của nàng để mang những ác mộng, nhưng liệu sẽ kéo dài được bao lâu?" }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_0403", Text = "Cũng đủ lâu rồi." }, }, }, }, }, -- Inspect: Eris herself [743472] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "O_Boss01", "O_Boss02" }, }, { Path = { "GameState", "RoomsEntered", "O_Boss01" }, Comparison = ">=", Value = 3, }, { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsNone = { "ErisFoughtAgainstHer01", "ErisWithHecate01" }, }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 585573, }, }, }, }, InteractTextLineSets = { InspectCrossroadsEris01 = { { Cue = "/VO/Storyteller_0345", PreLineAngleHeroTowardTargetId = 590215, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Hiện thân Xung Đột cùng đôi cánh đen đã bay đến bất cứ nơi nào mà cô ta muốn, và gần đây thường là vật cản trên hành trình của Công Chúa Địa Ngục." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_4075", Text = "Chào, Eris..." }, }, { PreLineWait = 0.25, ObjectType = "NPC_Eris_01", { Cue = "/VO/Eris_0133", Text = "{#Emph}Huh?" }, }, }, }, }, }, -- Inspect: Fated List [560663] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathFalse = { "GameState", "TextLinesRecord", "MorosSecondAppearance" }, }, { PathTrue = { "GameState", "TextLinesRecord", "MorosGrantsQuestLog" }, }, { PathTrue = { "GameState", "WorldUpgradesViewed", "WorldUpgradeQuestLog" }, }, { PathTrue = { "GameState", "ScreensViewed", "QuestLog" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 560612 }, Alive = false }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, InteractTextLineSets = { InspectFatedList01 = { { Cue = "/VO/Storyteller_0080", Text = "{#Emph}Ý nguyện cuối cùng của Ba Nữ Thần Định Mệnh, những kẻ ẩn dật quyết định mọi điều sắp xảy đến, giờ đã nằm trong tay Công Chúa Địa Ngục." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_1682", Text = "Với sự trợ giúp của họ, chúng ta sẽ có cơ hội chiến thắng." }, }, }, }, }, -- Inspect: Odysseus [576168] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "GameState", "UseRecord", "NPC_Odysseus_01" }, Comparison = ">=", Value = 5, }, { PathFalse = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 557112, }, }, }, { PathFalse = { "SessionMapState", "OdysseusAtTaverna" } }, }, InteractTextLineSets = { InspectOdysseus01 = { { Cue = "/VO/Storyteller_0122", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Không một mánh khoé hay mưu mẹo nào của kẻ cướp bóc thành phố ranh ma, Odysseus, có thể đủ để đánh bại được Titan Thời Gian..." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_1685", Text = "Họ bảo đừng bao giờ đánh giá thấp người đấy..." }, }, { PreLineWait = 0.25, ObjectType = "NPC_Odysseus_01", RequiredSourceValueFalse = "InPartnerConversation", { Cue = "/VO/Odysseus_0123", Text = "{#Emph}Hah{#Prev}, thôi nào." }, }, }, }, }, }, -- Inspect: Nemesis [576170] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Nemesis_01" }, Comparison = ">=", Value = 6, }, { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsNone = { "NemesisWithMoros01", "NemesisWithMoros02", "NemesisWithMoros03", "NemesisWithHypnos01", "NemesisWithHecate01", "NemesisWithHecate02", "NemesisWithEris01", "NemesisWithEris02" }, }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 557113, }, }, }, }, InteractTextLineSets = { InspectNemesis01 = { { Cue = "/VO/Storyteller_0134", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Nữ Thần Báo Ứng đưa ánh mắt phán xét tất cả những người có mặt ở Crossroads, nơi mà nàng có trách nhiệm bảo vệ vì bổn phận và sự thù hận." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_1687", Text = "Ta không muốn đắc tội với Nem đâu..." }, }, { PreLineWait = 0.25, ObjectType = "NPC_Nemesis_01", RequiredSourceValueFalse = "InPartnerConversation", { Cue = "/VO/Nemesis_0120", Text = "Sao cũng được." }, }, }, }, }, }, -- Inspect: Moros [576171] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "NPC_Moros_01" }, }, { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsNone = { "MorosWithOdysseus01", "MorosWithHypnos01" }, }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 560612, }, }, }, }, InteractTextLineSets = { InspectMoros01 = { { Cue = "/VO/Storyteller_0135", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Hiện thân của sự Hủy Diệt, bị căm ghét và khiếp sợ, đi đến bất cứ đâu và đảm bảo những gì mà Nữ Thần Định Mệnh đã tiên đoán sẽ xảy ra, và chỉ có họ mới có thể tiên đoán được sự xuất hiện của ngài." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_1688", Text = "Ngài ấy chắc chắn biết cách tạo ấn tượng khi xuất hiện..." }, }, { PreLineWait = 0.25, ObjectType = "NPC_Moros_01", RequiredSourceValueFalse = "InPartnerConversation", { Cue = "/VO/Moros_0093", Text = "Công Chúa?" }, }, }, }, }, }, -- Inspect: Dora [576172] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Dora_01" }, Comparison = ">=", Value = 5, }, { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsNone = { "DoraWithMoros01", "DoraWithMoros02" }, }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 566832, }, }, }, }, InteractTextLineSets = { InspectDora01 = { { Cue = "/VO/Storyteller_0136", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Một số Linh Hồn Người Chết buộc phải mãi mãi lang thang vô định, trong khi những số khác thì không còn chút ý thức nào và chỉ lang thang tại một nơi nào đấy." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_1689", Text = "Dora cần phải ra ngoài thường xuyên hơn..." }, }, { PreLineWait = 0.25, ObjectType = "NPC_Dora_01", RequiredSourceValueFalse = "InPartnerConversation", { Cue = "/VO/Dora_0118", Text = "Không đời nào." }, }, }, }, }, }, -- Inspect: Hecate Corner [743473] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HecateHideAndSeek01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 }, Alive = false }, }, NamedRequirementsFalse = { "HecateMissing" }, }, InteractTextLineSets = { InspectCrossroadsHecate01 = { { Cue = "/VO/Storyteller_0344", Text = "{#Emph}Hecate, Phù Thủy Crossroads, người quan sát vô hình giữa các cõi, và là người nắm giữ chìa khóa mở ra những lối đi ẩn mà ngay cả thần thánh cũng không thể nhìn thấy." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4074", Text = "Và cũng là Nữ Chúa của chúng ta." }, }, }, }, }, }, -- Inspect: Crossroads Beasts [743479] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "Cosmetic_AmbientDogs" }, }, }, InteractTextLineSets = { InspectCrossroadsBeasts01 = { { Cue = "/VO/Storyteller_0346", Text = "{#Emph}Những linh thú trung thành của Phù Thủy Crossroads luôn âm thầm dẫn lối cho muôn loài khác đến nơi yên bình giữa các cõi." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4076", Text = "Chúng ta có thể học được rất nhiều từ muôn loài." }, }, }, }, }, }, -- Inspect: Broker [576166] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 558096, }, }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, InteractTextLineSets = { InspectBroker01 = { { Cue = "/VO/Storyteller_0129", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Sau khi Chronos mưu mô vô độ chiếm giữ Lãnh Địa của Hades, Shades of the Dead trú ngụ nơi đấy đều chạy tán loạn lên tập cùng trái đất." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, Cooldowns = { { Name = "SaidWelcomeHereRecently", Time = 180 }, }, { Cue = "/VO/Melinoe_1679", Text = "Các Shade, mọi người được chào đón và an toàn ở đây.", PostLineFunctionName = "WretchedBrokerReaction" }, }, }, }, }, -- Inspect: Learned Sage [589547] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "InspectTaverna01" } }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 589466, }, }, }, }, InteractTextLineSets = { InspectLearnedSage01 = { { Cue = "/VO/Storyteller_0238", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Lịch sử chứa đựng nhiều bài học, chỉ dành cho những ai chịu tìm hiểu những bài học ẩn giấu trong mọi câu chuyện được cho là thật; đó là một cuộc hành trình cả đời, tự thân vận động." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2961", Text = "Tương lai vẫn là điều không thể đoán trước...", PostLineFunctionName = "LearnedSageReaction" }, }, }, }, }, -- Inspect: Record Keeper [589548] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "InspectTaverna01" } }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 589467, }, }, }, }, InteractTextLineSets = { InspectRecordKeeper01 = { { Cue = "/VO/Storyteller_0239", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Từng có một phòng điều hành ở Địa Ngục, nơi mà các Shade ghi chép cẩn thận mọi chi tiết; một vai trò mà nhiều linh hồn khác hằng mong muốn." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2962", Text = "Chắc chắn những nỗ lực đó đều được đền đáp xứng đáng.", PostLineFunctionName = "RecordKeeperReaction" }, }, }, }, }, -- Inspect: Music Player [738760] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "InspectTaverna01" } }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 738510, }, }, }, }, InteractTextLineSets = { InspectMusicMaker01 = { { Cue = "/VO/Storyteller_0301", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Món quà âm nhạc, được ban tặng bởi chính thần Apollo rực rỡ, có sức mạnh lay động tâm hồn không gì sánh bằng; dù đó là linh hồn của người sống hay đã khuất." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_3750", Text = "Vậy thì hãy đánh thức vài linh hồn nào!", PostLineFunctionName = "MusicMakerReaction" }, }, }, }, }, -- Inspect: Singing Grove [743474] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 561502 }, Alive = false }, }, }, InteractTextLineSets = { InspectCrossroadsClearing01 = { { Cue = "/VO/Storyteller_0342", Text = "{#Emph}Ánh Trăng tỏa sáng một góc tĩnh lặng ở Crossroads, nơi Công Chúa Địa Ngục có thể tĩnh tâm và tìm lại một chút bình yên." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4072", Text = "Và lắng nghe tiếng ếch kêu." }, }, }, }, }, }, -- Inspect: Artemis [743477] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ArtemisHubSinging01" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "ArtemisHubSinging01" }, }, { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/ArtemisSong_MC", "/Music/IrisEndThemeCrossroads_MC" }, }, { Path = { "ConfigOptionCache", "MusicVolume" }, Comparison = ">", Value = 0.1, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 561502 }, }, }, }, InteractTextLineSets = { InspectCrossroadsArtemis01 = { { Cue = "/VO/Storyteller_0343", PreLineAngleHeroTowardTargetId = 742272, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Giọng nói vang vọng của Nữ Thần Săn Bắt lan tỏa khắp khu rừng tĩnh lặng như ánh trăng soi rọi, lay động những linh hồn vĩnh hằng đang cư ngụ nơi đó." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4073", Text = "Không tệ nhỉ?" }, }, }, }, }, }, -- Inspect: Taverna [576167] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, }, InteractTextLineSets = { InspectTaverna01 = { { Cue = "/VO/Storyteller_0130", PreLineAnim = "MelTalkPensive01", PreLineAnimTarget = "Hero", PostLineAnim = "MelinoeIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Cảm giác hy vọng và niềm vui ngắn ngủi tại Crossroads, nhưng những khoảnh khắc hiếm hoi đó thường tập trung tại quán rượu nhỏ ở nơi đó." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_1680", Text = "Không có thời gian để thư giản đâu..." }, }, }, }, }, -- Inspect: Docks [589545] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeFishingPoint" }, }, }, InteractTextLineSets = { InspectCrossroadsFishingPoint01 = { { Cue = "/VO/Storyteller_0241", Text = "{#Emph}Dòng nước than khóc chảy qua Sông Cocytus, nhưng ngay cả trong dòng nước tuyệt vọng đó, vẫn có những sinh vật học cách sinh tồn và phát triển." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2964", Text = "Ta thì cảm thấy vài cá thể trong số chúng muốn thoát khỏi đó..." }, }, }, }, }, -- Inspect: HotSprings [589546] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBathHouse" }, }, }, InteractTextLineSets = { InspectCrossroadsBathHouse01 = { { Cue = "/VO/Storyteller_0240", Text = "{#Emph}Một con suối nhỏ, lấy nhiệt từ lòng đất, dòng nước của nó tinh khiết đến mức có thể thanh lọc cả cơ thể lẫn tâm hồn." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2963", Text = "Nếu ta bước vào, có lẽ sẽ không muốn rời đi nữa..." }, }, }, }, }, -- Olympus SunMoonTimeSculpture [800667] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Icarus_01" }, Alive = false }, }, { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, InteractTextLineSets = { InspectSunMoonTimeSculpture01 = { { Cue = "/VO/Storyteller_0497", PreLineAngleHeroTowardTargetId = 575836, PreLineAnim = "MelTalkBrooding01", PreLineAnimTarget = "Hero", PostLineAnim = "MelTalkBrooding01ReturnToIdle", PostLineAnimTarget = "Hero", Text = "{#Emph}Mặt trời và mặt trăng: hai nửa của một thể thống nhất, biểu tượng của sự kết hợp giữa Olympus và Địa Ngục, và cũng là món quà mà những vị thần ban tặng cho Crossroads." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_5168", Text = "Chắc hẳn Thần Hephaestus đã tự tay tạo ra thứ này." }, }, }, }, }, }, }, ObstacleData = { -- Broker / Iris Market / Resource Shop / Wretched Broker / [558096] = { Name = "Market", AnimOffsetZ = 280, EmoteOffsetZ = 85, -- keep in sync with DistanceTriggers below InteractDistance = 250, InteractOffsetX = 40, InteractOffsetY = -35, UseText = "UseMarket", UseTextTalkAndSpecial = "UseMarketAndSpecial", OnUsedFunctionName = "UseMarketObject", SetupEvents = { { FunctionName = "GenerateMarketItems", Args = { RefreshOncePerRun = true }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant" }, GameStateRequirements = { { FunctionName = "HasUnviewedMarketItem", }, }, }, }, SpecialInteractFunctionName = "SpecialInteractSaluteBroker", SpecialInteractGameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "MarketScreen" }, }, { Path = { "GameState", "LifetimeResourcesSpent", "MetaCurrency" }, Comparison = ">=", Value = 200, }, }, SpecialInteractCooldown = 60, InteractVoiceLines = { { PreLineWait = 0.25, UsePlayerSource = true, -- RandomRemaining = true, SuccessiveChanceToPlay = 0.2, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 4 }, }, { Cue = "/VO/Melinoe_1710", Text = "Ánh trăng dẫn lối, Broker." }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, }, Activate = true, SkipDefaultSetup = true, -- Handled by WorldUpgrade DistanceTriggers = { { WithinDistance = 600, ChanceToPlay = 0.75, TriggerOnceThisRun = true, FunctionName = "PlayEmoteSimple", Args = { AnimationName = "StatusIconEmbarrassed", Group = "Combat_UI_Backing", OffsetZ = 85, -- keep in sync with EmoteOffsetZ above BlockIfSourceHasStatusAnimation = true, }, }, } }, -- GameStatsScreen / Statistician / Record Keeper [589467] = { Name = "GameStatsScreen", AnimOffsetZ = 150, Activate = true, SkipDefaultSetup = true, -- Handled by WorldUpgrade InteractDistance = 250, UseText = "GameStatsScreen_Use", UseTextTalkAndSpecial = "GameStatsScreen_UseAndSpecial", OnUsedFunctionName = "UseGameStatsScreenObject", DestroyIfNotSetup = true, SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeGameStats", }, }, }, SetupEvents = { }, SaluteSound = "/SFX/GhostEmotes/DisgruntledTINY", SpecialInteractFunctionName = "SpecialInteractSaluteBroker", SpecialInteractGameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "GameStats" }, }, }, SpecialInteractCooldown = 60, InteractVoiceLines = { { PreLineWait = 0.25, UsePlayerSource = true, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.33, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 4 }, }, { Cue = "/VO/Melinoe_3009", Text = "Chào, Người Ghi Chép." }, { Cue = "/VO/Melinoe_3010", Text = "Chào, Người Ghi Chép." }, { Cue = "/VO/Melinoe_3011", Text = "Chào, Người Ghi Chép." }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, }, DistanceTriggers = { { WithinDistance = 600, ChanceToPlay = 0.5, TriggerOnceThisRun = true, FunctionName = "PlayEmoteSimple", Args = { AnimationName = "StatusIconSmile", }, }, } }, -- RunHistoryScreen / Historian / Sage / Security Log [589466] = { Name = "RunHistoryScreen", AnimOffsetZ = 150, EmoteOffsetZ = 80, Activate = true, SkipDefaultSetup = true, -- Handled by WorldUpgrade InteractDistance = 250, UseText = "RunHistoryScreen_Use", UseTextTalkAndSpecial = "RunHistoryScreen_UseAndSpecial", OnUsedFunctionName = "UseRunHistoryScreenObject", DestroyIfNotSetup = true, SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeRunHistory" }, }, }, SaluteSound = "/SFX/GhostEmotes/DisgruntledTINY", SpecialInteractFunctionName = "SpecialInteractSaluteBroker", SpecialInteractGameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "RunHistory" }, }, }, SpecialInteractCooldown = 60, InteractVoiceLines = { { PreLineWait = 0.25, UsePlayerSource = true, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.33, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 4 }, }, { Cue = "/VO/Melinoe_3006", Text = "Chào, Sage." }, { Cue = "/VO/Melinoe_3007", Text = "Chào, nhà hiền triết Sage." }, { Cue = "/VO/Melinoe_3008", Text = "Chào buổi tối, Sage." }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, }, SetupEvents = { }, DistanceTriggers = { { WithinDistance = 600, ChanceToPlay = 0.5, TriggerOnceThisRun = true, FunctionName = "PlayEmoteSimple", Args = { AnimationName = "StatusIconEmbarrassed", OffsetZ = 80, }, }, } }, -- MusicPlayer / Bard Shade [738510] = { Name = "MusicPlayerScreen", AnimOffsetZ = 270, EmoteOffsetZ = 50, Activate = true, SkipDefaultSetup = true, -- Handled by WorldUpgrade InteractDistance = 250, UseText = "MusicPlayerScreen_Use", UseTextTalkAndSpecial = "MusicPlayerScreen_UseAndSpecial", OnUsedFunctionName = "UseMusicPlayerScreenObject", DestroyIfNotSetup = true, SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeMusicPlayer" }, }, }, SetupEvents = { { FunctionName = "MusicPlayerPlaySongPresentation", GameStateRequirements = { { PathTrue = { "GameState", "MusicPlayerSongName" }, }, { Path = { "CurrentRun", "SuppressAmbientMusic" }, Comparison = "!=", Value = "MusicPlayer", }, }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant" }, GameStateRequirements = { { FunctionName = "HasUnviewedMusicPlayerSong", }, }, }, }, SaluteSound = "/SFX/GhostEmotes/DisgruntledTINY", SpecialInteractFunctionName = "SpecialInteractSaluteBroker", SpecialInteractGameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "MusicPlayer" }, }, }, SpecialInteractCooldown = 60, InteractVoiceLines = { { PreLineWait = 0.25, UsePlayerSource = true, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.25, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 4 }, { Name = "MelinoeMusicMakerSaluteSpeech", Time = 5 } }, { Cue = "/VO/Melinoe_3845", Text = "Apollo chắc sẽ tự hào lắm!" }, { Cue = "/VO/Melinoe_3846", Text = "Xin chào, Nhà Sáng Tác Nhạc.", PlayFirst = true }, { Cue = "/VO/Melinoe_3677", Text = "Hãy chơi đi, Nhà Sáng Tác Nhạc." }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, }, }, -- Mailbox / Charon Shipments [583652] = { Name = "Mailbox", AnimOffsetZ = 180, EmoteOffsetZ = 180, InteractDistance = 200, InteractOffsetX = 0, InteractOffsetY = 0, UseText = "UseMailbox", OnUsedFunctionName = "UseMailboxObject", Activate = true, SetupGameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "CharonPointsDrop" }, }, NamedRequirements = { "MailboxUnlocked" }, }, SetupEvents = { { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { { FunctionName = "ShouldShowMailboxWantsToTalkIndicator", }, }, }, { FunctionName = "SetupMailboxStatus", Args = { }, GameStateRequirements = { { Path = { "GameState", "MailboxStatus" }, UseLength = true, Comparison = ">=", Value = 1, }, }, }, }, DistanceTriggers = { { WithinDistance = 750, GameStateRequirements = { { PathFalse = { "GameState", "ScreensViewed", "MailboxScreen" }, }, { PathEmpty = { "GameState", "MailboxStatus" }, }, }, VoiceLines = { PlayOnce = true, PlayOnceContext = "MailboxFirstAppearance", UsePlayerSource = true, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, { Cue = "/VO/Melinoe_2600", Text = "Broker có gì đó...", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 558096 }, }, }, }, }, { Cue = "/VO/Melinoe_0827", Text = "Something there.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 558096 }, Alive = false }, }, }, } }, }, { WithinDistance = 625, GameStateRequirements = { { PathTrue = { "CurrentRun", "AnyMailboxReady" }, }, }, VoiceLines = { BreakIfPlayed = true, RandomRemaining = true, UsePlayerSource = true, PlayOnceFromTableThisRun = true, SuccessiveChanceToPlay = 0.5, SuccessiveChanceToPlayAll = 0.5, GameStateRequirements = { { PathFalse = { "CurrentRun", "UseRecord", "Mailbox" } }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, }, { Cue = "/VO/Melinoe_2280", Text = "Lô hàng đã đến." }, { Cue = "/VO/Melinoe_2281", Text = "Lô hàng mới đã đến.", PlayFirst = true }, { Cue = "/VO/Melinoe_2282", Text = "Có gì mới cho ta không?", PlayFirst = true }, { Cue = "/VO/Melinoe_2283", Text = "Ngài Charon luôn cung cấp nguồn hàng.", PlayFirst = true }, { Cue = "/VO/Melinoe_0156", Text = "Đã có một lô hàng mới..." }, }, }, }, }, -- Cauldron / Critical Item Store / GhostAdmin [558175] = { Name = "GhostAdmin", InteractDistance = 275, InteractOffsetX = -28, InteractOffsetY = 90, AnimOffsetZ = 180, UseText = "UseGhostAdmin", OnUsedFunctionName = "UseGhostAdmin", SetupEvents = { { FunctionName = "SetupCauldronLocked", Args = { UseText = "UseGhostAdmin_Locked", UseSound = "/SFX/LavaBubbleBurst", OnUsedFunctionName = "UseLockedSystemObjectPresentation", OnUsedFunctionArgs = { VoiceLines = "LockedCauldronVoiceLines" }, }, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "<=", Value = 0, }, }, }, { FunctionName = "SetupCauldronCookStatus", Args = { }, GameStateRequirements = { { Path = { "GameState", "CookStatus", }, UseLength = true, Comparison = ">=", Value = 1, }, }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { NamedRequirements = { "AnyGhostAdminItemAffordable" }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 1, }, { Path = { "GameState", "CookStatus", }, UseLength = true, Comparison = "<=", Value = 0, }, }, }, { FunctionName = "SetupCauldronWitchcraftPresentation", Args = { LeadParticipantId = 556921, OtherParticipantIds = { 575866, 575867, 575859, 575860, }, CenterPointId = 575850, }, GameStateRequirements = { ChanceToPlay = 0.5, NamedRequirementsFalse = { "AnyGhostAdminItemAffordable" }, { -- No status animation PathFromSource = true, PathFalse = { "StatusAnimation" }, }, { -- Not cooking anything Path = { "GameState", "CookStatus" }, UseLength = true, Comparison = "<=", Value = 0, }, { -- Artemis not present for singing PathFalse = { "CurrentRun", "ArtemisHubSong" }, }, { PathFalse = { "CurrentRun", "CauldronWitchcraftOccurred" }, }, { PathFalse = { "PrevRun", "CauldronWitchcraftOccurred" }, }, }, }, }, Using = { Animations = { "CrossroadsCauldronLid01", "Tilesets\\Crossroads\\Crossroads_Cauldron_Lid_01a", "Tilesets\\Crossroads\\Crossroads_Cauldron_Lid_01b", } } }, [558335] = { Template = "HubGardenPlot", SkipDefaultSetup = true, -- Handled by WorldUpgradeGarden }, [558337] = { Template = "HubGardenPlot", SkipDefaultSetup = true, -- Handled by WorldUpgradeGarden }, [583643] = { Template = "HubGardenPlot", SkipDefaultSetup = true, -- Handled by WorldUpgradeGardenT2 }, [583642] = { Template = "HubGardenPlot", SkipDefaultSetup = true, -- Handled by WorldUpgradeGardenT2 }, [583640] = { Template = "HubGardenPlot", SkipDefaultSetup = true, -- Handled by WorldUpgradeGardenT3 }, [583641] = { Template = "HubGardenPlot", SkipDefaultSetup = true, -- Handled by WorldUpgradeGardenT3 }, -- DeathArea Cosmetics [589542] = { Name = "TavernaAmbienceGenerator", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, }, DestroyIfNotSetup = true, }, -- Crossroads Pets (group: HecatePets) / Hound & Polecat / Hecuba & Gale -- Hecuba [558710] = { Name = "CrossroadsPet01", InteractDistance = 200, UseText = "UsePet01", SetupGameStateRequirements = { NamedRequirements = { "HecateFamiliarsInHub" }, }, Activate = true, -- DestroyIfNotSetup = true, -- ShakeSelf = true, -- OnUsedGlobalVoiceLines = "TakeANapVoiceLines", OnUsedFunctionName = "UseCrossroadsPet01", }, -- Gale [558691] = { SetupGameStateRequirements = { NamedRequirements = { "HecateFamiliarsInHub" }, }, Activate = true, -- DestroyIfNotSetup = true, SetupEvents = { { FunctionName = "GenericPresentation", Args = { UseableOff = true }, }, }, }, [590518] = { Name = "PetsOnMission", DistanceTriggers = { { WithinDistance = 350, VoiceLines = { PlayOnce = true, UsePlayerSource = true, GameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "CrossroadsPet01" } }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 558710 }, Alive = false }, }, { Path = { "GameState", "FamiliarsUnlocked" }, HasNone = { "HoundFamiliar", "PolecatFamiliar" }, }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, }, { Cue = "/VO/Melinoe_3409", Text = "Chó săn và chồn chắc hẳn đã đi trinh sát..." }, }, }, }, }, -- QuestLog / Fated List [560662] = { Name = "QuestLog", AnimOffsetX = 60, AnimOffsetZ = 310, Activate = true, SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "MorosGrantsQuestLog", }, }, }, SetupEvents = { { FunctionName = "OverwriteSelf", Args = { InteractDistance = 200, UseText = "UseQuestLog", UseSound = "/Leftovers/World Sounds/CaravanCreak", OnUsedFunctionName = "UseQuestLog", Animation = "Crossroads_FatedList_On01", }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeQuestLog", }, }, }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeQuestLog", }, }, { PathFalse = { "GameState", "ScreensViewed", "QuestLog" }, }, }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeQuestLog", }, }, { PathFalse = { "ActiveScreens", "QuestLog" }, }, { FunctionName = "RequireQuestWithStatus", FunctionArgs = { Status = "Complete", }, }, }, }, }, }, -- CosmeticsShop --[[ [560614] = { Name = "CosmeticsShop", AnimOffsetZ = 180, DefaultCategoryIndex = 2, SkipDefaultSetup = true, -- Handled by WorldUpgrade InteractDistance = 200, UseText = "UseCosmeticsShop", UseSound = "/Leftovers/World Sounds/CaravanCreak", OnUsedFunctionName = "UseCosmeticsShop", }, ]] -- Nemesis Bird / Raven [741471] = { DestroyIfNotSetup = true, SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 557113, }, }, }, }, }, -- Eris Passage / Eris Door / Docks Door [586746] = { Name = "DocksDoorInteract", ShakeSelf = true, InteractDistance = 250, -- InteractOffsetX = -10, -- InteractOffsetY = 80, -- AnimOffsetZ = 180, UseText = "CannotUseObject", UseSound = "/Leftovers/World Sounds/CaravanCreak", OnUsedFunctionName = "UseLockedSystemObjectPresentation", OnUsedFunctionArgs = { VoiceLines = "DocksDoorShutVoiceLines", }, SetupGameStateRequirements = { { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeFishingPoint" }, }, }, }, -- Hecate Witches near Cauldron [575859] = { DestroyIfNotSetup = true, SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 } }, }, }, }, [575867] = { DestroyIfNotSetup = true, SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 } }, }, }, }, [575860] = { DestroyIfNotSetup = true, SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 } }, }, }, }, [575866] = { DestroyIfNotSetup = true, SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 } }, }, }, }, -- Eris Guards at Fishing Pier [590500] = { DestroyIfNotSetup = true, SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 585573 }, Alive = false }, }, }, }, [590499] = { DestroyIfNotSetup = true, SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 585573 }, Alive = false }, }, }, }, -- Hotsprings / Hot Springs [589481] = { Name = "HotSpringsInteract", InteractDistance = 250, -- InteractOffsetX = -10, -- InteractOffsetY = 80, -- AnimOffsetZ = 180, UseText = "UseHotSprings", OnUsedFunctionName = "UseLockedSystemObjectPresentation", OnUsedFunctionArgs = { VoiceLines = "TriedToBatheVoiceLines", }, Activate = true, DestroyIfNotSetup = true, SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBathHouse" }, }, }, SetupEvents = { { FunctionName = "OverwriteSelf", Args = { Animation = "Blank", }, } }, }, -- Hecate torches [576153] = { Name = "HecateTorch1", SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 }, }, }, }, DestroyIfNotSetup = true, }, [576155] = { Name = "HecateTorch2", SetupGameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 }, }, }, }, DestroyIfNotSetup = true, }, [800612] = { Name = "HypnosGiftTrigger01", DistanceTriggers = { { WithinDistance = 650, VoiceLines = { PlayOnce = true, UsePlayerSource = true, PreLineWait = 0.5, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "HypnosFinalDreamMeeting01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "InspectHypnosGift01" }, }, }, SkipCooldownCheckIfNonePlayed = true, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, }, { Cue = "/VO/Melinoe_5434", Text = "Có thứ gì đó ở chỗ Hypnos..." }, }, }, }, }, -- Exit to Hub_PreRun (from Hub_Main) [391697] = { Name = "PreRunExit", OnUsedGameStateRequirements = { { PathFromSource = true, PathFalse = { "BlockedByNarrative" }, }, }, OnUsedFunctionName = "DeathAreaSwitchRoom", OnUsedFunctionArgs = { Name = "Hub_PreRun", HeroStartPoint = 40009, HeroEndPoint = 40012, }, SetupEvents = { { GameStateRequirements = { OrRequirements = { -- block the exit for key Hecate events { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = GameData.BlockPreRunExitDoorEvents }, }, }, -- block the exit if the TimeStop incantation is affordable and not yet purchased { { FunctionName = "RequireAffordableGhostAdminItems", FunctionArgs = { CategoryIndex = 1, HasAny = { "WorldUpgradeTimeStop" }, }, }, }, }, }, FunctionName = "BlockHubExitForNarrative", Args = { DistanceTrigger = { NotifyName = "BlockHubExitForNarrativeTrigger", WithinDistance = 250, Repeat = true, VoiceLines = { UsePlayerSource = true, RandomRemaining = true, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, { Name = "MelinoeAttemptLeaveSpeech", Time = 8 }, }, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, { Cue = "/VO/Melinoe_4746", Text = "Có một câu thần chú cần hoàn thành...", GameStateRequirements = { { FunctionName = "RequireAffordableGhostAdminItems", FunctionArgs = { CategoryIndex = 1, HasAny = { "WorldUpgradeTimeStop" }, }, }, } }, { Cue = "/VO/Melinoe_4747", Text = "Trước tiên là chiếc Vạc.", GameStateRequirements = { { FunctionName = "RequireAffordableGhostAdminItems", FunctionArgs = { CategoryIndex = 1, HasAny = { "WorldUpgradeTimeStop" }, }, }, } }, { Cue = "/VO/Melinoe_4743", Text = "Nên nói chuyện với Nữ Chúa trước khi đi...", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = GameData.BlockPreRunExitDoorEvents }, }, }, }, { Cue = "/VO/Melinoe_4744", Text = "Cần nói chuyện với Nữ Chúa...", GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = GameData.BlockPreRunExitDoorEvents }, }, }, }, { Cue = "/VO/Melinoe_4745", Text = "Cần nói chuyện với Nữ Chúa...", GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = GameData.BlockPreRunExitDoorEvents }, }, }, }, }, }, }, } }, InteractDistance = 320, InteractOffsetX = 45, InteractOffsetY = 135, AutoActivate = true, }, [585709] = { Name = "MainDocks01", DistanceTriggers = { { WithinDistance = 180, VoiceLines = { UsePlayerSource = true, PreLineWait = 0.5, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "<=", Value = 5, }, { PathFalse = { "CurrentRun", "Cleared" }, }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, }, -- { Cue = "/VO/Melinoe_2951", Text = "It's calmed here since last night..." }, { Cue = "/VO/Melinoe_3566", Text = "{#Emph} {#Prev}Được rồi...", PlayOnce = true, PlayOnceContext = "DocksSighVO", GameStateRequirements = { NamedRequirementsFalse = { "MailboxUnlocked" }, }, }, { Cue = "/VO/Melinoe_0028", Text = "Hiện tại ta chỉ đang trì hoãn thôi.", PlayOnce = true, GameStateRequirements = { { Path = { "PreviousDeathAreaRoom", "Name" }, IsAny = { "Hub_PreRun" }, }, { Path = { "CurrentRun", "UseRecord" }, HasAll = { "NPC_Dora_01", "NPC_Hecate_01", "NPC_Odysseus_01", "NPC_Nemesis_01" }, }, }, }, }, }, }, Using = { Sound = { "/Leftovers/SFX/BigFishSplash", }, }, }, -- deer clearing [742272] = { Name = "DeerStatue01", DistanceTriggers = { { WithinDistance = 300, VoiceLines = { BreakIfPlayed = true, RandomRemaining = true, UsePlayerSource = true, PreLineWait = 0.3, SuccessiveChanceToPlay = 0.25, SuccessiveChanceToPlayAll = 0.25, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 561502 }, Alive = false }, }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, }, { Cue = "/VO/Melinoe_0569", Text = "{#Emph}", PlayFirst = true }, { Cue = "/VO/Melinoe_4035", Text = "{#Emph}", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ArtemisHubSinging01" } }, }, }, { Cue = "/VO/Melinoe_4036", Text = "{#Emph}", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ArtemisHubSinging01" } }, }, }, { Cue = "/VO/Melinoe_4037", Text = "{#Emph}...Ánh trăng dẫn lối chúng ta về nhà...", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ArtemisHubSinging01" } }, }, }, { Cue = "/VO/Melinoe_4038", Text = "{#Emph}...Trong bóng tối, chúng ta đều là một...", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ArtemisHubSinging01" } }, }, }, }, }, -- artemis singing { WithinDistance = 900, VoiceLines = { RandomRemaining = true, UsePlayerSource = true, PreLineWait = 0.5, SuccessiveChanceToPlayAll = 0.33, SkipCooldownCheckIfNonePlayed = true, GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/ArtemisSong_MC", "/Music/IrisEndThemeCrossroads_MC" }, }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, }, { Cue = "/VO/Melinoe_4026", Text = "Artemis...", PlayFirst = true }, { Cue = "/VO/Melinoe_4027", Text = "Chào..." }, { Cue = "/VO/Melinoe_5178", Text = "Bài hát về cuộc hành trình...", PlayFirst = true, GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/IrisEndThemeCrossroads_MC" }, }, }, }, }, }, }, }, -- Hades Fountain / Fountain of the Dead [742624] = { Name = "CrossroadsFountainWall01", UseTextSpecial = "NPCUseTextSpecial", UseTextTalkAndSpecial = "UseStoryResetAndSpecial", UseText = "UseStoryReset", SpecialInteractFunctionName = "UseHadesFountain", SpecialInteractCooldown = 30, InteractDistance = 200, InteractOffsetX = -50, InteractOffsetY = -50, Activate = true, DistanceTriggers = { { WithinDistance = 450, ScaleY = 0.75, VoiceLines = { PlayOnce = true, PlayOnceContext = "HadesFountainVO", UsePlayerSource = true, PreLineWait = 0.5, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Icarus_01" }, Alive = false }, }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, }, { Cue = "/VO/Melinoe_2938_B", Text = "Cha..." }, }, }, }, SetupEvents = { { FunctionName = "OverwriteSelf", Args = { Animation = "Blank", }, }, { GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeStoryReset" }, }, }, FunctionName = "SetupStoryResetObject", }, }, }, -- fountain bench [741514] = { InteractDistance = 110, InteractOffsetY = -50, UseText = "UseChair", ShakeSelf = true, UseSound = "/Leftovers/World Sounds/CaravanCreak", OnUsedFunctionName = "UseLockedSystemObjectPresentation", OnUsedFunctionArgs = { VoiceLines = "TriedToSitVoiceLines", LinkedIds = { 741514 } }, }, -- aquarium [738444] = { Name = "Aquarium", UseText = "UseAquarium", InteractDistance = 150, InteractOffsetY = -20, -- UseSound = "/Leftovers/World Sounds/CaravanCreak", OnUsedFunctionName = "UseAquariumPresentation", }, -- True Ending Cosmetic / SunMoonTimeSculpture [800527] = { Name = "CrossroadsSunMoonSculpture01", UseText = "UseSkellyStatue", OnUsedFunctionName = "UseSunMoonTimeSculpture", InteractDistance = 150, InteractOffsetX = -200, InteractOffsetY = -100, DistanceTriggers = { { WithinDistance = 850, ScaleY = 0.75, VoiceLines = { PlayOnce = true, PlayOnceContext = "OlympusStatueVO", UsePlayerSource = true, PreLineWait = 0.3, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Icarus_01" }, Alive = false }, }, { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 3 }, }, { Cue = "/VO/Melinoe_5167", Text = "Món quà từ Olympus trông thật đẹp khi đặt cạnh đài phun nước của Cha..." }, }, }, }, }, -- Tree of Life [567567] = { Name = "TreeOfLife01", DistanceTriggers = { { WithinDistance = 1250, VoiceLines = { UsePlayerSource = true, PlayOnceFromTableThisRun = true, GameStateRequirements = { { Path = { "CurrentRun", "TextLinesRecord" }, HasAny = { "HecateHideAndSeek03", "FatesEpilogue01" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 556921 }, Alive = false }, }, }, { Cue = "/VO/Melinoe_1727", Text = "Bà đâu rồi, Nữ Chúa..." }, }, }, }, }, -- Dora Point [800388] = { Name = "DoraPoint01", DistanceTriggers = { { Repeat = true, WithinDistance = 400, VoiceLines = { UsePlayerSource = true, PlayOnce = true, PreLineWait = 0.3, GameStateRequirements = { { PathTrue = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeDoraMemory" }, }, }, { Cue = "/VO/Melinoe_5723", Text = "Dora đi rồi... chắc đang cần không gian riêng." }, }, }, }, }, -- Hypnos Point [800742] = { Name = "HypnosPoint01", DistanceTriggers = { { WithinDistance = 500, VoiceLines = { UsePlayerSource = true, PlayOnceFromTableThisRun = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "TrueEndingFinale01" }, }, }, { Cue = "/VO/Melinoe_5681", Text = "Vẫn đang ngủ..." }, }, }, }, }, -- Icarus Bridge [743162] = { Name = "IcarusBridge01", DistanceTriggers = { { WithinDistance = 1050, VoiceLines = { UsePlayerSource = true, PlayOnceFromTableThisRun = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "TrueEndingFinale01" }, }, { PathTrue = { "GameState", "TextLinesRecord", "IcarusHomeFirstMeeting" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Icarus_01" }, Alive = false }, }, }, { Cue = "/VO/Melinoe_5163", Text = "{#Emph}Oh{#Prev}, Icarus đâu rồi...?" }, }, }, }, }, -- Ghosts / Shades -- bartender shade / Badge Seller / BadgeSeller [590506] = { Name = "BartenderShade01", SetupGameStateRequirements = { -- }, DestroyIfNotSetup = true, InteractDistance = 200, AnimOffsetZ = 355, EmoteOffsetZ = 150, Using = { AdditionalAnimation = "GodHoodRays", Sounds = { "/SFX/Menu Sounds/WeaponUnlockBoom", "/SFX/ScyllaCrowdApplause2" }, }, SetupEvents = { { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant" }, GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding", }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBadgeSeller" }, }, { PathFalse = { "GameState", "BadgeRank", }, } }, }, }, ShowUseButtonEvents = { { FunctionName = "BadgeSellerSetupUseText", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding", }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBadgeSeller" }, } }, }, }, UseTextSpecial = "SpecialInteractShade", SaluteSound = "/SFX/GhostEmotes/EmbarrassedTINY", SpecialInteractFunctionName = "SpecialInteractSaluteBroker", SpecialInteractGameStateRequirements = { { }, }, SpecialInteractCooldown = 60, InteractVoiceLines = { { PreLineWait = 0.25, UsePlayerSource = true, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.33, Cooldowns = { { Name = "MelinoeSaluteSpeech", Time = 4 }, }, { Cue = "/VO/Melinoe_3003", Text = "Chào, Người Pha Chế.", PlayFirst = true }, { Cue = "/VO/Melinoe_3004", Text = "Cảm ơn, Người Pha Chế." }, { Cue = "/VO/Melinoe_3005", Text = "Chào buổi tối, Người Pha Chế." }, { Cue = "/VO/Melinoe_5336", Text = "Lời chào đến Hội Vô Hình!", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "BadgeRank" }, Comparison = ">=", Value = 1, }, }, }, { Cue = "/VO/Melinoe_5337", Text = "Để khôi phục Địa Ngục!", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "BadgeRank" }, Comparison = ">=", Value = 10, }, }, }, { Cue = "/VO/Melinoe_5339", Text = "Nhân danh cha ta!", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "BadgeRank" }, Comparison = ">=", Value = 20, }, }, }, { Cue = "/VO/Melinoe_5338", Text = "Mong cho di nguyện của Màn Đêm được thực thi!", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "BadgeRank" }, Comparison = ">=", Value = 30, }, }, }, }, { GlobalVoiceLines = "SaluteVoiceLines" }, }, DistanceTriggers = { { WithinDistance = 500, ChanceToPlay = 0.75, FunctionName = "PlayEmoteSimple", Args = { TargetId = 561538, OffsetZ = 60, AnimationName = "StatusIconSmile", }, }, }, }, -- Taverna Celebration [800741] = { Name = "TavernaCelebration", DistanceTriggers = { { TriggerOnceThisRun = true, WithinDistance = 800, FunctionName = "TavernaClearedRunPresentation", GameStateRequirements = { OrRequirements = { { { PathTrue = { "CurrentRun", "Cleared" }, }, }, { { PathTrue = { "CurrentRun", "TextLinesRecord", "FatesEpilogue01" }, }, }, }, }, }, }, }, --[[ currently removed [561535] = { Name = "TavernaShade01", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, }, DestroyIfNotSetup = true, SpecialInteractFunctionName = "SpecialInteractShade", UseTextSpecial = "SpecialInteractShade", -- UseSound = "/Leftovers/World Sounds/CaravanCreak", -- ShakeSelf = true, InteractDistance = 150, DistanceTriggers = { { WithinDistance = 280, ChanceToPlay = 0.15, FunctionName = "PlayEmoteSimple", Args = { OffsetZ = 60, TargetId = 561535, AnimationName = "StatusIconSmile", }, }, }, }, [561526] = { Name = "TavernaShade07", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeTaverna" }, }, }, DestroyIfNotSetup = true, SpecialInteractFunctionName = "SpecialInteractShade", UseTextSpecial = "SpecialInteractShade", -- UseSound = "/Leftovers/World Sounds/CaravanCreak", -- ShakeSelf = true, InteractDistance = 150, DistanceTriggers = { { WithinDistance = 280, ChanceToPlay = 0.15, FunctionName = "PlayEmoteSimple", Args = { OffsetZ = 60, TargetId = 561526, AnimationName = "StatusIconSmile", }, }, }, }, ]]-- -- Dream Hypnos [741118] = { Name = "DreamHadesTheme", DistanceTriggers = { { WithinDistance = 600, PostTriggerFunctionName = "PlayHadesTheme", } } }, [738827] = { Name = "DreamHypnos01", DistanceTriggers = { { WithinDistance = 1100, LockToCharacter = true, VoiceLines = { { PlayOnce = true, BreakIfPlayed = true, UsePlayerSource = true, PreLineWait = 0.35, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp01" } }, }, { Cue = "/VO/Melinoe_3683", Text = "Vẫn ngủ say... ngay cả ở đây?" }, }, { { PlayOnce = true, BreakIfPlayed = true, UsePlayerSource = true, PreLineWait = 0.35, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp01" } }, }, { Cue = "/VO/Melinoe_4640", Text = "Không hề xoay chuyển một chút nào. Liệu việc này có tác dụng không..." }, }, { PlayOnce = true, PlayOnceContext = "HypnosDream2VO", BreakIfPlayed = true, ObjectType = "NPC_Hypnos_02", PreLineWait = 1.0, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp01" } }, }, { Cue = "/VO/Hypnos_0021", Text = "{#Emph}" }, }, }, { { PlayOnce = true, UsePlayerSource = true, PreLineWait = 0.35, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp03" } }, }, { Cue = "/VO/Melinoe_4709", Text = "Và đây rồi..." }, }, { PlayOnce = true, BreakIfPlayed = true, ObjectType = "NPC_Hypnos_02", PreLineWait = 0.35, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp03" } }, }, { Cue = "/VO/Hypnos_0032", Text = "{#Emph}Zzz... chào mừng đếnnnnn..." }, }, }, } } } }, [799541] = { Name = "DreamBattie01", DistanceTriggers = { { WithinDistance = 600, VoiceLines = { { PlayOnce = true, BreakIfPlayed = true, UsePlayerSource = true, PreLineWait = 0.35, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp02" } }, }, { Cue = "/VO/Melinoe_4644", Text = "Tất cả những thứ này là gì...?" }, }, }, } } }, [780928] = { Name = "DreamHypnos02", DistanceTriggers = { { WithinDistance = 910, LockToCharacter = true, VoiceLines = { { PlayOnce = true, UsePlayerSource = true, PreLineWait = 0.35, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp03" } }, }, { Cue = "/VO/Melinoe_4713", Text = "Ít nhất thì ngài ấy có vẻ khá thoải mái." }, }, { PlayOnce = true, PlayOnceContext = "HypnosDream3VO", BreakIfPlayed = true, ObjectType = "NPC_Hypnos_03", PreLineWait = 1.3, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp03" } }, }, { Cue = "/VO/Hypnos_0035", Text = "{#Emph}Zzz... xa... xa lắm... zzz..." }, { Cue = "/VO/Hypnos_0036", Text = "{#Emph}...tạo ra... sự tích cực... zzz...", PreLineWait = 1.85, BreakIfPlayed = true, }, }, { PlayOnce = true, UsePlayerSource = true, PreLineWait = 0.35, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "HypnosWakeUp02" } }, }, { Cue = "/VO/Melinoe_4645", Text = "Chờ đã, ngài ấy ở đó..." }, { Cue = "/VO/Melinoe_4646", Text = "Ôi không, ngài ấy vẫn còn ngủ...", PreLineWait = 0.8, BreakIfPlayed = true }, }, } } } }, -- Cosmetic Critters [743399] = { Name = "CosmeticDogs", Activate = true, SkipDefaultSetup = true, -- Handled by WorldUpgrade DistanceTriggers = { { Repeat = true, WithinDistance = 250, FunctionName = "CosmeticDogsApproachPresentation", Args = { Cooldown = 5.0, MinDelayBetweenDogs = 0.2, MaxDelayBetweenDogs = 0.8, }, VoiceLines = { { GlobalVoiceLines = "CritterGreetingVoiceLines" }, }, }, }, }, [800610] = { Name = "CosmeticCats", Activate = true, SkipDefaultSetup = true, -- Handled by WorldUpgrade DistanceTriggers = { { Repeat = true, WithinDistance = 250, VoiceLines = { { GlobalVoiceLines = "CatGreetingVoiceLines" }, }, }, }, }, }, Using = { "CrossroadsAquarium01_Fx", "Portrait_Dora_Bath_Sweat1a", "Portrait_HecateUnmasked_Bath_Sweat1a", "Portrait_Hecate_Bath_Sweat1a", "Portrait_Hecate_Bath_Sweat2e", "Portrait_MelShock_Bath_Sweat1a", "Portrait_Mel_Bath_Sweat1a", "Portrait_MelTears_Bath_Sweat1a", "Portrait_Moros_Bath_Sweat1a", "Portrait_Nemesis_Bath_Sweat1a", "Portrait_Odysseus_Bath_Sweat1a", "Portrait_Eris_Bath_Sweat1a", "Portrait_Icarus_Bath_Sweat1a", }, }, -- Training Grounds Hub_PreRun = { InheritFrom = { "BaseHub", }, RichPresence = "#RichPresence_PreRun", ActiveEncounters = {}, Kills = {}, SkipLastKillPresentation = true, CheckWeaponHistory = true, UseBiomeMap = true, BiomeMapArea = "Home", ZoomFraction = 0.95, EntranceFunctionName = "EnterHubRoomPresentation", NarrativeContextArt = "DialogueBackgroundBiome_Woods", NarrativeContextArtFlippable = true, IgnoreStemMixer = true, Ambience = "/Ambience/RunstartIntroAmbience", KeepsakeFreeSwap = true, ShowShrinePoints = true, AllowAssistFailedPresentation = true, IntroSequenceDuration = 0.80, AllowEnemyAIActive = true, ShadeMercAITarget = "NPC_Skelly_01", SpeakerName = { "Skelly", "Selene", }, FamiliarsPreferSpawnPointMovement = true, FrogFamiliarMaxLeapDistance = 800, PolecatFamiliarShouldNotFollow = true, CameraZoomWeights = { --[420907] = 1.0, [420907] = 0.75, [420906] = 0.75, [567330] = 1.1, }, SoftClamp = 0.75, AmbientMusicSourceId = 40009, AmbientMusicParams = { LowPass = 1.0, Vocals = 0.7, Vocals2 = 0.0, }, AmbientMusicVolume = 0.5, OnDeathLoadRequirements = { { { PathTrue = { "CurrentRun", "ActiveBounty", }, }, }, }, OnLoadEvents = { { FunctionName = "HubPostBountyLoad", Args = { }, GameStateRequirements = { { PathTrue = { "CurrentRun", "ActiveBounty", }, }, { PathFalse = { "CurrentHubRoom", }, }, }, BreakIfPlayed = true, }, { FunctionName = "DeathAreaRoomTransition", }, }, OutOfManaEvents = { { Threaded = true, FunctionName = "ManaFountainHintPresentation", Args = { FountainId = 566327, }, GameStateRequirements = { { Path = { "GameState", "UseRecord", "ManaFountain" }, Comparison = "<", Value = 3, }, }, }, }, StartUnthreadedEvents = { { FunctionName = "GenericPresentation", Args = { LoadVoiceBanks = { "Skelly", "Nyx", }, LoadPackages = { "Skelly", }, }, }, { FunctionName = "AssignWeaponKits", Args = { }, }, { FunctionName = "AssignFamiliarKits", Args = { OverwriteSelf = { TargetSearchDistance = 3000, }, }, }, { FunctionName = "UpdateShrineRunDoorArrow", Args = { SkipPresentation = true }, }, -- spawn skelly -- always present until multiple weapons are unlocked or if any exorcism ghosts have spawned { FunctionName = "ActivatePrePlaced", GameStateRequirements = { OrRequirements = { { { Path = { "GameState", "WeaponsUnlocked" }, HasNone = { "WeaponDagger", "WeaponTorch", "WeaponAxe", "WeaponLob", "WeaponSuit" }, }, }, { { PathNotEmpty = { "CurrentRun", "ExorcisedNames", }, }, }, { ChanceToPlay = 0.75, }, }, }, Args = { LegalTypes = { "NPC_Skelly_01", }, SkipPresentation = true, }, FailedFunctionName = "SetupMissingDistanceTrigger", FailedFunctionArgs = { Id = 420928, UnitName = "NPC_Skelly_01", }, }, { FunctionName = "CheckPriorityConversations", GameStateRequirements = { -- None }, Args = { SkipPresentation = true, -- Skelly key events Conversations = { "SkellyPostTrueEnding01", "SkellyAboutTrophyQuest01", "TrophyQuestComplete01", "TrophyQuestComplete02", "TrophyQuestComplete03", "SkellyAboutTrophyQuest02", "SkellyAboutTyphon01", "SkellyAboutTyphon03", "SkellyAboutHealthQuest01", "SkellyAboutHealthQuest03", "SkellyAboutHealthQuest04", "SkellyAboutPast03", "SkellyFirstMeeting", "SkellyAboutSurface01", "SkellyAboutGodMode01", "SkellyAboutShrine01", "SkellyAboutCerberus01", "SkellyAboutChronosBossW01", "SkellyAboutAspects01", "SkellyAboutCharon01", }, }, }, { FunctionName = "GhostRecruitsPreRun", GameStateRequirements = { -- None }, Args = { SpawnPointIds = { 585601, 585600, 585599, 585598, 585602, 585603, }, TargetId = 587209, IgnoreForInspectPointUnlessOnlyOption = "ShadeErebusIdle", InspectPoint = { Name = "GhostInspectPoint", ObjectId = 589872, UseTextSpecial = "UseExorcisedGhostsPreRun", SpecialInteractFunctionName = "UseExorcisedGhostsPreRun", }, AnimationSwapMap = { ShadeShipsOneIdle = "ShadeShipsOneSwayHubIdle", }, }, }, -- dora always present [after Cosmetics unlocked] { FunctionName = "ActivatePrePlaced", GameStateRequirements = { NamedRequirements = { "CosmeticsShopUnlocked" }, { PathFalse = { "CurrentRun", "BlockDoraSpawn" }, }, }, Args = { Types = { "NPC_Dora_01", }, OverwriteSelf = { DefaultCategoryIndex = 4, }, }, }, { FunctionName = "ActivateConditionalItems", Args = { CosmeticsShopCategoryIndex = 4, }, }, -- Frinos Accessories { FunctionName = "ActivatePrePlacedObstacles", GameStateRequirements = { { PathTrue = { "GameState", "FamiliarsUnlocked", "FrogFamiliar" }, }, }, Args = { Ids = { 780633, 780602, 780610, 780631, 780626, 780634, 780649 }, }, }, -- Raki Accessories { FunctionName = "ActivatePrePlacedObstacles", GameStateRequirements = { { PathTrue = { "GameState", "FamiliarsUnlocked", "RavenFamiliar" }, }, }, Args = { Ids = { 780597, 780612, 780613, 780635, }, }, }, -- Toula Accessories { FunctionName = "ActivatePrePlacedObstacles", GameStateRequirements = { { PathTrue = { "GameState", "FamiliarsUnlocked", "CatFamiliar" }, }, }, Args = { Ids = { 780596, 780625, 780604, 780614, }, }, }, -- Hecuba Accessories { FunctionName = "ActivatePrePlacedObstacles", GameStateRequirements = { { PathTrue = { "GameState", "FamiliarsUnlocked", "HoundFamiliar" }, }, }, Args = { Ids = { 780595, 780594, 780601, 780598, 780636, 780641, }, }, }, -- Gale Accessories { FunctionName = "ActivatePrePlacedObstacles", GameStateRequirements = { { PathTrue = { "GameState", "FamiliarsUnlocked", "PolecatFamiliar" }, }, }, Args = { Ids = { 780648, 780646, 780609, 780605, 780593, 780622, 780624, 780623, }, }, }, { FunctionName = "RestoreMusicianMusic", }, { FunctionName = "CheckConversations", Args = {}, GameStateRequirements = { { PathFalse = { "CurrentRun", "ActiveBounty" }, }, }, FailedFunctionName = "CheckConversations", FailedFunctionArgs = { PlayOnceFlag = "AllowPostBounty", }, }, { FunctionName = "EquipLastAwardTrait", Args = {}, }, { FunctionName = "EquipLastWeaponUpgrade", Args = { SkipTraitHighlight = true, SkipUIUpdate = true, }, }, { FunctionName = "EquipPreRunMetaUpgrades", Args = {}, }, { FunctionName = "CheckWeaponRoomStartEvents", }, { FunctionName = "PreGenerateNextBiomeState", Args = {}, }, }, ThreadedEvents = { { FunctionName = "ShadeMercManager", GameStateRequirements = { ChanceToPlay = 1.0 }, Args = { StartingCountMin = 99, StartingCountMax = 99, ObjectNames = { "ShadeMerc" }, MaxActive = 99, RequireForExit = false, RestoreObjectState = true, }, }, { FunctionName = "HandleWeaponAspectsRevealObjective", }, { FunctionName = "CheckObjectiveSetSource", Args = { ObjectiveSetName = "KillTyphon", }, GameStateRequirements = { { PathTrue = { "GameState", "SpeechRecord", "/VO/Melinoe_5159" }, }, }, }, { FunctionName = "CheckObjectiveSetSource", Args = { ObjectiveSetName = "KillChronos", }, GameStateRequirements = { { PathTrue = { "GameState", "SpeechRecord", "/VO/Melinoe_5160" }, }, }, }, -- below are mutually exclusive, in order of priority { BreakIfPlayed = true, FunctionName = "TrophyQuestUnlockedFirstPresentation", Args = {}, GameStateRequirements = { { PathFalse = { "GameState", "SpeechRecord", "/VO/Skelly_0300" }, }, { PathFalse = { "GameState", "TextLinesRecord", "SkellyAboutTrophyQuest01" }, }, NamedRequirements = { "TrophyQuestUnlocked" }, NamedRequirementsFalse = { "JustBeforeOrAfterTrueEnding" }, }, }, { -- NextStopTyphonFirstPresentation BreakIfPlayed = true, FunctionName = "PreRunCameraPresentation", Args = { PanTargetId = 585605, PanVoiceLines = HeroVoiceLines.NextStopTyphonVoiceLines, PanDuration = 1.8, HoldDuration = 3, ObjectiveSet = "KillTyphon", }, GameStateRequirements = { { PathTrue = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeStormStop" } }, { PathFalse = { "GameState", "SpeechRecord", "/VO/Melinoe_5159" }, }, }, }, { -- NextStopChronosFirstPresentation BreakIfPlayed = true, FunctionName = "PreRunCameraPresentation", Args = { PanTargetId = 780650, PanVoiceLines = HeroVoiceLines.NextStopChronosVoiceLines, PanDuration = 1.8, HoldDuration = 3, ObjectiveSet = "KillChronos", }, GameStateRequirements = { { PathTrue = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeTimeStop" } }, { PathFalse = { "GameState", "SpeechRecord", "/VO/Melinoe_5160" }, }, }, }, { -- First visit post-credits BreakIfPlayed = true, FunctionName = "PreRunCameraPresentation", Args = { PanTargetId = 589694, PanVoiceLines = HeroVoiceLines.NextStopPostTrueEndingVoiceLines, PanDuration = 1.8, HoldDuration = 3, ObjectiveSet = "PostCreditsStartNewRun", }, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "TrueEndingFinale01" }, }, { PathFalse = { "GameState", "SpeechRecord", "/VO/Melinoe_5740" }, }, }, }, { BreakIfPlayed = true, FunctionName = "BountyBoardUnlockedFirstPresentation", Args = {}, GameStateRequirements = { { PathFalse = { "GameState", "SpeechRecord", "/VO/Skelly_0087" }, }, { Path = { "CurrentRun", "SpeechRecord" }, HasNone = { "/VO/Melinoe_2855", "/VO/Skelly_0300", "/VO/Melinoe_0852", "/VO/Melinoe_5159", "/VO/Melinoe_5160" }, }, { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBountyBoard" }, }, { PathFalse = { "GameState", "ScreensViewed", "BountyBoard" }, }, NamedRequirementsFalse = { "HecateMissing" }, }, }, { BreakIfPlayed = true, FunctionName = "ShrineUnlockedFirstPresentation", Args = {}, GameStateRequirements = { { PathFalse = { "GameState", "SpeechRecord", "/VO/Melinoe_2855" }, }, { PathFalse = { "GameState", "ScreensViewed", "Shrine" }, }, { Path = { "CurrentRun", "SpeechRecord" }, HasNone = { "/VO/Skelly_0300" }, }, NamedRequirements = { "ShrineUnlocked" }, { PathFalse = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeBountyBoard" }, }, }, }, { -- AltRunDoorUnlockedFirstPresentation BreakIfPlayed = true, FunctionName = "PreRunCameraPresentation", Args = { PanTargetId = 585605, PanVoiceLines = HeroVoiceLines.AltRunDoorUnlockedVoiceLines, PanDuration = 2.8, HoldDuration = 4.2, ObjectiveSet = "SurfaceDoorPrompt", }, GameStateRequirements = { { PathTrue = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeAltRunDoor" }, }, { PathFalse = { "GameState", "SpeechRecord", "/VO/Melinoe_0852" }, }, { Path = { "CurrentRun", "SpeechRecord" }, HasNone = { "/VO/Melinoe_2855", "/VO/Skelly_0300" }, }, { PathFalse = { "GameState", "RoomsEntered", "N_Opening01" }, }, -- replacement for the ShrineUnlocked condition below { PathFalse = { "CurrentRun", "TextLinesRecord", "ChronosBossOutro01" }, }, NamedRequirementsFalse = { "TrophyQuestUnlocked" }, -- NamedRequirementsFalse = { "ShrineUnlocked" }, }, }, -- skelly quest progress { BreakIfPlayed = true, FunctionName = "GenericPresentation", Args = { VoiceLines = { { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { NamedRequirements = { "TrophyQuestStage1CheckA" } }, { Cue = "/VO/Melinoe_3293", Text = "Đã nhận được Món Quà của Màn Đêm..." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { NamedRequirements = { "TrophyQuestStage1CheckB" } }, { Cue = "/VO/Melinoe_3293", Text = "Đã nhận được Món Quà của Màn Đêm..." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { NamedRequirements = { "TrophyQuestStage2CheckA" } }, { Cue = "/VO/Melinoe_3294", Text = "Ta là một phần của hành trình đó." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { NamedRequirements = { "TrophyQuestStage2CheckB" } }, { Cue = "/VO/Melinoe_3294", Text = "Ta là một phần của hành trình đó." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { NamedRequirements = { "TrophyQuestStage3CheckA" } }, { Cue = "/VO/Melinoe_3295", Text = "Món Quà của Màn Đêm đang đợi chờ..." }, }, { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { NamedRequirements = { "TrophyQuestStage3CheckB" } }, { Cue = "/VO/Melinoe_3295", Text = "Món Quà của Màn Đêm đang đợi chờ..." }, }, }, }, }, }, ObstacleData = { -- Altar of Ashes / Card Table / MetaUpgradeWorldObject [589766] = { InteractDistance = 250, UseText = "UseMetaUpgradeWorldObject", UseSound = "/Leftovers/Menu Sounds/TitanToggleLong", OnUsedFunctionName = "OpenMetaUpgradeCardScreen", AnimOffsetZ = 120, SetupEvents = { { FunctionName = "GenericPresentation", Args = { FadeOutIds = { 588748, }, Duration = 0, }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { { FunctionName = "RequireAffordableMetaUpgrade", }, }, }, }, }, -- Weapon Shop / Silver Pool [558210] = { Name = "WeaponShop", InteractDistance = 275, InteractOffsetX = 50, AnimOffsetZ = 150, AnimOffsetX = 50, UseText = "UseWeaponShop", OnUsedFunctionName = "UseWeaponShop", OnUsedGameStateRequirements = { --[[ { Path = { "GameState", "UseRecord", "NPC_Hecate_01", }, Comparison = ">=", Value = 1, }, ]]-- }, SetupGameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 0, }, }, DestroyIfNotSetup = true, SetupEvents = { -- Aspects System { FunctionName = "OverwriteSelf", Args = { Animation = "WeaponShopWorldObject02", }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeWeaponUpgradeSystem" }, }, }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { { FunctionName = "ShouldShowWeaponShopWantsToTalkIndicator", }, }, }, }, DistanceTriggers = { { WithinDistance = 500, VoiceLines = { -- Hint: Arcana Altar { UsePlayerSource = true, PlayOnceThisRun = true, SuccessiveChanceToPlay = 0.15, GameStateRequirements = { { PathFalse = { "CurrentRun", "ScreenViewRecord", "MetaUpgradeCardLayout" }, }, { Path = { "CurrentRun", "CurrentRoom", "SpeechRecord" }, HasNone = { "/VO/Melinoe_0538" }, }, { Path = { "GameState", "LifetimeResourcesSpent", "MetaCardPointsCommon" }, Comparison = "<", Value = 80, }, { FunctionName = "RequireAffordableMetaUpgrade", }, }, { Cue = "/VO/Melinoe_1610", Text = "Không thể quên Bệ Thờ của mình ở kia...", }, }, -- Observation: Upgraded Silver Pool { PlayOnce = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeWeaponUpgradeSystem" }, }, }, { Cue = "/VO/Melinoe_2540", Text = "Hồ Bạc đã phản ứng với thần chú của ta..." }, }, -- Observation: Grave Thirst Active { PlayOnce = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeUnusedWeaponBonus" }, }, { SumPrevRuns = 4, Path = { "WorldUpgradesAdded", "WorldUpgradeUnusedWeaponBonus" }, CountPathTrue = true, Comparison = ">=", Value = 1, }, }, { Cue = "/VO/Melinoe_2407", Text = "Có luồng khí Tham Lam ở Hồ Bạc..." }, }, -- Observation: Grave Thirst Active { PlayOnce = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeUnusedWeaponBonusT2" }, }, { SumPrevRuns = 4, Path = { "WorldUpgradesAdded", "WorldUpgradeUnusedWeaponBonusT2" }, CountPathTrue = true, Comparison = ">=", Value = 1, }, { PathFalse = { "CurrentRun", "ActiveBounty" }, }, }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 6 }, }, { Cue = "/VO/Melinoe_5477", Text = "Hào quang Tham Lam giờ đây còn mạnh hơn trước." }, }, }, }, { WithinDistance = 800, VoiceLines = { -- Hint: Hidden Aspect Unlocks { PlayOnceFromTableThisRun = true, RandomRemaining = true, GameStateRequirements = { { Path = { "CurrentRun", "TextLinesRecord" }, HasAny = { "CirceGrantsHiddenAspect01", "ArtemisGrantsHiddenAspect01", "MorosGrantsHiddenAspect01", "CharonGrantsHiddenAspect01", "MedeaGrantsHiddenAspect01", "SeleneGrantsHiddenAspect01" }, }, NamedRequirementsFalse = { "HasAllHiddenAspectsRevealed" }, }, { Cue = "/VO/Melinoe_4397", Text = "Giờ thì đến Hồ Bạc.", PlayFirst = true }, { Cue = "/VO/Melinoe_4398", Text = "Nên thử ở Hồ Bạc.", PlayFirst = true }, { Cue = "/VO/Melinoe_4399", Text = "Nên thử ở Hồ Bạc." }, { Cue = "/VO/Melinoe_4400", Text = "Hồ Bạc phải có thứ gì đó dành cho ta..." }, { Cue = "/VO/Melinoe_4401", Text = "Giờ là lúc ta nói câu thức tỉnh..." }, { Cue = "/VO/Melinoe_4402", Text = "Nên thử câu thức tỉnh..." }, }, }, }, }, Using = { Sound = "/SFX/Menu Sounds/SilverPoolOpen", }, }, -- Gift Rack / Keepsake Rack [421320] = { Template = "GiftRack", ActivateIds = { 421320, 421315, 421317, 421316, 421319 }, InteractDistance = 205, InteractOffsetX = 30, InteractOffsetY = -65, AnimOffsetZ = 250, SetupGameStateRequirements = { -- GiftRack is always present, but initially locked { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 0, }, }, SetupEvents = { { FunctionName = "SetupLockedGiftRack", GameStateRequirements = { { Path = { "GameState", "LifetimeResourcesGained", "GiftPoints" }, Comparison = "<", Value = 1, }, }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { { Path = { "GameState", "GiftPresentation", }, UseLength = true, Comparison = ">=", Value = 1, }, { PathFalse = { "GameState", "LastAwardTrait", }, }, }, }, }, }, -- BountyBoard / Bounty Board / Pitch-Black Stone [561146] = { Name = "BountyBoard", InteractDistance = 200, AnimOffsetX = 10, AnimOffsetZ = 470, SpeakerName = "Chaos", SetupGameStateRequirements = { -- Always present, but initially locked }, SetupEvents = { { FunctionName = "OverwriteSelf", Args = { UseText = "UseBountyBoard", UseSound = "/SFX/Menu Sounds/ChaosTrialMenuOpen", OnUsedFunctionName = "UseBountyBoard", Animation = "Crossroads_BountyBoard_On01", }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBountyBoard" }, }, NamedRequirementsFalse = { "SurfaceRouteLockedByTyphonKill" }, }, FailedFunctionName = "GenericPresentation", FailedFunctionArgs = { UseableOff = true, }, }, { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBountyBoard" }, }, OrRequirements = { { { PathFalse = { "GameState", "ScreensViewed", "BountyBoard" }, }, }, { { FunctionName = "HasUnviewedBounty", }, }, }, NamedRequirementsFalse = { "SurfaceRouteLockedByTyphonKill" }, }, }, }, DistanceTriggers = { { GameStateRequirements = { NamedRequirements = { "SurfaceRouteLockedByTyphonKill" }, }, WithinDistance = 250, VoiceLines = { UsePlayerSource = true, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 6 }, }, { Cue = "/VO/Melinoe_0387", Text = "Not now." }, }, }, }, Using = { "/SFX/Menu Sounds/KeepsakeHighlightShimmerSFX" }, }, -- BountyBoard moon beam [587430] = { Name = "BountyBoardMoonBeam", DestroyIfNotSetup = true, SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBountyBoard" }, }, { FunctionName = "HasUnclearedBounty", }, NamedRequirementsFalse = { "SurfaceRouteLockedByTyphonKill" }, }, }, -- Shrine / Oath of the Unseen / Pact / Pact of Punishment (Note: Shadow decal below) [589694] = { Name = "Shrine", InteractDistance = 200, AnimOffsetZ = 510, UseText = "UseShrineObject", UseSound = "/SFX/HeatCollectionPickup", OnUsedFunctionName = "UseShrineObject", UseTextTalkAndSpecial = "UseOrSpecialShrineObject", SpecialInteractFunctionName = "SpecialInteractChangeNextRunRNG", SpecialInteractCooldown = 6, SpecialInteractGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeChangeNextRunRNG" }, }, }, SetupGameStateRequirements = { NamedRequirements = { "ShrineUnlocked" }, }, DestroyIfNotSetup = true, SetupEvents = { { FunctionName = "PlayStatusAnimation", Args = { Animation = "StatusIconWantsToTalkImportant", }, GameStateRequirements = { NamedRequirements = { "ShrineUnlocked" }, { PathFalse = { "GameState", "ScreensViewed", "Shrine" }, }, }, }, { FunctionName = "ActivatePrePlacedObstacles", Args = { Groups = { "ShrineDecor", }, }, }, }, Using = { "Crossroads_Shrine_On01_Active", "Crossroads_Shrine_On01", }, }, -- Supportive Shade / -- DieHardFan [555807] = { Name = "DieHardFanShade", SetupGameStateRequirements = { { PathTrue = { "GameState", "ExorcisedNames", "DieHardFanShade" }, }, }, DestroyIfNotSetup = true, SpecialInteractFunctionName = "SpecialInteractDieHardFanShade", UseTextSpecial = "SpecialInteractShade", -- UseSound = "/Leftovers/World Sounds/CaravanCreak", -- ShakeSelf = true, InteractDistance = 200, DistanceTriggers = { { WithinDistance = 1300, ChanceToPlay = 0.25, TriggerOnceThisRun = true, FunctionName = "PlayEmoteSimple", Args = { TargetId = 723340, AnimationName = "StatusIconSmileRed", OffsetZ = 30, }, }, }, }, -- benches [587351] = { InteractDistance = 110, UseText = "UseChair", ShakeSelf = true, UseSound = "/Leftovers/World Sounds/CaravanCreak", OnUsedFunctionName = "UseLockedSystemObjectPresentation", OnUsedFunctionArgs = { VoiceLines = "TriedToSitVoiceLines", SkipAnim = true, BlockAngleTowardTarget = true, LinkedIds = { 587424 } }, }, [587424] = { InteractDistance = 110, UseText = "UseChair", ShakeSelf = true, UseSound = "/Leftovers/World Sounds/CaravanCreak", OnUsedFunctionName = "UseLockedSystemObjectPresentation", OnUsedFunctionArgs = { VoiceLines = "TriedToSitVoiceLines", SkipAnim = true, BlockAngleTowardTarget = true, LinkedIds = { 587351 } }, }, -- SkellyStatue 1 [589801] = { Activate = true, SetupGameStateRequirements = { NamedRequirements = { "TrophyQuestUnlocked" } }, SetupEvents = { { FunctionName = "OverwriteSelf", Args = { UseText = "UseLockedSkellyStatue", InteractDistance = 300, OnUsedFunctionName = "SkellyStatueAdmire", }, GameStateRequirements = { { PathFalse = { "GameState", "TextLinesRecord", "TrophyQuestComplete01" }, }, }, }, { FunctionName = "OverwriteSelf", Args = { UseText = "UseSkellyStatue", InteractDistance = 300, OnUsedFunctionName = "SkellyStatueAdmire", }, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "TrophyQuestComplete01" }, }, }, }, { Threaded = true, FunctionName = "GenericPresentation", Args = { SetAlpha = 0.0, Duration = 0.0, Id = 589805, PreWait = 0.02, }, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "TrophyQuestComplete01" } }, }, }, }, ExclusiveOnHitFunctionName = "StatueHitPresentation", ExclusiveOnHitFunctionArgs = { DrapeId = 589805, }, }, -- SkellyStatue 2 [589804] = { Activate = true, SetupGameStateRequirements = { NamedRequirements = { "TrophyQuestUnlocked" } }, SetupEvents = { { Threaded = true, FunctionName = "GenericPresentation", Args = { SetAlpha = 0.0, Duration = 0.0, Id = 589806, PreWait = 0.02, }, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "TrophyQuestComplete02" } } }, }, }, ExclusiveOnHitFunctionName = "StatueHitPresentation", ExclusiveOnHitFunctionArgs = { DrapeId = 589806, }, }, -- SkellyStatue 3 [589803] = { Activate = true, SetupGameStateRequirements = { NamedRequirements = { "TrophyQuestUnlocked" } }, SetupEvents = { { Threaded = true, FunctionName = "GenericPresentation", Args = { SetAlpha = 0.0, Duration = 0.0, Id = 589807, PreWait = 0.02, }, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "TrophyQuestComplete03" }, } }, }, }, ExclusiveOnHitFunctionName = "StatueHitPresentation", ExclusiveOnHitFunctionArgs = { DrapeId = 589807, }, }, -- Run Start Door / New Run Door / NewRunDoor -- Underworld Run [420947] = { UseText = "UseStartRunDoor1", InteractDistance = 350, InteractOffsetX = -100, InteractOffsetY = 170, OnUsedFunctionName = "UseEscapeDoor", OnUsedFunctionArgs = { StartingBiome = "F", DashTarget = 588632, AltarId = 589766, }, SetupEvents = { { FunctionName = "OverwriteSelf", Args = { UseText = "TechTestEscapeDoorClosed", OnUsedFunctionName = "TechTestEscapeDoorClosed", Animation = "DoorExitLightLocked", }, GameStateRequirements = { { PathTrue = { "ConfigOptionCache", "DemoMode" }, }, { Path = { "GameState", "ClearedRunsCache" }, Comparison = ">=", Value = 5, }, }, }, { FunctionName = "UpdateEscapeDoorForLimitGraspShrineUpgrade", }, }, }, -- Surface Run / Olympus Run / Olympus Route / Olympus Door -- locked [558268] = { DestroyIfNotSetup = true, UseText = "UseLockedSurfaceRunDoor", InteractDistance = 250, InteractOffsetX = -75, InteractOffsetY = 80, OnUsedFunctionName = "LockedSurfaceRunPresentation", SetupGameStateRequirements = { OrRequirements = { -- lock until you remove the curse { { PathFalse = { "GameState", "WorldUpgrades", "WorldUpgradeAltRunDoor" }, }, }, -- lock again after defeating Typhon for real, until you've seen the true ending { NamedRequirements = { "SurfaceRouteLockedByTyphonKill" }, }, }, }, }, -- unlocked [555784] = { UseText = "UseStartRunDoor2", OnUsedFunctionName = "UseEscapeDoor", OnUsedFunctionArgs = { StartingBiome = "N", RandomOffset = 1, MarkObjectiveComplete = "UseSurfaceDoor", DashTarget = 588633, GlobalVoiceLines = "StartSurfaceRunVoiceLines", AltarId = 589766, }, DestroyIfNotSetup = true, ActivateIds = { 555787 }, InteractDistance = 250, InteractOffsetX = -75, InteractOffsetY = 100, SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeAltRunDoor" }, }, NamedRequirementsFalse = { "SurfaceRouteLockedByTyphonKill" }, }, SetupEvents = { { FunctionName = "UpdateEscapeDoorForLimitGraspShrineUpgrade", }, } }, -- Exit to Hub_Main (from Hub_PreRun) [421119] = { SetupGameStateRequirements = { { FunctionName = "RequiredConfigOptions", FunctionArgs = { ConfigOptions = { "KioskMode" }, HasOptions = false }, }, }, DestroyIfNotSetup = true, OnUsedFunctionName = "DeathAreaSwitchRoom", OnUsedFunctionArgs = { Name = "Hub_Main", HeroStartPoint = 390004, HeroEndPoint = 390002, PreLoadFunctionName = "ClearPreRunUpgrades", }, InteractDistance = 420, InteractOffsetX = -205, InteractOffsetY = -165, AutoActivate = true, OnUsedVoiceLines = { -- }, SetupEvents = { { FunctionName = "DistanceTrigger", Threaded = true, Args = { WithinDistance = 400, Repeat = true, TriggerName = "PreRunBacktrackHintTrigger", PostTriggerEvents = { { FunctionName = "PreRunBacktrackHintPresentation", Args = { NewRunDoorId = 420947, }, GameStateRequirements = { { PathTrue = { "SessionMapState", "AltarEnterPresentation", }, }, --[[ { PathTrue = { "CurrentRun", "CurrentRoom", "UseRecord", "NPC_Skelly_01" }, }, ]] { PathTrue = { "CurrentRun", "ScreenViewRecord", "WeaponShop" }, }, { PathTrue = { "CurrentRun", "ScreenViewRecord", "MetaUpgradeCardLayout" }, }, }, }, }, }, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "<=", Value = 0, }, { PathFalse = { "SessionState", "PreRunBacktrackHintTrigger", }, }, }, }, }, }, }, OverlookData = { StartDelay = 0, CameraClamps = { 566438, 566437, }, HeroBeamPoint = 566434, CameraStartId = 566439, ReturnPositionId = 566434, SkipReturnSound = true, CameraSlideFromHeroPosition = true, -- determines if this is an 'offset' pan from the hero unit CameraSpeed = 1260 * 1.25, -- speed of camera pan CameraStartPanDuration = 4.0, -- only used if there is no speed defined CameraStartPanRelocateDuration = 1.34, -- approximate time before camera is out of the default isometric scene CameraRelocateStartId = 566439, -- bottom -> up CameraRelocateEndId = 566441, -- bottom -> up --CameraRelocateStartId = 567320, -- top -> down --CameraRelocateEndId = 567321, -- top -> down CameraRelocatePanDuration = 3.1, CameraRelocatePanOffsetY = -1990, CameraRelocateExtendedPanDuration = 18.0, CameraEndStartDelay = 0.9, ZoomFraction = 1.0, EndZoomFraction = 1.0, FlourishId = 566440, FlourishAnimation = "MelinoeCauldronIncantationComplete", FadeIdsOnEnd = { 561140, 567205, 566435, 588617 }, -- FlourishSound = "/VO/Melinoe_0339", --[[ push pan test StartDelay = 0, CameraClamps = { 566438, 566437, }, CameraStartId = 566439, ReturnPositionId = 566434, CameraStartPanId = 566436, CameraPushInitialDuration = 0.5, CameraPushDuration = 2.0, CameraPushTotalDuration = 1.28, CameraPushId = 567327, CameraPushStartAIds = { 567322 }, CameraPushStartBIds = { 567323 }, CameraPushRelocateStartId = 567328, CameraPushRelocateEndId = 567329, CameraPushRelocateStartZoomFraction = 0.45, CameraPushRelocateEndZoomFraction = 0.6, CameraPushRelocateDuration = 18, CameraPushHiderAIds = { 567325, 567332, 567331 }, CameraPushHiderBIds = { 567326, 567333, 567334 }, ]] }, DistanceTriggers = { { TriggerGroup = "OverlookOut", WithinDistance = 75, FunctionName = "OverlookAdvanced", Repeat = true, }, { TriggerGroup = "AltarIn", WithinDistance = 150, FunctionName = "AltarEnterPresentation", Repeat = true, }, { TriggerGroup = "AltarOut", WithinDistance = 150, FunctionName = "AltarExitPresentation", Repeat = true, }, -- Altar of Ashes / Card Table { TriggerObjectType = "CrossroadsCardAltarTerrain01", WithinDistance = 350, VoiceLines = { Queue = "Always", { PlayOnce = true, PlayOnceContext = "SeenMetaUpgradeWorldObject", GameStateRequirements = { { PathFalse = { "GameState", "ScreensViewed", "MetaUpgradeCardLayout" }, }, }, { Cue = "/VO/Melinoe_0538", Text = "Bệ Thờ của ta..." }, }, { PlayOnce = true, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeCardUpgradeSystem", }, }, { PathFalse = { "GameState", "ScreensViewed", "MetaUpgradeCardUpgradeLayout" }, }, }, { Cue = "/VO/Melinoe_2716", Text = "Bệ Thờ của ta đã được nạp đầy..." }, } }, }, -- NewRunDoor / Exit Door { -- @ Hacky objecttype to be replaced with a group TriggerObjectType = "ErebusWitchTotem01", WithinDistance = 650, GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeAltRunDoor", }, }, }, VoiceLines = { Queue = "Always", { PlayOnce = true, PlayOnceContext = "SurfaceDoorUnlocked", { Cue = "/VO/Melinoe_0563", Text = "Ta có thể vượt qua..." }, }, }, }, { TriggerObjectType = "NPC_Skelly_01", WithinDistance = 500, GameStateRequirements = { { PathFalse = { "CurrentRun", "TextLinesRecord", "SkellyFirstMeeting" }, }, { PathFalse = { "GameState", "WeaponsUnlocked", "WeaponDagger" }, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 1, }, }, FunctionName = "StartSkellyWeaponTutorial", }, -- Skelly { TriggerObjectType = "NPC_Skelly_01", WithinDistance = 775, PostTriggerAnimation = "Skelly_Greeting", TriggerOnceThisRun = true, Cooldowns = { { Name = "SkellyWelcomeSpeech", Time = 6 }, }, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, VoiceLines = { { PlayOnce = true, PlayOnceContext = "SkellyTrueEndingAchievedVO", BreakIfPlayed = true, ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Salute", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/Skelly_0643", Text = "Hãy cúi chào Công Chúa Địa Ngục!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 0.6, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.4, }, }, }, { -- PlayOnce = true, BreakIfPlayed = true, ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Salute", GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = { "SkellyAboutSurface01" }, }, }, }, { Cue = "/VO/Skelly_0493", Text = "Đến đây, cô bé!" }, }, { -- PlayOnce = true, BreakIfPlayed = true, ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Explaining", GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = { "SkellyAboutCharon02", "SkellyAboutTrophyQuest01", "SkellyAboutPast03", "SkellyAboutTyphon01", "SkellyAboutTyphon02", "SkellyAboutTyphonW01", }, }, }, }, { Cue = "/VO/Skelly_0042", Text = "Chúng ta có thể nói chuyện được không?", PlayFirst = true }, { Cue = "/VO/Skelly_0405", Text = "Lại đây được không?" }, { Cue = "/VO/Skelly_0406", Text = "Ta có điều muốn trao đổi." }, { Cue = "/VO/Skelly_0514", Text = "Này, ta có thể nói vài câu được không?" }, }, { BreakIfPlayed = true, PlayOnce = true, PreLineAnim = "Skelly_Babbling", ObjectType = "NPC_Skelly_01", GameStateRequirements = { { PathFalse = { "GameState", "ScreensViewed", "Shrine" }, }, NamedRequirements = { "ShrineUnlocked" }, }, { Cue = "/VO/Skelly_0230", Text = "Có thứ gì mới lạ không, cô bé?" }, }, { BreakIfPlayed = true, ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Salute", GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "==", Value = 0, }, }, { Cue = "/VO/Skelly_0228_B", Text = "Các học viên, hãy chú ý!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconEmbarrassed" }, ReactionChance = 0.25 }, }, }, -- Health Quest { GameStateRequirements = { { PathFalse = { "CurrentRun", "ObjectivesCompleted", "KillSkelly" }, }, { PathTrue = { "GameState", "TextLinesRecord", "SkellyAboutHealthQuest03" }, }, }, { PlayOnce = true, PlayOnceContext = "SkellyHealthQuestVO", ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Babbling", { Cue = "/VO/Skelly_0594", Text = "{#Emph}Heheheheh{#Prev}, chỉ đùa thôi. Tiếp tục đi!" }, }, { PlayOnce = true, PlayOnceContext = "SkellyHealthQuestVO", UsePlayerSource = true, PreLineWait = 0.6, { Cue = "/VO/Melinoe_4958", Text = "{#Emph}Chỉ Huy!" }, }, { PlayOnce = true, PlayOnceContext = "SkellyHealthQuestVO", ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Greeting", { Cue = "/VO/Skelly_0595", Text = "Oh, {#Emph}ừm, chào!", BreakIfPlayed = true, }, }, }, { GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeSkellyHealth" }, }, }, { PlayOnce = true, PlayOnceContext = "SkellyHealthQuestVO", ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Babbling", { Cue = "/VO/Skelly_0588", Text = "{#Emph}Oh, hohoho. Ah, hahaha!! Sức mạnh của ta đã trở lại!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 0.66, AnimationNames = { "StatusIconFear", "StatusIconEmbarrassed", "StatusIconGrief" }, ReactionChance = 0.35, }, }, }, { PlayOnce = true, PlayOnceContext = "SkellyHealthQuestVO", UsePlayerSource = true, BreakIfPlayed = true, PreLineWait = 0.6, { Cue = "/VO/Melinoe_4954", Text = "Chỉ Huy...?" }, }, }, -- Trophy Quest { GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = { "TrophyQuestComplete03", }, }, }, }, { PlayOnce = true, PreLineAnim = "Skelly_Babbling", ObjectType = "NPC_Skelly_01", { Cue = "/VO/Skelly_0318", Text = "Sao cơ, con bé đã làm thế ư? Nhưng, bằng cách nào - Thôi dừng lại, con bé đến rồi, im lặng!" }, }, { PlayOnce = true, UsePlayerSource = true, BreakIfPlayed = true, PreLineWait = 0.4, { Cue = "/VO/Melinoe_3283", Text = "Ta đã chính thức trở thành Chiến Binh của Màn Đêm chưa...?" }, }, }, { GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = { "TrophyQuestComplete02", }, }, }, }, { PlayOnce = true, PreLineAnim = "Skelly_Explaining", ObjectType = "NPC_Skelly_01", { Cue = "/VO/Skelly_0313", Text = "{#Emph}Huzzah! {#Prev}Một chiến thắng vẻ vang, một Món Quà xứng đáng!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.3, }, }, }, { PlayOnce = true, UsePlayerSource = true, BreakIfPlayed = true, PreLineWait = 0.4, { Cue = "/VO/Melinoe_3278", Text = "Món Quà thứ hai của Màn Đêm đang đợi..." }, }, }, { GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = { "TrophyQuestComplete01", }, }, }, }, { PlayOnce = true, ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Explaining", { Cue = "/VO/Skelly_0308", Text = "Phần thưởng đang đợi cháu, vinh quang thuộc về cháu! .", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 0.75, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.3, }, }, }, }, { { PlayOnce = true, PlayOnceContext = "SkellyAboutTrophy2VO", ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Babbling", GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = { "SkellyAboutTrophyQuest02", }, }, }, }, { Cue = "/VO/Skelly_0301", Text = "Đã đến lúc chứng tỏ bản thân rồi!" }, }, }, { { PlayOnce = true, PlayOnceContext = "SkellyAboutTrophy3VO", ObjectType = "NPC_Skelly_01", PreLineAnim = "Skelly_Explaining", GameStateRequirements = { { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsAny = { "SkellyAboutTrophyQuest03", }, }, }, }, { Cue = "/VO/Skelly_0302", Text = "Cháu có thể dành chút thời gian trò chuyện với ta được không?" }, }, }, -- Luckier Tooth { BreakIfPlayed = true, RandomRemaining = true, SuccessiveChanceToPlay = 0.5, SuccessiveChanceToPlayAll = 0.05, ObjectType = "NPC_Skelly_01", GameStateRequirements = { { PathTrue = { "CurrentRun", "Hero", "TraitDictionary", "ReincarnationKeepsake" }, }, { PathFalse = { "CurrentRun", "ActiveBounty" }, }, }, { Cue = "/VO/Skelly_0431", Text = "Cháu mang theo chiếc Răng trung thành của ta!", PlayFirst = true }, { Cue = "/VO/Skelly_0432", Text = "Mong chiếc Răng của ta sẽ ban cho cháu tài lộc và danh vọng." }, }, -- Cleared Runs { BreakIfPlayed = true, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.65, ObjectType = "NPC_Skelly_01", GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, { PathFalse = { "CurrentRun", "SpeechRecord", "/VO/Skelly_0087" }, }, { PathFalse = { "CurrentRun", "ActiveBounty" }, }, }, { Cue = "/VO/Skelly_0515", Text = "...Không đời nào cô bé có thể — ô kìa!", PlayFirst = true }, { Cue = "/VO/Skelly_0518", Text = "I, for one, was {#Emph}certain {#Prev}she'd prevail!" }, { Cue = "/VO/Skelly_0643", Text = "Riêng ta, ta không chắc cô bé sẽ thắng thế!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.35, }, GameStateRequirements = { { SumPrevRuns = 9, Path = { "SpeechRecord" }, TableValuesToCount = { "/VO/Skelly_0643" }, Comparison = "<=", Value = 0, }, }, }, { Cue = "/VO/Skelly_0516", Text = "Kẻ Diệt Titan đã trở lại!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.35, }, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { Path = { "GameState", "EnemyKills", "Chronos" }, Comparison = ">=", Value = 3, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "SkellyAboutChronosBossW01", "SkellyAboutChronosBossW02" }, }, }, }, { Cue = "/VO/Skelly_0517", Text = "Rất hợp để tẩn lão Chronos đó!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.35, }, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, { Path = { "GameState", "EnemyKills", "Chronos" }, Comparison = ">=", Value = 3, }, { Path = { "GameState", "TextLinesRecord" }, HasAny = { "SkellyAboutChronosBossW01", "SkellyAboutChronosBossW02" }, }, }, }, { Cue = "/VO/Skelly_0519", Text = "Kẻ đánh bại Typhon đã đến!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.35, }, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { Path = { "GameState", "EnemyKills", "TyphonHead" }, Comparison = ">=", Value = 4, }, { PathTrue = { "GameState", "TextLinesRecord", "SkellyAboutTyphon01" } }, }, }, { Cue = "/VO/Skelly_0520", Text = "Cháu thực sự đã cho Typhon biết tay rồi phải không?", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.35, }, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { Path = { "GameState", "EnemyKills", "TyphonHead" }, Comparison = ">=", Value = 5, }, { PathTrue = { "GameState", "TextLinesRecord", "SkellyAboutTyphon01" } }, }, }, { Cue = "/VO/Skelly_0521", Text = "Hoan hô vị cứu tinh của Olympus!", PlayFirst = true, PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconVictory" }, ReactionChance = 0.35, }, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { Path = { "GameState", "EnemyKills", "TyphonHead" }, Comparison = ">=", Value = 3, }, { PathTrue = { "GameState", "TextLinesRecord", "SkellyAboutTyphon01" } }, { PathTrue = { "GameState", "TyphonDefeatedWithStormStop" }, }, }, }, { Cue = "/VO/Skelly_0522", Text = "Mi đang nói rằng cô bé đã đánh bại Typhon lần nữa ư?", GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "Q_Boss01", "Q_Boss02" }, }, { Path = { "GameState", "EnemyKills", "TyphonHead" }, Comparison = ">=", Value = 8, }, { PathTrue = { "GameState", "TextLinesRecord", "SkellyAboutTyphon01" } }, }, }, }, -- Recruited Shades { BreakIfPlayed = true, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.25, ObjectType = "NPC_Skelly_01", GameStateRequirements = { { Path = { "CurrentRun", "ExorcismSuccesses" }, Comparison = ">=", Value = 1, }, }, { Cue = "/VO/Skelly_0223", Text = "Hôm nay ta nhận thấy vài gương mặt mới, từ Erebus đến!", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ExorcisedNames", }, HasAny = { "ShadesErebusIdle" }, }, }, }, { Cue = "/VO/Skelly_0224", Text = "Chào mừng những ai mới tham gia!" }, { Cue = "/VO/Skelly_0523", Text = "Vài người khác đã lên trần gian rồi phải không?", GameStateRequirements = { { Path = { "CurrentRun", "ExorcisedNames", }, HasAny = { "ShadeEphyraIdle" }, }, }, }, { Cue = "/VO/Skelly_0524", Text = "Chúng ta có một Shade đến từ Đỉnh Núi Olympus!", GameStateRequirements = { { Path = { "CurrentRun", "ExorcisedNames", }, HasAny = { "ShadeTyphonIdle" }, }, }, }, { Cue = "/VO/Skelly_0525", Text = "Shade bọn mi đều là người mới ở đây, nên phải nghe theo lệnh của ta!" }, { Cue = "/VO/Skelly_0526", Text = "Chúng ta có một Shade đến từ Tartarus!", GameStateRequirements = { { Path = { "CurrentRun", "ExorcisedNames", }, HasAny = { "ShadeClockworkIdle" }, }, }, }, { Cue = "/VO/Skelly_0527", Text = "...Và thế là kết thúc buổi định hướng nho nhỏ. Có thắc mắc gì thì cứ hỏi nhé!" }, { Cue = "/VO/Skelly_0528", Text = "...Vậy nên, hãy đứng xung quanh ta được không?" }, { Cue = "/VO/Skelly_0225", Text = "Bản Giao Ước đã đưa mọi người đến đây; nhưng ta sẽ chỉ mọi người cách lựa chọn.", GameStateRequirements = { { PathTrue = { "CurrentRun", "ExorcismSuccessesManual" }, }, }, }, { Cue = "/VO/Skelly_0292", Text = "Chúng ta càng đông, sức mạnh càng lớn!" }, { Cue = "/VO/Skelly_0293", Text = "Chào mừng mọi người đến hàng ngũ tiên phong của đội quân Địa Ngục!" }, { Cue = "/VO/Skelly_0294", Text = "Vài người mới đến từ Oceanus đã gia nhập hàng ngũ của chúng ta!", GameStateRequirements = { { Path = { "CurrentRun", "ExorcisedNames", }, HasAny = { "ShadeOceanusSIdle" }, }, }, }, { Cue = "/VO/Skelly_0295", Text = "Không có ích gì khi khóc lóc ở Cánh Đồng Than Khóc trong khi mọi người có thể gia nhập cùng bọn ta ở đây!", GameStateRequirements = { { Path = { "CurrentRun", "ExorcisedNames", }, HasAny = { "ShadeFieldsGreyIdle" }, }, }, }, }, -- Other Cases { BreakIfPlayed = true, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.65, ObjectType = "NPC_Skelly_01", GameStateRequirements = { { PathFalse = { "CurrentRun", "SpeechRecord", "/VO/Skelly_0087" }, }, { PathFalse = { "CurrentRun", "ActiveBounty" }, }, }, { Cue = "/VO/Skelly_0507", Text = "Này mọi người, xem ai đã quay trở lại này!" }, { Cue = "/VO/Skelly_0508", Text = "Được rồi mọi người, hãy cư xử bình thường, cô ấy đã quay lại rồi!" }, { Cue = "/VO/Skelly_0509", Text = "Tên kia, hãy quay lại hàng ngũ nếu không muốn bị phạt!" }, { Cue = "/VO/Skelly_0510", Text = "Vậy, có ai có câu chuyện nào muốn kể không?" }, { Cue = "/VO/Skelly_0513", Text = "Ta biết rõ âm thanh của tiếng bước chân đó!" }, { Cue = "/VO/Skelly_0037", Text = "...Con bé đang đến, nào những kẻ lười biếng, đứng thẳng lên!", PreLineAnim = "Skelly_Babbling" }, { Cue = "/VO/Skelly_0038", Text = "...À, cuối cùng cũng trở lại rồi.", PlayFirst = true }, { Cue = "/VO/Skelly_0039", Text = "...và thế là kết thúc bài học hôm nay. Nghỉ ngơi đi." }, { Cue = "/VO/Skelly_0040", Text = "...còn một điều nữa... {#Emph}ờm {#Prev}, đứng thẳng lên!" }, { Cue = "/VO/Skelly_0041", Text = "Tất cả, nghiêm!" }, { Cue = "/VO/Skelly_0104", Text = "...và chúng ta phải làm ư? Chỉ đứng yên đó và để tên Titan tự tung tự tác ư?!", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "EnemyKills", "Chronos" }, Comparison = ">=", Value = 1, }, { PathTrue = { "CurrentRun", "BiomesReached", "F" }, }, { PathFalse = { "CurrentRun", "Cleared" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Cue = "/VO/Skelly_0105", Text = "...nhưng đó là câu chuyện dành cho dịp khác, các môn đồ." }, { Cue = "/VO/Skelly_0107", Text = "Chào mừng đến với sân tập!" }, { Cue = "/VO/Skelly_0108", Text = "Một bước nữa trên hành trình đến sự hoàn hảo!" }, { Cue = "/VO/Skelly_0165", Text = "Cô ấy đã đến, giờ hãy xem và học hỏi!", PlayFirst = true }, { Cue = "/VO/Skelly_0296", Text = "Cô ấy luôn trở về, khi bóng tối dần thế chỗ hoàng hôn!" }, { Cue = "/VO/Skelly_0297", Text = "Nghiêm! Một Silver Sister đang đến!" }, { Cue = "/VO/Skelly_0228_C", Text = "Cô ấy đã quay lại!" }, { Cue = "/VO/Skelly_0298", Text = "Mọi người, dừng lại, Silver Sister đang đến!" }, { Cue = "/VO/Skelly_0299", Text = "...Cứ tập luyện đi, như thể cháu vẫn còn mạng sống để phụ thuộc vào nó." }, { Cue = "/VO/Skelly_0005", Text = "À, ta biết tiếng bước chân đó. Hãy đến đây để đôi mắt già nuôi này có thể nhìn thấy cháu." }, { Cue = "/VO/Skelly_0511", Text = "Hãy cúi chào trước Chiến Binh của Màn Đêm!", PlayFirst = true, GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "TrophyQuestComplete03" } }, }, }, { Cue = "/VO/Skelly_0512", Text = "Cháu đã xong việc với Hồ Bạc chưa?", GameStateRequirements = { { PathTrue = { "CurrentRun", "UseRecord", "WeaponShop" }, }, }, }, { Cue = "/VO/Skelly_0024", Text = "...Và đó mới chính là ý nghĩa của cuộc sống, hỡi những môn đồ. Hãy ghi nhớ điều đó!", PreLineAnim = "Skelly_Babbling", GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Skelly_01", }, Comparison = ">=", Value = 4, }, } }, { Cue = "/VO/Skelly_0025", Text = "...Và sau đó ta đã nói... ch-chờ đã, có người đang ở đây.", PreLineAnim = "Skelly_Babbling", GameStateRequirements = { { Path = { "GameState", "UseRecord", "NPC_Skelly_01", }, Comparison = ">=", Value = 6, }, } }, { Cue = "/VO/Skelly_0228_B", Text = "Disciples, atten{#Emph}tion!", GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 20, }, }, }, }, { RandomRemaining = true, PreLineWait = 0.6, UsePlayerSource = true, SuccessiveChanceToPlay = 0.25, PlayOnceFromTableThisRun = true, GameStateRequirements = { { Path = { "CurrentHubRoom", "Name" }, IsAny = { "Hub_PreRun"}, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 1, }, { Path = { "CurrentRun", "CurrentRoom", "SpeechRecord" }, HasNone = { "/VO/Skelly_0042", "/VO/Skelly_0087", "/VO/Skelly_0082" }, }, }, Cooldowns = { { Name = "MelinoeMiscHouseSpeech", Time = 10 }, }, { Cue = "/VO/Melinoe_0071", Text = "Chỉ huy." }, { Cue = "/VO/Melinoe_2919", Text = "Chỉ huy Schelemeus!" }, }, { PreLineWait = 0.4, RandomRemaining = true, SuccessiveChanceToPlay = 0.75, ObjectType = "NPC_Skelly_01", GameStateRequirements = { { Path = { "LastLinePlayed" }, IsAny = { "/VO/Melinoe_0071" }, }, }, { Cue = "/VO/Skelly_0109", Text = "Cô bé." }, { Cue = "/VO/Skelly_0111", Text = "Môn đồ." }, { Cue = "/VO/Skelly_0110", Text = "Nhóc.", GameStateRequirements = { { Path = { "GameState", "SpeechRecord" }, HasAll = { "/VO/Skelly_0109", "/VO/Skelly_0111" }, }, }, }, }, }, }, -- Frinos (Familiar) { TriggerObjectType = "FrogFamiliar", WithinDistance = 500, GameStateRequirements = { { Path = { "CurrentHubRoom", "Name" }, IsAny = { "Hub_PreRun"}, }, }, VoiceLines = { { PlayOnce = true, PlayOnceContext = "FrinosInPreRunVO", BreakIfPlayed = true, UsePlayerSource = true, PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { Path = { "GameState", "EquippedFamiliar" }, IsNone = { "FrogFamiliar" }, }, { PathFalse = { "GameState", "SpeechRecord", "/VO/Melinoe_2770" } }, }, Cooldowns = { { Name = "SaidFrinosRecently", Time = 20 }, }, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, { Cue = "/VO/Melinoe_2770", Text = "Frinos, mi đây rồi!", PlayFirst = true }, }, { PlayOnce = true, BreakIfPlayed = true, UsePlayerSource = true, PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeFamiliarCostumeSystem" }, }, { PathFalse = { "GameState", "SpeechRecord", "/VO/Melinoe_5478" } }, }, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, { Cue = "/VO/Melinoe_5478", Text = "Chào mọi người. Có ai muốn thay đổi diện mạo không?" }, }, }, }, -- Toula (Familiar) { TriggerObjectType = "CatFamiliar", WithinDistance = 500, GameStateRequirements = { { Path = { "CurrentHubRoom", "Name" }, IsAny = { "Hub_PreRun"}, }, }, VoiceLines = { { PlayOnce = true, PlayOnceContext = "ToulaInPreRunVO", BreakIfPlayed = true, RandomRemaining = true, UsePlayerSource = true, PostLineFunctionName = "CatFamiliarReaction", GameStateRequirements = { { Path = { "GameState", "EquippedFamiliar" }, IsNone = { "CatFamiliar" }, }, }, Cooldowns = { { Name = "SaidToulaRecently", Time = 20 }, }, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, { Cue = "/VO/Melinoe_3244", Text = "Toula, mi đã làm được!" }, }, }, }, -- Raki (Familiar) { TriggerObjectType = "RavenFamiliar", WithinDistance = 500, GameStateRequirements = { { Path = { "CurrentHubRoom", "Name" }, IsAny = { "Hub_PreRun"}, }, }, VoiceLines = { { PlayOnce = true, PlayOnceContext = "RakiInPreRunVO", BreakIfPlayed = true, RandomRemaining = true, UsePlayerSource = true, PostLineFunctionName = "RavenFamiliarReaction", GameStateRequirements = { { Path = { "GameState", "EquippedFamiliar" }, IsNone = { "RavenFamiliar" }, }, }, Cooldowns = { { Name = "SaidRakiRecently", Time = 20 }, }, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, { Cue = "/VO/Melinoe_3591", Text = "Raki, chào mừng!" }, }, }, }, -- Hecuba (Familiar) { TriggerObjectType = "HoundFamiliar", WithinDistance = 500, GameStateRequirements = { { Path = { "CurrentHubRoom", "Name" }, IsAny = { "Hub_PreRun"}, }, }, VoiceLines = { { PlayOnce = true, PlayOnceContext = "HecubaInPreRunVO", BreakIfPlayed = true, RandomRemaining = true, UsePlayerSource = true, PostLineFunctionName = "HoundFamiliarReaction", GameStateRequirements = { { Path = { "GameState", "EquippedFamiliar" }, IsNone = { "HoundFamiliar" }, }, }, Cooldowns = { { Name = "SaidHecubaRecently", Time = 20 }, }, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, { Cue = "/VO/Melinoe_3775", Text = "Hecuba đã trở lại!" }, }, }, }, -- Gale (Familiar) { TriggerObjectType = "PolecatFamiliar", WithinDistance = 500, GameStateRequirements = { { Path = { "CurrentHubRoom", "Name" }, IsAny = { "Hub_PreRun"}, }, }, VoiceLines = { { PlayOnce = true, PlayOnceContext = "GaleInPreRunVO", BreakIfPlayed = true, RandomRemaining = true, UsePlayerSource = true, PostLineFunctionName = "PolecatFamiliarReaction", GameStateRequirements = { { Path = { "GameState", "EquippedFamiliar" }, IsNone = { "PolecatFamiliar" }, }, }, Cooldowns = { { Name = "SaidGaleRecently", Time = 20 }, }, TriggerCooldowns = { "MelinoeAnyQuipSpeech" }, { Cue = "/VO/Melinoe_3960", Text = "Gale, chào mừng trở về!" }, }, }, }, }, ReverbValue = 1.5, InspectPointPriority = { 999999, -- hypnos gift 589885, -- statues unlocked 589884, -- statues locked 589890, -- alt run door 589887, -- aspects unlocked 589892, -- familiars 589893, -- grave thirst }, InspectPoints = { -- Inspect: Skelly [390005] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "UseRecord", "NPC_Skelly_01", }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Units = { "NPC_Skelly_01" }, }, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 1, }, { Path = { "CurrentRun", "TextLinesRecord" }, HasNone = { "InspectHadesFountain01", "InspectBroker01" }, }, }, InteractTextLineSets = { InspectPreRun01 = { { Cue = "/VO/Storyteller_0008", Text = "{#Emph}Khu huấn luyện Ngã Ba được canh giữ bởi Schelemeus, một nhà thám hiểm biển cả không biết sợ hãi, nổi tiếng cả khi còn sống lẫn khi đã chết." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_0033", Text = "Có một hiền tài như vậy ở bên phe chúng ta thì không thể nào thất bại được." }, }, { PreLineWait = 0.25, ObjectType = "NPC_Skelly_01", { Cue = "/VO/Skelly_0011", Text = "Không!" }, }, }, }, }, }, -- Inspect: Training Shades [558209] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "InspectHomerReveal01", "InspectPreRun01" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "InspectHomerReveal01" }, Min = 4 }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "InspectHomerReveal01" }, Max = 6 }, }, }, InteractTextLineSets = { InspectHomerReveal02 = { { Cue = "/VO/Storyteller_0013", IsNarration = true, Text = "{#Emph}Tại vùng Crossroads nguyền rủa ngự trị các Shade và Linh Hồn, một số có vẻ tương đồng với thân thể khi còn sống, còn những kẻ khác, thì bị tiêu tan thành tinh hoa thuần tuý nhất." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Melinoe_1132", Text = "Ngài ổn chứ, Homer?" }, }, { PreLineWait = 0.4, RequiredMinElapsedTime = 3, StatusAnimation = "StatusIconStorytellerSpeaking", StatusAnimSourceIsHero = true, Source = { LineHistoryName = "Speaker_Homer", SubtitleColor = Color.NarratorVoice }, { Cue = "/VO/Storyteller_0033", Text = "{#Emph}Không..." }, }, }, }, }, }, -- Inspect: Recruited Shades [589894] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "CurrentRun", "ExorcismSuccesses" }, Comparison = ">=", Value = 2, }, { Path = { "GameState", "ExorcismSuccesses" }, Comparison = ">=", Value = 10, }, }, InteractTextLineSets = { InspectRecruitedShades01 = { { Cue = "/VO/Storyteller_0355", IsNarration = true, Text = "{#Emph}Crossroads nay đã đông đảo hàng ngũ Shade, hiện đang tham gia vào sứ mệnh chính nghĩa của Công Chúa Melinoë." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4085", Text = "Chào mừng đến với hàng ngũ của Hội Vô Hình!", PreLineThreadedFunctionName = "CrowdReactionPresentationEventSource", PreLineThreadedFunctionArgs = { Delay = 1.25, AnimationNames = { "StatusIconSmile", "StatusIconOhBoy", "StatusIconEmbarrassed" }, ReactionChance = 0.25 }, }, }, }, }, }, }, -- Inspect: BountyBoard [561152] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeBountyBoard", }, }, { PathTrue = { "GameState", "ScreensViewed", "BountyBoard" }, }, }, InteractTextLineSets = { InspectBountyBoard01 = { { Cue = "/VO/Storyteller_0063", IsNarration = true, Text = "{#Emph}Phiến Đá Đen cổ xưa đến mức nó đã tồn tại trước cả Thời Gian. Bề mặt của nó dường như đã hút cạn mọi nguồn sáng và màu sắc xung quanh nó." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_1117", Text = "Giờ ta có thể nhìn thấy về mặt của nó..." }, }, }, }, }, -- Inspect: Oath -- Inspect: Shrine [566416] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "ScreensViewed", "Shrine" }, }, }, InteractTextLineSets = { InspectPact01 = { { Cue = "/VO/Storyteller_0233", IsNarration = true, Text = "{#Emph}Một tượng đài Màn Đêm bí mật, khắc ghi ý chí và ước nguyện của cô, sừng sững trong sân tập, chỉ thể hiện bản chất thật sự trước những ai xứng đáng." }, EndVoiceLines = { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 2, { Cue = "/VO/Melinoe_2960", Text = "Giờ mình đã ở trong Hội Bàn Tròn..." }, }, }, }, }, -- Inspect: Upgraded Altar [589888] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeCardUpgradeSystem" }, }, { PathFalse = { "CurrentRun", "WorldUpgrades", "WorldUpgradeCardUpgradeSystem" }, }, { Path = { "GameState", "MetaUpgradeMaxLevelCountCache" }, Comparison = ">=", Value = 2, }, }, InteractTextLineSets = { InspectUpgradedAltar01 = { { Cue = "/VO/Storyteller_0356", IsNarration = true, Text = "{#Emph}Tại ranh giới của Crossroads và lối đi đến cõi giới khác, Bệ Thờ Tro Tàn đang tỏa ra nguồn sức mạnh cổ xưa, vô biên, chẳng kém gì những vị thần và anh hùng được khắc trên những thẻ Arcana." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4086", Text = "Sức mạnh tiềm ẩn của tất cả chúng ta..." }, }, }, }, }, }, -- Inspect: Grave Thirst [589893] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeUnusedWeaponBonus" }, }, { PathFalse = { "CurrentRun", "WorldUpgradesAdded", "WorldUpgradeUnusedWeaponBonus" } }, { Path = { "GameState", "TraitsTaken" }, HasAny = { "UnusedWeaponBonusTrait", "UnusedWeaponBonusTrait2" }, }, { SumPrevRuns = 6, Path = { "WorldUpgradesAdded", "WorldUpgradeUnusedWeaponBonus" }, CountPathTrue = true, Comparison = ">=", Value = 1, }, }, InteractTextLineSets = { InspectGraveThirst01 = { { Cue = "/VO/Storyteller_0351", IsNarration = true, Text = "{#Emph}Màu sắc của cái chết đang tỏa ra từ Vũ Khí Hắc Ám, hoặc ít nhất là một trong số chúng; khao khát chia cắt linh hồn bất diệt do Định Mệnh sắp đặt." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4081", Text = "{#Emph}Thu Thập Xương Cổ..." }, }, }, }, }, }, -- Inspect: Aspects Unlocked [589887] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeWeaponUpgradeSystem" }, }, { Path = { "GameState", "WeaponsUnlocked" }, CountOf = GameData.AllWeaponAspects, Comparison = ">=", Value = 1, }, { Path = { "GameState", "WeaponsUnlocked" }, CountOf = GameData.AllWeaponAspects, Comparison = "<=", Value = 8, }, }, InteractTextLineSets = { InspectAspectsUnlocked01 = { { Cue = "/VO/Storyteller_0352", IsNarration = true, Text = "{#Emph}Giữa Hồ Bạc hiện đang xuất hiện những bóng đen của Vũ Khí Hắc Ám, những hình dạng mà Công Chúa Địa Ngục chưa từng thấy trước đây." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4082", Text = "Quá nhiều hình dạng khác nhau..." }, }, }, }, }, }, -- Inspect: All Weapons [589886] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "GameState", "WeaponsUnlocked" }, HasAll = { "WeaponStaffSwing", "WeaponDagger", "WeaponTorch", "WeaponAxe", "WeaponLob", "WeaponSuit" }, }, { Path = { "CurrentRun", "WeaponsUnlocked" }, HasNone = { "WeaponStaffSwing", "WeaponDagger", "WeaponTorch", "WeaponAxe", "WeaponLob", "WeaponSuit" }, }, }, InteractTextLineSets = { InspectAllWeaponsUnlocked01 = { { Cue = "/VO/Storyteller_0357", IsNarration = true, Text = "{#Emph}Mỗi Vũ Khí Hắc Ám cổ xưa đều do Định Mệnh tạo ra, giờ đây được trao lại cho Công Chúa Địa Ngục, tất cả đều sẵn sàng để tiêu diệt kẻ thù." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4087", Text = "Như ta vậy." }, }, }, }, }, }, -- Inspect: Alt Run Door [589889] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "WorldUpgrades", "WorldUpgradeAltRunDoor" }, }, { PathFalse = { "GameState", "RoomsEntered", "Q_Intro" }, }, }, InteractTextLineSets = { InspectAltRunDoor01 = { { Cue = "/VO/Storyteller_0349", IsNarration = true, Text = "{#Emph}Công Chúa Địa Ngục hiện đã nắm giữ chìa khóa của cánh cổng bị phong ấn, đường dẫn lên trần gian; nhưng liệu nàng có thể sống sót ở cõi bị cấm này không?" }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4079", Text = "Chúng ta sẽ sớm biết thôi!" }, }, }, }, }, }, -- Inspect: Familiars [589892] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "GameState", "FamiliarsUnlocked" }, CountOf = { "FrogFamiliar", "RavenFamiliar", "CatFamiliar", "HoundFamiliar", "PolecatFamiliar", }, Comparison = ">=", Value = 3, }, { Path = { "GameState", "FamiliarsUnlocked" }, CountOf = { "FrogFamiliar", "RavenFamiliar", "CatFamiliar", "HoundFamiliar", "PolecatFamiliar", }, Comparison = "<", Value = 5, }, }, InteractTextLineSets = { InspectPreRunFamiliars01 = { { Cue = "/VO/Storyteller_0350", IsNarration = true, Text = "{#Emph}Đàn Linh Thú trung thành ngày càng lớn mạnh, luôn sẵn sàng đi theo Công Chúa Địa Ngục đến bất cứ đâu mà Định Mệnh sắp đặt." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4080", Text = "Những vệ sĩ nhỏ bé của ta!" }, }, }, }, }, }, -- Inspect: Overlook Full Moon [589890] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "InspectPreRun01" }, }, { Path = { "GameState", "GamePhase" }, Comparison = "==", Value = 1, }, }, InteractTextLineSets = { InspectPreRunFullMoon01 = { { Cue = "/VO/Storyteller_0347", IsNarration = true, Text = "{#Emph}Ánh trăng tỏa sáng từ trên cao, ban xuống muôn vàn ân huệ và quyền năng từ phía bên kia vòm trời trần thế, nơi những tán cây vách đá tạo nên góc nhìn tuyệt đẹp." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4077", Text = "Crossroads nằm giữa các cõi..." }, }, }, }, }, }, -- Inspect: Overlook New Moon [589891] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "InspectPreRun01" }, }, { Path = { "GameState", "GamePhase" }, Comparison = "==", Value = 5, }, }, InteractTextLineSets = { InspectPreRunNewMoon01 = { { Cue = "/VO/Storyteller_0348", IsNarration = true, Text = "{#Emph}Đêm nay vắng bóng Mặt Trăng, ánh sáng của người cũng chỉ tạm thời vụt tắt, để chuẩn bị cho sự tỏa sáng trở lại, với quyền năng và sức mạnh mới." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4078", Text = "Chu kỳ của chúng ta lại bắt đầu..." }, }, }, }, }, }, -- Inspect: Keepsakes [780560] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { Path = { "GameState", "GiftPresentation", }, UseLength = true, Comparison = ">=", Value = 22, }, }, InteractTextLineSets = { InspectManyKeepsakes01 = { { Cue = "/VO/Storyteller_0412", IsNarration = true, Text = "{#Emph}Chiếc rương cũ kỹ đó giờ đây chứa đựng những kỷ vật tri ân từ những vị thần và những người khác; một lời nhắn nhủ rằng Công Chúa Địa Ngục sẽ không chiến đấu đơn độc." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4271", Text = "Mọi người luôn ở cạnh ta..." }, }, }, }, }, }, -- Inspect: Statues / Skelly Statues Locked [589885] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "SkellyAboutTrophyQuest01" }, }, { PathFalse = { "CurrentRun", "TextLinesRecord", "SkellyAboutTrophyQuest01" }, }, { PathFalse = { "GameState", "TextLinesRecord", "TrophyQuestComplete03" }, }, }, InteractTextLineSets = { InspectSkellyStatuesLocked01 = { { Cue = "/VO/Storyteller_0353", IsNarration = true, Text = "{#Emph}Ba Món Quà từ Veil chỉ dành cho những kẻ xứng đáng với danh hiệu Chiến Binh của Màn Đêm, đang vẫy gọi Công Chúa Địa Ngục hãy chứng minh tài năng vô song của mình trước toàn cõi." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4083", Text = "Oh, ta cũng không biết nữa..." }, }, { PreLineWait = 0.25, ObjectType = "NPC_Skelly_01", { Cue = "/VO/Skelly_0580", Text = "Oh, ta thì biết!" }, }, }, }, }, }, -- Inspect: Statues / Skelly Statues Unlocked [589884] = { PlayOnce = true, UseText = "UseExamineMisc", SetupGameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "TrophyQuestComplete03" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "TrophyQuestComplete03" }, Min = 3 }, }, }, InteractTextLineSets = { InspectSkellyStatues01 = { { Cue = "/VO/Storyteller_0354", SkipPortrait = true, IsNarration = true, Emote = "PortraitEmoteSurprise", Text = "{#Emph}Ờ, ừm, ờ, ừm ùm ừm.... Ba bức tượng Công Chúa Địa Ngục của chúng ta có dáng vẻ uy nghiêm đến mức khiến bất kỳ linh hồn nào đứng gần cũng phải bày tỏ sự tôn kính." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_4084", Text = "Tôn kính ư...?" }, }, { PreLineWait = 0.35, ObjectType = "NPC_Skelly_01", { Cue = "/VO/Skelly_0581", Text = "Phải, cứ nhìn chúng là biết!" }, }, }, }, }, }, }, }, -- Flashback01 Hub / Hecate Flashback Flashback_Hub_Main = { RichPresence = "#RichPresence_Dream", HeroUnitName = "PlayerMelFlashback", HeroOverwrites = { AttachedAnimationName = "LaurelCindersSpawner_Young", Portrait = "Portrait_Mel_Child_01", }, OnDeathLoadRequirements = { { NamedRequirements = { "Flashback01Unlocked" }, }, }, ZoomFraction = 1.0, SoftClamp = 0.75, SkipStartRoomPresentation = true, -- CameraWalls = true, SpeakerName = { "Hecate", "Odysseus", "Hypnos", }, LoadPackages = { "Hecate", "Odysseus", "Hypnos", }, IgnoreStemMixer = true, IntroSequenceDuration = 2.0, DebugOnly = true, NoAutoEquip = true, FullscreenEffectGroup = "Foreground_01", BlockCombat = true, LegalEncounters = { "Empty", }, AmbientMusicParams = { LowPass = 0.0, Vocals = 1.0, }, AmbientMusicVolume = 1.0, Ambience = "/Ambience/RunstartIntroAmbience", ReverbValue = 0.4, StartUnthreadedEvents = { { FunctionName = "SetupPrePlacedUnits", Args = { TypeNames = { "NPC_LightRanged" }, }, }, { FunctionName = "CheckPriorityConversations", GameStateRequirements = { -- None }, Args = { Conversations = { "HypnosHideAndSeek01", }, IgnorePackages = true, }, }, { FunctionName = "SetupFlashback01", Args = { Ids = { 583639 }, NightmareMessage = "FlashbackMessage01", IgnorePackages = true, TextLineSet = { HecateHideAndSeekIntro01 = { { Cue = "/VO/Storyteller_0235", IsNarration = true, SkipPortrait = true, LineHistoryName = "Speaker_Anonymous", SubtitleColor = Color.NarratorVoice, PreLineWait = 0.9, PostLineThreadedFunctionName = "CheckPriorityConversations", PostLineFunctionArgs = { Conversations = { "HecateHideAndSeek01", "HecateHideAndSeek02", "HecateHideAndSeek03", "HecateFlashback01", }, IgnorePackages = true, }, Text = "{#Emph}Hôm đấy là một đêm tối mịt giữa một khu rừng u ám, không chút ánh trăng tại ranh giới Địa Ngục. Tại đó hiện hữu một cô Công Chúa trẻ bị ruồng bỏ, đang trên đường đi săn con mồi..." }, EndVoiceLines = { { UsePlayerSource = true, { Cue = "/VO/Melinoe_2106", Text = "...Sẵn sàng chưa, mình đi tìm đây...!", PreLineWait = 0.5 }, }, }, }, }, }, }, }, ThreadedEvents = { }, UnthreadedEvents = { }, ObstacleData = { -- Kitties [783240] = { Name = "FlashbackKitties01", DistanceTriggers = { { WithinDistance = 450, VoiceLines = { PlayOnce = true, BreakIfPlayed = true, UsePlayerSource = true, PreLineWait = 0.4, { Cue = "/VO/Melinoe_4841", Text = "Chào mèo con!" }, }, }, }, }, -- Ghosts / Shades [561454] = { Name = "FlashbackShade01", SetupGameStateRequirements = { -- }, DistanceTriggers = { { WithinDistance = 450, ChanceToPlay = 1, FunctionName = "PlayEmoteSimple", Args = { TargetId = 561454, OffsetZ = 60, AnimationName = "StatusIconSmile", }, GameStateRequirements = { { -- PathTrue = { "GameState", "TextLinesRecord", "HecateHideAndSeek01" }, }, }, VoiceLines = { PlayOnce = true, BreakIfPlayed = true, UsePlayerSource = true, PreLineWait = 0.4, PostLineThreadedFunctionName = "PlayEmoteSimple", PostLineFunctionArgs = { TargetId = 561454, AnimationName = "StatusIconFear", }, { Cue = "/VO/Melinoe_2114", Text = "Chào Shades, Hecate có ở đây không...? Ông có thấy bà ta không?" }, }, }, { WithinDistance = 450, ChanceToPlay = 1, FunctionName = "PlayEmoteSimple", Args = { TargetId = 561454, OffsetZ = 60, AnimationName = "StatusIconFear", Delay = 3 }, }, }, }, }, EnterVoiceLines = { }, InspectPoints = { -- Inspect: Homer reveal [583651] = { PlayOnce = true, UseText = "UseExamineMisc", InspectMoveIds = { [561501] = 583653, [561499] = 583654, [561498] = 583655, [567076] = 583656, }, InteractTextLineSets = { InspectHomerReveal01 = { { Cue = "/VO/Storyteller_0140", PreLineAngleHeroTowardTargetId = 575836, PreLineAnim = "Melinoe_Young_Brooding_Start", PreLineAnimTarget = "Hero", Text = "{#Emph}Cô Công Chúa tinh mắt phát hiện ra một loạt dấu vết, ẩn ý rằng đối thủ đã băng qua vùng đất bụi bặm này cách đây không lâu..." }, { Cue = "/VO/Melinoe_2105", AngleTowardTargetId = 576016, UsePlayerSource = true, SecretMusic = "/EmptyCue", StartSound = "/SFX/Menu Sounds/RecordScratch", PortraitExitAnimation = "Portrait_Mel_Child_01_Exit", PostLineAnim = "Melinoe_Young_Brooding_End", PostLineAnimTarget = "Hero", Speaker = "PlayerUnit_Flashback", Emote = "PortraitEmoteFiredUp", Text = "{#Emph}Dừng lại đi {#Prev}, Homer! Ngài thuật lại từng nhất cử nhất động của ta thì sao ta tìm bà ta được?" }, { Cue = "/VO/Storyteller_0149", SkipPortrait = true, IsNarration = true, Emote = "PortraitEmoteSurprise", PostLineFunctionName = "UpdateHubMainFlashback", PostLineFunctionArgs = { InspectPoint = true }, PostLineThreadedFunctionName = "CheckPriorityConversations", PostLineThreadedFunctionArgs = { Conversations = { "OdysseusHideAndSeek01", }, IgnorePackages = true, }, Text = "{#Emph}Ờooo ờm-ờm-ờm, ta, ta, ta không biết cô ấy đề cập đến ai... không biết người mà Công Chúa Địa Ngục nhắc đến là ai! Cô ấy tiếp tục hành trình tìm kiếm định mệnh của mình." }, EndVoiceLines = { { PreLineWait = 0.4, UsePlayerSource = true, RequiredMinElapsedTime = 3, { Cue = "/VO/Melinoe_2269", Text = "Đừng chọc ta nữa, giúp ta tìm đi!" }, }, }, }, }, }, }, }, -- Flashback02 / Hades Flashback Flashback_DeathAreaBedroomHades = { RichPresence = "#RichPresence_Dream", HeroUnitName = "PlayerHadesFlashback", HeroOverwrites = { AttachedAnimationName = "nil", LineHistoryName = "NPC_Hades_01", SubtitleColor = Color.HadesVoice, }, OnDeathLoadRequirements = { { NamedRequirements = { "Flashback02Unlocked" }, }, }, ZoomFraction = 1.0, SoftClamp = 0.75, EntranceFunctionName = "EnterHubRoomPresentation", -- NextRoomEntranceFunctionName = "LeavingBedroomHadesPresentation", LoadPackages = { "Hades", "Nyx", }, IgnoreStemMixer = true, IntroSequenceDuration = 0.2, DebugOnly = true, NoAutoEquip = true, FullscreenEffectGroup = "Foreground_01", BlockCombat = true, LegalEncounters = { "Empty", }, CheckObjectives = { "MetaPrompt", "BedPrompt" }, StartUnthreadedEvents = { { FunctionName = "ActivatePrePlaced", GameStateRequirements = { }, Args = { Types = { "NPC_Hecate_01", }, }, }, { FunctionName = "SetupFlashback02", Args = { NightmareMessage = "NightmareMessage", NightmareMessageSubtitle = "NightmareMessage_Subtitle", SecretMusic = "/Music/MusicHadesReset2_MC" }, }, { FunctionName = "ActivatePrePlacedUnits", GameStateRequirements = { { PathFalse = { "GameState", "TextLinesRecord", "ChronosNightmare01", }, }, }, Args = { Ids = { 560340 }, }, }, { FunctionName = "SurpriseNPCPresentation", Args = { SourceId = 560340, SkipPan = true, VoiceLines = { Queue = "Interrupt", { { PreLineWait = 2.75, ObjectType = "NPC_Hecate_01", { Cue = "/VO/Hecate_0207", Text = "...Nhưng, Ngài Hades, ta..." }, }, }, }, TextLineSet = { HadesWithHecate01 = { { Cue = "/VO/Hades_0048", Speaker = "NPC_LordHades_01", LineHistoryName = "NPC_Hades_01", SubtitleColor = Color.HadesVoice, Portrait = "Portrait_Hades_Past_01", PortraitExitAnimation = "Portrait_Hades_Past_01_Exit", Text = "...Đó là mệnh lệnh. Giờ hãy trở về bóng tối. Và chăm sóc con bé. Vì tất cả chúng ta." }, { Cue = "/VO/Hecate_0208", Speaker = "NPC_Hecate_01", Portrait = "Portrait_Hec_Baby_01", PortraitExitAnimation = "Portrait_Hec_Baby_01_Exit", PostLineThreadedFunctionName = "HecateFlashback02Exit", Text = "Sẽ không gì có thể tổn hại đến Melinoë bé bỏng, thưa ngài. Ít nhất là trong việc này, ta sẽ không phụ lòng ngài." }, EndVoiceLines = { { PreLineWait = 0.8, ObjectType = "NPC_Hecate_01", { Cue = "/VO/Hecate_0209", Text = "Rất tốt..." }, }, { PreLineWait = 0.4, UsePlayerSource = true, { Cue = "/VO/Hades_0017", Text = "Tạm biệt, Con Gái..." }, }, }, }, } }, }, }, ThreadedEvents = { { FunctionName = "Flashback02Objective", Args = { Delay = 11.0 }, }, }, UnthreadedEvents = { }, ObstacleData = { -- room exit [488298] = { OnUsedGameStateRequirements = { -- }, OnUsedFunctionName = "DeathAreaSwitchRoom", OnUsedFunctionArgs = { Name = "Flashback_DeathArea", HeroStartPoint = 555684, HeroEndPoint = 555685 }, InteractDistance = 140, AutoActivate = true, }, }, EnterVoiceLines = { -- }, InspectPoints = { -- }, }, -- Flashback02 -- Hub Flashback_DeathArea = { RichPresence = "#RichPresence_Dream", HeroUnitName = "PlayerHadesFlashback", ZoomFraction = 0.9, ZoomLerpTime = 2.0, CameraZoomWeights = { [40001] = 1.0, [210380] = 1.2, [50002] = 1.3, [555424] = 1.0, }, SoftClamp = 0.75, CameraClamps = { 422043, 422045, 422046, 555683 }, -- CameraClamps = { 422050, 422043, 422045, 422046, 422047 }, FullscreenEffectGroup = "LoungeHider_01", BlockCombat = true, EntranceFunctionName = "EnterHubRoomPresentation", ReverbValue = 2.0, GlobalEcho = 0.1, IgnoreStemMixer = true, AmbientMusicParams = { LowPass = 0.0, Vocals = 1.0, }, AmbientMusicVolume = 1.0, Ambience = "/Ambience/MusicExploration4Ambience", StartUnthreadedEvents = { }, ThreadedEvents = { { FunctionName = "SetupFlashback02_DeathArea", Args = { NightmareMessage = "NightmareMessage", SecretMusic = "/Music/MusicHadesReset2_MC" }, GameStateRequirements = { } }, }, UnthreadedEvents = { { FunctionName = "ActivatePrePlaced", GameStateRequirements = { -- None }, Args = { Types = { "NPC_Nyx_01", "NPC_Chronos_Story_01", }, }, }, { FunctionName = "CheckConversations", Args = {}, }, }, RushMaxRangeOverride = 200, InspectPoints = { }, ObstacleData = { }, }, }) GlobalVoiceLines = GlobalVoiceLines or {} GlobalVoiceLines.DeathVoiceLines = { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsNone = { "I_PostBoss01" }, }, }, { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, -- PreLineWait = 0.25, SkipAnim = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, }, { Cue = "/VO/MelinoeField_3305", Text = "{#Emph}Ow...!" }, { Cue = "/VO/MelinoeField_3306", Text = "{#Emph}Ow!" }, { Cue = "/VO/MelinoeField_3307", Text = "{#Emph}Cái gì?!" }, { Cue = "/VO/MelinoeField_3308", Text = "{#Emph}Này!" }, { Cue = "/VO/MelinoeField_3309", Text = "{#Emph}Gah!" }, { Cue = "/VO/MelinoeField_3310", Text = "{#Emph}Ouch!" }, }, { Queue = "Interrupt", RandomRemaining = true, -- BreakIfPlayed = true, -- PreLineWait = 0.25, SkipAnim = true, { Cue = "/VO/Melinoe_0123", Text = "Cái—?", GameStateRequirements = { { PathFalse = { "CurrentRun", "BountyCleared" } } } }, { Cue = "/VO/Melinoe_0125", Text = "{#Emph}Augh!" }, { Cue = "/VO/Melinoe_0126", Text = "{#Emph}Gaah!" }, { Cue = "/VO/MelinoeField_1384", Text = "{#Emph}Ungh!" }, { Cue = "/VO/Melinoe_0124", Text = "{#Emph}Ungh{#Prev}, không!", GameStateRequirements = { { PathFalse = { "CurrentRun", "BountyCleared" } }, }, }, { Cue = "/VO/MelinoeField_1387", Text = "Sao có thể—?", GameStateRequirements = { { PathFalse = { "CurrentRun", "BountyCleared" } }, }, }, { Cue = "/VO/MelinoeField_1389", Text = "Không!", GameStateRequirements = { { PathFalse = { "CurrentRun", "BountyCleared" } }, }, }, { Cue = "/VO/MelinoeField_1390", Text = "{#Emph}Ngh {#Prev}, không...!", GameStateRequirements = { { PathFalse = { "CurrentRun", "BountyCleared" } }, }, }, { Cue = "/VO/MelinoeField_1388", Text = "Ngươi!!", GameStateRequirements = { { Path = { "CurrentRun", "Hero", "TraitDictionary" }, HasNone = { "SurfacePenalty" }, }, { PathNotEmpty = { "RequiredKillEnemies" }, }, { PathFalse = { "CurrentRun", "BountyCleared" } }, }, }, { Cue = "/VO/MelinoeField_3309", Text = "{#Emph}Gah!", GameStateRequirements = { { PathTrue = { "CurrentRun", "BountyCleared" } }, }, }, { Cue = "/VO/MelinoeField_3305", Text = "{#Emph}Ow...!", GameStateRequirements = { { PathTrue = { "CurrentRun", "BountyCleared" } }, { Path = { "GameState", "PackagedBountyClears" }, UseLength = true, Comparison = ">=", Value = 4, }, }, }, { Cue = "/VO/MelinoeField_3306", Text = "{#Emph}Ow!", GameStateRequirements = { { PathTrue = { "CurrentRun", "BountyCleared" } }, { Path = { "GameState", "PackagedBountyClears" }, UseLength = true, Comparison = ">=", Value = 4, }, }, }, { Cue = "/VO/MelinoeField_3310", Text = "{#Emph}Ouch!", GameStateRequirements = { { PathTrue = { "CurrentRun", "BountyCleared" } }, { Path = { "GameState", "PackagedBountyClears" }, UseLength = true, Comparison = ">=", Value = 4, }, }, }, }, } -- death sequence voice lines (mel & other cases) GlobalVoiceLines.DeathReturnVoiceLines = { -- ??? { PlayOnce = true, BreakIfPlayed = true, PreLineWait = 0.85, NoTarget = true, Source = { LineHistoryName = "NPC_Unnamed_01", SubtitleColor = Color.FatesVoice }, GameStateRequirements = { NamedRequirements = { "FatesDiscoveredTooSoon" } }, { Cue = "/VO/Moros_1020", Text = "Chẳng có gì để xem ở đây cả! Tạm biệt!" }, { Cue = "/VO/Moros_1021", Text = "Này! Đi đi! Rời khỏi đây đi!" }, { Cue = "/VO/Moros_1022", Text = "Cô có thể lo việc của mình không?" }, { Cue = "/VO/Moros_1023", Text = "Cô đến sớm quá đó, đi chỗ khác đi!" }, }, -- hecate lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.65, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Hecate_01", SubtitleColor = Color.HecateVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_Boss01", "F_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = ">", Value = 0, }, }, { Cue = "/VO/Hecate_0134", Text = "Cô phải mạnh hơn thế này, Melinoë." }, { Cue = "/VO/Hecate_0137", Text = "Trở về, nghỉ ngơi, và thử lại, Melinoë.", }, { Cue = "/VO/Hecate_0139", Text = "Hãy kiểm điểm lại những sai lầm mà cô mắc phải, Melinoë.", }, { Cue = "/VO/Hecate_0010", Text = "Rõ ràng cô vẫn chưa chuẩn bị kỹ lưỡng.", PlayFirst = true, GameStateRequirements = { { PathFalse = { "GameState", "RoomCountCache", "G_Intro" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = ">=", Value = 0.33, }, }, }, { Cue = "/VO/Hecate_0132", Text = "Ta biết cô mạnh mẽ hơn thế này nhiều.", GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = ">=", Value = 0.25, }, { Path = { "GameState", "LastBossHealthBarRecord", "Hecate" }, Comparison = ">=", Value = 0.25, }, }, }, { Cue = "/VO/Hecate_0133", Text = "Ta biết cô có thể làm tốt hơn thế.", GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = ">=", Value = 0.4, }, { Path = { "GameState", "LastBossHealthBarRecord", "Hecate" }, Comparison = ">=", Value = 0.25, }, }, }, { Cue = "/VO/Hecate_0135", Text = "Đã rút ra bài học mới rồi phải không?", GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 3, }, { Path = { "GameState", "LastBossHealthBarRecord", "Hecate" }, Comparison = ">", Value = 0, }, }, }, { Cue = "/VO/Hecate_0136", Text = "Mặt Trăng là nhân chứng cho cuộc đối đầu của chúng ta đêm nay.", GameStateRequirements = { { PathTrue = { "CurrentRun", "UseRecord", "SpellDrop" } }, }, }, { Cue = "/VO/Hecate_0138", Text = "Ta chẳng hề vui vẻ gì với chuyện này, ta hy vọng cô hiểu.", GameStateRequirements = { { Path = { "GameState", "LastBossHealthBarRecord", "Hecate" }, Comparison = ">=", Value = 0.4, }, }, }, { Cue = "/VO/HecateField_0074", Text = "Gục ngã dưới áp lực của mọi thứ...", GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = "<=", Value = 0.3, }, }, }, { Cue = "/VO/HecateField_0075", Text = "Cô suýt thì đánh bại ta! Nhưng rất tiếc.", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = "<=", Value = 0.25, }, }, }, { Cue = "/VO/HecateField_0076", Text = "Gần thành công rồi, nhưng vẫn chưa đủ mạnh.", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = "<=", Value = 0.25, }, }, }, { Cue = "/VO/HecateField_0077", Text = "Ít nhất cô cũng đã chiến đấu quyết liệt hơn lần trước.", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = "<", Value = 0.33, }, { Path = { "PrevRun", "BossHealthBarRecord", "Hecate" }, Comparison = ">=", Value = 0.5, }, --[[ { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "F_Boss01", Count = 1 }, }, ]]-- }, }, { Cue = "/VO/HecateField_0078", Text = "Đừng thất vọng, cô đã chiến đấu rất tốt.", GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = "<=", Value = 0.33, }, }, }, { Cue = "/VO/HecateField_0079", Text = "Cô gần như chẳng động đến ta.", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = ">=", Value = 0.66, }, { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 3, }, }, }, }, -- scylla lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.55, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Scylla_01", SubtitleColor = Color.ScyllaVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_Boss01", "G_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Scylla" }, Comparison = ">", Value = 0, }, }, { Cue = "/VO/Scylla_0134", Text = "Bọn ta là {#Emph}Scylla và các Siren{#Prev}, mọi người ơi!!" }, { Cue = "/VO/Scylla_0135", Text = "Cảm ơn mọi người! Chúc ngủ ngon!" }, { Cue = "/VO/Scylla_0136", Text = "{#Emph}Cảm ơn, Oceanus!!", PlayFirst = true }, { Cue = "/VO/Scylla_0137", Text = "Này, cảm ơn vì đã đến buổi biểu diễn của bọn ta!" }, { Cue = "/VO/Scylla_0264", Text = "Này, đợi đã, đừng đi! Bọn ta chỉ mới bắt đầu thôi!" }, { Cue = "/VO/Scylla_0265", Text = "Ồ, không sao đâu! Ca khúc mới của bọn ta sẽ chỉ dành cho thành viên đặc biệt thôi." }, { Cue = "/VO/Scylla_0266", Text = "Không chờ đợi luôn! Bọn ta vẫn còn nhiều bài hát để biểu diễn mà!" }, { Cue = "/VO/Scylla_0267", Text = "Đi đi, chạy đi! Và hãy kể cho mọi người biết về bọn ta!" }, { Cue = "/VO/Scylla_0268", Text = "{#Emph}Heeheeheehee! {#Prev}Ta đã bảo rồi mà, các cô gái, cô ta chẳng là gì với chúng ta đâu!" }, { Cue = "/VO/Scylla_0269", Text = "Nhớ quay lại nhé, bọn ta sẽ biểu diễn mỗi đêm!" }, }, -- chronos lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.55, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Chronos_01", SubtitleColor = Color.ChronosVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Chronos" }, Comparison = ">", Value = 0, }, }, { Cue = "/VO/Chronos_0197", Text = "Một kết quả hiển nhiên, không gì hơn.", PlayFirst = true }, { Cue = "/VO/Chronos_0198", Text = "Chúng ta sẽ lặp lại điều này vào lúc khác." }, { Cue = "/VO/Chronos_0199", Text = "Những kẻ trung thành với những vị thần sẽ chẳng nhận lại điều tốt lành gì." }, { Cue = "/VO/Chronos_0200", Text = "Ta đã mong đợi nhiều hơn từ dòng dõi của mình." }, { Cue = "/VO/Chronos_0201", Text = "Ngươi hy vọng mình sẽ đạt được điều gì ở đây?" }, { Cue = "/VO/Chronos_0202", Text = "Thời Gian có thể chữa lành mọi vết thương, hoặc cũng có thể mang chúng đến một cách nhanh chóng." }, { Cue = "/VO/Chronos_0468", Text = "Chỉ có mình ta sẽ không bao giờ quên những nỗ lực vô nghĩa của ngươi." }, { Cue = "/VO/Chronos_0469", Text = "Như ngươi đã thấy, ta vẫn rất nhanh nhẹn, dù đã có tuổi." }, { Cue = "/VO/Chronos_0470", Text = "Hãy tấn công ta thỏa thích; ta có toàn thời gian của thế giới này." }, { Cue = "/VO/Chronos_0471", Text = "Giới trẻ thời nay thật yếu kém cả về thể xác lẫn trí tuệ." }, { Cue = "/VO/Chronos_0257", Text = "Kết quả thì vẫn như thế, nhưng ngươi lại không bỏ cuộc.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0258", Text = "Ngươi mong đợi sẽ có phép màu xảy ra trong lần này à?", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0259", Text = "Lại một lần nữa, ngươi đã thoát khỏi tay ta, nhưng ta sẽ sớm bắt được ngươi thôi.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0260", Text = "Lại một lần nữa, ngươi mạo hiểm tất cả, chỉ để nhận lại thất bại đáng xấu hổ.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0467", Text = "Nhưng thường lệ, lịch sử vẫn tái diễn.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0472", Text = "Ngươi không nên kỳ vọng sẽ có kết quả khác.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0261", Text = "Đó là những gì ngươi phải gánh chịu, sau những rắc rối mà ngươi gây ra!", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveClearsOfRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0262", Text = "Cuộc gặp gỡ trước đây của chúng ta đáng lẽ cũng đã kết thúc như vậy!", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveClearsOfRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0263", Text = "Ngươi thực sự nghĩ rằng ngươi có thể thắng ta lần nữa ư?", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveClearsOfRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Chronos_0264", Text = "Ah, một thất bại cay đắng! Đúng như ta mong đợi.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveClearsOfRoom", FunctionArgs = { Name = "I_Boss01", Count = 1 }, }, }, }, }, -- zagreus lines { Queue = "Always", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting02" }, }, }, { Cue = "/VO/MelinoeField_3435", Text = "Từ màn sương ký ức, trở về bóng tối, ngay lúc này...!", UsePlayerSource = true, }, { Cue = "/VO/Zagreus_0025", Text = "Con bé đi rồi... chỉ còn lại mình ta... ừm, khi nào ta mới thoát khỏi giấc mơ vậy...?", Source = { LineHistoryName = "NPC_Zagreus_01", SubtitleColor = Color.ZagreusVoice }, PreLineWait = 1.0, BreakIfPlayed = true, }, }, { Queue = "Always", BreakIfPlayed = true, PreLineWait = 0.4, Source = { LineHistoryName = "NPC_Zagreus_01", SubtitleColor = Color.ZagreusVoice }, GameStateRequirements = { { Path = { "CurrentRun", "TextLinesRecord" }, HasAny = { "ZagreusPastMeeting04_2" }, }, }, { Cue = "/VO/Zagreus_0450", Text = "Anh sẽ chọn cách sau..." }, }, { Queue = "Always", BreakIfPlayed = true, PreLineWait = 0.35, Source = { LineHistoryName = "NPC_Zagreus_01", SubtitleColor = Color.ZagreusVoice }, GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting03" }, }, }, { Cue = "/VO/Zagreus_0033", Text = "Được thôi! Anh sẽ nghĩ về nó mọi lúc mọi nơi!" }, }, { Queue = "Always", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting04" }, }, }, { Cue = "/VO/MelinoeField_3434", Text = "Từ màn sương ký ức, trở về bóng tối, ngay lúc này...", PlayFirst = true }, { Cue = "/VO/Zagreus_0041", Text = "Bảo trọng!", Source = { LineHistoryName = "NPC_Zagreus_01", SubtitleColor = Color.ZagreusVoice }, PreLineWait = 0.5, BreakIfPlayed = true }, }, { Queue = "Always", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting05" }, }, }, { Cue = "/VO/MelinoeField_3436", Text = "Từ màn sương ký ức, trở về bóng tối, ngay lúc này.", UsePlayerSource = true }, { Cue = "/VO/Zagreus_0049", Text = "...Con bé đi rồi. Anh trai... ta ư?", Source = { LineHistoryName = "NPC_Zagreus_01", SubtitleColor = Color.ZagreusVoice }, PreLineWait = 0.5, BreakIfPlayed = true, }, }, -- 06 intentionally missing (True Ending) { Queue = "Always", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting07" }, }, }, { Cue = "/VO/MelinoeField_3435", Text = "From mists of memory, return to shadow, now...!" }, { Cue = "/VO/Zagreus_0061", Text = "Đợi đã, có phải con bé không? Chuyện gì xảy ra vậy? Melinoë...?", Source = { LineHistoryName = "NPC_Zagreus_01", SubtitleColor = Color.ZagreusVoice }, PreLineWait = 0.5, BreakIfPlayed = true, }, }, { Queue = "Always", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting08" }, }, }, { Cue = "/VO/MelinoeField_3434", Text = "From mists of memory, return to shadow, now..." }, { Cue = "/VO/Zagreus_0066", Text = "Chờ đã, em có ở đó không? Em gái, em có ở đó không? Augh...", Source = { LineHistoryName = "NPC_Zagreus_01", SubtitleColor = Color.ZagreusVoice }, PreLineWait = 0.5, BreakIfPlayed = true, }, }, -- zagreus boss lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.35, Source = { LineHistoryName = "NPC_Zagreus_01", SubtitleColor = Color.ZagreusVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "C_Boss01" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Zagreus" }, Comparison = ">", Value = 0, }, }, { Cue = "/VO/Zagreus_0104", Text = "Tin tốt đây! Các điều khoản từ Hợp Đồng Địa Ngục đã được chấp thuận!", PlayFirst = true }, { Cue = "/VO/Zagreus_0105", Text = "Ta vừa đánh nhau với em gái bé bỏng của ta đấy, cảm ơn mọi người!" }, { Cue = "/VO/Zagreus_0310", Text = "Này, em làm phép biến mất đó bằng cách nào vậy...?" }, { Cue = "/VO/Zagreus_0311", Text = "Các Shade có thích màn trình diễn nhỏ của bọn ta không?" }, { Cue = "/VO/Zagreus_0312", Text = "Còn ai khác muốn thách đấu không? Không có ai sao...?" }, { Cue = "/VO/Zagreus_0313", Text = "Anh đã làm trò này từ trước khi em được sinh ra đấy!" }, { Cue = "/VO/Zagreus_0317", Text = "Không phải tự nhiên mà họ phong cho anh là Người Bảo Hộ đâu!" }, { Cue = "/VO/Zagreus_0318", Text = "Melinoë, em khá mạnh mẽ đấy, nhưng anh cũng chẳng kém cạnh đâu." }, }, -- medea lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.6, SuccessiveChanceToPlay = 0.66, SuccessiveChanceToPlayAll = 0.66, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Medea_01", SubtitleColor = Color.MedeaVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "N_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Polyphemus" }, Comparison = ">", Value = 0, }, }, { Cue = "/VO/Medea_0368", Text = "Một bữa tiệc máu tươi dành cho ta..." }, { Cue = "/VO/Medea_0369", Text = "Được rồi, Cyclops! Chúng ta là cặp đôi rất ăn ý." }, { Cue = "/VO/Medea_0371", Text = "Hẹn gặp lại vào đêm khác, nữ phù thủy!" }, { Cue = "/VO/Medea_0372", Text = "Và thế là di nguyện của Màn Đêm đã được thực hiện." }, { Cue = "/VO/Medea_0570", Text = "Cô đã dùng hết số máu còn lại..." }, { Cue = "/VO/Medea_0571", Text = "Đừng than thở về kết quả này. Hãy xem đó là bài học!" }, { Cue = "/VO/Medea_0572", Text = "Đêm nay tâm trí cô không được thông suốt, nữ phù thủy." }, { Cue = "/VO/Medea_0573", Text = "Hecate vĩ đại, chiến thắng này thuộc về ta...!", PlayFirst = true }, { Cue = "/VO/Medea_0574", Text = "Có thể ta không có quyền năng như cô, nhưng ta có thể tự xoay sở được." }, }, -- polyphemus lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.6, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Cyclops_01", SubtitleColor = Color.PolyphemusVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "N_Boss01", "N_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Polyphemus" }, Comparison = ">", Value = 0, }, }, { Cue = "/VO/Polyphemus_0089", Text = "Biến khỏi thành phố của ta ngay." }, { Cue = "/VO/Polyphemus_0090", Text = "Điều đó hẳn đã dạy cho ngươi một bài học." }, { Cue = "/VO/Polyphemus_0091", Text = "Ngươi làm phiền bầy cừu của ta, ta sẽ đáp trả ngươi tương tự." }, { Cue = "/VO/Polyphemus_0092", Text = "Đến giờ ăn rồi... chờ đã, ngươi đâu rồi?", PlayFirst = true }, { Cue = "/VO/Polyphemus_0093", Text = "{#Emph}Urgh {#Prev}cô ta đâu mất rồi?" }, { Cue = "/VO/Polyphemus_0094", Text = "Vừa rồi khiến ta thực sự đói đấy." }, { Cue = "/VO/Polyphemus_0095", Text = "Không ai được động đến cừu của ta." }, { Cue = "/VO/Polyphemus_0096", Text = "Vậy là hết hy vọng về bữa tối." }, { Cue = "/VO/Polyphemus_0097", Text = "Quay lại đây, con nhóc kia..." }, { Cue = "/VO/Polyphemus_0098", Text = "Có vẻ chúng ta đã xong việc ở đây rồi, huh." }, }, -- eris lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.55, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Eris_01", SubtitleColor = Color.ErisVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "O_Boss01", "O_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Eris" }, Comparison = ">", Value = 0, }, }, { Cue = "/VO/ErisField_0122", Text = "{#Emph}Trở về bóng tối, ngay!" }, { Cue = "/VO/ErisField_0123", Text = "{#Emph}Trở về bóng tối, ngay...!" }, { Cue = "/VO/ErisField_0124", Text = "Đúng rồi đấy, Quý Cô Hoàn Hảo, về nhà và khóc đi." }, { Cue = "/VO/ErisField_0125", Text = "{#Emph}Aha, haha! {#Prev}Đi xa đến vậy chỉ để vấp ngã thôi ư!", PlayFirst = true }, { Cue = "/VO/ErisField_0126", Text = "Xin nhé cưng, nhưng đó là cách mọi chuyện diễn ra đó!" }, { Cue = "/VO/ErisField_0127", Text = "Đúng thời điểm, đúng địa điểm vào tối mai nhé, Rắc Rối?" }, { Cue = "/VO/ErisField_0128", Text = "Đừng ghét ta nhé, cưng! Ta chỉ sống thật với chính mình thôi!" }, { Cue = "/VO/ErisField_0129", Text = "Lần sau lại lặp lại chuyện này nhé?" }, }, -- heracles lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.55, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Heracles_01", SubtitleColor = Color.HeraclesVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_Boss01" }, }, { Path = { "GameState", "ShrineUpgrades", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 3, }, { PathFalse = { "CurrentRun", "EnemyKills", "Heracles" } }, }, { Cue = "/VO/Heracles_0403", Text = "Hãy biết ơn vì ta không bẻ gãy hết xương của cô." }, { Cue = "/VO/Heracles_0401", Text = "Hạ được cô ta rồi, Kẻ Trộm Lửa. Cùng phải nhờ cả hai ta mới xong.", GameStateRequirements = { { PathFalse = { "CurrentRun", "EnemyKills", "Prometheus" } }, }, }, { Cue = "/VO/Heracles_0404", Text = "Cô có thể hạ được Kẻ Trộm Lửa, nhưng không phải ta.", PlayFirst = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "EnemyKills", "Prometheus" } }, }, }, { Cue = "/VO/Heracles_0405", Text = "Có vẻ như cô ta chạy rồi, Prometheus. Giờ thì sao...?", GameStateRequirements = { { PathFalse = { "CurrentRun", "EnemyKills", "Prometheus" } }, }, }, { Cue = "/VO/Heracles_0406", Text = "Ngươi đã nói rằng việc đó sẽ khiến chúng ta thua cuộc, Prometheus. Để... giúp chúng ta giành chiến thắng ư?", GameStateRequirements = { { PathFalse = { "CurrentRun", "EnemyKills", "Prometheus" } }, }, }, }, -- prometheus lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.55, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Prometheus_01", SubtitleColor = Color.PrometheusVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_Boss01" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Prometheus" }, Comparison = ">", Value = 0, }, }, { Cue = "/VO/Prometheus_0111", Text = "Chẳng có chút thanh lịch nào cả.", PlayFirst = true }, { Cue = "/VO/Prometheus_0112", Text = "Ta không còn cách nào khác ngoài buộc ngươi quay về." }, { Cue = "/VO/Prometheus_0113", Text = "Cô ta đi rồi, Aetos, nhưng cô ta sẽ trở lại..." }, { Cue = "/VO/Prometheus_0163", Text = "Ta sẽ xé xác các vị thần bằng chính đôi tay này..." }, { Cue = "/VO/Prometheus_0164", Text = "Ngươi chẳng thể thay đổi được gì cả." }, { Cue = "/VO/Prometheus_0165", Text = "Sự kiêu hãnh của ngươi sẽ không cứu được ngươi nữa." }, { Cue = "/VO/Prometheus_0474", Text = "Đó là việc cần phải làm... Ta biết ngươi sẽ hiểu." }, { Cue = "/VO/Prometheus_0475", Text = "Ta sẽ không bao giờ phụng sự bọn thần; chỉ làm vì tương lai." }, { Cue = "/VO/Prometheus_0477", Text = "Làm tốt lắm, Aetos... chúng ta đã hoàn thành nhiệm vụ." }, { Cue = "/VO/Prometheus_0476", Text = "Chúng ta đã hạ gục cô ta, gã to xác... làm tốt lắm.", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "ShrineUpgrades", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 3, }, { PathFalse = { "CurrentRun", "EnemyKills", "Heracles" } }, }, }, { Cue = "/VO/Prometheus_0166", Text = "Ta biết mọi hành động của ngươi; trong khi ngươi chẳng biết gì cả.", GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "P_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Prometheus_0167", Text = "Lại một đêm nữa, kết quả vẫn vậy.", GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "P_Boss01", Count = 2 }, }, }, }, { Cue = "/VO/Prometheus_0168", Text = "Chủ nhân của ta sẽ rất hài lòng với kết quả này.", GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "P_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Prometheus_0291", Text = "{#Emph}Hah, hahaha...", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveDeathsInRoom", FunctionArgs = { Name = "P_Boss01", Count = 3 }, }, }, }, { Cue = "/VO/Prometheus_0169", Text = "Ta đã biết sau cùng ta vẫn chiến thắng.", GameStateRequirements = { { FunctionName = "RequiredConsecutiveClearsOfRoom", FunctionArgs = { Name = "P_Boss01", Count = 2 }, }, }, }, { Cue = "/VO/Prometheus_0170", Text = "Ngươi quá tự mãn với chiến thắng của mình.", GameStateRequirements = { { Path = { "GameState", "EnemyKills", "Prometheus" }, Comparison = ">=", Value = 5, }, { FunctionName = "RequiredConsecutiveClearsOfRoom", FunctionArgs = { Name = "P_Boss01", Count = 1 }, }, }, }, { Cue = "/VO/Prometheus_0171", Text = "Sự tự mãn sẽ dẫn đến sự thất bại.", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredConsecutiveClearsOfRoom", FunctionArgs = { Name = "P_Boss01", Count = 2 }, }, }, }, }, -- typhon lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.5, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "TyphonHead", SubtitleColor = Color.TyphonVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss01", "Q_Boss02" }, }, { PathFalse = { "CurrentRun", "EnemyKills", "TyphonHead" } }, }, { Cue = "/VO/Typhon_0031", Text = "{#TyphonFormat}HAAAAAH..." }, { Cue = "/VO/Typhon_0032", Text = "{#TyphonFormat}HEHHHHH..." }, { Cue = "/VO/Typhon_0033", Text = "{#TyphonFormat}SỚMMMMMMMM... THÔIIIIIIII...." }, { Cue = "/VO/Typhon_0034", Text = "{#TyphonFormat}THÊMMMMMMMM..." }, { Cue = "/VO/Typhon_0035", Text = "{#TyphonFormat}THỐNGGGGGG... KHỔỔỔỔỔỔỔỔ..." }, { Cue = "/VO/Typhon_0036", Text = "{#TyphonFormat}PHẪNNNN... NỘỘỘỘỘỘ...!" }, { Cue = "/VO/Typhon_0037", Text = "{#TyphonFormat}GIẾTTTTTTTT...!" }, { Cue = "/VO/Typhon_0038", Text = "{#TyphonFormat}HẬNNNNNN...!" }, { Cue = "/VO/Typhon_0039", Text = "{#TyphonFormat}CHẾTTTTTTTT...!", PlayFirst = true }, }, -- arachne lines { Queue = "Interrupt", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 0.6, NoTarget = true, SkipAnim = true, Source = { LineHistoryName = "NPC_Arachne_01", SubtitleColor = Color.ArachneVoice }, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_Story01" }, }, }, { Cue = "/VO/Arachne_0275", Text = "Ôi không, bạn ta, cô đi đâu vậy? Quay lại đi!", PlayFirst = true }, { Cue = "/VO/Arachne_0276", Text = "Chờ đã, không, chuyện gì đang xảy ra vậy? Chờ đã!" }, { Cue = "/VO/Arachne_0277", Text = "Thế là kết thúc một cuộc mua sắm..." }, { Cue = "/VO/Arachne_0278", Text = "Quay lại sớm nhé? {#Emph}Haha, hah..." }, }, -- @ ending { Queue = "Always", BreakIfPlayed = true, RandomRemaining = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_PostBoss01" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/MelinoeField_3434", Text = "From mists of memory, return to shadow, now...", PlayFirst = true }, { Cue = "/VO/MelinoeField_3435", Text = "From mists of memory, return to shadow, now...!" }, { Cue = "/VO/MelinoeField_3436", Text = "From mists of memory, return to shadow, now." }, }, { Queue = "Always", BreakIfPlayed = true, RandomRemaining = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Story01" }, }, }, { Cue = "/VO/MelinoeField_3836", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3837", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3838", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3839", Text = "Trở về bóng tối, ngay." }, }, -- mel lines, after a clear, post-true-ending { Queue = "Always", BreakIfPlayed = true, RandomRemaining = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { Path = { "CurrentRun", "SpeechRecord" }, HasAny = { "/VO/Storyteller_0321", "/VO/Storyteller_0486" }, }, }, { Cue = "/VO/MelinoeField_4315", Text = "{#Emph} {#Prev}Trở về bóng tối, ngay." }, }, { Queue = "Always", BreakIfPlayed = true, RandomRemaining = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, { PathTrue = { "GameState", "ReachedTrueEnding" }, }, }, { Cue = "/VO/MelinoeField_3311", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3312", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3313", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3314", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3836", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3837", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3838", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/MelinoeField_3839", Text = "Trở về bóng tối, ngay." }, { Cue = "/VO/Melinoe_1694", Text = "Trở về bóng tối, ngay.", PlayFirst = true, }, }, -- mel lines, first run { Queue = "Always", BreakIfPlayed = true, PlayOnce = true, PlayOnceContext = "FirstDeathVO", GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "==", Value = 0, }, { PathFalse = { "CurrentRun", "Cleared" }, }, }, { Cue = "/VO/MelinoeField_1392", Text = "Trở về bóng tối, ngay...!" }, }, -- surface penalty { Queue = "Always", BreakIfPlayed = true, SuccessiveChanceToPlay = 0.33, GameStateRequirements = { { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeSurfacePenaltyCure" }, }, { PathTrue = { "CurrentRun", "BiomesReached", "N" }, }, }, { Cue = "/VO/MelinoeField_4316", Text = "{#Emph} {#Prev}Trở về bóng tối, ngay...!" }, }, -- mel lines { Queue = "Always", BreakIfPlayed = true, RandomRemaining = true, GameStateRequirements = { { -- }, }, { Cue = "/VO/Melinoe_1695", Text = "Trở về bóng tối, ngay...!", PlayFirst = true }, { Cue = "/VO/Melinoe_1693", Text = "Trở về bóng tối, ngay!" }, { Cue = "/VO/Melinoe_1696", Text = "Trở về bóng tối, ngay..." }, { Cue = "/VO/MelinoeField_1393", Text = "Trở về bóng tối, ngay...!" }, { Cue = "/VO/MelinoeField_1392", Text = "Trở về bóng tối, ngay...!", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "H_Boss01", "H_Boss02", "I_Boss01", "P_Boss01", "Q_MiniBoss01", "Q_MiniBoss02", "Q_MiniBoss03", "Q_MiniBoss04", "Q_MiniBoss05", "Q_Boss01", "Q_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord" }, MaxOf = "All", Comparison = "<", Value = 0.4, }, { Path = { "CurrentRun" }, HasNone = { "Cleared", "BountyCleared" } }, } }, }, } -- respawn lines / respawn voice lines GlobalVoiceLines.EnteredDeathAreaVoiceLines = { Queue = "Always", -- respawn lines -- first hub visit TriggerCooldowns = { "DoraAnyQuipSpeech" }, Cooldowns = { { Name = "MelinoeAnyQuipSpeech", Time = 4 }, }, { GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = "==", Value = 0, }, }, { Cue = "/VO/Melinoe_0008_V3", Text = "{#Emph} Ohh...", PreLineWait = 0.5, PostLineWait = 1.8 }, { Cue = "/VO/Melinoe_0009", Text = "...Quay về rồi.", PostLineWait = 2.4 }, { Cue = "/VO/Melinoe_2992", Text = "Chết tiệt...", BreakIfPlayed = true, PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { PathFalse = { "CurrentRun", "Cleared" }, }, }, }, { Cue = "/VO/Melinoe_2994", Text = "Được rồi.", BreakIfPlayed = true, PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { PathTrue = { "CurrentRun", "Cleared" }, }, }, }, }, -- epilogue { GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "FatesEpilogue01" }, }, }, BreakIfPlayed = true, PreLineWait = 1.0, { Cue = "/VO/Melinoe_4882", Text = "{#Emph}Mmm{#Prev}, ta phải tiếp tục nỗ lực. Cho cả hai điều đó." }, }, -- post-moros sighting 1 { GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "MorosGrantsQuestLog" }, }, }, BreakIfPlayed = true, PreLineWait = 1.0, { Cue = "/VO/Melinoe_1584", Text = "{#Emph}Ungh... {#Prev}ngài ấy đi mất rồi..." }, }, -- post-moros sighting 2 { GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "MorosSecondAppearance" }, }, }, BreakIfPlayed = true, PreLineWait = 2.2, { Cue = "/VO/Melinoe_1871", Text = "{#Emph}Ungh... {#Prev}đâu mất rồi?" }, }, -- true ending path - underworld - cleared the run { PlayOnce = true, PlayOnceContext = "SurfaceClearCriticalPathVO", BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "CurrentRun", "RoomsEntered", "I_PostBoss01" }, }, { Path = { "CurrentRun" }, HasAny = { "Cleared" } }, }, -- pastfirstmeeting { Cue = "/VO/Melinoe_4831", Text = "{#Emph} {#Prev}...Anh trai... Ta đã tìm thấy anh ấy...", GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_PostBoss01" }, }, }, }, -- pastmeeting02 { Cue = "/VO/Melinoe_5707", Text = "{#Emph} {#Prev}Zagreus... Em trông cậy vào anh...", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting02" }, }, }, }, -- pastmeeting02_2 { Cue = "/VO/Melinoe_5769", Text = "{#Emph} {#Prev}...Xuống địa ngục, rồi quay về... tiếp theo là... lên thiên đường chăng?", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting02_2" }, }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "ZeusPalaceFirstMeeting", }, }, }, }, { Cue = "/VO/Melinoe_5766", Text = "{#Emph} {#Prev}...Hãy hợp tác với em, Anh Trai...", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting02_2" }, }, }, }, -- pastmeeting03 { Cue = "/VO/Melinoe_5765", Text = "{#Emph} {#Prev}...Minh đang liên lạc với anh ấy... có lẽ vậy.", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting03" } }, }, }, -- pastmeeting04 { Cue = "/VO/Melinoe_5767", Text = "{#Emph} {#Prev}...Có lẽ lần tới chúng ta sẽ ghé thăm Olympus?", GameStateRequirements = { { PathTrue = { "GameState", "WorldUpgradesAdded", "WorldUpgradeSurfacePenaltyCure" }, }, { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting04" } }, { Path = { "GameState", "TextLinesRecord" }, HasNone = { "ZeusPalaceMeeting02", }, }, }, }, { Cue = "/VO/Melinoe_4833", Text = "{#Emph} {#Prev}...Zagreus... bảo trọng.", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting04" } }, }, }, -- pastmeeting04_2 { Cue = "/VO/Melinoe_5725", Text = "{#Emph} {#Prev}...Anh Trai... chúng ta không nên chiến đấu...", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting04_2" } }, }, }, -- pastmeeting04_3 { Cue = "/VO/Melinoe_5727", Text = "{#Emph} {#Prev}...Giờ thì đúng ý ta rồi.", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting04_3" } }, }, }, -- pastmeeting05 { Cue = "/VO/Melinoe_4839", Text = "{#Emph} {#Prev}...giờ ta đã có những thứ mình cần.", PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ZagreusPastMeeting05" }, }, { PathTrue = { "GameState", "WorldUpgradesRevealed", "WorldUpgradeStormStop" }, }, { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 566831 } }, }, }, }, { Cue = "/VO/Melinoe_5768", Text = "{#Emph} {#Prev}...Ta có cảm giác... ta cần phải quay lại trần gian ngay.", PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 566831 } }, }, OrRequirements = { { { Path = { "CurrentRun", "TextLinesRecord" }, HasAny = { "ZagreusPastMeeting05" }, }, { PathFalse = { "GameState", "WorldUpgradesRevealed", "WorldUpgradeStormStop" }, }, }, { { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" }, }, { Path = { "CurrentRun", "TextLinesRecord" }, HasAny = { "ZagreusPastMeeting05", "ZagreusPastMeeting07", "ZagreusPastMeeting08", "ZagreusPastMeetingRepeatable01", "ZagreusPastMeetingRepeatable02", "ZagreusPastMeetingRepeatable03", "ZagreusPastMeetingRepeatable04", "ZagreusPastMeetingRepeatable05", }, }, }, }, }, }, -- pastmeeting07 + & optional { Cue = "/VO/Melinoe_4836", Text = "{#Emph} {#Prev}...I should come back to him. Olympus first.", GameStateRequirements = { { PathTrue = { "GameState", "TextLinesRecord", "ZagreusPastMeeting07" }, }, { PathFalse = { "GameState", "TyphonDefeatedWithStormStop" }, }, }, }, { Cue = "/VO/Melinoe_4832", Text = "{#Emph} {#Prev}...Trở về từ vực thẳm...", GameStateRequirements = { { Path = { "CurrentRun", "TextLinesRecord" }, HasAny = { "ZagreusPastMeeting07", "ZagreusPastMeeting08", "ZagreusPastMeetingRepeatable01", "ZagreusPastMeetingRepeatable02", "ZagreusPastMeetingRepeatable03", "ZagreusPastMeetingRepeatable04", "ZagreusPastMeetingRepeatable05", }, }, }, }, { Cue = "/VO/Melinoe_4835", Text = "{#Emph} {#Prev}...Bọn em trông cậy vào anh, Anh Trai...", GameStateRequirements = { { Path = { "CurrentRun", "TextLinesRecord" }, HasAny = { "ZagreusPastMeeting07", "ZagreusPastMeeting08", "ZagreusPastMeetingRepeatable01", "ZagreusPastMeetingRepeatable02", "ZagreusPastMeetingRepeatable03", "ZagreusPastMeetingRepeatable04", "ZagreusPastMeetingRepeatable05", }, }, }, }, }, -- true ending path - surface - cleared the run { PlayOnce = true, PlayOnceContext = "SurfaceClearCriticalPathVO", BreakIfPlayed = true, PreLineWait = 1.2, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "CurrentRun", "RoomsEntered", "Q_Story01" }, }, { Path = { "CurrentRun" }, HasAny = { "Cleared" } }, }, { Cue = "/VO/Melinoe_4837", Text = "{#Emph} {#Prev}...Có lẽ nên xác nhận với Nữ Chúa.", GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "Q_Story01" }, }, }, }, { Cue = "/VO/Melinoe_4838", Text = "{#Emph}Mm... {#Prev}trở về từ Cung Điện...", GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "Q_Story01" }, }, }, }, { Cue = "/VO/Melinoe_5770", Text = "{#Emph}Mm... {#Prev}đang càng gần hơn đến những câu thần chú mà chúng ta cần.", GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "Q_Story01" }, }, { Path = { "GameState", "WorldUpgradesRevealed" }, HasAll = { "WorldUpgradeTimeStop", "WorldUpgradeStormStop" }, }, }, }, { Cue = "/VO/Melinoe_4834", Text = "{#Emph} {#Prev}...Chúng ta đang tiến triển tốt...", GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "Q_Story01" }, }, }, }, { Cue = "/VO/Melinoe_5708", Text = "{#Emph} {#Prev}Cố gắng lên, mọi người...", GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "Q_Story01" }, }, }, }, { Cue = "/VO/Melinoe_4839", Text = "{#Emph} {#Prev}...Should have what I need now.", PlayFirst = true, GameStateRequirements = { { Path = { "GameState", "LifetimeResourcesGained", "MixerMythic" }, Comparison = ">=", Value = 1, }, }, }, }, -- post-moros relationship { GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "MorosBecomingCloser01" }, }, }, BreakIfPlayed = true, PreLineWait = 2.2, { Cue = "/VO/Melinoe_4748", Text = "{#Emph} {#Prev}Oh...! {#Emph}Hm...", GameStateRequirements = { { Path = { "CurrentRun", "TextLinesChoiceRecord", "MorosBecomingCloser01", }, IsAny = { "Choice_MorosAccept" }, }, }, }, { Cue = "/VO/Melinoe_2401", Text = "{#Emph}", GameStateRequirements = { { Path = { "CurrentRun", "TextLinesChoiceRecord", "MorosBecomingCloser01", }, IsAny = { "Choice_MorosDecline" }, }, }, }, }, -- post-flashback01 { GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "HecateHideAndSeek01" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, { Cue = "/VO/Melinoe_2130", Text = "{#Emph}Ungh... {#Prev}Tiêu Diệt Chronos..." }, }, -- post-flashback02 { GameStateRequirements = { { PathTrue = { "CurrentRun", "TextLinesRecord", "ChronosNightmare01" }, }, }, PlayOnce = true, BreakIfPlayed = true, PreLineWait = 1.0, { Cue = "/VO/Melinoe_0373", Text = "{#Emph} {#Prev}...Cha..." }, }, -- artemis singing { PlayOnce = true, PlayOnceContext = "ArtemisSingingIntro", RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.3, GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/ArtemisSong_MC", "/Music/IrisEndThemeCrossroads_MC" }, }, }, { Cue = "/VO/Melinoe_4023", Text = "{#Emph}Ungh... {#Prev}đó là... tiếng hát...?", PlayFirst = true }, { Cue = "/VO/Melinoe_4024", Text = "{#Emph}Augh... {#Prev}chào... Artemis..." }, }, { BreakIfPlayed = true, PreLineWait = 1.0, RandomRemaining = true, SuccessiveChanceToPlayAll = 0.33, ObjectType = "NPC_Dora_01", RequiredSourceValueFalse = "InPartnerConversation", GameStateRequirements = { { Path = { "GameState", "TextLinesRecord" }, HasAll = { "DoraGift04" }, }, { FunctionName = "RequiredQueuedTextLine", FunctionArgs = { IsNone = { "DoraAboutPrometheus02", "DoraAboutReturning03", "DoraAboutShades04", "DoraAboutShades04_B" } }, }, { SumPrevRuns = 4, Path = { "SpeechRecord" }, TableValuesToCount = { "/VO/Dora_0281", "/VO/Dora_0282", "/VO/Dora_0283", "/VO/Dora_0284", "/VO/Dora_0285", "/VO/Dora_0286" }, Comparison = "<=", Value = 0, }, NamedRequirementsFalse = { "DoraMemoryQuestResolutionInProgress" }, ChanceToPlay = 0.33, }, { Cue = "/VO/Dora_0281", Text = "{#Emph}Tỉnh dậy đi..." }, { Cue = "/VO/Dora_0282", Text = "{#Emph}Tỉnh dậy đi...!" }, { Cue = "/VO/Dora_0283", Text = "Mel... dậy đi." }, { Cue = "/VO/Dora_0284", Text = "Mel, dậy đi!" }, { Cue = "/VO/Dora_0285", Text = "{#Emph}Hãy thức tỉnh!", PreLineFunctionName = "GenericPresentation", PreLineFunctionArgs = PresetAudioArgs.DoraScaryAppearArgs, }, { Cue = "/VO/Dora_0286", Text = "{#Emph}Hãy trỗi dậy!", PreLineFunctionName = "GenericPresentation", PreLineFunctionArgs = PresetAudioArgs.DoraScaryAppearArgs, }, }, -- cleared the run / run cleared lines / after a clear { BreakIfPlayed = true, RandomRemaining = true, PreLineWait = 1.2, GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasAny = { "I_Boss01", "Q_Boss01", "Q_Boss02" }, }, { Path = { "CurrentRun" }, HasAny = { "Cleared" } }, }, { Cue = "/VO/Melinoe_1872", Text = "{#Emph}Mmph... {#Prev}chuyện gì vừa xảy ra vậy?" }, { Cue = "/VO/Melinoe_1873", Text = "{#Emph}Ôi trời... {#Prev}thì ra là vậy." }, { Cue = "/VO/Melinoe_2567", Text = "{#Emph}Augh... {#Prev}thế là đủ.", GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_2568", Text = "Phù. {#Prev}Có lẽ cũng phải một đêm tệ." }, { Cue = "/VO/Melinoe_2399", Text = "{#Emph}Mmph... {#Prev}chà, việc đó có tác dụng." }, { Cue = "/VO/Melinoe_3646", Text = "{#Emph} {#Prev}Đành chấp nhận vậy.", GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_3647", Text = "{#Emph} {#Prev}Một đêm đáng giá.", PlayFirst = true, GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_3648", Text = "{#Emph} {#Prev}Một đêm yên bình!", GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_3649", Text = "{#Emph} {#Prev}Lại thêm một đêm bận rộn." }, { Cue = "/VO/Melinoe_3650", Text = "{#Emph} {#Prev}Nhiệm vụ vẫn tiếp tục..." }, { Cue = "/VO/Melinoe_2569", Text = "...Nữ Thần Định Mệnh đã đứng về phía ta.", PreLineWait = 2.0, GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_2570", Text = "...Lần này ta đã làm khá ổn...", PreLineWait = 2.0, GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_3643", Text = "{#Emph}Mm... {#Prev}cũng ổn.", GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_3644", Text = "...Đúng ý ta muốn.", PreLineWait = 2.1, GameStateRequirements = { { PathFalse = { "PrevRun", "Cleared" }, }, }, }, { Cue = "/VO/Melinoe_3645", Text = "Chỉ cần giữ phong độ thế này là được.", PreLineWait = 2.1, GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_5150", Text = "{#Emph} {#Prev}Đúng như kế hoạch.", GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_5151", Text = "{#Emph} {#Prev}Còn một lần nữa nhỉ?" }, { Cue = "/VO/Melinoe_5152", Text = "{#Emph} {#Prev}Thật tốt.", GameStateRequirements = { NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_5154", Text = "{#Emph} {#Prev}Lần lượt từng cái một...", PlayFirst = true, GameStateRequirements = { { PathTrue = { "PrevRun", "Cleared" }, }, NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_5149", Text = "{#Emph} {#Prev}Đúng như dự định.", PlayFirst = true, GameStateRequirements = { { Path = { "PrevRun" }, HasNone = { "Cleared", "BountyCleared" } }, NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, { Cue = "/VO/Melinoe_5153", Text = "{#Emph} {#Prev}Chúng ta làm được rồi, Frinos.", PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 566831 } }, }, }, }, { Cue = "/VO/Melinoe_4834", Text = "{#Emph} {#Prev}...We're getting somewhere...", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "TrueEndingFinale01" }, Min = 9 }, }, NamedRequirementsFalse = { "StalledProgressWithZagreus" }, }, }, }, -- packaged bounty cleared { GameStateRequirements = { { PathTrue = { "CurrentRun", "BountyCleared" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, { Cue = "/VO/Melinoe_3042", Text = "{#Emph}Whew... {#Prev}Thử Nghiệm Chaos, đã xong.", PlayFirst = true }, { Cue = "/VO/Melinoe_2703", Text = "{#Emph}Mm... {#Prev}Đã diễn ra theo ý Chaos." }, { Cue = "/VO/Melinoe_2705", Text = "{#Emph}Mmph... {#Prev}cảm ơn, Chaos..." }, { Cue = "/VO/Melinoe_2760", Text = "{#Emph}Nngh... {#Prev}Chaos sẽ hài lòng đây." }, { Cue = "/VO/Melinoe_2761", Text = "{#Emph}Ungh... {#Prev}đã làm những gì cần phải làm." }, { Cue = "/VO/Melinoe_3043", Text = "{#Emph}Mhm... {#Prev}Một Thử Nghiệm Chaos khác đã kết thúc." }, { Cue = "/VO/Melinoe_3044", Text = "{#Emph}Nngh... {#Prev}Thử Nghiệm Chaos đã hoàn thành..." }, { Cue = "/VO/Melinoe_3045", Text = "{#Emph}Whew... {#Prev}Thử Nghiệm hoàn thành..." }, { Cue = "/VO/Melinoe_3046", Text = "{#Emph}Mph... {#Prev}Thử Nghiệm kết thúc." }, { Cue = "/VO/Melinoe_3047", Text = "{#Emph}Hm... {#Prev}Thử Nghiệm hoàn thành." }, { Cue = "/VO/Melinoe_3048", Text = "{#Emph}Nngh... {#Prev}chúc mừng, Chaos." }, { Cue = "/VO/Melinoe_4832", Text = "{#Emph} {#Prev}...From out of the abyss...", GameStateRequirements = { { PathTrue = { "GameState", "ReachedTrueEnding" }, }, { FunctionName = "RequireRunsSinceTextLines", FunctionArgs = { TextLines = { "TrueEndingFinale01" }, Min = 9 }, }, }, }, { Cue = "/VO/Melinoe_2704", Text = "{#Emph}Phù... {#Prev}nhiệm vụ hoàn thành...", GameStateRequirements = { { Path = { "CurrentRun", "SpeechRecord" }, HasNone = { "/VO/Melinoe_0978", "/VO/Melinoe_0979", "/VO/Melinoe_0980" }, }, }, }, }, -- lost near True Ending { GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, { PathTrue = { "GameState", "TyphonDefeatedWithStormStop" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.25, { Cue = "/VO/Melinoe_5129", Text = "{#Emph} {#Prev}Không phải... nữa chứ." }, { Cue = "/VO/Melinoe_5130", Text = "{#Emph} Urgh..." }, }, -- lost (partly) due to Chaos Curse { GameStateRequirements = { { PathTrue = { "CurrentRun", "CurrentRoom", "Encounter", "TookChaosCurseDamage" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2700", Text = "{#Emph}Urgh... {#Prev}dấu ấn Chaos..." }, { Cue = "/VO/Melinoe_2701", Text = "{#Emph}Oof... {#Prev}bất cẩn với Chaos..." }, }, -- lost due to BiomeTimer { GameStateRequirements = { { Path = { "CurrentRun", "KilledByName", }, IsAny = { "BiomeTimer" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3053", Text = "{#Emph}Ungh... {#Prev}Thời Gian chắc chắn đã đánh bại ta...", PlayFirst = true }, { Cue = "/VO/Melinoe_3054", Text = "{#Emph}Ngh... {#Prev}Chỉ đơn giản là không đủ mạnh..." }, { Cue = "/VO/Melinoe_3055", Text = "{#Emph}Augh... {#Prev}cần phải nhanh nhẹn hơn nữa." }, { Cue = "/VO/Melinoe_3056", Text = "{#Emph}Urgh... {#Prev}ta sẽ đổ lỗi cho Lời Thề... hoặc chính ta." }, { Cue = "/VO/Melinoe_3057", Text = "{#Emph}Rngh... {#Prev}Ta tự chuốc lấy điều đó." }, }, -- nightmare occurred { GameStateRequirements = { { PathTrue = { "CurrentRun", "NightmareOccurred" }, }, { PathFalse = { "CurrentRun", "RoomsEntered", "I_Boss01" }, }, }, RandomRemaining = true, BreakIfPlayed = true, SuccessiveChanceToPlay = 0.5, SuccessiveChanceToPlayAll = 0.33, PreLineWait = 1.0, { Cue = "/VO/Melinoe_2131", Text = "{#Emph}Augh... {#Prev}ra khỏi đầu ta...", PlayFirst = true }, { Cue = "/VO/Melinoe_2635", Text = "{#Emph}Eugh... {#Prev}chỉ là cơn ác mộng khác..." }, }, -- minibosses -- lost to Erebus minibosses { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_MiniBoss01", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_1671", Text = "{#Emph}Hrngh{#Prev}, ta sẽ hạ Root-Stalker đó...", PlayFirst = true }, { Cue = "/VO/Melinoe_1672", Text = "{#Emph}Ungh{#Prev}, ta ghét Root-Stalkers..." }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_MiniBoss02", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_1673", Text = "{#Emph}Mrm{#Prev}, Shadow-Spiller thật khó nhằn...", PlayFirst = true }, { Cue = "/VO/Melinoe_1674", Text = "{#Emph}Augh{#Prev}, bọn bóng ma chết tiệt..." }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_MiniBoss03", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_5131", Text = "{#Emph}Mmph... {#Prev}Master-Slicer đã làm tổn thương ta..." }, { Cue = "/VO/Melinoe_5132", Text = "{#Emph}Argh... {#Prev}ta thừa nhận là kiếm thuật rất tốt..." }, }, -- lost to Oceanus minibosses { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_MiniBoss01", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2265", Text = "{#Emph}Ungh... {#Prev}Rắn Biển...", PlayFirst = true }, { Cue = "/VO/Melinoe_2266", Text = "{#Emph}Mmph... {#Prev}Rắn Biển, ta thề..." }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_MiniBoss02", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2263", Text = "{#Emph}Ugh... {#Prev}thứ đó thật xấu xa...", PlayFirst = true }, { Cue = "/VO/Melinoe_2264", Text = "{#Emph}Urgh... {#Prev}thật đáng sợ..." }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_MiniBoss03", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3948", Text = "{#Emph}Eugh... {#Prev}đau thật..." }, { Cue = "/VO/Melinoe_3949", Text = "{#Emph}Brr... {#Prev}những thứ kinh tởm..." }, }, -- lost to Fields minibosses { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "H_MiniBoss01", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2754", Text = "{#Emph}Rngh... {#Prev}thứ chuyên hút máu đó..." }, { Cue = "/VO/Melinoe_2755", Text = "{#Emph}Eugh... {#Prev}Ta không thích hang ổ của Phantom...", PlayFirst = true }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "H_MiniBoss02", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2756", Text = "{#Emph}Ugh... {#Prev}Lamia chết tiệt...", PlayFirst = true }, { Cue = "/VO/Melinoe_2757", Text = "{#Emph}Augh... {#Prev}đám rắn đó..." }, }, -- lost to Tartarus minibosses { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_MiniBoss01", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3038", Text = "{#Emph}Urgh... {#Prev}bọn Satyr..." }, { Cue = "/VO/Melinoe_3039", Text = "{#Emph}Augh... {#Prev}thế thì chúc mừng Verminancer..." }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_MiniBoss02", }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3040", Text = "{#Emph}Eugh... {#Prev}ta sẽ khiến Goldwrath phải trả giá..." }, { Cue = "/VO/Melinoe_3041", Text = "{#Emph}Ngh... {#Prev}gần đến chỗ Chronos rồi..." }, }, -- lost to Ephyra minibosses { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "N_MiniBoss01", "I_MiniBoss01" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2573", Text = "{#Emph}Eugh... {#Prev}tên Satyr khốn khổ đó...", PlayFirst = true }, { Cue = "/VO/Melinoe_3038", Text = "{#Emph}Urgh... {#Prev}Satyrs..." }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "N_MiniBoss02" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_5133", Text = "{#Emph}Augh... {#Prev}những chiếc ngà trên thứ đó..." }, { Cue = "/VO/Melinoe_5134", Text = "{#Emph}Guh... {#Prev}ta có móng guốc..." }, }, -- lost to Thessaly minibosses { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "O_MiniBoss01" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3167", Text = "{#Emph}Guh... {#Prev}Charybdis lại nuốt chửng một thủy thủ khác rồi..." }, { Cue = "/VO/Melinoe_3168", Text = "{#Emph}Eugh... {#Prev}thật không thể tin được những thứ như vậy lại tồn tại ở dưới biển..." }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "O_MiniBoss02" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_4123", Text = "{#Emph}Argh... {#Prev}tên thuyền trưởng đó..." }, }, -- lost to Olympus minibosses { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_MiniBoss01" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3635", Text = "{#Emph}Ugh... {#Prev}Ta không thích Người Máy chút nào..." }, { Cue = "/VO/Melinoe_3636", Text = "{#Emph}Tsch... {#Prev}Talos cũng xem ta như kẻ địch...", PlayFirst = true }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_MiniBoss02" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3637", Text = "{#Emph}Aah... {#Prev}gục ngã trước một con thằn lằn bay..." }, { Cue = "/VO/Melinoe_3638", Text = "{#Emph}Ngh... {#Prev}không thể chịu nổi sức nóng..." }, }, -- lost to Summit minibosses { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_MiniBoss02" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_4118", Text = "{#Emph}Eugh... {#Prev}hơi thở quái vật..." }, { Cue = "/VO/Melinoe_4119", Text = "{#Emph}Rngh... {#Prev}thứ quái vật chết tiệt...", PlayFirst = true }, }, { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_MiniBoss05" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_4120", Text = "{#Emph}Augh... {#Prev}không thích cả hai thứ đó...", PlayFirst = true }, { Cue = "/VO/Melinoe_4121", Text = "{#Emph}Ngh... {#Prev}thứ quái vật chết tiệt..." }, }, -- bosses -- lost to hecate { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_Boss01", "F_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = ">", Value = 0, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_1874", Text = "{#Emph}Rngh {#Prev}, suýt thì được rồi!", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = "<=", Value = 0.20, }, }, }, { Cue = "/VO/Melinoe_1875", Text = "{#Emph}Nrgh {#Prev}, suýt thì đánh bại được bà ấy rồi...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Hecate" }, Comparison = "<=", Value = 0.20, }, }, }, { Cue = "/VO/Melinoe_0369", Text = "{#Emph}Ungh {#Prev}, Nữ Chúa..." }, { Cue = "/VO/Melinoe_0370", Text = "{#Emph}Augh {#Prev}, bà ấy... mạnh quá.", GameStateRequirements = { { PathFalse = { "CurrentRun", "SpeechRecord", "/VO/Hecate_0134" }, }, }, }, { Cue = "/VO/Melinoe_5117", Text = "{#Emph}Ungh... {#Prev}vẫn như cũ...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 1, }, }, }, { Cue = "/VO/Melinoe_5118", Text = "{#Emph}Ungh... {#Prev}sức mạnh thực sự...?", GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 1, }, }, }, }, -- lost to scylla { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "G_Boss01", "G_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Scylla" }, Comparison = ">", Value = 0, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2259", Text = "{#Emph}Nrgh... {#Prev}bọn Siren chết tiệt.", PlayFirst = true }, { Cue = "/VO/Melinoe_2260", Text = "{#Emph}Ungh... {#Prev}ta không phải người hâm mộ." }, { Cue = "/VO/Melinoe_2261", Text = "{#Emph}Ngh... {#Prev}cô ta có vấn đề à?" }, { Cue = "/VO/Melinoe_2262", Text = "{#Emph}Augh... {#Prev}bị Scylla đánh bại?" }, { Cue = "/VO/Melinoe_5119", Text = "{#Emph}Guh... {#Prev}ta thích những buổi diễn nhỏ hơn...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 2, }, }, }, { Cue = "/VO/Melinoe_5120", Text = "{#Emph}Ngh... {#Prev}ta không còn nơi nào để đi...", GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 2, }, }, }, }, -- lost to cerberus { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "H_Boss01", "H_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "InfestedCerberus" }, Comparison = ">", Value = 0, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2750", Text = "{#Emph}Augh... {#Prev}bọn ta sẽ khắc phục chuyện này, Cerberus...", PlayFirst = true, GameStateRequirements = { { PathFalse = { "GameState", "ReachedTrueEnding" }, }, }, }, { Cue = "/VO/Melinoe_2751", Text = "{#Emph}Ungh... {#Prev}Cerberus chỉ đang làm nghĩa vụ của nó..." }, { Cue = "/VO/Melinoe_2694", Text = "{#Emph}Augh... {#Prev}con thú tội nghiệp..." }, { Cue = "/VO/Melinoe_2695", Text = "{#Emph}Ungh... {#Prev}chó hư..." }, { Cue = "/VO/Melinoe_5123", Text = "{#Emph}Ungh... {#Prev}chuyện gì xảy ra vậy...?", GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 3, }, }, }, { Cue = "/VO/Melinoe_5124", Text = "{#Emph}Whew... {#Prev}ở đó nóng quá.", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 3, }, }, }, { Cue = "/VO/Melinoe_2696", Text = "{#Emph}Urgh... {#Prev}chó hư...", GameStateRequirements = { { PathTrue = { "GameState", "EnemyKills", "InfestedCerberus" } } }, }, { Cue = "/VO/Melinoe_2697", Text = "{#Emph}Urgh... {#Prev}chó hư... chó...?", GameStateRequirements = { { PathTrue = { "GameState", "SpeechRecord", "/VO/Melinoe_2696" } } } }, }, -- lost to chronos { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "I_Boss01" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Chronos" }, Comparison = ">", Value = 0, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2805", Text = "{#Emph}Augh... {#Prev}ta có thể đánh bại hắn...!" }, { Cue = "/VO/Melinoe_2806", Text = "{#Emph}Ungh... {#Prev}ta đã nắm thóp hắn!", PlayFirst = true }, { Cue = "/VO/Melinoe_2129", Text = "{#Emph}Không... {#Prev}đã bao lâu rồi...", GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 4, }, }, }, { Cue = "/VO/Melinoe_2807", Text = "{#Emph}Ngh... {#Prev}không, ta đã có thể đánh bại hắn!", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "BossHealthBarRecord", "Chronos" }, Comparison = "<", Value = 0.4, }, } }, { Cue = "/VO/Melinoe_2808", Text = "{#Emph}Gah...! {#Prev}Lần nữa!", GameStateRequirements = { { Path = { "GameState", "RoomsEntered", "I_Boss01" }, Comparison = ">=", Value = 3, }, } }, }, -- lost to polyphemus { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "N_Boss01", "N_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Polyphemus" }, Comparison = ">", Value = 0, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_0371", Text = "{#Emph}Augh{#Prev}, bị đánh bại bởi Cyclops ư?" }, { Cue = "/VO/Melinoe_0372", Text = "{#Emph}Eugh{#Prev}, ta bị đánh tơi tả ở đó..." }, { Cue = "/VO/Melinoe_2571", Text = "{#Emph}Augh... {#Prev}hắn mạnh thật..." }, { Cue = "/VO/Melinoe_2752", Text = "{#Emph}Urgh... {#Prev}hắn nhìn thấu ta..." }, { Cue = "/VO/Melinoe_2753", Text = "{#Emph}Ungh... {#Prev}vừa thoát khỏi hắn trong gang tấc..." }, { Cue = "/VO/Melinoe_5121", Text = "{#Emph}Eugh... {#Prev}ta vẫn còn cảm thấy buồn nôn...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 1, }, }, }, { Cue = "/VO/Melinoe_5122", Text = "{#Emph}Bleh... {#Prev}quả là một cặp đôi kỳ lạ...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 1, }, { PathTrue = { "GameState", "SpeechRecord", "/VO/Melinoe_5121" }, }, }, }, }, -- lost to eris { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "O_Boss01", "O_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Eris" }, Comparison = ">", Value = 0, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3163", Text = "{#Emph}Ungh... {#Prev}chết tiệt, Eris...!", PlayFirst = true }, { Cue = "/VO/Melinoe_3164", Text = "{#Emph}Augh... {#Prev}Eris và cây Rail chết tiệt của cô ta..." }, { Cue = "/VO/Melinoe_3165", Text = "{#Emph}Ngh... {#Prev}bị đánh bại bởi cô ta...", PlayFirst = true }, { Cue = "/VO/Melinoe_3166", Text = "{#Emph}Tsch... {#Prev}cô ta cảm thấy thích thú khi gây rắc rối cho ta..." }, }, -- lost to prometheus { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "P_Boss01" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Prometheus" }, Comparison = ">", Value = 0, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3631", Text = "{#Emph}Ngh... {#Prev}hắn nhìn thấu mình...", PlayFirst = true }, { Cue = "/VO/Melinoe_3632", Text = "{#Emph}Khh... {#Prev}hắn biết hắn sẽ thắng..." }, { Cue = "/VO/Melinoe_3633", Text = "{#Emph}Guh... {#Prev}Prometheus..." }, { Cue = "/VO/Melinoe_3634", Text = "{#Emph}Augh... {#Prev}bọn Titan..." }, { Cue = "/VO/Melinoe_5125", Text = "{#Emph}Eugh... {#Prev}Prometheus là quá đủ rồi...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 3, }, }, }, { Cue = "/VO/Melinoe_5126", Text = "{#Emph}Eugh... {#Prev}không biết cái nào tệ hơn nữa...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 3, }, }, }, }, -- lost on the summit { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "RoomSetName" }, IsAny = { "Q" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3943", Text = "{#Emph}Ungh... {#Prev}Olympus...! Không...", PlayFirst = true }, { Cue = "/VO/Melinoe_3945", Text = "{#Emph}Ngh...! {#Prev}Mong những vị thần vẫn bình an...", PlayFirst = true }, { Cue = "/VO/Melinoe_3944", Text = "{#Emph} {#Prev}Typhon...", GameStateRequirements = { { PathTrue = { "GameState", "RoomsEntered", "Q_Boss01" }, }, }, }, { Cue = "/VO/Melinoe_3942", Text = "{#Emph}Eyah! {#Prev}...Thứ... quái vật.. đó...", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss01", "Q_Boss02" }, }, }, }, { Cue = "/VO/Melinoe_3946", Text = "{#Emph}Rngh... {#Prev}thứ... đó...", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_MiniBoss03", "Q_MiniBoss04" }, }, }, }, { Cue = "/VO/Melinoe_3947", Text = "{#Emph}Augh... {#Prev}gần đến đỉnh rồi...", GameStateRequirements = { { Path = { "CurrentRun", "RoomsEntered" }, HasNone = { "Q_PostBoss01" }, }, }, }, { Cue = "/VO/Melinoe_4245", Text = "{#Emph}Ngh... {#Prev}hắn... cũng chỉ là kẻ địch khác. Hắn có thể bị tiêu diệt.", PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss01", "Q_Boss02" }, }, }, }, { Cue = "/VO/Melinoe_5127", Text = "{#Emph}Nngh... {#Prev}những kẻ thù khủng khiếp xuất hiện cùng lúc...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "Q_Boss02" }, }, }, }, { Cue = "/VO/Melinoe_5128", Text = "{#Emph}Argh... {#Prev}đúng là ác mộng...", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "ShrineUpgradesCache", "BossDifficultyShrineUpgrade" }, Comparison = ">=", Value = 4, }, }, }, }, -- lost to the champion of elysium { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "C_Boss01" }, }, { Path = { "CurrentRun", "BossHealthBarRecord", "Zagreus" }, Comparison = ">", Value = 0, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_5135", Text = "{#Emph}Nngh... {#Prev}nghe nói anh ấy rất mạnh...", PlayFirst = true }, { Cue = "/VO/Melinoe_5136", Text = "{#Emph}Argh... {#Prev}đánh khá lắm, Anh Trai..." }, { Cue = "/VO/Melinoe_5137", Text = "{#Emph}Augh... {#Prev}lần sau sẽ đến lượt em, Anh Trai..." }, { Cue = "/VO/Melinoe_5138", Text = "{#Emph}Oof... {#Prev}anh ấy đúng là Người Bảo Hộ..." }, }, -- almost beat boss { GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 1, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_Boss01", "F_Boss02", "G_Boss01", "G_Boss02", "H_Boss01", "H_Boss02", "I_Boss01", "N_Boss01", "N_Boss02", "O_Boss01", "O_Boss02", "P_Boss01", "Q_Boss01", "Q_Boss02" }, }, { Path = { "CurrentRun", "BossHealthBarRecord" }, MaxOf = "All", Comparison = "<", Value = 0.15, }, { Path = { "CurrentRun", "BossHealthBarRecord" }, MaxOf = "All", Comparison = ">", Value = 0, }, { PathFalse = { "CurrentRun", "ActiveBounty" }, }, { PathFalse = { "CurrentRun", "Cleared" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, { Cue = "/VO/Melinoe_0105", Text = "Gần được rồi...", PreLineWait = 1.9 }, { Cue = "/VO/Melinoe_2636", Text = "{#Emph}Hah... {#Prev}Ta gần làm được rồi..." }, { Cue = "/VO/Melinoe_2637", Text = "{#Emph}Rngh... {#Prev}gần được rồi..." }, { Cue = "/VO/Melinoe_2638", Text = "{#Emph}Ungh... {#Prev}gần hạ được hắn rồi...!", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "H_Boss01", "H_Boss02", "I_Boss01", "N_Boss01", "N_Boss02", "P_Boss01", "Q_Boss01", "Q_Boss02" }, }, }, }, { Cue = "/VO/Melinoe_2639", Text = "{#Emph}Khh... {#Prev}gần hạ được rồi...!", PlayFirst = true, GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsAny = { "F_Boss01", "F_Boss02", "G_Boss01", "G_Boss02", "O_Boss01", "O_Boss02" }, }, }, }, { Cue = "/VO/Melinoe_2640", Text = "{#Emph}Ngh... {#Prev}cứ ngỡ rằng đạt được..." }, { Cue = "/VO/Melinoe_2641", Text = "{#Emph}Eugh... {#Prev}cữ ngỡ rằng đã đạt được..." }, }, -- other encounters -- lost in devotion encounter { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Encounter", "Name" }, IsAny = { "DevotionTestF", "DevotionTestG", "DevotionTestH", "DevotionTestI", "DevotionTestN", "DevotionTestO", "DevotionTestP" }, }, }, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_1876", Text = "...Có lẽ những vị thần không thích ta cho lắm." }, }, -- other encounters -- lost in artemis encounter { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Encounter", "Name" }, IsAny = { "ArtemisCombatIntro", "ArtemisCombatF", "ArtemisCombatG" }, }, }, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_1877", Text = "...Ngay cả Artemis cũng không thể giúp ta thoát khỏi chuyện đó." }, }, -- lost in nemesis encounter { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Encounter", "Name" }, IsAny = { "NemesisCombatIntro", "NemesisCombatF", "NemesisCombatG", "NemesisCombatH", "NemesisCombatI" }, }, }, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2267", Text = "{#Emph}Eugh... {#Prev}chết tiệt, Nemesis..." }, }, -- lost in anomaly encounter { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "Encounter", "Name" }, IsAny = { "GeneratedAnomalyB" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2268", Text = "{#Emph} {#Prev}...cảm giác đó quá chân thực..." }, }, -- packaged bounties not cleared / failed chaos trial / lost to chaos trial -- multiple losses { GameStateRequirements = { { Path = { "CurrentRun", "ActiveBountyAttempts" }, Comparison = ">=", ValuePath = { "CurrentRun", "ActiveBountyClears" }, ValuePathAddition = 4, }, { PathTrue = { "CurrentRun", "ActiveBounty" }, }, { PathFalse = { "CurrentRun", "BountyCleared" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_3489", Text = "{#Emph}Ungh... {#Prev}có lẽ ta sẽ tạm thời ngừng Thử Nghiệm một thời gian..." }, { Cue = "/VO/Melinoe_3490", Text = "{#Emph}Ngh... {#Prev}sao cứ phải cố gắng vô ích với thứ đó chứ...?" }, }, { GameStateRequirements = { { PathTrue = { "CurrentRun", "ActiveBounty" }, }, { PathFalse = { "CurrentRun", "BountyCleared" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2706", Text = "{#Emph}Ungh... {#Prev}phải thử lại lần nữa..." }, { Cue = "/VO/Melinoe_2707", Text = "{#Emph}Augh... {#Prev}đó không phải nhiệm vụ dễ dàng..." }, { Cue = "/VO/Melinoe_2708", Text = "{#Emph}Eugh... {#Prev}thành thật xin lỗi, Chaos..." }, { Cue = "/VO/Melinoe_2709", Text = "{#Emph}... {#Prev}chuyện gì đã xảy ra..." }, { Cue = "/VO/Melinoe_2632", Text = "{#Emph}Mm... {#Prev}đó không hẳn là một viễn cảnh đúng không?" }, { Cue = "/VO/Melinoe_2633", Text = "{#Emph}Augh... {#Prev}đầu ta vẫn còn đau quá..." }, { Cue = "/VO/Melinoe_2634", Text = "{#Emph}Ungh... {#Prev}giống như một giấc mơ chân thực..." }, { Cue = "/VO/Melinoe_3049", Text = "{#Emph}Augh... {#Prev}không phải một Thử Nghiệm đơn giản..." }, { Cue = "/VO/Melinoe_3050", Text = "{#Emph}Eugh... {#Prev}kết quả Thử Nghiệm không như mong đợi..." }, { Cue = "/VO/Melinoe_3051", Text = "{#Emph}Ungh... {#Prev}Thử Nghiệm hoàn thành...", PlayFirst = true }, { Cue = "/VO/Melinoe_3052", Text = "{#Emph}Ngh... {#Prev}thành thật xin lỗi, Đáng Chaos Toàn Năng." }, { Cue = "/VO/Melinoe_2707", Text = "{#Emph}Augh... {#Prev}was not an easy mission...", GameStateRequirements = { { Path = { "CurrentRun", "ActiveBounty" }, IsAny = { "PackageBountyRandomUnderworld_Difficulty2", "PackageBountyRandomSurface_Difficulty2" }, }, }, }, }, -- failed on surface (cursed, etc.) { PlayOnce = true, GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "N_Opening01" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.33, -- { Cue = "/VO/Melinoe_0567", Text = "Rngh... the surface... I..." }, { Cue = "/VO/Melinoe_2423", Text = "{#Emph} {#Prev}...Ta không thở được...", PlayFirst = true, GameStateRequirements = { { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeSurfacePenaltyCure" }, }, }, }, { Cue = "/VO/Melinoe_2424", Text = "Chắc phải có cách nào đó để ta sống sót trên đó...", GameStateRequirements = { { PathFalse = { "GameState", "WorldUpgradesAdded", "WorldUpgradeSurfacePenaltyCure" }, }, }, }, { Cue = "/VO/Melinoe_2572", Text = "{#Emph}Augh... {#Prev}vậy ra đó chính là trần gian...", PlayOnce = true }, }, -- lost in Thessaly { GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "O_Intro" }, }, { Path = { "CurrentRun", "RoomsEntered" }, HasNone = { "O_Boss01", "O_Boss02" }, }, { Path = { "CurrentRun", "CurrentRoom", "Name" }, IsNone = { "O_Devotion01" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.1, { Cue = "/VO/Melinoe_3169", Text = "{#Emph}Oof... {#Prev}vẫn còn say sóng vì chuyện đó..." }, { Cue = "/VO/Melinoe_4122", Text = "{#Emph}Urgh... {#Prev}đã đi quá xa..." }, }, -- lost in Fields { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "RoomSetName" }, IsAny = { "H" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.5, { Cue = "/VO/Melinoe_2698", Text = "{#Emph}Eugh... {#Prev}đã tiến xa đến vậy rồi..." }, { Cue = "/VO/Melinoe_2699", Text = "{#Emph}Mmph... {#Prev}không vui vẻ gì...", PlayFirst = true }, }, -- lost in Tartarus, misc. { GameStateRequirements = { { PathTrue = { "CurrentRun", "RoomsEntered", "I_Story01" }, }, { PathFalse = { "CurrentRun", "Cleared" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.1, { Cue = "/VO/Melinoe_2930", Text = "{#Emph}Ungh... {#Prev}hãy chờ con, thưa Cha..." }, }, -- lost in Olympus, misc. { GameStateRequirements = { { Path = { "CurrentRun", "CurrentRoom", "RoomSetName" }, IsAny = { "P", "Q" }, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlayAll = 0.1, { Cue = "/VO/Melinoe_3641", Text = "{#Emph}Augh... {#Prev}chuyện gì đang xảy ra trên đó vậy...?" }, { Cue = "/VO/Melinoe_3642", Text = "{#Emph} {#Prev}Đó là Olympus..." }, { Cue = "/VO/Melinoe_3639", Text = "{#Emph}Guh... {#Prev}trờ về lòng đất." }, { Cue = "/VO/Melinoe_3640", Text = "{#Emph}Hrm... {#Prev}rất gần đỉnh núi rồi...", GameStateRequirements = { { Path = { "CurrentRun", "BiomeDepthCache" }, Comparison = ">=", Value = 4, }, { PathFalse = { "CurrentRun", "RoomsEntered", "Q_Intro" } }, }, }, }, -- artemis { GameStateRequirements = { { Path = { "AudioState", "AmbientTrackName" }, IsAny = { "/Music/ArtemisSong_MC", "/Music/IrisEndThemeCrossroads_MC" }, }, }, BreakIfPlayed = true, PreLineWait = 1.0, SuccessiveChanceToPlay = 0.2, { Cue = "/VO/Melinoe_4024", Text = "{#Emph}Augh... {#Prev}hey... Artemis..." }, }, -- lost in misc. ways { GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache" }, Comparison = ">=", Value = 1, }, }, RandomRemaining = true, BreakIfPlayed = true, PreLineWait = 1.0, { Cue = "/VO/Melinoe_3556", Text = "{#Emph}Ungh... {#Prev}Frinos, mi có đó không...?", PostLineFunctionName = "FrogFamiliarReaction", PlayFirst = true, GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 566831 } }, }, }, }, { Cue = "/VO/Melinoe_0099", Text = "{#Emph} Ungh...", PreLineWait = 0.5 }, { Cue = "/VO/Melinoe_0008_V3", Text = "{#Emph} Augh...", PreLineWait = 0.5, GameStateRequirements = { { Path = { "GameState", "CompletedRunsCache", }, Comparison = ">=", Value = 10, }, }, }, { Cue = "/VO/Melinoe_0100", Text = "{#Emph}...Augh!" }, { Cue = "/VO/Melinoe_0101", Text = "Đã trở về...", PreLineWait = 1.8 }, { Cue = "/VO/Melinoe_0102", Text = "Nhà...", PreLineWait = 1.8 }, { Cue = "/VO/Melinoe_0103", Text = "Không...", PreLineWait = 1.8 }, { Cue = "/VO/Melinoe_0104", Text = "{#Emph}Augh..." }, { Cue = "/VO/Melinoe_0106", Text = "Ta đã ra ngoài bao lâu rồi...?", PreLineWait = 1.6 }, { Cue = "/VO/Melinoe_0361", Text = "{#Emph}Eugh, augh..." }, { Cue = "/VO/Melinoe_0362", Text = "{#Emph}Mmph... {#Prev}lại quay về..." }, { Cue = "/VO/Melinoe_0363", Text = "{#Emph}Urgh... {#Prev}chết tiệt." }, { Cue = "/VO/Melinoe_0364", Text = "{#Emph}Mmph{#Prev}, máu và..." }, { Cue = "/VO/Melinoe_0365", Text = "{#Emph}Ungh... {#Prev}tình dậy đi, Mel." }, { Cue = "/VO/Melinoe_0366", Text = "{#Emph}Mm{#Prev}, chưa đủ giỏi." }, { Cue = "/VO/Melinoe_0367", Text = "{#Emph}Eugh{#Prev}, ta sẽ không mắc sai lầm đó lần nữa." }, { Cue = "/VO/Melinoe_0368", Text = "{#Emph}Augh{#Prev}, rõ ràng là ta luyện tập vẫn chưa tốt." }, { Cue = "/VO/Melinoe_0374", Text = "{#Emph} ...chết tiệt..." }, { Cue = "/VO/Melinoe_2397", Text = "{#Emph}Ngh{#Prev}... trỗi dậy và tỏa sáng..." }, { Cue = "/VO/Melinoe_2398", Text = "{#Emph}Eugh{#Prev}... một đêm dài." }, { Cue = "/VO/Melinoe_2400", Text = "{#Emph}Ah{#Prev}... hm." }, { Cue = "/VO/Melinoe_2401", Text = "{#Emph} " }, { Cue = "/VO/Melinoe_2402", Text = "{#Emph} " }, { Cue = "/VO/Melinoe_2710", Text = "{#Emph}Nngh... {#Prev}quay về rồi." }, { Cue = "/VO/Melinoe_2711", Text = "{#Emph}Augh... {#Prev}lại một đêm khác." }, { Cue = "/VO/Melinoe_5141", Text = "{#Emph}Nngh... {#Prev}chết tiệt..." }, { Cue = "/VO/Melinoe_5142", Text = "{#Emph}Augh... {#Prev}không hẳn..." }, { Cue = "/VO/Melinoe_5143", Text = "{#Emph}Rngh... {#Prev}không phải lúc đó..." }, { Cue = "/VO/Melinoe_5144", Text = "{#Emph} " }, { Cue = "/VO/Melinoe_5146", Text = "{#Emph}Nngh... {#Prev}ôi trời..." }, { Cue = "/VO/Melinoe_5147", Text = "{#Emph}Mmm... {#Prev}đêm không thuận lợi..." }, { Cue = "/VO/Melinoe_5148", Text = "{#Emph}Hrnn... ow..." }, { Cue = "/VO/Melinoe_5145", Text = "{#Emph}Eugh... {#Prev}ta thất bại rồi, Frinos...", PostLineFunctionName = "FrogFamiliarReaction", GameStateRequirements = { { FunctionName = "RequiredAlive", FunctionArgs = { Ids = { 566831 } }, }, }, }, }, }