From 5950bb79a03b93827296f42a839ebda9647a41bd Mon Sep 17 00:00:00 2001 From: WhiteSpike <58040140+WhiteSpike@users.noreply.github.com> Date: Sat, 11 May 2024 23:38:15 +0100 Subject: [PATCH] Fixed "Not being able to route to The Company Moon" issue #91, #87, #83 , #80 , #78, #77 - ``ExtendedLevel.cs`` - Removed the restriction of applying the terminal node changes on custom levels only. - Reasoning being that it's easier for every level to follow a standard rather than having special cases (CompanyRoute having a displayPlanetInfo of -1, leading to OutOfBounds). - ``General/Patches.cs`` - Changed applying the ``SetLevelID()`` method from ``CustomExtendedLevels`` to ``ExtendedLevels`` to include the vanilla moons as well. - ``AssetBundleLoader.cs`` - Added case to acquire the terminal nodes associated to the Company Moon due to the noun object name being ``CompanyMoon`` rather than ``Gordion``. --- .../Components/ExtendedContent/ExtendedLevel.cs | 13 +++++-------- LethalLevelLoader/General/Patches.cs | 2 +- LethalLevelLoader/Tools/AssetBundleLoader.cs | 11 ++++++++++- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/LethalLevelLoader/Components/ExtendedContent/ExtendedLevel.cs b/LethalLevelLoader/Components/ExtendedContent/ExtendedLevel.cs index 5ee382a..4591fd4 100644 --- a/LethalLevelLoader/Components/ExtendedContent/ExtendedLevel.cs +++ b/LethalLevelLoader/Components/ExtendedContent/ExtendedLevel.cs @@ -186,14 +186,11 @@ internal static string GetNumberlessPlanetName(SelectableLevel selectableLevel) internal void SetLevelID() { - if (ContentType == ContentType.Custom) - { - SelectableLevel.levelID = PatchedContent.ExtendedLevels.IndexOf(this); - if (RouteNode != null) - RouteNode.displayPlanetInfo = SelectableLevel.levelID; - if (RouteConfirmNode != null) - RouteConfirmNode.buyRerouteToMoon = SelectableLevel.levelID; - } + SelectableLevel.levelID = PatchedContent.ExtendedLevels.IndexOf(this); + if (RouteNode != null) + RouteNode.displayPlanetInfo = SelectableLevel.levelID; + if (RouteConfirmNode != null) + RouteConfirmNode.buyRerouteToMoon = SelectableLevel.levelID; } internal void SetExtendedDungeonFlowMatches() diff --git a/LethalLevelLoader/General/Patches.cs b/LethalLevelLoader/General/Patches.cs index ace94ce..f4cc16b 100644 --- a/LethalLevelLoader/General/Patches.cs +++ b/LethalLevelLoader/General/Patches.cs @@ -196,7 +196,7 @@ internal static void StartOfRoundAwake_Prefix(StartOfRound __instance) //Initialize ExtendedContent Objects For Custom Content. AssetBundleLoader.InitializeBundles(); - foreach (ExtendedLevel extendedLevel in PatchedContent.CustomExtendedLevels) + foreach (ExtendedLevel extendedLevel in PatchedContent.ExtendedLevels) extendedLevel.SetLevelID(); //Some Debugging. diff --git a/LethalLevelLoader/Tools/AssetBundleLoader.cs b/LethalLevelLoader/Tools/AssetBundleLoader.cs index 352e211..72b8ed1 100644 --- a/LethalLevelLoader/Tools/AssetBundleLoader.cs +++ b/LethalLevelLoader/Tools/AssetBundleLoader.cs @@ -472,13 +472,22 @@ internal static void CreateVanillaExtendedLevels(StartOfRound startOfRound) ExtendedLevel extendedLevel = ExtendedLevel.Create(selectableLevel); foreach (CompatibleNoun compatibleRouteNoun in TerminalManager.routeKeyword.compatibleNouns) - if (compatibleRouteNoun.noun.name.Contains(ExtendedLevel.GetNumberlessPlanetName(selectableLevel))) + { + + string comparedName = compatibleRouteNoun.noun.name; + switch(comparedName) + { + // Terminal node noun is called "CompanyMoon", not "Gordion" so it will never grab the respective nodes if we don't change the compared name + case "CompanyMoon": comparedName = "Gordion"; break; + } + if (comparedName.Contains(ExtendedLevel.GetNumberlessPlanetName(selectableLevel))) { extendedLevel.RouteNode = compatibleRouteNoun.result; extendedLevel.RouteConfirmNode = compatibleRouteNoun.result.terminalOptions[1].result; extendedLevel.RoutePrice = compatibleRouteNoun.result.itemCost; break; } + } PatchedContent.AllLevelSceneNames.Add(extendedLevel.SelectableLevel.sceneName); extendedLevel.Initialize("Lethal Company", generateTerminalAssets: false);