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)