Files
Bubberstation/code/datums/components/crafting/ranged_weapon.dm
T
Cheshify b9fa1bc8f4 The Laser Musket (2023) (Settlement Helper Edition) (#76231)
## About The Pull Request
This adds a craftable laser musket to the game. It's slow and unwieldy,
but consistent! I'd be happy to tweak the numbers if it's too good/bad.

This PR also adds an independent militia ERT, who travels the spinward
sector to help defend stations!

TO DO LIST:

- [x] Finish worn sprites
- [x] Add a crafting recipe on par with the pipegun
- [x] Add bayonets
- [x] Separate charging into two stages and REDO THE AUDIO AAAA
- [x] Clean up code (Needs review, totally)

Scrapped:

- Possibly add overcharge mechanic (This is just beyond my skill level
for now)
- Find a unique sound for the weapon firing (We have a unique
projectile, and I can't a sound that fits more than the laser gun one)


![image](https://github.com/tgstation/tgstation/assets/73589390/40ee8f1d-5c1f-4638-af70-ff1215b85c9e)

![1211
(1)](https://github.com/tgstation/tgstation/assets/73589390/1a4b9856-a878-4500-96ce-4fd83587fa81)

![musket (2) (2)
(2)](https://github.com/tgstation/tgstation/assets/73589390/2ebdc2ed-6f78-4761-9deb-a1b2d337a02d)

![aaaa1
(1)](https://github.com/tgstation/tgstation/assets/73589390/6076edd3-97c9-41ec-a67a-90717f97eab0)


![image](https://github.com/tgstation/tgstation/assets/73589390/c47e44bd-3f4b-44b3-aaa5-9b1c25a72cad)

Inhands by RedSentry27
Suit sprite by Kinnebian
Prime Laser Musket sprites by RedSentry27

Balance Considerations (ew):
25 damage (30 on prime)
Normal wound
40 Stamina damage (45 on prime)
Weak to armour (prime not weak to armor)
2 second charge time, needs to be charged twice
No overcharge
Requires two hands to hold (like a chainsaw)

Crafting Recipe:
One rifle stock
Fifteen Cable Coils
Four Iron Rods
One micro laser
One capacitor
One pair of prescription glasses
One drinking glass
Craft for 10 seconds with a wirecutter and screwdriver

Prime crafting recipe: (REQUIRES READING MAINTENANCE LOOT: "journal of a
space ranger")
One laser musket
Fifteen cable coils
Five silver
One water recycler
Fifteen units of nuka cola
Craft for 30 seconds with a screwdriver while wearing cowboy boots and a
cowboy hat
## Why It's Good For The Game
The idea of assistants and revs forming firing lines in the halls to
shoot eachother sounds hilarious. Besides, we need a parallel to the
pipegun, and this is the funniest way to do so.
## Changelog
🆑 Cheshify, Kinnebian, and RedSentry27
add: Maintenance engineers have sent out blueprints across the sector
for a new laser musket.
admin: A new energy-gun toting ERT is available to send to the crew.

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
2023-06-30 19:54:33 +00:00

331 lines
9.7 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/reciever
name = "Modular Rifle Reciever"
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"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
result = /obj/item/gun/energy/e_gun/nuclear
reqs = list(
/obj/item/gun/energy/e_gun = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/nuclear = 1,
)
time = 20 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"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
result = /obj/item/gun/energy/temperature
reqs = list(
/obj/item/gun/energy/e_gun = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/temperature = 1,
)
time = 20 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"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
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/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/beam_rifle = 1,
)
time = 20 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"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
result = /obj/item/gun/energy/recharge/ebow/large
reqs = list(
/obj/item/gun/energy/recharge/kinetic_accelerator = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/ebow = 1,
/datum/reagent/uranium/radium = 15,
)
time = 20 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/xraylaser
name = "X-ray Laser Gun"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
result = /obj/item/gun/energy/xray
reqs = list(
/obj/item/gun/energy/laser = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/xray = 1,
)
time = 20 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"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
result = /obj/item/gun/energy/laser/hellgun
reqs = list(
/obj/item/gun/energy/laser = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/hellgun = 1,
)
time = 20 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/hellgun/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/laser)
/datum/crafting_recipe/ioncarbine
name = "Ion Carbine"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
result = /obj/item/gun/energy/ionrifle/carbine
reqs = list(
/obj/item/gun/energy/laser = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/ion = 1,
)
time = 20 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/ioncarbine/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/laser)
/datum/crafting_recipe/decloner
name = "Biological Demolecularisor"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
result = /obj/item/gun/energy/decloner
reqs = list(
/obj/item/gun/energy/laser = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/decloner = 1,
/datum/reagent/baldium = 30,
/datum/reagent/toxin/mutagen = 4,
)
time = 20 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/decloner/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/laser)
/datum/crafting_recipe/teslacannon
name = "Tesla Cannon"
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
result = /obj/item/gun/energy/tesla_cannon
reqs = list(
/obj/item/assembly/signaler/anomaly/flux = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/tesla = 1,
)
time = 20 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 = 1,
/obj/item/weaponcrafting/stock = 1,
/obj/item/stack/sticky_tape = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/pipegun_prime
name = "Regal Pipegun"
always_available = FALSE
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,
)
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 = 30 SECONDS //contemplate for a bit
category = CAT_WEAPON_RANGED
/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 17 TC or thereabouts. Igorning the 20k pricetag, obviously.
name = "Regal Condor"
always_available = FALSE
result = /obj/item/gun/ballistic/automatic/pistol/deagle/regal/no_mag
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 = 3,
/obj/item/clothing/head/costume/crown/fancy = 1, //the captain's crown
/obj/item/storage/toolbox/syndicate = 1,
)
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
/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)"
always_available = FALSE
result = /obj/item/ammo_box/magazine/r10mm/empty
reqs = list(
/obj/item/stack/sheet/iron = 10,
/obj/item/stack/telecrystal = 2,
)
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
)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
/datum/crafting_recipe/trash_cannon
name = "Trash Cannon"
always_available = FALSE
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
/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"
always_available = FALSE
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