using Content.Shared.DoAfter; // Frontier: Upstream, #30704 - MIT
using Content.Shared.FixedPoint;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization;
using Robust.Shared.Audio;
namespace Content.Shared.Chemistry.Components;
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class HyposprayComponent : Component
{
[DataField]
public string SolutionName = "hypospray";
[DataField]
[ViewVariables(VVAccess.ReadWrite)]
public FixedPoint2 TransferAmount = FixedPoint2.New(5);
[DataField]
public SoundSpecifier InjectSound = new SoundPathSpecifier("/Audio/Items/hypospray.ogg");
///
/// Decides whether you can inject everything or just mobs.
///
[AutoNetworkedField]
[DataField(required: true)]
public bool OnlyAffectsMobs = false;
///
/// If this can draw from containers in mob-only mode.
///
[AutoNetworkedField]
[DataField]
public bool CanContainerDraw = true;
///
/// Whether or not the hypospray is able to draw from containers or if it's a single use
/// device that can only inject.
///
[DataField]
public bool InjectOnly = false;
// Frontier: Upstream, #30704 - MIT
///
/// If set over 0, enables a doafter for the hypospray which must be completed for injection.
///
[DataField]
public float DoAfterTime = 0f;
// End Frontier
///
/// Frontier: if true, object will not inject when attacking.
///
[DataField]
public bool PreventCombatInjection;
}
// Frontier: Upstream, #30704 - MIT
[Serializable, NetSerializable]
public sealed partial class HyposprayDoAfterEvent : SimpleDoAfterEvent
{
}
// End Frontier