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 + } + ] +}