using Content.Shared.Whitelist;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared.Cargo.Prototypes;
///
/// This is a prototype for a cargo bounty, a set of items
/// that must be sold together in a labeled container in order
/// to receive a monetary reward.
///
[Prototype, Serializable, NetSerializable]
public sealed partial class CargoBountyPrototype : IPrototype
{
///
[IdDataField]
public string ID { get; private set; } = default!;
///
/// The monetary reward for completing the bounty
///
[DataField(required: true)]
public int Reward;
///
/// A description for flava purposes.
///
[DataField]
public LocId Description = string.Empty;
///
/// The entries that must be satisfied for the cargo bounty to be complete.
///
[DataField(required: true)]
public List Entries = new();
///
/// A prefix appended to the beginning of a bounty's ID.
///
[DataField]
public string IdPrefix = "NT";
}
[DataDefinition, Serializable, NetSerializable]
public readonly partial record struct CargoBountyItemEntry()
{
///
/// A whitelist for determining what items satisfy the entry.
///
[DataField(required: true)]
public EntityWhitelist Whitelist { get; init; } = default!;
///
/// A blacklist that can be used to exclude items in the whitelist.
///
[DataField]
public EntityWhitelist? Blacklist { get; init; } = null;
// todo: implement some kind of simple generic condition system
///
/// How much of the item must be present to satisfy the entry
///
[DataField]
public int Amount { get; init; } = 1;
///
/// A player-facing name for the item.
///
[DataField]
public LocId Name { get; init; } = string.Empty;
}