using Content.Shared.Maps;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
namespace Content.Shared.Anomaly.Effects.Components;
[RegisterComponent]
public sealed partial class EntitySpawnAnomalyComponent : Component
{
///
/// A list of entities that are random picked to be spawned on each pulse
///
[DataField("spawns", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer)), ViewVariables(VVAccess.ReadWrite)]
public List Spawns = new();
///
/// The maximum number of entities that spawn per pulse
/// scales with severity.
///
[DataField("maxSpawnAmount"), ViewVariables(VVAccess.ReadWrite)]
public int MaxSpawnAmount = 7;
///
/// The maximum radius the entities will spawn in.
/// Also governs the maximum reach of flesh tiles
/// scales with stability
///
[DataField("spawnRange"), ViewVariables(VVAccess.ReadWrite)]
public float SpawnRange = 5f;
///
/// The tile that is spawned by the anomaly's effect
///
[DataField("floorTileId", customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)]
public string FloorTileId = "FloorFlesh";
///
/// The entity spawned when the anomaly goes supercritical
///
[DataField("superCriticalSpawn", customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)]
public string SupercriticalSpawn = "FleshKudzu";
}