diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs index d09661b770..4f956d60b3 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.Ballistic.cs @@ -49,4 +49,36 @@ public sealed partial class GunSystem var cycledEvent = new GunCycledEvent(); RaiseLocalEvent(uid, ref cycledEvent); } + + // WWDP extract round + protected override void Extract(EntityUid uid, MapCoordinates coordinates, BallisticAmmoProviderComponent component, + EntityUid user) + { + if (!Timing.IsFirstTimePredicted) + return; + + EntityUid entity; + + if (component.Entities.Count > 0) + { + entity = component.Entities[^1]; + component.Entities.RemoveAt(component.Entities.Count - 1); + EnsureShootable(entity); + } + else if (component.UnspawnedCount > 0) + { + component.UnspawnedCount--; + entity = Spawn(component.Proto, coordinates); + EnsureShootable(entity); + } + else + { + Popup(Loc.GetString("gun-ballistic-empty"), uid, user); + return; + } + + if (IsClientSide(entity)) + Del(entity); + } + // WWDP end } diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs index c75b4e6f82..ce8126140d 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.Ballistic.cs @@ -1,4 +1,5 @@ using Content.Server.Stack; +using Content.Shared.Hands.EntitySystems; // WWDP using Content.Shared.Stacks; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; @@ -9,6 +10,7 @@ namespace Content.Server.Weapons.Ranged.Systems; 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) { @@ -37,6 +39,34 @@ public sealed partial class GunSystem RaiseLocalEvent(uid, ref cycledEvent); } + // WWDP extract round + protected override void Extract(EntityUid uid, MapCoordinates coordinates, BallisticAmmoProviderComponent component, + EntityUid user) + { + EntityUid entity; + + if (component.Entities.Count > 0) + { + entity = component.Entities[^1]; + component.Entities.RemoveAt(component.Entities.Count - 1); + EnsureShootable(entity); + } + else if (component.UnspawnedCount > 0) + { + component.UnspawnedCount--; + entity = Spawn(component.Proto, coordinates); + EnsureShootable(entity); + } + else + { + Popup(Loc.GetString("gun-ballistic-empty"), uid, user); + return; + } + + _handsSystem.PickupOrDrop(user, entity); + } + // WWDP extract round end + // WD EDIT START protected override EntityUid GetStackEntity(EntityUid uid, StackComponent stack) { diff --git a/Content.Shared/CCVar/CCVars.Accessibility.cs b/Content.Shared/CCVar/CCVars.Accessibility.cs index 9a08af59bd..ce2e33a1e3 100644 --- a/Content.Shared/CCVar/CCVars.Accessibility.cs +++ b/Content.Shared/CCVar/CCVars.Accessibility.cs @@ -30,7 +30,7 @@ public sealed partial class CCVars /// Goes from 0 (no recoil at all) to 1 (regular amounts of recoil) /// public static readonly CVarDef ScreenShakeIntensity = - CVarDef.Create("accessibility.screen_shake_intensity", 1f, CVar.CLIENTONLY | CVar.ARCHIVE); + CVarDef.Create("accessibility.screen_shake_intensity", 0.2f, CVar.CLIENTONLY | CVar.ARCHIVE); // WWDP less visual recoil /// /// A generic toggle for various visual effects that are color sensitive. diff --git a/Content.Shared/Examine/ExamineSystemShared.cs b/Content.Shared/Examine/ExamineSystemShared.cs index a1c30a2bd0..db214bd63e 100644 --- a/Content.Shared/Examine/ExamineSystemShared.cs +++ b/Content.Shared/Examine/ExamineSystemShared.cs @@ -267,7 +267,12 @@ namespace Content.Shared.Examine //Add an entity description if one is declared if (!string.IsNullOrEmpty(EntityManager.GetComponent(entity).EntityDescription)) { - message.AddText(EntityManager.GetComponent(entity).EntityDescription); + // WWDP edit + var description = EntityManager.GetComponent(entity).EntityDescription; + var descriptionWrapped = Loc.GetString("examine-entity-description-wrapper", ("description", description)); + + message.AddMarkup(descriptionWrapped); + // WWDP edit end hasDescription = true; } diff --git a/Content.Shared/Rounding/ContentHelpers.cs b/Content.Shared/Rounding/ContentHelpers.cs index 9ecee22998..0c91957620 100644 --- a/Content.Shared/Rounding/ContentHelpers.cs +++ b/Content.Shared/Rounding/ContentHelpers.cs @@ -34,6 +34,13 @@ return 0; } + // WWDP edit; fix partially filled mags + if (levels == 2) + { + return 1; + } + // WWDP edit end + var toOne = actual / max; return (int) Math.Ceiling(toOne * (levels - 2)); } diff --git a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs index cc483ce533..82a68514ac 100644 --- a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs @@ -31,6 +31,8 @@ public sealed partial class BallisticAmmoProviderComponent : Component public Container Container = default!; + public bool Racked = true; // WWDP + // TODO: Make this use stacks when the typeserializer is done. [DataField, AutoNetworkedField] public List Entities = new(); diff --git a/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs b/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs index 1c74cff7fa..c7f5ea2435 100644 --- a/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/ChamberMagazineAmmoProviderComponent.cs @@ -20,6 +20,12 @@ public sealed partial class ChamberMagazineAmmoProviderComponent : MagazineAmmoP [ViewVariables(VVAccess.ReadWrite), DataField("autoCycle"), AutoNetworkedField] public bool AutoCycle = true; + /// + /// WWDP - If true, the gun will lock the bolt open once the mag is empty. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("boltCatch"), AutoNetworkedField] + public bool BoltCatch = true; + /// /// Can the gun be racked, which opens and then instantly closes the bolt to cycle a round. /// diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index 41dd929d99..42d0c6737a 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -1,5 +1,6 @@ using Content.Shared.DoAfter; using Content.Shared.Examine; +using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Stacks; @@ -8,6 +9,7 @@ using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Containers; using Robust.Shared.Map; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Weapons.Ranged.Systems; @@ -15,6 +17,8 @@ namespace Content.Shared.Weapons.Ranged.Systems; public abstract partial class SharedGunSystem { [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; // WWDP + [Dependency] private readonly SharedHandsSystem _handsSystem = default!; // WWDP protected virtual void InitializeBallistic() @@ -27,7 +31,8 @@ public abstract partial class SharedGunSystem SubscribeLocalEvent(OnBallisticAmmoCount); SubscribeLocalEvent(OnBallisticExamine); - SubscribeLocalEvent>(OnBallisticVerb); + SubscribeLocalEvent>(AddInteractionVerb); // WWDP + SubscribeLocalEvent>(AddAlternativeVerb); // WWDP SubscribeLocalEvent(OnBallisticInteractUsing); SubscribeLocalEvent(OnBallisticAfterInteract); SubscribeLocalEvent(OnBallisticAmmoFillDoAfter); @@ -50,9 +55,16 @@ public abstract partial class SharedGunSystem if (_whitelistSystem.IsWhitelistFailOrNull(component.Whitelist, args.Used)) return; + // WWDP EDIT + if (HasComp(args.Used)) // Ammo providers use the doafter + return; if (GetBallisticShots(component) >= component.Capacity) + { + Popup(Loc.GetString("gun-ballistic-full"), uid, args.User); return; + } + // WWDP EDIT END // WD EDIT START var entity = args.Used; @@ -100,6 +112,9 @@ public abstract partial class SharedGunSystem private void OnBallisticAmmoFillDoAfter(EntityUid uid, BallisticAmmoProviderComponent component, AmmoFillDoAfterEvent args) { + if (args.Handled || args.Cancelled) // WWDP + return; + if (Deleted(args.Target) || !TryComp(args.Target, out var target) || target.Whitelist == null) @@ -168,14 +183,14 @@ public abstract partial class SharedGunSystem args.Repeat = moreSpace && moreAmmo; } - private void OnBallisticVerb(EntityUid uid, BallisticAmmoProviderComponent component, GetVerbsEvent args) + private void AddInteractionVerb(EntityUid uid, BallisticAmmoProviderComponent component, GetVerbsEvent args) // WWDP { - if (!args.CanAccess || !args.CanInteract || args.Hands == null || !component.Cycleable) + if (!args.CanAccess || !args.CanInteract || args.Hands == null) // WWDP return; if (component.Cycleable) { - args.Verbs.Add(new Verb() + args.Verbs.Add(new InteractionVerb() // WWDP { Text = Loc.GetString("gun-ballistic-cycle"), Disabled = GetBallisticShots(component) == 0, @@ -185,14 +200,97 @@ public abstract partial class SharedGunSystem } } + // WWDP edit alt-verb to extract ammunition + private void AddAlternativeVerb(EntityUid uid, BallisticAmmoProviderComponent component, GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null) + return; + + args.Verbs.Add(new AlternativeVerb() + { + Text = Loc.GetString("gun-ballistic-extract"), + Disabled = GetBallisticShots(component) == 0, + Act = () => ExtractAction(uid, Transform(uid).MapPosition, component, args.User), + }); + } + // WWDP edit end + private void OnBallisticExamine(EntityUid uid, BallisticAmmoProviderComponent component, ExaminedEvent args) { if (!args.IsInDetailsRange) return; - args.PushMarkup(Loc.GetString("gun-magazine-examine", ("color", AmmoExamineColor), ("count", GetBallisticShots(component)))); + // WWDP edit; better examine, no ammo count on guns + + if (!HasComp(uid)) // Magazines & Ammo boxes + { + args.PushMarkup(Loc.GetString("gun-ammocount-examine", ("color", AmmoExamineColor), ("count", GetBallisticShots(component)))); + + // Show top round + if (component.Entities.Count > 0) + { + var round = Name(component.Entities[-1]); + + args.PushMarkup( + Loc.GetString("ammo-top-round-examine", ("color", ModeExamineColor), ("round", round))); + } + else if (component.UnspawnedCount > 0) + { + if (!_proto.TryIndex(component.Proto, out var round)) + return; + + args.PushMarkup( + Loc.GetString("ammo-top-round-examine", ("color", ModeExamineColor), ("round", round.Name))); + } + + return; + } + + if (component.Entities.Count > 0 && TryComp(component.Entities[^1], out var cartridgeMetaData)) + { + args.PushMarkup(Loc.GetString("gun-chamber-examine", ("color", ModeExamineColor), + ("cartridge", cartridgeMetaData.EntityName)), -1); + } + else if (component.UnspawnedCount > 0 && component.Proto != null) + { + var cartridge = _proto.Index(component.Proto); + args.PushMarkup(Loc.GetString("gun-chamber-examine", ("color", ModeExamineColor), + ("cartridge", cartridge.Name)), -1); + } + else + { + args.PushMarkup(Loc.GetString("gun-chamber-examine-empty", ("color", ModeExamineBadColor)), -1); + } + + if (!component.AutoCycle) + { + if (component.Racked) + { + args.PushMarkup(Loc.GetString("gun-racked-examine", ("color", ModeExamineColor)), -1); + } + else + { + args.PushMarkup(Loc.GetString("gun-racked-examine-not", ("color", ModeExamineBadColor)), -1); + } + } + + // WWDP edit end } + // WWDP manual ammo extraction + private void ExtractAction(EntityUid uid, MapCoordinates coordinates, BallisticAmmoProviderComponent component, EntityUid user) + { + Extract(uid, coordinates, component, user); + + Audio.PlayPredicted(component.SoundInsert, uid, user); + UpdateBallisticAppearance(uid, component); + UpdateAmmoCount(uid); + } + // WWDP edit end + + protected abstract void Extract(EntityUid uid, MapCoordinates coordinates, BallisticAmmoProviderComponent component, + EntityUid user); // WWDP + private void ManualCycle(EntityUid uid, BallisticAmmoProviderComponent component, MapCoordinates coordinates, EntityUid? user = null, GunComponent? gunComp = null) { if (!component.Cycleable) @@ -214,6 +312,8 @@ public abstract partial class SharedGunSystem var text = Loc.GetString(shots == 0 ? "gun-ballistic-cycled-empty" : "gun-ballistic-cycled"); + component.Racked = true; // WWDP + Popup(text, uid, user); UpdateBallisticAppearance(uid, component); UpdateAmmoCount(uid); @@ -263,8 +363,19 @@ public abstract partial class SharedGunSystem component.Entities.RemoveAt(component.Entities.Count - 1); Containers.Remove(entity, component.Container); } - else + // WWDP edit; support internal caseless ammo in hand-cycled guns + else 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 + { + component.Racked = false; // WWDP + break; + } } else if (component.UnspawnedCount > 0) { @@ -273,10 +384,14 @@ public abstract partial class SharedGunSystem args.Ammo.Add((entity, EnsureShootable(entity))); // WD EDIT START - if (!component.AutoCycle && HasComp(entity)) + if (!component.AutoCycle && TryComp(entity, out var cartridge)) { - component.Entities.Add(entity); - Containers.Insert(entity, component.Container); + component.Racked = false; + if (!cartridge.DeleteOnSpawn) + { + component.Entities.Add(entity); + Containers.Insert(entity, component.Container); + } break; } // WD EDIT END diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs index 3060e2c1a9..ab88dd8126 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs @@ -27,7 +27,7 @@ public abstract partial class SharedGunSystem SubscribeLocalEvent>(OnChamberActivationVerb); SubscribeLocalEvent>(OnChamberInteractionVerb); - SubscribeLocalEvent>(OnMagazineVerb); + // SubscribeLocalEvent>(OnMagazineVerb); // WWDP no duplicate verbs SubscribeLocalEvent(OnChamberActivate); SubscribeLocalEvent(OnChamberUse); @@ -276,7 +276,6 @@ public abstract partial class SharedGunSystem if (!args.IsInDetailsRange) return; - var (count, _) = GetChamberMagazineCountCapacity(uid, component); string boltState; using (args.PushGroup(nameof(ChamberMagazineAmmoProviderComponent))) @@ -288,10 +287,28 @@ public abstract partial class SharedGunSystem else boltState = Loc.GetString("gun-chamber-bolt-closed-state"); args.PushMarkup(Loc.GetString("gun-chamber-bolt", ("bolt", boltState), - ("color", component.BoltClosed.Value ? Color.FromHex("#94e1f2") : Color.FromHex("#f29d94")))); + ("color", component.BoltClosed.Value ? ModeExamineColor : ModeExamineBadColor))); // WWDP } - args.PushMarkup(Loc.GetString("gun-magazine-examine", ("color", AmmoExamineColor), ("count", count))); + // WWDP examine: show bolt state, chamber & magazine + + var cartridge = _slots.GetItemOrNull(uid, "gun_chamber"); + var magazine = _slots.GetItemOrNull(uid, "gun_magazine"); + + if (cartridge != null && TryComp(cartridge, out var cartridgeMetaData)) + { + args.PushMarkup(Loc.GetString("gun-chamber-examine", ("color", ModeExamineColor), + ("cartridge", cartridgeMetaData.EntityName)), -1); + } + else + args.PushMarkup(Loc.GetString("gun-chamber-examine-empty", ("color", ModeExamineBadColor)), -1); + + if (TryComp(magazine, out var magazineMetaData)) + { + args.PushMarkup(Loc.GetString("gun-inserted-magazine-examine", ("color", ModeExamineColor), + ("magazine", magazineMetaData.EntityName)), -2); + } + // WWDP edit end } } @@ -402,7 +419,7 @@ public abstract partial class SharedGunSystem } // If no more ammo then open bolt. - if (relayedArgs.Ammo.Count == 0) + if (relayedArgs.Ammo.Count == 0 && component.BoltCatch) // WWDP bolt catch { SetBoltClosed(uid, component, false, user: args.User, appearance: appearance); } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Interactions.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Interactions.cs index 05daa7060c..6af6394fb8 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Interactions.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Interactions.cs @@ -16,19 +16,26 @@ public abstract partial class SharedGunSystem using (args.PushGroup(nameof(GunComponent))) { + if (component.SelectedMode == component.AvailableModes) // WWDP IF THERE IS ONLY ONE MODE DONT WRITE IT + return; + args.PushMarkup(Loc.GetString("gun-selected-mode-examine", ("color", ModeExamineColor), ("mode", GetLocSelector(component.SelectedMode)))); - args.PushMarkup(Loc.GetString("gun-fire-rate-examine", ("color", FireRateExamineColor), + /* WWDP no firerate on examine + args.PushMarkup(Loc.GetString("gun-fire-rate-examine", ("color", FireRateExamineColor), ("fireRate", $"{(int) (component.FireRate * 60)}"))); + */ if (!component.AvailableModes.HasFlag(SelectiveFire.Burst)) return; + /* WWDP no firerate on examine if (component.FireRate != component.BurstFireRate) args.PushMarkup(Loc.GetString("gun-burst-fire-rate-examine", ("color", FireRateExamineColor), ("fireRate", $"{(int) (component.BurstFireRate * 60)}"))); + */ - args.PushMarkup(Loc.GetString("gun-burst-fire-burst-count", ("color", FireRateExamineColor), + args.PushMarkup(Loc.GetString("gun-burst-fire-burst-count", ("color", ModeExamineColor), ("burstcount", $"{component.ShotsPerBurst}"))); } } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs index 9eb290ab65..2542496bc9 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs @@ -1,6 +1,7 @@ using Content.Shared.Examine; using Content.Shared.Interaction.Events; using Content.Shared.Verbs; +using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Containers; diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs index ee1ff5bdc9..67e0d11c50 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs @@ -8,6 +8,7 @@ using Robust.Shared.Serialization; using Robust.Shared.Utility; using System; using System.Linq; +using Content.Shared.Examine; using Content.Shared.Interaction.Events; using JetBrains.Annotations; @@ -21,14 +22,34 @@ public partial class SharedGunSystem { SubscribeLocalEvent(OnRevolverGetState); SubscribeLocalEvent(OnRevolverHandleState); - SubscribeLocalEvent(OnRevolverInit); + SubscribeLocalEvent(OnRevolverInit); // WWDP SubscribeLocalEvent(OnRevolverTakeAmmo); SubscribeLocalEvent>(OnRevolverVerbs); SubscribeLocalEvent(OnRevolverInteractUsing); SubscribeLocalEvent(OnRevolverGetAmmoCount); SubscribeLocalEvent(OnRevolverUse); + SubscribeLocalEvent(OnRevolverExamine); // WWDP } + // WWDP examine + private void OnRevolverExamine(EntityUid uid, RevolverAmmoProviderComponent component, ExaminedEvent args) + { + if (!args.IsInDetailsRange) + return; + + var loadedCount = 0; + + foreach (var chamber in component.Chambers) + { + if (chamber != null) + loadedCount++; + } + + args.PushMarkup(Loc.GetString("gun-revolver-examine", ("color", ModeExamineColor), + ("count", loadedCount)), -1); + } + // WWDP edit end + private void OnRevolverUse(EntityUid uid, RevolverAmmoProviderComponent component, UseInHandEvent args) { if (!_useDelay.TryResetDelay(uid)) @@ -418,7 +439,7 @@ public partial class SharedGunSystem component.CurrentIndex = (component.CurrentIndex + count) % component.Capacity; } - private void OnRevolverInit(EntityUid uid, RevolverAmmoProviderComponent component, MapInitEvent args) + private void OnRevolverInit(EntityUid uid, RevolverAmmoProviderComponent component, ComponentInit args) // WWDP { component.AmmoContainer = Containers.EnsureContainer(uid, RevolverContainer); component.AmmoSlots.EnsureCapacity(component.Capacity); diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 72870509c5..0b89e59686 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -76,8 +76,8 @@ public abstract partial class SharedGunSystem : EntitySystem private const double SafetyNextFire = 0.5; private const float EjectOffset = 0.4f; protected const string AmmoExamineColor = "yellow"; - protected const string FireRateExamineColor = "yellow"; - public const string ModeExamineColor = "cyan"; + public const string ModeExamineColor = "crimson"; // WWDP examine + public const string ModeExamineBadColor = "pink"; // WWDP examine public override void Initialize() { diff --git a/Resources/Audio/_White/Equip/Laser/drop1.ogg b/Resources/Audio/_White/Equip/Laser/drop1.ogg new file mode 100644 index 0000000000..b9f1ea9777 Binary files /dev/null and b/Resources/Audio/_White/Equip/Laser/drop1.ogg differ diff --git a/Resources/Audio/_White/Equip/Laser/pickup1.ogg b/Resources/Audio/_White/Equip/Laser/pickup1.ogg new file mode 100644 index 0000000000..6cf95a3d49 Binary files /dev/null and b/Resources/Audio/_White/Equip/Laser/pickup1.ogg differ diff --git a/Resources/Audio/_White/Equip/Laser/pickup2.ogg b/Resources/Audio/_White/Equip/Laser/pickup2.ogg new file mode 100644 index 0000000000..6d8a8670d9 Binary files /dev/null and b/Resources/Audio/_White/Equip/Laser/pickup2.ogg differ diff --git a/Resources/Audio/_White/Equip/Pistol/drop1.ogg b/Resources/Audio/_White/Equip/Pistol/drop1.ogg new file mode 100644 index 0000000000..29dcca939b Binary files /dev/null and b/Resources/Audio/_White/Equip/Pistol/drop1.ogg differ diff --git a/Resources/Audio/_White/Equip/Pistol/drop2.ogg b/Resources/Audio/_White/Equip/Pistol/drop2.ogg new file mode 100644 index 0000000000..5520d2043b Binary files /dev/null and b/Resources/Audio/_White/Equip/Pistol/drop2.ogg differ diff --git a/Resources/Audio/_White/Equip/Pistol/drop3.ogg b/Resources/Audio/_White/Equip/Pistol/drop3.ogg new file mode 100644 index 0000000000..1b714e1e69 Binary files /dev/null and b/Resources/Audio/_White/Equip/Pistol/drop3.ogg differ diff --git a/Resources/Audio/_White/Equip/Pistol/pickup1.ogg b/Resources/Audio/_White/Equip/Pistol/pickup1.ogg new file mode 100644 index 0000000000..8ff8f7a919 Binary files /dev/null and b/Resources/Audio/_White/Equip/Pistol/pickup1.ogg differ diff --git a/Resources/Audio/_White/Equip/Pistol/pickup2.ogg b/Resources/Audio/_White/Equip/Pistol/pickup2.ogg new file mode 100644 index 0000000000..4b9132a445 Binary files /dev/null and b/Resources/Audio/_White/Equip/Pistol/pickup2.ogg differ diff --git a/Resources/Audio/_White/Equip/Pistol/pickup3.ogg b/Resources/Audio/_White/Equip/Pistol/pickup3.ogg new file mode 100644 index 0000000000..e80114447b Binary files /dev/null and b/Resources/Audio/_White/Equip/Pistol/pickup3.ogg differ diff --git a/Resources/Audio/_White/Equip/Pistol/pickup4.ogg b/Resources/Audio/_White/Equip/Pistol/pickup4.ogg new file mode 100644 index 0000000000..8adba72a1d Binary files /dev/null and b/Resources/Audio/_White/Equip/Pistol/pickup4.ogg differ diff --git a/Resources/Audio/_White/Equip/Pulse/drop1.ogg b/Resources/Audio/_White/Equip/Pulse/drop1.ogg new file mode 100644 index 0000000000..b9f1ea9777 Binary files /dev/null and b/Resources/Audio/_White/Equip/Pulse/drop1.ogg differ diff --git a/Resources/Audio/_White/Equip/Pulse/pickup1.ogg b/Resources/Audio/_White/Equip/Pulse/pickup1.ogg new file mode 100644 index 0000000000..7b41a98598 Binary files /dev/null and b/Resources/Audio/_White/Equip/Pulse/pickup1.ogg differ diff --git a/Resources/Audio/_White/Equip/Revolver/drop1.ogg b/Resources/Audio/_White/Equip/Revolver/drop1.ogg new file mode 100644 index 0000000000..c261634ab2 Binary files /dev/null and b/Resources/Audio/_White/Equip/Revolver/drop1.ogg differ diff --git a/Resources/Audio/_White/Equip/Revolver/drop2.ogg b/Resources/Audio/_White/Equip/Revolver/drop2.ogg new file mode 100644 index 0000000000..1cab050240 Binary files /dev/null and b/Resources/Audio/_White/Equip/Revolver/drop2.ogg differ diff --git a/Resources/Audio/_White/Equip/Revolver/pickup1.ogg b/Resources/Audio/_White/Equip/Revolver/pickup1.ogg new file mode 100644 index 0000000000..3860ed9782 Binary files /dev/null and b/Resources/Audio/_White/Equip/Revolver/pickup1.ogg differ diff --git a/Resources/Audio/_White/Equip/Revolver/pickup2.ogg b/Resources/Audio/_White/Equip/Revolver/pickup2.ogg new file mode 100644 index 0000000000..e9d5c69369 Binary files /dev/null and b/Resources/Audio/_White/Equip/Revolver/pickup2.ogg differ diff --git a/Resources/Audio/_White/Equip/Rifle/drop1.ogg b/Resources/Audio/_White/Equip/Rifle/drop1.ogg new file mode 100644 index 0000000000..8c39cc3437 Binary files /dev/null and b/Resources/Audio/_White/Equip/Rifle/drop1.ogg differ diff --git a/Resources/Audio/_White/Equip/Rifle/drop2.ogg b/Resources/Audio/_White/Equip/Rifle/drop2.ogg new file mode 100644 index 0000000000..0b1c674c3d Binary files /dev/null and b/Resources/Audio/_White/Equip/Rifle/drop2.ogg differ diff --git a/Resources/Audio/_White/Equip/Rifle/pickup1.ogg b/Resources/Audio/_White/Equip/Rifle/pickup1.ogg new file mode 100644 index 0000000000..98e90ceff3 Binary files /dev/null and b/Resources/Audio/_White/Equip/Rifle/pickup1.ogg differ diff --git a/Resources/Audio/_White/Equip/Rifle/pickup2.ogg b/Resources/Audio/_White/Equip/Rifle/pickup2.ogg new file mode 100644 index 0000000000..91774c9a00 Binary files /dev/null and b/Resources/Audio/_White/Equip/Rifle/pickup2.ogg differ diff --git a/Resources/Audio/_White/Equip/Rifle/pickup3.ogg b/Resources/Audio/_White/Equip/Rifle/pickup3.ogg new file mode 100644 index 0000000000..bc70d40f46 Binary files /dev/null and b/Resources/Audio/_White/Equip/Rifle/pickup3.ogg differ diff --git a/Resources/Audio/_White/Equip/Shotgun/drop1.ogg b/Resources/Audio/_White/Equip/Shotgun/drop1.ogg new file mode 100644 index 0000000000..8c39cc3437 Binary files /dev/null and b/Resources/Audio/_White/Equip/Shotgun/drop1.ogg differ diff --git a/Resources/Audio/_White/Equip/Shotgun/drop2.ogg b/Resources/Audio/_White/Equip/Shotgun/drop2.ogg new file mode 100644 index 0000000000..0b1c674c3d Binary files /dev/null and b/Resources/Audio/_White/Equip/Shotgun/drop2.ogg differ diff --git a/Resources/Audio/_White/Equip/Shotgun/pickup1.ogg b/Resources/Audio/_White/Equip/Shotgun/pickup1.ogg new file mode 100644 index 0000000000..d584f3ef34 Binary files /dev/null and b/Resources/Audio/_White/Equip/Shotgun/pickup1.ogg differ diff --git a/Resources/Audio/_White/Equip/Shotgun/pickup2.ogg b/Resources/Audio/_White/Equip/Shotgun/pickup2.ogg new file mode 100644 index 0000000000..3691efc0b4 Binary files /dev/null and b/Resources/Audio/_White/Equip/Shotgun/pickup2.ogg differ diff --git a/Resources/Audio/_White/Equip/Shotgun/pickup3.ogg b/Resources/Audio/_White/Equip/Shotgun/pickup3.ogg new file mode 100644 index 0000000000..c002b19cd5 Binary files /dev/null and b/Resources/Audio/_White/Equip/Shotgun/pickup3.ogg differ diff --git a/Resources/Audio/_White/Equip/Sniper/drop1.ogg b/Resources/Audio/_White/Equip/Sniper/drop1.ogg new file mode 100644 index 0000000000..ee8cad0e5f Binary files /dev/null and b/Resources/Audio/_White/Equip/Sniper/drop1.ogg differ diff --git a/Resources/Audio/_White/Equip/Sniper/drop2.ogg b/Resources/Audio/_White/Equip/Sniper/drop2.ogg new file mode 100644 index 0000000000..fd9fcd50f4 Binary files /dev/null and b/Resources/Audio/_White/Equip/Sniper/drop2.ogg differ diff --git a/Resources/Audio/_White/Equip/Sniper/drop3.ogg b/Resources/Audio/_White/Equip/Sniper/drop3.ogg new file mode 100644 index 0000000000..8fbd44cdb8 Binary files /dev/null and b/Resources/Audio/_White/Equip/Sniper/drop3.ogg differ diff --git a/Resources/Audio/_White/Equip/Sniper/pickup1.ogg b/Resources/Audio/_White/Equip/Sniper/pickup1.ogg new file mode 100644 index 0000000000..69b6ad8c8f Binary files /dev/null and b/Resources/Audio/_White/Equip/Sniper/pickup1.ogg differ diff --git a/Resources/Audio/_White/Equip/Sniper/pickup2.ogg b/Resources/Audio/_White/Equip/Sniper/pickup2.ogg new file mode 100644 index 0000000000..425c605d3d Binary files /dev/null and b/Resources/Audio/_White/Equip/Sniper/pickup2.ogg differ diff --git a/Resources/Audio/_White/Equip/clothingrustle2.ogg b/Resources/Audio/_White/Equip/clothingrustle2.ogg new file mode 100644 index 0000000000..7b189c2267 Binary files /dev/null and b/Resources/Audio/_White/Equip/clothingrustle2.ogg differ diff --git a/Resources/Audio/_White/Equip/clothingrustle4.ogg b/Resources/Audio/_White/Equip/clothingrustle4.ogg new file mode 100644 index 0000000000..14dea050c4 Binary files /dev/null and b/Resources/Audio/_White/Equip/clothingrustle4.ogg differ diff --git a/Resources/Audio/_White/Guns/attributions.yml b/Resources/Audio/_White/Guns/attributions.yml index 9f858cf67f..694263e368 100644 --- a/Resources/Audio/_White/Guns/attributions.yml +++ b/Resources/Audio/_White/Guns/attributions.yml @@ -2,3 +2,8 @@ license: "CC-BY-NC-SA-4.0" copyright: "Taken from White Dream" source: "https://github.com/frosty-dev/ss14-core/blob/master/Resources/Audio/White/Gun/insert.ogg" + +- files: ["shotgun_rack.ogg"] + license: "CC-BY-NC-SA-4.0" + copyright: "Made by vanx for WWDP" + source: "https://github.com/WWhiteDreamProject/wwdpublic" \ No newline at end of file diff --git a/Resources/Audio/_White/Guns/shotgun_rack.ogg b/Resources/Audio/_White/Guns/shotgun_rack.ogg new file mode 100644 index 0000000000..2fc2fae554 Binary files /dev/null and b/Resources/Audio/_White/Guns/shotgun_rack.ogg differ diff --git a/Resources/Locale/en-US/_white/examine/examine.ftl b/Resources/Locale/en-US/_white/examine/examine.ftl index 5a55867849..c123fe1c9e 100644 --- a/Resources/Locale/en-US/_white/examine/examine.ftl +++ b/Resources/Locale/en-US/_white/examine/examine.ftl @@ -45,3 +45,7 @@ comp-hands-examine-empty-selfaware = You are not holding anything. comp-hands-examine-selfaware = You are holding { $items }. humanoid-appearance-component-examine-selfaware = You are { INDEFINITE($age) } { $age } { $species }. + +# Description examine wrapper + +examine-entity-description-wrapper = [font size=11][italic]{ $description }[/italic][/font] diff --git a/Resources/Locale/en-US/_white/weapons/ranged/gun.ftl b/Resources/Locale/en-US/_white/weapons/ranged/gun.ftl new file mode 100644 index 0000000000..9f0de3f83b --- /dev/null +++ b/Resources/Locale/en-US/_white/weapons/ranged/gun.ftl @@ -0,0 +1,22 @@ +gun-chamber-examine = - It has a [color={$color}]{$cartridge}[/color] in the chamber. +gun-chamber-examine-empty = - The chamber is [color={$color}]empty[/color]. + +gun-inserted-magazine-examine = - It is loaded with a [color={$color}]{$magazine}[/color]. + +gun-ammocount-examine = It has [color={$color}]{$count}[/color] shots remaining. + +gun-racked-examine = - It is [color={$color}]racked[/color]. +gun-racked-examine-not = - It is [color={$color}]not racked[/color]. + +gun-revolver-examine = + { $count -> + [0] - It is [color={$color}]empty[/color]. + [1] - It is loaded with [color={$color}]{ $count }[/color] cartridge. + *[other] - It is loaded with [color={$color}]{ $count }[/color] cartridges. + } + +gun-ballistic-extract = Extract +gun-ballistic-full = Full! +gun-ballistic-empty = Empty! + +ammo-top-round-examine = It has a [color={$color}]{ $round }[/color] loaded on top. diff --git a/Resources/Locale/ru-RU/_white/examine/examine.ftl b/Resources/Locale/ru-RU/_white/examine/examine.ftl index f98f8dd8e7..e3ae84bfce 100644 --- a/Resources/Locale/ru-RU/_white/examine/examine.ftl +++ b/Resources/Locale/ru-RU/_white/examine/examine.ftl @@ -45,3 +45,7 @@ comp-hands-examine-empty-selfaware = Вы ничего не держите. comp-hands-examine-selfaware = Вы держите { $items }. humanoid-appearance-component-examine-selfaware = Вы - { $species } { $age }. + +# Description examine wrapper + +examine-entity-description-wrapper = [font size=11][italic][color=SlateGray]{ $description }[/color][/italic][/font] diff --git a/Resources/Locale/ru-RU/_white/weapons/ranged/gun.ftl b/Resources/Locale/ru-RU/_white/weapons/ranged/gun.ftl new file mode 100644 index 0000000000..b27f9cae8a --- /dev/null +++ b/Resources/Locale/ru-RU/_white/weapons/ranged/gun.ftl @@ -0,0 +1,25 @@ +gun-chamber-examine = - В патроннике [color={$color}]{$cartridge}[/color]. +gun-chamber-examine-empty = - Патронник [color={$color}]пуст[/color]. + +gun-inserted-magazine-examine = - Вставлен [color={$color}]{$magazine}[/color]. + +gun-ammocount-examine = Осталось [color={$color}]{$count}[/color] патронов. + +gun-racked-examine = - Затвор [color={$color}]взведён[/color]. +gun-racked-examine-not = - Затвор [color={$color}]не взведён[/color]. + +gun-revolver-examine = + { $count -> + [0] - Барабан [color={$color}]пуст[/color]. + [1] - В барабане [color={$color}]{ $count }[/color] патрон. + [2] - В барабане [color={$color}]{ $count }[/color] патрона. + [3] - В барабане [color={$color}]{ $count }[/color] патрона. + [4] - В барабане [color={$color}]{ $count }[/color] патрона. + *[other] - В барабане [color={$color}]{ $count }[/color] патронов. + } + +gun-ballistic-extract = Извлечь +gun-ballistic-full = Полон! +gun-ballistic-empty = Пуст! + +ammo-top-round-examine = Сверху заряжен [color={$color}]{ $round }[/color]. diff --git a/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml b/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml index facca3f311..98fabfe517 100644 --- a/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml +++ b/Resources/Prototypes/DeltaV/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml @@ -22,6 +22,8 @@ soundEmpty: path: /Audio/Weapons/Guns/Empty/empty.ogg - type: BallisticAmmoProvider + soundRack: # WWDP + path: /Audio/_White/Guns/shotgun_rack.ogg # autoCycle: true whitelist: tags: diff --git a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml index 231da31389..1a5f89dd13 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml @@ -10,9 +10,12 @@ - type: Item size: Huge - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP quickEquip: false slots: - back + - type: EmitSoundOnPickup # WWDP + sound: /Audio/_White/Equip/clothingrustle2.ogg - type: Storage grid: - 0,0,6,3 diff --git a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml index 27699042a9..db75f239a8 100644 --- a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml +++ b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml @@ -579,6 +579,8 @@ - type: Item size: Huge - type: BallisticAmmoProvider + soundInsert: # WWDP + path: /Audio/Weapons/Guns/MagIn/shotgun_insert.ogg whitelist: tags: - ShellShotgun diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml index 63ad52c032..7ee439c71f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/shotgun.yml @@ -17,6 +17,8 @@ abstract: true components: - type: BallisticAmmoProvider + soundInsert: + path: /Audio/Weapons/Guns/MagIn/shotgun_insert.ogg # WWDP mayTransfer: true whitelist: tags: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index f7c8f9542a..d7eaae3cfb 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -7,6 +7,7 @@ - type: Item size: Huge - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP sprite: Objects/Weapons/Guns/Battery/laser_retro.rsi quickEquip: false slots: @@ -49,6 +50,15 @@ Blunt: 2.5 - type: DamageOtherOnHit staminaCost: 7 + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: LasersPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: LasersDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: LasersDrop # Shitmed Change - type: Cautery speed: 0.9 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml index 67986f4b6e..3185155c09 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/LMGs/lmgs.yml @@ -9,6 +9,7 @@ - type: Item size: Huge - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP sprite: Objects/Weapons/Guns/LMGs/l6.rsi quickEquip: false slots: @@ -28,6 +29,7 @@ maxAngle: 45 angleIncrease: 4 angleDecay: 16 + boltCatch: false # WWDP fireRate: 8 selectedMode: FullAuto availableModes: @@ -39,7 +41,7 @@ - type: ChamberMagazineAmmoProvider soundRack: path: /Audio/Weapons/Guns/Cock/lmg_cock.ogg - - type: AmmoCounter + # - type: AmmoCounter # WWDP - type: ItemSlots slots: gun_magazine: @@ -85,6 +87,15 @@ Blunt: 3 - type: DamageOtherOnHit staminaCost: 12 + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: RiflesPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: RiflesDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: RiflesDrop - type: entity name: L6 SAW diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 60ca7aedf3..c7dcd35046 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -56,7 +56,7 @@ slots: - Back - suitStorage - - type: AmmoCounter + # - type: AmmoCounter # WWDP - type: Gun fireRate: 1 selectedMode: SemiAuto @@ -90,6 +90,7 @@ - state: mag-0 map: ["enum.GunVisualLayers.Mag"] - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP sprite: Objects/Weapons/Guns/Launchers/rocket.rsi - type: Gun fireRate: 0.5 @@ -103,12 +104,21 @@ capacity: 1 soundInsert: path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg - autoCycle: false # WD EDIT + autoCycle: true # WD EDIT # WWDP edit - type: MagazineVisuals magState: mag steps: 2 zeroVisible: false - type: Appearance + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: RiflesPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: RiflesDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: RiflesDrop - type: Item # WWDP guns resize shape: - 0,0,7,1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml index 2dca756c17..61a6a5e5b0 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml @@ -20,6 +20,7 @@ tags: - Sidearm - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle2.ogg # WWDP sprite: Objects/Weapons/Guns/Pistols/viper.rsi quickEquip: false slots: @@ -70,7 +71,7 @@ - type: StaticPrice price: 500 - type: Execution - - type: AmmoCounter + # - type: AmmoCounter # WWDP - type: MeleeWeapon attackRate: 1.2 damage: @@ -84,6 +85,15 @@ collection: MetalThud - type: DamageOtherOnHit staminaCost: 5 + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: PistolsPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: PistolsDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: PistolsDrop - type: entity name: viper diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml index 4c3e3006ee..1879dc0f74 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml @@ -16,6 +16,7 @@ tags: - Sidearm - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle2.ogg # WWDP sprite: Objects/Weapons/Guns/Revolvers/deckard.rsi quickEquip: false slots: @@ -67,6 +68,15 @@ collection: MetalThud - type: DamageOtherOnHit staminaCost: 5 + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: RevolversPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: RevolversDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: RevolversDrop - type: entity name: Deckard diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index de1c40a4b8..d5e5fd26db 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -11,13 +11,14 @@ shape: - 0,0,7,1 - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP sprite: Objects/Weapons/Guns/Rifles/ak.rsi quickEquip: false slots: - Back - suitStorage - type: Wieldable - - type: AmmoCounter + # - type: AmmoCounter # WWDP - type: Gun bonusAngleIncreaseMove: 40 # wwdp bonusAngleIncreaseTurn: 0.25 # wwdp @@ -95,6 +96,7 @@ path: /Audio/Weapons/Guns/Gunshots/rifle2.ogg fireOnDropChance: 0.5 - type: ChamberMagazineAmmoProvider + boltCatch: false # WWDP no zatvornaya zaderzhka kak u m-16 soundRack: path: /Audio/Weapons/Guns/Cock/ltrifle_cock.ogg - type: ItemSlots @@ -124,6 +126,15 @@ steps: 1 zeroVisible: true - type: Appearance + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: RiflesPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: RiflesDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: RiflesDrop - type: entity name: M-90gl diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index fcf6510635..c3ba16cca3 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -9,12 +9,13 @@ - type: Item size: Large - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP sprite: Objects/Weapons/Guns/SMGs/atreides.rsi quickEquip: false slots: - Back - suitStorage - - type: AmmoCounter + # - type: AmmoCounter # WWDP - type: Gun # if changing also update WeaponDisablerSMG bonusAngleIncreaseMove: 20 # wwdp bonusAngleIncreaseTurn: 0.4 # wwdp @@ -79,6 +80,15 @@ Blunt: 2.5 - type: DamageOtherOnHit staminaCost: 8 + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: RiflesPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: RiflesDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: RiflesDrop - type: entity name: Atreides diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml index de7f8f1f30..b239786273 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml @@ -13,12 +13,13 @@ # If you update this also update the bulldog's size. size: Large - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP sprite: DeltaV/Objects/Weapons/Guns/Shotguns/db_shotgun.rsi # Delta-V quickEquip: false slots: - Back - suitStorage - - type: AmmoCounter + # - type: AmmoCounter # WWDP - type: Gun # change WeaponShotgunBulldog too if updating this bonusAngleIncreaseMove: 40 # wwdp bonusAngleIncreaseTurn: 0.25 # wwdp @@ -68,6 +69,15 @@ - type: DamageOtherOnHit staminaCost: 9.5 - type: GunRequiresWield # WD EDIT + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: ShotgunsPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: ShotgunsDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: ShotgunsDrop - type: entity # supposed to be similiar to pistols name: BaseWeaponShotgunSmall @@ -104,12 +114,13 @@ shape: - 0,0,5,1 - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP sprite: Objects/Weapons/Guns/Shotguns/bulldog.rsi quickEquip: false slots: - Back - suitStorage - - type: AmmoCounter + # - type: AmmoCounter # WWDP - type: GunRequiresWield #remove when inaccuracy on spreads is fixed - type: Gun bonusAngleIncreaseMove: 40 # wwdp @@ -136,11 +147,21 @@ - MagazineShotgun insertSound: /Audio/Weapons/Guns/MagIn/smg_magin.ogg ejectSound: /Audio/Weapons/Guns/MagOut/smg_magout.ogg + gun_chamber: # WWDP + name: Chamber + locked: true + startingItem: ShellShotgun + priority: 1 + whitelist: + tags: + - ShellShotgun - type: ContainerContainer containers: gun_magazine: !type:ContainerSlot gun_chamber: !type:ContainerSlot - - type: MagazineAmmoProvider + - type: ChamberMagazineAmmoProvider # WWDP + soundRack: + path: /Audio/Weapons/Guns/Cock/sf_rifle_cock.ogg - type: MagazineVisuals magState: mag steps: 1 @@ -167,6 +188,15 @@ Blunt: 2.5 - type: DamageOtherOnHit staminaCost: 9.5 + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: ShotgunsPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: ShotgunsDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: ShotgunsDrop - type: entity name: antique Bulldog @@ -234,6 +264,8 @@ - 0,0,5,1 sprite: Objects/Weapons/Guns/Shotguns/enforcer_inhands_64x.rsi - type: BallisticAmmoProvider + soundRack: # WWDP + path: /Audio/_White/Guns/shotgun_rack.ogg - type: Wieldable - type: MeleeWeapon attackRate: 1.4 @@ -268,6 +300,8 @@ sprite: Objects/Weapons/Guns/Shotguns/pump.rsi - type: BallisticAmmoProvider capacity: 4 + soundRack: + path: /Audio/_White/Guns/shotgun_rack.ogg - type: Tag tags: - WeaponShotgunKammerer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml index 3237443cff..fa25995c32 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml @@ -12,12 +12,13 @@ - type: Item size: Huge - type: Clothing + equipSound: /Audio/_White/Equip/clothingrustle4.ogg # WWDP sprite: Objects/Weapons/Guns/Snipers/bolt_gun_wood.rsi quickEquip: false slots: - Back - suitStorage - - type: AmmoCounter + # - type: AmmoCounter # WWDP - type: Wieldable - type: GunRequiresWield - type: Gun @@ -32,6 +33,8 @@ soundGunshot: path: /Audio/Weapons/Guns/Gunshots/sniper.ogg - type: BallisticAmmoProvider + soundRack: # WWDP + path: /Audio/Weapons/Guns/Cock/sf_rifle_cock.ogg capacity: 10 proto: CartridgeLightRifle whitelist: @@ -63,6 +66,15 @@ Blunt: 2.5 - type: DamageOtherOnHit staminaCost: 7.5 + - type: EmitSoundOnPickup # WWDP sounds + sound: + collection: SnipersPickUp + - type: EmitSoundOnDrop # WWDP sounds + sound: + collection: SnipersDrop + - type: EmitSoundOnLand # WWDP sounds + sound: + collection: SnipersDrop - type: entity name: Kardashev-Mosin @@ -148,6 +160,8 @@ - 0,0,6,1 # needs to fit in a briefcase, collapsible stock or something sprite: _White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi - type: BallisticAmmoProvider + soundRack: # WWDP + path: /Audio/Weapons/Guns/Cock/batrifle_cock.ogg soundInsert: /Audio/_White/Guns/insert.ogg whitelist: tags: @@ -191,6 +205,7 @@ - type: UseDelay delay: 8 #it's a musket - type: BallisticAmmoProvider + autoCycle: true # WWDP whitelist: tags: - CartridgeMusket # DeltaV - musket instead of anti materiel ammo @@ -244,6 +259,7 @@ - type: UseDelay delay: 8 #it's a flintlock - type: BallisticAmmoProvider + autoCycle: true # WWDP whitelist: tags: - CartridgeMusket # DeltaV - musket instead of anti materiel ammo diff --git a/Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index c082c357fe..cba18f0e00 100644 --- a/Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/_Goobstation/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -72,4 +72,4 @@ suffix: Security Loadouts components: - type: GuideHelp - guides: [ SecurityWeapons ] \ No newline at end of file + guides: [ SecurityWeapons ] diff --git a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Basic/pka.yml b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Basic/pka.yml index 0bc5b22fab..ae72ca55df 100644 --- a/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Basic/pka.yml +++ b/Resources/Prototypes/_Lavaland/Entities/Objects/Weapons/Guns/Basic/pka.yml @@ -1,7 +1,7 @@ - type: entity name: proto-kinetic shotgun id: WeaponProtoKineticShotgun - parent: [WeaponProtoKineticAcceleratorBase] + parent: [WeaponProtoKineticAcceleratorBase, BaseGunWieldable] # WWDP description: Fires a spread of low-damage kinetic bolts. components: - type: Sprite @@ -42,7 +42,7 @@ - type: entity name: proto-kinetic repeater id: WeaponProtoKineticRepeater - parent: [WeaponProtoKineticAcceleratorBase] + parent: [WeaponProtoKineticAcceleratorBase, BaseGunWieldable] # WWDP description: Fires a barrage of kinetic bolts at a short range. components: - type: Sprite diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Snipers/snipers.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Snipers/snipers.yml index 61b04eafa9..e837cf35c3 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Snipers/snipers.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Snipers/snipers.yml @@ -12,6 +12,11 @@ - type: StaticPrice price: 500 - type: BallisticAmmoProvider + autoCycle: false # WWDP + soundRack: # WWDP + path: /Audio/Weapons/Guns/Cock/batrifle_cock.ogg + params: + volume: -3 whitelist: tags: - CartridgeMagnum diff --git a/Resources/Prototypes/_White/SoundCollections/equip.yml b/Resources/Prototypes/_White/SoundCollections/equip.yml new file mode 100644 index 0000000000..cc032cc995 --- /dev/null +++ b/Resources/Prototypes/_White/SoundCollections/equip.yml @@ -0,0 +1,86 @@ +- type: soundCollection + id: RiflesPickUp + files: + - /Audio/_White/Equip/Rifle/pickup1.ogg + - /Audio/_White/Equip/Rifle/pickup2.ogg + - /Audio/_White/Equip/Rifle/pickup3.ogg + +- type: soundCollection + id: RiflesDrop + files: + - /Audio/_White/Equip/Rifle/drop1.ogg + - /Audio/_White/Equip/Rifle/drop2.ogg + +- type: soundCollection + id: PistolsPickUp + files: + - /Audio/_White/Equip/Pistol/pickup1.ogg + - /Audio/_White/Equip/Pistol/pickup2.ogg + - /Audio/_White/Equip/Pistol/pickup3.ogg + - /Audio/_White/Equip/Pistol/pickup4.ogg + +- type: soundCollection + id: PistolsDrop + files: + - /Audio/_White/Equip/Pistol/drop1.ogg + - /Audio/_White/Equip/Pistol/drop2.ogg + - /Audio/_White/Equip/Pistol/drop3.ogg + +- type: soundCollection + id: LasersPickUp + files: + - /Audio/_White/Equip/Laser/pickup1.ogg + - /Audio/_White/Equip/Laser/pickup2.ogg + +- type: soundCollection + id: LasersDrop + files: + - /Audio/_White/Equip/Laser/drop1.ogg + +- type: soundCollection + id: PulsePickUp + files: + - /Audio/_White/Equip/Pulse/pickup1.ogg + +- type: soundCollection + id: PulseDrop + files: + - /Audio/_White/Equip/Pulse/drop1.ogg + +- type: soundCollection + id: SnipersPickUp + files: + - /Audio/_White/Equip/Sniper/pickup1.ogg + - /Audio/_White/Equip/Sniper/pickup2.ogg + +- type: soundCollection + id: SnipersDrop + files: + - /Audio/_White/Equip/Sniper/drop1.ogg + - /Audio/_White/Equip/Sniper/drop2.ogg + - /Audio/_White/Equip/Sniper/drop3.ogg + +- type: soundCollection + id: ShotgunsPickUp + files: + - /Audio/_White/Equip/Shotgun/pickup1.ogg + - /Audio/_White/Equip/Shotgun/pickup2.ogg + - /Audio/_White/Equip/Shotgun/pickup3.ogg + +- type: soundCollection + id: ShotgunsDrop + files: + - /Audio/_White/Equip/Shotgun/drop1.ogg + - /Audio/_White/Equip/Shotgun/drop2.ogg + +- type: soundCollection + id: RevolversPickUp + files: + - /Audio/_White/Equip/Revolver/pickup1.ogg + - /Audio/_White/Equip/Revolver/pickup2.ogg + +- type: soundCollection + id: RevolversDrop + files: + - /Audio/_White/Equip/Revolver/drop1.ogg + - /Audio/_White/Equip/Revolver/drop2.ogg