Files
Bubberstation/code/datums/components/crafting/entertainment.dm
T
John Willard 199c250975 Reworks gym equipment (#75389)
## About The Pull Request

Gym equipment are currently ported from Goon code, and I didn't like how
it currently worked as it was buggy and the code was a mess. I decided
to just rework how they worked entirely. I left the parts that weren't
Goon code (like tooltips & deconstruction) alone because it's not goon
code and I think it's fine that way.

- Now you buckle yourself to it (like a chair, I didn't like how it
didn't work like one) and can work out with an action button you get on
buckle, you can do as many sets as you want, then unbuckle & go.
- You aren't hardstunned for 8 seconds for clicking on it anymore, you
aren't flying around because the stun doesn't even last the duration of
the animation anymore.

Video demonstration


https://github.com/tgstation/tgstation/assets/53777086/f5ae86f1-65fb-46c6-8a5f-8f9d9f0548b3

## Why It's Good For The Game

Reworks old code
Removes un-documented Goon code
Makes gym equipment less broken than it currently is.

## Changelog

🆑
qol: Gym equipment was reworked. You now buckle yourself to weight
machines to use them, rather than clicking on it and getting stunned for
a few seconds. It also means it works like a chair now.
qol: Gym equipment no longer breaks a sweat in no gravity.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
2023-05-19 15:01:01 -06:00

208 lines
5.5 KiB
Plaintext

/datum/crafting_recipe/mothplush
name = "Moth Plushie"
result = /obj/item/toy/plush/moth
reqs = list(
/obj/item/stack/sheet/animalhide/mothroach = 1,
/obj/item/organ/internal/heart = 1,
/obj/item/stack/sheet/cloth = 3,
)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/mixedbouquet
name = "Mixed bouquet"
result = /obj/item/bouquet
reqs = list(
/obj/item/food/grown/poppy/lily = 2,
/obj/item/food/grown/sunflower = 2,
/obj/item/food/grown/poppy/geranium = 2,
)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/sunbouquet
name = "Sunflower bouquet"
result = /obj/item/bouquet/sunflower
reqs = list(/obj/item/food/grown/sunflower = 6)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/poppybouquet
name = "Poppy bouquet"
result = /obj/item/bouquet/poppy
reqs = list (/obj/item/food/grown/poppy = 6)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/rosebouquet
name = "Rose bouquet"
result = /obj/item/bouquet/rose
reqs = list(/obj/item/food/grown/rose = 6)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/spooky_camera
name = "Camera Obscura"
result = /obj/item/camera/spooky
time = 1.5 SECONDS
reqs = list(
/obj/item/camera = 1,
/datum/reagent/water/holywater = 10,
)
parts = list(/obj/item/camera = 1)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/skateboard
name = "Skateboard"
result = /obj/vehicle/ridden/scooter/skateboard/improvised
time = 6 SECONDS
reqs = list(
/obj/item/stack/sheet/iron = 5,
/obj/item/stack/rods = 10,
)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/scooter
name = "Scooter"
result = /obj/vehicle/ridden/scooter
time = 6.5 SECONDS
reqs = list(
/obj/item/stack/sheet/iron = 5,
/obj/item/stack/rods = 12,
)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/headpike
name = "Spike Head (Glass Spear)"
time = 6.5 SECONDS
reqs = list(
/obj/item/spear = 1,
/obj/item/bodypart/head = 1,
)
parts = list(
/obj/item/bodypart/head = 1,
/obj/item/spear = 1,
)
blacklist = list(
/obj/item/spear/explosive,
/obj/item/spear/bonespear,
/obj/item/spear/bamboospear,
)
result = /obj/structure/headpike
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/headpikebone
name = "Spike Head (Bone Spear)"
time = 6.5 SECONDS
reqs = list(
/obj/item/spear/bonespear = 1,
/obj/item/bodypart/head = 1,
)
parts = list(
/obj/item/bodypart/head = 1,
/obj/item/spear/bonespear = 1,
)
result = /obj/structure/headpike/bone
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/headpikebamboo
name = "Spike Head (Bamboo Spear)"
time = 6.5 SECONDS
reqs = list(
/obj/item/spear/bamboospear = 1,
/obj/item/bodypart/head = 1,
)
parts = list(
/obj/item/bodypart/head = 1,
/obj/item/spear/bamboospear = 1,
)
result = /obj/structure/headpike/bamboo
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/guillotine
name = "Guillotine"
result = /obj/structure/guillotine
time = 15 SECONDS // Building a functioning guillotine takes time
reqs = list(
/obj/item/stack/sheet/plasteel = 3,
/obj/item/stack/sheet/mineral/wood = 20,
/obj/item/stack/cable_coil = 10,
)
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER)
category = CAT_ENTERTAINMENT
/datum/crafting_recipe/toiletbong
name = "Toiletbong"
category = CAT_ENTERTAINMENT
tool_behaviors = list(TOOL_WRENCH)
reqs = list(/obj/item/flamethrower = 1)
structures = list(/obj/structure/toilet = CRAFTING_STRUCTURE_USE) // we will handle the consumption manually in on_craft_completion for this one
result = /obj/structure/toiletbong
time = 5 SECONDS
steps = list(
"make sure the flamethrower has a plasma tank attached",
)
/datum/crafting_recipe/toiletbong/check_requirements(mob/user, list/collected_requirements)
var/obj/item/flamethrower/flamethrower = collected_requirements[/obj/item/flamethrower][1]
if(!flamethrower.ptank)
return FALSE
return ..()
/datum/crafting_recipe/toiletbong/on_craft_completion(mob/user, atom/result)
var/obj/structure/toiletbong/toiletbong = result
// because we want to set the toilet's location and dir, we need to do the consumption manually
var/obj/structure/toilet/toilet = locate(/obj/structure/toilet) in range(1)
if(toilet)
for (var/obj/item/cistern_item in toilet.contents)
cistern_item.forceMove(user.drop_location())
to_chat(user, span_warning("[cistern_item] falls out of the toilet!"))
toiletbong.dir = toilet.dir
toiletbong.loc = toilet.loc
qdel(toilet)
to_chat(user, span_notice("[user] attaches the flamethrower to the repurposed toilet."))
/datum/crafting_recipe/punching_bag
name = "Punching Bag"
result = /obj/structure/punching_bag
tool_behaviors = list(TOOL_SCREWDRIVER)
reqs = list(
/obj/item/stack/sheet/iron = 2,
/obj/item/stack/rods = 1,
/obj/item/pillow = 1,
)
category = CAT_ENTERTAINMENT
time = 10 SECONDS
/datum/crafting_recipe/stacklifter
name = "Chest Press"
result = /obj/structure/weightmachine
tool_behaviors = list(TOOL_SCREWDRIVER)
reqs = list(
/obj/item/stack/sheet/iron = 5,
/obj/item/stack/rods = 2,
/obj/item/chair = 1,
)
category = CAT_ENTERTAINMENT
time = 10 SECONDS
/datum/crafting_recipe/weightlifter
name = "Bench Press"
result = /obj/structure/weightmachine/weightlifter
tool_behaviors = list(TOOL_SCREWDRIVER)
reqs = list(
/obj/item/stack/sheet/iron = 5,
/obj/item/stack/rods = 2,
/obj/item/chair = 1,
)
category = CAT_ENTERTAINMENT
time = 10 SECONDS
/datum/crafting_recipe/latexballoon
name = "Latex Balloon"
result = /obj/item/latexballoon
time = 5 SECONDS
reqs = list(
/obj/item/clothing/gloves/latex = 1,
/obj/item/stack/cable_coil = 2,
)
category = CAT_EQUIPMENT