using Content.Shared.Maps; using Robust.Shared.Prototypes; namespace Content.Shared.Anomaly.Effects.Components; [RegisterComponent, Access(typeof(SharedTileAnomalySystem))] public sealed partial class TileSpawnAnomalyComponent : Component { /// /// All types of floors spawns with their settings /// [DataField] public List Entries = new(); } [DataDefinition, Serializable] public partial record struct TileSpawnSettingsEntry() { /// /// The tile that is spawned by the anomaly's effect /// [DataField(required: true)] public ProtoId Floor { get; set; } = default!; /// /// The minimum number of tiles that spawn per pulse /// [DataField] public int MinAmount { get; set; } = 0; /// /// The maximum number of tiles that spawn per pulse /// scales with severity. /// [DataField] public int MaxAmount { get; set; } = 1; /// /// The distance from the anomaly in which the tiles will not appear /// [DataField] public float MinRange { get; set; } = 0f; /// /// The maximum radius the tiles will spawn in. /// [DataField] public float MaxRange { get; set; } = 1f; /// /// Whether or not anomaly spawns tiles on Pulse /// [DataField] public bool SpawnOnPulse { get; set; } = false; /// /// Whether or not anomaly spawns tiles on SuperCritical /// [DataField] public bool SpawnOnSuperCritical { get; set; } = false; /// /// Whether or not anomaly spawns tiles on StabilityChanged /// [DataField] public bool SpawnOnStabilityChanged { get; set; } = false; /// /// Whether or not anomaly spawns tiles on StabilityChanged /// [DataField] public bool SpawnOnSeverityChanged { get; set; } = false; }