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

190 lines
4.9 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
crafting_flags = CRAFT_SKIP_MATERIALS_PARITY
/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