From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Tue, 30 Jan 2024 00:21:25 +0000 (+0100) Subject: Add water droplet hat for arachnids (#23822) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=a86d0e51ec74cfdde2969d73bcb1ea1c683911bb;p=space-station-14.git Add water droplet hat for arachnids (#23822) Co-authored-by: Kevin Zheng --- diff --git a/Content.Server/Chemistry/ReagentEffects/WearableReaction.cs b/Content.Server/Chemistry/ReagentEffects/WearableReaction.cs new file mode 100644 index 0000000000..d9f8414995 --- /dev/null +++ b/Content.Server/Chemistry/ReagentEffects/WearableReaction.cs @@ -0,0 +1,42 @@ +using Content.Shared.Inventory; +using Content.Shared.Chemistry.Reagent; +using Robust.Shared.Prototypes; + +namespace Content.Server.Chemistry.ReagentEffects; + +/// +/// A reaction effect that consumes the required amount of reagent and spawns PrototypeID in the +/// entity's Slot. Used to implement the water droplet effect for arachnids. +/// +public sealed partial class WearableReaction : ReagentEffect +{ + /// + /// Minimum quantity of reagent required to trigger this effect. + /// + [DataField] + public float AmountThreshold = 1f; + + /// + /// Slot to spawn the item into. + /// + [DataField(required: true)] + public string Slot; + + /// + /// Prototype ID of item to spawn. + /// + [DataField(required: true)] + public string PrototypeID; + + protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) => null; + + public override void Effect(ReagentEffectArgs args) + { + if (args.Reagent == null || args.Quantity < AmountThreshold) + return; + + // SpawnItemInSlot returns false if slot is already occupied + if (args.EntityManager.System().SpawnItemInSlot(args.SolutionEntity, Slot, PrototypeID)) + args.Source?.RemoveReagent(args.Reagent.ID, AmountThreshold); + } +} diff --git a/Resources/Prototypes/Entities/Clothing/Head/misc.yml b/Resources/Prototypes/Entities/Clothing/Head/misc.yml index 7b93e83cd9..9826da57b7 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/misc.yml @@ -224,3 +224,61 @@ sprite: Clothing/Head/Misc/red_racoon.rsi - type: Clothing sprite: Clothing/Head/Misc/red_racoon.rsi + +- type: entity + parent: Clothing + id: WaterDropletHat + name: water droplet + description: Makes 8-eyed friends 8 times more adorable! + components: + - type: Sprite + sprite: Clothing/Head/Misc/waterdroplet.rsi + state: icon + - type: Item + sprite: Clothing/Head/Misc/waterdroplet.rsi + size: Tiny + storedRotation: -90 + - type: Clothing + slots: + - HEAD + - type: Food + solution: drink + useSound: /Audio/Items/drink.ogg + eatMessage: drink-component-try-use-drink-success-slurp + delay: 0.5 + forceFeedDelay: 1.5 + - type: FlavorProfile + flavors: + - water + - type: SolutionContainerManager + solutions: + drink: + maxVol: 2 + reagents: + - ReagentId: Water + Quantity: 2 + - type: DamageOnHighSpeedImpact + minimumSpeed: 0.1 + damage: + types: + Blunt: 1 + - type: Damageable + damageContainer: Biological + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 1 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: desecration + - !type:SpillBehavior + solution: drink + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Tag + tags: + - WhitelistChameleon + - type: StaticPrice + price: 1 diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index b49029f791..703345dae2 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -34,6 +34,14 @@ amount: 5 - type: Inventory templateId: arachnid + - type: Reactive + reactions: + - reagents: [Water] + methods: [Touch] + effects: + - !type:WearableReaction + slot: head + prototypeID: WaterDropletHat # Damage (Self) - type: Bloodstream bloodReagent: CopperBlood diff --git a/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/equipped-HELMET.png new file mode 100644 index 0000000000..9759d202a2 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/icon.png b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/icon.png new file mode 100644 index 0000000000..964a74ec9e Binary files /dev/null and b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/inhand-left.png new file mode 100644 index 0000000000..eb7f81e9bc Binary files /dev/null and b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/inhand-right.png new file mode 100644 index 0000000000..bab564c5fe Binary files /dev/null and b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/meta.json b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/meta.json new file mode 100644 index 0000000000..77d5e14760 --- /dev/null +++ b/Resources/Textures/Clothing/Head/Misc/waterdroplet.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by SlamBamActionman", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +}