diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a2a1c2..04e4fd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,20 @@ **Changelog** -- +**
Version 1.3.5** + +**
Fixes** + +* Added safety checks to new FootstepSurface Material cache system. +* Added safety checks to new ExtendedLevel override fog size feature. +* Changed ContentRestoring of EnemyType's to use ScriptableObject name rather than enemyName +* Fixed issue where synced audio clip that plays when previewing enemy beastiary file was not playing for custom enemies +* Fixed issue where custom Enemy beastiary files did not have Info as a default keyword + +
+ +
+ **
Version 1.3.4** **
Fixes** @@ -10,6 +24,8 @@
+
+ **
Version 1.3.3** **
Features** diff --git a/LethalLevelLoader/Components/ExtendedContent/ExtendedMod.cs b/LethalLevelLoader/Components/ExtendedContent/ExtendedMod.cs index d5c888e..16a1819 100644 --- a/LethalLevelLoader/Components/ExtendedContent/ExtendedMod.cs +++ b/LethalLevelLoader/Components/ExtendedContent/ExtendedMod.cs @@ -237,6 +237,8 @@ internal void UnregisterAllExtendedContent() ExtendedEnemyTypes.Clear(); ExtendedWeatherEffects.Clear(); ExtendedFootstepSurfaces.Clear(); + ExtendedStoryLogs.Clear(); + ExtendedBuyableVehicles.Clear(); } internal void SortRegisteredContent() @@ -247,6 +249,8 @@ internal void SortRegisteredContent() ExtendedEnemyTypes.Sort((s1, s2) => s1.name.CompareTo(s2.name)); ExtendedWeatherEffects.Sort((s1, s2) => s1.name.CompareTo(s2.name)); ExtendedFootstepSurfaces.Sort((s1, s2) => s1.name.CompareTo(s2.name)); + ExtendedStoryLogs.Sort((s1, s2) => s1.name.CompareTo(s2.name)); + ExtendedBuyableVehicles.Sort((s1, s2) => s1.name.CompareTo(s2.name)); } internal void Example() diff --git a/LethalLevelLoader/Loaders/LevelLoader.cs b/LethalLevelLoader/Loaders/LevelLoader.cs index 1ae8027..913ed87 100644 --- a/LethalLevelLoader/Loaders/LevelLoader.cs +++ b/LethalLevelLoader/Loaders/LevelLoader.cs @@ -76,8 +76,10 @@ internal static void RefreshShipAnimatorClips(ExtendedLevel extendedLevel) internal static void RefreshFogSize(ExtendedLevel extendedLevel) { - dustCloudFog.parameters.size = extendedLevel.OverrideDustStormVolumeSize; - foggyFog.parameters.size = extendedLevel.OverrideFoggyVolumeSize; + if (dustCloudFog != null) + dustCloudFog.parameters.size = extendedLevel.OverrideDustStormVolumeSize; + if (foggyFog != null) + foggyFog.parameters.size = extendedLevel.OverrideFoggyVolumeSize; } internal static void RefreshFootstepSurfaces() @@ -120,9 +122,15 @@ internal static void BakeSceneColliderMaterialData(Scene scene) { if (sceneCollider.TryGetComponent(out MeshRenderer meshRenderer)) { - if (!cachedLevelColliderMaterialDictionary.ContainsKey(sceneCollider)) - cachedLevelColliderMaterialDictionary.Add(sceneCollider, new List(meshRenderer.sharedMaterials)); + List validMaterials = new List(); foreach (Material material in meshRenderer.sharedMaterials) + if (material != null && !string.IsNullOrEmpty(material.name)) + validMaterials.Add(material); + + if (!cachedLevelColliderMaterialDictionary.ContainsKey(sceneCollider)) + cachedLevelColliderMaterialDictionary.Add(sceneCollider, new List(validMaterials)); + + foreach (Material material in validMaterials) { if (!cachedLevelMaterialColliderDictionary.ContainsKey(material.name)) cachedLevelMaterialColliderDictionary.Add(material.name, new List { sceneCollider }); @@ -152,8 +160,9 @@ internal static Dictionary GetActiveExtendedFoostepSurf foreach (ExtendedFootstepSurface extendedFootstepSurface in LevelManager.CurrentExtendedLevel.ExtendedMod.ExtendedFootstepSurfaces) foreach (Material material in extendedFootstepSurface.associatedMaterials) - if (!returnDict.ContainsKey(material.name)) - returnDict.Add(material.name, extendedFootstepSurface.footstepSurface); + if (material != null && !string.IsNullOrEmpty(material.name)) + if (!returnDict.ContainsKey(material.name)) + returnDict.Add(material.name, extendedFootstepSurface.footstepSurface); return (returnDict); diff --git a/LethalLevelLoader/Patches/TerminalManager.cs b/LethalLevelLoader/Patches/TerminalManager.cs index 0196cd5..0f82cad 100644 --- a/LethalLevelLoader/Patches/TerminalManager.cs +++ b/LethalLevelLoader/Patches/TerminalManager.cs @@ -815,12 +815,14 @@ internal static void CreateEnemyTypeTerminalData(ExtendedEnemyType extendedEnemy TerminalKeyword newEnemyInfoKeyword = CreateNewTerminalKeyword(); newEnemyInfoKeyword.name = extendedEnemyType.name + "BestiaryKeyword"; newEnemyInfoKeyword.word = extendedEnemyType.EnemyDisplayName.ToLower(); + newEnemyInfoKeyword.defaultVerb = routeInfoKeyword; TerminalNode newEnemyInfoNode = CreateNewTerminalNode(); newEnemyInfoNode.name = extendedEnemyType.name + "BestiaryNode"; newEnemyInfoNode.displayText = extendedEnemyType.InfoNodeDescription; newEnemyInfoNode.creatureFileID = extendedEnemyType.EnemyID; newEnemyInfoNode.creatureName = extendedEnemyType.EnemyDisplayName; + newEnemyInfoNode.playSyncedClip = 2; if (extendedEnemyType.InfoNodeVideoClip != null) { diff --git a/LethalLevelLoader/Plugin.cs b/LethalLevelLoader/Plugin.cs index 313cf76..b8747de 100644 --- a/LethalLevelLoader/Plugin.cs +++ b/LethalLevelLoader/Plugin.cs @@ -23,7 +23,7 @@ public class Plugin : BaseUnityPlugin { public const string ModGUID = "imabatby.lethallevelloader"; public const string ModName = "LethalLevelLoader"; - public const string ModVersion = "1.3.4"; + public const string ModVersion = "1.3.5"; internal static Plugin Instance; diff --git a/LethalLevelLoader/Tools/ContentRestorer.cs b/LethalLevelLoader/Tools/ContentRestorer.cs index c7a14c3..2e8b0f3 100644 --- a/LethalLevelLoader/Tools/ContentRestorer.cs +++ b/LethalLevelLoader/Tools/ContentRestorer.cs @@ -60,7 +60,7 @@ internal static void RestoreVanillaLevelAssetReferences(ExtendedLevel extendedLe foreach (EnemyType vanillaEnemyType in OriginalContent.Enemies) foreach (SpawnableEnemyWithRarity enemyRarityPair in extendedLevel.SelectableLevel.Enemies.Concat(extendedLevel.SelectableLevel.DaytimeEnemies).Concat(extendedLevel.SelectableLevel.OutsideEnemies)) - if (enemyRarityPair.enemyType != null && enemyRarityPair.enemyType.enemyName == vanillaEnemyType.enemyName) + if (enemyRarityPair.enemyType != null && !string.IsNullOrEmpty(enemyRarityPair.enemyType.name) && enemyRarityPair.enemyType.name == vanillaEnemyType.name) enemyRarityPair.enemyType = RestoreAsset(enemyRarityPair.enemyType, vanillaEnemyType); foreach (SpawnableMapObject spawnableMapObject in extendedLevel.SelectableLevel.spawnableMapObjects)