diff --git a/CHANGELOG.md b/CHANGELOG.md index f09bad3..c0d350a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - LethalLib NuGet package now ships with xml docs (wow!!) - Enabled embedded debug symbols for easier to read stacktraces for when LethalLib explodes +### Fixed + +- Null checks to avoid errors with loading into lobby with empty MapObjects + ## LethalLib [1.0.0] > [!NOTE] diff --git a/LethalLib/Modules/Enemies.cs b/LethalLib/Modules/Enemies.cs index 901f176..4cce05b 100644 --- a/LethalLib/Modules/Enemies.cs +++ b/LethalLib/Modules/Enemies.cs @@ -208,7 +208,7 @@ private static void AddEnemyToLevel(SpawnableEnemy spawnableEnemy, SelectableLev string tagName = string.Empty; bool enemyValidToAdd = spawnableEnemy.levelRarities.ContainsKey(Levels.LevelTypes.All) - || (spawnableEnemy.customLevelRarities != null && Levels.Compatibility.ContentIncludedToLevelViaTag(spawnableEnemy.customLevelRarities.Keys.ToArray(), level, out tagName)) + || (spawnableEnemy.customLevelRarities != null && spawnableEnemy.customLevelRarities.Keys != null && Levels.Compatibility.ContentIncludedToLevelViaTag(spawnableEnemy.customLevelRarities.Keys.ToArray(), level, out tagName)) || (isCurrentLevelFromVanilla && spawnableEnemy.levelRarities.ContainsKey(Levels.LevelTypes.Vanilla)) || (!isCurrentLevelFromVanilla && spawnableEnemy.levelRarities.ContainsKey(Levels.LevelTypes.Modded)) || (isCurrentLevelFromVanilla && spawnableEnemy.levelRarities.ContainsKey(currentLevelType)) diff --git a/LethalLib/Modules/Items.cs b/LethalLib/Modules/Items.cs index 4c891ff..211c427 100644 --- a/LethalLib/Modules/Items.cs +++ b/LethalLib/Modules/Items.cs @@ -191,7 +191,7 @@ private static void AddScrapItemToLevel(ScrapItem scrapItem, SelectableLevel lev string tagName = string.Empty; bool itemValidToAdd = scrapItem.levelRarities.ContainsKey(Levels.LevelTypes.All) - || (scrapItem.customLevelRarities != null && Levels.Compatibility.ContentIncludedToLevelViaTag(scrapItem.customLevelRarities.Keys.ToArray(), level, out tagName)) + || (scrapItem.customLevelRarities != null && scrapItem.customLevelRarities.Keys != null && Levels.Compatibility.ContentIncludedToLevelViaTag(scrapItem.customLevelRarities.Keys.ToArray(), level, out tagName)) || (isCurrentLevelFromVanilla && scrapItem.levelRarities.ContainsKey(Levels.LevelTypes.Vanilla)) || (!isCurrentLevelFromVanilla && scrapItem.levelRarities.ContainsKey(Levels.LevelTypes.Modded)) || (isCurrentLevelFromVanilla && scrapItem.levelRarities.ContainsKey(currentLevelType)) diff --git a/LethalLib/Modules/MapObjects.cs b/LethalLib/Modules/MapObjects.cs index 25da5d8..0b9cf16 100644 --- a/LethalLib/Modules/MapObjects.cs +++ b/LethalLib/Modules/MapObjects.cs @@ -118,18 +118,18 @@ private static void AddMapObjectToLevel(RegisteredMapObject mapObject, Selectabl string tagName = string.Empty; bool mapObjectValidToAdd = mapObject.levels.HasFlag(Levels.LevelTypes.All) - || Levels.Compatibility.ContentIncludedToLevelViaTag(mapObject.spawnLevelOverrides.ToArray(), level, out tagName) + || (mapObject.spawnLevelOverrides != null && Levels.Compatibility.ContentIncludedToLevelViaTag(mapObject.spawnLevelOverrides, level, out tagName)) || (isCurrentLevelFromVanilla && mapObject.levels.HasFlag(Levels.LevelTypes.Vanilla)) || (!isCurrentLevelFromVanilla && mapObject.levels.HasFlag(Levels.LevelTypes.Modded)) || (isCurrentLevelFromVanilla && mapObject.levels.HasFlag(currentLevelType)) - || (!isCurrentLevelFromVanilla && mapObject.spawnLevelOverrides.Contains(customName)); + || (!isCurrentLevelFromVanilla && mapObject.spawnLevelOverrides != null && mapObject.spawnLevelOverrides.Contains(customName)); string mapObjectName = "invalid!"; if (mapObject.mapObject != null) { mapObjectName = mapObject.mapObject.prefabToSpawn.name; } - else if (mapObject.outsideObject != null && mapObject.outsideObject != null) + else if (mapObject.outsideObject != null) { mapObjectName = mapObject.outsideObject.spawnableObject.prefabToSpawn.name; }