using Content.Shared.Storage;
namespace Content.Server.Medical.BiomassReclaimer
{
[RegisterComponent]
public sealed partial class BiomassReclaimerComponent : Component
{
///
/// This gets set for each mob it processes.
/// When it hits 0, there is a chance for the reclaimer to either spill blood or throw an item.
///
[ViewVariables]
public float RandomMessTimer = 0f;
///
/// The interval for .
///
[ViewVariables(VVAccess.ReadWrite), DataField]
public TimeSpan RandomMessInterval = TimeSpan.FromSeconds(5);
///
/// This gets set for each mob it processes.
/// When it hits 0, spit out biomass.
///
[ViewVariables]
public float ProcessingTimer = default;
///
/// Amount of biomass that the mob being processed will yield.
/// This is calculated from the YieldPerUnitMass.
/// Also stores non-integer leftovers.
///
[ViewVariables]
public float CurrentExpectedYield = 0f;
///
/// The reagent that will be spilled while processing a mob.
///
[ViewVariables]
public string? BloodReagent;
///
/// Entities that can be randomly spawned while processing a mob.
///
public List SpawnedEntities = new();
///
/// How many units of biomass it produces for each unit of mass.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float YieldPerUnitMass = 0.4f;
///
/// How many seconds to take to insert an entity per unit of its mass.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float BaseInsertionDelay = 0.1f;
///
/// How much to multiply biomass yield from botany produce.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float ProduceYieldMultiplier = 0.25f;
///
/// The time it takes to process a mob, per mass.
///
[DataField, ViewVariables(VVAccess.ReadWrite)]
public float ProcessingTimePerUnitMass = 0.5f;
///
/// Will this refuse to gib a living mob?
///
[ViewVariables(VVAccess.ReadWrite), DataField]
public bool SafetyEnabled = true;
}
}