using JetBrains.Annotations; using Robust.Shared.Audio; namespace Content.Server.GameTicking.Rules.Configurations; /// /// Defines a configuration for a given station event game rule, since all station events are just /// game rules. /// [UsedImplicitly] public class StationEventRuleConfiguration : GameRuleConfiguration { [DataField("id", required: true)] private string _id = default!; public override string Id => _id; public const float WeightVeryLow = 0.0f; public const float WeightLow = 5.0f; public const float WeightNormal = 10.0f; public const float WeightHigh = 15.0f; public const float WeightVeryHigh = 20.0f; [DataField("weight")] public float Weight = WeightNormal; [DataField("startAnnouncement")] public string? StartAnnouncement; [DataField("endAnnouncement")] public string? EndAnnouncement; [DataField("startAudio")] public SoundSpecifier? StartAudio; [DataField("endAudio")] public SoundSpecifier? EndAudio; /// /// In minutes, when is the first round time this event can start /// [DataField("earliestStart")] public int EarliestStart = 5; /// /// In minutes, the amount of time before the same event can occur again /// [DataField("reoccurrenceDelay")] public int ReoccurrenceDelay = 30; /// /// When in the lifetime to start the event. /// [DataField("startAfter")] public float StartAfter; /// /// When in the lifetime to end the event.. /// [DataField("endAfter")] public float EndAfter = float.MaxValue; /// /// How many players need to be present on station for the event to run /// /// /// To avoid running deadly events with low-pop /// [DataField("minimumPlayers")] public int MinimumPlayers; /// /// How many times this even can occur in a single round /// [DataField("maxOccurrences")] public int? MaxOccurrences; }