From 2ed017c84226a3cafe641ea76212bfddcaaaddb7 Mon Sep 17 00:00:00 2001
From: Spatison <137375981+Spatison@users.noreply.github.com>
Date: Sat, 21 Sep 2024 13:21:44 +0300
Subject: [PATCH] =?UTF-8?q?[Port]=20Hristov=20/=20=D0=A5=D1=80=D0=B8=D1=81?=
=?UTF-8?q?=D1=82=D0=BE=D0=B2=20|=20[Port]=20Manual=20Sending=20Of=20The?=
=?UTF-8?q?=20Cartridge=20/=20=D0=A0=D1=83=D1=87=D0=BD=D0=BE=D0=B5=20?=
=?UTF-8?q?=D0=94=D0=BE=D1=81=D1=8B=D0=BB=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=9F?=
=?UTF-8?q?=D0=B0=D1=82=D1=80=D0=BE=D0=BD=D0=B0=20(#58)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* tweak: hristov
* WD EDIT
* fix
---
.../Weapons/Ranged/Systems/GunSystem.cs | 3 +-
.../BallisticAmmoProviderComponent.cs | 9 +++++
.../Systems/SharedGunSystem.Ballistic.cs | 19 +++++++++--
Content.Shared/Wieldable/WieldableSystem.cs | 20 +++++++----
Resources/Audio/_White/Guns/attributions.yml | 4 +++
Resources/Audio/_White/Guns/insert.ogg | Bin 0 -> 8265 bytes
.../Prototypes/Catalog/uplink_catalog.yml | 4 +--
.../Ammunition/Projectiles/antimateriel.yml | 4 +--
.../Weapons/Guns/Launchers/launchers.yml | 1 +
.../Weapons/Guns/Shotguns/shotguns.yml | 2 ++
.../Objects/Weapons/Guns/Snipers/snipers.yml | 26 +++++++++++++--
.../Guns/Snipers/hristov-icons.rsi/base.png | Bin 0 -> 696 bytes
.../Snipers/hristov-icons.rsi/bolt-open.png | Bin 0 -> 701 bytes
.../Guns/Snipers/hristov-icons.rsi/icon.png | Bin 0 -> 716 bytes
.../Guns/Snipers/hristov-icons.rsi/mag-0.png | Bin 0 -> 229 bytes
.../Guns/Snipers/hristov-icons.rsi/meta.json | 23 +++++++++++++
.../hristov-inhands.rsi/equipped-BACKPACK.png | Bin 0 -> 1485 bytes
.../hristov-inhands.rsi/inhand-left.png | Bin 0 -> 1665 bytes
.../hristov-inhands.rsi/inhand-right.png | Bin 0 -> 1809 bytes
.../Snipers/hristov-inhands.rsi/meta.json | 31 ++++++++++++++++++
.../wielded-inhand-left.png | Bin 0 -> 1365 bytes
.../wielded-inhand-right.png | Bin 0 -> 1950 bytes
22 files changed, 129 insertions(+), 17 deletions(-)
create mode 100644 Resources/Audio/_White/Guns/attributions.yml
create mode 100644 Resources/Audio/_White/Guns/insert.ogg
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-icons.rsi/base.png
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-icons.rsi/bolt-open.png
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-icons.rsi/icon.png
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-icons.rsi/mag-0.png
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-icons.rsi/meta.json
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/equipped-BACKPACK.png
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/inhand-left.png
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/inhand-right.png
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/meta.json
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/wielded-inhand-left.png
create mode 100644 Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/wielded-inhand-right.png
diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs
index fbc46f5917..7c61aaa200 100644
--- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs
+++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs
@@ -169,7 +169,8 @@ public override void Shoot(EntityUid gunUid, GunComponent gun, List<(EntityUid?
}
// Something like ballistic might want to leave it in the container still
- if (!cartridge.DeleteOnSpawn && !Containers.IsEntityInContainer(ent!.Value))
+ if (!cartridge.DeleteOnSpawn && !Containers.IsEntityInContainer(ent!.Value) &&
+ (!TryComp(gunUid, out BallisticAmmoProviderComponent? ballistic) || ballistic.AutoCycle)) // WD EDIT
EjectCartridge(ent.Value, angle);
Dirty(ent!.Value, cartridge);
diff --git a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs
index eb04d3227d..cc483ce533 100644
--- a/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs
+++ b/Content.Shared/Weapons/Ranged/Components/BallisticAmmoProviderComponent.cs
@@ -44,6 +44,15 @@ public sealed partial class BallisticAmmoProviderComponent : Component
[ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
public bool Cycleable = true;
+ // WD EDIT START
+ ///
+ /// Automatically cycles the firearm after firing a round
+ ///
+ [ViewVariables(VVAccess.ReadWrite), DataField]
+ [AutoNetworkedField]
+ public bool AutoCycle = true;
+ // WD EDIT END
+
///
/// Is it okay for this entity to directly transfer its valid ammunition into another provider?
///
diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs
index 91aad89582..061a84ee3b 100644
--- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs
+++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs
@@ -240,14 +240,29 @@ private void OnBallisticTakeAmmo(EntityUid uid, BallisticAmmoProviderComponent c
entity = component.Entities[^1];
args.Ammo.Add((entity, EnsureShootable(entity)));
- component.Entities.RemoveAt(component.Entities.Count - 1);
- Containers.Remove(entity, component.Container);
+
+ if (component.AutoCycle) // WD EDIT
+ {
+ component.Entities.RemoveAt(component.Entities.Count - 1);
+ Containers.Remove(entity, component.Container);
+ }
+ else
+ break;
}
else if (component.UnspawnedCount > 0)
{
component.UnspawnedCount--;
entity = Spawn(component.Proto, args.Coordinates);
args.Ammo.Add((entity, EnsureShootable(entity)));
+
+ // WD EDIT START
+ if (!component.AutoCycle && HasComp(entity))
+ {
+ component.Entities.Add(entity);
+ Containers.Insert(entity, component.Container);
+ break;
+ }
+ // WD EDIT END
}
}
diff --git a/Content.Shared/Wieldable/WieldableSystem.cs b/Content.Shared/Wieldable/WieldableSystem.cs
index 6bd406c1ca..4cdb23a376 100644
--- a/Content.Shared/Wieldable/WieldableSystem.cs
+++ b/Content.Shared/Wieldable/WieldableSystem.cs
@@ -61,15 +61,10 @@ private void OnMeleeAttempt(EntityUid uid, MeleeRequiresWieldComponent component
private void OnShootAttempt(EntityUid uid, GunRequiresWieldComponent component, ref AttemptShootEvent args)
{
- if (TryComp(uid, out var wieldable) &&
- !wieldable.Wielded)
+ if (TryComp(uid, out var wieldable) && !wieldable.Wielded)
{
args.Cancelled = true;
-
- if (!HasComp(uid) && !HasComp(uid))
- {
- args.Message = Loc.GetString("wieldable-component-requires", ("item", uid));
- }
+ args.Message = Loc.GetString("wieldable-component-requires", ("item", uid));
}
}
@@ -214,6 +209,17 @@ public bool TryWield(EntityUid used, WieldableComponent component, EntityUid use
/// True if the attempt wasn't blocked.
public bool TryUnwield(EntityUid used, WieldableComponent component, EntityUid user)
{
+ // WD EDIT START
+ if (!component.Wielded)
+ return false;
+
+ if (TryComp(used, out var ballisticAmmoProvider)
+ && ballisticAmmoProvider.Entities.Count != 0
+ && TryComp(ballisticAmmoProvider.Entities[^1], out var cartridgeAmmo)
+ && cartridgeAmmo.Spent)
+ return false;
+ // WD EDIT END
+
var ev = new BeforeUnwieldEvent();
RaiseLocalEvent(used, ev);
diff --git a/Resources/Audio/_White/Guns/attributions.yml b/Resources/Audio/_White/Guns/attributions.yml
new file mode 100644
index 0000000000..9f858cf67f
--- /dev/null
+++ b/Resources/Audio/_White/Guns/attributions.yml
@@ -0,0 +1,4 @@
+- files: ["insert.ogg"]
+ 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"
diff --git a/Resources/Audio/_White/Guns/insert.ogg b/Resources/Audio/_White/Guns/insert.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..cb82a03975b1385ddd02d281e38def1663301521
GIT binary patch
literal 8265
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
e5ga={Ji&jp^Kss!mj4O>00005nL
literal 0
HcmV?d00001
diff --git a/Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-icons.rsi/bolt-open.png b/Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-icons.rsi/bolt-open.png
new file mode 100644
index 0000000000000000000000000000000000000000..540739166c3009398f81a5037d10a59dfa6b87df
GIT binary patch
literal 701
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
literal 0
HcmV?d00001
diff --git a/Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/inhand-left.png b/Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/inhand-left.png
new file mode 100644
index 0000000000000000000000000000000000000000..2c31a2f02455bed83d99c36dffa1ccf5ecef8409
GIT binary patch
literal 1665
zcmV-{27dX8P)FrGMJ3{D(r`J^b=o|(M&&6}C`
zo*zsIfo~b#6)ix~cq5=_0gA>O0YwW?G~Ng(T7aVQMnKU56pc3miWZ<~%$jbUV
ziSa$lvSC@aeD1m)0APEwitWv6B9NhH)XxOpzf6tS;o{b=v`)3N8>ZV1=)(CJ)b
zd$S4vqT)EPEL%hoXWN@q+zon?1XHl0qCv~D5k-9Lp6?$40NU*<06@K7N2hZw+o;O-
z!;k?GL(ZX+kOjFDU|BZGwha=jY}-t4lO|-WSZcfN%_`!tfTZ#OAmX-6Z)-wE?gVHv
zgu6kHr733!p(=)$Q~*Q<;%lZ_Qx;3eeG?pVEB87yt)u6c7L&qBVT@_=!lE
zh^3W1eE9eY578Qc5t***3E*k1mu;I3IcK!L06-LR@(a)pLj*x!EbA;z0YQq>MmXdg
z?|%3Z%j-J~0D8BV2}dQ0II25M0Kk7=Z^ge4f1_;MvOfTZ*xc!4iI)L_Adm#8)@8a8
z&SVLYNvfv0yuQPFx0h4<_HHk+yuQOUB<&%3IKrbAJI-ONqD@!5j4xX
zn@ZQ)n^ipC-w4%mhMY_12zXiwK@gzRxt7k9sq3pFcLKb|0lM9h*+vm(6~|%yFof4Q
zz}EXO;_?0lz=$OJ0KnG!FQ_<<@EQlwe~6;dG1u*m`p0HJ=2#J4LPG8Ybh{yHHHWDJ
zRUC(PyCHo45MJXzs51(T$f(sE;roY@JT;)H)kgh;Adt%IZZv`V=)u(_%pw?Ku@V3v
z*Rj_)U_tPgh<$wF`$tllcKb>w?Z;-ANYUd06-0>ZdYOEI+)n}5_2jyzq$r7YcO{L(iENKw$5XJnp;-*ZqUn=uTz&qt93HAlqmXhT@Q>g
znMlo=eJW%Ln1IOAJvvpvA?K)Q&$1>(XKn#Q&T%*Bp}NzQA@4Liw`r0k-3@w)J)zzH
z^+k!1xxN_b-Ci1zpyJ}BI}
zO+tBccJvVT6)E)0L;-WM0N+1K%!sZ$ZFH*guItHNJ`1u2Pjewabz@tt6ZFF{5j4?z
zzl!6G<@D8dCZM3p6f-A4Ro=2}bi1QanRe`Yy)KpPbgt#>1wkMQF@^6R%HJz8A(9H3
zRW;mIq0V%i8^|<%t>)nD><<}sSh
p+NfY_qasY@p4k#m-|?%CJ`Iar
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
Xwt&|Qk&&2t00000NkvXXu0mjf#r}HV
literal 0
HcmV?d00001
diff --git a/Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/wielded-inhand-right.png b/Resources/Textures/_White/Objects/Weapons/Guns/Snipers/hristov-inhands.rsi/wielded-inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..b642cc9d8ac6a2131ffc2af5043d7b845bcceaaf
GIT binary patch
literal 1950
zcmV;P2VwY$P)#sT&EP**($=0#T5xe2|6W!u(m@7!KM&rHC&Mr^>rISe1Hm(
zOU~@unc3Ol2&ELx8K2o!z&0uZY%5?J6#=#tu#JiU+X~o5MSyJuY@;H;wgR?M5nx*Z
z+c)>tKz#h?k3!`>eR>a)SF0`Gkt8ccg%Ei7@T-v&JRuB6I;xk6
zFX`Bf-egq(Fc=In<1;aU*k^(?YpIfgS%-ek+$PJc6t{wH<9Ep|(y^soN0^b<+=}?h
zaxe=x2(}Zay$RqjE#TP53%q5adHa?!_i6K@B4w4(e3tje*WHrV7J>tx7*8<%Ydct7EQqS12h|L{o~*SUthlg
zu&QhUON*l#WgfN`L^uvTm+w;jp@~v$@lZ<=LgW@i?v;SDC`*)CDQ-5}y0Gebk1_?&
zA_DGx7bpY14Fbq)k7i)xmahRvXfbDYjv9OZ`(4>7oP^mu(
z^Rqht_HJ%j+u-{FI-N@$yz)|F-wzZuY3wVTFWwpfN+~Va^E`AqmuqP$rIz|rb3v2D
zu4$=>yp;IZve#Tdh$V?hA`yn8jcF+lis9>5)Fg2<+=uK!7oaUC&&&){OYh$SUw@&m
z?~|4S(B}qIZp(EMh9fbXPXzTVA-#Tx?2X%ClE}5*Aj3fyvu{W_45y`yuYAGE`ev2WrLt@o#D!w?IyfYVmQ3P#f7Wyo6Qk>$Q3z_
zTp8Khi(dW&y&4Pu1VaQ3viezDRGp3G1i?S>8En7MBao<=F8*}Ir7N@bhAbo
z*+r=}u!Vqgz}Xi?D*|jQU>g+ywiU3AiU8XR*v5a~vR6s+*73;z0000`GY*88pWW~k(Di`ZOw$nInADM!
zA0NMW^KX5!eOxoZJ~?wv-Dko;;65U|2K9!IJz(hzbllV}vu2d|4MkswYOZFKXnjVs
z8DD7!UIpAcES^*ZY3wk8^)5JuPKm>w!+C>Ofv!Lef81u+{64%<0F>I;DZUq*o|7eM
z+qS*qew;{Mz6;E`X?KdeeZ6L&SY9obSD%}&n9EBwqm;~DtX`dxC5eVfpPFQm`(Pmc
zYp-yp%cv^QrW#Sreg6k3ccufty+8apm;%I~dUB+Cb?U;6
zR96D!w?E+`@ls$nmthz{275l%o!bv6(?Jb1O&iz7;mY5z)J9(rfAwDvpPR1$`?LTu
zs`~1mz71gVd>`8W7aGcU{PUfs(sC@K&BT*R-7;C8&%FmIwQ=XReo!p`Abwer*53V2
zM4Mr>09b;;o0jWF)^*_+;14C-L(nfWSPiGU<>S{X0OCny7}C=amcBsz;FccWfT)CT
z1=zi87zjY_Pl38+n#)U_QGdrDCpx2Hb9u?{t-zlG@ub3YxCBO8j`?*`{`dBPsOCaj
ztzn1~+G+)G(S59Dr@D-!l2EfyvxWRZXEglcT+Q!zJ@NbZ5}~aYi_AIIW&XZC6lj0C
kZhgA$OEO;w_VcO#0xET~eYSkqJpcdz07*qoM6N<$f}-@HK>z>%
literal 0
HcmV?d00001