using Content.Server.GameTicking.Rules.VariationPass.Components; using Content.Shared.Storage; using Robust.Shared.Random; namespace Content.Server.GameTicking.Rules.VariationPass; /// public sealed class EntitySpawnVariationPassSystem : VariationPassSystem { protected override void ApplyVariation(Entity ent, ref StationVariationPassEvent args) { var totalTiles = Stations.GetTileCount(args.Station.AsNullable()); var dirtyMod = Random.NextGaussian(ent.Comp.TilesPerEntityAverage, ent.Comp.TilesPerEntityStdDev); var trashTiles = Math.Max((int) (totalTiles * (1 / dirtyMod)), 0); for (var i = 0; i < trashTiles; i++) { if (!TryFindRandomTileOnStation(args.Station, out _, out _, out var coords)) continue; var ents = EntitySpawnCollection.GetSpawns(ent.Comp.Entities, Random); foreach (var spawn in ents) { SpawnAtPosition(spawn, coords); } } } }