using Content.Shared.Damage;
using Content.Shared.Physics;
using Content.Shared.Weapons.Reflect;
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
namespace Content.Shared.Weapons.Ranged;
[Prototype]
public sealed partial class HitscanPrototype : IPrototype, IShootable
{
[ViewVariables]
[IdDataField]
public string ID { get; private set; } = default!;
[ViewVariables(VVAccess.ReadWrite), DataField("staminaDamage")]
public float StaminaDamage;
[ViewVariables(VVAccess.ReadWrite), DataField("damage")]
public DamageSpecifier? Damage;
[ViewVariables(VVAccess.ReadOnly), DataField("muzzleFlash")]
public SpriteSpecifier? MuzzleFlash;
[ViewVariables(VVAccess.ReadOnly), DataField("travelFlash")]
public SpriteSpecifier? TravelFlash;
[ViewVariables(VVAccess.ReadOnly), DataField("impactFlash")]
public SpriteSpecifier? ImpactFlash;
[DataField("collisionMask")]
public int CollisionMask = (int) CollisionGroup.Opaque;
///
/// What we count as for reflection.
///
[DataField("reflective")] public ReflectType Reflective = ReflectType.Energy;
///
/// Sound that plays upon the thing being hit.
///
[DataField("sound")]
public SoundSpecifier? Sound;
///
/// Force the hitscan sound to play rather than potentially playing the entity's sound.
///
[ViewVariables(VVAccess.ReadWrite), DataField("forceSound")]
public bool ForceSound;
///
/// Try not to set this too high.
///
[DataField("maxLength")]
public float MaxLength = 20f;
}