using Content.Server.StationEvents.Events; using Content.Shared.Destructible.Thresholds; using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Server.StationEvents.Components; [RegisterComponent, Access(typeof(MeteorSwarmSystem)), AutoGenerateComponentPause] public sealed partial class MeteorSwarmComponent : Component { [DataField, AutoPausedField] public TimeSpan NextWaveTime; /// /// We'll send a specific amount of waves of meteors towards the station per ending rather than using a timer. /// [DataField] public int WaveCounter; [DataField] public float MeteorVelocity = 10f; /// /// If true, meteors will be thrown from all angles instead of from a singular source /// [DataField] public bool NonDirectional; /// /// The announcement played when a meteor swarm begins. /// [DataField] public LocId? Announcement = "station-event-meteor-swarm-start-announcement"; [DataField] public SoundSpecifier? AnnouncementSound = new SoundPathSpecifier("/Audio/Announcements/meteors.ogg") { Params = new() { Volume = -4 } }; /// /// Each meteor entity prototype and their corresponding weight in being picked. /// [DataField] public Dictionary Meteors = new(); [DataField] public MinMax Waves = new(3, 3); [DataField] public MinMax MeteorsPerWave = new(3, 4); [DataField] public MinMax WaveCooldown = new (10, 60); }