From 0f85e10747e3ab3c99b6e300802658cbe343c5f9 Mon Sep 17 00:00:00 2001 From: zzylex <146784470+zzylex@users.noreply.github.com> Date: Wed, 3 Jan 2024 00:36:16 -0500 Subject: [PATCH] Allow plungers to be fired by bows and embedded into entities (#23406) * allow plungers to be fired by bows and embedded into entities * fixed bow being able to shoot every object --- Resources/Audio/Weapons/attributions.yml | 5 ++ Resources/Audio/Weapons/pop.ogg | Bin 0 -> 7789 bytes .../Objects/Specific/Janitorial/janitor.yml | 75 +++++++++++++----- .../Entities/Objects/Weapons/Guns/Bow/bow.yml | 22 +++-- .../Weapons/Guns/Bow/bow.rsi/meta.json | 6 ++ .../Guns/Bow/bow.rsi/unwielded-plunger.png | Bin 0 -> 267 bytes .../Guns/Bow/bow.rsi/wielded-plunger.png | Bin 0 -> 265 bytes 7 files changed, 81 insertions(+), 27 deletions(-) create mode 100644 Resources/Audio/Weapons/pop.ogg create mode 100644 Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/unwielded-plunger.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/wielded-plunger.png diff --git a/Resources/Audio/Weapons/attributions.yml b/Resources/Audio/Weapons/attributions.yml index b29f498fee..310b01b728 100644 --- a/Resources/Audio/Weapons/attributions.yml +++ b/Resources/Audio/Weapons/attributions.yml @@ -82,3 +82,8 @@ license: "CC0-1.0" copyright: "Taken from ScreamStudio on freesound.org" source: "https://freesound.org/people/ScreamStudio/sounds/392617/" + +- files: ["pop.ogg"] + license: "CC0-1.0" + copyright: "Taken from 0ne_one111yt on freesound.org" + source: "https://freesound.org/people/0ne_one111yt/sounds/478213/" diff --git a/Resources/Audio/Weapons/pop.ogg b/Resources/Audio/Weapons/pop.ogg new file mode 100644 index 0000000000000000000000000000000000000000..99b58b26d3e693f4377f627372a7c0eae6386eb8 GIT binary patch literal 7789 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

nk%c#Ny8aQHFy!(&m3e4j)u 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 BGtU43 literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml index 8774dbf60e..e819d6c39f 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml @@ -552,28 +552,59 @@ parent: BaseItem description: A plunger with a red plastic suction-cup and a wooden handle. Used to unclog drains. components: - - type: Tag - tags: - - Plunger - - WhitelistChameleon - - type: Sprite - sprite: Objects/Specific/Janitorial/plunger.rsi - state: plunger - - type: Item - sprite: Objects/Specific/Janitorial/plunger.rsi - heldPrefix: plunger - - type: ItemCooldown - - type: GuideHelp - guides: - - Janitorial - - type: Clothing - sprite: Objects/Specific/Janitorial/plunger.rsi - slots: - - HEAD - clothingVisuals: - head: - - state: equipped-HELMET - offset: "0, 0.15625" + - type: Tag + tags: + - Plunger + - WhitelistChameleon + - type: Sprite + sprite: Objects/Specific/Janitorial/plunger.rsi + state: plunger + - type: Item + sprite: Objects/Specific/Janitorial/plunger.rsi + heldPrefix: plunger + - type: ItemCooldown + - type: GuideHelp + guides: + - Janitorial + - type: Clothing + sprite: Objects/Specific/Janitorial/plunger.rsi + slots: + - HEAD + clothingVisuals: + head: + - state: equipped-HELMET + offset: "0, 0.15625" + - type: Fixtures + fixtures: + fix1: + shape: !type:PhysShapeCircle + radius: 0.2 + density: 5 + mask: + - ItemMask + restitution: 0.3 + friction: 0.2 + projectile: + shape: + !type:PhysShapeAabb + bounds: "-0.1,-0.1,0.1,0.1" + hard: false + mask: + - Impassable + - BulletImpassable + - type: EmbeddableProjectile + sound: /Audio/Weapons/pop.ogg + embedOnThrow: True + - type: ThrowingAngle + angle: 0 + - type: Ammo + muzzleFlash: null + - type: Projectile + deleteOnCollide: false + onlyCollideWhenShot: true + damage: + types: + Blunt: 3 - type: entity parent: BaseItem diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml index 4b7125f571..db98c6eabe 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Bow/bow.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity name: bow parent: BaseItem id: BaseBow @@ -31,18 +31,19 @@ soundEmpty: null - type: ItemSlots slots: - arrow: - name: Arrow + projectiles: + name: Projectiles startingItem: null insertSound: /Audio/Weapons/Guns/Misc/arrow_nock.ogg whitelist: tags: - Arrow + - Plunger - type: ContainerContainer containers: - arrow: !type:ContainerSlot + projectiles: !type:ContainerSlot - type: ContainerAmmoProvider - container: arrow + container: projectiles - type: entity id: BowImprovised @@ -55,6 +56,9 @@ - state: unwielded-arrow map: [ arrow ] visible: false + - state: unwielded-plunger + map: [ plunger ] + visible: false # to elucidate whats intended here: # arrow is inserted -> ItemMapper sets layer with map `arrow` to visible # bow is wielded -> generic vis sets states of layers with map `arrow` and `base` @@ -63,17 +67,25 @@ - type: ItemMapper spriteLayers: - arrow + - plunger mapLayers: arrow: whitelist: tags: - Arrow + plunger: + whitelist: + tags: + - Plunger - type: GenericVisualizer visuals: enum.WieldableVisuals.Wielded: arrow: True: { state: wielded-arrow } False: { state: unwielded-arrow } + plunger: + True: { state: wielded-plunger } + False: { state: unwielded-plunger } base: True: { state: wielded } False: { state: unwielded } diff --git a/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/meta.json index f19b1121c1..71e01e8b14 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/meta.json @@ -12,12 +12,18 @@ }, { "name": "unwielded-arrow" + }, + { + "name": "unwielded-plunger" }, { "name": "wielded" }, { "name": "wielded-arrow" + }, + { + "name": "wielded-plunger" }, { "name": "equipped-BACKPACK", diff --git a/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/unwielded-plunger.png b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/unwielded-plunger.png new file mode 100644 index 0000000000000000000000000000000000000000..9b1c3a79b59b72f486d74b4b1bdd2efcd64568cb GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJOP(%{ArY;~2@kMy7Wp}ybP0l+XkKGmmPy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/wielded-plunger.png b/Resources/Textures/Objects/Weapons/Guns/Bow/bow.rsi/wielded-plunger.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2ec4441b06bef7f2c6da661b6a39da9caa82d3 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ3!W~HArY;~2@`C4>UAk`DY=GPu>%