Files
Ghom 0b0c5ea91e Unit test material checks are now performed on all crafting recipes by default. All stack recipes now transfer mats to the results (#92620)
## About The Pull Request
Extends the part of the crafting unit test that ensures consistency
between the total mats of the components of a recipe (or rather, the
result of said recipe) and a generic instance of the same type as its
result, previously only implemented on food recipes.

## Why It's Good For The Game
This ensures a degree of consistency with the material composition of
various objects in the game. I couldn't do it in the original PR as that
one was too big already and it took months to get it merged, and have
the relative bugs fixed.

Currently a WIP as I slowly deal with the unit test reports.

## Changelog

🆑
refactor: Follow-up to the crafting/material refactor from months ago.
All objects crafted with stacks now inherit their mat composition (not
necessarily the effects and color) by default, while previously only a
few things like chair, sinks and toilets did. Report any object looking
or behaving weirdly as a result.
fix: The material composition of ammo boxes is no longer a 1/10 of what
it's supposed to be. It was a shitty hack to make it harder to recycle
empty ammo boxes. Instead, they lose materials as they're emptied now.
/🆑
2025-12-02 18:29:01 -05:00

51 lines
1.4 KiB
Plaintext

/datum/crafting_recipe/papersack
name = "Paper Sack"
result = /obj/item/storage/box/papersack
time = 1 SECONDS
reqs = list(/obj/item/paper = 5)
category = CAT_CONTAINERS
/datum/crafting_recipe/sillycup
name = "Paper Cup"
result = /obj/item/reagent_containers/cup/glass/sillycup
time = 1 SECONDS
reqs = list(/obj/item/paper = 2)
category = CAT_CONTAINERS
/datum/crafting_recipe/boh
name = "Bag of Holding"
reqs = list(
/obj/item/bag_of_holding_inert = 1,
/obj/item/assembly/signaler/anomaly/bluespace = 1,
)
result = /obj/item/storage/backpack/holding
category = CAT_CONTAINERS
/datum/crafting_recipe/underwater_basket
name = "Underwater Basket (Bamboo)"
reqs = list(
/obj/item/stack/sheet/mineral/bamboo = 20
)
result = /obj/item/storage/basket
crafting_flags = CRAFT_SKIP_MATERIALS_PARITY
category = CAT_CONTAINERS
crafting_flags = parent_type::crafting_flags | CRAFT_MUST_BE_LEARNED | CRAFT_SKIP_MATERIALS_PARITY
steps = list(
"master the art of underwater basketweaving",
"be underwater"
)
/datum/crafting_recipe/underwater_basket/check_requirements(mob/user, list/collected_requirements)
. = ..()
var/turf/T = get_turf(user)
if(istype(T, /turf/open/water))
return TRUE
var/obj/machinery/shower/S = locate() in T
if(S?.actually_on)
return TRUE
//Same but with wheat
/datum/crafting_recipe/underwater_basket/wheat
name = "Underwater Basket (Wheat)"
reqs = list(/obj/item/food/grown/wheat = 50)