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;
}