diff --git a/Content.Server/Weapon/Ranged/Systems/GunSystem.cs b/Content.Server/Weapon/Ranged/Systems/GunSystem.cs index 513273effa..551b26fd48 100644 --- a/Content.Server/Weapon/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapon/Ranged/Systems/GunSystem.cs @@ -225,6 +225,9 @@ public sealed partial class GunSystem : SharedGunSystem public void PlayImpactSound(EntityUid otherEntity, DamageSpecifier? modifiedDamage, SoundSpecifier? weaponSound, bool forceWeaponSound) { + if (Deleted(otherEntity)) + return; + // Like projectiles and melee, // 1. Entity specific sound // 2. Ammo's sound @@ -237,24 +240,20 @@ public sealed partial class GunSystem : SharedGunSystem if (type != null && rangedSound.SoundTypes?.TryGetValue(type, out var damageSoundType) == true) { - SoundSystem.Play(damageSoundType!.GetSound(), - Filter.Pvs(otherEntity, entityManager: EntityManager), - otherEntity, AudioHelpers.WithVariation(DamagePitchVariation)); - + Audio.PlayPvs(damageSoundType, otherEntity, AudioParams.Default.WithVariation(DamagePitchVariation)); playedSound = true; } else if (type != null && rangedSound.SoundGroups?.TryGetValue(type, out var damageSoundGroup) == true) { - SoundSystem.Play(damageSoundGroup!.GetSound(), - Filter.Pvs(otherEntity, entityManager: EntityManager), - otherEntity, AudioHelpers.WithVariation(DamagePitchVariation)); - + Audio.PlayPvs(damageSoundGroup, otherEntity, AudioParams.Default.WithVariation(DamagePitchVariation)); playedSound = true; } } if (!playedSound && weaponSound != null) - SoundSystem.Play(weaponSound.GetSound(), Filter.Pvs(otherEntity, entityManager: EntityManager), otherEntity); + { + Audio.PlayPvs(weaponSound, otherEntity); + } } // TODO: Pseudo RNG so the client can predict these. diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 583376562e..1ce1094a73 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -45,6 +45,7 @@ public abstract partial class SharedGunSystem : EntitySystem [Dependency] protected readonly SharedPopupSystem PopupSystem = default!; [Dependency] protected readonly ThrowingSystem ThrowingSystem = default!; [Dependency] protected readonly TagSystem TagSystem = default!; + [Dependency] protected readonly SharedAudioSystem Audio = default!; [Dependency] protected readonly SharedProjectileSystem Projectiles = default!; protected ISawmill Sawmill = default!; diff --git a/Resources/Prototypes/Entities/Debugging/debug_sweps.yml b/Resources/Prototypes/Entities/Debugging/debug_sweps.yml index 4bf01590d3..b0a75851c1 100644 --- a/Resources/Prototypes/Entities/Debugging/debug_sweps.yml +++ b/Resources/Prototypes/Entities/Debugging/debug_sweps.yml @@ -15,11 +15,30 @@ sprite: Objects/Weapons/Guns/Pistols/debug.rsi - type: Gun fireRate: 100 - - type: BallisticAmmoProvider - whitelist: - tags: - - Debug - proto: MagazinePistolDebug + selectedMode: FullAuto + availableModes: + - SemiAuto + - FullAuto + - type: AmmoCounter + - type: ChamberMagazineAmmoProvider + - type: ItemSlots + slots: + gun_magazine: + name: Magazine + startingItem: MagazinePistolDebug + insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg + ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg + priority: 2 + whitelist: + tags: + - Debug + gun_chamber: + name: Chamber + startingItem: CartridgeDebug + priority: 1 + whitelist: + tags: + - CartridgePistol - type: entity id: MagazinePistolDebug