Files
Bubberstation/code/datums/components/crafting/weapon_ammo.dm
necromanceranne 62190069d0 Bow revisit; they hit harder, there are more sprites, there is a new bow made of bone. Really live that ranger fantasy. (#92809)
## About The Pull Request

### Bows deal more damage.

Increases the baseline damage of the shortbow to 25, and the divine bow
to 30.

The divine bow also launches arrows at a higher velocity than normal
bows.

### Flaming arrows have sprites now, and deal burning damage. Oh, and
actually do reasonable damage.


![demonstration_flaming](https://github.com/user-attachments/assets/918893c9-8d09-46ab-a8f9-9ef76ca5e044)

I'm not at all skilled at animation but at least it has an actual,
visible sprite now.

I completely overlooked the fact this did 20 damage when I changed bows
to use damage multipliers. Oops.

### Ashen Bow and Ashen Arrows

Made from sinew, bone and for the bow specifically, leather. The bow is
largely identical to a shortbow, but the arrow has mining bane. If you
feel like hunting megafauna with a bow, this is your means of doing so.

<img width="384" height="128" alt="demonstration_ashen"
src="https://github.com/user-attachments/assets/1c4f493c-f694-4b09-a406-c63140628d56"
/>

Assets partially taken from
https://github.com/Skyrat-SS13/Skyrat-tg/pull/5266

Which in of itself took assets from
https://github.com/BeeStation/BeeStation-Hornet/pull/1802

The functionality is entirely new. I also did some sprite edits.

### Arrow quivers are made from wood.

Iunno, this was really weird to me. Cardboard seems like a poor quiver
material.

### Other Stuff

Shortbows and ashen bows have the ability to be renamed.

## Why It's Good For The Game

Bows are fun, but kind of middling. They're a lot slower to fire than
the vast majority of ranged weapons, and don't really have enough oomph
in their own right to intimidate people being shot by them.

This is even true of the divine bow, which is the chaplain's version.
Because of how slowly it fires and how little damage it does, the
chances of actually killing someone who poses any real threat to you
with it is pretty laughable. This is not true of the nullrod that you
sacrificed to get this weapon. 30 damage is within the ballpark of
chaplain weapons and their potential damage in some contexts. A slow to
attack weapon probably should have a more impactful hit when considering
your alternative options.

The ashen bow is mostly because I really want to go fauna hunting with
entirely bone-based weaponry. Does this mean some ashwalkers might be
putting arrows into you from afar? Yes. Does this sound fun? Yes. Is
this especially strong? Not really. Miners out damage these bows by a
significant margin, and their armor is usually good enough where they're
not at risk from arrows sticking into them or hurting them very much.
This is also a degree more effort to make than other weapons because of
the leather requirement and the need to kill several fauna for the
materials. The outcomes should be more fun than the costs.

## Changelog
🆑
balance: Shortbows and divine bows do more damage. The divine bow also
launches arrows at a higher velocity than normal bows.
image: Flaming arrows now have proper sprites.
balance: Flaming arrows now deal BURN damage. And also deal an
appropriate amount of damage for an arrow.
add: Ashen bows and arrows, made from sinew and bone. And leather for
the bow.
add: Ashen arrows deal significantly more damage to mining mobs.
balance: Arrow quivers are made from wood rather than cardboard.
qol: Shortbows and ashen bows have the ability to be renamed.
/🆑
2025-09-14 14:00:23 -04:00

189 lines
4.8 KiB
Plaintext

/datum/crafting_recipe/meteorslug
name = "Meteorslug Shell"
result = /obj/item/ammo_casing/shotgun/meteorslug
reqs = list(
/obj/item/ammo_casing/shotgun/techshell = 1,
/obj/item/rcd_ammo = 1,
/datum/reagent/gunpowder = 10,
/datum/reagent/consumable/ethanol/rum = 10,
/obj/item/stock_parts/servo = 2,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 0.5 SECONDS
category = CAT_WEAPON_AMMO
/datum/crafting_recipe/paperball
name = "Paper Ball"
result = /obj/item/ammo_casing/rebar/paperball
reqs = list(
/obj/item/paper = 1,
)
time = 0.1 SECONDS
category = CAT_WEAPON_AMMO
/datum/crafting_recipe/rebarsyndie
name = "jagged iron rod"
result = /obj/item/ammo_casing/rebar/syndie
reqs = list(
/obj/item/stack/rods = 1,
)
tool_behaviors = list(TOOL_WIRECUTTER)
time = 0.1 SECONDS
category = CAT_WEAPON_AMMO
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/healium_bolt
name = "healium crystal crossbow bolt"
result = /obj/item/ammo_casing/rebar/healium
reqs = list(
/obj/item/grenade/gas_crystal/healium_crystal = 1
)
time = 0.1 SECONDS
category = CAT_WEAPON_AMMO
crafting_flags = CRAFT_CHECK_DENSITY
/datum/crafting_recipe/pulseslug
name = "Pulse Slug Shell"
result = /obj/item/ammo_casing/shotgun/pulseslug
reqs = list(
/obj/item/ammo_casing/shotgun/techshell = 1,
/obj/item/stock_parts/capacitor/adv = 2,
/obj/item/stock_parts/micro_laser/ultra = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 0.5 SECONDS
category = CAT_WEAPON_AMMO
/datum/crafting_recipe/dragonsbreath
name = "Dragonsbreath Shell"
result = /obj/item/ammo_casing/shotgun/dragonsbreath
reqs = list(
/obj/item/ammo_casing/shotgun/techshell = 1,
/datum/reagent/phosphorus = 5,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 0.5 SECONDS
category = CAT_WEAPON_AMMO
/datum/crafting_recipe/frag12
name = "FRAG-12 Slug Shell"
result = /obj/item/ammo_casing/shotgun/frag12
reqs = list(
/obj/item/ammo_casing/shotgun/techshell = 1,
/datum/reagent/glycerol = 5,
/datum/reagent/toxin/acid/fluacid = 10,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 0.5 SECONDS
category = CAT_WEAPON_AMMO
/datum/crafting_recipe/ionslug
name = "Ion Scatter Shell"
result = /obj/item/ammo_casing/shotgun/ion
reqs = list(
/obj/item/ammo_casing/shotgun/techshell = 1,
/obj/item/stock_parts/micro_laser/ultra = 1,
/obj/item/stock_parts/subspace/crystal = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 0.5 SECONDS
category = CAT_WEAPON_AMMO
/datum/crafting_recipe/improvisedslug
name = "Junk Shell"
result = /obj/effect/spawner/random/junk_shell
reqs = list(
/obj/item/stack/sheet/iron = 2,
/obj/item/stack/cable_coil = 1,
/obj/item/shard = 1,
/datum/reagent/fuel = 10,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 1.2 SECONDS
category = CAT_WEAPON_AMMO
/datum/crafting_recipe/trashball
name = "Trashball"
result = /obj/item/stack/cannonball/trashball
reqs = list(
/obj/item/stack/sheet = 5,
/datum/reagent/consumable/space_cola = 10,
)
category = CAT_WEAPON_AMMO
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/arrow
name = "Arrow"
result = /obj/item/ammo_casing/arrow
reqs = list(
/obj/item/stack/sheet/mineral/wood = 1,
/obj/item/stack/sheet/cloth = 1,
/obj/item/stack/sheet/iron = 1,
)
tool_paths = list(
/obj/item/hatchet,
)
time = 5 SECONDS
category = CAT_WEAPON_AMMO
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/sticky_arrow
name = "Sticky arrow"
result = /obj/item/ammo_casing/arrow/sticky
reqs = list(
/obj/item/ammo_casing/arrow = 1,
/obj/item/food/honeycomb = 3,
)
time = 5 SECONDS
category = CAT_WEAPON_AMMO
crafting_flags = CRAFT_CHECK_DENSITY
/datum/crafting_recipe/poison_arrow
name = "Poison arrow"
result = /obj/item/ammo_casing/arrow/poison
reqs = list(
/obj/item/ammo_casing/arrow = 1,
/obj/item/food/grown/berries/poison = 5,
)
time = 5 SECONDS
category = CAT_WEAPON_AMMO
crafting_flags = CRAFT_CHECK_DENSITY
/datum/crafting_recipe/plastic_arrow
name = "Plastic Arrow"
result = /obj/item/ammo_casing/arrow/plastic
reqs = list(
/obj/item/stack/sheet/plastic = 1,
)
tool_paths = list(
/obj/item/hatchet,
)
time = 5 SECONDS
category = CAT_WEAPON_AMMO
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/holy_arrow
name = "Holy Arrow"
result = /obj/item/ammo_casing/arrow/holy
reqs = list(
/obj/item/ammo_casing/arrow = 1,
/datum/reagent/water/holywater = 10,
)
tool_paths = list(
/obj/item/gun/ballistic/bow/divine,
)
time = 5 SECONDS
category = CAT_WEAPON_AMMO
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/ashen_arrow
name = "Ashen Arrow"
result = /obj/item/ammo_casing/arrow/ashen
reqs = list(
/obj/item/stack/sheet/bone = 1,
/obj/item/stack/sheet/sinew = 1,
)
time = 5 SECONDS
category = CAT_WEAPON_AMMO