diff --git a/Content.Server/_CP14/BiomeSpawner/EntitySystems/CP14BiomeSpawnerSystem.cs b/Content.Server/_CP14/BiomeSpawner/EntitySystems/CP14BiomeSpawnerSystem.cs index be66a52244..90a6d9159f 100644 --- a/Content.Server/_CP14/BiomeSpawner/EntitySystems/CP14BiomeSpawnerSystem.cs +++ b/Content.Server/_CP14/BiomeSpawner/EntitySystems/CP14BiomeSpawnerSystem.cs @@ -36,28 +36,25 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem { SpawnBiome(ent); QueueDel(ent); - } private void SpawnBiome(Entity ent) { var biome = _proto.Index(ent.Comp.Biome); var spawnerTransform = Transform(ent); + if (spawnerTransform.GridUid == null) + return; - var gridUid = spawnerTransform.ParentUid; + var gridUid = spawnerTransform.GridUid.Value; if (!TryComp(gridUid, out var map)) return; - if (!_roundSeed.TryGetSeed(out var seed)) - { - Log.Warning("Missing RoundSeed. Seed set to 0"); - seed = 0; - } + var seed = _roundSeed.GetSeed(); var vec = _transform.GetGridOrMapTilePosition(ent); - if (!_biome.TryGetTile(vec, biome.Layers, seed.Value, map, out var tile)) + if (!_biome.TryGetTile(vec, biome.Layers, seed, map, out var tile)) return; // Set new tile @@ -73,7 +70,7 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem } //Add decals - if (_biome.TryGetDecals(vec, biome.Layers, seed.Value, map, out var decals)) + if (_biome.TryGetDecals(vec, biome.Layers, seed, map, out var decals)) { foreach (var decal in decals) { @@ -89,7 +86,7 @@ public sealed class CP14BiomeSpawnerSystem : EntitySystem QueueDel(entToRemove); } - if (_biome.TryGetEntity(vec, biome.Layers, tile.Value, seed.Value, map, out var entityProto)) + if (_biome.TryGetEntity(vec, biome.Layers, tile.Value, seed, map, out var entityProto)) Spawn(entityProto, new EntityCoordinates(gridUid, tileCenterVec)); } } diff --git a/Content.Server/_CP14/RoundSeed/CP14RoundSeedSystem.cs b/Content.Server/_CP14/RoundSeed/CP14RoundSeedSystem.cs index 80b209e356..b7792864ce 100644 --- a/Content.Server/_CP14/RoundSeed/CP14RoundSeedSystem.cs +++ b/Content.Server/_CP14/RoundSeed/CP14RoundSeedSystem.cs @@ -7,6 +7,7 @@ using System.Diagnostics.CodeAnalysis; using JetBrains.Annotations; +using Robust.Shared.Map; using Robust.Shared.Random; namespace Content.Server._CP14.RoundSeed; @@ -28,17 +29,25 @@ public sealed class CP14RoundSeedSystem : EntitySystem ent.Comp.Seed = _random.Next(CP14RoundSeedComponent.MaxValue); } - [PublicAPI] - public bool TryGetSeed([NotNullWhen(true)] out int? seed) + private int SetupSeed() + { + return AddComp(Spawn(null, MapCoordinates.Nullspace)).Seed; + } + + /// + /// Returns the round seed if assigned, otherwise assigns the round seed itself. + /// + /// seed of the round + public int GetSeed() { - seed = null; var query = EntityQuery(); foreach (var comp in query) { - seed = comp.Seed; - return true; + return comp.Seed; } - return false; + var seed = SetupSeed(); + Log.Warning($"Missing RoundSeed. Seed set to {seed}"); + return seed; } }