diff --git a/Content.Client/Chemistry/UI/ChemMasterWindow.xaml b/Content.Client/Chemistry/UI/ChemMasterWindow.xaml
index b1f4f5917f4..61bbba3c35f 100644
--- a/Content.Client/Chemistry/UI/ChemMasterWindow.xaml
+++ b/Content.Client/Chemistry/UI/ChemMasterWindow.xaml
@@ -2,7 +2,7 @@
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
- MinSize="620 670"
+ MinSize="620 770"
Title="{Loc 'chem-master-bound-user-interface-title'}">
@@ -13,12 +13,12 @@
-
+
-
+
@@ -38,12 +38,12 @@
-
+
-
+
@@ -60,12 +60,12 @@
-
+
-
+
@@ -129,4 +129,4 @@
-
+
\ No newline at end of file
diff --git a/Content.Client/Chemistry/UI/ChemMasterWindow.xaml.cs b/Content.Client/Chemistry/UI/ChemMasterWindow.xaml.cs
index d312a69e7a6..ec6d41bd32c 100644
--- a/Content.Client/Chemistry/UI/ChemMasterWindow.xaml.cs
+++ b/Content.Client/Chemistry/UI/ChemMasterWindow.xaml.cs
@@ -103,7 +103,7 @@ private ReagentButton MakeReagentButton(string text, ChemMasterReagentAmount amo
private List CreateReagentTransferButtons(ReagentId reagent, bool isBuffer, bool addReagentButtons)
{
if (!addReagentButtons)
- return new List(); // Return an empty list if reagentTransferButton creation is disabled.
+ return new(); // Return an empty list if reagentTransferButton creation is disabled.
var buttons = new List();
var names = Enum.GetNames();
@@ -111,7 +111,8 @@ private List CreateReagentTransferButtons(ReagentId reagent, bool
for (int i = 0; i < names.Length; i++)
{
- var name = names[i];
+ var isNumber = int.TryParse(names[i].Substring(1), out int number);
+ var name = isNumber ? number.ToString() : names[i];
var reagentAmount = values[i];
var reagentTransferButton = MakeReagentButton(
diff --git a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs
index f176f1b1358..d96d6ed541d 100644
--- a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs
+++ b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs
@@ -89,8 +89,18 @@ private void Spawn(EntityUid uid, ConditionalSpawnerComponent component)
return;
}
- if (!Deleted(uid))
- EntityManager.SpawnEntity(_robustRandom.Pick(component.Prototypes), Transform(uid).Coordinates);
+ if (Deleted(uid))
+ return;
+
+ var picked = _robustRandom.Pick(component.Prototypes);
+ try
+ {
+ EntityManager.SpawnEntity(picked, Transform(uid).Coordinates);
+ }
+ catch (EntityCreationException e)
+ {
+ Log.Warning($"Caught an exception while trying to process a conditional spawner {ToPrettyString(uid)} of type {picked}: {e}");
+ }
}
private void Spawn(EntityUid uid, RandomSpawnerComponent component)
diff --git a/Content.Server/Traits/Assorted/HeirloomSystem.cs b/Content.Server/Traits/Assorted/HeirloomSystem.cs
index fc114b786b4..1453fa6e6b9 100644
--- a/Content.Server/Traits/Assorted/HeirloomSystem.cs
+++ b/Content.Server/Traits/Assorted/HeirloomSystem.cs
@@ -10,6 +10,7 @@ public sealed class HeirloomSystem : EntitySystem
{
[Dependency] private readonly IGameTiming _gameTiming = default!;
+ private const long HeirloomRepeatDuration = 60;
private TimeSpan _nextUpdate;
@@ -31,15 +32,17 @@ public override void Update(float frameTime)
while (query.MoveNext(out var uid, out var comp))
{
var children = RecursiveGetAllChildren(uid);
- if (!children.Any(c => c == comp.Heirloom))
+ var moodlet = comp.Moodlet;
+
+ if (children.Any(c => c != comp.Heirloom))
continue;
- var ev = new MoodEffectEvent(comp.Moodlet);
+
+ var ev = new MoodEffectEvent(moodlet);
RaiseLocalEvent(uid, ev);
}
query.Dispose();
-
- _nextUpdate = _gameTiming.CurTime + TimeSpan.FromSeconds(10);
+ _nextUpdate = _gameTiming.CurTime + TimeSpan.FromSeconds(HeirloomRepeatDuration);
}
private IEnumerable RecursiveGetAllChildren(EntityUid uid)
diff --git a/Content.Shared/Chemistry/SharedChemMaster.cs b/Content.Shared/Chemistry/SharedChemMaster.cs
index 8fca24fcdb0..3c11a3552d0 100644
--- a/Content.Shared/Chemistry/SharedChemMaster.cs
+++ b/Content.Shared/Chemistry/SharedChemMaster.cs
@@ -95,10 +95,13 @@ public enum ChemMasterReagentAmount
U5 = 5,
U10 = 10,
U15 = 15,
+ U20 = 20,
U25 = 25,
U30 = 30,
U45 = 45,
U50 = 50,
+ U75 = 75,
+ U90 = 90,
U100 = 100,
All,
}
diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml
index ff8b4087abe..92a35ebaf66 100644
--- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml
+++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml
@@ -30,6 +30,9 @@
ClothingHeadHatPumpkin: 2
ClothingHeadHatShrineMaidenWig: 2
ClothingOuterSuitShrineMaiden: 2
+ ClothingHeadHatWitch1: 2
+ ClothingHeadHatWitch: 2
+ ClothingOuterSuitWitchRobes: 2
Gohei: 2
ClothingHeadHatRedRacoon: 2
ClothingOuterRedRacoon: 2
diff --git a/Resources/Prototypes/CharacterItemGroups/Jobs/Service/bartender.yml b/Resources/Prototypes/CharacterItemGroups/Jobs/Service/bartender.yml
index a6d0e7a21e1..27788fa2a51 100644
--- a/Resources/Prototypes/CharacterItemGroups/Jobs/Service/bartender.yml
+++ b/Resources/Prototypes/CharacterItemGroups/Jobs/Service/bartender.yml
@@ -30,6 +30,10 @@
id: LoadoutServiceBartenderShotgunDoubleBarreledRubber
- type: loadout
id: LoadoutServiceBartenderMosinRubber
+ - type: loadout
+ id: LoadoutServiceBartenderArgentiNonlethal
+ - type: loadout
+ id: LoadoutServiceBartenderRepeaterNonlethal
#- type: characterItemGroup
# id: LoadoutBartenderEyes
diff --git a/Resources/Prototypes/DeltaV/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/DeltaV/Entities/Clothing/OuterClothing/hardsuits.yml
index d3451108774..041a1482b88 100644
--- a/Resources/Prototypes/DeltaV/Entities/Clothing/OuterClothing/hardsuits.yml
+++ b/Resources/Prototypes/DeltaV/Entities/Clothing/OuterClothing/hardsuits.yml
@@ -107,13 +107,13 @@
coefficients:
Blunt: 0.50
Slash: 0.50
- Piercing: 0.50
+ Piercing: 0.40
Radiation: 0.70
Caustic: 0.70
- Heat: 0.70
+ Heat: 0.40
- type: ClothingSpeedModifier
- walkModifier: 0.65
- sprintModifier: 0.65
+ walkModifier: 0.60
+ sprintModifier: 0.60
- type: ToggleableClothing
clothingPrototype: ClothingHeadHelmetHardsuitCombatRiot
diff --git a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml
index 3a5056340cc..f16dbd1a730 100644
--- a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml
+++ b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml
@@ -518,3 +518,20 @@
sprite: Clothing/Head/Hoods/Coat/hoodweb.rsi
- type: Clothing
sprite: Clothing/Head/Hoods/Coat/hoodweb.rsi
+
+- type: entity
+ parent: ClothingHeadBase
+ id: ClothingHeadHatHoodRedHood
+ name: Red Hood
+ description: A hood of a red cloak, made to keep the harsh light out of a traveler's eyes. Sometimes it sparkles in the light of the sun.
+ components:
+ - type: Sprite
+ sprite: Clothing/Head/Hoods/redhood.rsi
+ - type: Clothing
+ sprite: Clothing/Head/Hoods/redhood.rsi
+ - type: Tag
+ tags:
+ - WhitelistChameleon
+ - type: HideLayerClothing
+ slots:
+ - Hair
\ No newline at end of file
diff --git a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml
index f31b38c20c7..f02dc068da9 100644
--- a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml
+++ b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml
@@ -272,3 +272,19 @@
- type: Sprite
sprite: Clothing/Neck/Cloaks/pan.rsi
+- type: entity
+ parent: ClothingNeckBase
+ id: ClothingNeckCloakRedHood
+ name: Red Cloak
+ description: A cloak made for travel and comfort. Slightly smells of cherry pie?
+ components:
+ - type: Sprite
+ sprite: Clothing/Neck/Cloaks/redhood.rsi
+ - type: ToggleableClothing
+ clothingPrototype: ClothingHeadHatHoodRedHood
+ requiredSlot:
+ - neck
+ slot: head
+ - type: ContainerContainer
+ containers:
+ toggleable-clothing: !type:ContainerSlot {}
\ No newline at end of file
diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml
index 0621e7cd694..96caf947172 100644
--- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml
+++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml
@@ -311,3 +311,14 @@
coefficient: 0.01
- type: ToggleableClothing
clothingPrototype: ClothingHeadHelmetHardsuitCarp
+
+- type: entity # From Upstream
+ parent: ClothingOuterBase
+ id: ClothingOuterSuitWitchRobes
+ name: witch robes
+ description: Magic is all about the spell power, ZE!
+ components:
+ - type: Sprite
+ sprite: Clothing/OuterClothing/Suits/witchrobe.rsi
+ - type: Clothing
+ sprite: Clothing/OuterClothing/Suits/witchrobe.rsi
\ No newline at end of file
diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/pka.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/pka.yml
index 6af389fed4c..b7d329d22fc 100644
--- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/pka.yml
+++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Basic/pka.yml
@@ -19,3 +19,10 @@
requireDetailRange: false
# todo: add itemcomponent with inhandVisuals states using unused texture and animation assets in kinetic_accelerator.rsi
# todo: add clothingcomponent with clothingVisuals states using unused texture and animations assets in kinetic_accelerator.rsi
+ - type: StaticPrice
+ price: 270
+ - type: Construction #Frontier
+ graph: PKASawn #Frontier
+ node: start #Frontier
+ deconstructionTarget: null #Frontier
+ - type: Wieldable # Frontier
diff --git a/Resources/Prototypes/Loadouts/Jobs/Service/bartender.yml b/Resources/Prototypes/Loadouts/Jobs/Service/bartender.yml
index ef4614e886b..d5525f333db 100644
--- a/Resources/Prototypes/Loadouts/Jobs/Service/bartender.yml
+++ b/Resources/Prototypes/Loadouts/Jobs/Service/bartender.yml
@@ -62,6 +62,48 @@
items:
- WeaponSniperMosinRubber
+- type: loadout
+ id: LoadoutServiceBartenderBoxMagnumRubber
+ category: JobsServiceBartender
+ cost: 0
+ exclusive: true
+ requirements:
+ - !type:CharacterItemGroupRequirement
+ group: LoadoutBartenderAmmo
+ - !type:CharacterJobRequirement
+ jobs:
+ - Bartender
+ items:
+ - MagazineBoxMagnumRubber
+
+- type: loadout
+ id: LoadoutServiceBartenderArgentiNonlethal
+ category: JobsServiceBartender
+ cost: 0
+ exclusive: true
+ requirements:
+ - !type:CharacterItemGroupRequirement
+ group: LoadoutBartenderWeapon
+ - !type:CharacterJobRequirement
+ jobs:
+ - Bartender
+ items:
+ - WeaponRevolverArgentiNonlethal
+
+- type: loadout
+ id: LoadoutServiceBartenderRepeaterNonlethal
+ category: JobsServiceBartender
+ cost: 0
+ exclusive: true
+ requirements:
+ - !type:CharacterItemGroupRequirement
+ group: LoadoutBartenderWeapon
+ - !type:CharacterJobRequirement
+ jobs:
+ - Bartender
+ items:
+ - WeaponSniperRepeaterNonlethal
+
# Eyes
# Gloves
diff --git a/Resources/Prototypes/Mood/genericNegativeEffects.yml b/Resources/Prototypes/Mood/genericNegativeEffects.yml
index b83a5c2fc22..4c9c5686d38 100644
--- a/Resources/Prototypes/Mood/genericNegativeEffects.yml
+++ b/Resources/Prototypes/Mood/genericNegativeEffects.yml
@@ -54,3 +54,8 @@
id: HeirloomLost
moodChange: -15
category: Heirloom
+
+- type: moodEffect
+ id: HeirloomNeutral
+ moodChange: -5
+ category: Heirloom
diff --git a/Resources/Prototypes/Mood/genericPositiveEffects.yml b/Resources/Prototypes/Mood/genericPositiveEffects.yml
index 3af8ec052a6..c3d3acc8a5d 100644
--- a/Resources/Prototypes/Mood/genericPositiveEffects.yml
+++ b/Resources/Prototypes/Mood/genericPositiveEffects.yml
@@ -51,4 +51,4 @@
category: Heirloom
moodChange: 5
timeout: 60 # A bit of time before they realize it's gone
- moodletOnEnd: HeirloomLost
+ moodletOnEnd: HeirloomNeutral
diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Belt/belts.yml
index 8847f8d03a9..df1e61c23da 100644
--- a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Belt/belts.yml
+++ b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Belt/belts.yml
@@ -15,6 +15,8 @@
- Flashlight
- ForensicBeltEquip
- HandLabeler
+ - Sidearm
+ - Folder
- type: entity
parent: ClothingBeltBase
diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hats.yml
index 3be093de095..710ce8322dc 100644
--- a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hats.yml
+++ b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hats.yml
@@ -101,6 +101,9 @@
equipDelay: 0.5
unequipDelay: 6
- type: HeadCage
+ - type: Tag
+ tags:
+ - ForensicBeltEquip
- type: entity
parent: ClothingHeadTinfoil
diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/knives.yml b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/knives.yml
index b2ee1bcfdce..b5cb96f1617 100644
--- a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/knives.yml
+++ b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Weapons/Melee/knives.yml
@@ -24,6 +24,9 @@
state: icon
- type: Item
sprite: Nyanotrasen/Objects/Weapons/Melee/anti_psychic_knife.rsi
+ storedSprite:
+ state: icon
+ sprite: Nyanotrasen/Objects/Weapons/Melee/anti_psychic_knife.rsi
- type: Tag
tags:
- ForensicBeltEquip
diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/_NF/Entities/Clothing/Neck/cloaks.yml
new file mode 100644
index 00000000000..31e20f92c5a
--- /dev/null
+++ b/Resources/Prototypes/_NF/Entities/Clothing/Neck/cloaks.yml
@@ -0,0 +1,10 @@
+- type: entity
+ parent: ClothingNeckBase
+ id: ClothingNeckCloakJanitor
+ name: janitor's cloak
+ description: An exquisite cloak fitting for those who save the station from messes and slips. The unsung heroes who work thanklessly while we make a mess over the bar. Pure angels of patience and an iron will! ...It's also waterproof!
+ components:
+ - type: Sprite
+ sprite: _NF/Clothing/Neck/Cloaks/janitor.rsi
+ - type: Clothing
+ sprite: _NF/Clothing/Neck/Cloaks/janitor.rsi
diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Basic/sawn_pka.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Basic/sawn_pka.yml
new file mode 100644
index 00000000000..4dd2d8fb7b8
--- /dev/null
+++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Basic/sawn_pka.yml
@@ -0,0 +1,27 @@
+- type: entity
+ id: WeaponProtoKineticAcceleratorSawn
+ parent: WeaponProtoKineticAcceleratorBase
+ name: sawn-off proto-kinetic accelerator
+ description: A PKA rifle that has been crudely cut down and rewired. It's all but impossible to aim effectively, but at least it fits inside a jumpsuit pocket now.
+ components:
+ - type: Sprite
+ sprite: _NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi
+ state: icon
+ - type: Item
+ sprite: _NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi
+ size: Small
+ shape:
+ - 0,0,1,0
+ - type: Gun
+ fireRate: 8
+ selectedMode: FullAuto
+ availableModes:
+ - FullAuto
+ minAngle: 41
+ maxAngle: 55
+ - type: Clothing
+ sprite: _NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi
+ - type: Construction
+ graph: PKASawn
+ node: pkasawn
+ deconstructionTarget: null
diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/rifles.yml
index a2d93631db6..bc20482e1bd 100644
--- a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/rifles.yml
+++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Rifles/rifles.yml
@@ -8,10 +8,10 @@
- type: Sprite
sprite: _NF/Objects/Weapons/Guns/Rifles/gestio.rsi
layers:
- - state: base
- map: ["enum.GunVisualLayers.Base"]
- state: mag-0
map: ["enum.GunVisualLayers.Mag"]
+ - state: base
+ map: ["enum.GunVisualLayers.Base"]
- type: Clothing
sprite: _NF/Objects/Weapons/Guns/Rifles/gestio.rsi
- type: Gun
@@ -60,6 +60,7 @@
magState: mag
steps: 1
zeroVisible: true
+ - type: Appearance
- type: entity
parent: WeaponRifleGestio
@@ -124,10 +125,10 @@
- type: Sprite
sprite: _NF/Objects/Weapons/Guns/Rifles/novalitec1.rsi
layers:
- - state: base
- map: ["enum.GunVisualLayers.Base"]
- state: mag-0
map: ["enum.GunVisualLayers.Mag"]
+ - state: base
+ map: ["enum.GunVisualLayers.Base"]
- type: Clothing
sprite: _NF/Objects/Weapons/Guns/Rifles/novalitec1.rsi
- type: Gun
@@ -165,6 +166,7 @@
magState: mag
steps: 1
zeroVisible: true
+ - type: Appearance
- type: entity
parent: WeaponRifleNovaliteC1
@@ -230,10 +232,10 @@
- type: Sprite
sprite: _NF/Objects/Weapons/Guns/Rifles/svt40.rsi
layers:
- - state: base
- map: ["enum.GunVisualLayers.Base"]
- state: mag-0
map: ["enum.GunVisualLayers.Mag"]
+ - state: base
+ map: ["enum.GunVisualLayers.Base"]
- type: Clothing
sprite: _NF/Objects/Weapons/Guns/Rifles/svt40.rsi
quickEquip: false
@@ -276,6 +278,7 @@
magState: mag
steps: 1
zeroVisible: true
+ - type: Appearance
- type: entity
parent: WeaponRifleSVT
diff --git a/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Snipers/snipers.yml b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Snipers/snipers.yml
new file mode 100644
index 00000000000..e6005fd0cc7
--- /dev/null
+++ b/Resources/Prototypes/_NF/Entities/Objects/Weapons/Guns/Snipers/snipers.yml
@@ -0,0 +1,31 @@
+# Frontier
+- type: entity
+ name: N2524 Pattern Repeater
+ parent: BaseWeaponSniper
+ id: WeaponSniperRepeater
+ description: A civilian grade lever action firearm, favored by space cowboys across the Frontier for its reliability and stopping power. Uses .45 magnum ammo.
+ components:
+ - type: Sprite
+ sprite: _NF/Objects/Weapons/Guns/Snipers/repeater.rsi
+ - type: Clothing
+ sprite: _NF/Objects/Weapons/Guns/Snipers/repeater.rsi
+ - type: StaticPrice
+ price: 500
+ - type: BallisticAmmoProvider
+ whitelist:
+ tags:
+ - CartridgeMagnum
+ capacity: 7
+ proto: CartridgeMagnum
+
+- type: entity
+ parent: WeaponSniperRepeater
+ id: WeaponSniperRepeaterNonlethal
+ suffix: Non-lethal
+ components:
+ - type: BallisticAmmoProvider
+ whitelist:
+ tags:
+ - CartridgeMagnum
+ capacity: 7
+ proto: CartridgeMagnumRubber
diff --git a/Resources/Prototypes/_NF/Recipes/Construction/Graphs/weapons/pkasawn.yml b/Resources/Prototypes/_NF/Recipes/Construction/Graphs/weapons/pkasawn.yml
new file mode 100644
index 00000000000..9ed778d7844
--- /dev/null
+++ b/Resources/Prototypes/_NF/Recipes/Construction/Graphs/weapons/pkasawn.yml
@@ -0,0 +1,12 @@
+- type: constructionGraph
+ id: PKASawn
+ start: start
+ graph:
+ - node: start
+ edges:
+ - to: pkasawn
+ steps:
+ - tool: Sawing
+ doAfter: 2
+ - node: pkasawn
+ entity: WeaponProtoKineticAcceleratorSawn
diff --git a/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/equipped-HELMET.png
new file mode 100644
index 00000000000..6a090ee541c
Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/equipped-HELMET.png differ
diff --git a/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/icon.png b/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/icon.png
new file mode 100644
index 00000000000..3ac84622534
Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/meta.json
new file mode 100644
index 00000000000..bd53e417c59
--- /dev/null
+++ b/Resources/Textures/Clothing/Head/Hoods/redhood.rsi/meta.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Goliath Cloak used as base, original sprite by TechnoAlchemisto (https://github.com/TechnoAlchemisto) and modified sprite by FantasticFwoosh (https://github.com/FantasticFwoosh), sprites in hand by PuroSlavKing (Github) and RudeyCoolLeet#3875. Modified by Memeji Dankiri.",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-HELMET",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/equipped-NECK.png b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/equipped-NECK.png
new file mode 100644
index 00000000000..cdf97f81d12
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/equipped-NECK.png differ
diff --git a/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/icon.png b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/icon.png
new file mode 100644
index 00000000000..9e1aebb0395
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/inhand-left.png b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/inhand-left.png
new file mode 100644
index 00000000000..d4fd8db4bac
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/inhand-right.png b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/inhand-right.png
new file mode 100644
index 00000000000..1e1008748c2
Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/meta.json b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/meta.json
new file mode 100644
index 00000000000..de450048eb5
--- /dev/null
+++ b/Resources/Textures/Clothing/Neck/Cloaks/redhood.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Goliath Cloak used as base, original sprite by TechnoAlchemisto (https://github.com/TechnoAlchemisto) and modified sprite by FantasticFwoosh (https://github.com/FantasticFwoosh), sprites in hand by PuroSlavKing (Github) and RudeyCoolLeet#3875. Modified by Memeji Dankiri.",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-NECK",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/equipped-OUTERCLOTHING.png
new file mode 100644
index 00000000000..b797c8dce44
Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/equipped-OUTERCLOTHING.png differ
diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/icon.png
new file mode 100644
index 00000000000..acdc1b394b2
Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/icon.png differ
diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/inhand-left.png b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/inhand-left.png
new file mode 100644
index 00000000000..a93d4a5af03
Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/inhand-left.png differ
diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/inhand-right.png b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/inhand-right.png
new file mode 100644
index 00000000000..0ee8f623627
Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/inhand-right.png differ
diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/meta.json
new file mode 100644
index 00000000000..76513321794
--- /dev/null
+++ b/Resources/Textures/Clothing/OuterClothing/Suits/witchrobe.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/pull/36039/commits/b3bd70ae925ecbe7c625f70c4c3d09d3ed2ed32a . Inhands were made for SS14 and available under the same license",
+ "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/_NF/Clothing/Neck/Cloaks/janitor.rsi/equipped-NECK.png b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/equipped-NECK.png
new file mode 100644
index 00000000000..b2f820071c8
Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/equipped-NECK.png differ
diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/icon.png b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/icon.png
new file mode 100644
index 00000000000..ab239662ab5
Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/icon.png differ
diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/inhand-left.png
new file mode 100644
index 00000000000..721476f5923
Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/inhand-right.png
new file mode 100644
index 00000000000..cae5a2d0e07
Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/meta.json b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/meta.json
new file mode 100644
index 00000000000..5ef8985ec58
--- /dev/null
+++ b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/meta.json
@@ -0,0 +1,33 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, sprites in hand by PuroSlavKing (Github) and RudeyCoolLeet#3875, edited by dvir001 on github",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "plunger"
+ },
+ {
+ "name": "plunger-equipped-NECK",
+ "directions": 4
+ },
+ {
+ "name": "equipped-NECK",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/plunger-equipped-NECK.png b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/plunger-equipped-NECK.png
new file mode 100644
index 00000000000..978c7a77800
Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/plunger-equipped-NECK.png differ
diff --git a/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/plunger.png b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/plunger.png
new file mode 100644
index 00000000000..53f0183cf19
Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Neck/Cloaks/janitor.rsi/plunger.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/equipped-BELT.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/equipped-BELT.png
new file mode 100644
index 00000000000..28077085547
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/equipped-BELT.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/icon.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/icon.png
new file mode 100644
index 00000000000..acd074e877c
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/icon.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/inhand-left.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/inhand-left.png
new file mode 100644
index 00000000000..767ed5b8e49
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/inhand-right.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/inhand-right.png
new file mode 100644
index 00000000000..e54e8fa2cc8
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/meta.json
new file mode 100644
index 00000000000..98181d3ead3
--- /dev/null
+++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Basic/sawn_kinetic_accelerator.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "icon by RiceMar1244 based on tgstation at https://github.com/tgstation/tgstation/commit/8b7f8ba6a3327c7381967c550f185dffafd11a57; inhand, and belt equip sprites by RiceMar1244 | edited for sawn-off version by erhardsteinhauer",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "equipped-BELT",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/base.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/base.png
new file mode 100644
index 00000000000..421fb601521
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/base.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/bolt-open.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/bolt-open.png
new file mode 100644
index 00000000000..5194385cf00
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/bolt-open.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/equipped-BACKPACK.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/equipped-BACKPACK.png
new file mode 100644
index 00000000000..ff8892bdaf3
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/equipped-BACKPACK.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/equipped-SUITSTORAGE.png
new file mode 100644
index 00000000000..ff8892bdaf3
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/equipped-SUITSTORAGE.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/inhand-left.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/inhand-left.png
new file mode 100644
index 00000000000..417daab4009
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/inhand-right.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/inhand-right.png
new file mode 100644
index 00000000000..1aec54fe893
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/meta.json b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/meta.json
new file mode 100644
index 00000000000..f0146e82a56
--- /dev/null
+++ b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/meta.json
@@ -0,0 +1,41 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from InterBay13 at https://github.com/AndySok/InterBay13/commit/84824582fe1381d9ea6282b9da407994ab8ab509, backpack sling sprite edited by Boaz1111",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "base"
+ },
+ {
+ "name": "bolt-open"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "equipped-BACKPACK",
+ "directions": 4
+ },
+ {
+ "name": "equipped-SUITSTORAGE",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "wielded-inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/wielded-inhand-left.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/wielded-inhand-left.png
new file mode 100644
index 00000000000..f41af6b0c46
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/wielded-inhand-left.png differ
diff --git a/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/wielded-inhand-right.png b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/wielded-inhand-right.png
new file mode 100644
index 00000000000..fcae7fa8f04
Binary files /dev/null and b/Resources/Textures/_NF/Objects/Weapons/Guns/Snipers/repeater.rsi/wielded-inhand-right.png differ