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; }