diff --git a/Content.Server/_CP14/Procedural/GenerationLayers/CP14Biome.cs b/Content.Server/_CP14/Procedural/GenerationLayers/CP14Biome.cs index 310d9da403..96e2c7357a 100644 --- a/Content.Server/_CP14/Procedural/GenerationLayers/CP14Biome.cs +++ b/Content.Server/_CP14/Procedural/GenerationLayers/CP14Biome.cs @@ -23,6 +23,7 @@ public sealed partial class DungeonJob if (!_prototype.TryIndex(dunGen.BiomeTemplate, out var indexedBiome)) return; + HashSet processedTiles = new(); var biomeSystem = _entManager.System(); var seed = random.Next(); @@ -32,6 +33,11 @@ public sealed partial class DungeonJob { foreach (var node in dun.AllTiles) { + if (processedTiles.Contains(node)) + continue; + + processedTiles.Add(node); + var tileRef = _maps.GetTileRef(_gridUid, _grid, node); if (reservedTiles.Contains(node)) diff --git a/Content.Server/_CP14/Procedural/GenerationLayers/CP14Ore.cs b/Content.Server/_CP14/Procedural/GenerationLayers/CP14Ore.cs index 509e43a872..0f18eb834c 100644 --- a/Content.Server/_CP14/Procedural/GenerationLayers/CP14Ore.cs +++ b/Content.Server/_CP14/Procedural/GenerationLayers/CP14Ore.cs @@ -20,6 +20,7 @@ public sealed partial class DungeonJob HashSet reservedTiles, Random random) { + HashSet processedTiles = new(); var replaceEntities = new Dictionary(); var availableTiles = new List(); @@ -27,6 +28,11 @@ public sealed partial class DungeonJob { foreach (var tile in dun.AllTiles) { + if (processedTiles.Contains(tile)) + continue; + + processedTiles.Add(tile); + var tileRef = _maps.GetTileRef(_gridUid, _grid, tile); //Tile mask filtering diff --git a/Content.Server/_CP14/Procedural/GenerationLayers/CP14Rooms.cs b/Content.Server/_CP14/Procedural/GenerationLayers/CP14Rooms.cs index fc5251a864..377f206d26 100644 --- a/Content.Server/_CP14/Procedural/GenerationLayers/CP14Rooms.cs +++ b/Content.Server/_CP14/Procedural/GenerationLayers/CP14Rooms.cs @@ -17,6 +17,7 @@ public sealed partial class DungeonJob HashSet reservedTiles, Random random) { + HashSet processedTiles = new(); List availableRooms = new(); var availableTiles = new List(); @@ -39,6 +40,11 @@ public sealed partial class DungeonJob { foreach (var tile in dun.AllTiles) { + if (processedTiles.Contains(tile)) + continue; + + processedTiles.Add(tile); + var tileRef = _maps.GetTileRef(_gridUid, _grid, tile); if (reservedTiles.Contains(tile))