using System.Threading; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; using Robust.Shared.GameObjects; using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.ViewVariables; namespace Content.Server.Medical.Components { /// /// Applies a damage change to the target when used in an interaction. /// [RegisterComponent] public sealed class HealingComponent : Component { [DataField("damage", required: true)] [ViewVariables(VVAccess.ReadWrite)] public DamageSpecifier Damage = default!; /// /// This should generally be negative, /// since you're, like, trying to heal damage. /// [DataField("bloodlossModifier")] [ViewVariables(VVAccess.ReadWrite)] public float BloodlossModifier = 0.0f; /// /// The supported damage types are specified using a s. For a /// HealingComponent this filters what damage container type this component should work on. If null, /// all damage container types are supported. /// [DataField("damageContainer", customTypeSerializer: typeof(PrototypeIdSerializer))] public string? DamageContainerID; /// /// How long it takes to apply the damage. /// [ViewVariables(VVAccess.ReadWrite)] [DataField("delay")] public float Delay = 3f; public CancellationTokenSource? CancelToken = null; } }