mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-09 16:05:07 +00:00
My original plan was to just implement materials into crafting so that items would inherit the materials of their components, allowing for some interesting stuff if the material flags of the item allow it. However to my dismay crafting is a pile of old tech debt, starting from the old `del_reqs` and `CheckParts` which still contain lines about old janky bandaids that are no longer in use nor reachable, up to the `customizable_reagent_holder` component which has some harddel issues when your custom food is sliced, and items used in food recipes not being deleted and instead stored inside the result with no purpose as well as other inconsistencies like stack recipes that transfer materials having counterparts in the UI that don't do that. EDIT: Several things have come up while working on this, so I apologise that it ended up changing over 100+ files. I managed to atomize some of the changes, but it's a bit tedious. EDIT: TLDR because I was told this section is too vague and there's too much going on. This PR: - Improves the dated crafting code (not the UI). - replaced `atom/CheckParts` and `crafting_recipe/on_craft_completion` with `atom/on_craft_completion`. - Reqs used in food recipes are now deleted by default and not stored inside the result (they did nothing). - Renames the customizable_reagent_holder comp and improves it (No harddels/ref issues). - Adds a unit test that tries to craft all recipes to see what's wrong (it skips some of the much more specific reqs for now). - In the unit test is also the code to make sure materials of the crafted item and a non-crafted item of the same type are roughly the same, so far only applied to food. - Some mild material/food refactoring around the fact that food item code has been changed to support materials. Improving the backbone of the crafting system. Also materials and food code. 🆑 refactor: Refactored crafting backend. Report possible pesky bugs. balance: the MEAT backpack (from the MEAT cargo pack) may be a smidge different because of code standardization. /🆑
789 lines
28 KiB
Plaintext
789 lines
28 KiB
Plaintext
/obj/item/food/meat
|
|
custom_materials = list(/datum/material/meat = MEATSLAB_MATERIAL_AMOUNT)
|
|
w_class = WEIGHT_CLASS_SMALL
|
|
icon = 'icons/obj/food/meat.dmi'
|
|
var/subjectname = ""
|
|
var/subjectjob = null
|
|
var/blood_decal_type = /obj/effect/decal/cleanable/blood
|
|
|
|
/obj/item/food/meat/Initialize(mapload, blood_dna_list = list("meaty DNA" = get_blood_type(BLOOD_TYPE_MEAT)))
|
|
. = ..()
|
|
|
|
if(!blood_decal_type || !length(custom_materials))
|
|
return
|
|
|
|
AddComponent(
|
|
/datum/component/blood_walk,\
|
|
blood_type = blood_decal_type,\
|
|
blood_spawn_chance = 45,\
|
|
transfer_blood_dna = TRUE,\
|
|
max_blood = custom_materials[custom_materials[1]] / SHEET_MATERIAL_AMOUNT,\
|
|
)
|
|
|
|
AddComponent(
|
|
/datum/component/bloody_spreader,\
|
|
blood_left = custom_materials[custom_materials[1]] / SHEET_MATERIAL_AMOUNT,\
|
|
blood_dna = blood_dna_list,\
|
|
)
|
|
|
|
/obj/item/food/meat/slab
|
|
name = "meat"
|
|
desc = "A slab of meat."
|
|
icon_state = "meat"
|
|
bite_consumption = 3
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 5,
|
|
/datum/reagent/consumable/nutriment/fat = 2,
|
|
/datum/reagent/consumable/nutriment/vitamin = 1,
|
|
) //Meat has fats that a food processor can process into cooking oil
|
|
tastes = list("meat" = 1)
|
|
foodtypes = MEAT | RAW
|
|
///Legacy code, handles the coloring of the overlay of the cutlets made from this.
|
|
var/slab_color = COLOR_RED
|
|
|
|
|
|
/obj/item/food/meat/slab/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/dryable, /obj/item/food/sosjerky/healthy)
|
|
|
|
/obj/item/food/meat/slab/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/plain, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE) //Add medium rare later maybe?
|
|
|
|
/obj/item/food/meat/slab/make_processable()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/plain, MEATSLAB_PROCESSED_AMOUNT, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
///////////////////////////////////// HUMAN MEATS //////////////////////////////////////////////////////
|
|
|
|
/obj/item/food/meat/slab/human
|
|
name = "meat"
|
|
tastes = list("tender meat" = 1)
|
|
foodtypes = MEAT | RAW | GORE
|
|
venue_value = FOOD_MEAT_HUMAN
|
|
|
|
/obj/item/food/meat/slab/human/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/plain/human, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE) //Add medium rare later maybe?
|
|
|
|
/obj/item/food/meat/slab/human/make_processable()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/plain/human, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
/obj/item/food/meat/slab/human/mutant/slime
|
|
icon_state = "slimemeat"
|
|
desc = "Because jello wasn't offensive enough to vegans."
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 4,
|
|
/datum/reagent/toxin/slimejelly = 3,
|
|
)
|
|
tastes = list("slime" = 1, "jelly" = 1)
|
|
foodtypes = MEAT | RAW | TOXIC
|
|
venue_value = FOOD_MEAT_MUTANT_RARE
|
|
blood_decal_type = null
|
|
|
|
/obj/item/food/meat/slab/human/mutant/golem
|
|
icon_state = "golemmeat"
|
|
desc = "Edible rocks, welcome to the future."
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment = 3,
|
|
/datum/reagent/iron = 3,
|
|
)
|
|
tastes = list("rock" = 1)
|
|
foodtypes = MEAT | RAW | GROSS
|
|
venue_value = FOOD_MEAT_MUTANT_RARE
|
|
blood_decal_type = null
|
|
|
|
/obj/item/food/meat/slab/human/mutant/golem/adamantine
|
|
icon_state = "agolemmeat"
|
|
desc = "From the slime pen to the rune to the kitchen, science."
|
|
foodtypes = MEAT | RAW | GROSS
|
|
|
|
/obj/item/food/meat/slab/human/mutant/lizard
|
|
icon_state = "lizardmeat"
|
|
desc = "Delicious dino damage."
|
|
tastes = list("meat" = 4, "scales" = 1)
|
|
foodtypes = MEAT | RAW | GORE
|
|
venue_value = FOOD_MEAT_MUTANT
|
|
starting_reagent_purity = 0.4 // Take a look at their diet
|
|
|
|
/obj/item/food/meat/slab/human/mutant/lizard/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/plain/human/lizard, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/slab/human/mutant/plant
|
|
icon_state = "plantmeat"
|
|
desc = "All the joys of healthy eating with all the fun of cannibalism."
|
|
tastes = list("salad" = 1, "wood" = 1)
|
|
foodtypes = VEGETABLES
|
|
venue_value = FOOD_MEAT_MUTANT_RARE
|
|
blood_decal_type = /obj/effect/decal/cleanable/food/plant_smudge
|
|
|
|
/obj/item/food/meat/slab/human/mutant/shadow
|
|
icon_state = "shadowmeat"
|
|
desc = "Ow, the edge."
|
|
tastes = list("darkness" = 1, "meat" = 1)
|
|
foodtypes = MEAT | RAW | GORE
|
|
venue_value = FOOD_MEAT_MUTANT_RARE
|
|
|
|
/obj/item/food/meat/slab/human/mutant/fly
|
|
icon_state = "flymeat"
|
|
desc = "Nothing says tasty like maggot filled radioactive mutant flesh."
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 4,
|
|
/datum/reagent/uranium = 3,
|
|
)
|
|
tastes = list("maggots" = 1, "the inside of a reactor" = 1)
|
|
foodtypes = MEAT | RAW | GROSS | BUGS | GORE
|
|
venue_value = FOOD_MEAT_MUTANT
|
|
blood_decal_type = /obj/effect/decal/cleanable/insectguts
|
|
|
|
/obj/item/food/meat/slab/human/mutant/moth
|
|
icon_state = "mothmeat"
|
|
desc = "Unpleasantly powdery and dry. Kind of pretty, though."
|
|
tastes = list("dust" = 1, "powder" = 1, "meat" = 2)
|
|
foodtypes = MEAT | RAW | BUGS | GORE
|
|
venue_value = FOOD_MEAT_MUTANT
|
|
|
|
/obj/item/food/meat/slab/human/mutant/skeleton
|
|
name = "bone"
|
|
icon_state = "skeletonmeat"
|
|
desc = "There's a point where this needs to stop, and clearly we have passed it."
|
|
tastes = list("bone" = 1)
|
|
foodtypes = GROSS | GORE
|
|
venue_value = FOOD_MEAT_MUTANT_RARE
|
|
blood_decal_type = null
|
|
|
|
/obj/item/food/meat/slab/human/mutant/skeleton/make_processable()
|
|
return //skeletons don't have cutlets
|
|
|
|
/obj/item/food/meat/slab/human/mutant/zombie
|
|
name = "meat (rotten)"
|
|
icon_state = "rottenmeat"
|
|
desc = "Halfway to becoming fertilizer for your garden."
|
|
tastes = list("brains" = 1, "meat" = 1)
|
|
foodtypes = RAW | MEAT | TOXIC | GORE | GROSS
|
|
|
|
/obj/item/food/meat/slab/human/mutant/ethereal
|
|
icon_state = "etherealmeat"
|
|
desc = "So shiny you feel like ingesting it might make you shine too"
|
|
food_reagents = list(/datum/reagent/consumable/liquidelectricity/enriched = 10)
|
|
tastes = list("pure electricity" = 2, "meat" = 1)
|
|
foodtypes = RAW | MEAT | TOXIC | GORE
|
|
venue_value = FOOD_MEAT_MUTANT
|
|
blood_decal_type = null
|
|
|
|
////////////////////////////////////// OTHER MEATS ////////////////////////////////////////////////////////
|
|
|
|
/obj/item/food/meat/slab/synthmeat
|
|
name = "synthmeat"
|
|
icon_state = "meat_old"
|
|
desc = "A synthetic slab of meat."
|
|
foodtypes = RAW | MEAT //hurr durr chemicals were harmed in the production of this meat thus its non-vegan.
|
|
venue_value = FOOD_PRICE_WORTHLESS
|
|
starting_reagent_purity = 0.3
|
|
|
|
/obj/item/food/meat/slab/synthmeat/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/plain/synth, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/slab/meatproduct
|
|
name = "meat product"
|
|
icon_state = "meatproduct"
|
|
desc = "A slab of station reclaimed and chemically processed meat product."
|
|
tastes = list("meat flavoring" = 2, "modified starches" = 2, "natural & artificial dyes" = 1, "butyric acid" = 1)
|
|
foodtypes = RAW | MEAT
|
|
starting_reagent_purity = 0.3
|
|
|
|
/obj/item/food/meat/slab/meatproduct/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/meatproduct, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/slab/monkey
|
|
name = "monkey meat"
|
|
foodtypes = RAW | MEAT
|
|
starting_reagent_purity = 0.3 // Monkeys are considered synthetic life
|
|
|
|
/obj/item/food/meat/slab/bugmeat
|
|
name = "bug meat"
|
|
icon_state = "spidermeat"
|
|
foodtypes = RAW | MEAT | BUGS
|
|
blood_decal_type = /obj/effect/decal/cleanable/insectguts
|
|
|
|
/obj/item/food/meat/slab/mouse
|
|
name = "mouse meat"
|
|
desc = "A slab of mouse meat. Best not eat it raw."
|
|
foodtypes = RAW | MEAT | GORE
|
|
|
|
/obj/item/food/meat/slab/mouse/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/swabable, CELL_LINE_TABLE_MOUSE, CELL_VIRUS_TABLE_GENERIC_MOB)
|
|
|
|
/obj/item/food/meat/slab/corgi
|
|
name = "corgi meat"
|
|
desc = "Tastes like... well you know..."
|
|
tastes = list("meat" = 4, "a fondness for wearing hats" = 1)
|
|
foodtypes = RAW | MEAT | GORE
|
|
|
|
/obj/item/food/meat/slab/corgi/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/swabable, CELL_LINE_TABLE_CORGI, CELL_VIRUS_TABLE_GENERIC_MOB)
|
|
|
|
/obj/item/food/meat/slab/mothroach
|
|
name = "mothroach meat"
|
|
desc = "A light slab of meat."
|
|
foodtypes = RAW | MEAT | GROSS
|
|
|
|
/obj/item/food/meat/slab/mothroach/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/swabable, CELL_VIRUS_TABLE_GENERIC_MOB)
|
|
|
|
/obj/item/food/meat/slab/pug
|
|
name = "pug meat"
|
|
desc = "Tastes like... well you know..."
|
|
foodtypes = RAW | MEAT | GORE
|
|
|
|
/obj/item/food/meat/slab/pug/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/swabable, CELL_LINE_TABLE_PUG, CELL_VIRUS_TABLE_GENERIC_MOB)
|
|
|
|
/obj/item/food/meat/slab/killertomato
|
|
name = "killer tomato meat"
|
|
desc = "A slice from a huge tomato."
|
|
icon_state = "tomatomeat"
|
|
food_reagents = list(/datum/reagent/consumable/nutriment = 2)
|
|
custom_materials = null
|
|
tastes = list("tomato" = 1)
|
|
foodtypes = FRUIT
|
|
blood_decal_type = /obj/effect/decal/cleanable/food/tomato_smudge
|
|
|
|
/obj/item/food/meat/slab/killertomato/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/killertomato, rand(70 SECONDS, 85 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/slab/killertomato/make_processable()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/killertomato, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
/obj/item/food/meat/slab/bear
|
|
name = "bear meat"
|
|
desc = "A very manly slab of meat."
|
|
icon_state = "bearmeat"
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 16,
|
|
/datum/reagent/medicine/morphine = 5,
|
|
/datum/reagent/consumable/nutriment/vitamin = 2,
|
|
/datum/reagent/consumable/nutriment/fat = 6,
|
|
)
|
|
tastes = list("meat" = 1, "salmon" = 1)
|
|
foodtypes = RAW | MEAT
|
|
|
|
/obj/item/food/meat/slab/bear/make_processable()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/bear, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
/obj/item/food/meat/slab/bear/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/bear, rand(40 SECONDS, 70 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/slab/bear/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/swabable, CELL_LINE_TABLE_BEAR, CELL_VIRUS_TABLE_GENERIC_MOB)
|
|
|
|
/obj/item/food/meat/slab/xeno
|
|
name = "xeno meat"
|
|
desc = "A slab of meat."
|
|
icon_state = "xenomeat"
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 8,
|
|
/datum/reagent/consumable/nutriment/vitamin = 3,
|
|
)
|
|
bite_consumption = 4
|
|
tastes = list("meat" = 1, "acid" = 1)
|
|
foodtypes = RAW | MEAT
|
|
blood_decal_type = /obj/effect/decal/cleanable/blood/xeno
|
|
|
|
/obj/item/food/meat/slab/xeno/make_processable()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/xeno, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
/obj/item/food/meat/slab/xeno/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/xeno, rand(40 SECONDS, 70 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/slab/spider
|
|
name = "spider meat"
|
|
desc = "A slab of spider meat. That is so Kafkaesque."
|
|
icon_state = "spidermeat"
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 5,
|
|
/datum/reagent/toxin = 3,
|
|
/datum/reagent/consumable/nutriment/vitamin = 1,
|
|
)
|
|
tastes = list("cobwebs" = 1)
|
|
foodtypes = RAW | MEAT | TOXIC
|
|
blood_decal_type = /obj/effect/decal/cleanable/insectguts
|
|
|
|
/obj/item/food/meat/slab/spider/make_processable()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/spider, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
/obj/item/food/meat/slab/spider/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/spider, rand(40 SECONDS, 70 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/slab/goliath
|
|
name = "goliath meat"
|
|
desc = "A slab of goliath meat. It's not very edible now, but it cooks great in lava."
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 5,
|
|
/datum/reagent/toxin = 5,
|
|
/datum/reagent/consumable/nutriment/fat = 3,
|
|
)
|
|
icon_state = "goliathmeat"
|
|
tastes = list("meat" = 1)
|
|
foodtypes = RAW | MEAT | TOXIC
|
|
|
|
/obj/item/food/meat/slab/goliath/burn()
|
|
visible_message(span_notice("[src] finishes cooking!"))
|
|
new /obj/item/food/meat/steak/goliath(loc)
|
|
qdel(src)
|
|
|
|
/obj/item/food/meat/slab/meatwheat
|
|
name = "meatwheat clump"
|
|
desc = "This doesn't look like meat, but your standards aren't <i>that</i> high to begin with."
|
|
food_reagents = list(/datum/reagent/consumable/nutriment/protein = 4, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/blood = 5, /datum/reagent/consumable/nutriment/fat = 1)
|
|
icon_state = "meatwheat_clump"
|
|
bite_consumption = 4
|
|
tastes = list("meat" = 1, "wheat" = 1)
|
|
|
|
/obj/item/food/meat/slab/gorilla
|
|
name = "gorilla meat"
|
|
desc = "Much meatier than monkey meat."
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 7,
|
|
/datum/reagent/consumable/nutriment/vitamin = 1,
|
|
/datum/reagent/consumable/nutriment/fat = 5, //Plenty of fat!
|
|
)
|
|
|
|
/obj/item/food/meat/rawbacon
|
|
name = "raw piece of bacon"
|
|
desc = "A raw piece of bacon."
|
|
icon_state = "bacon"
|
|
bite_consumption = 2
|
|
custom_materials = list(/datum/material/meat = MEATDISH_MATERIAL_AMOUNT)
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 2,
|
|
/datum/reagent/consumable/nutriment/fat = 3,
|
|
)
|
|
tastes = list("bacon" = 1)
|
|
foodtypes = RAW | MEAT
|
|
crafting_complexity = FOOD_COMPLEXITY_1
|
|
|
|
/obj/item/food/meat/rawbacon/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/bacon, rand(25 SECONDS, 45 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/bacon
|
|
name = "piece of bacon"
|
|
desc = "A delicious piece of bacon."
|
|
icon_state = "baconcooked"
|
|
custom_materials = list(/datum/material/meat = MEATDISH_MATERIAL_AMOUNT)
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 2,
|
|
/datum/reagent/consumable/nutriment/vitamin = 1,
|
|
/datum/reagent/consumable/nutriment/fat = 2,
|
|
)
|
|
tastes = list("bacon" = 1)
|
|
foodtypes = MEAT | BREAKFAST
|
|
crafting_complexity = FOOD_COMPLEXITY_1
|
|
blood_decal_type = null
|
|
|
|
/obj/item/food/meat/slab/gondola
|
|
name = "gondola meat"
|
|
desc = "According to legends of old, consuming raw gondola flesh grants one inner peace."
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 4,
|
|
/datum/reagent/gondola_mutation_toxin = 5,
|
|
/datum/reagent/consumable/nutriment/fat = 3,
|
|
)
|
|
tastes = list("meat" = 4, "tranquility" = 1)
|
|
foodtypes = RAW | MEAT | GORE
|
|
|
|
/obj/item/food/meat/slab/gondola/make_processable()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/gondola, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
/obj/item/food/meat/slab/gondola/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/gondola, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE) //Add medium rare later maybe?
|
|
|
|
/obj/item/food/meat/slab/penguin
|
|
name = "penguin meat"
|
|
icon_state = "birdmeat"
|
|
desc = "A slab of penguin meat."
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 4,
|
|
/datum/reagent/consumable/nutriment/fat = 3,
|
|
)
|
|
tastes = list("beef" = 1, "cod fish" = 1)
|
|
|
|
/obj/item/food/meat/slab/penguin/make_processable()
|
|
. = ..()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/penguin, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
/obj/item/food/meat/slab/penguin/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/penguin, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE) //Add medium rare later maybe?
|
|
|
|
/obj/item/food/meat/slab/rawcrab
|
|
name = "raw crab meat"
|
|
desc = "A pile of raw crab meat."
|
|
icon_state = "crabmeatraw"
|
|
bite_consumption = 3
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 3,
|
|
/datum/reagent/consumable/nutriment/fat = 3,
|
|
)
|
|
tastes = list("raw crab" = 1)
|
|
foodtypes = RAW | MEAT
|
|
|
|
/obj/item/food/meat/slab/rawcrab/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/crab, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE) //Add medium rare later maybe?
|
|
|
|
/obj/item/food/meat/crab
|
|
name = "crab meat"
|
|
desc = "Some deliciously cooked crab meat."
|
|
icon_state = "crabmeat"
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment = 2,
|
|
/datum/reagent/consumable/nutriment/vitamin = 2,
|
|
/datum/reagent/consumable/nutriment/fat = 2,
|
|
)
|
|
tastes = list("crab" = 1)
|
|
foodtypes = SEAFOOD
|
|
crafting_complexity = FOOD_COMPLEXITY_1
|
|
blood_decal_type = null
|
|
|
|
/obj/item/food/meat/slab/chicken
|
|
name = "chicken meat"
|
|
icon_state = "birdmeat"
|
|
desc = "A slab of raw chicken. Remember to wash your hands!"
|
|
food_reagents = list(/datum/reagent/consumable/nutriment/protein = 6) //low fat
|
|
tastes = list("chicken" = 1)
|
|
starting_reagent_purity = 1
|
|
|
|
/obj/item/food/meat/slab/chicken/make_processable()
|
|
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meat/rawcutlet/chicken, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
|
|
|
|
/obj/item/food/meat/slab/chicken/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/chicken, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE) //Add medium rare later maybe? (no this is chicken)
|
|
|
|
/obj/item/food/meat/slab/chicken/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB)
|
|
|
|
/obj/item/food/meat/slab/pig
|
|
name = "raw pork"
|
|
desc = "A slab of raw pork. This little piggy went to the butcher's."
|
|
icon_state = "pig_meat"
|
|
tastes = list("pig" = 1)
|
|
foodtypes = RAW | MEAT | GORE
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 2,
|
|
/datum/reagent/consumable/nutriment/fat = 5,
|
|
/datum/reagent/consumable/nutriment/vitamin = 1,
|
|
) // Fatty piece
|
|
starting_reagent_purity = 1
|
|
|
|
/obj/item/food/meat/slab/pig/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/steak/plain/pig, rand(30 SECONDS, 90 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/slab/grassfed
|
|
name = "eco meat"
|
|
desc = "A slab of 100% grass fed award-winning farm meat."
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 3,
|
|
/datum/reagent/consumable/nutriment/fat = 4,
|
|
/datum/reagent/consumable/nutriment/vitamin = 1,
|
|
) // Marble
|
|
starting_reagent_purity = 1
|
|
|
|
////////////////////////////////////// MEAT STEAKS ///////////////////////////////////////////////////////////
|
|
/obj/item/food/meat/steak
|
|
name = "steak"
|
|
desc = "A piece of hot spicy meat."
|
|
icon_state = "meatsteak"
|
|
food_reagents = list(
|
|
/datum/reagent/consumable/nutriment/protein = 5,
|
|
/datum/reagent/consumable/nutriment/fat = 2,
|
|
/datum/reagent/consumable/nutriment/vitamin = 1,
|
|
)
|
|
foodtypes = MEAT
|
|
tastes = list("meat" = 1)
|
|
crafting_complexity = FOOD_COMPLEXITY_1
|
|
blood_decal_type = null
|
|
|
|
/obj/item/food/meat/steak/Initialize(mapload)
|
|
. = ..()
|
|
RegisterSignal(src, COMSIG_ITEM_MICROWAVE_COOKED, PROC_REF(on_microwave_cooked))
|
|
|
|
/obj/item/food/meat/steak/proc/on_microwave_cooked(datum/source, atom/source_item, cooking_efficiency = 1)
|
|
SIGNAL_HANDLER
|
|
|
|
name = "[source_item.name] steak"
|
|
|
|
/obj/item/food/meat/steak/plain
|
|
|
|
/obj/item/food/meat/steak/plain/human
|
|
tastes = list("tender meat" = 1)
|
|
foodtypes = MEAT | GORE
|
|
|
|
///Make sure the steak has the correct name
|
|
/obj/item/food/meat/steak/plain/human/on_microwave_cooked(datum/source, atom/source_item, cooking_efficiency = 1)
|
|
. = ..()
|
|
if(!istype(source_item, /obj/item/food/meat))
|
|
return
|
|
|
|
var/obj/item/food/meat/origin_meat = source_item
|
|
subjectname = origin_meat.subjectname
|
|
subjectjob = origin_meat.subjectjob
|
|
if(subjectname)
|
|
name = "[origin_meat.subjectname] meatsteak"
|
|
else if(subjectjob)
|
|
name = "[origin_meat.subjectjob] meatsteak"
|
|
|
|
|
|
/obj/item/food/meat/steak/killertomato
|
|
name = "killer tomato steak"
|
|
tastes = list("tomato" = 1)
|
|
foodtypes = FRUIT
|
|
|
|
/obj/item/food/meat/steak/bear
|
|
name = "bear steak"
|
|
tastes = list("meat" = 1, "salmon" = 1)
|
|
|
|
/obj/item/food/meat/steak/xeno
|
|
name = "xeno steak"
|
|
tastes = list("meat" = 1, "acid" = 1)
|
|
|
|
/obj/item/food/meat/steak/spider
|
|
name = "spider steak"
|
|
tastes = list("cobwebs" = 1)
|
|
foodtypes = parent_type::foodtypes | TOXIC
|
|
|
|
/obj/item/food/meat/steak/goliath
|
|
name = "goliath steak"
|
|
desc = "A delicious, lava cooked steak."
|
|
resistance_flags = LAVA_PROOF | FIRE_PROOF
|
|
icon_state = "goliathsteak"
|
|
trash_type = null
|
|
tastes = list("meat" = 1, "rock" = 1)
|
|
|
|
/obj/item/food/meat/steak/gondola
|
|
name = "gondola steak"
|
|
tastes = list("meat" = 1, "tranquility" = 1)
|
|
|
|
/obj/item/food/meat/steak/penguin
|
|
name = "penguin steak"
|
|
icon_state = "birdsteak"
|
|
tastes = list("beef" = 1, "cod fish" = 1)
|
|
|
|
/obj/item/food/meat/steak/chicken
|
|
name = "chicken steak" //Can you have chicken steaks? Maybe this should be renamed once it gets new sprites.
|
|
icon_state = "birdsteak"
|
|
tastes = list("chicken" = 1)
|
|
|
|
/obj/item/food/meat/steak/plain/human/lizard
|
|
name = "lizard steak"
|
|
icon_state = "birdsteak"
|
|
tastes = list("juicy chicken" = 3, "scales" = 1)
|
|
foodtypes = MEAT | GORE
|
|
|
|
/obj/item/food/meat/steak/meatproduct
|
|
name = "thermally processed meat product"
|
|
icon_state = "meatproductsteak"
|
|
tastes = list("enhanced char" = 2, "suspicious tenderness" = 2, "natural & artificial dyes" = 2, "emulsifying agents" = 1)
|
|
|
|
/obj/item/food/meat/steak/plain/synth
|
|
name = "synthsteak"
|
|
desc = "A synthetic meat steak. It doesn't look quite right, now does it?"
|
|
icon_state = "meatsteak_old"
|
|
tastes = list("meat" = 4, "cryoxandone" = 1)
|
|
|
|
/obj/item/food/meat/steak/plain/pig
|
|
name = "pork chops"
|
|
desc = "A pork chop. Quit bustin' my chops!"
|
|
icon_state = "pigsteak"
|
|
tastes = list("pig" = 1)
|
|
foodtypes = MEAT
|
|
|
|
//////////////////////////////// MEAT CUTLETS ///////////////////////////////////////////////////////
|
|
|
|
//Raw cutlets
|
|
|
|
/obj/item/food/meat/rawcutlet
|
|
name = "raw cutlet"
|
|
desc = "A raw meat cutlet."
|
|
icon_state = "rawcutlet"
|
|
bite_consumption = 2
|
|
custom_materials = list(/datum/material/meat = MEATDISH_MATERIAL_AMOUNT)
|
|
food_reagents = list(/datum/reagent/consumable/nutriment/protein = 2)
|
|
tastes = list("meat" = 1)
|
|
foodtypes = MEAT | RAW
|
|
var/meat_type = "meat"
|
|
|
|
/obj/item/food/meat/rawcutlet/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/plain, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/OnCreatedFromProcessing(mob/living/user, obj/item/work_tool, list/chosen_option, atom/original_atom)
|
|
. = ..()
|
|
if(!istype(original_atom, /obj/item/food/meat/slab))
|
|
return
|
|
var/obj/item/food/meat/slab/original_slab = original_atom
|
|
var/mutable_appearance/filling = mutable_appearance(icon, "rawcutlet_coloration")
|
|
filling.color = original_slab.slab_color
|
|
add_overlay(filling)
|
|
name = "raw [original_atom.name] cutlet"
|
|
meat_type = original_atom.name
|
|
|
|
/obj/item/food/meat/rawcutlet/plain
|
|
foodtypes = MEAT
|
|
|
|
/obj/item/food/meat/rawcutlet/plain/human
|
|
tastes = list("tender meat" = 1)
|
|
foodtypes = MEAT | RAW | GORE
|
|
|
|
/obj/item/food/meat/rawcutlet/plain/human/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/plain/human, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/plain/human/OnCreatedFromProcessing(mob/living/user, obj/item/item, list/chosen_option, atom/original_atom)
|
|
. = ..()
|
|
if(!istype(original_atom, /obj/item/food/meat))
|
|
return
|
|
var/obj/item/food/meat/origin_meat = original_atom
|
|
subjectname = origin_meat.subjectname
|
|
subjectjob = origin_meat.subjectjob
|
|
if(subjectname)
|
|
name = "raw [origin_meat.subjectname] cutlet"
|
|
else if(subjectjob)
|
|
name = "raw [origin_meat.subjectjob] cutlet"
|
|
|
|
/obj/item/food/meat/rawcutlet/killertomato
|
|
name = "raw killer tomato cutlet"
|
|
tastes = list("tomato" = 1)
|
|
foodtypes = FRUIT
|
|
blood_decal_type = /obj/effect/decal/cleanable/food/tomato_smudge
|
|
|
|
/obj/item/food/meat/rawcutlet/killertomato/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/killertomato, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/bear
|
|
name = "raw bear cutlet"
|
|
tastes = list("meat" = 1, "salmon" = 1)
|
|
|
|
/obj/item/food/meat/rawcutlet/bear/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/swabable, CELL_LINE_TABLE_BEAR, CELL_VIRUS_TABLE_GENERIC_MOB)
|
|
|
|
/obj/item/food/meat/rawcutlet/bear/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/bear, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/xeno
|
|
name = "raw xeno cutlet"
|
|
tastes = list("meat" = 1, "acid" = 1)
|
|
blood_decal_type = /obj/effect/decal/cleanable/blood/xeno
|
|
|
|
/obj/item/food/meat/rawcutlet/xeno/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/xeno, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/spider
|
|
name = "raw spider cutlet"
|
|
tastes = list("cobwebs" = 1)
|
|
blood_decal_type = /obj/effect/decal/cleanable/insectguts
|
|
foodtypes = parent_type::foodtypes | TOXIC
|
|
|
|
/obj/item/food/meat/rawcutlet/spider/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/spider, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/gondola
|
|
name = "raw gondola cutlet"
|
|
tastes = list("meat" = 1, "tranquility" = 1)
|
|
|
|
/obj/item/food/meat/rawcutlet/gondola/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/gondola, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/penguin
|
|
name = "raw penguin cutlet"
|
|
tastes = list("beef" = 1, "cod fish" = 1)
|
|
|
|
/obj/item/food/meat/rawcutlet/penguin/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/penguin, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/chicken
|
|
name = "raw chicken cutlet"
|
|
tastes = list("chicken" = 1)
|
|
|
|
/obj/item/food/meat/rawcutlet/chicken/make_grillable()
|
|
AddComponent(/datum/component/grillable, /obj/item/food/meat/cutlet/chicken, rand(35 SECONDS, 50 SECONDS), TRUE, TRUE)
|
|
|
|
/obj/item/food/meat/rawcutlet/chicken/Initialize(mapload)
|
|
. = ..()
|
|
AddElement(/datum/element/swabable, CELL_LINE_TABLE_CHICKEN, CELL_VIRUS_TABLE_GENERIC_MOB)
|
|
|
|
//Cooked cutlets
|
|
|
|
/obj/item/food/meat/cutlet
|
|
name = "cutlet"
|
|
desc = "A cooked meat cutlet."
|
|
icon_state = "cutlet"
|
|
bite_consumption = 2
|
|
custom_materials = list(/datum/material/meat = MEATDISH_MATERIAL_AMOUNT)
|
|
food_reagents = list(/datum/reagent/consumable/nutriment/protein = 2)
|
|
tastes = list("meat" = 1)
|
|
foodtypes = MEAT
|
|
crafting_complexity = FOOD_COMPLEXITY_1
|
|
blood_decal_type = null
|
|
|
|
/obj/item/food/meat/cutlet/Initialize(mapload)
|
|
. = ..()
|
|
RegisterSignal(src, COMSIG_ITEM_MICROWAVE_COOKED, PROC_REF(on_microwave_cooked))
|
|
|
|
///This proc handles setting up the correct meat name for the cutlet, this should definitely be changed with the food rework.
|
|
/obj/item/food/meat/cutlet/proc/on_microwave_cooked(datum/source, atom/source_item, cooking_efficiency)
|
|
SIGNAL_HANDLER
|
|
|
|
if(!istype(source_item, /obj/item/food/meat/rawcutlet))
|
|
return
|
|
|
|
var/obj/item/food/meat/rawcutlet/original_cutlet = source_item
|
|
name = "[original_cutlet.meat_type] cutlet"
|
|
|
|
/obj/item/food/meat/cutlet/plain
|
|
|
|
/obj/item/food/meat/cutlet/plain/human
|
|
tastes = list("tender meat" = 1)
|
|
foodtypes = MEAT | GORE
|
|
|
|
/obj/item/food/meat/cutlet/plain/human/on_microwave_cooked(datum/source, atom/source_item, cooking_efficiency)
|
|
. = ..()
|
|
if(!istype(source_item, /obj/item/food/meat))
|
|
return
|
|
|
|
var/obj/item/food/meat/origin_meat = source_item
|
|
if(subjectname)
|
|
name = "[origin_meat.subjectname] [initial(name)]"
|
|
else if(subjectjob)
|
|
name = "[origin_meat.subjectjob] [initial(name)]"
|
|
|
|
/obj/item/food/meat/cutlet/killertomato
|
|
name = "killer tomato cutlet"
|
|
tastes = list("tomato" = 1)
|
|
foodtypes = FRUIT
|
|
|
|
/obj/item/food/meat/cutlet/bear
|
|
name = "bear cutlet"
|
|
tastes = list("meat" = 1, "salmon" = 1)
|
|
|
|
/obj/item/food/meat/cutlet/xeno
|
|
name = "xeno cutlet"
|
|
tastes = list("meat" = 1, "acid" = 1)
|
|
|
|
/obj/item/food/meat/cutlet/spider
|
|
name = "spider cutlet"
|
|
tastes = list("cobwebs" = 1)
|
|
foodtypes = parent_type::foodtypes | TOXIC
|
|
|
|
/obj/item/food/meat/cutlet/gondola
|
|
name = "gondola cutlet"
|
|
tastes = list("meat" = 1, "tranquility" = 1)
|
|
|
|
/obj/item/food/meat/cutlet/penguin
|
|
name = "penguin cutlet"
|
|
tastes = list("beef" = 1, "cod fish" = 1)
|
|
|
|
/obj/item/food/meat/cutlet/chicken
|
|
name = "chicken cutlet"
|
|
tastes = list("chicken" = 1)
|