using Content.Shared.Damage; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Projectiles; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class ProjectileComponent : Component { [ViewVariables(VVAccess.ReadWrite), DataField("impactEffect", customTypeSerializer:typeof(PrototypeIdSerializer))] public string? ImpactEffect; /// /// User that shot this projectile. /// [DataField("shooter"), AutoNetworkedField] public EntityUid Shooter; /// /// Weapon used to shoot. /// [DataField("weapon"), AutoNetworkedField] public EntityUid Weapon; [DataField("ignoreShooter"), AutoNetworkedField] public bool IgnoreShooter = true; [DataField("damage", required: true)] [ViewVariables(VVAccess.ReadWrite)] public DamageSpecifier Damage = new(); [DataField("deleteOnCollide")] public bool DeleteOnCollide = true; [DataField("ignoreResistances")] public bool IgnoreResistances = false; // Get that juicy FPS hit sound [DataField("soundHit")] public SoundSpecifier? SoundHit; [DataField("soundForce")] public bool ForceSound = false; public bool DamagedEntity; }