diff --git a/code/datums/dog_fashion.dm b/code/datums/dog_fashion.dm index 207fab3af93..f9fd88cf387 100644 --- a/code/datums/dog_fashion.dm +++ b/code/datums/dog_fashion.dm @@ -266,6 +266,10 @@ name = "Colonel REAL_NAME" desc = "Keep away from live vox." +/datum/dog_fashion/head/fried_nian_empty + name = "Colonel REAL_NAME" + desc = "Keep away from live nianae." + /datum/dog_fashion/head/hos name = "Head of Security REAL_NAME" desc = "Probably better than the last HoS." diff --git a/code/game/objects/items/stacks/bone_rods.dm b/code/game/objects/items/stacks/bone_rods.dm new file mode 100644 index 00000000000..33a5fd16afc --- /dev/null +++ b/code/game/objects/items/stacks/bone_rods.dm @@ -0,0 +1,27 @@ +/obj/item/stack/bone_rods + name = "bone rod" + desc = "Some bone rods. Can be used for cooking." + singular_name = "bone rod" + icon = 'icons/obj/stacks/minerals.dmi' + icon_state = "bone_rods-5" + inhand_icon_state = "bone_rods" + force = 9.0 + throwforce = 10.0 + throw_speed = 3 + attack_verb = list("hit", "bludgeoned", "whacked") + hitsound = 'sound/weapons/grenadelaunch.ogg' + usesound = 'sound/items/deconstruct.ogg' + merge_type = /obj/item/stack/bone_rods + +/obj/item/stack/bone_rods/update_icon_state() + var/amount = get_amount() + icon_state = "bone_rods-[clamp(amount, 1, 5)]" + +/obj/item/stack/bone_rods/ten + amount = 10 + +/obj/item/stack/bone_rods/twentyfive + amount = 25 + +/obj/item/stack/bone_rods/fifty + amount = 50 diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 833ec117728..fabf3673f6f 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -716,6 +716,11 @@ GLOBAL_LIST_INIT(brass_recipes, list ( ////////////////////////////// // MARK: BONES ////////////////////////////// + +GLOBAL_LIST_INIT(bone_recipes, list ( + new /datum/stack_recipe("bone rods", /obj/item/stack/bone_rods, 1, time = 2 SECONDS), + )) + /obj/item/stack/sheet/bone name = "bones" desc = "Someone's been drinking their milk." @@ -725,6 +730,10 @@ GLOBAL_LIST_INIT(brass_recipes, list ( force = 7 origin_tech = "materials=2;biotech=2" +/obj/item/stack/sheet/bone/Initialize(mapload, new_amount, merge) + . = ..() + recipes = GLOB.bone_recipes + ////////////////////////////// // MARK: PLASTIC ////////////////////////////// diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index 5888c478184..550a4133f3d 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -81,6 +81,17 @@ "Kidan" = 'icons/mob/clothing/species/kidan/head.dmi' ) +/obj/item/trash/fried_nian + name = "Moffolo Wild Wings" + icon_state = "fried_nian_empty" + slot_flags = ITEM_SLOT_HEAD + dog_fashion = /datum/dog_fashion/head/fried_nian_empty + sprite_sheets = list( + "Skrell" = 'icons/mob/clothing/species/skrell/head.dmi', + "Drask" = 'icons/mob/clothing/species/drask/head.dmi', + "Kidan" = 'icons/mob/clothing/species/kidan/head.dmi' + ) + /obj/item/trash/pistachios name = "Pistachios pack" icon_state = "pistachios_pack" diff --git a/code/modules/cooking/recipes/cutting_board_recipes.dm b/code/modules/cooking/recipes/cutting_board_recipes.dm index 134a68198e0..6aba4b3386d 100644 --- a/code/modules/cooking/recipes/cutting_board_recipes.dm +++ b/code/modules/cooking/recipes/cutting_board_recipes.dm @@ -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 diff --git a/code/modules/cooking/recipes/grill_recipes.dm b/code/modules/cooking/recipes/grill_recipes.dm index 5d1498541a9..c70213a807d 100644 --- a/code/modules/cooking/recipes/grill_recipes.dm +++ b/code/modules/cooking/recipes/grill_recipes.dm @@ -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 diff --git a/code/modules/cooking/recipes/midway_recipes.dm b/code/modules/cooking/recipes/midway_recipes.dm index c1169db339c..d704bb01776 100644 --- a/code/modules/cooking/recipes/midway_recipes.dm +++ b/code/modules/cooking/recipes/midway_recipes.dm @@ -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) diff --git a/code/modules/cooking/recipes/oven_recipes.dm b/code/modules/cooking/recipes/oven_recipes.dm index 0b56d6f373f..6317fe76817 100644 --- a/code/modules/cooking/recipes/oven_recipes.dm +++ b/code/modules/cooking/recipes/oven_recipes.dm @@ -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 diff --git a/code/modules/cooking/recipes/prep_bowl_recipes.dm b/code/modules/cooking/recipes/prep_bowl_recipes.dm index 7089d25e4da..335ed6e0f7c 100644 --- a/code/modules/cooking/recipes/prep_bowl_recipes.dm +++ b/code/modules/cooking/recipes/prep_bowl_recipes.dm @@ -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 diff --git a/code/modules/cooking/recipes/stove_recipes.dm b/code/modules/cooking/recipes/stove_recipes.dm index a036674f0ac..25fba8ca679 100644 --- a/code/modules/cooking/recipes/stove_recipes.dm +++ b/code/modules/cooking/recipes/stove_recipes.dm @@ -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 diff --git a/code/modules/food_and_drinks/food/foods/cannibalism.dm b/code/modules/food_and_drinks/food/foods/cannibalism.dm new file mode 100644 index 00000000000..ca92b18952d --- /dev/null +++ b/code/modules/food_and_drinks/food/foods/cannibalism.dm @@ -0,0 +1,195 @@ +/obj/item/food/fried_vox + name = "Kentucky Fried Vox" + desc = "Bucket of voxxy, yaya!" + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "fried_vox" + trash = /obj/item/trash/fried_vox + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("quills" = 1, "the shoal" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/fried_nian + name = "Moffolo Wings" + desc = "A bucket of Moffolo Wings. The 'B' on the bucket is crossed out in blue pen, and the letter 'M' has been crudely written above." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "fried_nian" + trash = /obj/item/trash/fried_nian + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("fluff" = 1, "debt" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/fried_nian_bbq + name = "Moffolo Wild Wings" + desc = "A bucket of Moffolo Wild Wings. The 'B' on the bucket is crossed out in blue pen, and the letter 'M' has been crudely written above." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "fried_nian_bbq" + trash = /obj/item/trash/fried_nian + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("fluff" = 1, "debt" = 1, "bbq sauce" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/bug_bar + name = "Bug Bar" + desc = "A bar made of what seems to be made of ground exoskeleton and meat. The wrapper is already open and crinkled, with a mealworm depicted on the wrapper." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "bug_bar" + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("ink" = 1, "formic acid" = 1, "bitter" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/bug_burger + name = "Bug Burger" + desc = "A burger made of what seems to be made of ground exoskeleton and meat for its patty." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "bug_burger" + list_reagents = list("nutriment" = 4, "protein" = 5) + tastes = list("lemongrass" = 1, "pork" = 1, "peanuts" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/calamari + name = "Calamari" + desc = "A fried ring of seafood meat covered in batter." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "calamari_1" + var/list/possible_iconstates = list("calamri_1", "calamari_2", "calamari_3", "calamari_4") + list_reagents = list("nutriment" = 1, "protein" = 1) + tastes = list("squid" = 1, "batter" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/calamari/Initialize(mapload) + icon_state = pick(possible_iconstates) + update_icon() + . = ..() + +/obj/item/food/feline_mignon + name = "Feline Mignon" + desc = "A plate of rare steak. Is that fur?" + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "feline_mignon" + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("rare steak" = 1, "fur" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/frankfurrter + name = "Frankfurrter" + desc = "A piece of mixed and cased meat. Is that fur?" + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "frankfurrter" + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("meat" = 1, "fur" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/frog_leg + name = "Frog Leg" + desc = "A fried leg of a frog. Are frogs normally that color?" + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "frog_leg" + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("chicken" = 1, "fish" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/grey_gruel + name = "Grey Gruel" + desc = "A grey-looking gruel, with some purple streaks running through it." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "grey_gruel" + trash = /obj/item/trash/snack_bowl + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("synthetic meat" = 1, "blood" = 1, "acidic" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/hiss_kebab + name = "Hiss Kebab" + desc = "A bone rod with grilled meat. Are those scales?" + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "hiss_kebab" + trash = /obj/item/stack/bone_rods + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("meat" = 1, "scales" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/ham_leg + name = "Leg of Ham" + desc = "A leg of ham." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "ham_leg" + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("long pork" = 1, "burnt hair" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/plasmabone_broth + name = "Plasma-Bone Broth" + desc = "A bowl of liquid plasma ." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "plasmabone_broth" + trash = /obj/item/trash/snack_bowl + list_reagents = list("nutriment" = 3, "protein" = 5, "plasma" = 3) + tastes = list("bitter" = 1, "corporate assets going to waste" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/plasmabone_broth/welder_act(mob/user, obj/item/I) + if(I.use_tool(src, user, volume = I.tool_volume)) + log_and_set_aflame(user, I) + return TRUE + +/obj/item/food/plasmabone_broth/item_interaction(mob/living/user, obj/item/used, list/modifiers) + if(!used.get_heat()) + return ..() + log_and_set_aflame(user, used) + return ITEM_INTERACT_COMPLETE + +/obj/item/food/plasmabone_broth/proc/log_and_set_aflame(mob/user, obj/item/I) + var/turf/T = get_turf(src) + message_admins("Plasma-Bone Broth ignited by [key_name_admin(user)]([ADMIN_QUE(user, "?")]) ([ADMIN_FLW(user, "FLW")]) in ([COORD(T)] - [ADMIN_JMP(T)]") + log_game("Plasma-Bone Broth ignited by [key_name(user)] in [COORD(T)]") + investigate_log("was ignited by [key_name(user)]", INVESTIGATE_ATMOS) + user.create_log(MISC_LOG, "Plasma-Bone Broth ignited using [I]", src) + fire_act() + +/obj/item/food/plasmabone_broth/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE) + ..() + atmos_spawn_air(LINDA_SPAWN_HEAT | LINDA_SPAWN_TOXINS, 30) // Borrowing from plasma sheets, 3 sheets' worth * the 10 + qdel(src) + +/obj/item/food/pork_rind + name = "Pork Rind" + desc = "A piece of pork rind." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "pork_rind_1" // Just in case + var/list/possible_iconstates = list("pork_rind_1", "pork_rind_2", "pork_rind_3", "pork_rind_4") + list_reagents = list("nutriment" = 1, "protein" = 1) + tastes = list("long pork" = 1, "salty" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/pork_rind/Initialize(mapload) + icon_state = pick(possible_iconstates) + update_icon() + . = ..() + +/obj/item/food/tree_salad + name = "Tree Salad" + desc = "A salad composed of bark and leaves. Is that a Nymph eye?" + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "tree_salad" + trash = /obj/item/trash/snack_bowl + list_reagents = list("nutriment" = 3, "plantmatter" = 5) + tastes = list("tree bark" = 1, "leaves" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/turkish_delight + name = "Turkish Delight" + desc = "Cubes of flavoured gelatin with sugar covering them." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "turkish_delight" + list_reagents = list("nutriment" = 3, "protein" = 5) + tastes = list("jelly" = 1, "sugar" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE + +/obj/item/food/wafers + name = "Wafers" + desc = "A section of metal with exposed circuit wafers." + icon = 'icons/obj/food/cannibalism.dmi' + icon_state = "wafers" + list_reagents = list("lead" = 3, "iron" = 5, "gold" = 1) + tastes = list("sweet" = 1, "metallic" = 1) + goal_difficulty = FOOD_GOAL_EXCESSIVE diff --git a/code/modules/food_and_drinks/food/foods/ethnic.dm b/code/modules/food_and_drinks/food/foods/ethnic.dm index 2951b49299a..413a9187a5c 100644 --- a/code/modules/food_and_drinks/food/foods/ethnic.dm +++ b/code/modules/food_and_drinks/food/foods/ethnic.dm @@ -154,6 +154,10 @@ list_reagents = list("nutriment" = 8) goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/meatkebab/bone + icon_state = "kebab_bone" + trash = /obj/item/stack/bone_rods + /obj/item/food/syntikebab name = "synthimeat-kebab" desc = "Delicious synthetic meat, on a stick." @@ -162,6 +166,10 @@ filling_color = "#A85340" list_reagents = list("nutriment" = 8) +/obj/item/food/syntikebab/bone + icon_state = "kebab_bone" + trash = /obj/item/stack/bone_rods + /obj/item/food/human/kebab name = "-kebab" desc = "Human meat, on a stick." @@ -170,6 +178,10 @@ filling_color = "#A85340" list_reagents = list("nutriment" = 8) +/obj/item/food/human/kebab/bone + icon_state = "kebab_bone" + trash = /obj/item/stack/bone_rods + /obj/item/food/tofukebab name = "tofu-kebab" desc = "Vegan meat, on a stick." @@ -179,6 +191,10 @@ list_reagents = list("nutriment" = 8) goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/tofukebab/bone + icon_state = "kebab_bone" + trash = /obj/item/stack/bone_rods + /obj/item/food/picoss_kebab name = "picoss-kebab" desc = "A popular Moghes street food consisting of vinegar-marinated space carp on a skewer with onion and chillis." @@ -188,3 +204,7 @@ filling_color = "#A85340" tastes = list("fish" = 4, "acid" = 1, "onion" = 1, "heat" = 1) goal_difficulty = FOOD_GOAL_NORMAL + +/obj/item/food/picoss_kebab/bone + icon_state = "picoss_skewer_bone" + trash = /obj/item/stack/bone_rods diff --git a/code/modules/food_and_drinks/food/foods/meat.dm b/code/modules/food_and_drinks/food/foods/meat.dm index d94796a8d53..f9285b4329b 100644 --- a/code/modules/food_and_drinks/food/foods/meat.dm +++ b/code/modules/food_and_drinks/food/foods/meat.dm @@ -421,16 +421,6 @@ tastes = list("meat" = 1) goal_difficulty = FOOD_GOAL_EXCESSIVE -/obj/item/food/fried_vox - name = "Kentucky Fried Vox" - desc = "Bucket of voxxy, yaya!" - icon = 'icons/obj/food/meat.dmi' - icon_state = "fried_vox" - trash = /obj/item/trash/fried_vox - list_reagents = list("nutriment" = 3, "protein" = 5) - tastes = list("quills" = 1, "the shoal" = 1) - goal_difficulty = FOOD_GOAL_EXCESSIVE - ////////////////////// // Cubes // ////////////////////// diff --git a/code/modules/food_and_drinks/food/foods/seafood.dm b/code/modules/food_and_drinks/food/foods/seafood.dm index 1d5b122c488..de471e9c397 100644 --- a/code/modules/food_and_drinks/food/foods/seafood.dm +++ b/code/modules/food_and_drinks/food/foods/seafood.dm @@ -128,6 +128,10 @@ tastes = list("shrimp" = 4) goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/shrimp_skewer/bone + trash = /obj/item/stack/bone_rods + icon_state = "shrimpskewer_bone" + /obj/item/food/fish_skewer name = "fish skewer" desc = "A whole fish battered and grilled on a skewer. Hope you're hungry!" @@ -139,6 +143,10 @@ tastes = list("shrimp" = 1, "batter" = 1) goal_difficulty = FOOD_GOAL_NORMAL +/obj/item/food/fish_skewer/bone + trash = /obj/item/stack/bone_rods + icon_state = "fishskewer_bone" + /obj/item/food/sliceable/ebi_maki name = "ebi maki roll" desc = "A large unsliced roll of Ebi Sushi." diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index 23c6a1559a7..3a8e410fe85 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -76,16 +76,15 @@ var/output var/time = 40 -/// WHO NAME A PARAMETER FOR A PROC "what" holy hell -/datum/food_processor_process/proc/process_food(loc, what, obj/machinery/processor/processor) +/datum/food_processor_process/proc/process_food(loc, process_in, obj/machinery/processor/processor) if(output && loc && processor) for(var/i = 0, i < processor.rating_amount, i++) new output(loc) - if(what) - qdel(what) + if(process_in) + qdel(process_in) ///////////////////////// -/////OBJECT RECIPIES///// +/////OBJECT RECIPES////// ///////////////////////// /datum/food_processor_process/meat input = /obj/item/food/meat @@ -124,14 +123,14 @@ output = /obj/item/popsicle_stick ///////////////////////// -///END OBJECT RECIPIES/// +///END OBJECT RECIPES//// ///////////////////////// /datum/food_processor_process/mob/process_food(loc, what, processor) ..() ////////////////////// -/////MOB RECIPIES///// +/////MOB RECIPES////// ////////////////////// /datum/food_processor_process/mob/slime input = /mob/living/simple_animal/slime @@ -174,7 +173,7 @@ //bucket_of_blood.reagents.handle_reactions() //blood doesn't react ..() //////////////////////// -////END MOB RECIPIES//// +////END MOB RECIPES///// //////////////////////// //END RECIPE DATUMS diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index b383bc3e54a..bbf3027b0b5 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -129,6 +129,28 @@ M.adjustBrainLoss(1) return ..() | update_flags +/datum/reagent/lead + name = "Lead" + id = "lead" + description = "A heavy metal that causes brain damage and kidney failure, used by some ancient civilisations as a sweetener." + reagent_state = LIQUID + color = "#484848" // rgb: 72, 72, 72 + taste_description = "sweet" + +/datum/reagent/lead/on_mob_life(mob/living/M) + var/update_flags = STATUS_UPDATE_NONE + if(prob(70)) + M.adjustBrainLoss(1) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + var/obj/item/organ/internal/kidneys/our_kidneys = H.get_int_organ(/obj/item/organ/internal/kidneys) + if(prob(70)) + if(our_kidneys && our_kidneys.damage < 60) + our_kidneys.receive_damage(1, TRUE) + else + M.adjustToxLoss(1) + return ..() | update_flags + /datum/reagent/chlorine name = "Chlorine" id = "chlorine" diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index 328b83269e8..374ca75f8f8 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/species/drask/head.dmi b/icons/mob/clothing/species/drask/head.dmi index 61b8783dcff..74ffd7e3f49 100644 Binary files a/icons/mob/clothing/species/drask/head.dmi and b/icons/mob/clothing/species/drask/head.dmi differ diff --git a/icons/mob/clothing/species/kidan/head.dmi b/icons/mob/clothing/species/kidan/head.dmi index 2d3d1008140..2bc6cdda438 100644 Binary files a/icons/mob/clothing/species/kidan/head.dmi and b/icons/mob/clothing/species/kidan/head.dmi differ diff --git a/icons/mob/clothing/species/skrell/head.dmi b/icons/mob/clothing/species/skrell/head.dmi index 0a8d8b4a5d0..7b1a7047d0a 100644 Binary files a/icons/mob/clothing/species/skrell/head.dmi and b/icons/mob/clothing/species/skrell/head.dmi differ diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index e270f209ca1..893ff6a3e1a 100644 Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 958863a0130..5e77bdfe759 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 5ad0ac3f665..d7888fc735c 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/food/cannibalism.dmi b/icons/obj/food/cannibalism.dmi new file mode 100644 index 00000000000..0204ebcf743 Binary files /dev/null and b/icons/obj/food/cannibalism.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index c1b6f351e02..5634b124bf4 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/meat.dmi b/icons/obj/food/meat.dmi index 743da419e62..6c7f894a9eb 100644 Binary files a/icons/obj/food/meat.dmi and b/icons/obj/food/meat.dmi differ diff --git a/icons/obj/food/seafood.dmi b/icons/obj/food/seafood.dmi index 6984cbcd36b..2384ca18580 100644 Binary files a/icons/obj/food/seafood.dmi and b/icons/obj/food/seafood.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 01e2f5530dd..f577c093dd8 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/stacks/minerals.dmi b/icons/obj/stacks/minerals.dmi index d2c20198f9d..87a8647571f 100644 Binary files a/icons/obj/stacks/minerals.dmi and b/icons/obj/stacks/minerals.dmi differ diff --git a/icons/obj/trash.dmi b/icons/obj/trash.dmi index ef669b16b01..9a97393312f 100644 Binary files a/icons/obj/trash.dmi and b/icons/obj/trash.dmi differ diff --git a/paradise.dme b/paradise.dme index 6d7f13a782f..947ed80bc5d 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1383,6 +1383,7 @@ #include "code\game\objects\items\robot\robot_items.dm" #include "code\game\objects\items\robot\robot_parts.dm" #include "code\game\objects\items\robot\robot_upgrades.dm" +#include "code\game\objects\items\stacks\bone_rods.dm" #include "code\game\objects\items\stacks\medical_packs.dm" #include "code\game\objects\items\stacks\nanopaste.dm" #include "code\game\objects\items\stacks\rods.dm" @@ -2198,6 +2199,7 @@ #include "code\modules\food_and_drinks\food\foods\baked_goods.dm" #include "code\modules\food_and_drinks\food\foods\bread.dm" #include "code\modules\food_and_drinks\food\foods\candy.dm" +#include "code\modules\food_and_drinks\food\foods\cannibalism.dm" #include "code\modules\food_and_drinks\food\foods\desserts.dm" #include "code\modules\food_and_drinks\food\foods\ethnic.dm" #include "code\modules\food_and_drinks\food\foods\frozen.dm" @@ -2549,10 +2551,6 @@ #include "code\modules\mob\living\basic\hostile\giant_spider\giant_spider_ai.dm" #include "code\modules\mob\living\basic\hostile\gorilla\gorilla.dm" #include "code\modules\mob\living\basic\hostile\gorilla\gorilla_emote.dm" -#include "code\modules\mob\living\basic\hostile\swarmers\swarmer.dm" -#include "code\modules\mob\living\basic\hostile\swarmers\swarmer_actions.dm" -#include "code\modules\mob\living\basic\hostile\swarmers\swarmer_ai.dm" -#include "code\modules\mob\living\basic\hostile\swarmers\swarmer_effects.dm" #include "code\modules\mob\living\basic\hostile\nether_mobs\blankbody.dm" #include "code\modules\mob\living\basic\hostile\nether_mobs\creature.dm" #include "code\modules\mob\living\basic\hostile\nether_mobs\faithless.dm" @@ -2565,6 +2563,10 @@ #include "code\modules\mob\living\basic\hostile\nether_mobs\skeleton_mob.dm" #include "code\modules\mob\living\basic\hostile\revenant\revenant.dm" #include "code\modules\mob\living\basic\hostile\revenant\revenant_abilities.dm" +#include "code\modules\mob\living\basic\hostile\swarmers\swarmer.dm" +#include "code\modules\mob\living\basic\hostile\swarmers\swarmer_actions.dm" +#include "code\modules\mob\living\basic\hostile\swarmers\swarmer_ai.dm" +#include "code\modules\mob\living\basic\hostile\swarmers\swarmer_effects.dm" #include "code\modules\mob\living\basic\lavaland\goliath\goliath.dm" #include "code\modules\mob\living\basic\lavaland\goliath\goliath_actions.dm" #include "code\modules\mob\living\basic\lavaland\goliath\goliath_ai.dm"