From 35f3cbe3f969dc199c90a3bc9dd5be6726eff535 Mon Sep 17 00:00:00 2001 From: PrPleGoo Date: Mon, 8 Apr 2019 12:18:27 +0200 Subject: [PATCH] Engineer's helmet (#188) * refacting some sprite things * fix sprites * Netcode for sending a new icon state to the ClientComponent * Fixed broken torches. * Fix dirty calls. * ClothingComponentState now also includes EquippedPrefix * Inherritance ClothingComponent : ItemComponent * Added parameter to ItemComponentState constructor. * Update RobustToolbox * Revert "Update RobustToolbox" This reverts commit 82c7e98ff3853b64698d5e80a45cd7a3758618e0. Undo weird commit to toolbox? --- .../Components/Clothing/ClothingComponent.cs | 20 ++++++- .../Components/Items/ItemComponent.cs | 12 ++++- .../Interactable/HandheldLightComponent.cs | 24 ++++++--- .../Items/Clothing/ClothingComponent.cs | 27 +++++++++- .../Components/Items/Storage/ItemComponent.cs | 24 +++++++++ .../Items/Storage/StoreableComponent.cs | 5 -- Content.Shared/Content.Shared.csproj | 4 +- .../Items/ClothingComponentState.cs | 17 ++++++ .../Components/Items/ItemComponentState.cs | 22 ++++++++ Content.Shared/GameObjects/ContentNetIDs.cs | 2 + .../Prototypes/Entities/Clothing/helmets.yml | 24 +++++++++ Resources/Prototypes/Entities/Items.yml | 6 ++- .../HandheldLightOnOverlay.png | Bin 0 -> 2007 bytes .../HelmetEngineering.png | Bin 0 -> 2090 bytes .../Off-equipped-HELMET.png | Bin 0 -> 3543 bytes .../On-equipped-HELMET.png | Bin 0 -> 3608 bytes .../equipped-HELMET.png | Bin 0 -> 3543 bytes .../Clothing/helmet_engineering.rsi/meta.json | 51 ++++++++++++++++++ .../Clothing/helmet_sec.rsi/meta.json | 27 +++++++++- .../lantern.rsi/HandheldLightOnOverlay.png | Bin 0 -> 1321 bytes .../Objects/lantern.rsi/lantern_on.png | Bin 293 -> 0 bytes .../Textures/Objects/lantern.rsi/meta.json | 4 +- 22 files changed, 248 insertions(+), 21 deletions(-) create mode 100644 Content.Shared/GameObjects/Components/Items/ClothingComponentState.cs create mode 100644 Content.Shared/GameObjects/Components/Items/ItemComponentState.cs create mode 100644 Resources/Textures/Clothing/helmet_engineering.rsi/HandheldLightOnOverlay.png create mode 100644 Resources/Textures/Clothing/helmet_engineering.rsi/HelmetEngineering.png create mode 100644 Resources/Textures/Clothing/helmet_engineering.rsi/Off-equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/helmet_engineering.rsi/On-equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/helmet_engineering.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/helmet_engineering.rsi/meta.json create mode 100644 Resources/Textures/Objects/lantern.rsi/HandheldLightOnOverlay.png delete mode 100644 Resources/Textures/Objects/lantern.rsi/lantern_on.png diff --git a/Content.Client/GameObjects/Components/Clothing/ClothingComponent.cs b/Content.Client/GameObjects/Components/Clothing/ClothingComponent.cs index 6deb653030..831d296383 100644 --- a/Content.Client/GameObjects/Components/Clothing/ClothingComponent.cs +++ b/Content.Client/GameObjects/Components/Clothing/ClothingComponent.cs @@ -1,11 +1,21 @@ +using Content.Shared.GameObjects; using Content.Shared.GameObjects.Components.Inventory; +using Content.Shared.GameObjects.Components.Items; using SS14.Client.Graphics; +using SS14.Shared.GameObjects; +using SS14.Shared.ViewVariables; +using System; namespace Content.Client.GameObjects.Components.Clothing { public class ClothingComponent : ItemComponent { public override string Name => "Clothing"; + public override uint? NetID => ContentNetIDs.CLOTHING; + public override Type StateType => typeof(ClothingComponentState); + + [ViewVariables(VVAccess.ReadWrite)] + public string ClothingEquippedPrefix { get; set; } public (RSI rsi, RSI.StateId stateId)? GetEquippedStateInfo(EquipmentSlotDefines.SlotFlags slot) { @@ -15,7 +25,8 @@ namespace Content.Client.GameObjects.Components.Clothing } var rsi = GetRSI(); - var stateId = EquippedPrefix != null ? $"{EquippedPrefix}-equipped-{slot}" : $"equipped-{slot}"; + var prefix = ClothingEquippedPrefix ?? EquippedPrefix; + var stateId = prefix != null ? $"{prefix}-equipped-{slot}" : $"equipped-{slot}"; if (rsi.TryGetState(stateId, out _)) { return (rsi, stateId); @@ -23,5 +34,12 @@ namespace Content.Client.GameObjects.Components.Clothing return null; } + + public override void HandleComponentState(ComponentState state) + { + var clothingComponentState = (ClothingComponentState)state; + ClothingEquippedPrefix = clothingComponentState.ClothingEquippedPrefix; + EquippedPrefix = clothingComponentState.EquippedPrefix; + } } } diff --git a/Content.Client/GameObjects/Components/Items/ItemComponent.cs b/Content.Client/GameObjects/Components/Items/ItemComponent.cs index b3bb4e84b7..3db6de991e 100644 --- a/Content.Client/GameObjects/Components/Items/ItemComponent.cs +++ b/Content.Client/GameObjects/Components/Items/ItemComponent.cs @@ -1,4 +1,5 @@ -using Content.Shared.GameObjects.Components.Inventory; +using Content.Shared.GameObjects; +using Content.Shared.GameObjects.Components.Items; using SS14.Client.Graphics; using SS14.Client.Interfaces.ResourceManagement; using SS14.Client.ResourceManagement; @@ -8,12 +9,15 @@ using SS14.Shared.IoC; using SS14.Shared.Serialization; using SS14.Shared.Utility; using SS14.Shared.ViewVariables; +using System; namespace Content.Client.GameObjects { public class ItemComponent : Component { public override string Name => "Item"; + public override uint? NetID => ContentNetIDs.ITEM; + public override Type StateType => typeof(ItemComponentState); [ViewVariables] protected ResourcePath RsiPath; @@ -56,5 +60,11 @@ namespace Content.Client.GameObjects var resourceCache = IoCManager.Resolve(); return resourceCache.GetResource(SharedSpriteComponent.TextureRoot / RsiPath).RSI; } + + public override void HandleComponentState(ComponentState state) + { + var itemComponentState = (ItemComponentState)state; + EquippedPrefix = itemComponentState.EquippedPrefix; + } } } diff --git a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs index 87e1b16e9e..0e2a7cda69 100644 --- a/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs +++ b/Content.Server/GameObjects/Components/Interactable/HandheldLightComponent.cs @@ -20,6 +20,7 @@ namespace Content.Server.GameObjects.Components.Interactable [ViewVariables] private ContainerSlot _cellContainer; private PointLightComponent _pointLight; private SpriteComponent _spriteComponent; + private ClothingComponent _clothingComponent; [ViewVariables] private PowerCellComponent Cell @@ -70,6 +71,7 @@ namespace Content.Server.GameObjects.Components.Interactable _pointLight = Owner.GetComponent(); _spriteComponent = Owner.GetComponent(); + Owner.TryGetComponent(out _clothingComponent); _cellContainer = ContainerManagerComponent.Ensure("flashlight_cell_container", Owner, out var existed); @@ -92,13 +94,11 @@ namespace Content.Server.GameObjects.Components.Interactable // Update sprite and light states to match the activation. if (Activated) { - _spriteComponent.LayerSetState(0, "lantern_on"); - _pointLight.State = LightState.On; + SetState(LightState.On); } else { - _spriteComponent.LayerSetState(0, "lantern_off"); - _pointLight.State = LightState.Off; + SetState(LightState.Off); } // Toggle always succeeds. @@ -109,8 +109,7 @@ namespace Content.Server.GameObjects.Components.Interactable { if (!Activated) return; - _spriteComponent.LayerSetState(0, "lantern_off"); - _pointLight.State = LightState.Off; + SetState(LightState.Off); Activated = false; } @@ -126,8 +125,17 @@ namespace Content.Server.GameObjects.Components.Interactable // Simple enough. if (cell.AvailableCharge(1) < Wattage) return; - _spriteComponent.LayerSetState(0, "lantern_on"); - _pointLight.State = LightState.On; + SetState(LightState.On); + } + + private void SetState(LightState newState) + { + _spriteComponent.LayerSetVisible(1, newState == LightState.On); + _pointLight.State = newState; + if (_clothingComponent != null) + { + _clothingComponent.ClothingEquippedPrefix = newState.ToString(); + } } public void OnUpdate(float frameTime) diff --git a/Content.Server/GameObjects/Components/Items/Clothing/ClothingComponent.cs b/Content.Server/GameObjects/Components/Items/Clothing/ClothingComponent.cs index 6bd553fe75..8aa0af932f 100644 --- a/Content.Server/GameObjects/Components/Items/Clothing/ClothingComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Clothing/ClothingComponent.cs @@ -1,4 +1,7 @@ -using SS14.Shared.Serialization; +using Content.Shared.GameObjects; +using Content.Shared.GameObjects.Components.Items; +using SS14.Shared.GameObjects; +using SS14.Shared.Serialization; using System; using System.Collections.Generic; using static Content.Shared.GameObjects.Components.Inventory.EquipmentSlotDefines; @@ -8,11 +11,28 @@ namespace Content.Server.GameObjects public class ClothingComponent : ItemComponent { public override string Name => "Clothing"; + public override uint? NetID => ContentNetIDs.CLOTHING; + public override Type StateType => typeof(ClothingComponentState); + public SlotFlags SlotFlags = SlotFlags.PREVENTEQUIP; //Different from None, NONE allows equips if no slot flags are required private int _heatResistance; public int HeatResistance => _heatResistance; + private string _clothingEquippedPrefix; + public string ClothingEquippedPrefix + { + get + { + return _clothingEquippedPrefix; + } + set + { + Dirty(); + _clothingEquippedPrefix = value; + } + } + public override void ExposeData(ObjectSerializer serializer) { base.ExposeData(serializer); @@ -28,5 +48,10 @@ namespace Content.Server.GameObjects serializer.DataFieldCached(ref _heatResistance, "HeatResistance", 323); } + + public override ComponentState GetComponentState() + { + return new ClothingComponentState(ClothingEquippedPrefix, EquippedPrefix); + } } } diff --git a/Content.Server/GameObjects/Components/Items/Storage/ItemComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/ItemComponent.cs index 153c730948..26ae93ef90 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/ItemComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/ItemComponent.cs @@ -3,13 +3,32 @@ using SS14.Server.Interfaces.GameObjects; using Content.Shared.GameObjects; using SS14.Shared.Interfaces.GameObjects; using Content.Server.GameObjects.EntitySystems; +using SS14.Shared.GameObjects; +using System; +using Content.Shared.GameObjects.Components.Items; namespace Content.Server.GameObjects { public class ItemComponent : StoreableComponent, IAttackHand { public override string Name => "Item"; + public override uint? NetID => ContentNetIDs.ITEM; + public override Type StateType => typeof(ItemComponentState); + private string _equippedPrefix; + + public string EquippedPrefix + { + get + { + return _equippedPrefix; + } + set + { + Dirty(); + _equippedPrefix = value; + } + } public void RemovedFromSlot() { @@ -63,5 +82,10 @@ namespace Content.Server.GameObjects } } } + + public override ComponentState GetComponentState() + { + return new ItemComponentState(EquippedPrefix); + } } } diff --git a/Content.Server/GameObjects/Components/Items/Storage/StoreableComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/StoreableComponent.cs index 76b7ba9666..946b7eb636 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/StoreableComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/StoreableComponent.cs @@ -1,10 +1,5 @@ using SS14.Shared.GameObjects; using SS14.Shared.Serialization; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Content.Server.GameObjects { diff --git a/Content.Shared/Content.Shared.csproj b/Content.Shared/Content.Shared.csproj index 9b6c55ce85..a8ec723674 100644 --- a/Content.Shared/Content.Shared.csproj +++ b/Content.Shared/Content.Shared.csproj @@ -69,6 +69,8 @@ + + @@ -118,4 +120,4 @@ - + \ No newline at end of file diff --git a/Content.Shared/GameObjects/Components/Items/ClothingComponentState.cs b/Content.Shared/GameObjects/Components/Items/ClothingComponentState.cs new file mode 100644 index 0000000000..39ef0c7f09 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Items/ClothingComponentState.cs @@ -0,0 +1,17 @@ +using SS14.Shared.GameObjects; +using SS14.Shared.Serialization; +using System; + +namespace Content.Shared.GameObjects.Components.Items +{ + [Serializable, NetSerializable] + public class ClothingComponentState : ItemComponentState + { + public string ClothingEquippedPrefix { get; set; } + + public ClothingComponentState(string clothingEquippedPrefix, string equippedPrefix) : base(equippedPrefix, ContentNetIDs.CLOTHING) + { + ClothingEquippedPrefix = clothingEquippedPrefix; + } + } +} diff --git a/Content.Shared/GameObjects/Components/Items/ItemComponentState.cs b/Content.Shared/GameObjects/Components/Items/ItemComponentState.cs new file mode 100644 index 0000000000..7af71c3ae2 --- /dev/null +++ b/Content.Shared/GameObjects/Components/Items/ItemComponentState.cs @@ -0,0 +1,22 @@ +using SS14.Shared.GameObjects; +using SS14.Shared.Serialization; +using System; + +namespace Content.Shared.GameObjects.Components.Items +{ + [Serializable, NetSerializable] + public class ItemComponentState : ComponentState + { + public string EquippedPrefix { get; set; } + + public ItemComponentState(string equippedPrefix) : base(ContentNetIDs.ITEM) + { + EquippedPrefix = equippedPrefix; + } + + protected ItemComponentState(string equippedPrefix, uint netId) : base(netId) + { + EquippedPrefix = equippedPrefix; + } + } +} diff --git a/Content.Shared/GameObjects/ContentNetIDs.cs b/Content.Shared/GameObjects/ContentNetIDs.cs index cffb1f54b4..5fc2a2d496 100644 --- a/Content.Shared/GameObjects/ContentNetIDs.cs +++ b/Content.Shared/GameObjects/ContentNetIDs.cs @@ -15,5 +15,7 @@ public const uint RANGED_WEAPON = 1010; public const uint CAMERA_RECOIL = 1011; public const uint SOUND = 1012; + public const uint ITEM = 1013; + public const uint CLOTHING = 1014; } } diff --git a/Resources/Prototypes/Entities/Clothing/helmets.yml b/Resources/Prototypes/Entities/Clothing/helmets.yml index da9a4460e8..c53e55a095 100644 --- a/Resources/Prototypes/Entities/Clothing/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/helmets.yml @@ -14,3 +14,27 @@ Slots: - head sprite: Clothing/helmet_sec.rsi + +- type: entity + parent: Clothing + id: HelmetEngineering + name: Hard hat + description: A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight. + components: + - type: HandheldLight + - type: PointLight + state: Off + - type: Sprite + sprite: Clothing/helmet_engineering.rsi + layers: + - state: HelmetEngineering + - state: HandheldLightOnOverlay + shader: unshaded + visible: false + - type: Icon + sprite: Clothing/helmet_engineering.rsi + state: HelmetEngineering + - type: Clothing + Slots: + - head + sprite: Clothing/helmet_engineering.rsi \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Items.yml b/Resources/Prototypes/Entities/Items.yml index 8a7f5ad52a..7a24945ac8 100644 --- a/Resources/Prototypes/Entities/Items.yml +++ b/Resources/Prototypes/Entities/Items.yml @@ -92,7 +92,11 @@ - type: HandheldLight - type: Sprite sprite: Objects/lantern.rsi - state: lantern_off + layers: + - state: lantern_off + - state: HandheldLightOnOverlay + shader: unshaded + visible: false - type: Icon sprite: Objects/lantern.rsi state: lantern_off diff --git a/Resources/Textures/Clothing/helmet_engineering.rsi/HandheldLightOnOverlay.png b/Resources/Textures/Clothing/helmet_engineering.rsi/HandheldLightOnOverlay.png new file mode 100644 index 0000000000000000000000000000000000000000..302bb018e58f3dde78d83d1f0cdb37a2dc7c0521 GIT binary patch literal 2007 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 U)W_PYCjbBd07*qoM6N<$g8G`=Jpcdz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/helmet_engineering.rsi/Off-equipped-HELMET.png b/Resources/Textures/Clothing/helmet_engineering.rsi/Off-equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..e11f14967f0d911955080d3479a6777e1a3f0e14 GIT binary patch literal 3543 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 RTonKS002ovPDHLkV1m!+yQBaB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/helmet_engineering.rsi/On-equipped-HELMET.png b/Resources/Textures/Clothing/helmet_engineering.rsi/On-equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa5db8def555cdc489f85ec13da9d12f4f22c20 GIT binary patch literal 3608 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 e00baFv&3K76(nfz!LlI$0000vY literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/helmet_engineering.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/helmet_engineering.rsi/equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..e11f14967f0d911955080d3479a6777e1a3f0e14 GIT binary patch literal 3543 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 RTonKS002ovPDHLkV1m!+yQBaB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/helmet_engineering.rsi/meta.json b/Resources/Textures/Clothing/helmet_engineering.rsi/meta.json new file mode 100644 index 0000000000..fc9cdce5e6 --- /dev/null +++ b/Resources/Textures/Clothing/helmet_engineering.rsi/meta.json @@ -0,0 +1,51 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", + "states": [ + { + "name": "Off-equipped-HELMET", + "directions": 4, + "delays": [ + [ 1.0 ], + [ 1.0 ], + [ 1.0 ], + [ 1.0 ] + ] + }, + { + "name": "On-equipped-HELMET", + "directions": 4, + "delays": [ + [ 1.0 ], + [ 1.0 ], + [ 1.0 ], + [ 1.0 ] + ] + }, + { + "name": "equipped-HELMET", + "directions": 4, + "delays": [ + [ 1.0 ], + [ 1.0 ], + [ 1.0 ], + [ 1.0 ] + ] + }, + { + "name": "HelmetEngineering", + "directions": 1, + "delays": [ [ 1.0 ] ] + }, + { + "name": "HandheldLightOnOverlay", + "directions": 1, + "delays": [ [ 1.0 ] ] + } + ] +} diff --git a/Resources/Textures/Clothing/helmet_sec.rsi/meta.json b/Resources/Textures/Clothing/helmet_sec.rsi/meta.json index 7a185f0ae9..3f9020d7c2 100644 --- a/Resources/Textures/Clothing/helmet_sec.rsi/meta.json +++ b/Resources/Textures/Clothing/helmet_sec.rsi/meta.json @@ -1 +1,26 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", "states": [{"name": "equipped-HELMET", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "helmet", "directions": 1, "delays": [[1.0]]}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 9a3a3a180344460263e8df7ea2565128e07b86b5", + "states": [ + { + "name": "equipped-HELMET", + "directions": 4, + "delays": [ + [ 1.0 ], + [ 1.0 ], + [ 1.0 ], + [ 1.0 ] + ] + }, + { + "name": "helmet", + "directions": 1, + "delays": [ [ 1.0 ] ] + } + ] +} diff --git a/Resources/Textures/Objects/lantern.rsi/HandheldLightOnOverlay.png b/Resources/Textures/Objects/lantern.rsi/HandheldLightOnOverlay.png new file mode 100644 index 0000000000000000000000000000000000000000..b08e42294fdad6883c0f2659380c929e105dd144 GIT binary patch literal 1321 zcmV+^1=jkBP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=KHmg6W4hTmDmECC6G&~n7>oY}!Fe}0H7Nu{f6 z&Qy25l}QYiWr6g`fW!Rf?-l;S!Nf6S(ORsOh$CAzb~I|d9k-fdKIe1rbqm+;+doK^#FFW-zblrF}n0C**w@a^Hh7#Z8bX^C#p7Z?V&h>BO zlF6-lz0QhY41vAGfoGx=ajv_Ugb^f5jyj)n;Vogb_u-J1k7F0^&6nWaTQ9MTe#z7O zP=r`6h4K=kOHT4}>`sK9M?{aF-`zlvH9j9tv0H1@wdTz`&jpbx;d1KDmD7S^LnzaE zte`0Vg0`MwC>1Vt5F4P`P7bS%=KEOa^lPWTP8B^5f+iD;ZHhmX@R9H<)NeVQ0fdDIK zLH=m2$RU>`IfzIRl`1A)QprV1DO&a%<(f3BXi?Rwre0IcRcfhPYqjdemN12h71LnV z%-qqb!?fdRhlYFOmRfGoO4C-GHSb8Dp1btYwbyRl2ah!H`j0X+j5=)iq={6TdCDwP zXPq{EA=g$~dC4kES6#OJPVJ)lo*KQ7`7Vx^pUliSRqFm?yC;y0d$b`;=Rd{J*&I&&Y+1?st$28{I|j zM{XZb8-7-lbO7zQaK|*Jg^3MH&J{n*$6v3*uNwF^^lj+d(6^!gQtaw`3zYjv6Z14*tm8N8 z>9VbiZH>j#y~kgx!zT)G3geU6vbV{rsvG9;mWMW-u9)$)#o=rN9)y7njcD(^SuJRJ z6R{>(1&T?7em9qid7X!k*+y@bXNf*e^!9mG!4@|_3Hz_n+VVQ#>@Co3HpJ$S;ZFoN z*}If9v}0ApE*MK07BpMI))ZhIYxHRu%NEvjEWRf^vo$=EqWd}`taH@rScQ66@0b68KRworSH6C z#kkr5kOnqIhU;j9=2%$l52x*dymtW~HDB=J!#ey1uf7faX+!u>S_9wu;a_)8?rDQ< zU?Knj00v@9M??Vs0RI60puMM)00009a7bBm000ie000ie0hKEb8vpVQ!Pj5=V{0W1Vn z{If(fnV60<(l-QEX$btY{Qvz&I|C=@U%1e(UoRNgSS|lkGbHdv0UMjn>c4-H z_^dUdbWH=y%okBC{Pin`fsJ(vozei)aYly!H4NXsGb0866sjjgMuPnU8s`GW(T>Te f14bP%&<+3q1_~~$%}&vs00000NkvXXu0mjfedTdE literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/lantern.rsi/lantern_on.png b/Resources/Textures/Objects/lantern.rsi/lantern_on.png deleted file mode 100644 index b292f1c8b291c56e1d78c7dbe7e114cf19d916a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmV+=0owkFP)2mZ0rLXFM%w%qg@z=Kfelu4Ge+0ehi3cPrm>d@pHyb0MqFlZGeu5 zN6*ajbcs7{!R*D=A*c4Yl+vANqKC08tG=t?sW4{}^AcBGQmP>NgiKMyoYU@5KNS&E rqSW4RnE}eXXuscn6Iifw2)>yY=