using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Utility; namespace Content.Server._NF.Smuggling.Components; /// /// Store all bounty contracts information. /// [RegisterComponent] [Access(typeof(DeadDropSystem))] public sealed partial class DeadDropComponent : Component { /// /// The name for the deaddrop pod /// [DataField] public LocId Name = "deaddrop-shuttle-name"; /// /// When the next drop will occur. Used internally. /// [DataField, ViewVariables(VVAccess.ReadOnly)] public TimeSpan? NextDrop; /// /// A non-nullable proxy to overwrite NextDrop /// [ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextDropVV { get { return NextDrop ?? TimeSpan.Zero; } set { NextDrop = value; } } /// /// Minimum wait time in seconds to wait for the next dead drop. /// [DataField] //Use 10 seconds for testing public int MinimumCoolDown = 900; // 900 / 60 = 15 minutes /// /// Max wait time in seconds to wait for the next dead drop. /// [DataField] //Use 15 seconds for testing public int MaximumCoolDown = 5400; // 5400 / 60 = 90 minutes /// /// Minimum distance to spawn the drop. /// [DataField] public int MinimumDistance = 4500; /// /// Max distance to spawn the drop. /// [DataField] public int MaximumDistance = 6500; /// /// The paper prototype to spawn. /// [DataField(customTypeSerializer: typeof(PrototypeIdSerializer))] public string HintPaper = "PaperCargoInvoice"; /// /// Whether or not a drop pod has been called for this dead drop. /// [DataField] public bool DeadDropCalled = false; /// /// Location of the grid to spawn in as the dead drop. /// [DataField] public ResPath DropGrid = new("/Maps/_NF/DeadDrop/deaddrop.yml"); /// /// The color of your grid. the name should be set by the mapper when mapping. /// [DataField] public Color Color = new(225, 15, 155); }