From 7f74203c33abb2b6b0f0f945e97e075bd8698960 Mon Sep 17 00:00:00 2001
From: BIGZi0348 <118811750+bigzi0348@users.noreply.github.com>
Date: Sat, 21 Sep 2024 17:10:02 +0300
Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B0=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB?=
=?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=BE=D1=82=D1=80=D0=B0=D0=B6=D0=B0?=
=?UTF-8?q?=D0=B9=D0=BA=D0=B8=20(#6)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Ghetto Mirror Shield
* Protorypes for ghetto mirrors
* locale
* idk, works fine on my machine
* forsenPls
(cherry picked from commit 4505739fd9430bcc578da3dec932d9aa7ca933ca)
---
.../Components/DamageableClothingComponent.cs | 25 +++++++
.../DamageableClothingUserComponent.cs | 16 +++++
.../DamageableClothingSystem.cs | 43 ++++++++++++
.../DamageableClothingUserSystem.cs | 46 +++++++++++++
...clothing-outer-armor-reflective-ghetto.ftl | 2 +
.../ru-RU/White/ghetto-mirror-shield.ftl | 2 +
.../ClothingOuterArmorReflectiveGhetto.yml | 53 +++++++++++++++
.../Objects/Shields/MirrorShieldGhetto.yml | 62 ++++++++++++++++++
.../Crafting/Graphs/ghettoMirrorShield.yml | 43 ++++++++++++
.../Recipes/Crafting/ghettoMirrorShield.yml | 26 ++++++++
Resources/Prototypes/_White/tags.yml | 4 ++
.../equipped-OUTERCLOTHING.png | Bin 0 -> 576 bytes
.../armor_reflect_ghetto.rsi/icon.png | Bin 0 -> 319 bytes
.../armor_reflect_ghetto.rsi/inhand-left.png | Bin 0 -> 610 bytes
.../armor_reflect_ghetto.rsi/inhand-right.png | Bin 0 -> 607 bytes
.../armor_reflect_ghetto.rsi/meta.json | 26 ++++++++
.../Weapons/ghetto_mirror_shield.rsi/icon.png | Bin 0 -> 330 bytes
.../ghetto_mirror_shield.rsi/inhand-left.png | Bin 0 -> 758 bytes
.../ghetto_mirror_shield.rsi/inhand-right.png | Bin 0 -> 697 bytes
.../ghetto_mirror_shield.rsi/meta.json | 22 +++++++
20 files changed, 370 insertions(+)
create mode 100644 Content.Shared/_White/DamageableClothing/Components/DamageableClothingComponent.cs
create mode 100644 Content.Shared/_White/DamageableClothing/Components/DamageableClothingUserComponent.cs
create mode 100644 Content.Shared/_White/DamageableClothing/DamageableClothingSystem.cs
create mode 100644 Content.Shared/_White/DamageableClothing/DamageableClothingUserSystem.cs
create mode 100644 Resources/Locale/ru-RU/White/clothing-outer-armor-reflective-ghetto.ftl
create mode 100644 Resources/Locale/ru-RU/White/ghetto-mirror-shield.ftl
create mode 100644 Resources/Prototypes/_White/Entities/Clothing/OuterClothing/ClothingOuterArmorReflectiveGhetto.yml
create mode 100644 Resources/Prototypes/_White/Entities/Objects/Shields/MirrorShieldGhetto.yml
create mode 100644 Resources/Prototypes/_White/Recipes/Crafting/Graphs/ghettoMirrorShield.yml
create mode 100644 Resources/Prototypes/_White/Recipes/Crafting/ghettoMirrorShield.yml
create mode 100644 Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/equipped-OUTERCLOTHING.png
create mode 100644 Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/icon.png
create mode 100644 Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/inhand-left.png
create mode 100644 Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/inhand-right.png
create mode 100644 Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/meta.json
create mode 100644 Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/icon.png
create mode 100644 Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/inhand-left.png
create mode 100644 Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/inhand-right.png
create mode 100644 Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/meta.json
diff --git a/Content.Shared/_White/DamageableClothing/Components/DamageableClothingComponent.cs b/Content.Shared/_White/DamageableClothing/Components/DamageableClothingComponent.cs
new file mode 100644
index 0000000000..ea7dd2c437
--- /dev/null
+++ b/Content.Shared/_White/DamageableClothing/Components/DamageableClothingComponent.cs
@@ -0,0 +1,25 @@
+using Content.Shared.Damage;
+using Robust.Shared.GameStates;
+// WD Engi Exclusive
+namespace Content.Shared.DamageableClothing;
+
+///
+/// This component goes on an equippable item that should take damage while in use.
+///
+[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
+public sealed partial class DamageableClothingComponent : Component
+{
+
+ ///
+ /// The entity that's wearing the item.
+ ///
+ [ViewVariables, AutoNetworkedField]
+ public EntityUid? User;
+
+ ///
+ /// The damage modifier to use on item.
+ ///
+ [DataField]
+ public DamageModifierSet DamageModifier = default!;
+
+}
diff --git a/Content.Shared/_White/DamageableClothing/Components/DamageableClothingUserComponent.cs b/Content.Shared/_White/DamageableClothing/Components/DamageableClothingUserComponent.cs
new file mode 100644
index 0000000000..ef78a0b308
--- /dev/null
+++ b/Content.Shared/_White/DamageableClothing/Components/DamageableClothingUserComponent.cs
@@ -0,0 +1,16 @@
+// WD Engi Exclusive
+namespace Content.Shared.DamageableClothing;
+
+///
+/// This component gets dynamically added to an Entity via the
+///
+[RegisterComponent]
+public sealed partial class DamageableClothingUserComponent : Component
+{
+ ///
+ /// The entity that's also being damaged.
+ ///
+ [DataField]
+ public EntityUid? ItemId;
+
+}
diff --git a/Content.Shared/_White/DamageableClothing/DamageableClothingSystem.cs b/Content.Shared/_White/DamageableClothing/DamageableClothingSystem.cs
new file mode 100644
index 0000000000..c32ed9614b
--- /dev/null
+++ b/Content.Shared/_White/DamageableClothing/DamageableClothingSystem.cs
@@ -0,0 +1,43 @@
+using Robust.Shared.Timing;
+using Content.Shared.Inventory.Events;
+// WD Engi Exclusive
+namespace Content.Shared.DamageableClothing;
+
+public sealed partial class DamageableClothingSystem : EntitySystem
+{
+ [Dependency] private readonly IGameTiming _gameTiming = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+ InitializeUser();
+
+ SubscribeLocalEvent(OnEquipped);
+ SubscribeLocalEvent(OnUnequipped);
+ SubscribeLocalEvent(OnShutdown);
+ }
+
+ private void OnEquipped(EntityUid uid, DamageableClothingComponent component, GotEquippedEvent args)
+ {
+ if (_gameTiming.ApplyingState)
+ return;
+ component.User = args.Equipee;
+ var userComp = EnsureComp(args.Equipee);
+ userComp.ItemId = args.Equipment;
+ }
+
+ private void OnUnequipped(EntityUid uid, DamageableClothingComponent component, GotUnequippedEvent args)
+ {
+ RemCompDeferred(args.Equipee);
+ component.User = null;
+ }
+
+ private void OnShutdown(EntityUid uid, DamageableClothingComponent component, ComponentShutdown args)
+ {
+ if (component.User != null)
+ {
+ RemCompDeferred(component.User.Value);
+ component.User = null;
+ }
+ }
+}
diff --git a/Content.Shared/_White/DamageableClothing/DamageableClothingUserSystem.cs b/Content.Shared/_White/DamageableClothing/DamageableClothingUserSystem.cs
new file mode 100644
index 0000000000..7d1f031725
--- /dev/null
+++ b/Content.Shared/_White/DamageableClothing/DamageableClothingUserSystem.cs
@@ -0,0 +1,46 @@
+using Content.Shared.Damage;
+// WD Engi Exclusive
+namespace Content.Shared.DamageableClothing;
+
+public sealed partial class DamageableClothingSystem
+{
+ [Dependency] private readonly DamageableSystem _damageable = default!;
+
+ private void InitializeUser()
+ {
+ SubscribeLocalEvent(OnUserDamageModified);
+ SubscribeLocalEvent(OnDamageModified);
+ SubscribeLocalEvent(OnEntityTerminating);
+ }
+
+ private void OnUserDamageModified(EntityUid uid, DamageableClothingUserComponent component, DamageModifyEvent args)
+ {
+ if (TryComp(component.ItemId, out var blocking))
+ {
+ if (args.Damage.GetTotal() <= 0)
+ return;
+
+ if (!TryComp(component.ItemId, out var dmgComp))
+ return;
+
+ var blockFraction = 1;
+ blockFraction = Math.Clamp(blockFraction, 0, 1);
+ _damageable.TryChangeDamage(component.ItemId, blockFraction * args.OriginalDamage);
+ }
+ }
+
+ private void OnDamageModified(EntityUid uid, DamageableClothingComponent component, DamageModifyEvent args)
+ {
+ var modifier = component.DamageModifier;
+ args.Damage = DamageSpecifier.ApplyModifierSet(args.Damage, modifier);
+ }
+
+ private void OnEntityTerminating(EntityUid uid, DamageableClothingUserComponent component, ref EntityTerminatingEvent args)
+ {
+ if (!TryComp(component.ItemId, out var blockingComponent))
+ return;
+
+ RemCompDeferred(uid);
+ }
+
+}
diff --git a/Resources/Locale/ru-RU/White/clothing-outer-armor-reflective-ghetto.ftl b/Resources/Locale/ru-RU/White/clothing-outer-armor-reflective-ghetto.ftl
new file mode 100644
index 0000000000..491be27338
--- /dev/null
+++ b/Resources/Locale/ru-RU/White/clothing-outer-armor-reflective-ghetto.ftl
@@ -0,0 +1,2 @@
+ent-ClothingOuterArmorReflectiveGhetto = самодельный отражающий жилет
+ .desc = Два зеркала соединённые проводами для сомнительной защиты от лазеров.
diff --git a/Resources/Locale/ru-RU/White/ghetto-mirror-shield.ftl b/Resources/Locale/ru-RU/White/ghetto-mirror-shield.ftl
new file mode 100644
index 0000000000..0a5b6a25db
--- /dev/null
+++ b/Resources/Locale/ru-RU/White/ghetto-mirror-shield.ftl
@@ -0,0 +1,2 @@
+ent-MirrorShieldGhetto = самодельный зеркальный щит
+ .desc = Сделанное на скорую руку зеркало с рукояткой для использования как сомнительная защита от лазеров.
diff --git a/Resources/Prototypes/_White/Entities/Clothing/OuterClothing/ClothingOuterArmorReflectiveGhetto.yml b/Resources/Prototypes/_White/Entities/Clothing/OuterClothing/ClothingOuterArmorReflectiveGhetto.yml
new file mode 100644
index 0000000000..310aeb1f84
--- /dev/null
+++ b/Resources/Prototypes/_White/Entities/Clothing/OuterClothing/ClothingOuterArmorReflectiveGhetto.yml
@@ -0,0 +1,53 @@
+- type: entity # WD Engi Exclusive
+ parent: ClothingOuterArmorBasic
+ id: ClothingOuterArmorReflectiveGhetto
+ name: makeshift reflective vest
+ description: Two mirrors connected by wires for dubious laser protection.
+ components:
+ - type: Sprite
+ sprite: White/Clothing/OuterClothing/armor_reflect_ghetto.rsi
+ state: icon
+ - type: Clothing
+ sprite: White/Clothing/OuterClothing/armor_reflect_ghetto.rsi
+ - type: Armor
+ modifiers:
+ coefficients:
+ Slash: 0.9
+ Heat: 0.7
+ - type: Reflect
+ reflectProb: 0.7
+ innate: true
+ placement:
+ - Body
+ reflects:
+ - Energy
+ - type: Construction
+ graph: ClothingOuterArmorReflectiveGhetto
+ node: vest
+ - type: DamageableClothing
+ damageModifier:
+ coefficients:
+ Blunt: 2
+ Slash: 0.9
+ Piercing: 1.5
+ Heat: .5
+ flatReductions:
+ Heat: 0.5
+ - type: Damageable
+ damageContainer: Shield
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 60
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: GlassBreak
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 3
+ max: 5
diff --git a/Resources/Prototypes/_White/Entities/Objects/Shields/MirrorShieldGhetto.yml b/Resources/Prototypes/_White/Entities/Objects/Shields/MirrorShieldGhetto.yml
new file mode 100644
index 0000000000..0b30b8833b
--- /dev/null
+++ b/Resources/Prototypes/_White/Entities/Objects/Shields/MirrorShieldGhetto.yml
@@ -0,0 +1,62 @@
+- type: entity # WD Engi Exclusive
+ name: makeshift mirror shield
+ parent: BaseItem
+ id: MirrorShieldGhetto
+ description: A makeshift mirror with a handle, used as dubious laser protection.
+ components:
+ - type: Sprite
+ sprite: White/Objects/Weapons/ghetto_mirror_shield.rsi
+ state: icon
+ - type: Item
+ sprite: White/Objects/Weapons/ghetto_mirror_shield.rsi
+ size: Ginormous
+ - type: Tag
+ tags:
+ - MirrorShieldGhetto
+ - type: Reflect
+ reflectProb: 0.7
+ innate: true
+ reflects:
+ - Energy
+ - type: Blocking
+ passiveBlockModifier:
+ coefficients:
+ Blunt: 2
+ Slash: 0.9
+ Piercing: 1.5
+ Heat: .6
+ activeBlockModifier:
+ coefficients:
+ Blunt: 2
+ Slash: 0.9
+ Piercing: 1.5
+ Heat: .3
+ flatReductions:
+ Heat: 0.5
+ blockSound: !type:SoundPathSpecifier
+ path: /Audio/Effects/glass_step.ogg
+ - type: MeleeBlock
+ - type: Damageable
+ damageContainer: Shield
+ - type: Construction
+ graph: MirrorShieldGhetto
+ node: shield
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 40
+ behaviors:
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+ - !type:PlaySoundBehavior
+ sound:
+ collection: GlassBreak
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ ShardGlass:
+ min: 2
+ max: 3
+ - type: StaticPrice
+ price: 50
+ - type: DisarmMalus
diff --git a/Resources/Prototypes/_White/Recipes/Crafting/Graphs/ghettoMirrorShield.yml b/Resources/Prototypes/_White/Recipes/Crafting/Graphs/ghettoMirrorShield.yml
new file mode 100644
index 0000000000..e36d8bf12a
--- /dev/null
+++ b/Resources/Prototypes/_White/Recipes/Crafting/Graphs/ghettoMirrorShield.yml
@@ -0,0 +1,43 @@
+# WD Engi Exclusive
+- type: constructionGraph
+ id: MirrorShieldGhetto
+ start: start
+ graph:
+ - node: start
+ edges:
+ - to: shield
+ steps:
+ - material: Glass
+ amount: 5
+ doAfter: 3
+ - material: Steel
+ amount: 3
+ doAfter: 3
+ - node: shield
+ entity: MirrorShieldGhetto
+
+- type: constructionGraph
+ id: ClothingOuterArmorReflectiveGhetto
+ start: start
+ graph:
+ - node: start
+ edges:
+ - to: vest
+ steps:
+ - material: Cable
+ amount: 5
+ - tag: MirrorShieldGhetto
+ name: самодельный зеркальный щит
+ icon:
+ sprite: White/Objects/Weapons/ghetto_mirror_shield.rsi
+ state: icon
+ amount: 1
+ - tag: MirrorShieldGhetto
+ name: самодельный зеркальный щит
+ icon:
+ sprite: White/Objects/Weapons/ghetto_mirror_shield.rsi
+ state: icon
+ amount: 1
+ doAfter: 6
+ - node: vest
+ entity: ClothingOuterArmorReflectiveGhetto
diff --git a/Resources/Prototypes/_White/Recipes/Crafting/ghettoMirrorShield.yml b/Resources/Prototypes/_White/Recipes/Crafting/ghettoMirrorShield.yml
new file mode 100644
index 0000000000..588f18da36
--- /dev/null
+++ b/Resources/Prototypes/_White/Recipes/Crafting/ghettoMirrorShield.yml
@@ -0,0 +1,26 @@
+# WD Engi Exclusive
+- type: construction
+ name: самодельный зеркальный щит
+ id: MirrorShieldGhetto
+ graph: MirrorShieldGhetto
+ startNode: start
+ targetNode: shield
+ category: construction-category-weapons
+ objectType: Item
+ description: Сделанное на скорую руку зеркало с рукояткой для использования как сомнительная защита от лазеров.
+ icon:
+ sprite: White/Objects/Weapons/ghetto_mirror_shield.rsi
+ state: icon
+
+- type: construction
+ name: самодельный отражающий жилет
+ id: ClothingOuterArmorReflectiveGhetto
+ graph: ClothingOuterArmorReflectiveGhetto
+ startNode: start
+ targetNode: vest
+ category: construction-category-clothing
+ objectType: Item
+ description: Два зеркала соединённые проводами для сомнительной защиты от лазеров.
+ icon:
+ sprite: White/Clothing/OuterClothing/armor_reflect_ghetto.rsi
+ state: icon
diff --git a/Resources/Prototypes/_White/tags.yml b/Resources/Prototypes/_White/tags.yml
index 375c824a14..40e48a923a 100644
--- a/Resources/Prototypes/_White/tags.yml
+++ b/Resources/Prototypes/_White/tags.yml
@@ -120,3 +120,7 @@
- type: Tag
id: VoiceActivatedBombImplant
+
+# WD Engi Exclusive
+- type: Tag
+ id: MirrorShieldGhetto
diff --git a/Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/equipped-OUTERCLOTHING.png
new file mode 100644
index 0000000000000000000000000000000000000000..5572ecd007baf40e76ae752b8bab2fd84ec8756a
GIT binary patch
literal 576
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zA9%VrhE&XX
zJIgTdkb{8h@j#vM7zWNLKF8)23!H8ja7ay`qqtO>&vEl2E>W+;iW$8}SXT%fUFOkd
zk)k;7t5ou9d(OlI^ZutBR6L1P0vZkk|59z_CGPo6I`X0UzVx|Y$Lf~IZ~B<~E3&?_
za_XBJt9km5yjH$(SL=JMkkuMgD=71Sn%(co3R(_VxN;wT`Fm?knfFFU&gGAPuKV|E
z!BNBbC2Tn*R+Uab;g%vC9$<);a(S4tj%e!OuiCU{#AYNN{eMH
z7_M*lQMX@TXjxG0b0!nTN~PmWCaRT6?Mx<`K(_IMRZmV|5EozIc~Y2@dxKrZrCaxM
zGS;qqB*s
zKac(GZ!5d|@0bf;HZiSvZJpKn<=;2K4V^1Q2<7z8Hf8wXuv)e&r*DSIV-WsA#!u-fM0!kIEYla8F9%)#=$(dMkd_pf|@E)3ou
z1pOMD%VW1^{MBmQ`XQ9b@IewIdoQavcaJc$o>;+!h=P?3iD@CV%+FqKK6Xaq_Ahg$
z)ab=I*?0KE`JKcjEv6
literal 0
HcmV?d00001
diff --git a/Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/inhand-left.png b/Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/inhand-left.png
new file mode 100644
index 0000000000000000000000000000000000000000..edc2a32edb6151b812471c36d9090080e1daafb3
GIT binary patch
literal 610
zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GG!XV7ZFl&wk0|S$Y
zr;B4q#hkaZZ1WB|2(;dJTlkcLLvz__RwqF}NB7CxEV<6J3YtPZH-`C5P`f)%$=A=p
zT_w!2AzFNL(}O<~<)8w3$zyKcvse647#du+UR?Id1UMlFP3SW9Yn82
zCs@cZeSG`l(GQ+`zt=?Ft6mTj94~oQ^1|D){Wa5rPOaMdZcpjg?XIB??~WS1UVV?r
z&@JZty9XQRd^11)-NEHru0ZmUv!81}^GsNEZrxYmRZM%npF6zRT(%>`v?#uD{hD)A
z{g1D*$nJY*iO-X`f?@^t3t#r2p5Onk*~W}UiN3%
zimk_jydLe1H#2zre*g6YTcd$qJ}cEC^KsSQgHtZ~Mcue>__F7M2m7WYtJe$OD($Yh
zTXEYXyqfKZ#O(90Z_W+7X+JUOl(@c9Ry2pB$?Lz{M5iwoa++{7Nl}r-(#rm3#h-fa
n-KTSrDB--xZKXHn2mc5|4zCyFD>vp|3hfn&Y7lkceeh~J5@aULkj7{Tg
zwZD%Uca{B+(eYi&v@j@cQk}oktxL;nY+8+KBm@sC79SBySj>2XDaV8%x}ldXfqTP6
zh8#vSsRrExZp<54Z)7lRW02-O09C|iccAd9wC6OY1_lGQzH8_2zmNN6czdFX_tVE8
zuQD8X`8ML-`#7Jw&$as-UT^lEVbRp7d?JZ6QpZr*clWoqbFTKYGE6wS>Eq|pXAQWHbHjT(iO!oAcRowfz~N%S`wmV?NX8-^v~F+vcV(&RkslR8YX_$JTRE
zyLZR(zj<`$mDY#rY;As%i=S!+h_K4p&A(y#$y5GGP)go{t>h{SM>q;BW&fLBA
z+jU!(-zi%^g;;&9Ic?!v7sL^0#ll)Dm!dQTzP;{dqtSF|3idc65o-RS$puXz%o&
zHG21|J@fRIyezopr
E0KL8lL;wH)
literal 0
HcmV?d00001
diff --git a/Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/meta.json b/Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/meta.json
new file mode 100644
index 0000000000..61fc5a5260
--- /dev/null
+++ b/Resources/Textures/White/Clothing/OuterClothing/armor_reflect_ghetto.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "stepppasha",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-OUTERCLOTHING",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/icon.png b/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..f1bc32c7d6a0de6b201b9ec6a04d1e626c938fe8
GIT binary patch
literal 330
zcmV-Q0k!^#P)rAPj{cRmaFaJ|TIKjKd&EK4qWmK`$X{XnyRL
zh#v6K3VxsY@rz3-p=CUps&{}6@DBjbZx#_z^4@Q9A_4$znkG{%XPpBfgaiQ0yvfHH
z*P7!v-UARqNTqO&VHol^CJ6N%AfiLkES^I|5)st}@ZNuHdnrE8Gng6W{rDN+sQXg9
z$f?d&^$Pa7KNGiH!msAQMdxeo7J!=KW`Nq_Y5);=A2gTZF~&R@>i__7TJgO#XQB3j
z+z~UMid(t|lsm8(j04nXuIe5zx}k_TECc4uj4U;+W|Tn=?KtPP!^mvMwWIkTQ3vP%
c9iTbD3sBX9v%_LrI{*Lx07*qoM6N<$f-S*@n*aa+
literal 0
HcmV?d00001
diff --git a/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/inhand-left.png b/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/inhand-left.png
new file mode 100644
index 0000000000000000000000000000000000000000..ccfebc408cb17bcd08beab31743078d44a07c546
GIT binary patch
literal 758
zcmVyx-;_Ta
zW1hZSYol}S=~@T@0L(nkoB2z80L7JGVH9jejW`SDve+HjlySrdDU!HvlkQ`9TRx9{??3P@xl>O`V
z8Ue5h!nzJ<1)pDgg-;4>0_+jI#Bg8{;9tyq0!e@n0=)N+?@PgZ@6*a~6Q3kV0yyU$
zmRy_p{6A~>Vm9&LAA+nP%>sEg$8l^1pR(_qtGb}Z7h{Z4ZXh{ep65r_){OadZ*3v8
zm5&4DTEJS1d&O2PhO#kjfWKK@SPD1!hGAfx3CK&~d)5HJgb;qIdAGgE@2Btqyu}bp
zH3$IHG%eo0u^g`c_Lc$wPxgJnlI?4#@x848d*JQL;jL%|pdskTzZCs=0d^k(Eohuo
z=nmMs!JiL0?Gq{=?|?3Vb_cZ41<>w*Ho5@X9neM>fSb@-TiyFB!5BmO9FIrRN=nKB
zn?!gOt*!aB5D~yRSA3Hr(GC?N0*vF>+y>`>wYGXHWedcLp_H9h-UV*qr$THNkaPi8
z_5lF_Qf8!gcoRR>2_g>IYkQlcoxTu~B3|0ij4>8JT>NVxBETL88@SqG7oc?lL;}?I
z#D;+PzIhsi2$LVBp+HOkX(w>;iwKZsUt%SgPLgoAKtzC)9Z4625Lo!7szI^rC*#>Wfr2M#4{^BSAAkN^Mx07*qoM6N<$g5CsF&Hw-a
literal 0
HcmV?d00001
diff --git a/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/inhand-right.png b/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/inhand-right.png
new file mode 100644
index 0000000000000000000000000000000000000000..237cb837c318ed51f7014c8ccf886f37a689d2f4
GIT binary patch
literal 697
zcmV;q0!ICbP)4|E<2Jyp4uIPLw>kiB1KjEWxD9Zt1K>8mt*_$;Aw=?}
zQYvVzlQ!oZ0EoxqvA4Cfnp~D8G2@)Wx~}5t_u^>&2w)CC=DDa`#s$QN?HG5B{Zp5ev1pCzYL+2{bznJSAu^T
zLP=MC69CS+<3i^p1Z!>cPk~o{^9neX&npO}YdDoHfWp?cH{{FW(-g?7AnzbTSeB*P
z>~9c~NBWiD1i-ezDQ5Iy{x_BVqe^~Do1)W75CEKW0vo~Ov(tN@Y=-W!N~fdW-)@Eg
ze6RJdw!^W#wark~cK8$Z@&5>Q0Ne(+)d6rD;8q8~ZGc-H0Ji~dbpYH3xYYr08{k$4
zz-@qA9YD>+rPEeQQN*jRfOkQlic<|B|Id(0RB@^S7-Pt*U>Jr#brOBcO^~_@DEq$!
z0A&?WW*?{o5Hmx4QXKoIsD$bYc-JvGRh+&Mx}%e;cM0zjW&hOxs0U9SrwYKk-w&XO
zcgqy8);>Lft⪻gL#5aBk!
ftqy?O0Jr`F?B+AjExmlI00000NkvXXu0mjf*YZBs
literal 0
HcmV?d00001
diff --git a/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/meta.json b/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/meta.json
new file mode 100644
index 0000000000..cb084b7fa0
--- /dev/null
+++ b/Resources/Textures/White/Objects/Weapons/ghetto_mirror_shield.rsi/meta.json
@@ -0,0 +1,22 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from https://github.com/Citadel-Station-13/Citadel-Station-13/commit/84223c65f5caf667a84f3c0f49bc2a41cdc6c4e3",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ }
+ ]
+}