diff --git a/Content.Server/Strip/StrippableSystem.cs b/Content.Server/Strip/StrippableSystem.cs
index 0ae569b392..3bb3050eed 100644
--- a/Content.Server/Strip/StrippableSystem.cs
+++ b/Content.Server/Strip/StrippableSystem.cs
@@ -22,6 +22,7 @@ using Content.Shared._White.MagGloves;
using Robust.Server.GameObjects;
using Robust.Shared.Player;
using Robust.Shared.Utility;
+using Content.Shared._White.BucketHelmet;
namespace Content.Server.Strip
{
@@ -135,6 +136,16 @@ namespace Content.Server.Strip
}
// WD EDIT END
+ // WD ENGI EXCLUSIVE START EDIT
+ if (args.Slot == "ears" && TryComp(strippable, out PreventStrippingFromEarsComponent? _))
+ {
+ var message = Loc.GetString("buckethelmet-cant-strip");
+ _popupSystem.PopupEntity(message, user, user);
+ return;
+ }
+ // WD ENGI EXCLUSIVE EDIT END
+
+
if (args.IsHand)
{
StripHand((user, userHands), (strippable.Owner, null), args.Slot, strippable);
diff --git a/Content.Server/_White/BucketHelmet/BucketHelmetSystem.cs b/Content.Server/_White/BucketHelmet/BucketHelmetSystem.cs
new file mode 100644
index 0000000000..c5a1d51b4f
--- /dev/null
+++ b/Content.Server/_White/BucketHelmet/BucketHelmetSystem.cs
@@ -0,0 +1,30 @@
+using Content.Shared.Inventory.Events;
+using Content.Shared._White.BucketHelmet;
+// WD Engi Exclusive
+namespace Content.Server._White.BucketHelmet;
+
+///
+/// This handles placemet of PreventStrippingFromEarsComponent when bucket helmet is in use.
+///
+public sealed class BucketHelmetSystem : EntitySystem
+{
+ ///
+ public override void Initialize()
+ {
+ SubscribeLocalEvent(OnGotEquipped);
+ SubscribeLocalEvent(OnGotUnequipped);
+ }
+
+
+ public void OnGotUnequipped(EntityUid uid, BucketHelmetComponent component, GotUnequippedEvent args)
+ {
+ RemComp(args.Equipee);
+ }
+
+ public void OnGotEquipped(EntityUid uid, BucketHelmetComponent component, GotEquippedEvent args)
+ {
+ if (args.Slot == "head")
+ EnsureComp(args.Equipee);
+ }
+
+}
diff --git a/Content.Shared/_White/BucketHelmet/BucketHelmetComponent.cs b/Content.Shared/_White/BucketHelmet/BucketHelmetComponent.cs
new file mode 100644
index 0000000000..c16a638539
--- /dev/null
+++ b/Content.Shared/_White/BucketHelmet/BucketHelmetComponent.cs
@@ -0,0 +1,11 @@
+// WD Engi Exclusive
+namespace Content.Shared._White.BucketHelmet;
+
+///
+/// This is used for bucket helmet.
+///
+[RegisterComponent]
+public sealed partial class BucketHelmetComponent : Component
+{
+
+}
diff --git a/Content.Shared/_White/BucketHelmet/PreventStrippingFromEarsComponent.cs b/Content.Shared/_White/BucketHelmet/PreventStrippingFromEarsComponent.cs
new file mode 100644
index 0000000000..681c344430
--- /dev/null
+++ b/Content.Shared/_White/BucketHelmet/PreventStrippingFromEarsComponent.cs
@@ -0,0 +1,11 @@
+// WD Engi Exclusive
+namespace Content.Shared._White.BucketHelmet;
+
+///
+/// This is used to block stripping headsets when bucket helmet is on.
+///
+[RegisterComponent]
+public sealed partial class PreventStrippingFromEarsComponent : Component
+{
+
+}
diff --git a/Resources/Locale/ru-RU/White/bucket-helmet.ftl b/Resources/Locale/ru-RU/White/bucket-helmet.ftl
new file mode 100644
index 0000000000..7bee4add50
--- /dev/null
+++ b/Resources/Locale/ru-RU/White/bucket-helmet.ftl
@@ -0,0 +1,4 @@
+ent-ClothingHeadBucketHelmet = шлем из ведра
+ .desc = Обычное ведро с двумя прорезями для глаз. При ношении на голове что-то липкое внутри цепляется за наушник.
+
+buckethelmet-cant-strip = Шлем из ведра не позволяет это сделать
diff --git a/Resources/Prototypes/Entities/Objects/Tools/bucket.yml b/Resources/Prototypes/Entities/Objects/Tools/bucket.yml
index b6a7ae38e3..c59388f9f5 100644
--- a/Resources/Prototypes/Entities/Objects/Tools/bucket.yml
+++ b/Resources/Prototypes/Entities/Objects/Tools/bucket.yml
@@ -66,3 +66,7 @@
- type: PhysicalComposition
materialComposition:
Plastic: 50
+ - type: Construction # WD Engi Exclusive
+ deconstructionTarget: null
+ graph: ClothingHeadBucketHelmet
+ node: start
diff --git a/Resources/Prototypes/_White/Entities/Clothing/Head/bucketHelmet.yml b/Resources/Prototypes/_White/Entities/Clothing/Head/bucketHelmet.yml
new file mode 100644
index 0000000000..9121cefa0c
--- /dev/null
+++ b/Resources/Prototypes/_White/Entities/Clothing/Head/bucketHelmet.yml
@@ -0,0 +1,27 @@
+# WD Engi Exclusive
+- type: entity
+ parent: ClothingHeadBase
+ id: ClothingHeadBucketHelmet
+ name: bucket helmet
+ description: A regular bucket with two eye holes. When worn on the head, something sticky inside latches on the earpiece.
+ components:
+ - type: Sprite
+ sprite: White/Clothing/Head/bucketHelmet.rsi
+ - type: Clothing
+ sprite: White/Clothing/Head/bucketHelmet.rsi
+ - type: IdentityBlocker
+ - type: Armor
+ modifiers:
+ coefficients:
+ Blunt: 0.95
+ - type: Tag
+ tags:
+ - HidesHair
+ - WhitelistChameleon
+ - type: Construction
+ deconstructionTarget: start
+ graph: ClothingHeadBucketHelmet
+ node: helmet
+ - type: Item
+ size: Normal
+ - type: BucketHelmet
diff --git a/Resources/Prototypes/_White/Recipes/Crafting/Graphs/bucketHelmet.yml b/Resources/Prototypes/_White/Recipes/Crafting/Graphs/bucketHelmet.yml
new file mode 100644
index 0000000000..6129a2624b
--- /dev/null
+++ b/Resources/Prototypes/_White/Recipes/Crafting/Graphs/bucketHelmet.yml
@@ -0,0 +1,22 @@
+# WD Engi Exclusive
+- type: constructionGraph
+ id: ClothingHeadBucketHelmet
+ start: start
+ graph:
+ - node: start
+ entity: Bucket
+ edges:
+ - to: helmet
+ conditions:
+ - !type:SolutionEmpty
+ solution: bucket
+ steps:
+ - tool: Cutting
+ doAfter: 5
+ - node: helmet
+ entity: ClothingHeadBucketHelmet
+ edges:
+ - to: start
+ steps:
+ - tool: Welding
+ doAfter: 5
diff --git a/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/equipped-HELMET.png b/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/equipped-HELMET.png
new file mode 100644
index 0000000000..2217a63c0f
Binary files /dev/null and b/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/equipped-HELMET.png differ
diff --git a/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/icon.png b/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/icon.png
new file mode 100644
index 0000000000..1236927c54
Binary files /dev/null and b/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/icon.png differ
diff --git a/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/meta.json b/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/meta.json
new file mode 100644
index 0000000000..b821cbeb0f
--- /dev/null
+++ b/Resources/Textures/White/Clothing/Head/bucketHelmet.rsi/meta.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "stepppasha",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "equipped-HELMET",
+ "directions": 4
+ }
+ ]
+}