using Content.Server._DV.StationEvents.GameRules; namespace Content.Server._DV.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] public int MinimumWaves = 3; [DataField] public int MaximumWaves = 8; [DataField] public float MinimumCooldown = 10f; [DataField] public float MaximumCooldown = 60f; [DataField] public int MeteorsPerWave = 5; [DataField] public float MeteorVelocity = 10f; [DataField] public float MaxAngularVelocity = 2f; [DataField] public float MinAngularVelocity = -2f; /// /// Stagger the spawns a bit, but not too much so they still come in waves /// [DataField] 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] public float TargetingSpread = 1.05f; /// /// How long before a meteor despawns (in case it missed everything). /// [DataField] public float MeteorLifetime = 300f; }