using Content.Shared.Dataset; using Content.Server.StationEvents.Events; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.Utility; namespace Content.Server.StationEvents.Components; /// /// Makes a GALPOL announcement and creates a report some time after an antag spawns. /// Removed after this is done. /// [RegisterComponent, Access(typeof(FugitiveRule))] [AutoGenerateComponentPause] public sealed partial class FugitiveRuleComponent : Component { [DataField] public LocId Announcement = "station-event-fugitive-hunt-announcement"; [DataField] public LocId Sender = "fugitive-announcement-GALPOL"; [DataField] public Color Color = Color.Yellow; /// /// Report paper to spawn. Its content is generated from the fugitive. /// [DataField] public EntProtoId ReportPaper = "PaperFugitiveReport"; /// /// How long to wait after the antag spawns before announcing it. /// [DataField] public TimeSpan AnnounceDelay = TimeSpan.FromMinutes(5); /// /// Station to give the report to. /// [DataField] public EntityUid? Station; /// /// The report generated for the spawned fugitive. /// [DataField] public string Report = string.Empty; /// /// When the announcement will be made, if an antag has spawned yet. /// [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField] public TimeSpan? NextAnnounce; /// /// Dataset to pick crimes on the report from. /// [DataField] public ProtoId CrimesDataset = "FugitiveCrimes"; /// /// Max number of unique crimes they can be charged with. /// Does not affect the counts of each crime. /// [DataField] public int MinCrimes = 2; /// /// Min number of unique crimes they can be charged with. /// Does not affect the counts of each crime. /// [DataField] public int MaxCrimes = 7; /// /// Min counts of each crime that can be rolled. /// [DataField] public int MinCounts = 1; /// /// Max counts of each crime that can be rolled. /// [DataField] public int MaxCounts = 4; }