Files
Bubberstation/code/datums/components/crafting/ranged_weapon.dm
KingkumaArt ed4ba0d227 Adds Atmos-themed Rebar Crossbow Ammo Types (and minor balance changes) (#83310)
## About The Pull Request

So this PR comes in two basic parts: the new ammo types and the minor
balance changes. I'll go over each separately.

**--- NEW AMMO TYPES ---** 


![image](https://github.com/tgstation/tgstation/assets/69398298/c031cf87-7bde-4a67-b5fc-109bedcece88)

-- Metallic Hydrogen Ammo: Made from Metallic Hydrogen, obviously. Has
middling damage and no dismemberment chance, but pierces through armor
and enemies like they weren't even there.

-- Zaukerite Slivers: Made from a zaukerite crystal. Does high toxic
damage, and has excellent wounding and embed chances, but lacking in
armor penetration. Also gives 1 second of blurry vision if it hits you!

-- Paper balls: Crafted from a sheet of paper. Mostly just a throwing
joke item, and 99% nonlethal like donksoft. Can be fired from a
crossbow, but also could be used if you wanted to have a snowball fight
on metastation.

-- Healium Crystal Bolts! Crafted (using menu) from the healium grenade
item. Heals 30 of brute/tox/burn, but puts who is hit by it to sleep for
three seconds, limiting its use in actual combat.

-- Supermatter Bolts: Dusts whoever you shoot it at! Absurdly
overpowered! Admin only!

-- A makeshift quiver, made from cutting a o2 tank in half, to store all
the ammo in.

**MINOR BALANCE CHANGES**

-- For some reason I thought the 357, which the traitor crossbow is a
direct competitor to, did 40 damage when making the first version of the
PR, instead of the reality of it doing 60. It's been buffed to 55
damage. (The basic engi one still does 35.)

-- I've been informed that generally, the stressed rebar crossbow isn't
ever used, as the misfire chance isnt worth the extra shot. As such, I
felt it was thematic to say that the stressing procedure involves
messing with the draw system in the fluff, and the stressed one now
takes half as long to rack.

**OTHER CRAP**

-- The rods now drop themselves if you shoot them at a wall. Hopefully.
-- Fixed the the non-bare wound chance on the traitor crossbow not being
increased from the base version.
-- Has a nice electronic discharge noise on firing.

## Why It's Good For The Game

I'm very happy with the reception of the rebar crossbow, and felt that
given it was an engi weapon at heart, giving it some engi-related
ammunition would fit it very well (and also have a good reason for
making zaukerite besides selling it.) The paper balls were more just so
the crew could able to shoot their buddies with it and not maim them.

As for the balance, I feel the tot crossbow being department restricted
is already a strong factor in it being infrequently seen, and if someone
is lucky enough to roll traitor in a job slot, it's a shame if their
job's items aren't worth it. The stressed variant is a similar case, and
I hope it's enough of a buff to encourage its use.

## Changelog
🆑 WebcomicArtist
add: Added zaukerite (high damage/embed, low AP) and metallic hydrogen
(High AP and piercing, but low embed) crossbow ammo for the rebar
crossbows
add: Added healium crystal ammo for the crossbow as well, which heals
whomever you shoot it at.
add: Added admin-only supermatter crossbow bolts that dust you, because
why the hell not.
add: Added non-harmful paper balls. Can be shot from a crossbow, or
thrown at co-workers.
add: Added a quiver made from cutting an o2 tank in half, to hold it
all.
image: added sprites for all the above.
balance: Traitor Engineer Crossbow ammo now does 55 damage instead of
45, to make it compete with revolver.
balance: Stressed Rebar Crossbow now has a shorter delay required to
rack it, but can shoot you in the face on misfire.
fix: fixed rebar crossbow shots not dropping items on hitting walls
fix: fixed traitor crossbow having worse wound chance than the base one
sound: added new crossbow firing sound effect

/🆑

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2024-06-09 02:06:26 +00:00

380 lines
11 KiB
Plaintext

/datum/crafting_recipe/bola
name = "Bola"
result = /obj/item/restraints/legcuffs/bola
reqs = list(
/obj/item/restraints/handcuffs/cable = 1,
/obj/item/stack/sheet/iron = 6,
)
time = 2 SECONDS //faster than crafting them by hand!
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/gonbola
name = "Gonbola"
result = /obj/item/restraints/legcuffs/bola/gonbola
reqs = list(
/obj/item/restraints/handcuffs/cable = 1,
/obj/item/stack/sheet/iron = 6,
/obj/item/stack/sheet/animalhide/gondola = 1,
)
time = 4 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/receiver
name = "Modular Rifle Receiver"
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER, TOOL_SAW)
result = /obj/item/weaponcrafting/receiver
reqs = list(
/obj/item/stack/sheet/iron = 5,
/obj/item/stack/sticky_tape = 1,
/obj/item/screwdriver = 1,
/obj/item/assembly/mousetrap = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/riflestock
name = "Wooden Rifle Stock"
tool_paths = list(/obj/item/hatchet)
result = /obj/item/weaponcrafting/stock
reqs = list(
/obj/item/stack/sheet/mineral/wood = 8,
/obj/item/stack/sticky_tape = 1,
)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/advancedegun
name = "Advanced Energy Gun"
result = /obj/item/gun/energy/e_gun/nuclear
reqs = list(
/obj/item/gun/energy/e_gun = 1,
/obj/item/weaponcrafting/gunkit/nuclear = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/advancedegun/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/e_gun)
/datum/crafting_recipe/tempgun
name = "Temperature Gun"
result = /obj/item/gun/energy/temperature
reqs = list(
/obj/item/gun/energy/disabler = 1,
/obj/item/weaponcrafting/gunkit/temperature = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/tempgun/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/e_gun)
/datum/crafting_recipe/beam_rifle
name = "Particle Acceleration Rifle"
result = /obj/item/gun/energy/beam_rifle
reqs = list(
/obj/item/gun/energy/e_gun = 1,
/obj/item/assembly/signaler/anomaly/flux = 1,
/obj/item/assembly/signaler/anomaly/grav = 1,
/obj/item/weaponcrafting/gunkit/beam_rifle = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/beam_rifle/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/e_gun)
/datum/crafting_recipe/ebow
name = "Energy Crossbow"
result = /obj/item/gun/energy/recharge/ebow/large
reqs = list(
/obj/item/gun/energy/recharge/kinetic_accelerator = 1,
/obj/item/weaponcrafting/gunkit/ebow = 1,
/datum/reagent/uranium/radium = 15,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/xraylaser
name = "X-ray Laser Gun"
result = /obj/item/gun/energy/xray
reqs = list(
/obj/item/gun/energy/laser = 1,
/obj/item/weaponcrafting/gunkit/xray = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/xraylaser/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/laser)
/datum/crafting_recipe/hellgun
name = "Hellfire Laser Gun"
result = /obj/item/gun/energy/laser/hellgun
reqs = list(
/obj/item/gun/energy/laser = 1,
/obj/item/weaponcrafting/gunkit/hellgun = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/hellgun/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/laser)
/datum/crafting_recipe/ioncarbine
name = "Ion Carbine"
result = /obj/item/gun/energy/ionrifle/carbine
reqs = list(
/obj/item/gun/energy/laser = 1,
/obj/item/weaponcrafting/gunkit/ion = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/ioncarbine/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/laser)
/datum/crafting_recipe/teslacannon
name = "Tesla Cannon"
result = /obj/item/gun/energy/tesla_cannon
reqs = list(
/obj/item/assembly/signaler/anomaly/flux = 1,
/obj/item/weaponcrafting/gunkit/tesla = 1,
)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but
name = "Pneumatic Cannon"
result = /obj/item/pneumatic_cannon/ghetto
tool_behaviors = list(TOOL_WELDER, TOOL_WRENCH)
reqs = list(
/obj/item/stack/sheet/iron = 4,
/obj/item/stack/package_wrap = 8,
/obj/item/pipe/quaternary = 2,
)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/flamethrower
name = "Flamethrower"
result = /obj/item/flamethrower
reqs = list(
/obj/item/weldingtool = 1,
/obj/item/assembly/igniter = 1,
/obj/item/stack/rods = 1,
)
parts = list(
/obj/item/assembly/igniter = 1,
/obj/item/weldingtool = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 1 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/pipegun
name = "Pipegun"
result = /obj/item/gun/ballistic/rifle/boltaction/pipegun
reqs = list(
/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 2,
/obj/item/weaponcrafting/stock = 1,
/obj/item/storage/toolbox = 1, // for the screws
/obj/item/stack/sticky_tape = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/pipepistol
name = "Pipe Pistol"
result = /obj/item/gun/ballistic/rifle/boltaction/pipegun/pistol
reqs = list(
/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 1,
/obj/item/stock_parts/servo = 2,
/obj/item/stack/sheet/mineral/wood = 4,
/obj/item/storage/toolbox = 1, // for the screws
/obj/item/stack/sticky_tape = 1,
)
tool_paths = list(/obj/item/hatchet)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/rebarxbow
name = "Heated Rebar Crossbow"
result = /obj/item/gun/ballistic/rifle/rebarxbow
reqs = list(
/obj/item/stack/rods = 6,
/obj/item/stack/cable_coil = 12,
/obj/item/inducer = 1,
)
blacklist = list(
/obj/item/inducer/sci,
)
tool_behaviors = list(TOOL_WELDER)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/rebarxbowforced
name = "Forced Rebar Crossbow"
desc = "A much quicker reload... for a chance of shooting yourself when you fire it."
result = /obj/item/gun/ballistic/rifle/rebarxbow/forced
reqs = list(
/obj/item/gun/ballistic/rifle/rebarxbow = 1,
)
blacklist = list(
/obj/item/gun/ballistic/rifle/rebarxbow/forced,
/obj/item/gun/ballistic/rifle/rebarxbow/syndie,
)
tool_behaviors = list(TOOL_CROWBAR)
time = 1 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/pipegun_prime
name = "Regal Pipegun"
result = /obj/item/gun/ballistic/rifle/boltaction/pipegun/prime
reqs = list(
/obj/item/gun/ballistic/rifle/boltaction/pipegun = 1,
/obj/item/food/deadmouse = 1,
/datum/reagent/consumable/grey_bull = 20,
/obj/item/spear = 1,
/obj/item/storage/toolbox = 1,
/obj/item/clothing/head/costume/crown = 1, // Any ol' crown will do
)
tool_behaviors = list(TOOL_SCREWDRIVER)
tool_paths = list(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/mask/gas, /obj/item/melee/baton/security/cattleprod)
time = 15 SECONDS //contemplate for a bit
category = CAT_WEAPON_RANGED
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/deagle_prime //When you factor in the makarov (7 tc), the toolbox (1 tc), and the emag (3 tc), this comes to a total of 18 TC or thereabouts. Igorning the 20k pricetag, obviously.
name = "Regal Condor"
result = /obj/item/gun/ballistic/automatic/pistol/deagle/regal
reqs = list(
/obj/item/gun/ballistic/automatic/pistol = 1,
/obj/item/stack/sheet/mineral/gold = 25,
/obj/item/stack/sheet/mineral/silver = 25,
/obj/item/food/donkpocket = 1,
/obj/item/stack/telecrystal = 4,
/obj/item/clothing/head/costume/crown/fancy = 1, //the captain's crown
/obj/item/storage/toolbox/syndicate = 1,
/obj/item/stack/sheet/iron = 10,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
tool_paths = list(
/obj/item/clothing/under/syndicate,
/obj/item/clothing/mask/gas/syndicate,
/obj/item/card/emag
)
time = 30 SECONDS
category = CAT_WEAPON_RANGED
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/deagle_prime/New()
..()
blacklist += subtypesof(/obj/item/gun/ballistic/automatic/pistol)
/datum/crafting_recipe/deagle_prime_mag
name = "Regal Condor Magazine (10mm Reaper)"
result = /obj/item/ammo_box/magazine/r10mm
reqs = list(
/obj/item/stack/sheet/iron = 10,
/obj/item/stack/sheet/mineral/gold = 10,
/obj/item/stack/sheet/mineral/silver = 10,
/obj/item/stack/sheet/mineral/plasma = 10,
/obj/item/food/donkpocket = 1, //Station mass murder, as sponsored by Donk Co.
)
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WELDER)
tool_paths = list(
/obj/item/clothing/under/syndicate,
/obj/item/clothing/mask/gas/syndicate,
/obj/item/card/emag,
/obj/item/gun/ballistic/automatic/pistol/deagle/regal
)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/trash_cannon
name = "Trash Cannon"
tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER)
result = /obj/structure/cannon/trash
reqs = list(
/obj/item/melee/skateboard/improvised = 1,
/obj/item/tank/internals/oxygen = 1,
/datum/reagent/drug/maint/tar = 15,
/obj/item/restraints/handcuffs/cable = 1,
/obj/item/storage/toolbox = 1,
)
category = CAT_WEAPON_RANGED
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/laser_musket
name = "Laser Musket"
result = /obj/item/gun/energy/laser/musket
reqs = list(
/obj/item/weaponcrafting/stock = 1,
/obj/item/stack/cable_coil = 15,
/obj/item/stack/rods = 4,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/capacitor = 1,
/obj/item/clothing/glasses/regular = 1,
/obj/item/reagent_containers/cup/glass/drinkingglass = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/laser_musket_prime
name = "Heroic Laser Musket"
result = /obj/item/gun/energy/laser/musket/prime
reqs = list(
/obj/item/gun/energy/laser/musket = 1,
/obj/item/stack/cable_coil = 15,
/obj/item/stack/sheet/mineral/silver = 5,
/obj/item/stock_parts/water_recycler = 1,
/datum/reagent/consumable/nuka_cola = 15,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
tool_paths = list(/obj/item/clothing/head/cowboy, /obj/item/clothing/shoes/cowboy)
time = 30 SECONDS //contemplate for a bit
category = CAT_WEAPON_RANGED
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED
/datum/crafting_recipe/smoothbore_disabler
name = "Smoothbore Disabler"
result = /obj/item/gun/energy/disabler/smoothbore
reqs = list(
/obj/item/weaponcrafting/stock = 1, //it becomes the grip
/obj/item/stack/cable_coil = 5,
/obj/item/pipe = 1,
/obj/item/stock_parts/micro_laser = 1,
/obj/item/stock_parts/cell = 1,
/obj/item/assembly/mousetrap = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WRENCH)
time = 10 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/smoothbore_disabler_prime
name = "Elite Smoothbore Disabler"
result = /obj/item/gun/energy/disabler/smoothbore/prime
reqs = list(
/obj/item/gun/energy/disabler/smoothbore = 1,
/obj/item/stack/sheet/mineral/gold = 5,
/obj/item/stock_parts/cell/hyper = 1,
/datum/reagent/reaction_agent/speed_agent = 10,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 20 SECONDS
category = CAT_WEAPON_RANGED
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED