From a040f93ced912c21da9577bc9301d43bbf1fb406 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 10 Apr 2025 18:00:21 +0300 Subject: [PATCH] More Gun Reworks: Manual Action Edition (#2165) # Description This PR is yet another step on an ongoing set of refactors for guns. This restores the functionality for weapons to operate as "Manually Cycled", IE: Bolt Action or Pump Action. I've also fixed some older bugs related to firearms, such as manually loading cartridges not updating the ammo display, and manually cycling the gun not ejecting the cartridge. And even further, fixing instances where guns would fail to correctly eject cartridges using ejection force variables set by the gun itself. There's also some other small balancing changes to other guns that make use of the DamageModifier datafield added in my previous rework. Namely the Cobra and Mosin both use this datafield now. The .25 cartridge has had its damage reduced to 15 per shot(from 19), so that it is properly smaller than the .35 cartridge. This is largely to address issues of the FPA-90 and R25 rifles being kinda overpowered in their damage output. To keep this nerf from affecting the Cobra however, the Cobra has picked up an innate damage modifier that restores it to the original damage output. The Mosin's been rebalanced around its hunting rifle powerhouse aesthetic, it has a beefy damage modifier that brings it up to 42 damage per shot. This is acting as a fun tradeoff for it having only a 5 round internal magazine, and being changed to a bolt action weapon. It's still insanely cheap, to a point a traitor or a head revolutionary can afford 40 of them. This 42 damage calculation is specifically set such that you can consistently drop "wound into crit" unarmored crew in 2 shots (84+ HEAVY bleed will drop them consistently), while shooting security requires the full 5 rounds. The general gist of what these bolt action guns is that they'll typically have better characteristics for "Single source damage" than their non-bolt action counterparts. While for Shotguns, we can now make shotguns follow various common shotgun tropes that players expect from video games, such as the "Super shotgun" that obliterates anything at pointblank, or the "Street sweeper" that trades some of its accuracy for extra room coverage. Or the "hunting shotgun" that beats all of them at midrange.

Media

https://github.com/user-attachments/assets/00ae2b34-f3f2-4fd9-adad-7147507a6c31

# Changelog :cl: - add: Added "Bolt Action" or "Pump Action" gun options. - add: Added new sound fx for shotshells when landing on the ground or colliding with objects after being thrown. - tweak: Kammerer and Enforcer are now pump action shotguns, featuring a choke that gives them 50% tighter spreads in return for needing to be pumped (press Z) after each shot. - tweak: Mosin Nagant is now a proper bolt action rifle. The bolt must be worked manually (press Z) after each shot. The fun tradeoff is that it now hits like a truck with 42 damage a shot. - tweak: Bulldog shotgun now has a wide choke, it fires 33% more projectiles per shotshell, while also having a 50% wider spread. Cover the station hallways in lead. Pairs nicely with birdshot if you really want to sweep rooms. - tweak: R25 and FPA-90 both now deal 15 damage per shot, instead of 19. - fix: Fixed guns not correctly ejecting cartridges(they were instead dropping them at your feet). - fix: Fixed guns not updating the ammo counter UI when loaded manually. (cherry picked from commit a86362b8ad712678f1316e2cd55f5e888736f718) --- .../Ranged/Systems/GunSystem.Ballistic.cs | 2 +- .../Ranged/Systems/GunSystem.Ballistic.cs | 9 +- .../BallisticAmmoProviderComponent.cs | 12 ++ .../Weapons/Ranged/Components/GunComponent.cs | 5 +- .../Systems/SharedGunSystem.Ballistic.cs | 105 ++++++++++-------- .../Weapons/Ranged/Systems/SharedGunSystem.cs | 38 +++---- .../_EE/Weapons/Guns/Casings/attributions.yml | 7 ++ .../Weapons/Guns/Casings/shotgun_shell1.ogg | Bin 0 -> 18603 bytes .../Weapons/Guns/Casings/shotgun_shell2.ogg | Bin 0 -> 17575 bytes .../Weapons/Guns/Casings/shotgun_shell3.ogg | Bin 0 -> 19747 bytes .../extenddescriptions/descriptions.ftl | 1 + .../Catalog/Fills/Backpacks/duffelbag.yml | 2 +- .../Guns/Ammunition/Cartridges/shotgun.yml | 10 ++ .../Ammunition/Projectiles/caseless_rifle.yml | 10 +- .../Guns/Ammunition/sound_collections.yml | 9 +- .../Weapons/Guns/Launchers/launchers.yml | 1 + .../Objects/Weapons/Guns/Pistols/pistols.yml | 1 + .../Weapons/Guns/Shotguns/shotguns.yml | 8 +- 18 files changed, 138 insertions(+), 82 deletions(-) create mode 100644 Resources/Audio/_EE/Weapons/Guns/Casings/attributions.yml create mode 100644 Resources/Audio/_EE/Weapons/Guns/Casings/shotgun_shell1.ogg create mode 100644 Resources/Audio/_EE/Weapons/Guns/Casings/shotgun_shell2.ogg create mode 100644 Resources/Audio/_EE/Weapons/Guns/Casings/shotgun_shell3.ogg diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs index 4f956d60b3..202a3fd791 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs @@ -20,7 +20,7 @@ public sealed partial class GunSystem } } - protected override void Cycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates) + protected override void Cycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates, GunComponent? gunComponent) { if (!Timing.IsFirstTimePredicted) return; diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs index ce8126140d..3963b9b41d 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs @@ -1,5 +1,5 @@ using Content.Server.Stack; -using Content.Shared.Hands.EntitySystems; // WWDP +using Content.Shared.Hands.EntitySystems; using Content.Shared.Stacks; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; @@ -12,9 +12,11 @@ public sealed partial class GunSystem [Dependency] private readonly StackSystem _stack = default!; // WD EDIT [Dependency] private readonly SharedHandsSystem _handsSystem = default!; // WWDP - protected override void Cycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates) + protected override void Cycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates, GunComponent? gunComponent) { EntityUid? ent = null; + if (!Resolve(uid, ref gunComponent, false)) + return; // TODO: Combine with TakeAmmo if (component.Entities.Count > 0) @@ -24,6 +26,7 @@ public sealed partial class GunSystem Containers.Remove(existing, component.Container); EnsureShootable(existing); + EjectCartridge(existing, gunComp: gunComponent); } else if (component.UnspawnedCount > 0) { @@ -33,7 +36,7 @@ public sealed partial class GunSystem } if (ent != null) - EjectCartridge(ent.Value); + EjectCartridge(ent.Value, gunComp: gunComponent); var cycledEvent = new GunCycledEvent(); RaiseLocalEvent(uid, ref cycledEvent); diff --git a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs index 82a68514ac..fa709cc469 100644 --- a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs @@ -66,4 +66,16 @@ public sealed partial class BallisticAmmoProviderComponent : Component /// [DataField] public TimeSpan FillDelay = TimeSpan.FromSeconds(0.5); + + /// + /// Is ammo ejected after each shot, or not. + /// + [DataField] + public bool AutoCycle = true; + + /// + /// Is the gun ready to shoot; if AutoCycle is true then this will always stay true and not need to be manually done. + /// + [DataField, AutoNetworkedField] + public bool Cycled = true; } diff --git a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs index b5bc29b526..43d2f8798b 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs @@ -351,7 +351,10 @@ public sealed partial class GunComponent : Component public float EjectionForce = 0.04f; [DataField] - public float EjectionSpeed = 5f; + public float EjectionSpeed = 20f; + + [DataField] + public float EjectAngleOffset = 3.7f; // WD EDIT START [DataField] diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index 42d0c6737a..dd06bab3b7 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -31,6 +31,7 @@ public abstract partial class SharedGunSystem SubscribeLocalEvent(OnBallisticAmmoCount); SubscribeLocalEvent(OnBallisticExamine); + SubscribeLocalEvent>(OnBallisticVerb); SubscribeLocalEvent>(AddInteractionVerb); // WWDP SubscribeLocalEvent>(AddAlternativeVerb); // WWDP SubscribeLocalEvent(OnBallisticInteractUsing); @@ -50,7 +51,9 @@ public abstract partial class SharedGunSystem private void OnBallisticInteractUsing(EntityUid uid, BallisticAmmoProviderComponent component, InteractUsingEvent args) { - if (args.Handled) + if (args.Handled + || _whitelistSystem.IsWhitelistFailOrNull(component.Whitelist, args.Used) + || GetBallisticShots(component) >= component.Capacity) return; if (_whitelistSystem.IsWhitelistFailOrNull(component.Whitelist, args.Used)) @@ -82,23 +85,20 @@ public abstract partial class SharedGunSystem // Not predicted so Audio.PlayPredicted(component.SoundInsert, uid, args.User); args.Handled = true; + component.Cycled = true; + UpdateAmmoCount(uid); UpdateBallisticAppearance(uid, component); Dirty(uid, component); } private void OnBallisticAfterInteract(EntityUid uid, BallisticAmmoProviderComponent component, AfterInteractEvent args) { - if (args.Handled || - !component.MayTransfer || - !Timing.IsFirstTimePredicted || - args.Target == null || - args.Used == args.Target || - Deleted(args.Target) || - !TryComp(args.Target, out var targetComponent) || - targetComponent.Whitelist == null) - { + if (args.Handled || !component.MayTransfer || !Timing.IsFirstTimePredicted + || args.Target is null || args.Used == args.Target + || Deleted(args.Target) + || !TryComp(args.Target, out BallisticAmmoProviderComponent? targetComponent) + || targetComponent.Whitelist is null) return; - } args.Handled = true; @@ -115,9 +115,9 @@ public abstract partial class SharedGunSystem if (args.Handled || args.Cancelled) // WWDP return; - if (Deleted(args.Target) || - !TryComp(args.Target, out var target) || - target.Whitelist == null) + if (Deleted(args.Target) + || !TryComp(args.Target, out BallisticAmmoProviderComponent? target) + || target.Whitelist is null) return; if (target.Entities.Count + target.UnspawnedCount == target.Capacity) @@ -171,6 +171,7 @@ public abstract partial class SharedGunSystem // play sound to be cool Audio.PlayPredicted(component.SoundInsert, uid, args.User); SimulateInsertAmmo(ent.Value, args.Target.Value, Transform(args.Target.Value).Coordinates); + component.Cycled = true; // Make sure when loading shells in shotguns, that the first round is chambered. } if (IsClientSide(ent.Value)) @@ -215,6 +216,19 @@ public abstract partial class SharedGunSystem } // WWDP edit end + private void OnBallisticVerb(EntityUid uid, BallisticAmmoProviderComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null || !component.Cycleable) + return; + + args.Verbs.Add(new Verb() + { + Text = Loc.GetString("gun-ballistic-cycle"), + Disabled = GetBallisticShots(component) == 0, + Act = () => ManualCycle(uid, component, TransformSystem.GetMapCoordinates(uid), args.User), + }); + } + private void OnBallisticExamine(EntityUid uid, BallisticAmmoProviderComponent component, ExaminedEvent args) { if (!args.IsInDetailsRange) @@ -297,18 +311,18 @@ public abstract partial class SharedGunSystem return; // Reset shotting for cycling - if (Resolve(uid, ref gunComp, false) && - gunComp is { FireRateModified: > 0f } && - !Paused(uid)) - { + if (Resolve(uid, ref gunComp, false) + && gunComp is { FireRateModified: > 0f } + && !Paused(uid)) gunComp.NextFire = Timing.CurTime + TimeSpan.FromSeconds(1 / gunComp.FireRateModified); - } + Dirty(uid, component); Audio.PlayPredicted(component.SoundRack, uid, user); var shots = GetBallisticShots(component); - Cycle(uid, component, coordinates); + component.Cycled = true; + Cycle(uid, component, coordinates, gunComp); var text = Loc.GetString(shots == 0 ? "gun-ballistic-cycled-empty" : "gun-ballistic-cycled"); @@ -319,7 +333,7 @@ public abstract partial class SharedGunSystem UpdateAmmoCount(uid); } - protected abstract void Cycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates); + protected abstract void Cycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates, GunComponent? gunComponent = null); private void OnBallisticInit(EntityUid uid, BallisticAmmoProviderComponent component, ComponentInit args) { @@ -341,15 +355,15 @@ public abstract partial class SharedGunSystem } } - protected int GetBallisticShots(BallisticAmmoProviderComponent component) - { - return component.Entities.Count + component.UnspawnedCount; - } + protected int GetBallisticShots(BallisticAmmoProviderComponent component) => component.Entities.Count + component.UnspawnedCount; private void OnBallisticTakeAmmo(EntityUid uid, BallisticAmmoProviderComponent component, TakeAmmoEvent args) { for (var i = 0; i < args.Shots; i++) { + if (!component.Cycled) + break; + EntityUid entity; if (component.Entities.Count > 0) @@ -358,24 +372,24 @@ public abstract partial class SharedGunSystem args.Ammo.Add((entity, EnsureShootable(entity))); - if (component.AutoCycle) // WD EDIT - { - component.Entities.RemoveAt(component.Entities.Count - 1); - Containers.Remove(entity, component.Container); - } // WWDP edit; support internal caseless ammo in hand-cycled guns - else if (TryComp(entity, out var cartridge) && cartridge.DeleteOnSpawn) + if (TryComp(entity, out var cartridge) && cartridge.DeleteOnSpawn) { component.Entities.RemoveAt(component.Entities.Count - 1); Containers.Remove(entity, component.Container); component.Racked = false; break; - } // WWDP edit end - else + } + // WWDP edit end + + // if entity in container it can't be ejected, so shell will remain in gun and block next shoot + if (!component.AutoCycle) { component.Racked = false; // WWDP break; } + component.Entities.RemoveAt(component.Entities.Count - 1); + Containers.Remove(entity, component.Container); } else if (component.UnspawnedCount > 0) { @@ -383,19 +397,22 @@ public abstract partial class SharedGunSystem entity = Spawn(component.Proto, args.Coordinates); args.Ammo.Add((entity, EnsureShootable(entity))); - // WD EDIT START - if (!component.AutoCycle && TryComp(entity, out var cartridge)) + // Put it back in if it doesn't auto-cycle + if (Timing.IsFirstTimePredicted && TryComp(entity, out var cartridge) && !component.AutoCycle) // WD EDIT { + // WD EDIT START component.Racked = false; - if (!cartridge.DeleteOnSpawn) - { - component.Entities.Add(entity); - Containers.Insert(entity, component.Container); - } - break; + if (cartridge.DeleteOnSpawn) + break; + // WD EDIT END + + component.Entities.Add(entity); + Containers.Insert(entity, component.Container); } - // WD EDIT END } + + if (!component.AutoCycle) + component.Cycled = false; } UpdateBallisticAppearance(uid, component); @@ -445,6 +462,4 @@ public abstract partial class SharedGunSystem /// DoAfter event for filling one ballistic ammo provider from another. /// [Serializable, NetSerializable] -public sealed partial class AmmoFillDoAfterEvent : SimpleDoAfterEvent -{ -} +public sealed partial class AmmoFillDoAfterEvent : SimpleDoAfterEvent { } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index d3caa46dec..68b8ea31bb 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -540,10 +540,12 @@ public abstract partial class SharedGunSystem : EntitySystem { var throwingForce = 0.01f; var throwingSpeed = 5f; + var ejectAngleOffset = 3.7f; if (gunComp is not null) { throwingForce = gunComp.EjectionForce; throwingSpeed = gunComp.EjectionSpeed; + ejectAngleOffset = gunComp.EjectAngleOffset; } // TODO: Sound limit version. @@ -555,15 +557,14 @@ public abstract partial class SharedGunSystem : EntitySystem TransformSystem.SetLocalRotation(entity, Random.NextAngle(), xform); TransformSystem.SetCoordinates(entity, xform, coordinates); + if (angle is null) + angle = Random.NextAngle(); - // decides direction the casing ejects and only when not cycling - if (angle != null) - { - Angle ejectAngle = angle.Value; - ejectAngle += 3.7f; // 212 degrees; casings should eject slightly to the right and behind of a gun - ThrowingSystem.TryThrow(entity, ejectAngle.ToVec().Normalized() * throwingForce, throwingSpeed); - } - if (playSound && TryComp(entity, out var cartridge)) + Angle ejectAngle = angle.Value; + ejectAngle += ejectAngleOffset; // 212 degrees; casings should eject slightly to the right and behind of a gun + ThrowingSystem.TryThrow(entity, ejectAngle.ToVec().Normalized() * throwingForce, throwingSpeed); + + if (playSound && TryComp(entity, out CartridgeAmmoComponent? cartridge)) { Audio.PlayPvs(cartridge.EjectSound, entity, AudioParams.Default.WithVariation(SharedContentAudioSystem.DefaultVariation).WithVolume(-1f)); } @@ -662,25 +663,14 @@ public abstract partial class SharedGunSystem : EntitySystem Dirty(projectile, targeted); } - public void SetFireRate(GunComponent component, float fireRate) // Goobstation - { - component.FireRate = fireRate; - } + public void SetFireRate(GunComponent component, float fireRate) => component.FireRate = fireRate; - public void SetUseKey(GunComponent component, bool useKey) // Goobstation - { - component.UseKey = useKey; - } + public void SetUseKey(GunComponent component, bool useKey) => component.UseKey = useKey; - public void SetSoundGunshot(GunComponent component, SoundSpecifier? sound) // Goobstation - { - component.SoundGunshot = sound; - } + public void SetSoundGunshot(GunComponent component, SoundSpecifier? sound) => component.SoundGunshot = sound; + + public void SetClumsyProof(GunComponent component, bool clumsyProof) => component.ClumsyProof = clumsyProof; - public void SetClumsyProof(GunComponent component, bool clumsyProof) // Goobstation - { - component.ClumsyProof = clumsyProof; - } protected abstract void CreateEffect(EntityUid gunUid, MuzzleFlashEvent message, EntityUid? user = null); /// diff --git a/Resources/Audio/_EE/Weapons/Guns/Casings/attributions.yml b/Resources/Audio/_EE/Weapons/Guns/Casings/attributions.yml new file mode 100644 index 0000000000..d2ae18893e --- /dev/null +++ b/Resources/Audio/_EE/Weapons/Guns/Casings/attributions.yml @@ -0,0 +1,7 @@ +- files: + - "shotgun_shell1" + - "shotgun_shell2" + - "shotgun_shell3" + license: "Custom" + copyright: "Valve Software, Non-Commercial Steam Subscriber Agreement" + source: "https://store.steampowered.com/app/220/HalfLife_2/" diff --git a/Resources/Audio/_EE/Weapons/Guns/Casings/shotgun_shell1.ogg b/Resources/Audio/_EE/Weapons/Guns/Casings/shotgun_shell1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..242291f262d59f8281b93fd80d42496247e1df21 GIT binary patch literal 18603 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/_EE/Weapons/Guns/Casings/shotgun_shell3.ogg b/Resources/Audio/_EE/Weapons/Guns/Casings/shotgun_shell3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bc0a139630ec134c8fed1bba507e4af0b16a0c60 GIT binary patch literal 19747 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 literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/weapons/extenddescriptions/descriptions.ftl b/Resources/Locale/en-US/weapons/extenddescriptions/descriptions.ftl index c40439dbe6..d6c87b4858 100644 --- a/Resources/Locale/en-US/weapons/extenddescriptions/descriptions.ftl +++ b/Resources/Locale/en-US/weapons/extenddescriptions/descriptions.ftl @@ -3,6 +3,7 @@ gun-legality-salvage = This weapon is licensed for use in planetary expeditions. # Weapon Modifiers gun-suppressed = This weapon comes with a built-in suppressor. It will be impossible to hear at a distance. +gun-modifier-choke = This shotgun comes with a hunting choke. It has a 50% tighter spread when firing shotshells. # Clothing Modifiers helmet-radio = This item includes a built-in radio, activate it to configure its settings. diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 094c05c8ab..48bdbe6721 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -438,7 +438,7 @@ parent: ClothingBackpackDuffelSyndicateBundle id: ClothingBackpackDuffelSyndicateFilledFPA90 name: FPA-90 bundle - description: "A cheap integrally suppressed SMG. Comes bundled with three magazines." + description: "A cheap integrally suppressed SMG. Magazines are sold separately." components: - type: StorageFill contents: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml index ee228345d3..b2371dacbf 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/shotgun.yml @@ -18,6 +18,16 @@ map: [ "enum.AmmoVisualLayers.Base" ] - type: Appearance - type: SpentAmmoVisuals + - type: EmitSoundOnLand + sound: + collection: ShellLand + params: + volume: -5 + - type: EmitSoundOnCollide + sound: + collection: ShellLand + params: + volume: -5 - type: entity id: ShellShotgunBeanbag diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/caseless_rifle.yml index d8e2952789..39932fba16 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Projectiles/caseless_rifle.yml @@ -7,7 +7,7 @@ - type: Projectile damage: types: - Piercing: 19 + Piercing: 15 - type: entity id: BulletCaselessRiflePractice @@ -30,7 +30,7 @@ damage: types: Blunt: 3 - Heat: 16 + Heat: 12 - type: entity id: BulletCaselessRifleUranium @@ -41,8 +41,8 @@ - type: Projectile damage: types: - Radiation: 9 - Piercing: 10 + Radiation: 7 + Piercing: 8 - type: entity id: BulletCaselessRifleShrapnel @@ -53,7 +53,7 @@ - type: Projectile damage: types: - Piercing: 4.37 + Piercing: 3.75 - type: Sprite scale: 0.5, 0.5 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/sound_collections.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/sound_collections.yml index 71123ddb2c..ad2b86b0ce 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/sound_collections.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/sound_collections.yml @@ -10,8 +10,15 @@ files: - "/Audio/Weapons/Guns/Casings/shotgun_fall.ogg" +- type: soundCollection + id: ShellLand + files: + - "/Audio/_EE/Weapons/Guns/Casings/shotgun_shell1.ogg" + - "/Audio/_EE/Weapons/Guns/Casings/shotgun_shell2.ogg" + - "/Audio/_EE/Weapons/Guns/Casings/shotgun_shell3.ogg" + - type: soundCollection id: ToyFall files: - "/Audio/Items/Toys/ToyFall1.ogg" - - "/Audio/Items/Toys/ToyFall2.ogg" \ No newline at end of file + - "/Audio/Items/Toys/ToyFall2.ogg" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index c7dcd35046..ca55b76be7 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -69,6 +69,7 @@ tags: - Grenade capacity: 3 + autoCycle: false proto: GrenadeFrag soundInsert: path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml index 72930c0d67..d4161fedc1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml @@ -194,6 +194,7 @@ - type: ChamberMagazineAmmoProvider boltClosed: null - type: Gun + damageModifier: 1.25 # "Extra Robust" despite having an underpowered cartridge. fireRate: 4 soundGunshot: path: /Audio/Weapons/Guns/Gunshots/silenced.ogg diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml index 94ee3004bc..5db98784ef 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml @@ -284,7 +284,7 @@ - 0,0,7,0 sprite: Objects/Weapons/Guns/Shotguns/enforcer_inhands_64x.rsi - type: BallisticAmmoProvider - autoCycle: true # WWDP semi-auto + capacity: 7 - type: Wieldable - type: MeleeWeapon attackRate: 1.4 @@ -327,6 +327,12 @@ - type: Wieldable - type: Gun shotgunSpreadMultiplier: 0.5 + - type: ExtendDescription + descriptionList: + - description: "gun-modifier-choke" + fontSize: 12 + color: "#ff4f00" + requireDetailRange: false - type: entity name: sawn-off shotgun