using Content.Shared.Popups; using Content.Shared.Storage; using Content.Shared.Tools.Systems; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared.Tools.Components; /// /// Used for something that can be refined by welder. /// For example, glass shard can be refined to glass sheet. /// [RegisterComponent, NetworkedComponent, Access(typeof(ToolRefinableSystem))] public sealed partial class ToolRefinableComponent : Component { /// /// The items created when the item is refined. /// [DataField(required: true)] public List RefineResult; /// /// The amount of time it takes to refine a given item. /// [DataField] public TimeSpan RefineTime = TimeSpan.FromSeconds(2); /// /// The amount of fuel it takes to refine a given item. /// [DataField] public float RefineFuel = 3f; /// /// The tool type needed in order to refine this item. /// [DataField] public ProtoId QualityNeeded = "Welding"; /// /// Sound that will be played after refine process finished. /// [DataField] public SoundSpecifier? Sound; /// /// Refine verb text. If there is no text, verb will not be added. /// [DataField] public LocId? VerbText; /// /// Icon for refine verb. /// [DataField] public SpriteSpecifier? VerbIcon; /// /// Default tooltip text for refine verb. /// [DataField] public LocId? VerbDefaultTooltip; /// /// Verb tooltip in case currently used tool /// is missing required () quality. /// [DataField] public LocId? ToolMissingQualityTooltip; /// /// Popup text to display for action performer /// on refine action performed (end of DoAfter). /// [DataField] public LocId? PopupForUser; /// /// Popup text to display for players near action performer /// on action performed (end of DoAfter). /// [DataField] public LocId? PopupForOther; /// /// What type of popup should be used for and . /// [DataField] public PopupType PopupType = PopupType.Small; /// /// Text to display on the examine tooltip for a refinable entity. /// This has a `$target` parameter, representing the refinable entity, /// and a `$quality` parameter, representing the name of the tool quality to use. /// [DataField] public LocId? TooltipQualityHint = "tool-refinable-component-hint"; }