From 4c2b521c905df97fd269d829e365cfa66650b841 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 6 May 2023 23:14:54 -0400 Subject: [PATCH] Water gun cargo crate (#16172) --- Content.Client/Sprite/RandomSpriteSystem.cs | 6 +- Content.Server/Sprite/RandomSpriteSystem.cs | 27 +++-- .../Sprite/RandomSpriteComponent.cs | 7 ++ .../prototypes/catalog/cargo/cargo-fun.ftl | 3 + .../catalog/fills/crates/fun-crates.ftl | 3 + .../Prototypes/Catalog/Cargo/cargo_fun.yml | 10 ++ .../Prototypes/Catalog/Fills/Crates/fun.yml | 10 ++ .../Objects/Weapons/Guns/Basic/watergun.yml | 104 ++++++++++++++++++ .../Weapons/Guns/Projectiles/projectiles.yml | 2 +- .../Guns/Pistols/soaker.rsi/detail1.png | Bin 0 -> 165 bytes .../Guns/Pistols/soaker.rsi/detail2.png | Bin 0 -> 170 bytes .../Weapons/Guns/Pistols/soaker.rsi/icon.png | Bin 0 -> 281 bytes .../Guns/Pistols/soaker.rsi/inhand-left.png | Bin 0 -> 630 bytes .../Guns/Pistols/soaker.rsi/inhand-right.png | Bin 0 -> 613 bytes .../Weapons/Guns/Pistols/soaker.rsi/meta.json | 28 +++++ .../Guns/Pistols/water_pistol.rsi/detail.png | Bin 0 -> 253 bytes .../Guns/Pistols/water_pistol.rsi/display.png | Bin 0 -> 565 bytes .../water_pistol.rsi/equipped-BELT.png | Bin 0 -> 220 bytes .../Guns/Pistols/water_pistol.rsi/icon.png | Bin 0 -> 412 bytes .../Pistols/water_pistol.rsi/inhand-left.png | Bin 0 -> 470 bytes .../Pistols/water_pistol.rsi/inhand-right.png | Bin 0 -> 504 bytes .../Guns/Pistols/water_pistol.rsi/meta.json | 32 ++++++ 22 files changed, 220 insertions(+), 12 deletions(-) create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/detail1.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/detail2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/detail.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/display.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/equipped-BELT.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/meta.json diff --git a/Content.Client/Sprite/RandomSpriteSystem.cs b/Content.Client/Sprite/RandomSpriteSystem.cs index 30c0f8622e..04f6681136 100644 --- a/Content.Client/Sprite/RandomSpriteSystem.cs +++ b/Content.Client/Sprite/RandomSpriteSystem.cs @@ -45,14 +45,14 @@ public sealed class RandomSpriteSystem : SharedRandomSpriteSystem if (_reflection.TryParseEnumReference(layer.Key, out var @enum)) { if (!sprite.LayerMapTryGet(@enum, out index, logError: true)) - return; + continue; } else if (!sprite.LayerMapTryGet(layer.Key, out index)) { - if (layer.Key is not string strKey || !int.TryParse(strKey, out index)) + if (layer.Key is not { } strKey || !int.TryParse(strKey, out index)) { Logger.Error($"Invalid key `{layer.Key}` for entity with random sprite {ToPrettyString(uid)}"); - return; + continue; } } diff --git a/Content.Server/Sprite/RandomSpriteSystem.cs b/Content.Server/Sprite/RandomSpriteSystem.cs index 78ac695258..035f7c6903 100644 --- a/Content.Server/Sprite/RandomSpriteSystem.cs +++ b/Content.Server/Sprite/RandomSpriteSystem.cs @@ -1,4 +1,3 @@ -using System.Linq; using Content.Shared.Decals; using Content.Shared.Sprite; using Robust.Shared.GameStates; @@ -27,17 +26,29 @@ public sealed class RandomSpriteSystem: SharedRandomSpriteSystem if (component.Available.Count == 0) return; - var group = _random.Pick(component.Available); - component.Selected.EnsureCapacity(group.Count); + var groups = new List>(); + if (component.GetAllGroups) + { + groups = component.Available; + } + else + { + groups.Add(_random.Pick(component.Available)); + } + + component.Selected.EnsureCapacity(groups.Count); - foreach (var layer in group) + foreach (var group in groups) { - Color? color = null; + foreach (var layer in group) + { + Color? color = null; - if (!string.IsNullOrEmpty(layer.Value.Color)) - color = _random.Pick(_prototype.Index(layer.Value.Color).Colors.Values); + if (!string.IsNullOrEmpty(layer.Value.Item2)) + color = _random.Pick(_prototype.Index(layer.Value.Item2).Colors.Values); - component.Selected.Add(layer.Key, (layer.Value.State, color)); + component.Selected.Add(layer.Key, (layer.Value.Item1, color)); + } } Dirty(component); diff --git a/Content.Shared/Sprite/RandomSpriteComponent.cs b/Content.Shared/Sprite/RandomSpriteComponent.cs index d511b2b123..568ab6101c 100644 --- a/Content.Shared/Sprite/RandomSpriteComponent.cs +++ b/Content.Shared/Sprite/RandomSpriteComponent.cs @@ -5,6 +5,13 @@ namespace Content.Shared.Sprite; [RegisterComponent, NetworkedComponent] public sealed class RandomSpriteComponent : Component { + /// + /// Whether or not all groups from are used, + /// or if only one is picked at random. + /// + [DataField("getAllGroups")] + public bool GetAllGroups; + /// /// Available colors based on group, parsed layer enum, state, and color. /// Stored as a list so we can have groups of random sprites (e.g. tech_base + tech_flare for holoparasite) diff --git a/Resources/Locale/en-US/prototypes/catalog/cargo/cargo-fun.ftl b/Resources/Locale/en-US/prototypes/catalog/cargo/cargo-fun.ftl index 48014ce0ef..d4c1d9ddf6 100644 --- a/Resources/Locale/en-US/prototypes/catalog/cargo/cargo-fun.ftl +++ b/Resources/Locale/en-US/prototypes/catalog/cargo/cargo-fun.ftl @@ -16,5 +16,8 @@ ent-FunBoardGames = { ent-CrateFunBoardGames } ent-FunATV = { ent-CrateFunATV } .desc = { ent-CrateFunATV.desc } +ent-FunWaterGuns = { ent-CrateFunWaterGuns } + .desc = { ent-CrateFunWaterGuns.desc } + ent-FunParty = { ent-CrateFunParty } .desc = { ent-CrateFunParty.desc } \ No newline at end of file diff --git a/Resources/Locale/en-US/prototypes/catalog/fills/crates/fun-crates.ftl b/Resources/Locale/en-US/prototypes/catalog/fills/crates/fun-crates.ftl index 5eb24599c2..a79058b40a 100644 --- a/Resources/Locale/en-US/prototypes/catalog/fills/crates/fun-crates.ftl +++ b/Resources/Locale/en-US/prototypes/catalog/fills/crates/fun-crates.ftl @@ -37,6 +37,9 @@ ent-CrateFunLightImplants = Light Implants ent-CrateFunParty = Party Crate .desc = An entire party just waiting for you to open it. Includes party favors, party beverages, and even a cake. +ent-CrateFunWaterGuns = Water Gun Crate + .desc = A summer special with a variety of brightly colored water guns. Water not included. + ent-CrateFunSyndicateSegway = Syndicate segway crate .desc = A crate containing a two-wheeler that will help you escape from the security officers. Or not. diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml index 97422e1a41..7d414334e8 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml @@ -78,6 +78,16 @@ category: Fun group: market +- type: cargoProduct + id: CrateFunWaterGuns + icon: + sprite: Objects/Weapons/Guns/Pistols/water_pistol.rsi + state: display + product: CrateFunWaterGuns + cost: 750 + category: Fun + group: market + - type: cargoProduct id: FunPlushies icon: diff --git a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml index 0c05dbe582..d1d9c89cd1 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml @@ -186,6 +186,16 @@ amount: 4 - id: KnifePlastic +- type: entity + id: CrateFunWaterGuns + parent: CratePlastic + components: + - type: StorageFill + contents: + - id: WeaponWaterBlaster + - id: WeaponWaterPistol + amount: 5 + - type: entity id: CrateFunSyndicateSegway parent: CrateLivestock diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml new file mode 100644 index 0000000000..a2a25b56ab --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/watergun.yml @@ -0,0 +1,104 @@ +- type: entity + id: WeaponWaterGunBase + abstract: true + parent: BaseItem + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Pistols/water_pistol.rsi + - type: Clothing + sprite: Objects/Weapons/Guns/Pistols/water_pistol.rsi + slots: BELT + - type: Item + sprite: Objects/Weapons/Guns/Pistols/water_pistol.rsi + size: 10 + - type: Gun + cameraRecoilScalar: 0 #no recoil + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/water_spray.ogg + - type: SolutionContainerManager + solutions: + chamber: + maxVol: 50 #5 shots + - type: SolutionAmmoProvider + solutionId: chamber + proto: BulletWaterShot + - type: SolutionTransfer + transferAmount: 10 + maxTransferAmount: 50 + minTransferAmount: 5 + canChangeTransferAmount: true + - type: UserInterface + interfaces: + - key: enum.TransferAmountUiKey.Key + type: TransferAmountBoundUserInterface + - type: DrawableSolution + solution: chamber + - type: RefillableSolution + solution: chamber + - type: DrainableSolution + solution: chamber + - type: ExaminableSolution + solution: chamber + - type: StaticPrice + price: 100 + - type: PhysicalComposition + materialComposition: + Plastic: 150 + +- type: entity + id: WeaponWaterPistol + parent: WeaponWaterGunBase + name: water pistol + description: The dinkiest of water-based weaponry. You swear the trigger doesn't do anything. + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Pistols/water_pistol.rsi + layers: + - state: detail + - state: icon + map: [ "enum.DamageStateVisualLayers.Base" ] + - type: RandomSprite + available: + - enum.DamageStateVisualLayers.Base: + icon: Rainbow + +- type: entity + id: WeaponWaterBlaster + parent: WeaponWaterGunBase + name: water blaster + description: With this bad boy, you'll be the cooleste kid at the summer barbecue. + components: + - type: Gun + cameraRecoilScalar: 0 #no recoil + fireRate: 2 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/water_spray.ogg + - type: SolutionContainerManager + solutions: + chamber: + maxVol: 100 #10 shots + - type: Sprite + sprite: Objects/Weapons/Guns/Pistols/soaker.rsi + layers: + - state: detail1 + - state: detail2 + map: ["enum.PowerDeviceVisualLayers.Powered"] + - state: icon + map: [ "enum.DamageStateVisualLayers.Base" ] + - type: Item + sprite: Objects/Weapons/Guns/Pistols/soaker.rsi + size: 35 + - type: RandomSprite + getAllGroups: true + available: + - enum.DamageStateVisualLayers.Base: + icon: Rainbow + - enum.PowerDeviceVisualLayers.Powered: + detail2: Sixteen \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index 82b9c0f9b3..642b4f8d0b 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -598,7 +598,7 @@ fix1: shape: !type:PhysShapeAabb - bounds: "-0.25,-0.25,0.25,0.25" + bounds: "-0.10,-0.30,0.10,0.15" hard: false mask: - FullTileMask diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/detail1.png b/Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/detail1.png new file mode 100644 index 0000000000000000000000000000000000000000..ed001bb51421169449267181b39432f1f65c0d8d GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}@t!V@ArY-_ zFKpy&a1e00=%{nx#(^`-)*MM&H#Il4$k5otf_s9sBOl98{kyGy*RU}BV7|T6Z1ddj zsb`*B-T(GWj8QPKd$J1e?S(6kZgg_^$n3vMjB(r4pek8L28ItSxt){b;~(ASmo__i{VyXYUTj18rbPU|X9YzxsqX Q_Z1M&)78&qol`;+0I(!J#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..99f79d16f822e2b327fffefc9c42d9bf94b132b0 GIT binary patch literal 281 zcmV+!0p|XRP)Px#(@8`@R9J=WmCX%n@B2-z#2X$K*f%e>r7KQ9M0ba(I7C$R f=i@kz<2ZX>UBhN4&Oc;800000NkvXXu0mjfBe8PZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d2748f209cceec85e0e9e0afde315612edb649 GIT binary patch literal 630 zcmV-+0*U>JP)Px%FiAu~RCt{2+Odk;KoADt|3cc-1{Z=s9QY*`AxP(Ua3Q_Ky^LM#gJ>}ZmvLuI zl4U`~zJs}9QzYw%Ly=@@bQi;X;KD{8?TjoTtRE0U2qAhzLZ4u?;k9%!z#fL=>EJaL&c|cMl;p58zfO%d!w(oa<#DK%VE&T4U@G-Zmd= zD5a35DeAgrUGHbsYJVuDptZ(kv$=g18|l;B&N&CIH2}bS4{I&&LNU`d0QftEcofUB zd>Zn-vMitCceK_}N&x_jF{tYr&bdK#hGH!S{61IHGz9=GmrEQD2kiIzyZ4i2Sx`#B zdyn02$G*;JmQ%nOgCt1+ARfVR&k&l;TWdi?AxV-^gY3gP03r&FpJ}M;8hM_Ns^z_h zF$Mr`_4ro$j)*7}MG>5HgBozog`y||5j|$ZZQ>o>>&tUzQ?D=2;XUsDKE$`LUj{Wb zbUPu05JCtcgb+dqA%qbBi@E>W=B&^DaFin)F|-9SM6kxjs zWLd@*j_A@BoLH?^Val(7MO&cZ-f%>hhYd~)4M%i&_}~Ob=s|)LLI^Q~U)fiY^$oc_ Qe*gdg07*qoM6N<$f*;2ccmMzZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Pistols/soaker.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..9102333cfd99f4a9adfefe56ce8faeb48b42c9a8 GIT binary patch literal 613 zcmV-r0-F7aP)Px%A4x<(RCt{2+Odl2Kokbx-^*>c7A%B87J{9vFa+UtzJo>b68kb*%!5Qi`n~rB z!oU>s1a@1@7Q1nEO-#ll-njf92r-!9oMWP5et?LGh=_=Y=uDC%E=dyizw5X~)7pPs zTR;c_Ap{~&rfKEthbD?5H3L-d>*FBmerVQuOrp@?787>z}6|)qLTn_C-WQ zL_|bHL_|b%e|`Uz-sk$20SO;{1}XXuYP1@FZy3Q>SyrKItp*^a#CpAUO~VL2s)8C_ ztGqedgtZobU;p87I5Y|)_^1kMq-olE?NhDp^a>%|d_Kowu|Sq(wP6Hb--8;~TI_ba zPVY{)S}X_x2LQ|E5>3Jgx9B^l(drTykH_!{Blx;UP~+wS1VP|hhY=bm3u=U6*x8Uf z*A`e_wQ-Bmh~xGan;n;{$IUfg~6Sj#qEx+uB>^6>vi;Z xmId?g*|EfLt5LE@Pg9@)m)k)N3Dy#J2K8OW;fZlGo&&wW;OXk;vd$@?2>^dUUL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/display.png b/Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/display.png new file mode 100644 index 0000000000000000000000000000000000000000..34b9b663476eb4c9f5db344ddf7616a8db1a3173 GIT binary patch literal 565 zcmV-50?Pe~P)Px$?@2^KR9J=WltD`yK@`V-8`Ow(6O>RfqBy!mN)OpK2l1fbt)IYC@!-AWTIksi zAl`fGhv=bD&_nRhc6$&n>O#dxFhsJZrAZIlLzwL(ncZY5WBg zbmz{=&Vi^}9N)NX&Wo<^x|oio$G2pc9`ObIUK1(ZhP|T`qj5Tgs9J$gv)$tO#sxrR zX1ih{GaJNpZ^_l`_kCJg11h3wvAb4edLqs4S}}-k&I_g|(nDncpz-|&i-)iJ;-O7= zuwnb=cp5vGA4))nQ>$?QyT$&KYe3%vp$34!ghVwXf8L8UEx(t_juHD7NCVP@O!KGf z3q)oH*SljZm7-L341m?IEB?jvOG7m+#Uc6{4(tKwG?OYWGBZeFyH@bcMKf4iDm#WM zK8VO`C~>_y+Y74zESsIqzG^m*r?zVaUtO=3Z6pTNVWewHC-?2a(=yUP*iDdzdYe=d zXM7LLfSt>C4HVa_6Q{<52yMdN)45)K6neuOXtrBjsaLaLj;A@;uzlUWkr{x$wRXLF z@Ia?5&369~dI*t&XutS0^ptNupAFpuQG+NUAtB)pJQT^jMUXGm00000NkvXXu0mjf Dv#$&x literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/equipped-BELT.png b/Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/equipped-BELT.png new file mode 100644 index 0000000000000000000000000000000000000000..34c982eafdd18cbada1e37b149b8c125b2d95770 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|rg^$JhE&XX zdut=FlcES~K+>A}-`3Xd34QzfiZ^gZ&j{GjJl8lPV{zwN2bCGcTB~NyzFy=E)W^`E zrMYxY(5c1MHQD#2Hss#^`gPBiwB8Ff4Rby#wg^m1wLC77|8{C!_I2YmQ#O4&GyB}% zlA4}(Ae}()XL?+9%ewuCm22JzukxvF2s-uap8Azp-x#)WY~x^H$es6xL$ODG&HCpc N#h$KyF6*2UngH6PSPTFF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad794d602956698bb791da94899fc28fe0a784b3 GIT binary patch literal 412 zcmV;N0b~A&P)Px$R!KxbR9J=WltF5QFcgOWj)h?$gq~oSjYseVIY9P8_BoP!PmlxT1Rf!q!4nh- z9cD2@7ww~|7>ykVy2uA2ChGfq`6H0YWd18ksk2h*{OmffvEp@Ie>mp~01r#FZF^cJ z007^`QB~Cy0IanKA;cxTXKE}W5S`ma9yoPfw+Dc-EN|A@gZG|WYY$UnWm(>6eCj;M zq(F#suFzV0#@L{>_B1YpxG=_sln%`C5}S}x_MG!OEx}*tx^6!V!_F9UTrChv&~+$7 zFCRZc(kaCk1xO-nGp%dWG;HeSB%M+mnArs(VVG!l#4yGjrIdY2@nnIeqGQ5k+eCo2 zB=9>2TaXmOanUe!G&A9jIrewR}A zPZa=u!snbT=m5T!#e2`U5SR_25aK;HXRUqPLLigLWIh3*|G%uwI`iuQ0000#xW{bOP6y8CTGTJKtj#-u zR`opoaXCFt=D57qN~040_PpCVdP`%t6}LHchzg1>zWCzf9htOqTduwT{aVHIR?fz| z>J1$yqN<%;mTZliTP^x(_V#ObSC225a{AgVo|hW}HJ=7)hDs%;WzO=ew_-^{B__w5WfYLzAN|$&#uwL6`P)F^{-69;v8qc$c3!yq>c$PH^40r)ykLYl z7UE(JyUK?DG3r0=C*HSdcpv3kznt|vd(15M4+qb*UaQ)=JI4H^082fS-bv;kEAs31 zhY9y`%M_jC{baM=YVNsh*I)0{=$iN0rk*>ndVgj1+p`rm`)2#7eLwv0Lu1DY3FG2( zyw5)W^zPUyWj&Ss!^YDBKD~yUSDzG^bBg(gLmS8i3JdfXPClz&C3SQKi0kR<=d#Wz Gp$P!>SjkKP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Pistols/water_pistol.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..13eed597ece190a5e2d108e3245c44e51d865f6f GIT binary patch literal 504 zcmVPx$vPnciRCt{2+A&MRKoke?S6c_Ah;s#T@bD7^+#K!$+?IcDZ~ z+j+Ra%w1;gE<3-s?1bleQ>9c=PFmGaN+q7>^;fNFRMjj& zS)U+5I;4~nA;h~7VoXG_@B3$N(pr?8S#WBj3LyHLBhXrp z%P7&ZXBKM3OBSX5_I|tFzR2Qcv-z4;L#NX@bX5u2=Cii_Xf!%<-KJmr6Da7vPqfzK uAN%iXDw