using Content.Shared.Botany.Systems;
using Robust.Shared.GameStates;
namespace Content.Shared.Botany.Components;
///
/// Component for storing plant growth data.
///
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(fieldDeltas: true, raiseAfterAutoHandleState: true)]
[Access(typeof(PlantSystem), typeof(PlantMutationSystem))]
public sealed partial class PlantComponent : Component
{
///
/// The mutation effects that have been applied to this plant.
/// Server-only: mutations are applied as effects which are synced separately.
///
[DataField]
public List Mutations = [];
///
/// The plant's max health.
///
[DataField, AutoNetworkedField]
public float Endurance = 100f;
///
/// How many produce are created on harvest.
///
[DataField, AutoNetworkedField]
public int Yield;
///
/// The number of growth ticks this plant can be alive for. Plants take high damage levels when Age > Lifespan.
///
[DataField, AutoNetworkedField]
public float Lifespan;
///
/// Damage from old age.
///
[DataField, AutoNetworkedField]
public float OldAgeDamage = 4f;
///
/// The number of growth ticks it takes for a plant to reach its final growth stage.
///
[DataField, AutoNetworkedField]
public float Maturation;
///
/// The number of growth ticks it takes for a plant to be (re-)harvestable.
///
[DataField, AutoNetworkedField]
public float Production;
///
/// How many different sprites appear before the plant is fully grown.
///
[DataField, AutoNetworkedField]
public int GrowthStages = 6;
///
/// A scalar for sprite size and chemical solution volume in the produce. Caps at 100.
///
[DataField, AutoNetworkedField]
public float Potency = 1f;
}