Cannibalism Update™️ (#31142)

* dmi time

* .dmi stuff done, maybe

* Created cannibalism.dm and moved KFV's obj stuff.

* Update cannibalism.dm

* Wild Wings and Bug Bar

* A few more.

* Meow Mein

* Lead and Plasma-Bone Broth

* Multiple possible sprites.

* Last food item. Next recipes and the Bone Rod.

* Adding bone rod sprites and sprites for bone rod variants of food with metal rods in them

* Fix complaining of the compiler.

* Bone Rods

* Almost everything done.

* Bone Rods ticked.

* dme updated on compile.

* Forgor the BBQ variant of Moffolo Wings needed a unique path.

* Probably make Plasma-Bone Broth flammable like plasma sheets.

* Should light now, will test later.

* Some recipes, and processor.

* Processor was complaining, also changed a parameter to be readable.

* More bone rod.

* The rest of them.

* No more errors on compile.

* Recipes tested and things fixed.

* Lead works.

* Kidneys dead? Toxin.

* Soy Sauce in the Meow Mein.

* Working sprite RNG.

* Make Linters happy

* Apply suggestions from CRUNCH's code review to fix Plasma-Bone Broth's flame.

Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com>
Signed-off-by: Wenlock_The_British_Hobo <168675688+WenlockTheBritishHobo@users.noreply.github.com>

* Make linters happy

* Updated bone rod description to be less vague.

Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Signed-off-by: Wenlock_The_British_Hobo <168675688+WenlockTheBritishHobo@users.noreply.github.com>

* More descriptive recipe names in code

* Replace Meow Mein sprites with Feline Mignon

I'll see about using the Meow Mein sprite for chef craftable Chow Mein, as the issue is with Meow Mein not the sprite.

* Change code from Meow Mein to Feline Mignon

* Don't need the blank recipe list in this PR.

* Update code/game/objects/items/stacks/bone_rods.dm

Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com>

* Update code/game/objects/items/stacks/bone_rods.dm

Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com>

---------

Signed-off-by: Wenlock_The_British_Hobo <168675688+WenlockTheBritishHobo@users.noreply.github.com>
Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Co-authored-by: CRUNCH <143041327+CRUNCH-Borg@users.noreply.github.com>
Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
Wenlock_The_British_Hobo
2025-12-24 20:21:36 +00:00
committed by GitHub
co-authored by CRUNCH PollardTheDragon DGamerL
parent e7dc0c3cf5
commit a3bb94b905
31 changed files with 668 additions and 22 deletions
@@ -67,6 +67,33 @@
PCWJ_ADD_ITEM(/obj/item/organ/internal/brain),
)
/datum/cooking/recipe_step/add_item/kidan/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/kidan))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/bug_bar
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/bug_bar
steps = list(
new /datum/cooking/recipe_step/add_item/kidan(),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/bug_burger
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/bug_burger
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/bun),
PCWJ_ADD_ITEM(/obj/item/food/bug_bar),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/cheeseburger
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/burger/cheese
@@ -354,6 +381,42 @@
PCWJ_ADD_ITEM(/obj/item/food/tofu),
)
/datum/cooking/recipe_step/add_item/slime/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/slime))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/turkish_delight
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/turkish_delight
steps = list(
new /datum/cooking/recipe_step/add_item/slime(),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe_step/add_item/machine/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/machine))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/wafers
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/wafers
steps = list(
new /datum/cooking/recipe_step/add_item/machine(),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/xenoburger
container_type = /obj/item/reagent_containers/cooking/board
product_type = /obj/item/food/burger/xeno
@@ -50,6 +50,18 @@
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/fish_skewer_bone
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/fish_skewer/bone
catalog_category = COOKBOOK_CATEGORY_SEAFOOD
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/salmonmeat),
PCWJ_ADD_ITEM(/obj/item/food/salmonmeat),
PCWJ_ADD_ITEM(/obj/item/stack/bone_rods),
PCWJ_ADD_REAGENT("flour", 10),
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/fishfingers
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/fishfingers
@@ -61,6 +73,25 @@
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe_step/add_item/fried_vulp/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/vulpkanin))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/frankfurrter
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/frankfurrter
steps = list(
new /datum/cooking/recipe_step/add_item/fried_vulp(),
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/goliath
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/goliath_steak
@@ -81,6 +112,25 @@
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe_step/add_item/fried_unathi/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/unathi))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/hiss_kebab
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/hiss_kebab
steps = list(
new /datum/cooking/recipe_step/add_item/fried_unathi(),
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/human_kebab
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/human/kebab
@@ -92,6 +142,17 @@
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/human_kebab_bone
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/human/kebab/bone
steps = list(
PCWJ_ADD_ITEM(/obj/item/stack/bone_rods),
PCWJ_ADD_ITEM(/obj/item/food/meat/human),
PCWJ_ADD_ITEM(/obj/item/food/meat/human),
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/meatkeb
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/meatkebab
@@ -103,6 +164,17 @@
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/meatkeb_bone
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/meatkebab/bone
catalog_category = COOKBOOK_CATEGORY_MEAT
steps = list(
PCWJ_ADD_ITEM(/obj/item/stack/bone_rods),
PCWJ_ADD_MEATHUNK(),
PCWJ_ADD_MEATHUNK(),
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/meatsteak
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/meatsteak
@@ -140,6 +212,20 @@
PCWJ_USE_GRILL(J_MED, 20 SECONDS),
)
/datum/cooking/recipe/picoss_kebab_bone
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/picoss_kebab/bone
catalog_category = COOKBOOK_CATEGORY_SEAFOOD
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/carpmeat),
PCWJ_ADD_ITEM(/obj/item/food/carpmeat),
PCWJ_ADD_ITEM(/obj/item/stack/bone_rods),
PCWJ_ADD_PRODUCE(/obj/item/food/grown/onion),
PCWJ_ADD_PRODUCE(/obj/item/food/grown/chili),
PCWJ_ADD_REAGENT("vinegar", 5),
PCWJ_USE_GRILL(J_MED, 20 SECONDS),
)
/datum/cooking/recipe/rofflewaffles
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/rofflewaffles
@@ -186,6 +272,19 @@
PCWJ_USE_GRILL(J_MED, 20 SECONDS),
)
/datum/cooking/recipe/shrimp_skewer_bone
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/shrimp_skewer/bone
catalog_category = COOKBOOK_CATEGORY_SEAFOOD
steps = list(
PCWJ_ADD_ITEM(/obj/item/food/shrimp),
PCWJ_ADD_ITEM(/obj/item/food/shrimp),
PCWJ_ADD_ITEM(/obj/item/food/shrimp),
PCWJ_ADD_ITEM(/obj/item/food/shrimp),
PCWJ_ADD_ITEM(/obj/item/stack/bone_rods),
PCWJ_USE_GRILL(J_MED, 20 SECONDS),
)
/datum/cooking/recipe/sushi_tamago
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/sliced/sushi_tamago
@@ -221,6 +320,17 @@
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/syntikebab_bone
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/syntikebab/bone
catalog_category = COOKBOOK_CATEGORY_MEAT
steps = list(
PCWJ_ADD_ITEM(/obj/item/stack/bone_rods),
PCWJ_ADD_ITEM(/obj/item/food/meat/syntiflesh),
PCWJ_ADD_ITEM(/obj/item/food/meat/syntiflesh),
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/telebacon
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/telebacon
@@ -242,6 +352,17 @@
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/tofukebab_bone
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/tofukebab/bone
catalog_category = COOKBOOK_CATEGORY_VEGE
steps = list(
PCWJ_ADD_ITEM(/obj/item/stack/bone_rods),
PCWJ_ADD_ITEM(/obj/item/food/tofu),
PCWJ_ADD_ITEM(/obj/item/food/tofu),
PCWJ_USE_GRILL(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/waffles
container_type = /obj/item/reagent_containers/cooking/grill_grate
product_type = /obj/item/food/waffles
@@ -63,6 +63,77 @@
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe_step/add_item/fried_nian
/datum/cooking/recipe_step/add_item/fried_nian/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/moth))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/moffolo_wings
container_type = /obj/item/reagent_containers/cooking/deep_basket
product_type = /obj/item/food/fried_nian
steps = list(
new /datum/cooking/recipe_step/add_item/fried_nian(),
PCWJ_USE_DEEP_FRYER(10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/moffolo_wild_wings
container_type = /obj/item/reagent_containers/cooking/deep_basket
product_type = /obj/item/food/fried_nian_bbq
steps = list(
new /datum/cooking/recipe_step/add_item/fried_nian(),
PCWJ_ADD_REAGENT("bbqsauce", 5),
PCWJ_USE_DEEP_FRYER(10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe_step/add_item/fried_drask/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/drask))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/calamari
container_type = /obj/item/reagent_containers/cooking/deep_basket
product_type = /obj/item/food/calamari
product_count = 3
steps = list(
new /datum/cooking/recipe_step/add_item/fried_drask(),
PCWJ_USE_DEEP_FRYER(10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe_step/add_item/fried_human/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/human))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/pork_rind
container_type = /obj/item/reagent_containers/cooking/deep_basket
product_type = /obj/item/food/pork_rind
product_count = 3
steps = list(
new /datum/cooking/recipe_step/add_item/fried_human(),
PCWJ_USE_DEEP_FRYER(10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe_step/add_item/deep_fried_anything
/datum/cooking/recipe_step/add_item/deep_fried_anything/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
@@ -515,6 +515,15 @@
PCWJ_USE_OVEN(J_MED, 10 SECONDS),
)
/datum/cooking/recipe/ham_leg
container_type = /obj/item/reagent_containers/cooking/oven
product_type = /obj/item/food/ham_leg
steps = list(
new /datum/cooking/recipe_step/add_item/fried_human(),
PCWJ_USE_OVEN(J_MED, 10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/hardware_cake
container_type = /obj/item/reagent_containers/cooking/oven
product_type = /obj/item/food/sliceable/hardware_cake
@@ -138,6 +138,24 @@
PCWJ_ADD_PRODUCE(/obj/item/food/grown/lettuce),
)
/datum/cooking/recipe_step/add_item/diona/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/diona))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/tree_salad
container_type = /obj/item/reagent_containers/cooking/bowl
product_type = /obj/item/food/tree_salad
steps = list(
new /datum/cooking/recipe_step/add_item/diona(),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/validsalad
container_type = /obj/item/reagent_containers/cooking/bowl
product_type = /obj/item/food/salad/valid
@@ -145,6 +145,44 @@
PCWJ_USE_STOVE(J_MED, 20 SECONDS),
)
/datum/cooking/recipe_step/add_item/fried_skrell/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/skrell))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/frog_leg
container_type = /obj/item/reagent_containers/cooking/pan
product_type = /obj/item/food/frog_leg
steps = list(
new /datum/cooking/recipe_step/add_item/fried_skrell(),
PCWJ_USE_STOVE(J_MED, 10 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe_step/add_item/grey/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/grey))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/grey_gruel
container_type = /obj/item/reagent_containers/cooking/pot
product_type = /obj/item/food/grey_gruel
steps = list(
new /datum/cooking/recipe_step/add_item/grey(),
PCWJ_USE_STOVE(J_MED, 20 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/hong_kong_borscht
container_type = /obj/item/reagent_containers/cooking/pot
product_type = /obj/item/food/soup/hong_kong_borscht
@@ -212,6 +250,26 @@
PCWJ_USE_STOVE(J_MED, 20 SECONDS),
)
/datum/cooking/recipe_step/add_item/fried_taj/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/tajaran))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/feline_mignon
container_type = /obj/item/reagent_containers/cooking/pan
product_type = /obj/item/food/feline_mignon
steps = list(
new /datum/cooking/recipe_step/add_item/fried_taj(),
PCWJ_ADD_REAGENT("wine", 5, optional = TRUE),
PCWJ_USE_STOVE(J_MED, 20 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/misosoup
container_type = /obj/item/reagent_containers/cooking/pot
product_type = /obj/item/food/soup/misosoup
@@ -274,6 +332,25 @@
PCWJ_USE_STOVE(J_MED, 20 SECONDS),
)
/datum/cooking/recipe_step/add_item/plasmaman/check_conditions_met(obj/added_item, datum/cooking/recipe_tracker/tracker)
var/obj/item/organ/external/external = added_item
if(!istype(external))
return PCWJ_CHECK_INVALID
if(istype(external.dna.species, /datum/species/plasmaman))
return PCWJ_CHECK_VALID
return PCWJ_CHECK_INVALID
/datum/cooking/recipe/plasmabone_broth
container_type = /obj/item/reagent_containers/cooking/pot
product_type = /obj/item/food/plasmabone_broth
steps = list(
new /datum/cooking/recipe_step/add_item/plasmaman(),
PCWJ_USE_STOVE(J_MED, 20 SECONDS),
)
appear_in_default_catalog = FALSE
/datum/cooking/recipe/red_porridge
container_type = /obj/item/reagent_containers/cooking/pot
product_type = /obj/item/food/soup/red_porridge