using Content.Server.StationEvents.Events;
namespace Content.Server.StationEvents.Components;
[RegisterComponent, Access(typeof(MeteorSwarmRule))]
public sealed partial class MeteorSwarmRuleComponent : Component
{
[DataField("initialCooldown")]
public float Cooldown;
public bool IsEnding = false;
///
/// Send a specific amount of waves of meteors towards the station, rather than a random amount.
///
[DataField("waves")]
public int? WaveCounter = null;
[DataField("minimumWaves")]
public int MinimumWaves = 3;
[DataField("maximumWaves")]
public int MaximumWaves = 8;
[DataField("minimumCooldown")]
public float MinimumCooldown = 10f;
[DataField("maximumCooldown")]
public float MaximumCooldown = 60f;
[DataField("meteorsPerWave")]
public int MeteorsPerWave = 5;
[DataField("meteorVelocity")]
public float MeteorVelocity = 10f;
[DataField("maxAngularVelocity")]
public float MaxAngularVelocity = 2f;
[DataField("minAngularVelocity")]
public float MinAngularVelocity = -2f;
///
/// Stagger the spawns a bit, but not too much so they still come in waves
///
[DataField("spawnDistanceVariation")]
public float SpawnDistanceVariation = 50f;
///
/// Percentage of the station area to target. Allow for some near-miss fly-by meteors to jump-scare crew on EVAs.
/// Stations aren't perfect rectangles like the targeting area, so even 1.0 will still have some near-misses.
///
[DataField("targetingSpread")]
public float TargetingSpread = 1.05f;
///
/// How long before a meteor despawns (in case it missed everything).
///
[DataField("meteorLifetime")]
public float MeteorLifetime = 300f;
}