6
2025-08-05 10:00:54 +03:00

86 lines
2.4 KiB
C#

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