mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-04-17 05:27:38 +03:00
[Tweak] The Gunnening (#285)
* wrapped examine (pretty) * so mentally done * remove ammo counters * fix * the soundening * less visual recoil * rifle fixes * the soundening 2 * i loved # WWDP too much * review fixes * fix mag visuals * top round examine --------- Co-authored-by: vanx <discord@vanxxxx> Co-authored-by: Spatison <137375981+Spatison@users.noreply.github.com>
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -30,7 +30,7 @@ public sealed partial class CCVars
|
||||
/// Goes from 0 (no recoil at all) to 1 (regular amounts of recoil)
|
||||
/// </summary>
|
||||
public static readonly CVarDef<float> 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
|
||||
|
||||
/// <summary>
|
||||
/// A generic toggle for various visual effects that are color sensitive.
|
||||
|
||||
@@ -267,7 +267,12 @@ namespace Content.Shared.Examine
|
||||
//Add an entity description if one is declared
|
||||
if (!string.IsNullOrEmpty(EntityManager.GetComponent<MetaDataComponent>(entity).EntityDescription))
|
||||
{
|
||||
message.AddText(EntityManager.GetComponent<MetaDataComponent>(entity).EntityDescription);
|
||||
// WWDP edit
|
||||
var description = EntityManager.GetComponent<MetaDataComponent>(entity).EntityDescription;
|
||||
var descriptionWrapped = Loc.GetString("examine-entity-description-wrapper", ("description", description));
|
||||
|
||||
message.AddMarkup(descriptionWrapped);
|
||||
// WWDP edit end
|
||||
hasDescription = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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<EntityUid> Entities = new();
|
||||
|
||||
@@ -20,6 +20,12 @@ public sealed partial class ChamberMagazineAmmoProviderComponent : MagazineAmmoP
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("autoCycle"), AutoNetworkedField]
|
||||
public bool AutoCycle = true;
|
||||
|
||||
/// <summary>
|
||||
/// WWDP - If true, the gun will lock the bolt open once the mag is empty.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("boltCatch"), AutoNetworkedField]
|
||||
public bool BoltCatch = true;
|
||||
|
||||
/// <summary>
|
||||
/// Can the gun be racked, which opens and then instantly closes the bolt to cycle a round.
|
||||
/// </summary>
|
||||
|
||||
@@ -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<BallisticAmmoProviderComponent, GetAmmoCountEvent>(OnBallisticAmmoCount);
|
||||
|
||||
SubscribeLocalEvent<BallisticAmmoProviderComponent, ExaminedEvent>(OnBallisticExamine);
|
||||
SubscribeLocalEvent<BallisticAmmoProviderComponent, GetVerbsEvent<Verb>>(OnBallisticVerb);
|
||||
SubscribeLocalEvent<BallisticAmmoProviderComponent, GetVerbsEvent<InteractionVerb>>(AddInteractionVerb); // WWDP
|
||||
SubscribeLocalEvent<BallisticAmmoProviderComponent, GetVerbsEvent<AlternativeVerb>>(AddAlternativeVerb); // WWDP
|
||||
SubscribeLocalEvent<BallisticAmmoProviderComponent, InteractUsingEvent>(OnBallisticInteractUsing);
|
||||
SubscribeLocalEvent<BallisticAmmoProviderComponent, AfterInteractEvent>(OnBallisticAfterInteract);
|
||||
SubscribeLocalEvent<BallisticAmmoProviderComponent, AmmoFillDoAfterEvent>(OnBallisticAmmoFillDoAfter);
|
||||
@@ -50,9 +55,16 @@ public abstract partial class SharedGunSystem
|
||||
|
||||
if (_whitelistSystem.IsWhitelistFailOrNull(component.Whitelist, args.Used))
|
||||
return;
|
||||
// WWDP EDIT
|
||||
if (HasComp<BallisticAmmoProviderComponent>(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<BallisticAmmoProviderComponent>(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<Verb> args)
|
||||
private void AddInteractionVerb(EntityUid uid, BallisticAmmoProviderComponent component, GetVerbsEvent<InteractionVerb> 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<AlternativeVerb> 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<GunComponent>(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<MetaDataComponent>(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<EntityPrototype>(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<CartridgeAmmoComponent>(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<CartridgeAmmoComponent>(entity))
|
||||
if (!component.AutoCycle && TryComp<CartridgeAmmoComponent>(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
|
||||
|
||||
@@ -27,7 +27,7 @@ public abstract partial class SharedGunSystem
|
||||
|
||||
SubscribeLocalEvent<ChamberMagazineAmmoProviderComponent, GetVerbsEvent<ActivationVerb>>(OnChamberActivationVerb);
|
||||
SubscribeLocalEvent<ChamberMagazineAmmoProviderComponent, GetVerbsEvent<InteractionVerb>>(OnChamberInteractionVerb);
|
||||
SubscribeLocalEvent<ChamberMagazineAmmoProviderComponent, GetVerbsEvent<AlternativeVerb>>(OnMagazineVerb);
|
||||
// SubscribeLocalEvent<ChamberMagazineAmmoProviderComponent, GetVerbsEvent<AlternativeVerb>>(OnMagazineVerb); // WWDP no duplicate verbs
|
||||
|
||||
SubscribeLocalEvent<ChamberMagazineAmmoProviderComponent, ActivateInWorldEvent>(OnChamberActivate);
|
||||
SubscribeLocalEvent<ChamberMagazineAmmoProviderComponent, UseInHandEvent>(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<MetaDataComponent>(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<MetaDataComponent>(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);
|
||||
}
|
||||
|
||||
@@ -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}")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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<RevolverAmmoProviderComponent, ComponentGetState>(OnRevolverGetState);
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, ComponentHandleState>(OnRevolverHandleState);
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, MapInitEvent>(OnRevolverInit);
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, ComponentInit>(OnRevolverInit); // WWDP
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, TakeAmmoEvent>(OnRevolverTakeAmmo);
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, GetVerbsEvent<AlternativeVerb>>(OnRevolverVerbs);
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, InteractUsingEvent>(OnRevolverInteractUsing);
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, GetAmmoCountEvent>(OnRevolverGetAmmoCount);
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, UseInHandEvent>(OnRevolverUse);
|
||||
SubscribeLocalEvent<RevolverAmmoProviderComponent, ExaminedEvent>(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<Container>(uid, RevolverContainer);
|
||||
component.AmmoSlots.EnsureCapacity(component.Capacity);
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
BIN
Resources/Audio/_White/Equip/Laser/drop1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Laser/drop1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Laser/pickup1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Laser/pickup1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Laser/pickup2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Laser/pickup2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pistol/drop1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pistol/drop1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pistol/drop2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pistol/drop2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pistol/drop3.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pistol/drop3.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pistol/pickup1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pistol/pickup1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pistol/pickup2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pistol/pickup2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pistol/pickup3.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pistol/pickup3.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pistol/pickup4.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pistol/pickup4.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pulse/drop1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pulse/drop1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Pulse/pickup1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Pulse/pickup1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Revolver/drop1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Revolver/drop1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Revolver/drop2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Revolver/drop2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Revolver/pickup1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Revolver/pickup1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Revolver/pickup2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Revolver/pickup2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Rifle/drop1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Rifle/drop1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Rifle/drop2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Rifle/drop2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Rifle/pickup1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Rifle/pickup1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Rifle/pickup2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Rifle/pickup2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Rifle/pickup3.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Rifle/pickup3.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Shotgun/drop1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Shotgun/drop1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Shotgun/drop2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Shotgun/drop2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Shotgun/pickup1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Shotgun/pickup1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Shotgun/pickup2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Shotgun/pickup2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Shotgun/pickup3.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Shotgun/pickup3.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Sniper/drop1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Sniper/drop1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Sniper/drop2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Sniper/drop2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Sniper/drop3.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Sniper/drop3.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Sniper/pickup1.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Sniper/pickup1.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/Sniper/pickup2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/Sniper/pickup2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/clothingrustle2.ogg
Normal file
BIN
Resources/Audio/_White/Equip/clothingrustle2.ogg
Normal file
Binary file not shown.
BIN
Resources/Audio/_White/Equip/clothingrustle4.ogg
Normal file
BIN
Resources/Audio/_White/Equip/clothingrustle4.ogg
Normal file
Binary file not shown.
@@ -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"
|
||||
BIN
Resources/Audio/_White/Guns/shotgun_rack.ogg
Normal file
BIN
Resources/Audio/_White/Guns/shotgun_rack.ogg
Normal file
Binary file not shown.
@@ -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]
|
||||
|
||||
22
Resources/Locale/en-US/_white/weapons/ranged/gun.ftl
Normal file
22
Resources/Locale/en-US/_white/weapons/ranged/gun.ftl
Normal file
@@ -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.
|
||||
@@ -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]
|
||||
|
||||
25
Resources/Locale/ru-RU/_white/weapons/ranged/gun.ftl
Normal file
25
Resources/Locale/ru-RU/_white/weapons/ranged/gun.ftl
Normal file
@@ -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].
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -579,6 +579,8 @@
|
||||
- type: Item
|
||||
size: Huge
|
||||
- type: BallisticAmmoProvider
|
||||
soundInsert: # WWDP
|
||||
path: /Audio/Weapons/Guns/MagIn/shotgun_insert.ogg
|
||||
whitelist:
|
||||
tags:
|
||||
- ShellShotgun
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
abstract: true
|
||||
components:
|
||||
- type: BallisticAmmoProvider
|
||||
soundInsert:
|
||||
path: /Audio/Weapons/Guns/MagIn/shotgun_insert.ogg # WWDP
|
||||
mayTransfer: true
|
||||
whitelist:
|
||||
tags:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -72,4 +72,4 @@
|
||||
suffix: Security Loadouts
|
||||
components:
|
||||
- type: GuideHelp
|
||||
guides: [ SecurityWeapons ]
|
||||
guides: [ SecurityWeapons ]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
86
Resources/Prototypes/_White/SoundCollections/equip.yml
Normal file
86
Resources/Prototypes/_White/SoundCollections/equip.yml
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user