using Robust.Shared.GameObjects; using Robust.Shared.Serialization; using Robust.Shared.Utility; using Robust.Shared.ViewVariables; using YamlDotNet.RepresentationModel; namespace Content.Server.GameObjects.Components.Interactable.Tools { public abstract class ToolComponent : Component { /// /// For tool interactions that have a delay before action this will modify the rate, time to wait is divided by this value /// [ViewVariables(VVAccess.ReadWrite)] public float SpeedModifier { get => _speedModifier; set => _speedModifier = value; } private float _speedModifier = 1; public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); serializer.DataField(ref _speedModifier, "Speed", 1); } /// /// Status modifier which determines whether or not we can act as a tool at this time /// /// public virtual bool CanUse() { return true; } } }