using Content.Shared.Database;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
namespace Content.Shared.Botany.Components;
///
/// Component for storing core plant data.
/// Required as a component to store data specific to the plant type that should not be cloned when the plant's mutable state changes.
///
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(fieldDeltas: true)]
public sealed partial class PlantDataComponent : Component
{
///
/// The noun for this type of seeds. E.g. for fungi this should probably be "spores" instead of "seeds". Also
/// used to determine the name of seed packets.
///
[DataField, AutoNetworkedField]
public LocId Noun = "seeds-noun-seeds";
///
/// Name displayed when examining the hydroponics tray. Describes the actual plant, not the seed itself.
///
[DataField(required: true), AutoNetworkedField]
public LocId Name;
///
/// The entity prototype that is spawned when this type of seed is extracted from produce using a seed extractor.
///
[DataField(required: true), AutoNetworkedField]
public EntProtoId PacketPrototype;
///
/// The plant prototypes this plant may mutate into when prompted to.
///
[DataField, AutoNetworkedField]
public List MutationPrototypes = [];
///
/// The entity prototypes that are spawned when this type of seed is harvested.
///
[DataField(required: true), AutoNetworkedField]
public List ProductPrototypes = [];
///
/// Log impact for harvest operations.
///
[DataField, AutoNetworkedField]
public LogImpact? HarvestLogImpact;
///
/// Log impact for plant operations.
///
[DataField, AutoNetworkedField]
public LogImpact? PlantLogImpact;
}