From 9bb62181de5d0dfe74d547e157745bbb09cad84c Mon Sep 17 00:00:00 2001
From: Ed <96445749+TheShuEd@users.noreply.github.com>
Date: Thu, 19 Oct 2023 06:55:30 +0300
Subject: [PATCH] Added fun: Darts (#20582)
* add textures
* fix cargo/cargo-fun.ftl
* fix cargo/cargo-fun.ftl again
* update icons and resize hitbox
* really fixed cargo.ftl
* fix soundSpecifier
* balance changes: solution transfer has been reduced from 2 to 1. Now the transfer does not work on targets wearing anything in the outerclothing slot
* add hypodart to uplink
* return of darts solution capacity to 2u
* Update uplink-catalog.ftl
* Update uplink_catalog.yml
* Update darts.yml
* remove hypodart sprite
* Update darts.yml
* Update fun.yml
* add random popups component, resprite dartboard
* localize darts
* fix
* Update darts.yml
---
.../Components/DamageRandomPopupComponent.cs | 13 ++
.../Damage/Systems/DamageRandomPopupSystem.cs | 27 +++
Resources/Locale/en-US/darts/darts-popup.ftl | 6 +
.../prototypes/catalog/cargo/cargo-fun.ftl | 7 +-
.../catalog/fills/crates/fun-crates.ftl | 3 +
.../Prototypes/Catalog/Cargo/cargo_fun.yml | 10 +
.../Catalog/Fills/Boxes/general.yml | 27 ++-
.../Prototypes/Catalog/Fills/Crates/fun.yml | 17 ++
.../Prototypes/Entities/Objects/Fun/darts.yml | 176 ++++++++++++++++++
.../Objects/Fun/Darts/dart_blue.rsi/icon.png | Bin 0 -> 230 bytes
.../Fun/Darts/dart_blue.rsi/inhand-left.png | Bin 0 -> 230 bytes
.../Fun/Darts/dart_blue.rsi/inhand-right.png | Bin 0 -> 228 bytes
.../Objects/Fun/Darts/dart_blue.rsi/meta.json | 22 +++
.../Fun/Darts/dart_purple.rsi/icon.png | Bin 0 -> 235 bytes
.../Fun/Darts/dart_purple.rsi/inhand-left.png | Bin 0 -> 233 bytes
.../Darts/dart_purple.rsi/inhand-right.png | Bin 0 -> 231 bytes
.../Fun/Darts/dart_purple.rsi/meta.json | 22 +++
.../Objects/Fun/Darts/dart_red.rsi/icon.png | Bin 0 -> 236 bytes
.../Fun/Darts/dart_red.rsi/inhand-left.png | Bin 0 -> 233 bytes
.../Fun/Darts/dart_red.rsi/inhand-right.png | Bin 0 -> 232 bytes
.../Objects/Fun/Darts/dart_red.rsi/meta.json | 22 +++
.../Fun/Darts/dart_yellow.rsi/icon.png | Bin 0 -> 228 bytes
.../Fun/Darts/dart_yellow.rsi/inhand-left.png | Bin 0 -> 233 bytes
.../Darts/dart_yellow.rsi/inhand-right.png | Bin 0 -> 231 bytes
.../Fun/Darts/dart_yellow.rsi/meta.json | 22 +++
.../Objects/Fun/Darts/target.rsi/meta.json | 14 ++
.../Fun/Darts/target.rsi/target_dart.png | Bin 0 -> 872 bytes
.../Objects/Storage/boxes.rsi/darts.png | Bin 0 -> 183 bytes
.../Objects/Storage/boxes.rsi/meta.json | 5 +-
29 files changed, 389 insertions(+), 4 deletions(-)
create mode 100644 Content.Server/Damage/Components/DamageRandomPopupComponent.cs
create mode 100644 Content.Server/Damage/Systems/DamageRandomPopupSystem.cs
create mode 100644 Resources/Locale/en-US/darts/darts-popup.ftl
create mode 100644 Resources/Prototypes/Entities/Objects/Fun/darts.yml
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/icon.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/inhand-left.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/inhand-right.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/meta.json
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/icon.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/inhand-left.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/inhand-right.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/meta.json
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_red.rsi/icon.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_red.rsi/inhand-left.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_red.rsi/inhand-right.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_red.rsi/meta.json
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_yellow.rsi/icon.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_yellow.rsi/inhand-left.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_yellow.rsi/inhand-right.png
create mode 100644 Resources/Textures/Objects/Fun/Darts/dart_yellow.rsi/meta.json
create mode 100644 Resources/Textures/Objects/Fun/Darts/target.rsi/meta.json
create mode 100644 Resources/Textures/Objects/Fun/Darts/target.rsi/target_dart.png
create mode 100644 Resources/Textures/Objects/Storage/boxes.rsi/darts.png
diff --git a/Content.Server/Damage/Components/DamageRandomPopupComponent.cs b/Content.Server/Damage/Components/DamageRandomPopupComponent.cs
new file mode 100644
index 0000000000..bcc7f5684b
--- /dev/null
+++ b/Content.Server/Damage/Components/DamageRandomPopupComponent.cs
@@ -0,0 +1,13 @@
+using Content.Server.Damage.Systems;
+
+namespace Content.Server.Damage.Components;
+
+[RegisterComponent, Access(typeof(DamageRandomPopupSystem))]
+///
+/// Outputs a random pop-up from the list when an object receives damage
+///
+public sealed partial class DamageRandomPopupComponent : Component
+{
+ [DataField, ViewVariables(VVAccess.ReadWrite)]
+ public List Popups = new();
+}
diff --git a/Content.Server/Damage/Systems/DamageRandomPopupSystem.cs b/Content.Server/Damage/Systems/DamageRandomPopupSystem.cs
new file mode 100644
index 0000000000..8bdbf84147
--- /dev/null
+++ b/Content.Server/Damage/Systems/DamageRandomPopupSystem.cs
@@ -0,0 +1,27 @@
+using Content.Server.Damage.Components;
+using Content.Server.Popups;
+using Content.Shared.Damage;
+using Robust.Shared.Player;
+using Robust.Shared.Random;
+
+namespace Content.Server.Damage.Systems;
+
+///
+/// Outputs a random pop-up from the strings list when an object receives damage
+///
+public sealed class DamageRandomPopupSystem : EntitySystem
+{
+ [Dependency] private readonly PopupSystem _popupSystem = default!;
+ [Dependency] private readonly IRobustRandom _random = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+ SubscribeLocalEvent(OnDamageChange);
+ }
+
+ private void OnDamageChange(EntityUid uid, DamageRandomPopupComponent component, DamageChangedEvent args)
+ {
+ _popupSystem.PopupEntity(Loc.GetString(_random.Pick(component.Popups)), uid);
+ }
+}
diff --git a/Resources/Locale/en-US/darts/darts-popup.ftl b/Resources/Locale/en-US/darts/darts-popup.ftl
new file mode 100644
index 0000000000..82bf7fde53
--- /dev/null
+++ b/Resources/Locale/en-US/darts/darts-popup.ftl
@@ -0,0 +1,6 @@
+darts-popup-bullseye = Bullseye! 50 points!
+darts-popup-25 = 25 points
+darts-popup-10 = 10 points
+darts-popup-5 = 5 points
+darts-popup-1 = 1 point
+darts-popup-miss = Miss
\ No newline at end of file
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 d4c1d9ddf6..018a44a8aa 100644
--- a/Resources/Locale/en-US/prototypes/catalog/cargo/cargo-fun.ftl
+++ b/Resources/Locale/en-US/prototypes/catalog/cargo/cargo-fun.ftl
@@ -17,7 +17,10 @@ ent-FunATV = { ent-CrateFunATV }
.desc = { ent-CrateFunATV.desc }
ent-FunWaterGuns = { ent-CrateFunWaterGuns }
- .desc = { ent-CrateFunWaterGuns.desc }
+ .desc = { ent-CrateFunWaterGuns.desc }
ent-FunParty = { ent-CrateFunParty }
- .desc = { ent-CrateFunParty.desc }
\ No newline at end of file
+ .desc = { ent-CrateFunParty.desc }
+
+ent-FunDartsSet = { ent-CrateFunDartsSet }
+ .desc = { ent-CrateFunDartsSet.desc }
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 27bc24853c..1e5e069352 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
@@ -51,3 +51,6 @@ ent-CrateFunBikeHornImplants = Bike Horn Implants
ent-CrateFunMysteryFigurines = Mystery Figure Crate
.desc = A collection of 10 Mystery Figurine boxes. Duplicates non refundable.
+
+ent-CrateFunDartsSet = Dartboard Box Set
+ .desc = A box with everything you need for a fun game of darts.
diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml
index 5ea658ffe5..e114545b9d 100644
--- a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml
+++ b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml
@@ -186,4 +186,14 @@
product: CrateFunMysteryFigurines
cost: 4000
category: Fun
+ group: market
+
+- type: cargoProduct
+ id: FunDartsSet
+ icon:
+ sprite: Objects/Fun/Darts/dart_red.rsi
+ state: icon
+ product: CrateFunDartsSet
+ cost: 900
+ category: Fun
group: market
\ No newline at end of file
diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/general.yml b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml
index 78d04343b6..d05dfbb4ed 100644
--- a/Resources/Prototypes/Catalog/Fills/Boxes/general.yml
+++ b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml
@@ -425,4 +425,29 @@
- type: Sprite
state: box
- type: RadiationBlockingContainer
- resistance: 2
\ No newline at end of file
+ resistance: 2
+
+- type: entity
+ name: darts box
+ parent: BoxCardboard
+ id: BoxDarts
+ description: This box filled with colorful darts.
+ components:
+ - type: Item
+ size: 40
+ - type: StorageFill
+ contents:
+ - id: Dart
+ amount: 5
+ - id: DartBlue
+ amount: 5
+ - id: DartPurple
+ amount: 5
+ - id: DartYellow
+ amount: 5
+ - type: Storage
+ capacity: 40
+ - type: Sprite
+ layers:
+ - state: box
+ - state: darts
\ No newline at end of file
diff --git a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml
index 23a178b094..48877fd889 100644
--- a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml
+++ b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml
@@ -290,3 +290,20 @@
- id: MysteryFigureBox
amount: 15
prob: 0.05
+
+- type: entity
+ name: Dartboard Box Set
+ description: A box with everything you need for a fun game of darts.
+ id: CrateFunDartsSet
+ parent: CratePlastic
+ components:
+ - type: StorageFill
+ contents:
+ - id: TargetDarts
+ amount: 1
+ - id: BoxDarts
+ amount: 1
+ - id: BoxDarts
+ amount: 1
+ prob: 0.05
+
diff --git a/Resources/Prototypes/Entities/Objects/Fun/darts.yml b/Resources/Prototypes/Entities/Objects/Fun/darts.yml
new file mode 100644
index 0000000000..bd4163d974
--- /dev/null
+++ b/Resources/Prototypes/Entities/Objects/Fun/darts.yml
@@ -0,0 +1,176 @@
+- type: entity
+ name: dart
+ description: light throwing dart for playing darts. Don't get in the eye!
+ parent: BaseItem
+ id: Dart
+ components:
+ - type: EmbeddableProjectile
+ minimumSpeed: 3
+ removalTime: 0.5
+ offset: 0.0,0.0
+ - type: ThrowingAngle
+ angle: 315
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape: !type:PolygonShape
+ vertices:
+ - -0.20,0.10
+ - -0.10,0.20
+ - 0.20,-0.10
+ - 0.10,-0.20
+ density: 20
+ mask:
+ - ItemMask
+ restitution: 0.3
+ friction: 0.2
+ - type: Sprite
+ sprite: Objects/Fun/Darts/dart_red.rsi
+ state: icon
+ - type: MeleeWeapon
+ damage:
+ types:
+ Piercing: 2
+ angle: 0
+ animation: WeaponArcThrust
+ soundHit:
+ path: /Audio/Weapons/pierce.ogg
+ - type: DamageOtherOnHit
+ damage:
+ types:
+ Piercing: 4
+ - type: Item
+ size: 2
+ sprite: Objects/Fun/Darts/dart_red.rsi
+ - type: ItemCooldown
+ - type: SolutionContainerManager
+ solutions:
+ melee:
+ maxVol: 2
+ - type: MeleeChemicalInjector
+ solution: melee
+ - type: RefillableSolution
+ solution: melee
+ - type: InjectableSolution
+ solution: melee
+ - type: SolutionInjectOnCollide
+ transferAmount: 2
+ blockSlots: OUTERCLOTHING
+ - type: SolutionTransfer
+ maxTransferAmount: 2
+ - type: Damageable
+ damageContainer: Inorganic
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 30 #excess damage avoids cost of spawning entities.
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - trigger:
+ !type:DamageTrigger
+ damage: 20
+ behaviors:
+ - !type:PlaySoundBehavior
+ sound:
+ collection: GlassBreak
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ PartRodMetal1:
+ min: 1
+ max: 1
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - type: Appearance
+ - type: SolutionContainerVisuals
+ maxFillLevels: 1
+ fillBaseName: dart
+
+- type: entity
+ parent: Dart
+ id: DartBlue
+ components:
+ - type: Sprite
+ sprite: Objects/Fun/Darts/dart_blue.rsi
+ - type: Item
+ sprite: Objects/Fun/Darts/dart_blue.rsi
+
+- type: entity
+ parent: Dart
+ id: DartPurple
+ components:
+ - type: Sprite
+ sprite: Objects/Fun/Darts/dart_purple.rsi
+ - type: Item
+ sprite: Objects/Fun/Darts/dart_purple.rsi
+
+- type: entity
+ parent: Dart
+ id: DartYellow
+ components:
+ - type: Sprite
+ sprite: Objects/Fun/Darts/dart_yellow.rsi
+ - type: Item
+ sprite: Objects/Fun/Darts/dart_yellow.rsi
+
+- type: entity
+ name: dartboard
+ id: TargetDarts
+ parent: BaseStructureDynamic
+ description: A target for playing darts.
+ components:
+ - type: Sprite
+ sprite: Objects/Fun/Darts/target.rsi
+ state: target_dart
+ noRot: true
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeCircle
+ radius: 0.35
+ density: 50
+ mask:
+ - FullTileMask
+ layer:
+ - WallLayer
+ - type: InteractionOutline
+ - type: Physics
+ - type: Damageable
+ - type: DamageRandomPopup
+ popups:
+ - darts-popup-bullseye
+ - darts-popup-25
+ - darts-popup-10
+ - darts-popup-10
+ - darts-popup-5
+ - darts-popup-5
+ - darts-popup-5
+ - darts-popup-1
+ - darts-popup-1
+ - darts-popup-1
+ - darts-popup-miss
+ - darts-popup-miss
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 500
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - trigger:
+ !type:DamageTrigger
+ damage: 300
+ behaviors:
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ MaterialWoodPlank:
+ min: 5
+ max: 5
+ - !type:PlaySoundBehavior
+ sound:
+ path: /Audio/Effects/tree_fell.ogg
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/icon.png b/Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a1cfdbb2b1564a7c9c7a5f3792eb2ed0b5fdab3
GIT binary patch
literal 230
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}3p`yMLn2y}
z6C_v{Cy4Yk1sZUjV3@Oc*}vt}B7L4@{L(w*XzIRU!lDTMz2E*v8#1!BeU_J)C&d+T
zxbBkEgG*=9+#ZI@OSHt-CV;?%b#IqOg-qc2aw+@2@tWDc=LfkP1ik9GeN2eQslVR9
zCRb1Gw9Y0WMV^>hH_xo7`o?+Alv2EM=F7*j9D+fOQhYA#RK-85qL1
W=_qh}vYP_k%HZkh=d#Wzp$Py$+g4Nn
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/inhand-left.png b/Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/inhand-left.png
new file mode 100644
index 0000000000000000000000000000000000000000..21a72d130376f7c29180606ee7ff4cb2da51f41b
GIT binary patch
literal 230
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|7I?ZihE&XX
zd&`io$v}ej!J`&y>F>!8dE^dWJi6LK+I`)jYk}eHSq2TC)bDTKURn9_+bkiVwga;t
zfBp2QyiN7l6Z;ygIkT;DIEz1vbDxNf-+FjPQSkct@7RlimzPNdzx$Q-G4<_BnOCAY
zlgzz1XFuC>SAMr%;`^UKLx6xo^;Jw<(46DTUH%&zJYCJS=)Yt{=#-r`!CoF_l?)7v
Zsu<0^t^bxj3JwIR_H^}gS?83{1ORWETdDv6
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/inhand-right.png b/Resources/Textures/Objects/Fun/Darts/dart_blue.rsi/inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..6913eafd629c3488a58f8ed3bda3246e968b6978
GIT binary patch
literal 228
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|=6Sj}hE&XX
zduz8~lY;=mg~J?0M!%F7vUwY*Y!ppCJ|XOc-Vw1GkHgq&_3zL9+p=4e5vVET%H8L0
zXMe1YStL~cz4CNz^qnIYf9yTPHsQA!@99~eEKFTLKEA?pdREc>YkIo(3igKHje1+N
za8Z}-Q31L0;TaPz{sfuA!0pZ@T0e>o3Z)1)gK
z=5Gh7`gnbPJP-fA|4WWYylS}X-XE-+J&AYP+GTM+4Y=G6
gY5-l;kjKElb4#~dWsb}Vpo1AaUHx3vIVCg!0FK96>;M1&
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/inhand-left.png b/Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/inhand-left.png
new file mode 100644
index 0000000000000000000000000000000000000000..21066439d1e2bbbb0f8354efb720c2dc315a3d5c
GIT binary patch
literal 233
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|7JIrlhE&XX
zd&`io$w7qW!qKit1zOTs-h7WTb9`3luI%O9zTk<-t*C~B45$3>y)HMNnPWa%2&nPE
z?9(s5{V8u#efGq@#wzAX>J6c1&*tka$Xm5W`d7%4r@vm-EjV%d3UBSI*;>&xH-A>}
ze&sSdDZRACw|Lw4m6bc5SKH{`&8Q
zwX$>dLqaw#mpJtJCzq~~l|9fHAeiHFPSf^{&A-f@|5@yf8}|O^SYFn3xpK<>ynFkB
a(m(GRXW9JUyD$1WNU^7@pUXO@geCx1=U$%x
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/meta.json b/Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/meta.json
new file mode 100644
index 0000000000..a219ffdd17
--- /dev/null
+++ b/Resources/Textures/Objects/Fun/Darts/dart_purple.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made by TheShuEd (github) for ss14",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_red.rsi/icon.png b/Resources/Textures/Objects/Fun/Darts/dart_red.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..1fdb737923da81901c89f55ca4f0d12bf68771a4
GIT binary patch
literal 236
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}%RF5iLn2y}
z6C_v{Cy4Yk1sZUjU~qrS^gsBtj#`n)NsszPvy>w|0{2`s{J8(q_jI27?~M&kXw)rg
z`@5vI;rqXzJ>`~5CEgWz85#h=oec%cEkq|1_>2=G!
zSA=iyyr-d>GwX9%ep&3Hd!HFW#xMwYUD;W4>WPh=+OPSIhVh~Tf6pISwdl;#*+EX5
dPBJqHT;-0vZ5R65eR(fPwWq6}%Q~loCIE%vUvvNf
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_red.rsi/inhand-right.png b/Resources/Textures/Objects/Fun/Darts/dart_red.rsi/inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..392b36fcc5a3168bb0ca0ec7fe0c36e6c812ba74
GIT binary patch
literal 232
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|7J0fjhE&XX
zduuOmQ-A=&gLYZ(2^S2R)`}KeEMeVfX2ig%Y{0^~&OvSt+uwcv^u7n*Tgn2|RW@Em$XBqe&(FjS9oeC3g73cH9Qxp_4?_HOONiZ-|oD<
ztYlw6;L&+W9R1I=x14zK2WSk)Bq7V?Up9RHvHa;j;Xh{>zWr04b4%0jdEmcYmH(L-
b7@kx!mmjwamCU-l0HoT})z4*}Q$iB}>JwbE
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_red.rsi/meta.json b/Resources/Textures/Objects/Fun/Darts/dart_red.rsi/meta.json
new file mode 100644
index 0000000000..a219ffdd17
--- /dev/null
+++ b/Resources/Textures/Objects/Fun/Darts/dart_red.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Made by TheShuEd (github) for ss14",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_yellow.rsi/icon.png b/Resources/Textures/Objects/Fun/Darts/dart_yellow.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e4754c2398b11e208dfdfbf4d3706e0599ca0fd
GIT binary patch
literal 228
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}^E_P~Ln2y}
z6C_v{Cy4Yk1sZUjVAvj(_HX&LNS`MeL0gy1Q;zTmtl4G#ZT})p`NOw&^YE;i_J2j9
zeWqeU)UFvH|IPI0`F_48DFFy7Hrvn63UoBGxGVen|Nq5j{!g)Lni%B%;q*rXj!r|v
z4huik(>j}k6nSP$(@XpF;|2HO-Qia}`9&JIEX%Z3%4L+RloLBZ3yMWtHGr@aN?BujQ4MJKx260W~t@
z%U!?x`M%_|8I%8icv%p~m*_oXcKxP?MXNTidl?+Z_j>v7#yv7Y*T1Y>@hazI>i5rv
zSF~@au$Zo_dh|VFfeeazKXF+Es~QL{(JtwjP+a{|I!me1D}2J)l|Is
dgpr}+6{{nY+Yepid3QjnJzf1=);T3K0RZ$uTvGr5
literal 0
HcmV?d00001
diff --git a/Resources/Textures/Objects/Fun/Darts/dart_yellow.rsi/inhand-right.png b/Resources/Textures/Objects/Fun/Darts/dart_yellow.rsi/inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..fbbfe1e5a8b884eeceb0ca2daa77c8e7baf6143e
GIT binary patch
literal 231
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|7J9lkhE&XX
zduy*?QveUcgLdr$Y(9q+{0?Yb<2lG97Ba83$H|j--2vMUxnH%lML#tsPXX#;;4|TU
z`|IovUA@50P9fn!+#ZRVv=*^LFOPx&B1uF+R9J=WR!wUYQ4~GZ;Gzli11ceff`&Fs6iQ1`C={`D8k&uP{Du}J8zG^!
zLP6-FZAhS-Z1gt-#!Y05P(&zL#8S|Nwy01w1O;tiri(HGbuJ!6qN}vix}+h!=o23Eqv$f$ZuVr
zFpzJr4I#868TMogGO`63aZeF(PZ0p%^LgR(c~K4|uvp%AtQ8)%4$$d|yc|ft=ko#p
zy2JIHC(qm<2S`L-6S0!Y003eI8EGNJoUn7j;sAeoGvb~iPD({a&Lgjh$ZH}K=oS_M
zr4Jtg*q@%j=bgt&Dud_TvlNXOQbDns3UET)Q$${CoNhIfLTPi9Sx>f0(FkG%*=<;~
zu97B#?v11|1z_#~2zMB#sQ@Wf#74Ak(&K`RWOT2wxH*a`fLYF`CB8X|ye2|XR0s<{
zSc7U?Kr`eu5pxHPai?%y1IcIv*|XfzY4e(h@SQ!Df52KRZ3{T8RJ&@bic?KPS_oMR
zs@V2UlO3OG%Mx)R-kWO`@+S`3q13vLF-6f8{#QBzeWVsiNi
zLL~>Gl7phC?8hTkkS+bcrm9$)4mt|3wPkC4L4W)D4R%Whcv3x&9&g=xYN^|6Lu{`U
zYt%zp2r+Hk(!C=-C6&DPOY{|7hdSPc~_0LKFRqXKwaf!}QH-^5R@r>^E8p!lW$0000|aAO@hX$^U5cECdqENYWUHfnVGry)Aw{9DfO}-877#~Y%&ZC(<($+
UBFraG16t1D>FVdQ&MBb@0MQdZ!T