diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm
index dcc29862a51..58d2b1b0804 100644
--- a/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm
+++ b/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm
@@ -1994,7 +1994,7 @@
pixel_x = 10;
pixel_y = -9
},
-/obj/item/reagent_containers/condiment/quality_oil{
+/obj/item/reagent_containers/condiment/olive_oil{
pixel_x = 3;
pixel_y = -2
},
diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm
index ef9ab04ab16..8a0bb4b3eec 100644
--- a/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm
+++ b/_maps/RandomRuins/SpaceRuins/skyrat/piratefort.dmm
@@ -501,8 +501,8 @@
/area/ruin/space/has_grav/powered)
"ru" = (
/obj/structure/closet/secure_closet/freezer/fridge/all_access,
-/obj/item/reagent_containers/condiment/quality_oil,
-/obj/item/reagent_containers/condiment/quality_oil,
+/obj/item/reagent_containers/condiment/olive_oil,
+/obj/item/reagent_containers/condiment/olive_oil,
/turf/open/floor/iron/kitchen,
/area/ruin/space/has_grav/powered)
"rA" = (
diff --git a/_maps/map_files/generic/CentCom_skyrat_z2.dmm b/_maps/map_files/generic/CentCom_skyrat_z2.dmm
index 4ee78940736..70b2de9965b 100644
--- a/_maps/map_files/generic/CentCom_skyrat_z2.dmm
+++ b/_maps/map_files/generic/CentCom_skyrat_z2.dmm
@@ -2682,11 +2682,11 @@
/obj/item/reagent_containers/condiment/yoghurt,
/obj/item/reagent_containers/condiment/yoghurt,
/obj/item/reagent_containers/condiment/yoghurt,
-/obj/item/reagent_containers/condiment/quality_oil,
-/obj/item/reagent_containers/condiment/quality_oil,
-/obj/item/reagent_containers/condiment/quality_oil,
-/obj/item/reagent_containers/condiment/quality_oil,
-/obj/item/reagent_containers/condiment/quality_oil,
+/obj/item/reagent_containers/condiment/olive_oil,
+/obj/item/reagent_containers/condiment/olive_oil,
+/obj/item/reagent_containers/condiment/olive_oil,
+/obj/item/reagent_containers/condiment/olive_oil,
+/obj/item/reagent_containers/condiment/olive_oil,
/obj/item/food/canned/larvae,
/obj/item/food/canned/larvae,
/obj/item/food/canned/larvae,
diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm
index 7c6a10644ad..73e8e31fe09 100644
--- a/code/__DEFINES/food.dm
+++ b/code/__DEFINES/food.dm
@@ -106,6 +106,69 @@ DEFINE_BITFIELD(foodtypes, list(
#define FOOD_AMAZING 6
#define RACE_DRINK 7 // SKYRAT ADDITION
+#define FOOD_QUALITY_NORMAL 1
+#define FOOD_QUALITY_NICE 2
+#define FOOD_QUALITY_GOOD 3
+#define FOOD_QUALITY_VERYGOOD 4
+#define FOOD_QUALITY_FANTASTIC 5
+#define FOOD_QUALITY_AMAZING 6
+#define FOOD_QUALITY_TOP 7
+
+#define FOOD_COMPLEXITY_0 0
+#define FOOD_COMPLEXITY_1 1
+#define FOOD_COMPLEXITY_2 2
+#define FOOD_COMPLEXITY_3 3
+#define FOOD_COMPLEXITY_4 4
+#define FOOD_COMPLEXITY_5 5
+
+/// Labels for food quality
+GLOBAL_LIST_INIT(food_quality_description, list(
+ FOOD_QUALITY_NORMAL = "okay",
+ FOOD_QUALITY_NICE = "nice",
+ FOOD_QUALITY_GOOD = "good",
+ FOOD_QUALITY_VERYGOOD = "very good",
+ FOOD_QUALITY_FANTASTIC = "fantastic",
+ FOOD_QUALITY_AMAZING = "amazing",
+ FOOD_QUALITY_TOP = "godlike",
+))
+
+/// Mood events for food quality
+GLOBAL_LIST_INIT(food_quality_events, list(
+ FOOD_QUALITY_NORMAL = /datum/mood_event/food,
+ FOOD_QUALITY_NICE = /datum/mood_event/food/nice,
+ FOOD_QUALITY_GOOD = /datum/mood_event/food/good,
+ FOOD_QUALITY_VERYGOOD = /datum/mood_event/food/verygood,
+ FOOD_QUALITY_FANTASTIC = /datum/mood_event/food/fantastic,
+ FOOD_QUALITY_AMAZING = /datum/mood_event/food/amazing,
+ FOOD_QUALITY_TOP = /datum/mood_event/food/top,
+))
+
+/// Crafted food buffs grouped by crafting_complexity
+GLOBAL_LIST_INIT(food_buffs, list(
+ FOOD_COMPLEXITY_1 = list(
+ /datum/status_effect/food/haste = 1,
+ ),
+ FOOD_COMPLEXITY_2 = list(
+ /datum/status_effect/food/haste = 1,
+ ),
+ FOOD_COMPLEXITY_3 = list(
+ /datum/status_effect/food/haste = 1,
+ ),
+ FOOD_COMPLEXITY_4 = list(
+ /datum/status_effect/food/haste = 1,
+ /datum/status_effect/food/trait/shockimmune = 1,
+ ),
+ FOOD_COMPLEXITY_5 = list(
+ /datum/status_effect/food/haste = 1,
+ /datum/status_effect/food/trait/shockimmune = 2,
+ ),
+))
+
+/// Food quality change according to species diet
+#define TOXIC_FOOD_QUALITY_CHANGE -4
+#define DISLIKED_FOOD_QUALITY_CHANGE -2
+#define LIKED_FOOD_QUALITY_CHANGE 2
+
/// Food is "in a container", not in a code sense, but in a literal sense (canned foods)
#define FOOD_IN_CONTAINER (1<<0)
/// Finger food can be eaten while walking / running around
@@ -123,11 +186,6 @@ DEFINE_BITFIELD(food_flags, list(
#define FOOD_MEAT_MUTANT 100
#define FOOD_MEAT_MUTANT_RARE 200
-///Amount of reagents you start with on crafted food excluding the used parts
-#define CRAFTED_FOOD_BASE_REAGENT_MODIFIER 0.7
-///Modifier of reagents you get when crafting food from the parts used
-#define CRAFTED_FOOD_INGREDIENT_REAGENT_MODIFIER 0.5
-
#define IS_EDIBLE(O) (O.GetComponent(/datum/component/edible))
diff --git a/code/datums/components/bakeable.dm b/code/datums/components/bakeable.dm
index a5367769f68..8b4964abf45 100644
--- a/code/datums/components/bakeable.dm
+++ b/code/datums/components/bakeable.dm
@@ -66,7 +66,8 @@
/datum/component/bakeable/proc/finish_baking(atom/used_oven)
var/atom/original_object = parent
var/obj/item/plate/oven_tray/used_tray = original_object.loc
- var/atom/baked_result = new bake_result(used_tray)
+ var/atom/baked_result = new bake_result(used_tray, no_base_reagents = TRUE)
+ original_object.reagents?.trans_to(baked_result, original_object.reagents.total_volume)
if(who_baked_us)
ADD_TRAIT(baked_result, TRAIT_FOOD_CHEF_MADE, who_baked_us)
diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm
index 9a2ad6973f8..f436d168476 100644
--- a/code/datums/components/food/edible.dm
+++ b/code/datums/components/food/edible.dm
@@ -54,6 +54,7 @@ Behavior that's still missing from this component that original food items had t
datum/callback/after_eat,
datum/callback/on_consume,
datum/callback/check_liked,
+ reagent_purity = 0.5,
)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
@@ -70,7 +71,7 @@ Behavior that's still missing from this component that original food items had t
src.tastes = string_assoc_list(tastes)
src.check_liked = check_liked
- setup_initial_reagents(initial_reagents)
+ setup_initial_reagents(initial_reagents, reagent_purity)
/datum/component/edible/RegisterWithParent()
RegisterSignal(parent, COMSIG_ATOM_EXAMINE, PROC_REF(examine))
@@ -193,7 +194,7 @@ Behavior that's still missing from this component that original food items had t
return ..()
/// Sets up the initial reagents of the food.
-/datum/component/edible/proc/setup_initial_reagents(list/reagents)
+/datum/component/edible/proc/setup_initial_reagents(list/reagents, reagent_purity)
var/atom/owner = parent
if(owner.reagents)
owner.reagents.maximum_volume = volume
@@ -203,31 +204,61 @@ Behavior that's still missing from this component that original food items had t
for(var/rid in reagents)
var/amount = reagents[rid]
if(length(tastes) && (rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin))
- owner.reagents.add_reagent(rid, amount, tastes.Copy())
+ owner.reagents.add_reagent(rid, amount, tastes.Copy(), added_purity = reagent_purity)
else
- owner.reagents.add_reagent(rid, amount)
+ owner.reagents.add_reagent(rid, amount, added_purity = reagent_purity)
/datum/component/edible/proc/examine(datum/source, mob/user, list/examine_list)
SIGNAL_HANDLER
+ var/atom/owner = parent
+
if(foodtypes)
var/list/types = bitfield_to_list(foodtypes, FOOD_FLAGS)
examine_list += span_notice("It is [lowertext(english_list(types))].")
+ var/quality = get_perceived_food_quality(user)
+ if(quality > 0)
+ var/quality_label = GLOB.food_quality_description[quality]
+ examine_list += span_green("You find this meal [quality_label].")
+ else if (quality == 0)
+ examine_list += span_notice("You find this meal edible.")
+ else
+ examine_list += span_warning("You find this meal inedible.")
+
+ if(owner.reagents.total_volume > 0)
+ var/purity = owner.reagents.get_average_purity(/datum/reagent/consumable)
+ switch(purity)
+ if(0 to 0.2)
+ examine_list += span_warning("It is made of terrible ingredients shortening the effect...")
+ if(0.2 to 0.4)
+ examine_list += span_warning("It is made of synthetic ingredients shortening the effect.")
+ if(0.4 to 0.6)
+ examine_list += span_notice("It is made of average quality ingredients.")
+ if(0.6 to 0.8)
+ examine_list += span_green("It is made of organic ingredients prolonging the effect.")
+ if(0.8 to 1)
+ examine_list += span_green("It is made of finest ingredients prolonging the effect!")
+
var/datum/mind/mind = user.mind
- if(mind && HAS_TRAIT_FROM(parent, TRAIT_FOOD_CHEF_MADE, REF(mind)))
- examine_list += span_green("[parent] was made by you!")
+ if(mind && HAS_TRAIT_FROM(owner, TRAIT_FOOD_CHEF_MADE, REF(mind)))
+ examine_list += span_green("[owner] was made by you!")
if(!(food_flags & FOOD_IN_CONTAINER))
switch(bitecount)
if(0)
// pass
if(1)
- examine_list += span_notice("[parent] was bitten by someone!")
+ examine_list += span_notice("[owner] was bitten by someone!")
if(2, 3)
- examine_list += span_notice("[parent] was bitten [bitecount] times!")
+ examine_list += span_notice("[owner] was bitten [bitecount] times!")
else
- examine_list += span_notice("[parent] was bitten multiple times!")
+ examine_list += span_notice("[owner] was bitten multiple times!")
+
+ if(GLOB.Debug2)
+ examine_list += span_notice("Reagent purities:")
+ for(var/datum/reagent/reagent as anything in owner.reagents.reagent_list)
+ examine_list += span_notice("- [reagent.name] [reagent.volume]u: [round(reagent.purity * 100)]% pure")
/datum/component/edible/proc/UseFromHand(obj/item/source, mob/living/M, mob/living/user)
SIGNAL_HANDLER
@@ -267,15 +298,11 @@ Behavior that's still missing from this component that original food items had t
var/atom/this_food = parent
- this_food.reagents.multiply_reagents(CRAFTED_FOOD_BASE_REAGENT_MODIFIER)
- this_food.reagents.maximum_volume *= CRAFTED_FOOD_BASE_REAGENT_MODIFIER
-
for(var/obj/item/food/crafted_part in parts_list)
if(!crafted_part.reagents)
continue
-
- this_food.reagents.maximum_volume += crafted_part.reagents.maximum_volume * CRAFTED_FOOD_INGREDIENT_REAGENT_MODIFIER
- crafted_part.reagents.trans_to(this_food.reagents, crafted_part.reagents.maximum_volume, CRAFTED_FOOD_INGREDIENT_REAGENT_MODIFIER)
+ this_food.reagents.maximum_volume += crafted_part.reagents.maximum_volume
+ crafted_part.reagents.trans_to(this_food.reagents, crafted_part.reagents.maximum_volume)
this_food.reagents.maximum_volume = ROUND_UP(this_food.reagents.maximum_volume) // Just because I like whole numbers for this.
@@ -428,10 +455,17 @@ Behavior that's still missing from this component that original food items had t
if(sig_return & DESTROY_FOOD)
qdel(owner)
return
+
+ //Give a buff when the dish is hand-crafted and unbitten
+ if(bitecount == 0)
+ apply_buff(eater)
+
var/fraction = min(bite_consumption / owner.reagents.total_volume, 1)
owner.reagents.trans_to(eater, bite_consumption, transfered_by = feeder, methods = INGEST)
bitecount++
+
checkLiked(fraction, eater)
+
if(!owner.reagents.total_volume)
On_Consume(eater, feeder)
@@ -465,6 +499,24 @@ Behavior that's still missing from this component that original food items had t
return
return TRUE
+///Applies food buffs according to the crafting complexity
+/datum/component/edible/proc/apply_buff(mob/eater)
+ var/buff
+ var/recipe_complexity = get_recipe_complexity()
+ if(recipe_complexity == 0)
+ return
+ var/obj/item/food/food = parent
+ if(!isnull(food.crafted_food_buff))
+ buff = food.crafted_food_buff
+ else
+ buff = pick_weight(GLOB.food_buffs[recipe_complexity])
+ if(!isnull(buff))
+ var/mob/living/living_eater = eater
+ var/atom/owner = parent
+ var/timeout_mod = owner.reagents.get_average_purity(/datum/reagent/consumable) * 2 // buff duration is 100% at average purity of 50%
+ var/strength = recipe_complexity
+ living_eater.apply_status_effect(buff, timeout_mod, strength)
+
///Check foodtypes to see if we should send a moodlet
/datum/component/edible/proc/checkLiked(fraction, mob/eater)
if(last_check_time + 50 > world.time)
@@ -478,25 +530,71 @@ Behavior that's still missing from this component that original food items had t
last_check_time = world.time
var/food_taste_reaction
+
+ if(HAS_TRAIT(parent, TRAIT_FOOD_SILVER) && !isjellyperson(gourmand)) // it's not real food
+ food_taste_reaction = FOOD_TOXIC
+
if(check_liked) //Callback handling; use this as an override for special food like donuts
food_taste_reaction = check_liked.Invoke(fraction, gourmand)
if(!food_taste_reaction)
food_taste_reaction = gourmand.get_food_taste_reaction(parent, foodtypes)
- switch(food_taste_reaction)
- if(FOOD_TOXIC)
- to_chat(gourmand,span_warning("What the hell was that thing?!"))
- gourmand.adjust_disgust(25 + 30 * fraction)
- gourmand.add_mood_event("toxic_food", /datum/mood_event/disgusting_food)
- if(FOOD_DISLIKED)
- to_chat(gourmand,span_notice("That didn't taste very good..."))
- gourmand.adjust_disgust(11 + 15 * fraction)
- gourmand.add_mood_event("gross_food", /datum/mood_event/gross_food)
- if(FOOD_LIKED)
- to_chat(gourmand,span_notice("I love this taste!"))
- gourmand.adjust_disgust(-5 + -2.5 * fraction)
- gourmand.add_mood_event("fav_food", /datum/mood_event/favorite_food)
+ if(food_taste_reaction == FOOD_TOXIC)
+ to_chat(gourmand,span_warning("What the hell was that thing?!"))
+ gourmand.adjust_disgust(25 + 30 * fraction)
+ gourmand.add_mood_event("toxic_food", /datum/mood_event/disgusting_food)
+ return
+
+ var/food_quality = get_perceived_food_quality(gourmand, parent)
+ if(food_quality < 0)
+ to_chat(gourmand,span_notice("That didn't taste very good..."))
+ gourmand.adjust_disgust(11 + 15 * fraction)
+ gourmand.add_mood_event("gross_food", /datum/mood_event/gross_food)
+ else if(food_quality > 0)
+ food_quality = min(food_quality, FOOD_QUALITY_TOP)
+ var/atom/owner = parent
+ var/timeout_mod = owner.reagents.get_average_purity(/datum/reagent/consumable) * 2 // mood event duration is 100% at average purity of 50%
+ var/event = GLOB.food_quality_events[food_quality]
+ gourmand.add_mood_event("quality_food", event, timeout_mod)
+ gourmand.adjust_disgust(-5 + -2 * food_quality * fraction)
+ var/quality_label = GLOB.food_quality_description[food_quality]
+ to_chat(gourmand, span_notice("That's \an [quality_label] meal."))
+
+ if(istype(parent, /obj/item/food))
+ var/obj/item/food/food = parent
+ if(food.venue_value >= FOOD_PRICE_EXOTIC)
+ gourmand.add_mob_memory(/datum/memory/good_food, food = parent)
+
+/// Get the complexity of the crafted food
+/datum/component/edible/proc/get_recipe_complexity()
+ if(!HAS_TRAIT(parent, TRAIT_FOOD_CHEF_MADE) || !istype(parent, /obj/item/food))
+ return 0 // It is factory made. Soulless.
+ var/obj/item/food/food = parent
+ return food.crafting_complexity
+
+/// Get food quality adjusted according to eater's preferences
+/datum/component/edible/proc/get_perceived_food_quality(mob/living/carbon/human/eater)
+ var/food_quality = get_recipe_complexity()
+
+ if(HAS_TRAIT(parent, TRAIT_FOOD_SILVER)) // it's not real food
+ food_quality += isjellyperson(eater) ? 2 : -4
+
+ food_quality += TOXIC_FOOD_QUALITY_CHANGE * count_matching_foodtypes(foodtypes, eater.get_toxic_foodtypes())
+ food_quality += DISLIKED_FOOD_QUALITY_CHANGE * count_matching_foodtypes(foodtypes, eater.get_disliked_foodtypes())
+ food_quality += LIKED_FOOD_QUALITY_CHANGE * count_matching_foodtypes(foodtypes, eater.get_liked_foodtypes())
+
+ return food_quality
+
+/// Get the number of matching food types in provided bitfields
+/datum/component/edible/proc/count_matching_foodtypes(bitfield_one, bitfield_two)
+ var/count = 0
+ var/matching_bits = bitfield_one & bitfield_two
+ while (matching_bits > 0)
+ if (matching_bits & 1)
+ count++
+ matching_bits >>= 1
+ return count
///Delete the item when it is fully eaten
/datum/component/edible/proc/On_Consume(mob/living/eater, mob/living/feeder)
diff --git a/code/datums/components/grillable.dm b/code/datums/components/grillable.dm
index bd9ab66fb31..0c73e349523 100644
--- a/code/datums/components/grillable.dm
+++ b/code/datums/components/grillable.dm
@@ -104,12 +104,13 @@
grilled_result = new cook_result(original_object.loc, stack_parent.amount)
else
- grilled_result = new cook_result(original_object.loc)
+ grilled_result = new cook_result(original_object.loc, no_base_reagents = TRUE)
if(original_object.custom_materials)
grilled_result.set_custom_materials(original_object.custom_materials)
if(IS_EDIBLE(grilled_result))
BLACKBOX_LOG_FOOD_MADE(grilled_result.type)
+ original_object.reagents?.trans_to(grilled_result, original_object.reagents.total_volume)
SEND_SIGNAL(parent, COMSIG_ITEM_GRILLED, grilled_result)
if(who_placed_us)
diff --git a/code/datums/components/udder.dm b/code/datums/components/udder.dm
index bd622a944d7..66732aac333 100644
--- a/code/datums/components/udder.dm
+++ b/code/datums/components/udder.dm
@@ -94,7 +94,7 @@
* also useful for changing initial amounts in reagent holder (cows start with milk, gutlunches start empty)
*/
/obj/item/udder/proc/initial_conditions()
- reagents.add_reagent(reagent_produced_typepath, 20)
+ reagents.add_reagent(reagent_produced_typepath, 20, added_purity = 1)
START_PROCESSING(SSobj, src)
/**
@@ -102,7 +102,7 @@
*/
/obj/item/udder/proc/generate()
if(prob(5))
- reagents.add_reagent(reagent_produced_typepath, rand(5, 10))
+ reagents.add_reagent(reagent_produced_typepath, rand(5, 10), added_purity = 1)
if(on_generate_callback)
on_generate_callback.Invoke(reagents.total_volume, reagents.maximum_volume)
@@ -163,7 +163,7 @@
/obj/item/udder/gutlunch/generate()
var/made_something = FALSE
if(prob(60))
- reagents.add_reagent(/datum/reagent/consumable/cream, rand(2, 5))
+ reagents.add_reagent(/datum/reagent/consumable/cream, rand(2, 5), added_purity = 1)
made_something = TRUE
if(prob(45))
reagents.add_reagent(/datum/reagent/medicine/salglu_solution, rand(2,5))
diff --git a/code/datums/elements/dryable.dm b/code/datums/elements/dryable.dm
index 2985f4b7f1e..2be70556b84 100644
--- a/code/datums/elements/dryable.dm
+++ b/code/datums/elements/dryable.dm
@@ -29,7 +29,6 @@
ADD_TRAIT(resulting_atom, TRAIT_DRIED, ELEMENT_TRAIT(type))
resulting_atom.forceMove(source.drop_location())
return
-
else if(isstack(source)) //Check if its a sheet
var/obj/item/stack/itemstack = dried_atom
for(var/i in 1 to itemstack.amount)
@@ -37,6 +36,13 @@
ADD_TRAIT(resulting_atom, TRAIT_DRIED, ELEMENT_TRAIT(type))
qdel(source)
return
+ else if(istype(source, /obj/item/food) && ispath(dry_result, /obj/item/food))
+ var/obj/item/food/source_food = source
+ var/obj/item/food/resulting_food = new dry_result(source.drop_location(), no_base_reagents = TRUE)
+ source_food.reagents.trans_to(resulting_food, source_food.reagents.total_volume)
+ ADD_TRAIT(resulting_food, TRAIT_DRIED, ELEMENT_TRAIT(type))
+ qdel(source)
+ return
else
var/atom/movable/resulting_atom = new dry_result(source.drop_location())
ADD_TRAIT(resulting_atom, TRAIT_DRIED, ELEMENT_TRAIT(type))
diff --git a/code/datums/elements/food/food_trash.dm b/code/datums/elements/food/food_trash.dm
index 6d2b21a400d..bae5e399405 100644
--- a/code/datums/elements/food/food_trash.dm
+++ b/code/datums/elements/food/food_trash.dm
@@ -48,8 +48,14 @@
/datum/element/food_trash/proc/async_generate_trash(datum/source)
var/atom/edible_object = source
+ var/obj/item/trash_item
- var/obj/item/trash_item = generate_trash_procpath ? call(source, generate_trash_procpath)() : new trash(edible_object.drop_location())
+ if(istype(source, /obj/item/food/grown) && ispath(trash, /obj/item/food))
+ var/obj/item/food/grown/plant = source
+ var/reagent_purity = plant.seed.get_reagent_purity()
+ trash_item = new trash(edible_object.drop_location(), starting_reagent_purity = reagent_purity)
+ else
+ trash_item = generate_trash_procpath ? call(source, generate_trash_procpath)() : new trash(edible_object.drop_location())
if(isliving(edible_object.loc))
var/mob/living/food_holding_mob = edible_object.loc
diff --git a/code/datums/elements/food/microwavable.dm b/code/datums/elements/food/microwavable.dm
index 86a43c0603c..daf9518a8b3 100644
--- a/code/datums/elements/food/microwavable.dm
+++ b/code/datums/elements/food/microwavable.dm
@@ -35,9 +35,8 @@
if(isstack(source))
var/obj/item/stack/stack_source = source
result = new result_typepath(result_loc, stack_source.amount)
-
else
- result = new result_typepath(result_loc)
+ result = new result_typepath(result_loc, no_base_reagents = TRUE)
var/efficiency = istype(used_microwave) ? used_microwave.efficiency : 1
SEND_SIGNAL(result, COMSIG_ITEM_MICROWAVE_COOKED, source, efficiency)
@@ -46,7 +45,6 @@
if(microwaver && microwaver.mind)
ADD_TRAIT(result, TRAIT_FOOD_CHEF_MADE, REF(microwaver.mind))
- result.reagents?.multiply_reagents(efficiency * CRAFTED_FOOD_BASE_REAGENT_MODIFIER)
source.reagents?.trans_to(result, source.reagents.total_volume)
BLACKBOX_LOG_FOOD_MADE(result.type)
diff --git a/code/datums/materials/meat.dm b/code/datums/materials/meat.dm
index 07b477b39d8..eebf3abe29a 100644
--- a/code/datums/materials/meat.dm
+++ b/code/datums/materials/meat.dm
@@ -31,7 +31,7 @@
var/nutriment_count = 3 * (amount / SHEET_MATERIAL_AMOUNT)
var/oil_count = 2 * (amount / SHEET_MATERIAL_AMOUNT)
source.AddComponent(/datum/component/edible, \
- initial_reagents = list(/datum/reagent/consumable/nutriment = nutriment_count, /datum/reagent/consumable/cooking_oil = oil_count), \
+ initial_reagents = list(/datum/reagent/consumable/nutriment = nutriment_count, /datum/reagent/consumable/nutriment/fat/oil = oil_count), \
foodtypes = RAW | MEAT | GROSS, \
eat_time = 3 SECONDS, \
tastes = list("Fleshy"))
diff --git a/code/datums/materials/pizza.dm b/code/datums/materials/pizza.dm
index 6a7c4a6922a..588018576be 100644
--- a/code/datums/materials/pizza.dm
+++ b/code/datums/materials/pizza.dm
@@ -29,7 +29,7 @@
var/nutriment_count = 3 * (amount / SHEET_MATERIAL_AMOUNT)
var/oil_count = 2 * (amount / SHEET_MATERIAL_AMOUNT)
source.AddComponent(/datum/component/edible, \
- initial_reagents = list(/datum/reagent/consumable/nutriment = nutriment_count, /datum/reagent/consumable/cooking_oil = oil_count), \
+ initial_reagents = list(/datum/reagent/consumable/nutriment = nutriment_count, /datum/reagent/consumable/nutriment/fat/oil = oil_count), \
foodtypes = GRAIN | MEAT | DAIRY | VEGETABLES, \
eat_time = 3 SECONDS, \
tastes = list("crust", "tomato", "cheese", "meat"))
diff --git a/code/datums/mood.dm b/code/datums/mood.dm
index fa5fe5563ff..76f08641ecb 100644
--- a/code/datums/mood.dm
+++ b/code/datums/mood.dm
@@ -139,8 +139,9 @@
* Arguments:
* * category - (text) category of the mood event - see /datum/mood_event for category explanation
* * type - (path) any /datum/mood_event
+ * * timeout_mod - (number) /datum/mood_event timeout modifier
*/
-/datum/mood/proc/add_mood_event(category, type, ...)
+/datum/mood/proc/add_mood_event(category, type, timeout_mod = 1, ...)
if (!ispath(type, /datum/mood_event))
CRASH("A non path ([type]), was used to add a mood event. This shouldn't be happening.")
if (!istext(category))
@@ -153,6 +154,7 @@
clear_mood_event(category)
else
if (the_event.timeout)
+ the_event.timeout = initial(the_event.timeout) * timeout_mod
addtimer(CALLBACK(src, PROC_REF(clear_mood_event), category), the_event.timeout, (TIMER_UNIQUE|TIMER_OVERRIDE))
return // Don't need to update the event.
var/list/params = args.Copy(3)
@@ -162,8 +164,9 @@
if (QDELETED(the_event)) // the mood event has been deleted for whatever reason (requires a job, etc)
return
- mood_events[category] = the_event
+ the_event.timeout *= timeout_mod
the_event.category = category
+ mood_events[category] = the_event
update_mood()
if (the_event.timeout)
diff --git a/code/datums/mood_events/food_events.dm b/code/datums/mood_events/food_events.dm
new file mode 100644
index 00000000000..7d2dcc439de
--- /dev/null
+++ b/code/datums/mood_events/food_events.dm
@@ -0,0 +1,46 @@
+/datum/mood_event/favorite_food
+ description = "I really enjoyed eating that."
+ mood_change = 5
+ timeout = 4 MINUTES
+
+/datum/mood_event/gross_food
+ description = "I really didn't like that food."
+ mood_change = -2
+ timeout = 4 MINUTES
+
+/datum/mood_event/disgusting_food
+ description = "That food was disgusting!"
+ mood_change = -6
+ timeout = 4 MINUTES
+
+/datum/mood_event/breakfast
+ description = "Nothing like a hearty breakfast to start the shift."
+ mood_change = 2
+ timeout = 10 MINUTES
+
+/datum/mood_event/food
+ timeout = 5 MINUTES
+ var/quality = FOOD_QUALITY_NORMAL
+
+/datum/mood_event/food/New(mob/M, ...)
+ . = ..()
+ mood_change = 2 + 2 * quality
+ description = "That food was [GLOB.food_quality_description[quality]]."
+
+/datum/mood_event/food/nice
+ quality = FOOD_QUALITY_NICE
+
+/datum/mood_event/food/good
+ quality = FOOD_QUALITY_GOOD
+
+/datum/mood_event/food/verygood
+ quality = FOOD_QUALITY_VERYGOOD
+
+/datum/mood_event/food/fantastic
+ quality = FOOD_QUALITY_FANTASTIC
+
+/datum/mood_event/food/amazing
+ quality = FOOD_QUALITY_AMAZING
+
+/datum/mood_event/food/top
+ quality = FOOD_QUALITY_TOP
diff --git a/code/datums/mood_events/needs_events.dm b/code/datums/mood_events/needs_events.dm
index 01281963cc1..ceee687918e 100644
--- a/code/datums/mood_events/needs_events.dm
+++ b/code/datums/mood_events/needs_events.dm
@@ -67,26 +67,6 @@
timeout = 4 MINUTES
//Generic needs events
-/datum/mood_event/favorite_food
- description = "I really enjoyed eating that."
- mood_change = 5
- timeout = 4 MINUTES
-
-/datum/mood_event/gross_food
- description = "I really didn't like that food."
- mood_change = -2
- timeout = 4 MINUTES
-
-/datum/mood_event/disgusting_food
- description = "That food was disgusting!"
- mood_change = -6
- timeout = 4 MINUTES
-
-/datum/mood_event/breakfast
- description = "Nothing like a hearty breakfast to start the shift."
- mood_change = 2
- timeout = 10 MINUTES
-
/datum/mood_event/nice_shower
description = "I have recently had a nice shower."
mood_change = 4
diff --git a/code/datums/status_effects/buffs/food_haste.dm b/code/datums/status_effects/buffs/food_haste.dm
new file mode 100644
index 00000000000..9daf859fb19
--- /dev/null
+++ b/code/datums/status_effects/buffs/food_haste.dm
@@ -0,0 +1,20 @@
+/// Haste makes the eater move faster
+/datum/status_effect/food/haste
+ var/datum/movespeed_modifier/food_haste/modifier
+
+/datum/status_effect/food/haste/on_apply()
+ modifier = new()
+ modifier.multiplicative_slowdown = -0.04 * strength
+ owner.add_movespeed_modifier(modifier, update = TRUE)
+ return ..()
+
+/datum/status_effect/food/haste/be_replaced()
+ owner.remove_movespeed_modifier(modifier, update = TRUE)
+ return ..()
+
+/datum/status_effect/food/haste/on_remove()
+ owner.remove_movespeed_modifier(modifier, update = TRUE)
+ return ..()
+
+/datum/movespeed_modifier/food_haste
+ multiplicative_slowdown = -0.1
diff --git a/code/datums/status_effects/buffs/food_traits.dm b/code/datums/status_effects/buffs/food_traits.dm
new file mode 100644
index 00000000000..ebe22116dd0
--- /dev/null
+++ b/code/datums/status_effects/buffs/food_traits.dm
@@ -0,0 +1,8 @@
+/datum/status_effect/food/trait/shockimmune
+ alert_type = /atom/movable/screen/alert/status_effect/food_trait_shockimmune
+ trait = TRAIT_SHOCKIMMUNE
+
+/atom/movable/screen/alert/status_effect/food_trait_shockimmune
+ name = "Grounded"
+ desc = "That meal made me feel like a superconductor..."
+ icon_state = "food_buff_4"
diff --git a/code/datums/status_effects/food_effects.dm b/code/datums/status_effects/food_effects.dm
new file mode 100644
index 00000000000..e41ef67ad10
--- /dev/null
+++ b/code/datums/status_effects/food_effects.dm
@@ -0,0 +1,52 @@
+/// Buffs given by eating hand-crafted food. The duration scales with consumable reagents purity.
+/datum/status_effect/food
+ id = "food_buff"
+ duration = 5 MINUTES // Same as food mood buffs
+ status_type = STATUS_EFFECT_REPLACE // Only one food buff allowed
+ /// Buff power
+ var/strength
+
+/datum/status_effect/food/on_creation(mob/living/new_owner, timeout_mod = 1, strength = 1)
+ src.strength = strength
+ //Generate alert when not specified
+ if(alert_type == /atom/movable/screen/alert/status_effect)
+ alert_type = "/atom/movable/screen/alert/status_effect/food/buff_[strength]"
+ if(isnum(timeout_mod))
+ duration *= timeout_mod
+ . = ..()
+
+/atom/movable/screen/alert/status_effect/food
+ name = "Hand-crafted meal"
+ desc = "Eating it made me feel better."
+ icon_state = "food_buff_1"
+
+/atom/movable/screen/alert/status_effect/food/buff_1
+ icon_state = "food_buff_1"
+
+/atom/movable/screen/alert/status_effect/food/buff_2
+ icon_state = "food_buff_2"
+
+/atom/movable/screen/alert/status_effect/food/buff_3
+ icon_state = "food_buff_3"
+
+/atom/movable/screen/alert/status_effect/food/buff_4
+ icon_state = "food_buff_4"
+
+/atom/movable/screen/alert/status_effect/food/buff_5
+ icon_state = "food_buff_5"
+
+/// Makes you gain a trait
+/datum/status_effect/food/trait
+ var/trait = TRAIT_DUMB // You need to override this
+
+/datum/status_effect/food/trait/on_apply()
+ ADD_TRAIT(owner, trait, type)
+ return ..()
+
+/datum/status_effect/food/trait/be_replaced()
+ REMOVE_TRAIT(owner, trait, type)
+ return ..()
+
+/datum/status_effect/food/trait/on_remove()
+ REMOVE_TRAIT(owner, trait, type)
+ return ..()
diff --git a/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm b/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm
index 584403a1195..d6b4728d104 100644
--- a/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm
+++ b/code/game/machinery/computer/orders/order_items/cook/order_reagents.dm
@@ -51,9 +51,9 @@
item_path = /obj/item/reagent_containers/condiment/vinegar
cost_per_order = 30
-/datum/orderable_item/reagents/quality_oil
- name = "Quality Oil"
- item_path = /obj/item/reagent_containers/condiment/quality_oil
+/datum/orderable_item/reagents/olive_oil
+ name = "Olive Oil"
+ item_path = /obj/item/reagent_containers/condiment/olive_oil
cost_per_order = 50 //Extra Virgin, just like you, the reader
/datum/orderable_item/reagents/peanut_butter
diff --git a/code/game/objects/effects/spawners/random/food_or_drink.dm b/code/game/objects/effects/spawners/random/food_or_drink.dm
index b9d01e8081a..5338eb52897 100644
--- a/code/game/objects/effects/spawners/random/food_or_drink.dm
+++ b/code/game/objects/effects/spawners/random/food_or_drink.dm
@@ -243,7 +243,7 @@
/obj/item/reagent_containers/condiment/soysauce = 1,
/obj/item/reagent_containers/condiment/vinegar = 1,
/obj/item/reagent_containers/condiment/peanut_butter = 1,
- /obj/item/reagent_containers/condiment/quality_oil = 1,
+ /obj/item/reagent_containers/condiment/olive_oil = 1,
/obj/item/reagent_containers/condiment/cherryjelly = 1,
)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 4cc3a963b5f..0724d990f26 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -207,8 +207,8 @@
///Grinder var:A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only
var/list/grind_results
- //Grinder var:A reagent list containing blah blah... but when JUICED in a grinder!
- var/list/juice_results
+ ///A reagent the nutriments are converted into when the item is juiced.
+ var/datum/reagent/consumable/juice_typepath
var/canMouseDown = FALSE
@@ -971,13 +971,36 @@
/obj/item/proc/grind_requirements(obj/machinery/reagentgrinder/R) //Used to check for extra requirements for grinding an object
return TRUE
-///Called BEFORE the object is ground up - use this to change grind results based on conditions. Use "return -1" to prevent the grinding from occurring
+///Called BEFORE the object is ground up - use this to change grind results based on conditions. Return "-1" to prevent the grinding from occurring
/obj/item/proc/on_grind()
return SEND_SIGNAL(src, COMSIG_ITEM_ON_GRIND)
+///Grind item, adding grind_results to item's reagents and transfering to target_holder if specified
+/obj/item/proc/grind(datum/reagents/target_holder, mob/user)
+ if(on_grind() == -1)
+ return FALSE
+ if(!reagents)
+ reagents = new()
+ reagents.add_reagent_list(grind_results)
+ if(reagents && target_holder)
+ reagents.trans_to(target_holder, reagents.total_volume, transfered_by = user)
+ return TRUE
+
+///Called BEFORE the object is ground up - use this to change grind results based on conditions. Return "-1" to prevent the grinding from occurring
/obj/item/proc/on_juice()
+ if(!juice_typepath)
+ return -1
return SEND_SIGNAL(src, COMSIG_ITEM_ON_JUICE)
+///Juice item, converting nutriments into juice_typepath and transfering to target_holder if specified
+/obj/item/proc/juice(datum/reagents/target_holder, mob/user)
+ if(on_juice() == -1)
+ return FALSE
+ reagents.convert_reagent(/datum/reagent/consumable, juice_typepath, include_source_subtypes = TRUE)
+ if(reagents && target_holder)
+ reagents.trans_to(target_holder, reagents.total_volume, transfered_by = user)
+ return TRUE
+
/obj/item/proc/set_force_string()
switch(force)
if(0 to 4)
diff --git a/code/game/objects/items/food/_food.dm b/code/game/objects/items/food/_food.dm
index 1df4a78b9fe..6d4362cb67f 100644
--- a/code/game/objects/items/food/_food.dm
+++ b/code/game/objects/items/food/_food.dm
@@ -10,7 +10,7 @@
righthand_file = 'icons/mob/inhands/items/food_righthand.dmi'
obj_flags = UNIQUE_RENAME
grind_results = list()
- ///List of reagents this food gets on creation
+ ///List of reagents this food gets on creation during reaction or map spawn
var/list/food_reagents
///Extra flags for things such as if the food is in a container or not
var/food_flags
@@ -48,6 +48,18 @@
var/decomposition_time = 0
///Used to set decomposition stink particles for food, will have no particles if null
var/decomposition_particles = /particles/stink
+ ///Used to set custom starting reagent purity for synthetic and natural food. Ignored when set to null.
+ var/starting_reagent_purity = null
+ ///How exquisite the meal is. Applicable to crafted food, increasing its quality. Spans from 0 to 5.
+ var/crafting_complexity = 0
+ ///Buff given when a hand-crafted version of this item is consumed. Randomized according to crafting_complexity if not assigned.
+ var/datum/status_effect/food/crafted_food_buff = null
+
+/obj/item/food/New(loc, starting_reagent_purity, no_base_reagents = FALSE, ...)
+ src.starting_reagent_purity = starting_reagent_purity
+ if(no_base_reagents)
+ food_reagents = null
+ return ..()
/obj/item/food/Initialize(mapload)
. = ..()
@@ -80,9 +92,9 @@
eatverbs = eatverbs,\
bite_consumption = bite_consumption,\
junkiness = junkiness,\
+ reagent_purity = starting_reagent_purity,\
)
-
///This proc handles processable elements, overwrite this if you want to add behavior such as slicing, forking, spooning, whatever, to turn the item into something else
/obj/item/food/proc/make_processable()
return
diff --git a/code/game/objects/items/food/bread.dm b/code/game/objects/items/food/bread.dm
index 7608657f580..f4f935f032a 100644
--- a/code/game/objects/items/food/bread.dm
+++ b/code/game/objects/items/food/bread.dm
@@ -8,6 +8,7 @@
tastes = list("bread" = 10)
foodtypes = GRAIN
eat_time = 3 SECONDS
+ crafting_complexity = FOOD_COMPLEXITY_2
/// type is spawned 5 at a time and replaces this bread loaf when processed by cutting tool
var/obj/item/food/breadslice/slice_type
/// so that the yield can change if it isnt 5
@@ -32,6 +33,7 @@
food_flags = FOOD_FINGER_FOOD
eat_time = 0.5 SECONDS
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/breadslice/Initialize(mapload)
. = ..()
@@ -48,6 +50,7 @@
venue_value = FOOD_PRICE_CHEAP
burns_in_oven = TRUE
slice_type = /obj/item/food/breadslice/plain
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/bread/plain/Initialize(mapload)
. = ..()
@@ -65,6 +68,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 2)
venue_value = FOOD_PRICE_TRASH
decomp_type = /obj/item/food/breadslice/moldy
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/breadslice/plain/Initialize(mapload)
. = ..()
@@ -84,6 +88,7 @@
tastes = list("decaying fungus" = 1)
foodtypes = GROSS
preserved_food = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/breadslice/moldy/bacteria
name = "bacteria-rich moldy 'bread' slice"
@@ -107,6 +112,7 @@
foodtypes = GRAIN | MEAT
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/breadslice/meat
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/breadslice/meat
name = "meatbread slice"
@@ -119,6 +125,7 @@
)
tastes = list("bread" = 1, "meat" = 1)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bread/sausage
name = "sausagebread loaf"
@@ -132,6 +139,7 @@
tastes = list("bread" = 10, "meat" = 10)
foodtypes = GRAIN | MEAT
slice_type = /obj/item/food/breadslice/sausage
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/breadslice/sausage
name = "sausagebread slice"
@@ -144,6 +152,7 @@
)
tastes = list("bread" = 10, "meat" = 10)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bread/xenomeat
name = "xenomeatbread loaf"
@@ -157,6 +166,7 @@
tastes = list("bread" = 10, "acid" = 10)
foodtypes = GRAIN | MEAT
slice_type = /obj/item/food/breadslice/xenomeat
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/breadslice/xenomeat
name = "xenomeatbread slice"
@@ -169,6 +179,7 @@
)
tastes = list("bread" = 10, "acid" = 10)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bread/spidermeat
name = "spider meat loaf"
@@ -183,6 +194,7 @@
tastes = list("bread" = 10, "cobwebs" = 5)
foodtypes = GRAIN | MEAT | TOXIC
slice_type = /obj/item/food/breadslice/spidermeat
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/breadslice/spidermeat
name = "spider meat bread slice"
@@ -196,6 +208,7 @@
)
tastes = list("bread" = 10, "cobwebs" = 5)
foodtypes = GRAIN | MEAT | TOXIC
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bread/banana
name = "banana-nut bread"
@@ -208,6 +221,7 @@
tastes = list("bread" = 10) // bananjuice will also flavour
foodtypes = GRAIN | FRUIT
slice_type = /obj/item/food/breadslice/banana
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/breadslice/banana
name = "banana-nut bread slice"
@@ -219,6 +233,7 @@
)
tastes = list("bread" = 10)
foodtypes = GRAIN | FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bread/tofu
name = "Tofubread"
@@ -233,6 +248,7 @@
foodtypes = GRAIN | VEGETABLES
venue_value = FOOD_PRICE_TRASH
slice_type = /obj/item/food/breadslice/tofu
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/breadslice/tofu
name = "tofubread slice"
@@ -245,6 +261,7 @@
)
tastes = list("bread" = 10, "tofu" = 10)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bread/creamcheese
name = "cream cheese bread"
@@ -284,6 +301,7 @@
tastes = list("bread" = 10, "silence" = 10)
foodtypes = GRAIN | FRUIT
slice_type = /obj/item/food/breadslice/mimana
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/breadslice/mimana
name = "mimana bread slice"
@@ -297,6 +315,7 @@
)
tastes = list("bread" = 10, "silence" = 10)
foodtypes = GRAIN | FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bread/empty
name = "bread"
@@ -334,6 +353,7 @@
tastes = list("bread" = 1)
foodtypes = GRAIN
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/// whether this is in fake swordplay mode or not
var/fake_swordplay = FALSE
@@ -435,6 +455,7 @@
tastes = list("bread" = 1, "garlic" = 1, "butter" = 1)
foodtypes = GRAIN
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/butterbiscuit
name = "butter biscuit"
@@ -449,6 +470,7 @@
foodtypes = GRAIN | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/butterdog
name = "butterdog"
@@ -463,6 +485,7 @@
tastes = list("butter" = 1, "exotic butter" = 1)
foodtypes = GRAIN | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/butterdog/Initialize(mapload)
. = ..()
@@ -480,6 +503,7 @@
tastes = list("raw egg" = 2, "soaked bread" = 1)
foodtypes = GRAIN | RAW | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/raw_frenchtoast/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/frenchtoast, rand(20 SECONDS, 30 SECONDS), TRUE)
@@ -497,6 +521,7 @@
foodtypes = GRAIN | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/raw_breadstick
name = "raw breadstick"
@@ -510,6 +535,7 @@
tastes = list("raw dough" = 1)
foodtypes = GRAIN | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/raw_breadstick/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/breadstick, rand(15 SECONDS, 20 SECONDS), TRUE, TRUE)
@@ -527,6 +553,7 @@
foodtypes = GRAIN | DAIRY
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/raw_croissant
name = "raw croissant"
@@ -537,6 +564,7 @@
tastes = list("raw dough" = 1)
foodtypes = GRAIN | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/raw_croissant/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/croissant, rand(15 SECONDS, 20 SECONDS), TRUE, TRUE)
@@ -551,6 +579,7 @@
foodtypes = GRAIN | DAIRY | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
// Enhanced weaponised bread
/obj/item/food/croissant/throwing
diff --git a/code/game/objects/items/food/burgers.dm b/code/game/objects/items/food/burgers.dm
index 3878980e78a..311d87b3192 100644
--- a/code/game/objects/items/food/burgers.dm
+++ b/code/game/objects/items/food/burgers.dm
@@ -12,6 +12,7 @@
foodtypes = GRAIN | MEAT //lettuce doesn't make burger a vegetable.
eat_time = 15 //Quick snack
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/plain
name = "plain burger"
@@ -24,6 +25,7 @@
foodtypes = GRAIN | MEAT
custom_price = PAYCHECK_CREW * 0.8
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/plain/Initialize(mapload)
. = ..()
@@ -48,6 +50,7 @@
tastes = list("bun" = 2, "long pig" = 4)
foodtypes = MEAT | GRAIN | GORE
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/human/CheckParts(list/parts_list)
..()
@@ -69,6 +72,7 @@
tastes = list("bun" = 4, "corgi meat" = 2)
foodtypes = GRAIN | MEAT | GORE
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/appendix
name = "appendix burger"
@@ -82,6 +86,7 @@
tastes = list("bun" = 4, "grass" = 2)
foodtypes = GRAIN | MEAT | GORE
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/fish
name = "fillet -o- carp sandwich"
@@ -95,6 +100,7 @@
tastes = list("bun" = 4, "fish" = 4)
foodtypes = GRAIN | SEAFOOD
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/tofu
name = "tofu burger"
@@ -108,6 +114,7 @@
tastes = list("bun" = 4, "tofu" = 4)
foodtypes = GRAIN | VEGETABLES
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/roburger
name = "roburger"
@@ -143,6 +150,7 @@
tastes = list("bun" = 4, "acid" = 4)
foodtypes = GRAIN | MEAT
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/bearger
name = "bearger"
@@ -156,6 +164,7 @@
tastes = list("bun" = 2, "meat" = 2, "salmon" = 2)
foodtypes = GRAIN | MEAT
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/clown
name = "clown burger"
@@ -169,6 +178,7 @@
tastes = list("bun" = 2, "a bad joke" = 4)
foodtypes = GRAIN | FRUIT
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/mime
name = "mime burger"
@@ -182,6 +192,7 @@
)
foodtypes = GRAIN
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/brain
name = "brainburger"
@@ -196,6 +207,7 @@
tastes = list("bun" = 4, "brains" = 2)
foodtypes = GRAIN | MEAT | GORE
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/ghost
name = "ghost burger"
@@ -213,6 +225,7 @@
verb_say = "moans"
verb_yell = "wails"
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/ghost/Initialize(mapload)
. = ..()
@@ -262,6 +275,7 @@
)
tastes = list("bun" = 2, "red" = 2)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/orange
name = "orange burger"
@@ -276,6 +290,7 @@
)
tastes = list("bun" = 2, "orange" = 2)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/yellow
name = "yellow burger"
@@ -290,6 +305,7 @@
)
tastes = list("bun" = 2, "yellow" = 2)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/green
name = "green burger"
@@ -304,6 +320,7 @@
)
tastes = list("bun" = 2, "green" = 2)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/blue
name = "blue burger"
@@ -318,6 +335,7 @@
)
tastes = list("bun" = 2, "blue" = 2)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/purple
name = "purple burger"
@@ -332,6 +350,7 @@
)
tastes = list("bun" = 2, "purple" = 2)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/black
name = "black burger"
@@ -346,6 +365,7 @@
)
tastes = list("bun" = 2, "black" = 2)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/white
name = "white burger"
@@ -360,6 +380,7 @@
)
tastes = list("bun" = 2, "white" = 2)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/spell
name = "spell burger"
@@ -373,6 +394,7 @@
tastes = list("bun" = 4, "magic" = 2)
foodtypes = GRAIN | MEAT
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/bigbite
name = "big bite burger"
@@ -387,6 +409,7 @@
w_class = WEIGHT_CLASS_NORMAL
foodtypes = GRAIN | MEAT | DAIRY
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/jelly
name = "jelly burger"
@@ -395,6 +418,7 @@
tastes = list("bun" = 4, "jelly" = 2)
foodtypes = GRAIN | MEAT
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/jelly/slime
food_reagents = list(
@@ -427,6 +451,7 @@
tastes = list("bun" = 4, "type two diabetes" = 10)
foodtypes = GRAIN | MEAT | DAIRY
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/burger/superbite/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] starts to eat [src] in one bite, it looks like [user.p_theyre()] trying to commit suicide!"))
@@ -448,6 +473,7 @@
tastes = list("extreme heat" = 4, "bun" = 2)
foodtypes = GRAIN | MEAT
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/rat
name = "rat burger"
@@ -461,6 +487,7 @@
tastes = list("dead rat" = 4, "bun" = 2)
foodtypes = GRAIN | MEAT | GORE
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/baseball
name = "home run baseball burger"
@@ -475,6 +502,7 @@
foodtypes = GRAIN | GROSS
custom_price = PAYCHECK_CREW * 0.8
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/baconburger
name = "bacon burger"
@@ -489,6 +517,7 @@
foodtypes = GRAIN | MEAT
custom_premium_price = PAYCHECK_CREW * 1.6
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/empoweredburger
name = "empowered burger"
@@ -503,6 +532,7 @@
tastes = list("bun" = 2, "pure electricity" = 4)
foodtypes = GRAIN | TOXIC
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/burger/catburger
name = "catburger"
@@ -515,6 +545,7 @@
)
tastes = list("bun" = 4, "meat" = 2, "cat" = 2)
foodtypes = GRAIN | MEAT | GORE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/crab
name = "crab burger"
@@ -528,6 +559,7 @@
tastes = list("bun" = 2, "crab meat" = 4)
foodtypes = GRAIN | SEAFOOD
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/soylent
name = "soylent burger"
@@ -541,6 +573,7 @@
tastes = list("bun" = 2, "assistant" = 4)
foodtypes = GRAIN | MEAT | DAIRY
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/burger/rib
name = "mcrib"
@@ -555,6 +588,7 @@
tastes = list("bun" = 2, "pork patty" = 4)
foodtypes = GRAIN | MEAT
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/mcguffin
name = "mcguffin"
@@ -569,6 +603,7 @@
tastes = list("muffin" = 2, "bacon" = 3)
foodtypes = GRAIN | MEAT | BREAKFAST
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/chicken
name = "chicken sandwich" //Apparently the proud people of Americlapstan object to this thing being called a burger. Apparently McDonald's just calls it a burger in Europe as to not scare and confuse us.
@@ -579,11 +614,12 @@
/datum/reagent/consumable/mayonnaise = 3,
/datum/reagent/consumable/nutriment/protein = 7,
/datum/reagent/consumable/nutriment/vitamin = 1,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
)
tastes = list("bun" = 2, "chicken" = 4, "God's covenant" = 1)
foodtypes = GRAIN | MEAT | FRIED
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/cheese
name = "cheese burger"
@@ -597,6 +633,7 @@
tastes = list("bun" = 2, "beef patty" = 4, "cheese" = 3)
foodtypes = GRAIN | MEAT | DAIRY
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/burger/cheese/Initialize(mapload)
. = ..()
@@ -616,6 +653,7 @@
)
tastes = list("bun" = 2, "beef patty" = 4, "cheese" = 2, "beef soaked in chili" = 3, "a smoking flare" = 2)
foodtypes = GRAIN | MEAT | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/burger/crazy/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/food/cake.dm b/code/game/objects/items/food/cake.dm
index 76ab73b970c..1a93ab96df2 100644
--- a/code/game/objects/items/food/cake.dm
+++ b/code/game/objects/items/food/cake.dm
@@ -8,6 +8,7 @@
)
tastes = list("cake" = 1)
foodtypes = GRAIN | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_2
/// type is spawned 5 at a time and replaces this cake when processed by cutting tool
var/obj/item/food/cakeslice/slice_type
/// changes yield of sliced cake, default for cake is 5
@@ -30,6 +31,7 @@
tastes = list("cake" = 1)
foodtypes = GRAIN | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cake/plain
name = "plain cake"
@@ -59,6 +61,7 @@
foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/carrot
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/carrot
name = "carrot cake slice"
@@ -66,6 +69,7 @@
icon_state = "carrotcake_slice"
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/brain
name = "brain cake"
@@ -80,6 +84,7 @@
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
foodtypes = GRAIN | DAIRY | MEAT | GORE | SUGAR
slice_type = /obj/item/food/cakeslice/brain
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/brain
name = "brain cake slice"
@@ -93,6 +98,7 @@
)
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
foodtypes = GRAIN | DAIRY | MEAT | GORE | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/cheese
name = "cheese cake"
@@ -107,6 +113,7 @@
foodtypes = GRAIN | DAIRY
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/cheese
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/cheese
name = "cheese cake slice"
@@ -119,6 +126,7 @@
)
tastes = list("cake" = 4, "cream cheese" = 3)
foodtypes = GRAIN | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/orange
name = "orange cake"
@@ -128,6 +136,7 @@
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR | ORANGES
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/orange
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/orange
name = "orange cake slice"
@@ -135,6 +144,7 @@
icon_state = "orangecake_slice"
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR | ORANGES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/lime
name = "lime cake"
@@ -148,6 +158,7 @@
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/lime
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/lime
name = "lime cake slice"
@@ -155,6 +166,7 @@
icon_state = "limecake_slice"
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/lemon
name = "lemon cake"
@@ -168,6 +180,7 @@
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/lemon
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/lemon
name = "lemon cake slice"
@@ -175,6 +188,7 @@
icon_state = "lemoncake_slice"
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/chocolate
name = "chocolate cake"
@@ -188,6 +202,7 @@
foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/chocolate
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/chocolate
name = "chocolate cake slice"
@@ -195,6 +210,7 @@
icon_state = "chocolatecake_slice"
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/birthday
name = "birthday cake"
@@ -208,6 +224,7 @@
tastes = list("cake" = 5, "sweetness" = 1)
foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR
slice_type = /obj/item/food/cakeslice/birthday
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/birthday/make_microwaveable() // super sekrit club
AddElement(/datum/element/microwavable, /obj/item/clothing/head/utility/hardhat/cakehat)
@@ -223,6 +240,7 @@
)
tastes = list("cake" = 5, "sweetness" = 1)
foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/birthday/energy
name = "energy cake"
@@ -239,6 +257,7 @@
)
tastes = list("cake" = 3, "a Vlad's Salad" = 1)
slice_type = /obj/item/food/cakeslice/birthday/energy
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cake/birthday/energy/make_microwaveable() //super sekriter club
AddElement(/datum/element/microwavable, /obj/item/clothing/head/utility/hardhat/cakehat/energycake)
@@ -268,6 +287,7 @@
/datum/reagent/consumable/liquidelectricity/enriched = 2,
)
tastes = list("cake" = 3, "a Vlad's Salad" = 1)
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cakeslice/birthday/energy/proc/energy_bite(mob/living/user)
to_chat(user, "As you eat the cake slice, you accidentally hurt yourself on the embedded energy dagger!")
@@ -292,6 +312,7 @@
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/apple
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/apple
name = "apple cake slice"
@@ -299,6 +320,7 @@
icon_state = "applecakeslice"
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/slimecake
name = "Slime cake"
@@ -307,6 +329,7 @@
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
slice_type = /obj/item/food/cakeslice/slimecake
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/slimecake
name = "slime cake slice"
@@ -314,6 +337,7 @@
icon_state = "slimecake_slice"
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/pumpkinspice
name = "pumpkin spice cake"
@@ -323,6 +347,7 @@
foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/pumpkinspice
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/pumpkinspice
name = "pumpkin spice cake slice"
@@ -330,23 +355,26 @@
icon_state = "pumpkinspicecakeslice"
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
-/obj/item/food/cake/bsvc // blackberry strawberries vanilla cake
+/obj/item/food/cake/berry_vanilla_cake // blackberry strawberries vanilla cake
name = "blackberry and strawberry vanilla cake"
desc = "A plain cake, filled with assortment of blackberries and strawberries!"
icon_state = "blackbarry_strawberries_cake_vanilla_cake"
tastes = list("blackberry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
- slice_type = /obj/item/food/cakeslice/bsvc
+ slice_type = /obj/item/food/cakeslice/berry_vanilla_cake
+ crafting_complexity = FOOD_COMPLEXITY_3
-/obj/item/food/cakeslice/bsvc
+/obj/item/food/cakeslice/berry_vanilla_cake
name = "blackberry and strawberry vanilla cake slice"
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
icon_state = "blackbarry_strawberries_cake_vanilla_slice"
tastes = list("blackberry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
-/obj/item/food/cake/bscc // blackbarry strawberries chocolate cake <- this is a relic from before resprite
+/obj/item/food/cake/berry_chocolate_cake // blackbarry strawberries chocolate cake <- this is a relic from before resprite
name = "strawberry chocolate cake"
desc = "A chocolate cake with five strawberries on top. For some reason, this configuration of cake is particularly aesthetically pleasing to AIs in SELF."
icon_state = "liars_cake"
@@ -357,15 +385,17 @@
)
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2, "cake" = 3)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
- slice_type = /obj/item/food/cakeslice/bscc
+ slice_type = /obj/item/food/cakeslice/berry_chocolate_cake
+ crafting_complexity = FOOD_COMPLEXITY_4
-/obj/item/food/cakeslice/bscc
+/obj/item/food/cakeslice/berry_chocolate_cake
name = "strawberry chocolate cake slice"
desc = "Just a slice of cake with five strawberries on top. \
For some reason, this configuration of cake is particularly aesthetically pleasing to AIs in SELF."
icon_state = "liars_slice"
tastes = list("strawberries" = 2, "chocolate" = 2, "sweetness" = 2, "cake" = 3)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cake/holy_cake
name = "angel food cake"
@@ -400,6 +430,7 @@
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/pound_cake_slice
yield = 7
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cakeslice/pound_cake_slice
name = "pound cake slice"
@@ -411,6 +442,7 @@
)
tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1)
foodtypes = GRAIN | DAIRY | SUGAR | JUNKFOOD
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cake/hardware_cake
name = "hardware cake"
@@ -425,6 +457,7 @@
tastes = list("acid" = 3, "metal" = 4, "glass" = 5)
foodtypes = GRAIN | GROSS
slice_type = /obj/item/food/cakeslice/hardware_cake_slice
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/hardware_cake_slice
name = "hardware cake slice"
@@ -438,6 +471,7 @@
)
tastes = list("acid" = 3, "metal" = 4, "glass" = 5)
foodtypes = GRAIN | GROSS
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/vanilla_cake
name = "vanilla cake"
@@ -452,6 +486,7 @@
tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10)
foodtypes = GRAIN | SUGAR | DAIRY
slice_type = /obj/item/food/cakeslice/vanilla_slice
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/vanilla_slice
name = "vanilla cake slice"
@@ -465,6 +500,7 @@
)
tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10)
foodtypes = GRAIN | SUGAR | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/clown_cake
name = "clown cake"
@@ -478,6 +514,7 @@
tastes = list("cake" = 1, "sugar" = 1, "joy" = 10)
foodtypes = GRAIN | SUGAR | DAIRY
slice_type = /obj/item/food/cakeslice/clown_slice
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/cakeslice/clown_slice
name = "clown cake slice"
@@ -490,6 +527,7 @@
)
tastes = list("cake" = 1, "sugar" = 1, "joy" = 10)
foodtypes = GRAIN | SUGAR | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/cake/trumpet
name = "spaceman's cake"
@@ -505,6 +543,7 @@
tastes = list("cake" = 4, "violets" = 2, "jam" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
slice_type = /obj/item/food/cakeslice/trumpet
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cakeslice/trumpet
name = "spaceman's cake slice"
@@ -519,6 +558,7 @@
)
tastes = list("cake" = 4, "violets" = 2, "jam" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cake/brioche
name = "brioche cake"
@@ -528,6 +568,7 @@
foodtypes = GRAIN | DAIRY | SUGAR
slice_type = /obj/item/food/cakeslice/brioche
yield = 6
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cakeslice/brioche
name = "brioche cake slice"
@@ -535,6 +576,7 @@
icon_state = "briochecake_slice"
tastes = list("cake" = 4, "butter" = 2, "cream" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cake/pavlova
name = "pavlova"
@@ -543,6 +585,7 @@
tastes = list("meringue" = 5, "creaminess" = 1, "berries" = 1)
foodtypes = DAIRY | FRUIT | SUGAR
slice_type = /obj/item/food/cakeslice/pavlova
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/pavlova/nuts
name = "pavlova with nuts"
@@ -556,6 +599,7 @@
icon_state = "pavlova_slice"
tastes = list("meringue" = 5, "creaminess" = 1, "berries" = 1)
foodtypes = DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/pavlova/nuts
foodtypes = NUTS | FRUIT | SUGAR
@@ -574,6 +618,7 @@
throwforce = 7
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
slice_type = /obj/item/food/cakeslice/fruit
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cakeslice/fruit
name = "english fruitcake slice"
@@ -584,6 +629,7 @@
force = 2
throwforce = 2
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cakeslice/fruit/Initialize(mapload)
. = ..()
@@ -602,6 +648,7 @@
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
venue_value = FOOD_PRICE_CHEAP
slice_type = /obj/item/food/cakeslice/plum
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/plum
name = "plum cake slice"
@@ -609,6 +656,7 @@
icon_state = "plumcakeslice"
tastes = list("cake" = 5, "sweetness" = 1, "plum" = 2)
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cake/wedding
name = "wedding cake"
@@ -622,6 +670,7 @@
tastes = list("cake" = 3, "frosting" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
slice_type = /obj/item/food/cakeslice/wedding
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/wedding
name = "wedding cake slice"
diff --git a/code/game/objects/items/food/cheese.dm b/code/game/objects/items/food/cheese.dm
index ed980bd2a57..1081ecb2ef1 100644
--- a/code/game/objects/items/food/cheese.dm
+++ b/code/game/objects/items/food/cheese.dm
@@ -7,8 +7,9 @@
name = "the concept of cheese"
desc = "This probably shouldn't exist."
tastes = list("cheese" = 1)
- food_reagents = list(/datum/reagent/consumable/nutriment/protein = 3)
+ food_reagents = list(/datum/reagent/consumable/nutriment/fat = 3)
foodtypes = DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_1
/// used to determine how much health rats/regal rats recover when they eat it.
var/rat_heal = 0
@@ -27,24 +28,26 @@
desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far."
icon_state = "cheesewedge"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 2,
+ /datum/reagent/consumable/nutriment/fat = 2,
/datum/reagent/consumable/nutriment/protein = 1,
/datum/reagent/consumable/nutriment/vitamin = 1,
)
w_class = WEIGHT_CLASS_SMALL
rat_heal = 10
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/cheese/wheel
name = "cheese wheel"
desc = "A big wheel of delcious Cheddar."
icon_state = "cheesewheel"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 10,
+ /datum/reagent/consumable/nutriment/fat = 10,
/datum/reagent/consumable/nutriment/protein = 5,
/datum/reagent/consumable/nutriment/vitamin = 5,
) //Hard cheeses contain about 25% protein
w_class = WEIGHT_CLASS_NORMAL
rat_heal = 35
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/cheese/wheel/Initialize(mapload)
. = ..()
@@ -70,7 +73,7 @@
desc = "Ascend the throne. Consume the wheel. Feel the POWER."
icon_state = "royalcheese"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 15,
+ /datum/reagent/consumable/nutriment/fat = 15,
/datum/reagent/consumable/nutriment/vitamin = 5,
/datum/reagent/gold = 20,
/datum/reagent/toxin/mutagen = 5,
@@ -78,6 +81,7 @@
w_class = WEIGHT_CLASS_BULKY
tastes = list("cheese" = 4, "royalty" = 1)
rat_heal = 70
+ crafting_complexity = FOOD_COMPLEXITY_3
//Curd cheese, a general term which I will now proceed to stretch as thin as the toppings on a supermarket sandwich:
//I'll use it as a substitute for ricotta, cottage cheese and quark, as well as any other non-aged, soft grainy cheese
@@ -93,6 +97,7 @@
foodtypes = DAIRY
w_class = WEIGHT_CLASS_SMALL
rat_heal = 35
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cheese/curd_cheese/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/cheese/cheese_curds, rand(15 SECONDS, 20 SECONDS), TRUE, TRUE)
@@ -107,6 +112,7 @@
foodtypes = DAIRY
w_class = WEIGHT_CLASS_SMALL
rat_heal = 35
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cheese/cheese_curds/Initialize(mapload)
. = ..()
@@ -120,6 +126,7 @@
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
rat_heal = 35
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cheese/firm_cheese/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cheese/firm_cheese_slice, 3, 3 SECONDS, screentip_verb = "Slice")
@@ -133,6 +140,7 @@
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
rat_heal = 10
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cheese/firm_cheese_slice/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/grilled_cheese, rand(25 SECONDS, 35 SECONDS), TRUE, TRUE)
@@ -145,3 +153,4 @@
foodtypes = DAIRY
w_class = WEIGHT_CLASS_SMALL
rat_heal = 10
+ crafting_complexity = FOOD_COMPLEXITY_2
diff --git a/code/game/objects/items/food/donkpocket.dm b/code/game/objects/items/food/donkpocket.dm
index 24622fccf99..f2495e0ee52 100644
--- a/code/game/objects/items/food/donkpocket.dm
+++ b/code/game/objects/items/food/donkpocket.dm
@@ -12,6 +12,7 @@
foodtypes = GRAIN
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/// What type of donk pocket we're warmed into via baking or microwaving.
var/warm_type = /obj/item/food/donkpocket/warm
@@ -53,6 +54,7 @@
)
tastes = list("meat" = 2, "dough" = 2)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/donkpocket/spicy
name = "\improper Spicy-pocket"
@@ -142,8 +144,8 @@
)
tastes = list("banana" = 2, "dough" = 2, "children's antibiotics" = 1)
foodtypes = GRAIN
-
warm_type = /obj/item/food/donkpocket/warm/honk
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donkpocket/warm/honk
name = "warm Honk-pocket"
@@ -157,6 +159,7 @@
)
tastes = list("banana" = 2, "dough" = 2, "children's antibiotics" = 1)
foodtypes = GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donkpocket/berry
name = "\improper Berry-pocket"
@@ -168,7 +171,6 @@
)
tastes = list("dough" = 2, "jam" = 2)
foodtypes = GRAIN
-
warm_type = /obj/item/food/donkpocket/warm/berry
/obj/item/food/donkpocket/warm/berry
diff --git a/code/game/objects/items/food/donuts.dm b/code/game/objects/items/food/donuts.dm
index e9fc37a6d36..a9491b87edb 100644
--- a/code/game/objects/items/food/donuts.dm
+++ b/code/game/objects/items/food/donuts.dm
@@ -8,13 +8,15 @@
bite_consumption = 5
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 3)
tastes = list("donut" = 1)
- foodtypes = JUNKFOOD | GRAIN | FRIED | SUGAR | BREAKFAST
+ foodtypes = JUNKFOOD | GRAIN | SUGAR | BREAKFAST
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
var/decorated_icon = "donut_homer"
var/is_decorated = FALSE
var/extra_reagent = null
var/decorated_adjective = "sprinkled"
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/donut/Initialize(mapload)
. = ..()
@@ -58,6 +60,7 @@
bite_consumption = 10
tastes = list("donut" = 3, "chaos" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/chaos/Initialize(mapload)
. = ..()
@@ -87,6 +90,7 @@
tastes = list("meat" = 1)
foodtypes = JUNKFOOD | MEAT | GORE | FRIED | BREAKFAST
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/berry
name = "pink donut"
@@ -111,6 +115,7 @@
)
tastes = list("donut" = 3, "violets" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/apple
name = "apple donut"
@@ -150,6 +155,7 @@
) //the coco reagent is just bitter.
tastes = list("donut" = 4, "bitterness" = 1)
decorated_icon = "donut_choc_sprinkles"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/blumpkin
name = "blumpkin donut"
@@ -163,6 +169,7 @@
)
tastes = list("donut" = 2, "blumpkin" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/bungo
name = "bungo donut"
@@ -201,6 +208,7 @@
)
tastes = list("donut" = 3, "fizzy tutti frutti" = 1,)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
//////////////////////JELLY DONUTS/////////////////////////
@@ -249,6 +257,7 @@
)
tastes = list("jelly" = 1, "donut" = 3, "violets" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/jelly/apple
name = "apple jelly donut"
@@ -291,6 +300,7 @@
)
tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1)
decorated_icon = "jelly_choc_sprinkles"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/jelly/blumpkin
name = "blumpkin jelly donut"
@@ -305,6 +315,7 @@
)
tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/jelly/bungo
name = "bungo jelly donut"
@@ -345,6 +356,7 @@
)
tastes = list("jelly" = 3, "donut" = 1, "fizzy tutti frutti" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
//////////////////////////SLIME DONUTS/////////////////////////
@@ -381,6 +393,7 @@
)
tastes = list("jelly" = 1, "donut" = 3, "violets" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/jelly/slimejelly/apple
name = "apple jelly donut"
@@ -423,6 +436,7 @@
)
tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1)
decorated_icon = "jelly_choc_sprinkles"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/jelly/slimejelly/blumpkin
name = "blumpkin jelly donut"
@@ -437,6 +451,7 @@
)
tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/donut/jelly/slimejelly/bungo
name = "bungo jelly donut"
@@ -477,5 +492,6 @@
)
tastes = list("jelly" = 3, "donut" = 1, "fizzy tutti frutti" = 1)
is_decorated = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
#undef DONUT_SPRINKLE_CHANCE
diff --git a/code/game/objects/items/food/dough.dm b/code/game/objects/items/food/dough.dm
index 28363b3f9f9..2bd80f06b7e 100644
--- a/code/game/objects/items/food/dough.dm
+++ b/code/game/objects/items/food/dough.dm
@@ -8,6 +8,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 6)
tastes = list("dough" = 1)
foodtypes = GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_0
/obj/item/food/dough/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/bread/plain, rand(30 SECONDS, 45 SECONDS), TRUE, TRUE)
@@ -24,6 +25,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 6)
tastes = list("dough" = 1)
foodtypes = GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_0
/obj/item/food/flatdough/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizzabread, rand(30 SECONDS, 45 SECONDS), TRUE, TRUE)
@@ -41,6 +43,7 @@
tastes = list("bread" = 1)
foodtypes = GRAIN
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/pizzabread/Initialize(mapload)
. = ..()
@@ -55,6 +58,7 @@
w_class = WEIGHT_CLASS_SMALL
tastes = list("dough" = 1)
foodtypes = GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_0
/obj/item/food/doughslice/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/bun, rand(20 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -72,6 +76,7 @@
tastes = list("bun" = 1) // the bun tastes of bun.
foodtypes = GRAIN
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/bun/Initialize(mapload)
. = ..()
@@ -85,6 +90,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 9)
tastes = list("batter" = 1)
foodtypes = GRAIN | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/cakebatter/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/cake/plain, rand(70 SECONDS, 90 SECONDS), TRUE, TRUE)
@@ -100,6 +106,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 9)
tastes = list("dough" = 1)
foodtypes = GRAIN | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/piedough/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pie/plain, rand(30 SECONDS, 45 SECONDS), TRUE, TRUE)
@@ -116,6 +123,7 @@
w_class = WEIGHT_CLASS_SMALL
tastes = list("raw pastry" = 1)
foodtypes = GRAIN | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/rawpastrybase/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pastrybase, rand(20 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -130,3 +138,4 @@
tastes = list("pastry" = 1)
foodtypes = GRAIN | DAIRY
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
diff --git a/code/game/objects/items/food/egg.dm b/code/game/objects/items/food/egg.dm
index fe4cb1fd8dd..d71fe0670d1 100644
--- a/code/game/objects/items/food/egg.dm
+++ b/code/game/objects/items/food/egg.dm
@@ -11,6 +11,7 @@
foodtypes = JUNKFOOD | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_2
/// Counter for number of chicks hatched by throwing eggs, minecraft style. Chicks will not emerge from thrown eggs if this value exceeds the MAX_CHICKENS define.
GLOBAL_VAR_INIT(chicks_from_eggs, 0)
@@ -35,6 +36,11 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
/obj/item/food/egg/make_microwaveable()
AddElement(/datum/element/microwavable, /obj/item/food/boiledegg)
+/obj/item/food/egg/organic
+ name = "organic egg"
+ desc = "A 100% natural egg from the best hens."
+ starting_reagent_purity = 1
+
/obj/item/food/egg/rotten
food_reagents = list(/datum/reagent/consumable/eggrot = 10, /datum/reagent/consumable/mold = 10)
foodtypes = GROSS
@@ -199,6 +205,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
foodtypes = MEAT | FRIED | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/rawegg
name = "raw egg"
@@ -231,6 +238,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
w_class = WEIGHT_CLASS_SMALL
ant_attracting = FALSE
decomp_type = /obj/item/food/boiledegg/rotten
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/eggsausage
name = "egg with sausage"
@@ -241,6 +249,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
foodtypes = MEAT | FRIED | BREAKFAST
tastes = list("egg" = 4, "meat" = 4)
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/boiledegg/rotten
food_reagents = list(/datum/reagent/consumable/eggrot = 10)
@@ -262,6 +271,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
tastes = list("egg" = 1, "cheese" = 1)
foodtypes = MEAT | BREAKFAST | DAIRY
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/omelette/attackby(obj/item/item, mob/user, params)
if(istype(item, /obj/item/kitchen/fork))
@@ -295,6 +305,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
tastes = list("egg" = 1, "bacon" = 1, "bun" = 1)
foodtypes = MEAT | BREAKFAST | GRAIN
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/eggwrap
name = "egg wrap"
@@ -309,6 +320,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
tastes = list("egg" = 1)
foodtypes = MEAT | VEGETABLES
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/chawanmushi
name = "chawanmushi"
@@ -322,3 +334,4 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0)
)
tastes = list("custard" = 1)
foodtypes = MEAT | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
diff --git a/code/game/objects/items/food/frozen.dm b/code/game/objects/items/food/frozen.dm
index 3c0c27a2695..8951165aa80 100644
--- a/code/game/objects/items/food/frozen.dm
+++ b/code/game/objects/items/food/frozen.dm
@@ -11,6 +11,7 @@
tastes = list("ice cream" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
food_flags = FOOD_FINGER_FOOD
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/strawberryicecreamsandwich
name = "strawberry ice cream sandwich"
@@ -25,6 +26,7 @@
tastes = list("ice cream" = 2, "berry" = 2)
foodtypes = FRUIT | DAIRY | SUGAR
food_flags = FOOD_FINGER_FOOD
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/spacefreezy
@@ -40,6 +42,7 @@
)
tastes = list("blue cherries" = 2, "ice cream" = 2)
foodtypes = FRUIT | DAIRY | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/spacefreezy/make_edible()
. = ..()
@@ -58,6 +61,7 @@
)
tastes = list("ice cream" = 1, "banana" = 1)
foodtypes = FRUIT | DAIRY | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sundae/make_edible()
. = ..()
@@ -76,6 +80,7 @@
)
tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1)
foodtypes = FRUIT | DAIRY | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/honkdae/make_edible()
. = ..()
@@ -98,6 +103,7 @@
tastes = list("ice" = 1, "water" = 1)
foodtypes = SUGAR //We use SUGAR as a base line to act in as junkfood, other wise we use fruit
food_flags = FOOD_FINGER_FOOD
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/snowcones/lime
name = "lime snowcone"
@@ -293,6 +299,7 @@
)
tastes = list("ice" = 1, "water" = 1, "flowers" = 5, "sweetness" = 5, "wax" = 1)
foodtypes = SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/snowcones/rainbow
name = "rainbow snowcone"
@@ -322,6 +329,7 @@
w_class = WEIGHT_CLASS_SMALL
foodtypes = DAIRY | SUGAR
food_flags = FOOD_FINGER_FOOD
+ crafting_complexity = FOOD_COMPLEXITY_3
var/overlay_state = "creamsicle_o" //This is the edible part of the popsicle.
var/bite_states = 4 //This value value is used for correctly setting the bite_consumption to ensure every bite changes the sprite. Do not set to zero.
@@ -368,6 +376,7 @@
/datum/reagent/consumable/sugar = 4,
)
foodtypes = FRUIT | DAIRY | SUGAR | ORANGES
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/popsicle/creamsicle_berry
name = "berry creamsicle"
@@ -380,6 +389,7 @@
)
overlay_state = "creamsicle_m"
foodtypes = FRUIT | DAIRY | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/popsicle/jumbo
name = "jumbo ice cream"
@@ -391,6 +401,7 @@
/datum/reagent/consumable/sugar = 2,
)
overlay_state = "jumbo"
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/popsicle/licorice_creamsicle
name = "Void Barâ„¢"
@@ -404,6 +415,7 @@
)
tastes = list("salty liquorice")
overlay_state = "licorice_creamsicle"
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cornuto
name = "cornuto"
@@ -421,3 +433,4 @@
tastes = list("chopped hazelnuts", "waffle")
foodtypes = DAIRY | SUGAR
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
diff --git a/code/game/objects/items/food/lizard.dm b/code/game/objects/items/food/lizard.dm
index 6975991ea24..970df893802 100644
--- a/code/game/objects/items/food/lizard.dm
+++ b/code/game/objects/items/food/lizard.dm
@@ -15,6 +15,7 @@
tastes = list("meat" = 1, "black pudding" = 1)
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/raw_tiziran_sausage/Initialize(mapload)
. = ..()
@@ -32,6 +33,7 @@
tastes = list("meat" = 1, "black pudding" = 1)
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/raw_headcheese
name = "raw headcheese block"
@@ -45,6 +47,7 @@
tastes = list("meat" = 1, "salt" = 1)
foodtypes = MEAT | GORE
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/raw_headcheese/Initialize(mapload)
. = ..()
@@ -62,6 +65,7 @@
tastes = list("cheese" = 1, "salt" = 1)
foodtypes = MEAT | GORE
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/headcheese/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/headcheese_slice, 5, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -78,6 +82,7 @@
tastes = list("cheese" = 1, "salt" = 1)
foodtypes = MEAT | GORE
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/shredded_lungs
name = "crispy shredded lung stirfry"
@@ -93,6 +98,7 @@
foodtypes = MEAT | VEGETABLES | GORE
trash_type = /obj/item/reagent_containers/cup/bowl
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/tsatsikh
name = "tsatsikh"
@@ -103,6 +109,7 @@
tastes = list("assorted minced organs" = 1)
foodtypes = MEAT | GORE
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/liver_pate
name = "liver pate"
@@ -113,6 +120,7 @@
tastes = list("liver" = 1)
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/moonfish_eggs
name = "moonfish eggs"
@@ -126,6 +134,7 @@
tastes = list("caviar" = 1)
foodtypes = SEAFOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/moonfish_caviar
name = "moonfish caviar paste"
@@ -139,6 +148,7 @@
tastes = list("caviar" = 1)
foodtypes = SEAFOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/lizard_escargot
name = "desert snail cocleas"
@@ -153,6 +163,7 @@
tastes = list("snails" = 1, "garlic" = 1, "oil" = 1)
foodtypes = MEAT | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/fried_blood_sausage
name = "fried blood sausage"
@@ -163,11 +174,12 @@
/datum/reagent/consumable/nutriment/protein = 6,
/datum/reagent/consumable/nutriment/vitamin = 2,
/datum/reagent/consumable/salt = 1,
- /datum/reagent/consumable/cooking_oil = 1,
+ /datum/reagent/consumable/nutriment/fat/oil = 1,
)
tastes = list("black pudding" = 1, "batter" = 1, "oil" = 1)
foodtypes = MEAT | FRIED
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
//Why does like, every language on the planet besides English call them pommes? Who knows, who cares- the lizards call them it too, because funny.
/obj/item/food/lizard_fries
@@ -184,6 +196,7 @@
tastes = list("fries" = 2, "bbq sauce" = 1, "barbecued meat" = 1)
foodtypes = MEAT | VEGETABLES | FRIED
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/brain_pate
name = "eyeball-and-brain pate"
@@ -197,6 +210,7 @@
tastes = list("brains" = 2)
foodtypes = MEAT | VEGETABLES | GORE
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/crispy_headcheese
name = "crispy breaded headcheese"
@@ -206,11 +220,12 @@
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 5,
/datum/reagent/consumable/nutriment = 3,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
)
tastes = list("cheese" = 1, "oil" = 1)
foodtypes = MEAT | VEGETABLES | NUTS | GORE
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/kebab/picoss_skewers
name = "picoss skewer"
@@ -226,6 +241,7 @@
tastes = list("fish" = 1, "acid" = 1, "onion" = 1, "heat" = 1)
foodtypes = SEAFOOD | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/nectar_larvae
name = "nectar larvae"
@@ -240,6 +256,7 @@
tastes = list("meat" = 1, "sweet" = 1, "heat" = 1)
foodtypes = GORE | MEAT | BUGS
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/mushroomy_stirfry
name = "mushroomy stirfry"
@@ -253,6 +270,7 @@
tastes = list("marvelous mushrooms" = 1, "sublime shrooms" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
//Fish Dishes
/obj/item/food/grilled_moonfish
@@ -268,6 +286,7 @@
foodtypes = SEAFOOD
burns_on_grill = TRUE
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/moonfish_demiglace
name = "moonfish demiglace"
@@ -282,6 +301,7 @@
tastes = list("fish" = 2, "potatoes" = 1, "carrots" = 1)
foodtypes = SEAFOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/lizard_surf_n_turf
name = "\improper Zagosk surf 'n' turf smorgasbord"
@@ -296,6 +316,7 @@
tastes = list("surf" = 1, "turf" = 1)
foodtypes = MEAT | SEAFOOD | VEGETABLES
w_class = WEIGHT_CLASS_BULKY
+ crafting_complexity = FOOD_COMPLEXITY_5
//Spaghetti Dishes
@@ -310,6 +331,7 @@
)
tastes = list("gnocchi" = 1)
foodtypes = VEGETABLES | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/spaghetti/snail_nizaya
name = "desert snail nizaya"
@@ -323,6 +345,7 @@
)
tastes = list("snails" = 1, "wine" = 1, "gnocchi" = 1)
foodtypes = VEGETABLES | MEAT | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/spaghetti/garlic_nizaya
name = "garlic-and-oil nizaya"
@@ -335,6 +358,7 @@
)
tastes = list("garlic" = 1, "oil" = 1, "gnocchi" = 1)
foodtypes = VEGETABLES | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/spaghetti/demit_nizaya
name = "demit nizaya"
@@ -348,6 +372,7 @@
)
tastes = list("peppery sweet" = 1, "veggies" = 1, "gnocchi" = 1)
foodtypes = VEGETABLES | SUGAR | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/spaghetti/mushroom_nizaya
name = "mushroom nizaya"
@@ -360,6 +385,7 @@
)
tastes = list("savouriness" = 1, "nuttiness" = 1, "gnocchi" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_4
//Dough Dishes
@@ -372,6 +398,7 @@
w_class = WEIGHT_CLASS_SMALL
tastes = list("potato" = 1, "earthy heat" = 1)
foodtypes = VEGETABLES | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/rootdough/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/bread/root, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -387,6 +414,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 6)
tastes = list("potato" = 1, "earthy heat" = 1)
foodtypes = VEGETABLES | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/flatrootdough/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/rootdoughslice, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -403,6 +431,7 @@
w_class = WEIGHT_CLASS_SMALL
tastes = list("potato" = 1, "earthy heat" = 1)
foodtypes = VEGETABLES | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/rootdoughslice/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/spaghetti/nizaya, 1, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -419,6 +448,7 @@
tastes = list("bread" = 1, "earthy heat" = 1)
foodtypes = VEGETABLES | NUTS
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/rootroll
name = "rootroll"
@@ -430,6 +460,7 @@
tastes = list("roll" = 1) // the roll tastes of roll.
foodtypes = VEGETABLES | NUTS
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
//Bread Dishes
@@ -481,6 +512,7 @@
tastes = list("bread" = 1, "herb" = 1, "oil" = 1, "garlic" = 1)
foodtypes = VEGETABLES | NUTS
boxtag = "Tiziran Flatbread"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/flatbread/italic
name = "\improper Italic flatbread"
@@ -494,6 +526,7 @@
tastes = list("bread" = 1, "herb" = 1, "oil" = 1, "garlic" = 1, "tomato" = 1, "meat" = 1)
foodtypes = VEGETABLES | NUTS | MEAT
boxtag = "Italic Flatbread"
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pizza/flatbread/imperial
name = "\improper Imperial flatbread"
@@ -507,6 +540,7 @@
tastes = list("bread" = 1, "herb" = 1, "oil" = 1, "garlic" = 1, "tomato" = 1, "meat" = 1)
foodtypes = VEGETABLES | MEAT | NUTS | GORE
boxtag = "Imperial Victory Flatbread"
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pizza/flatbread/rawmeat
name = "meatlovers flatbread"
@@ -518,6 +552,7 @@
)
tastes = list("bread" = 1, "meat" = 1)
foodtypes = MEAT | NUTS | RAW | GORE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/flatbread/stinging
name = "\improper Stinging flatbread"
@@ -530,6 +565,7 @@
)
tastes = list("bread" = 1, "sweetness" = 1, "stinging" = 1, "slime" = 1)
foodtypes = BUGS | NUTS | SEAFOOD | GORE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/flatbread/zmorgast // Name is based off of the Swedish dish Smörgåstårta
name = "\improper Zmorgast flatbread"
@@ -542,6 +578,7 @@
)
tastes = list("bread" = 1, "liver" = 1, "family" = 1)
foodtypes = VEGETABLES | NUTS | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/flatbread/fish
name = "\improper BBQ fish flatbread"
@@ -554,6 +591,7 @@
)
tastes = list("bread" = 1, "fish" = 1)
foodtypes = SEAFOOD | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pizza/flatbread/mushroom
name = "mushroom and tomato flatbread"
@@ -565,6 +603,7 @@
)
tastes = list("bread" = 1, "mushroom" = 1, "tomatoes" = 1)
foodtypes = VEGETABLES | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pizza/flatbread/nutty
name = "nut paste flatbread"
@@ -573,6 +612,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 20)
tastes = list("bread" = 1, "nuts" = 2)
foodtypes = NUTS
+ crafting_complexity = FOOD_COMPLEXITY_3
//Sandwiches/Toast Dishes
/obj/item/food/emperor_roll
@@ -589,6 +629,7 @@
foodtypes = VEGETABLES | NUTS | MEAT | GORE | SEAFOOD
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/honey_roll
name = "honey sweetroll"
@@ -604,6 +645,7 @@
foodtypes = VEGETABLES | NUTS | FRUIT
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
//Egg Dishes
/obj/item/food/black_eggs
@@ -618,6 +660,7 @@
tastes = list("eggs" = 1, "greens" = 1, "blood" = 1)
foodtypes = MEAT | BREAKFAST | GORE
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/patzikula
name = "patzikula"
@@ -633,6 +676,7 @@
tastes = list("eggs" = 1, "tomato" = 1, "heat" = 1)
foodtypes = VEGETABLES | MEAT | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
//Cakes/Sweets
@@ -649,6 +693,7 @@
tastes = list("peppery heat" = 1, "sweetness" = 1)
foodtypes = NUTS | SUGAR
slice_type = /obj/item/food/cakeslice/korta_brittle
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cakeslice/korta_brittle
name = "korta brittle slice"
@@ -688,6 +733,7 @@
)
tastes = list("savouriness" = 1, "sweetness" = 1)
foodtypes = SUGAR | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
//Misc Dishes
/obj/item/food/sauerkraut
@@ -699,6 +745,7 @@
tastes = list("cabbage" = 1, "acid" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/lizard_dumplings
name = "\improper Tiziran dumplings"
@@ -712,6 +759,7 @@
tastes = list("potato" = 1, "earthy heat" = 1)
foodtypes = VEGETABLES | NUTS
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/steeped_mushrooms
name = "steeped seraka mushrooms"
@@ -725,6 +773,7 @@
tastes = list("savouriness" = 1, "nuttiness" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/canned/jellyfish
name = "canned gunner jellyfish"
diff --git a/code/game/objects/items/food/martian.dm b/code/game/objects/items/food/martian.dm
index ec6768bd244..8e2c1fcd291 100644
--- a/code/game/objects/items/food/martian.dm
+++ b/code/game/objects/items/food/martian.dm
@@ -480,7 +480,7 @@
food_reagents = list(
/datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/nutriment/protein = 4,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
)
tastes = list("octopus" = 1, "batter" = 1, "onion" = 1, "worcestershire sauce" = 1)
foodtypes = MEAT | GRAIN | FRIED | VEGETABLES
@@ -508,7 +508,7 @@
food_reagents = list(
/datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/nutriment/protein = 4,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
)
tastes = list("taco meat" = 1, "batter" = 1, "corn" = 1, "cheese" = 1)
foodtypes = MEAT | GRAIN | FRIED | VEGETABLES | DAIRY
@@ -1142,7 +1142,7 @@
icon_state = "frickles"
food_reagents = list(
/datum/reagent/consumable/nutriment = 6,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
/datum/reagent/consumable/capsaicin = 1,
)
tastes = list("frickles" = 1)
diff --git a/code/game/objects/items/food/meatdish.dm b/code/game/objects/items/food/meatdish.dm
index c120b675571..48902153361 100644
--- a/code/game/objects/items/food/meatdish.dm
+++ b/code/game/objects/items/food/meatdish.dm
@@ -18,6 +18,7 @@
tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1)
foodtypes = SEAFOOD | FRIED
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/fishmeat
name = "fish fillet"
@@ -112,6 +113,7 @@
foodtypes = SEAFOOD | FRIED
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/fishandchips
name = "fish and chips"
@@ -126,6 +128,7 @@
tastes = list("fish" = 1, "chips" = 1)
foodtypes = SEAFOOD | VEGETABLES | FRIED
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/fishfry
name = "fish fry"
@@ -139,6 +142,7 @@
tastes = list("fish" = 1, "pan seared vegtables" = 1)
foodtypes = SEAFOOD | VEGETABLES | FRIED
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/vegetariansushiroll
name = "vegetarian sushi roll"
@@ -151,6 +155,7 @@
tastes = list("boiled rice" = 4, "carrots" = 2, "potato" = 2)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/vegetariansushiroll/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/vegetariansushislice, 4, screentip_verb = "Chop")
@@ -166,6 +171,7 @@
tastes = list("boiled rice" = 4, "carrots" = 2, "potato" = 2)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/spicyfiletsushiroll
name = "spicy filet sushi roll"
@@ -180,6 +186,7 @@
tastes = list("boiled rice" = 4, "fish" = 2, "spicyness" = 2)
foodtypes = VEGETABLES | SEAFOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/spicyfiletsushiroll/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/spicyfiletsushislice, 4, screentip_verb = "Chop")
@@ -197,6 +204,7 @@
tastes = list("boiled rice" = 4, "fish" = 2, "spicyness" = 2)
foodtypes = VEGETABLES | SEAFOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
// empty sushi for custom sushi
/obj/item/food/sushi/empty
@@ -205,6 +213,7 @@
tastes = list()
icon_state = "vegetariansushiroll"
desc = "A roll of customized sushi."
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/sushi/empty/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/sushislice/empty, 4, screentip_verb = "Chop")
@@ -215,6 +224,7 @@
tastes = list()
icon_state = "vegetariansushislice"
desc = "A slice of customized sushi."
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/nigiri_sushi
name = "nigiri sushi"
@@ -225,6 +235,7 @@
tastes = list("boiled rice" = 4, "fish filet" = 2, "soy sauce" = 2)
foodtypes = SEAFOOD | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/meat_poke
name = "meat poke"
@@ -240,6 +251,7 @@
tastes = list("rice and meat" = 4, "lettuce" = 2, "soy sauce" = 2)
trash_type = /obj/item/reagent_containers/cup/bowl
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/fish_poke
name = "fish poke"
@@ -255,6 +267,7 @@
tastes = list("rice and fish" = 4, "lettuce" = 2, "soy sauce" = 2)
trash_type = /obj/item/reagent_containers/cup/bowl
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
////////////////////////////////////////////MEATS AND ALIKE////////////////////////////////////////////
@@ -268,6 +281,7 @@
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
// sliceable into 4xtempehslices
/obj/item/food/tempeh/make_processable()
@@ -282,6 +296,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment/protein = 2)
tastes = list("earthy" = 3, "nutty" = 2, "bland" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
//add an icon for blends
/obj/item/food/tempehstarter
@@ -292,6 +307,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment/protein = 2)
tastes = list("nutty" = 2, "bland" = 2)
foodtypes = VEGETABLES | GROSS
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/tofu
name = "tofu"
@@ -302,6 +318,7 @@
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/tofu/prison
name = "soggy tofu"
@@ -338,6 +355,7 @@
tastes = list("meat" = 1, "cabbage" = 1)
foodtypes = MEAT | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/bearsteak
name = "Filet migrawr"
@@ -353,6 +371,7 @@
foodtypes = MEAT | ALCOHOL
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/raw_meatball
name = "raw meatball"
@@ -410,6 +429,7 @@
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/meatball/human
name = "strange meatball"
@@ -477,6 +497,7 @@
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
///Exists purely for the crafting recipe (because itll take subtypes)
/obj/item/food/patty/plain
@@ -513,6 +534,7 @@
foodtypes = MEAT | RAW
eatverbs = list("bite", "chew", "nibble", "deep throat", "gobble", "chomp")
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/raw_sausage/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/sausage, rand(60 SECONDS, 75 SECONDS), TRUE)
@@ -533,6 +555,7 @@
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/sausage/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/salami, 6, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -556,6 +579,7 @@
foodtypes = MEAT
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/rawkhinkali
name = "raw khinkali"
@@ -571,6 +595,7 @@
tastes = list("meat" = 1, "onions" = 1, "garlic" = 1)
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/rawkhinkali/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/khinkali, rand(50 SECONDS, 60 SECONDS), TRUE)
@@ -591,6 +616,7 @@
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/meatbun
name = "meat bun"
@@ -605,6 +631,7 @@
foodtypes = GRAIN | MEAT | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/stewedsoymeat
name = "stewed soy meat"
@@ -619,6 +646,7 @@
eatverbs = list("slurp", "sip", "inhale", "drink")
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/boiledspiderleg
name = "boiled spider leg"
@@ -634,6 +662,7 @@
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/spidereggsham
name = "green eggs and ham"
@@ -648,6 +677,7 @@
tastes = list("meat" = 1, "the colour green" = 1)
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/sashimi
name = "carp sashimi"
@@ -664,6 +694,7 @@
w_class = WEIGHT_CLASS_TINY
//total price of this dish is 20 and a small amount more for soy sauce, all of which are available at the orders console
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/sashimi/Initialize(mapload)
. = ..()
@@ -685,6 +716,7 @@
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_TINY
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/nugget/Initialize(mapload)
. = ..()
@@ -705,6 +737,7 @@
tastes = list("meat" = 1, "butter" = 1)
foodtypes = MEAT | DAIRY | GRAIN
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bbqribs
name = "bbq ribs"
@@ -719,6 +752,7 @@
)
tastes = list("meat" = 3, "smokey sauce" = 1)
foodtypes = MEAT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/meatclown
name = "meat clown"
@@ -733,6 +767,7 @@
tastes = list("meat" = 5, "clowns" = 3, "sixteen teslas" = 1)
w_class = WEIGHT_CLASS_SMALL
foodtypes = MEAT | FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/meatclown/Initialize(mapload)
. = ..()
@@ -750,6 +785,7 @@
tastes = list("meat" = 3, "pasta" = 3, "tomato" = 2, "cheese" = 2)
foodtypes = MEAT | DAIRY | GRAIN
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
//////////////////////////////////////////// KEBABS AND OTHER SKEWERS ////////////////////////////////////////////
@@ -761,6 +797,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment/protein = 14)
tastes = list("meat" = 3, "metal" = 1)
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/kebab/human
name = "human-kebab"
@@ -837,6 +874,7 @@
)
tastes = list("tex-mex" = 3, "cumin" = 2)
foodtypes = MEAT | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/fried_chicken
name = "fried chicken"
@@ -848,6 +886,7 @@
foodtypes = MEAT | FRIED
junkiness = 25
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/fried_chicken/Initialize(mapload)
. = ..()
@@ -869,6 +908,7 @@
w_class = WEIGHT_CLASS_SMALL
//basic ingredients, but a lot of them. just covering costs here
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/beef_wellington
name = "beef wellington"
@@ -883,6 +923,7 @@
foodtypes = MEAT | VEGETABLES | GRAIN
w_class = WEIGHT_CLASS_NORMAL
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/beef_wellington/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/beef_wellington_slice, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
@@ -900,6 +941,7 @@
foodtypes = MEAT | VEGETABLES | GRAIN
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/full_english
name = "full english breakfast"
@@ -914,6 +956,7 @@
foodtypes = MEAT | VEGETABLES | GRAIN | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_meatloaf
name = "raw meatloaf"
@@ -928,6 +971,7 @@
tastes = list("raw meat" = 3, "onions" = 1)
foodtypes = MEAT | RAW | VEGETABLES
w_class = WEIGHT_CLASS_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/raw_meatloaf/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/meatloaf, rand(30 SECONDS, 40 SECONDS), TRUE, TRUE)
@@ -946,6 +990,7 @@
foodtypes = MEAT | VEGETABLES
w_class = WEIGHT_CLASS_NORMAL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/meatloaf/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/meatloaf_slice, 4, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
@@ -963,6 +1008,7 @@
tastes = list("juicy meat" = 3, "onions" = 1, "garlic" = 1, "ketchup" = 1)
foodtypes = MEAT | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/sweet_and_sour_meatballs
name = "sweet and sour meatballs"
diff --git a/code/game/objects/items/food/meatslab.dm b/code/game/objects/items/food/meatslab.dm
index 07638067d29..fa249234e1b 100644
--- a/code/game/objects/items/food/meatslab.dm
+++ b/code/game/objects/items/food/meatslab.dm
@@ -11,8 +11,9 @@
icon_state = "meat"
bite_consumption = 3
food_reagents = list(
- /datum/reagent/consumable/nutriment/protein = 6,
- /datum/reagent/consumable/cooking_oil = 2,
+ /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
@@ -77,6 +78,7 @@
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)
@@ -147,6 +149,7 @@
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)
@@ -164,6 +167,7 @@
/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"
@@ -229,7 +233,7 @@
/datum/reagent/consumable/nutriment/protein = 16,
/datum/reagent/medicine/morphine = 5,
/datum/reagent/consumable/nutriment/vitamin = 2,
- /datum/reagent/consumable/cooking_oil = 6,
+ /datum/reagent/consumable/nutriment/fat = 6,
)
tastes = list("meat" = 1, "salmon" = 1)
foodtypes = RAW | MEAT
@@ -286,7 +290,7 @@
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 5,
/datum/reagent/toxin = 5,
- /datum/reagent/consumable/cooking_oil = 3,
+ /datum/reagent/consumable/nutriment/fat = 3,
)
icon_state = "goliathmeat"
tastes = list("meat" = 1)
@@ -300,7 +304,7 @@
/obj/item/food/meat/slab/meatwheat
name = "meatwheat clump"
desc = "This doesn't look like meat, but your standards aren't that 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/cooking_oil = 1)
+ 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)
@@ -312,7 +316,7 @@
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 7,
/datum/reagent/consumable/nutriment/vitamin = 1,
- /datum/reagent/consumable/cooking_oil = 5, //Plenty of fat!
+ /datum/reagent/consumable/nutriment/fat = 5, //Plenty of fat!
)
/obj/item/food/meat/rawbacon
@@ -322,10 +326,11 @@
bite_consumption = 2
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 2,
- /datum/reagent/consumable/cooking_oil = 3,
+ /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)
@@ -337,11 +342,12 @@
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 2,
/datum/reagent/consumable/nutriment/vitamin = 1,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat = 2,
)
tastes = list("bacon" = 1)
foodtypes = MEAT | BREAKFAST
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/meat/slab/gondola
name = "gondola meat"
@@ -349,7 +355,7 @@
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 4,
/datum/reagent/gondola_mutation_toxin = 5,
- /datum/reagent/consumable/cooking_oil = 3,
+ /datum/reagent/consumable/nutriment/fat = 3,
)
tastes = list("meat" = 4, "tranquility" = 1)
foodtypes = RAW | MEAT | GORE
@@ -366,7 +372,7 @@
desc = "A slab of penguin meat."
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 4,
- /datum/reagent/consumable/cooking_oil = 3,
+ /datum/reagent/consumable/nutriment/fat = 3,
)
tastes = list("beef" = 1, "cod fish" = 1)
@@ -384,7 +390,7 @@
bite_consumption = 3
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 3,
- /datum/reagent/consumable/cooking_oil = 3,
+ /datum/reagent/consumable/nutriment/fat = 3,
)
tastes = list("raw crab" = 1)
foodtypes = RAW | MEAT
@@ -399,11 +405,12 @@
food_reagents = list(
/datum/reagent/consumable/nutriment = 2,
/datum/reagent/consumable/nutriment/vitamin = 2,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat = 2,
)
tastes = list("crab" = 1)
foodtypes = SEAFOOD
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/meat/slab/chicken
name = "chicken meat"
@@ -411,6 +418,7 @@
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")
@@ -428,10 +436,25 @@
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
@@ -439,12 +462,14 @@
desc = "A piece of hot spicy meat."
icon_state = "meatsteak"
food_reagents = list(
- /datum/reagent/consumable/nutriment/protein = 8,
+ /datum/reagent/consumable/nutriment/protein = 5,
+ /datum/reagent/consumable/nutriment/fat = 2,
/datum/reagent/consumable/nutriment/vitamin = 1,
)
foodtypes = MEAT
tastes = list("meat" = 1)
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/meat/steak/Initialize(mapload)
. = ..()
@@ -660,6 +685,7 @@
tastes = list("meat" = 1)
foodtypes = MEAT
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/meat/cutlet/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/food/mexican.dm b/code/game/objects/items/food/mexican.dm
index a0883129576..e2f2d0a6056 100644
--- a/code/game/objects/items/food/mexican.dm
+++ b/code/game/objects/items/food/mexican.dm
@@ -10,6 +10,7 @@
tastes = list("tortilla" = 1)
foodtypes = GRAIN
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/tortilla/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/hard_taco_shell, rand(15 SECONDS, 30 SECONDS), TRUE, TRUE)
@@ -28,6 +29,7 @@
foodtypes = GRAIN
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cheesyburrito
name = "cheesy burrito"
@@ -43,6 +45,7 @@
foodtypes = GRAIN | DAIRY
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/carneburrito
name = "carne asada burrito"
@@ -58,6 +61,7 @@
foodtypes = GRAIN | MEAT
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/fuegoburrito
name = "fuego plasma burrito"
@@ -74,6 +78,7 @@
foodtypes = GRAIN
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_LEGENDARY
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/nachos
name = "nachos"
@@ -88,6 +93,7 @@
foodtypes = GRAIN | FRIED
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/cheesynachos
name = "cheesy nachos"
@@ -103,6 +109,7 @@
foodtypes = GRAIN | FRIED | DAIRY
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cubannachos
name = "Cuban nachos"
@@ -117,6 +124,7 @@
tastes = list("nachos" = 2, "hot pepper" = 1)
foodtypes = VEGETABLES | FRIED | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/taco
name = "classic taco"
@@ -132,6 +140,7 @@
foodtypes = MEAT | DAIRY | GRAIN | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/taco/plain
name = "plain taco"
@@ -145,6 +154,7 @@
tastes = list("taco" = 4, "meat" = 2, "cheese" = 2)
foodtypes = MEAT | DAIRY | GRAIN
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/taco/fish
name = "fish taco"
@@ -152,6 +162,7 @@
icon_state = "fishtaco"
tastes = list("taco" = 4, "fish" = 2, "cheese" = 2, "cabbage" = 1)
foodtypes = SEAFOOD | DAIRY | GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/enchiladas
name = "enchiladas"
@@ -168,6 +179,7 @@
tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1)
foodtypes = MEAT | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/stuffedlegion
name = "stuffed legion"
@@ -183,6 +195,7 @@
foodtypes = MEAT
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_LEGENDARY
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/chipsandsalsa
name = "chips and salsa"
@@ -197,6 +210,7 @@
tastes = list("peppers" = 1, "salsa" = 3, "tortilla chips" = 1, "onion" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/classic_chimichanga
name = "classic chimichanga"
@@ -211,6 +225,7 @@
tastes = list("deep-fried tortilla" = 1, "meat" = 3, "cheese" = 1, "onions" = 1)
foodtypes = MEAT | GRAIN | VEGETABLES | DAIRY | FRIED
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/vegetarian_chimichanga
name = "vegetarian chimichanga"
@@ -224,6 +239,7 @@
tastes = list("deep-fried tortilla" = 1, "cabbage" = 3, "onions" = 1, "peppers" = 1)
foodtypes = GRAIN | VEGETABLES | FRIED
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/hard_taco_shell
name = "hard taco shell"
@@ -235,6 +251,7 @@
foodtypes = GRAIN | FRIED
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/hard_taco_shell/Initialize(mapload)
. = ..()
@@ -247,6 +264,7 @@
tastes = list()
icon_state = "hard_taco_shell"
desc = "A customized hard-shell taco."
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/classic_hard_shell_taco
name = "classic hard-shell taco"
@@ -261,6 +279,7 @@
tastes = list("crunchy taco shell" = 1, "cabbage" = 3, "tomatoes" = 1, "ground meat" = 1, "cheese" = 1)
foodtypes = GRAIN | VEGETABLES | MEAT | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/plain_hard_shell_taco
name = "plain hard-shell taco"
@@ -275,6 +294,7 @@
tastes = list("crunchy taco shell" = 1, "ground meat" = 1)
foodtypes = GRAIN | MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/refried_beans
name = "refried beans"
@@ -289,6 +309,7 @@
tastes = list("mashed beans" = 1, "onion" = 3,)
foodtypes = VEGETABLES | FRIED
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/spanish_rice
name = "spanish rice"
@@ -302,6 +323,7 @@
tastes = list("zesty rice" = 1, "tomato sauce" = 3,)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pineapple_salsa
name = "pineapple salsa"
diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm
index 04d05e230eb..01f2c13a2b2 100644
--- a/code/game/objects/items/food/misc.dm
+++ b/code/game/objects/items/food/misc.dm
@@ -12,7 +12,7 @@
tastes = list("watermelon" = 1)
foodtypes = FRUIT
food_flags = FOOD_FINGER_FOOD
- juice_results = list(/datum/reagent/consumable/watermelonjuice = 5)
+ juice_typepath = /datum/reagent/consumable/watermelonjuice
w_class = WEIGHT_CLASS_SMALL
/obj/item/food/hugemushroomslice
@@ -54,6 +54,7 @@
)
tastes = list("salt" = 2, "popcorn" = 1)
trash_type = /obj/item/trash/popcorn/salty
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/popcorn/caramel
name = "caramel popcorn"
@@ -65,7 +66,8 @@
)
tastes = list("caramel" = 2, "popcorn" = 1)
foodtypes = JUNKFOOD | SUGAR
- trash_type = /obj/item/trash/popcorn/caramel
+ trash_type = /obj/item/trash/popcorn/
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/soydope
name = "soy dope"
@@ -78,6 +80,7 @@
tastes = list("soy" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/badrecipe
name = "burned mess"
@@ -134,13 +137,14 @@
w_class = WEIGHT_CLASS_TINY
/obj/item/food/spidereggs/processed
- name = "spider eggs"
+ name = "processed spider eggs"
desc = "A cluster of juicy spider eggs. Pops in your mouth without making you sick."
icon_state = "spidereggs"
food_reagents = list(/datum/reagent/consumable/nutriment/protein = 4)
tastes = list("cobwebs" = 1)
foodtypes = MEAT | BUGS
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/spiderling
name = "spiderling"
@@ -167,6 +171,7 @@
tastes = list("melon" = 1)
foodtypes = FRUIT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/melonkeg
name = "melon keg"
@@ -181,6 +186,7 @@
bite_consumption = 5
tastes = list("grain alcohol" = 1, "fruit" = 1)
foodtypes = FRUIT | ALCOHOL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/honeybar
name = "honey nut bar"
@@ -194,6 +200,7 @@
foodtypes = GRAIN | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/powercrepe
name = "Powercrepe"
@@ -216,6 +223,7 @@
w_class = WEIGHT_CLASS_BULKY
tastes = list("cherry" = 1, "crepe" = 1)
foodtypes = GRAIN | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/branrequests
name = "Bran Requests Cereal"
@@ -229,12 +237,13 @@
tastes = list("bran" = 4, "raisins" = 3, "salt" = 1)
foodtypes = GRAIN | FRUIT | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/butter
name = "stick of butter"
desc = "A stick of delicious, golden, fatty goodness."
icon_state = "butter"
- food_reagents = list(/datum/reagent/consumable/nutriment = 15)
+ food_reagents = list(/datum/reagent/consumable/nutriment/fat = 6)
tastes = list("butter" = 1)
foodtypes = DAIRY
w_class = WEIGHT_CLASS_SMALL
@@ -288,12 +297,13 @@
tastes = list("batter" = 3, "onion" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/pineappleslice
name = "pineapple slice"
desc = "A sliced piece of juicy pineapple."
icon_state = "pineapple_slice"
- juice_results = list(/datum/reagent/consumable/pineapplejuice = 3)
+ juice_typepath = /datum/reagent/consumable/pineapplejuice
tastes = list("pineapple" = 1)
foodtypes = FRUIT | PINEAPPLE
w_class = WEIGHT_CLASS_TINY
@@ -312,6 +322,7 @@
tastes = list("cream cheese" = 4, "crab" = 3, "crispiness" = 2)
foodtypes = MEAT | DAIRY | GRAIN
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pesto
name = "pesto"
@@ -321,6 +332,7 @@
tastes = list("pesto" = 1)
foodtypes = VEGETABLES | DAIRY | NUTS
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/tomato_sauce
name = "tomato sauce"
@@ -330,6 +342,7 @@
tastes = list("tomato" = 1, "herbs" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/bechamel_sauce
name = "béchamel sauce"
@@ -339,6 +352,7 @@
tastes = list("cream" = 1)
foodtypes = DAIRY | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/roasted_bell_pepper
name = "roasted bell pepper"
@@ -352,6 +366,7 @@
tastes = list("bell pepper" = 1, "char" = 1)
foodtypes = VEGETABLES
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/pierogi
name = "pierogi"
@@ -364,6 +379,7 @@
tastes = list("potato" = 1, "onions" = 1)
foodtypes = GRAIN | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/stuffed_cabbage
name = "stuffed cabbage"
@@ -376,6 +392,7 @@
tastes = list("juicy meat" = 1, "rice" = 1, "cabbage" = 1)
foodtypes = MEAT | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/seaweedsheet
name = "seaweed sheet"
@@ -406,6 +423,7 @@
tastes = list("granola" = 1, "nuts" = 1, "chocolate" = 1, "raisin" = 1)
foodtypes = GRAIN | NUTS | FRUIT | SUGAR | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/onigiri
name = "onigiri"
@@ -419,6 +437,7 @@
tastes = list("rice" = 1, "dried seaweed" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/onigiri/Initialize(mapload)
. = ..()
@@ -445,6 +464,7 @@
tastes = list("peanuts" = 1, "sweetness" = 1)
foodtypes = NUTS | SUGAR
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/pickle
name = "pickle"
@@ -458,7 +478,7 @@
/datum/reagent/medicine/antihol = 2,
)
tastes = list("pickle" = 1, "spices" = 1, "salt water" = 2)
- juice_results = list(/datum/reagent/consumable/pickle = 5)
+ juice_typepath = /datum/reagent/consumable/pickle
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
@@ -484,6 +504,7 @@
tastes = list("rice wrappers" = 1, "spice" = 1, "crunchy veggies" = 1)
foodtypes = GRAIN | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cheese_pierogi
name = "cheese pierogi"
@@ -496,6 +517,7 @@
tastes = list("potato" = 1, "cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/meat_pierogi
name = "meat pierogi"
@@ -509,6 +531,7 @@
tastes = list("potato" = 1, "cheese" = 1)
foodtypes = GRAIN | VEGETABLES | MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/stuffed_eggplant
name = "stuffed eggplant"
diff --git a/code/game/objects/items/food/moth.dm b/code/game/objects/items/food/moth.dm
index 7644c488b20..ff10e8da511 100644
--- a/code/game/objects/items/food/moth.dm
+++ b/code/game/objects/items/food/moth.dm
@@ -13,6 +13,7 @@
tastes = list("cheese" = 1, "herbs" = 1)
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/grilled_cheese
name = "grilled cheese"
@@ -28,6 +29,7 @@
foodtypes = DAIRY
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/mothic_salad
name = "mothic salad"
@@ -38,6 +40,7 @@
tastes = list("salad" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/toasted_seeds
name = "toasted seeds"
@@ -49,6 +52,7 @@
tastes = list("seeds" = 1)
foodtypes = GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/engine_fodder
name = "engine fodder"
@@ -65,6 +69,7 @@
tastes = list("seeds" = 1, "nuts" = 1, "chocolate" = 1, "salt" = 1, "popcorn" = 1, "potato" = 1)
foodtypes = GRAIN | NUTS | VEGETABLES | SUGAR
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/mothic_pizza_dough
name = "mothic pizza dough"
@@ -75,6 +80,7 @@
tastes = list("raw flour" = 1)
foodtypes = GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
//Entrees: categorising food that is 90% cheese and salad is not easy
/obj/item/food/squeaking_stir_fry
@@ -90,6 +96,7 @@
tastes = list("cheese" = 1, "tofu" = 1, "veggies" = 1)
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/sweet_chili_cabbage_wrap
name = "sweet chili cabbage wrap"
@@ -104,6 +111,7 @@
tastes = list("cheese" = 1, "salad" = 1, "sweet chili" = 1)
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/loaded_curds
name = "ozlsettitæloskekllön ede pommes" //ozlsettit = overflowing (ozl = over, sett = flow, it = ing), ælo = cheese, skekllön = curds (skeklit = squeaking, llön = pieces/bits), ede = and, pommes = fries (hey, France!)
@@ -120,6 +128,7 @@
tastes = list("cheese" = 1, "oil" = 1, "chili" = 1, "fries" = 1)
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/baked_cheese
name = "baked cheese wheel"
@@ -135,6 +144,7 @@
foodtypes = DAIRY
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/baked_cheese_platter
name = "stanntkraktælo" //stannt = oven, krakt = baked, ælo = cheese
@@ -150,6 +160,7 @@
tastes = list("cheese" = 1, "bread" = 1)
foodtypes = DAIRY | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
//Baked Green Lasagna at the Whistlestop Cafe
/obj/item/food/raw_green_lasagne
@@ -164,6 +175,7 @@
tastes = list("cheese" = 1, "pesto" = 1, "pasta" = 1)
foodtypes = VEGETABLES | GRAIN | NUTS | RAW
w_class = WEIGHT_CLASS_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_green_lasagne/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/green_lasagne, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -181,6 +193,7 @@
foodtypes = VEGETABLES | GRAIN | NUTS
w_class = WEIGHT_CLASS_NORMAL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/green_lasagne/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/green_lasagne_slice, 6, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -197,6 +210,7 @@
tastes = list("cheese" = 1, "pesto" = 1, "pasta" = 1)
foodtypes = VEGETABLES | GRAIN | NUTS
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_baked_rice
name = "big rice pan"
@@ -210,6 +224,7 @@
tastes = list("rice" = 1, "potato" = 1, "veggies" = 1)
foodtypes = VEGETABLES | GRAIN | RAW
w_class = WEIGHT_CLASS_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_baked_rice/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/big_baked_rice, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -228,6 +243,7 @@
foodtypes = VEGETABLES | GRAIN
w_class = WEIGHT_CLASS_NORMAL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/big_baked_rice/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/lil_baked_rice, 6, 3 SECONDS, table_required = TRUE, screentip_verb = "Cut")
@@ -244,6 +260,7 @@
tastes = list("rice" = 1, "potato" = 1, "veggies" = 1)
foodtypes = VEGETABLES | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/oven_baked_corn
name = "oven-baked corn"
@@ -259,6 +276,7 @@
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/buttered_baked_corn
name = "buttered baked corn"
@@ -273,6 +291,7 @@
tastes = list("corn" = 1, "char" = 1)
foodtypes = VEGETABLES | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/fiesta_corn_skillet
name = "fiesta corn skillet"
@@ -287,6 +306,7 @@
tastes = list("corn" = 1, "chili" = 1, "char" = 1)
foodtypes = VEGETABLES | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/raw_ratatouille
name = "raw ratatouille" //rawtatouille?
@@ -301,6 +321,7 @@
tastes = list("veggies" = 1, "roasted peppers" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/raw_ratatouille/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/ratatouille, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -319,6 +340,7 @@
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/mozzarella_sticks
name = "mozzarella sticks"
@@ -332,6 +354,7 @@
tastes = list("creamy cheese" = 1, "breading" = 1, "oil" = 1)
foodtypes = DAIRY | GRAIN | FRIED
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/raw_stuffed_peppers
name = "raw voltölpaprik" //voltöl = stuffed (vol = full, töl = push), paprik (from German paprika) = bell pepper
@@ -345,6 +368,7 @@
tastes = list("creamy cheese" = 1, "herbs" = 1, "onion" = 1, "bell pepper" = 1)
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/raw_stuffed_peppers/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/stuffed_peppers, rand(10 SECONDS, 20 SECONDS), TRUE, TRUE)
@@ -362,6 +386,7 @@
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/fueljacks_lunch
name = "\improper Fueljack's lunch"
@@ -377,6 +402,7 @@
tastes = list("cabbage" = 1, "potato" = 1, "onion" = 1, "chili" = 1, "cheese" = 1)
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/mac_balls
name = "macheronirölen"
@@ -391,6 +417,7 @@
tastes = list("pasta" = 1, "cornbread" = 1, "cheese" = 1)
foodtypes = DAIRY | VEGETABLES | FRIED | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/sustenance_bar
name = "surplus fleet PSB"
@@ -448,6 +475,7 @@
tastes = list("bacon" = 1, "eggs" = 1)
foodtypes = MEAT | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/bowled/fried_eggplant_polenta
name = "fried eggplant and polenta"
@@ -462,6 +490,7 @@
tastes = list("cornmeal" = 1, "cheese" = 1, "eggplant" = 1, "tomato sauce" = 1)
foodtypes = DAIRY | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_5
//Salads: the bread and butter of mothic cuisine
/obj/item/food/caprese_salad
@@ -478,6 +507,7 @@
tastes = list("mozzarella" = 1, "tomato" = 1, "balsamic" = 1)
foodtypes = DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/fleet_salad
name = "lörtonknusksolt" //lörton = fleet, knusksolt = salad (knusk = crisp, solt = bowl)
@@ -492,6 +522,7 @@
tastes = list("cheese" = 1, "salad" = 1, "bread" = 1)
foodtypes = DAIRY | VEGETABLES | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/salad/cotton_salad
name = "flöfrölenknusksolt"
@@ -505,6 +536,7 @@
tastes = list("cheese" = 1, "salad" = 1, "bread" = 1)
foodtypes = VEGETABLES | CLOTH
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/salad/moth_kachumbari
name = "\improper Kæniatknusksolt" //Kæniat = Kenyan, knusksolt = salad
@@ -519,6 +551,7 @@
tastes = list("onion" = 1, "tomato" = 1, "corn" = 1, "chili" = 1, "cilantro" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
//Pizza
/obj/item/food/raw_mothic_margherita
@@ -535,6 +568,7 @@
)
tastes = list("dough" = 1, "tomato" = 1, "cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY | RAW
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_margherita/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizza/mothic_margherita, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -554,6 +588,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY
slice_type = /obj/item/food/pizzaslice/mothic_margherita
boxtag = "Margherita alla Moffuchi"
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/pizzaslice/mothic_margherita
name = "mothic margherita slice"
@@ -562,6 +597,7 @@
icon_state = "margherita_slice"
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_firecracker
name = "raw mothic firecracker pizza"
@@ -577,6 +613,7 @@
)
tastes = list("dough" = 1, "chili" = 1, "corn" = 1, "cheese" = 1, "bbq sauce" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY | RAW
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_firecracker/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizza/mothic_firecracker, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -597,6 +634,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY
slice_type = /obj/item/food/pizzaslice/mothic_firecracker
boxtag = "Vesuvian Firecracker"
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/pizzaslice/mothic_firecracker
name = "mothic firecracker slice"
@@ -605,6 +643,7 @@
icon_state = "firecracker_slice"
tastes = list("crust" = 1, "chili" = 1, "corn" = 1, "cheese" = 1, "bbq sauce" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_five_cheese
name = "raw mothic five-cheese pizza"
@@ -619,6 +658,7 @@
)
tastes = list("dough" = 1, "cheese" = 1, "more cheese" = 1, "excessive amounts of cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY | RAW
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_five_cheese/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizza/mothic_five_cheese, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -638,6 +678,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY
slice_type = /obj/item/food/pizzaslice/mothic_five_cheese
boxtag = "Cheeseplosion"
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/pizzaslice/mothic_five_cheese
name = "mothic five-cheese slice"
@@ -646,6 +687,7 @@
icon_state = "five_cheese_slice"
tastes = list("crust" = 1, "cheese" = 1, "more cheese" = 1, "excessive amounts of cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_white_pie
name = "raw mothic white-pie pizza"
@@ -660,6 +702,7 @@
)
tastes = list("dough" = 1, "cheese" = 1, "herbs" = 1, "garlic" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY | RAW
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_white_pie/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizza/mothic_white_pie, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -679,6 +722,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY
slice_type = /obj/item/food/pizzaslice/mothic_white_pie
boxtag = "Pane Bianco"
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/pizzaslice/mothic_white_pie
name = "mothic white-pie slice"
@@ -687,6 +731,7 @@
icon_state = "white_pie_slice"
tastes = list("crust" = 1, "cheese" = 1, "more cheese" = 1, "excessive amounts of cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_pesto
name = "raw mothic pesto pizza"
@@ -701,6 +746,7 @@
)
tastes = list("dough" = 1, "pesto" = 1, "cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY | NUTS | RAW
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_pesto/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizza/mothic_pesto, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -720,6 +766,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY | NUTS | RAW
slice_type = /obj/item/food/pizzaslice/mothic_pesto
boxtag = "Presto Pesto"
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/pizzaslice/mothic_pesto
name = "mothic pesto slice"
@@ -728,6 +775,7 @@
icon_state = "pesto_slice"
tastes = list("crust" = 1, "pesto" = 1, "cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_mothic_garlic
name = "raw mothic garlic pizzabread"
@@ -742,6 +790,7 @@
)
tastes = list("dough" = 1, "garlic" = 1, "butter" = 1)
foodtypes = GRAIN | VEGETABLES | RAW
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/raw_mothic_garlic/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizza/mothic_garlic, rand(15 SECONDS, 25 SECONDS), TRUE, TRUE)
@@ -761,6 +810,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY | NUTS
slice_type = /obj/item/food/pizzaslice/mothic_garlic
boxtag = "Garlic Bread alla Moffuchi"
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pizzaslice/mothic_garlic
name = "mothic garlic pizzabread slice"
@@ -769,6 +819,7 @@
icon_state = "garlic_slice"
tastes = list("dough" = 1, "garlic" = 1, "butter" = 1)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_4
//Bread
/obj/item/food/bread/corn
@@ -782,6 +833,7 @@
w_class = WEIGHT_CLASS_SMALL
slice_type = /obj/item/food/breadslice/corn
yield = 6
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/breadslice/corn
name = "cornbread slice"
@@ -790,6 +842,7 @@
icon_state = "cornbread_slice"
foodtypes = GRAIN
food_reagents = list(/datum/reagent/consumable/nutriment = 3)
+ crafting_complexity = FOOD_COMPLEXITY_2
//Sweets
/obj/item/food/moth_cheese_cakes
@@ -804,6 +857,7 @@
tastes = list("cheesecake" = 1, "chocolate" = 1, "honey" = 1)
foodtypes = SUGAR | FRIED | DAIRY | GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/cake/mothmallow
name = "mothmallow tray"
@@ -818,6 +872,7 @@
foodtypes = VEGETABLES | SUGAR
slice_type = /obj/item/food/cakeslice/mothmallow
yield = 6
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cakeslice/mothmallow
name = "mothmallow"
@@ -830,6 +885,7 @@
)
tastes = list("vanilla" = 1, "clouds" = 1, "chocolate" = 1)
foodtypes = VEGETABLES | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_2
//misc food
/obj/item/food/bubblegum/wake_up
diff --git a/code/game/objects/items/food/packaged.dm b/code/game/objects/items/food/packaged.dm
index 4935f9bdd55..bf1a56e4b25 100644
--- a/code/game/objects/items/food/packaged.dm
+++ b/code/game/objects/items/food/packaged.dm
@@ -46,6 +46,7 @@
)
tastes = list("beans" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/canned/peaches
name = "canned peaches"
@@ -101,6 +102,7 @@
)
tastes = list("dog food" = 5, "狗肉" = 3)
foodtypes = MEAT | GROSS
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/canned/envirochow/attack_animal(mob/living/simple_animal/user, list/modifiers)
if(!check_buffability(user))
diff --git a/code/game/objects/items/food/pancakes.dm b/code/game/objects/items/food/pancakes.dm
index cb505c5b62a..c1428c5fb9c 100644
--- a/code/game/objects/items/food/pancakes.dm
+++ b/code/game/objects/items/food/pancakes.dm
@@ -13,6 +13,7 @@
venue_value = FOOD_PRICE_CHEAP
///Used as a base name while generating the icon states when stacked
var/stack_name = "pancakes"
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pancakes/raw
name = "goopy pancake"
@@ -22,6 +23,7 @@
tastes = list("milky batter" = 1)
burns_on_grill = FALSE
stack_name = "rawpancakes"
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/pancakes/raw/make_grillable()
AddComponent(/datum/component/grillable,\
@@ -64,6 +66,7 @@
)
tastes = list("pancakes" = 1, "blueberries" = 1)
stack_name = "bbpancakes"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pancakes/chocolatechip
name = "chocolate chip pancake"
@@ -75,6 +78,7 @@
)
tastes = list("pancakes" = 1, "chocolate" = 1)
stack_name = "ccpancakes"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pancakes/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/food/pastries.dm b/code/game/objects/items/food/pastries.dm
index 74d71377144..21930def909 100644
--- a/code/game/objects/items/food/pastries.dm
+++ b/code/game/objects/items/food/pastries.dm
@@ -14,6 +14,7 @@
foodtypes = GRAIN | SUGAR | BREAKFAST
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/muffin/berry
name = "berry muffin"
@@ -22,6 +23,7 @@
tastes = list("muffin" = 3, "berry" = 1)
foodtypes = GRAIN | FRUIT | SUGAR | BREAKFAST
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/muffin/booberry
name = "booberry muffin"
@@ -30,6 +32,7 @@
desc = "My stomach is a graveyard! No living being can quench my bloodthirst!"
tastes = list("muffin" = 3, "spookiness" = 1)
foodtypes = GRAIN | FRUIT | SUGAR | BREAKFAST
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/muffin/moffin
name = "moffin"
@@ -38,6 +41,7 @@
desc = "A delicious and spongy little cake."
tastes = list("muffin" = 3, "dust" = 1, "lint" = 1)
foodtypes = CLOTH | GRAIN | SUGAR | BREAKFAST
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/muffin/moffin/Initialize(mapload)
. = ..()
@@ -67,6 +71,7 @@
tastes = list("waffles" = 1)
foodtypes = GRAIN | SUGAR | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/soylentgreen
name = "\improper Soylent Green"
@@ -81,6 +86,7 @@
tastes = list("waffles" = 7, "people" = 1)
foodtypes = GRAIN | MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/soylenviridians
name = "\improper Soylent Virdians"
@@ -95,6 +101,7 @@
tastes = list("waffles" = 7, "the colour green" = 1)
foodtypes = GRAIN
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/rofflewaffles
name = "roffle waffles"
@@ -110,6 +117,7 @@
tastes = list("waffles" = 1, "mushrooms" = 1)
foodtypes = GRAIN | VEGETABLES | SUGAR | BREAKFAST
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
////////////////////////////////////////////OTHER////////////////////////////////////////////
@@ -123,6 +131,7 @@
foodtypes = GRAIN | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cookie/Initialize(mapload)
. = ..()
@@ -141,6 +150,7 @@
foodtypes = GRAIN | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/fortunecookie/proc/get_fortune()
var/atom/drop_location = drop_location()
@@ -170,6 +180,7 @@
)
tastes = list("sweetness" = 1)
foodtypes = GRAIN | JUNKFOOD | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cookie/sugar/Initialize(mapload)
. = ..()
@@ -189,6 +200,7 @@
tastes = list("biscuit" = 3, "chocolate" = 1)
foodtypes = GRAIN | JUNKFOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cookie/oatmeal
name = "oatmeal cookie"
@@ -200,6 +212,7 @@
)
tastes = list("cookie" = 2, "oat" = 1)
foodtypes = GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cookie/raisin
name = "raisin cookie"
@@ -211,6 +224,7 @@
)
tastes = list("cookie" = 1, "raisins" = 1)
foodtypes = GRAIN | FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/poppypretzel
name = "poppy pretzel"
@@ -224,6 +238,7 @@
foodtypes = GRAIN | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/plumphelmetbiscuit
name = "plump helmet biscuit"
@@ -237,6 +252,7 @@
foodtypes = GRAIN | VEGETABLES
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/plumphelmetbiscuit/Initialize(mapload)
var/fey = prob(10)
@@ -262,6 +278,7 @@
foodtypes = GRAIN
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/khachapuri
name = "khachapuri"
@@ -275,6 +292,7 @@
tastes = list("bread" = 1, "egg" = 1, "cheese" = 1)
foodtypes = GRAIN | MEAT | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cherrycupcake
name = "cherry cupcake"
@@ -288,12 +306,14 @@
foodtypes = GRAIN | FRUIT | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cherrycupcake/blue
name = "blue cherry cupcake"
desc = "Blue cherries inside a delicious cupcake."
icon_state = "bluecherrycupcake"
tastes = list("cake" = 3, "blue cherry" = 1)
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/honeybun
name = "honey bun"
@@ -306,6 +326,7 @@
tastes = list("pastry" = 1, "sweetness" = 1)
foodtypes = GRAIN | SUGAR
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cannoli
name = "cannoli"
@@ -319,6 +340,7 @@
foodtypes = GRAIN | DAIRY | SUGAR
w_class = WEIGHT_CLASS_TINY
venue_value = FOOD_PRICE_CHEAP // Pastry base, 3u of sugar and a single. fucking. unit. of. milk. really?
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/icecream
name = "waffle cone"
@@ -330,6 +352,7 @@
bite_consumption = 4
foodtypes = DAIRY | SUGAR
food_flags = FOOD_FINGER_FOOD
+ crafting_complexity = FOOD_COMPLEXITY_3
max_volume = 10 //The max volumes scales up with the number of scoops of ice cream served.
/// These two variables are used by the ice cream vat. Latter is the one that shows on the UI.
var/list/ingredients = list(
@@ -366,6 +389,7 @@
/datum/reagent/consumable/sugar,
/datum/reagent/consumable/coco,
)
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/icecream/korta
name = "korta cone"
@@ -386,6 +410,7 @@
)
tastes = list("peanut butter" = 2, "cookie" = 1)
foodtypes = GRAIN | JUNKFOOD | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/raw_brownie_batter
name = "raw brownie batter"
@@ -398,6 +423,7 @@
)
tastes = list("raw brownie batter" = 1)
foodtypes = GRAIN | JUNKFOOD | SUGAR | BREAKFAST
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/raw_brownie_batter/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/brownie_sheet, rand(20 SECONDS, 30 SECONDS), TRUE, TRUE)
@@ -415,6 +441,7 @@
foodtypes = GRAIN | JUNKFOOD | SUGAR
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/brownie_sheet/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/brownie, 4, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -431,6 +458,7 @@
tastes = list("brownie" = 1, "chocolatey goodness" = 1)
foodtypes = GRAIN | JUNKFOOD | SUGAR
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/peanut_butter_brownie_batter
name = "raw peanut butter brownie batter"
@@ -444,6 +472,7 @@
)
tastes = list("raw brownie batter" = 1)
foodtypes = GRAIN | JUNKFOOD | SUGAR | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/peanut_butter_brownie_batter/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/peanut_butter_brownie_sheet, rand(20 SECONDS, 30 SECONDS), TRUE, TRUE)
@@ -462,6 +491,7 @@
foodtypes = GRAIN | JUNKFOOD | SUGAR | NUTS
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/peanut_butter_brownie_sheet/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/peanut_butter_brownie, 4, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -479,6 +509,7 @@
tastes = list("brownie" = 1, "chocolatey goodness" = 1)
foodtypes = GRAIN | JUNKFOOD | SUGAR
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/crunchy_peanut_butter_tart
name = "crunchy peanut butter tart"
@@ -493,6 +524,7 @@
tastes = list("peanut butter" = 1, "peanuts" = 1, "cream" = 1)
foodtypes = GRAIN | JUNKFOOD | SUGAR | NUTS
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/cookie/chocolate_chip_cookie
name = "chocolate chip cookie"
diff --git a/code/game/objects/items/food/pie.dm b/code/game/objects/items/food/pie.dm
index 73688742bc5..10d24c2f782 100644
--- a/code/game/objects/items/food/pie.dm
+++ b/code/game/objects/items/food/pie.dm
@@ -8,6 +8,7 @@
tastes = list("pie" = 1)
foodtypes = GRAIN
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/// type is spawned 5 at a time and replaces this pie when processed by cutting tool
var/obj/item/food/pieslice/slice_type
/// so that the yield can change if it isnt 5
@@ -24,6 +25,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 2)
tastes = list("pie" = 1, "uncertainty" = 1)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pie/plain
name = "plain pie"
@@ -36,6 +38,7 @@
tastes = list("pie" = 1)
foodtypes = GRAIN
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pie/cream
name = "banana cream pie"
@@ -49,6 +52,7 @@
tastes = list("pie" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
var/stunning = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/cream/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
. = ..()
@@ -92,6 +96,7 @@
tastes = list("pie" = 1, "blackberries" = 1)
foodtypes = GRAIN | FRUIT | SUGAR
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/bearypie
name = "beary pie"
@@ -104,6 +109,7 @@
)
tastes = list("pie" = 1, "meat" = 1, "salmon" = 1)
foodtypes = GRAIN | SUGAR | MEAT | FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pie/meatpie
name = "meat-pie"
@@ -117,6 +123,7 @@
tastes = list("pie" = 1, "meat" = 1)
foodtypes = GRAIN | MEAT
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/tofupie
name = "tofu-pie"
@@ -129,6 +136,7 @@
)
tastes = list("pie" = 1, "tofu" = 1)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/amanita_pie
name = "amanita pie"
@@ -143,6 +151,7 @@
)
tastes = list("pie" = 1, "mushroom" = 1)
foodtypes = GRAIN | VEGETABLES | TOXIC | GROSS
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/plump_pie
name = "plump pie"
@@ -154,6 +163,7 @@
)
tastes = list("pie" = 1, "mushroom" = 1)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/plump_pie/Initialize(mapload)
var/fey = prob(10)
@@ -200,6 +210,7 @@
)
tastes = list("pie" = 7, "Nicole Paige Brooks" = 2)
foodtypes = GRAIN | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/pumpkinpie
name = "pumpkin pie"
@@ -212,6 +223,7 @@
tastes = list("pie" = 1, "pumpkin" = 1)
foodtypes = GRAIN | VEGETABLES | SUGAR
slice_type = /obj/item/food/pieslice/pumpkin
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pieslice/pumpkin
name = "pumpkin pie slice"
@@ -219,6 +231,7 @@
icon_state = "pumpkinpieslice"
tastes = list("pie" = 1, "pumpkin" = 1)
foodtypes = GRAIN | VEGETABLES | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/appletart
name = "golden apple streusel tart"
@@ -231,6 +244,7 @@
)
tastes = list("pie" = 1, "apple" = 1, "expensive metal" = 1)
foodtypes = GRAIN | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pie/grapetart
name = "grape tart"
@@ -242,6 +256,7 @@
)
tastes = list("pie" = 1, "grape" = 1)
foodtypes = GRAIN | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pie/mimetart
name = "mime tart"
@@ -288,6 +303,7 @@
tastes = list("pie" = 1, "a mouthful of pool water" = 1)
foodtypes = GRAIN | VEGETABLES
slice_type = /obj/item/food/pieslice/blumpkin
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pieslice/blumpkin
name = "blumpkin pie slice"
@@ -295,6 +311,7 @@
icon_state = "blumpkinpieslice"
tastes = list("pie" = 1, "a mouthful of pool water" = 1)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/dulcedebatata
name = "dulce de batata"
@@ -308,6 +325,7 @@
foodtypes = VEGETABLES | SUGAR
venue_value = FOOD_PRICE_EXOTIC
slice_type = /obj/item/food/pieslice/dulcedebatata
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pieslice/dulcedebatata
name = "dulce de batata slice"
@@ -315,6 +333,7 @@
icon_state = "dulcedebatataslice"
tastes = list("jelly" = 1, "sweet potato" = 1)
foodtypes = VEGETABLES | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/frostypie
name = "frosty pie"
@@ -326,6 +345,7 @@
)
tastes = list("mint" = 1, "pie" = 1)
foodtypes = GRAIN | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/baklava
name = "baklava"
@@ -339,6 +359,7 @@
foodtypes = NUTS | SUGAR
slice_type = /obj/item/food/pieslice/baklava
yield = 6
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pieslice/baklava
name = "baklava dish"
@@ -358,6 +379,7 @@
tastes = list("pie" = 1, "smooth chocolate" = 1, "whipped cream" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
slice_type = /obj/item/food/pieslice/frenchsilk
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pieslice/frenchsilk
name = "french silk pie slice"
@@ -365,6 +387,7 @@
icon_state = "frenchsilkpieslice"
tastes = list("pie" = 1, "smooth chocolate" = 1, "whipped cream" = 1)
foodtypes = GRAIN | DAIRY | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pie/shepherds_pie
name = "shepherds pie"
@@ -379,6 +402,7 @@
foodtypes = MEAT | DAIRY | VEGETABLES
slice_type = /obj/item/food/pieslice/shepherds_pie
yield = 4
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/pieslice/shepherds_pie
name = "shepherds pie slice"
@@ -391,6 +415,7 @@
)
tastes = list("juicy meat" = 1, "mashed potatoes" = 1, "baked veggies" = 1)
foodtypes = MEAT | DAIRY | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/pie/asdfpie
name = "pie-flavored pie"
@@ -403,3 +428,4 @@
tastes = list("pie" = 1, "the far off year of 2010" = 1)
foodtypes = GRAIN
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm
index d2311e75c68..345971b5a79 100644
--- a/code/game/objects/items/food/pizza.dm
+++ b/code/game/objects/items/food/pizza.dm
@@ -13,6 +13,7 @@
foodtypes = GRAIN | DAIRY | VEGETABLES
venue_value = FOOD_PRICE_CHEAP
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/// type is spawned 6 at a time and replaces this pizza when processed by cutting tool
var/obj/item/food/pizzaslice/slice_type
///What label pizza boxes use if this pizza spawns in them.
@@ -22,6 +23,7 @@
foodtypes = GRAIN | DAIRY | VEGETABLES | RAW
burns_in_oven = FALSE
slice_type = null
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pizza/raw/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizza, rand(70 SECONDS, 80 SECONDS), TRUE, TRUE)
@@ -39,6 +41,7 @@
foodtypes = GRAIN | DAIRY | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
decomp_type = /obj/item/food/pizzaslice/moldy
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pizzaslice/make_processable()
AddElement(/datum/element/processable, TOOL_ROLLINGPIN, /obj/item/stack/sheet/pizza, 1, 1 SECONDS, table_required = TRUE, screentip_verb = "Flatten")
@@ -57,7 +60,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY
slice_type = /obj/item/food/pizzaslice/margherita
boxtag = "Margherita Deluxe"
-
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/margherita/raw
name = "raw pizza margherita"
@@ -84,6 +87,7 @@
icon_state = "pizzamargheritaslice"
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizzaslice/margherita/Initialize(mapload)
. = ..()
@@ -102,6 +106,7 @@
foodtypes = GRAIN | VEGETABLES| DAIRY | MEAT
slice_type = /obj/item/food/pizzaslice/meat
boxtag = "Meatlovers' Supreme"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/meat/raw
name = "raw meatpizza"
@@ -119,6 +124,7 @@
icon_state = "meatpizzaslice"
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/mushroom
name = "mushroom pizza"
@@ -133,6 +139,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY
slice_type = /obj/item/food/pizzaslice/mushroom
boxtag = "Mushroom Special"
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pizza/mushroom/raw
name = "raw mushroom pizza"
@@ -150,6 +157,7 @@
icon_state = "mushroompizzaslice"
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "mushroom" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pizza/vegetable
@@ -173,6 +181,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY | RAW
burns_in_oven = FALSE
slice_type = null
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/vegetable/raw/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/pizza/vegetable, rand(70 SECONDS, 80 SECONDS), TRUE, TRUE)
@@ -183,6 +192,7 @@
icon_state = "vegetablepizzaslice"
tastes = list("crust" = 1, "tomato" = 2, "cheese" = 1, "carrot" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/donkpocket
name = "donkpocket pizza"
@@ -199,6 +209,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD
slice_type = /obj/item/food/pizzaslice/donkpocket
boxtag = "Bangin' Donk"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/donkpocket/raw
name = "raw donkpocket pizza"
@@ -231,6 +242,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY
slice_type = /obj/item/food/pizzaslice/dank
boxtag = "Fresh Herb"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/dank/raw
name = "raw dank pizza"
@@ -263,6 +275,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT
slice_type = /obj/item/food/pizzaslice/sassysage
boxtag = "Sausage Lovers"
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/sassysage/raw
name = "raw sassysage pizza"
@@ -280,6 +293,7 @@
icon_state = "sassysagepizzaslice"
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/pizza/pineapple
name = "\improper Hawaiian pizza"
@@ -296,6 +310,7 @@
foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT | FRUIT | PINEAPPLE
slice_type = /obj/item/food/pizzaslice/pineapple
boxtag = "Honolulu Chew"
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pizza/pineapple/raw
name = "raw Hawaiian pizza"
@@ -356,6 +371,7 @@
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2, "9 millimeter bullets" = 2)
slice_type = /obj/item/food/pizzaslice/arnold
boxtag = "9mm Pepperoni"
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pizza/arnold/raw
name = "raw Arnold pizza"
@@ -404,6 +420,7 @@
icon_state = "arnoldpizzaslice"
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2, "9 millimeter bullets" = 2)
foodtypes = GRAIN | VEGETABLES | DAIRY | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/pizzaslice/arnold/attack(mob/living/target, mob/living/user)
. =..()
@@ -438,6 +455,7 @@
slice_type = /obj/item/food/pizzaslice/energy
foodtypes = TOXIC
boxtag = "24 Hour Energy"
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/pizza/energy/raw
name = "raw energy pizza"
@@ -455,6 +473,7 @@
icon_state ="energypizzaslice"
tastes = list("pure electricity" = 4, "pizza" = 2)
foodtypes = TOXIC
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/raw_meat_calzone
name = "raw meat calzone"
@@ -468,6 +487,7 @@
tastes = list("raw dough" = 1, "raw meat" = 1, "cheese" = 1, "tomato sauce" = 1)
foodtypes = GRAIN | RAW | DAIRY | MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/raw_meat_calzone/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/meat_calzone, rand(20 SECONDS, 40 SECONDS), TRUE, TRUE)
@@ -485,6 +505,7 @@
foodtypes = GRAIN | DAIRY | MEAT
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/raw_vegetarian_calzone
name = "raw vegetarian calzone"
@@ -497,6 +518,7 @@
tastes = list("raw dough" = 1, "vegetables" = 1, "tomato sauce" = 1)
foodtypes = GRAIN | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/raw_vegetarian_calzone/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/vegetarian_calzone, rand(20 SECONDS, 40 SECONDS), TRUE, TRUE)
@@ -513,3 +535,4 @@
foodtypes = GRAIN | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
diff --git a/code/game/objects/items/food/salad.dm b/code/game/objects/items/food/salad.dm
index ebbccd53af1..703db3a12a4 100644
--- a/code/game/objects/items/food/salad.dm
+++ b/code/game/objects/items/food/salad.dm
@@ -10,6 +10,7 @@
foodtypes = VEGETABLES
eatverbs = list("devour", "nibble", "gnaw", "gobble", "chomp") //who the fuck gnaws and devours on a salad
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/salad/aesirsalad
name = "\improper Aesir salad"
@@ -18,6 +19,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 12)
tastes = list("leaves" = 1)
foodtypes = VEGETABLES | FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/herbsalad
name = "herb salad"
@@ -26,6 +28,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 6)
tastes = list("leaves" = 1, "apple" = 1)
foodtypes = VEGETABLES | FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/salad/validsalad
name = "valid salad"
@@ -42,6 +45,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/nutriment/vitamin = 5)
tastes = list("fruit" = 1)
foodtypes = FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/jungle
name = "jungle salad"
@@ -50,6 +54,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 11, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 7)
tastes = list("fruit" = 1, "the jungle" = 1)
foodtypes = FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/citrusdelight
name = "citrus delight"
@@ -61,6 +66,7 @@
)
tastes = list("sourness" = 1, "leaves" = 1)
foodtypes = FRUIT | ORANGES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/uncooked_rice
name = "uncooked rice"
@@ -86,6 +92,7 @@
)
tastes = list("rice" = 1)
foodtypes = GRAIN | BREAKFAST
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/salad/ricepudding
name = "rice pudding"
@@ -111,6 +118,7 @@
)
tastes = list("rice" = 1, "meat" = 1)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/salad/risotto
name = "risotto"
@@ -123,6 +131,7 @@
tastes = list("rice" = 1, "cheese" = 1)
foodtypes = GRAIN | DAIRY
venue_value = FOOD_PRICE_EXOTIC
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/eggbowl
name = "egg bowl"
@@ -135,6 +144,7 @@
)
tastes = list("rice" = 1, "egg" = 1)
foodtypes = GRAIN | MEAT //EGG = MEAT -NinjaNomNom 2017
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/salad/edensalad
name = "\improper Salad of Eden"
@@ -146,6 +156,7 @@
)
tastes = list("extreme bitterness" = 3, "hope" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/gumbo
name = "black eyed gumbo"
@@ -158,6 +169,7 @@
)
tastes = list("building heat" = 2, "savory meat and vegtables" = 1)
foodtypes = GRAIN | MEAT | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/reagent_containers/cup/bowl
name = "bowl"
@@ -243,6 +255,7 @@
)
tastes = list("healthy greens" = 2, "olive dressing" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/greek_salad
name = "Greek salad"
@@ -254,6 +267,7 @@
)
tastes = list("healthy greens" = 2, "olive dressing" = 1, "feta cheese" = 1)
foodtypes = VEGETABLES | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/salad/caesar_salad
name = "Caesar salad"
@@ -265,6 +279,7 @@
)
tastes = list("healthy greens" = 2, "olive dressing" = 2, "feta cheese" = 2, "pita bread" = 1)
foodtypes = VEGETABLES | DAIRY | GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/salad/spring_salad
name = "spring salad"
@@ -276,6 +291,7 @@
)
tastes = list("crisp greens" = 2, "olive dressing" = 2, "salt" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/potato_salad
name = "potato salad"
@@ -288,6 +304,7 @@
)
tastes = list("creamy potatoes" = 2, "eggs" = 2, "mayonnaise" = 1, "onions" = 1)
foodtypes = VEGETABLES | BREAKFAST
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/spinach_fruit_salad
name = "spinach fruit salad"
@@ -299,6 +316,7 @@
)
tastes = list("spinach" = 2, "berries" = 2, "pineapple" = 2, "dressing" = 1)
foodtypes = VEGETABLES | FRUIT
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/salad/antipasto_salad
name = "antipasto salad"
@@ -311,3 +329,4 @@
)
tastes = list("lettuce" = 2, "salami" = 2, "mozzarella cheese" = 2, "tomatoes" = 2, "dressing" = 1)
foodtypes = VEGETABLES | DAIRY | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_4
diff --git a/code/game/objects/items/food/sandwichtoast.dm b/code/game/objects/items/food/sandwichtoast.dm
index 210a02c4c98..ffb3b4be3af 100644
--- a/code/game/objects/items/food/sandwichtoast.dm
+++ b/code/game/objects/items/food/sandwichtoast.dm
@@ -12,6 +12,7 @@
foodtypes = GRAIN | VEGETABLES
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sandwich/cheese
name = "cheese sandwich"
@@ -24,6 +25,7 @@
tastes = list("bread" = 1, "cheese" = 1)
foodtypes = GRAIN | DAIRY
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/sandwich/cheese/make_grillable()
if(burns_on_grill)
@@ -42,6 +44,7 @@
)
foodtypes = GRAIN | DAIRY
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sandwich/jelly
name = "jelly sandwich"
@@ -50,6 +53,7 @@
bite_consumption = 3
tastes = list("bread" = 1, "jelly" = 1)
foodtypes = GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/sandwich/jelly/slime
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 10, /datum/reagent/consumable/nutriment/vitamin = 4)
@@ -69,6 +73,7 @@
)
tastes = list("nothing suspicious" = 1)
foodtypes = GRAIN | GROSS
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/griddle_toast
name = "griddle toast"
@@ -81,6 +86,7 @@
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
slot_flags = ITEM_SLOT_MASK
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/butteredtoast
name = "buttered toast"
@@ -96,6 +102,7 @@
foodtypes = GRAIN | BREAKFAST
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/jelliedtoast
name = "jellied toast"
@@ -107,6 +114,7 @@
foodtypes = GRAIN | BREAKFAST
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/jelliedtoast/cherry
food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cherryjelly = 8, /datum/reagent/consumable/nutriment/vitamin = 4)
@@ -129,6 +137,7 @@
foodtypes = GRAIN
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/hotdog
name = "hotdog"
@@ -146,6 +155,7 @@
foodtypes = GRAIN | MEAT //Ketchup is not a vegetable
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_3
// Used for unit tests, do not delete
/obj/item/food/hotdog/debug
@@ -167,6 +177,7 @@
foodtypes = GRAIN | MEAT | VEGETABLES
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/sandwich/blt
name = "\improper BLT"
@@ -180,6 +191,7 @@
)
tastes = list("bacon" = 3, "lettuce" = 2, "tomato" = 2, "bread" = 2)
foodtypes = GRAIN | MEAT | VEGETABLES | BREAKFAST
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sandwich/peanut_butter_jelly
name = "peanut butter and jelly sandwich"
@@ -192,6 +204,7 @@
)
tastes = list("peanut butter" = 1, "jelly" = 1, "bread" = 2)
foodtypes = GRAIN | FRUIT | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sandwich/peanut_butter_banana
name = "peanut butter and banana sandwich"
@@ -205,6 +218,7 @@
)
tastes = list("peanut butter" = 1, "banana" = 1, "bread" = 2)
foodtypes = GRAIN | FRUIT | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sandwich/philly_cheesesteak
name = "Philly cheesesteak"
@@ -217,6 +231,7 @@
)
tastes = list("bread" = 1, "juicy meat" = 1, "melted cheese" = 1, "onions" = 1)
foodtypes = GRAIN | MEAT | DAIRY | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sandwich/toast_sandwich
name = "toast sandwich"
@@ -229,6 +244,7 @@
)
tastes = list("bread" = 2, "Britain" = 1, "butter" = 1, "toast" = 1)
foodtypes = GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/sandwich/death
name = "death sandwich"
diff --git a/code/game/objects/items/food/snacks.dm b/code/game/objects/items/food/snacks.dm
index 8f06352b71e..541c36b1150 100644
--- a/code/game/objects/items/food/snacks.dm
+++ b/code/game/objects/items/food/snacks.dm
@@ -16,6 +16,7 @@
foodtypes = JUNKFOOD | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/candy/bronx
name = "\improper South Bronx Paradise bar"
@@ -69,6 +70,7 @@
tastes = list("dried meat" = 1)
w_class = WEIGHT_CLASS_SMALL
foodtypes = JUNKFOOD | MEAT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/sosjerky/healthy
name = "homemade beef jerky"
@@ -107,7 +109,7 @@
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 1,
/datum/reagent/consumable/nutriment = 1,
- /datum/reagent/consumable/cooking_oil = 3,
+ /datum/reagent/consumable/nutriment/fat/oil = 3,
/datum/reagent/consumable/salt = 1,
)
tastes = list("salt" = 1, "shrimp" = 1)
@@ -129,6 +131,7 @@
food_flags = FOOD_FINGER_FOOD
custom_price = PAYCHECK_CREW * 0.7
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/no_raisin/healthy
name = "homemade raisins"
@@ -226,7 +229,7 @@
custom_price = PAYCHECK_CREW * 0.8 //nuts are expensive in real life, and this is the best food in the vendor.
junkiness = 10 //less junky than other options, since peanuts are a decently healthy snack option
w_class = WEIGHT_CLASS_SMALL
- grind_results = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/cooking_oil = 2)
+ grind_results = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/fat/oil = 2)
var/safe_for_consumption = TRUE
/obj/item/food/peanuts/salted
@@ -393,7 +396,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
custom_price = PAYCHECK_CREW//pistachios are even more expensive.
junkiness = 10 //on par with peanuts
w_class = WEIGHT_CLASS_SMALL
- grind_results = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/cooking_oil = 2)
+ grind_results = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/fat/oil = 2)
/obj/item/food/semki
name = "\improper Semki Sunflower Seeds"
@@ -401,7 +404,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
icon_state = "semki"
trash_type = /obj/item/trash/semki
food_reagents = list(
- /datum/reagent/consumable/cornoil = 1,
+ /datum/reagent/consumable/nutriment/fat/oil = 1,
/datum/reagent/consumable/salt = 6,
) //1 cornoil is equal to 1.33 nutriment
tastes = list("sunflowers" = 5)
@@ -423,6 +426,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
junkiness = 5 //Homemade or not, sunflower seets are always kinda junky
foodtypes = JUNKFOOD | NUTS
trash_type = /obj/item/trash/semki/healthy
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/cornchips
name = "\improper Boritos corn chips"
@@ -432,7 +436,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
bite_consumption = 2
food_reagents = list(
/datum/reagent/consumable/nutriment = 3,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
/datum/reagent/consumable/salt = 3,
)
junkiness = 20
@@ -451,7 +455,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
trash_type = /obj/item/trash/boritos
food_reagents = list(
/datum/reagent/consumable/nutriment = 3,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
/datum/reagent/consumable/salt = 3,
/datum/reagent/consumable/yoghurt = 1,
/datum/reagent/consumable/garlic = 1,
@@ -465,7 +469,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
trash_type = /obj/item/trash/boritos/green
food_reagents = list(
/datum/reagent/consumable/nutriment = 3,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
/datum/reagent/consumable/salt = 3,
/datum/reagent/consumable/astrotame = 1,
/datum/reagent/consumable/blackpepper = 1,
@@ -479,7 +483,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
trash_type = /obj/item/trash/boritos/red
food_reagents = list(
/datum/reagent/consumable/nutriment = 3,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
/datum/reagent/consumable/salt = 3,
/datum/reagent/consumable/astrotame = 1,
/datum/reagent/consumable/cornmeal = 1,
@@ -493,7 +497,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
trash_type = /obj/item/trash/boritos/purple
food_reagents = list(
/datum/reagent/consumable/nutriment = 3,
- /datum/reagent/consumable/cooking_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
/datum/reagent/consumable/salt = 3,
/datum/reagent/consumable/capsaicin = 1,
/datum/reagent/consumable/sugar = 1,
@@ -533,7 +537,7 @@ GLOBAL_LIST_INIT(safe_peanut_types, populate_safe_peanut_types())
foodtypes = JUNKFOOD | SUGAR | NUTS
junkiness = 25
w_class = WEIGHT_CLASS_SMALL
- grind_results = list(/datum/reagent/consumable/cornoil = 3, /datum/reagent/consumable/caramel = 2)
+ grind_results = list(/datum/reagent/consumable/nutriment/fat/oil = 3, /datum/reagent/consumable/caramel = 2)
/obj/item/food/sticko
name = "\improper Sticko Classic"
diff --git a/code/game/objects/items/food/soup.dm b/code/game/objects/items/food/soup.dm
index 7e84cea5f87..08eb86ebaa0 100644
--- a/code/game/objects/items/food/soup.dm
+++ b/code/game/objects/items/food/soup.dm
@@ -30,6 +30,7 @@
/datum/reagent/consumable/nutriment/vitamin = 2,
)
foodtypes = SUGAR | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/bowled/spacylibertyduff
name = "spacy liberty duff"
@@ -43,6 +44,7 @@
)
tastes = list("jelly" = 1, "mushroom" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/bowled/amanitajelly
name = "amanita jelly"
@@ -57,3 +59,4 @@
)
tastes = list("jelly" = 1, "mushroom" = 1)
foodtypes = VEGETABLES | TOXIC
+ crafting_complexity = FOOD_COMPLEXITY_2
diff --git a/code/game/objects/items/food/spaghetti.dm b/code/game/objects/items/food/spaghetti.dm
index fa6bca4a351..a631cfe5e05 100644
--- a/code/game/objects/items/food/spaghetti.dm
+++ b/code/game/objects/items/food/spaghetti.dm
@@ -7,6 +7,7 @@
)
foodtypes = GRAIN
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
// Why are you putting cooked spaghetti in your pockets?
/obj/item/food/spaghetti/make_microwaveable()
@@ -22,6 +23,7 @@
desc = "Now that's a nic'e pasta!"
icon_state = "spaghetti"
tastes = list("pasta" = 1)
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/spaghetti/make_bakeable()
AddComponent(/datum/component/bakeable, /obj/item/food/spaghetti/boiledspaghetti, rand(15 SECONDS, 20 SECONDS), TRUE, TRUE)
@@ -37,6 +39,7 @@
/datum/reagent/consumable/nutriment = 2,
/datum/reagent/consumable/nutriment/vitamin = 1,
)
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/spaghetti/boiledspaghetti/Initialize(mapload)
. = ..()
@@ -54,6 +57,7 @@
)
tastes = list("pasta" = 1, "tomato" = 1)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/spaghetti/pastatomato/soulful
name = "soul food"
@@ -82,6 +86,7 @@
)
tastes = list("pasta" = 1, "tomato" = 1)
foodtypes = GRAIN | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/spaghetti/meatballspaghetti
name = "spaghetti and meatballs"
@@ -94,6 +99,7 @@
)
tastes = list("pasta" = 1, "meat" = 1)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/spaghetti/spesslaw
name = "spesslaw"
@@ -106,6 +112,7 @@
)
tastes = list("pasta" = 1, "meat" = 1)
foodtypes = GRAIN | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/spaghetti/chowmein
name = "chow mein"
@@ -118,6 +125,7 @@
)
tastes = list("noodle" = 1, "meat" = 1, "fried vegetables" = 1)
foodtypes = GRAIN | MEAT | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/spaghetti/beefnoodle
name = "beef noodle"
@@ -132,6 +140,7 @@
)
tastes = list("noodles" = 1, "meat" = 1)
foodtypes = GRAIN | MEAT | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/spaghetti/butternoodles
name = "butter noodles"
@@ -143,6 +152,7 @@
)
tastes = list("noodles" = 1, "butter" = 1)
foodtypes = GRAIN | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/spaghetti/mac_n_cheese
name = "mac n' cheese"
@@ -154,6 +164,7 @@
)
tastes = list("cheese" = 1, "breadcrumbs" = 1, "pasta" = 1)
foodtypes = GRAIN | DAIRY
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/spaghetti/shoyu_tonkotsu_ramen
name = "shoyu tonkotsu ramen"
diff --git a/code/game/objects/items/food/sweets.dm b/code/game/objects/items/food/sweets.dm
index 83fd9905e11..6805af35db6 100644
--- a/code/game/objects/items/food/sweets.dm
+++ b/code/game/objects/items/food/sweets.dm
@@ -12,6 +12,7 @@
foodtypes = JUNKFOOD | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/candy_corn/prison
name = "desiccated candy corn"
@@ -34,6 +35,7 @@
tastes = list("apple" = 2, "caramel" = 3)
foodtypes = JUNKFOOD | FRUIT | SUGAR
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/mint
name = "mint"
@@ -59,7 +61,7 @@
foodtypes = JUNKFOOD | SUGAR | BUGS
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_TINY
-
+ crafting_complexity = FOOD_COMPLEXITY_1
// Chocolates
/obj/item/food/chocolatebar
@@ -75,6 +77,7 @@
foodtypes = JUNKFOOD | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_TINY
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/chococoin
name = "chocolate coin"
@@ -89,6 +92,7 @@
foodtypes = JUNKFOOD | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/fudgedice
name = "fudge dice"
@@ -104,6 +108,7 @@
foodtypes = JUNKFOOD | SUGAR
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/chocoorange
name = "chocolate orange"
@@ -117,6 +122,7 @@
foodtypes = JUNKFOOD | SUGAR | ORANGES
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/bonbon
name = "bon bon"
@@ -141,6 +147,7 @@
/datum/reagent/consumable/nutriment/vitamin = 3,
)
tastes = list("chocolate" = 1, "chewy caramel" = 1)
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/bonbon/chocolate_truffle
name = "chocolate truffle"
@@ -161,6 +168,7 @@
)
tastes = list("chocolate" = 1, "peanuts" = 1)
foodtypes = DAIRY | SUGAR | JUNKFOOD | NUTS
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/bonbon/peanut_butter_cup
name = "peanut butter cup"
@@ -172,7 +180,7 @@
)
tastes = list("chocolate" = 1, "peanut butter" = 1)
foodtypes = DAIRY | SUGAR | JUNKFOOD | NUTS
-
+ crafting_complexity = FOOD_COMPLEXITY_1
// Gum
/obj/item/food/bubblegum
@@ -333,6 +341,7 @@
foodtypes = JUNKFOOD | SUGAR | BUGS
food_flags = FOOD_FINGER_FOOD
slot_flags = ITEM_SLOT_MASK
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/spiderlollipop/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/food/vegetables.dm b/code/game/objects/items/food/vegetables.dm
index 4c529befbd1..5438e5e9302 100644
--- a/code/game/objects/items/food/vegetables.dm
+++ b/code/game/objects/items/food/vegetables.dm
@@ -12,6 +12,7 @@
foodtypes = VEGETABLES | DAIRY
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_NORMAL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/yakiimo
name = "yaki imo"
@@ -25,6 +26,7 @@
foodtypes = VEGETABLES | SUGAR
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/roastparsnip
name = "roast parsnip"
@@ -37,6 +39,7 @@
tastes = list("parsnip" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
// Potatoes
/obj/item/food/tatortot
@@ -48,6 +51,7 @@
foodtypes = FRIED | VEGETABLES
food_flags = FOOD_FINGER_FOOD
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/tatortot/Initialize(mapload)
. = ..()
@@ -65,6 +69,7 @@
tastes = list("creamy mashed potatoes" = 1, "garlic" = 1)
foodtypes = VEGETABLES | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/baked_potato
name = "baked potato"
@@ -75,6 +80,7 @@
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
burns_in_oven = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/buttered_baked_potato
name = "buttered baked potato"
@@ -84,6 +90,7 @@
tastes = list("baked potato" = 1)
foodtypes = VEGETABLES | DAIRY
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/loaded_baked_potato
name = "loaded baked potato"
@@ -93,6 +100,7 @@
tastes = list("baked potato" = 1, "bacon" = 1, "cheese" = 1, "cabbage" = 1)
foodtypes = VEGETABLES | DAIRY | MEAT
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_3
// Fries
/obj/item/food/fries
@@ -104,6 +112,7 @@
foodtypes = VEGETABLES | FRIED
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/fries/Initialize(mapload)
. = ..()
@@ -121,6 +130,7 @@
foodtypes = VEGETABLES | DAIRY
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cheesyfries/Initialize(mapload)
. = ..()
@@ -135,6 +145,7 @@
tastes = list("carrots" = 3, "salt" = 1)
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/carrotfries/Initialize(mapload)
. = ..()
@@ -149,6 +160,7 @@
foodtypes = VEGETABLES | FRIED | MEAT
w_class = WEIGHT_CLASS_SMALL
venue_value = FOOD_PRICE_CHEAP
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/poutine/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/robot/items/hypo.dm b/code/game/objects/items/robot/items/hypo.dm
index aa3ca4a6d0e..c482155e144 100644
--- a/code/game/objects/items/robot/items/hypo.dm
+++ b/code/game/objects/items/robot/items/hypo.dm
@@ -74,7 +74,7 @@
/datum/reagent/consumable/blackpepper,\
/datum/reagent/consumable/coco,\
/datum/reagent/consumable/cornmeal,\
- /datum/reagent/consumable/cornoil,\
+ /datum/reagent/consumable/nutriment/fat/oil,\
/datum/reagent/consumable/corn_starch,\
/datum/reagent/consumable/eggwhite,\
/datum/reagent/consumable/eggyolk,\
@@ -388,7 +388,7 @@
shaker.trans_to(target, amount_per_transfer_from_this, transfered_by = user)
balloon_alert(user, "[amount_per_transfer_from_this] unit\s poured")
return .
-
+
/obj/item/reagent_containers/borghypo/condiment_synthesizer // Solids! Condiments! The borger uprising!
name = "Condiment Synthesizer"
desc = "An advanced condiment synthesizer"
@@ -398,7 +398,7 @@
// Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster.
charge_cost = 40 //Costs double the power of the borgshaker due to synthesizing solids
recharge_time = 6 //Double the recharge time too, for the same reason.
- dispensed_temperature = WATER_MATTERSTATE_CHANGE_TEMP
+ dispensed_temperature = WATER_MATTERSTATE_CHANGE_TEMP
default_reagent_types = EXPANDED_SERVICE_REAGENTS
/obj/item/reagent_containers/borghypo/condiment_synthesizer/ui_interact(mob/user, datum/tgui/ui)
@@ -424,9 +424,9 @@
data["reagents"] = condiments
data["selectedReagent"] = selected_reagent?.name
return data
-
+
/obj/item/reagent_containers/borghypo/condiment_synthesizer/attack(mob/M, mob/user)
- return
+ return
/obj/item/reagent_containers/borghypo/condiment_synthesizer/afterattack(obj/target, mob/user, proximity)
. = ..()
@@ -451,7 +451,7 @@
shaker.add_reagent(selected_reagent.type, amount_per_transfer_from_this, reagtemp = dispensed_temperature, no_react = TRUE)
shaker.trans_to(target, amount_per_transfer_from_this, transfered_by = user)
balloon_alert(user, "[amount_per_transfer_from_this] unit\s poured")
-
+
/obj/item/reagent_containers/borghypo/borgshaker/hacked
name = "cyborg shaker"
diff --git a/code/game/objects/items/storage/boxes/food_boxes.dm b/code/game/objects/items/storage/boxes/food_boxes.dm
index 4e5ca1b3b63..3e23d604f6d 100644
--- a/code/game/objects/items/storage/boxes/food_boxes.dm
+++ b/code/game/objects/items/storage/boxes/food_boxes.dm
@@ -313,7 +313,7 @@
new /obj/item/food/grown/onion/red(src)
new /obj/item/food/grown/onion/red(src)
new /obj/item/food/grown/tomato(src)
- new /obj/item/reagent_containers/condiment/quality_oil(src)
+ new /obj/item/reagent_containers/condiment/olive_oil(src)
/obj/item/storage/box/ingredients/random
theme_name = "random"
@@ -466,7 +466,7 @@
/obj/item/food/cheese/wheel = 5,
/obj/item/food/grown/toechtauese = 10,
/obj/item/reagent_containers/condiment/cornmeal = 5,
- /obj/item/reagent_containers/condiment/quality_oil = 5,
+ /obj/item/reagent_containers/condiment/olive_oil = 5,
/obj/item/reagent_containers/condiment/yoghurt = 5,
))
new random_food(src)
diff --git a/code/modules/cargo/packs/organic.dm b/code/modules/cargo/packs/organic.dm
index 38b8292fe80..c02a4d56db9 100644
--- a/code/modules/cargo/packs/organic.dm
+++ b/code/modules/cargo/packs/organic.dm
@@ -47,6 +47,7 @@
/obj/item/food/spiderleg,
/obj/item/food/fishmeat/carp,
/obj/item/food/meat/slab/human,
+ /obj/item/food/meat/slab/grassfed,
)
crate_name = "food crate"
diff --git a/code/modules/events/holiday/easter.dm b/code/modules/events/holiday/easter.dm
index f4fa2a038e0..ddade60e287 100644
--- a/code/modules/events/holiday/easter.dm
+++ b/code/modules/events/holiday/easter.dm
@@ -140,6 +140,7 @@
foodtypes = SUGAR | GRAIN | BREAKFAST
tastes = list("pastry" = 1, "easter" = 1)
bite_consumption = 2
+ crafting_complexity = FOOD_COMPLEXITY_1
/datum/crafting_recipe/food/hotcrossbun
name = "Hot Cross Bun"
@@ -167,6 +168,7 @@
icon_state = "scotchegg"
bite_consumption = 3
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2)
+ crafting_complexity = FOOD_COMPLEXITY_2
/datum/crafting_recipe/food/scotchegg
name = "Scotch egg"
@@ -194,6 +196,7 @@
desc = "Contains less than 10% real rabbit!"
icon_state = "chocolatebunny"
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2, /datum/reagent/consumable/nutriment/vitamin = 1)
+ crafting_complexity = FOOD_COMPLEXITY_1
/datum/crafting_recipe/food/chocolatebunny
name = "Chocolate bunny"
diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm
index b0b9aa35264..d52dd1b9c50 100644
--- a/code/modules/events/holiday/halloween.dm
+++ b/code/modules/events/holiday/halloween.dm
@@ -31,12 +31,14 @@
desc = "Spooky! It's got delicious calcium flavouring!"
icon = 'icons/obj/holiday/halloween_items.dmi'
icon_state = "skeletoncookie"
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/cookie/sugar/spookycoffin
name = "coffin cookie"
desc = "Spooky! It's got delicious coffee flavouring!"
icon = 'icons/obj/holiday/halloween_items.dmi'
icon_state = "coffincookie"
+ crafting_complexity = FOOD_COMPLEXITY_2
//spooky items
diff --git a/code/modules/food_and_drinks/machinery/deep_fryer.dm b/code/modules/food_and_drinks/machinery/deep_fryer.dm
index 4b5689383d6..79fbb6ddd5e 100644
--- a/code/modules/food_and_drinks/machinery/deep_fryer.dm
+++ b/code/modules/food_and_drinks/machinery/deep_fryer.dm
@@ -52,7 +52,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
/obj/machinery/deepfryer/Initialize(mapload)
. = ..()
create_reagents(50, OPENCONTAINER)
- reagents.add_reagent(/datum/reagent/consumable/cooking_oil, 25)
+ reagents.add_reagent(/datum/reagent/consumable/nutriment/fat/oil, 25)
fry_loop = new(src, FALSE)
/obj/machinery/deepfryer/Destroy()
@@ -97,8 +97,8 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
qdel(weapon)
return
// Make sure we have cooking oil
- if(!reagents.has_reagent(/datum/reagent/consumable/cooking_oil))
- to_chat(user, span_warning("[src] has no cooking oil to fry with!"))
+ if(!reagents.has_reagent(/datum/reagent/consumable/nutriment/fat, check_subtypes = TRUE))
+ to_chat(user, span_warning("[src] has no fat or oil to fry with!"))
return
// Don't deep fry indestructible things, for sanity reasons
if(weapon.resistance_flags & INDESTRUCTIBLE)
@@ -131,7 +131,7 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list(
/obj/machinery/deepfryer/process(seconds_per_tick)
..()
- var/datum/reagent/consumable/cooking_oil/frying_oil = reagents.has_reagent(/datum/reagent/consumable/cooking_oil)
+ var/datum/reagent/consumable/nutriment/fat/frying_oil = reagents.has_reagent(/datum/reagent/consumable/nutriment/fat, check_subtypes = TRUE)
if(!frying_oil)
return
reagents.chem_temp = frying_oil.fry_temperature
diff --git a/code/modules/food_and_drinks/machinery/processor.dm b/code/modules/food_and_drinks/machinery/processor.dm
index 4dbf65f67d2..51d0a0629c4 100644
--- a/code/modules/food_and_drinks/machinery/processor.dm
+++ b/code/modules/food_and_drinks/machinery/processor.dm
@@ -68,7 +68,7 @@
var/list/cached_mats = recipe.preserve_materials && what.custom_materials
var/cached_multiplier = (recipe.food_multiplier * rating_amount)
for(var/i in 1 to cached_multiplier)
- var/atom/processed_food = new recipe.output(drop_location())
+ var/atom/processed_food = new recipe.output(drop_location(), no_base_reagents = TRUE)
what.reagents.copy_to(processed_food, what.reagents.total_volume, multiplier = 1 / cached_multiplier)
if(cached_mats)
processed_food.set_custom_materials(cached_mats, 1 / cached_multiplier)
diff --git a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm
index da2d6f1f71a..7e84fe4f5c0 100644
--- a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm
+++ b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm
@@ -241,7 +241,7 @@
/datum/chemical_reaction/drink/pina_olivada
results = list(/datum/reagent/consumable/ethanol/pina_olivada = 5)
- required_reagents = list(/datum/reagent/consumable/pineapplejuice = 3, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/quality_oil = 1)
+ required_reagents = list(/datum/reagent/consumable/pineapplejuice = 3, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/nutriment/fat/oil/olive = 1)
/datum/chemical_reaction/drink/sbiten
results = list(/datum/reagent/consumable/ethanol/sbiten = 10)
diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm
index 54195f63c1f..90e7963f6f8 100644
--- a/code/modules/food_and_drinks/recipes/food_mixtures.dm
+++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm
@@ -1,6 +1,4 @@
/datum/crafting_recipe/food
- /// A rough equivilance for how much nutrition this recipe's result will provide
- var/total_nutriment_factor = 0
/datum/crafting_recipe/food/on_craft_completion(mob/user, atom/result)
SHOULD_CALL_PARENT(TRUE)
@@ -10,12 +8,6 @@
/datum/crafting_recipe/food/New()
. = ..()
- if(ispath(result, /obj/item/food))
- var/obj/item/food/result_food = new result()
- for(var/datum/reagent/consumable/nutriment as anything in result_food.food_reagents)
- total_nutriment_factor += initial(nutriment.nutriment_factor) * result_food.food_reagents[nutriment]
- qdel(result_food)
-
parts |= reqs
/datum/crafting_recipe/food/crafting_ui_data()
@@ -24,7 +16,7 @@
if(ispath(result, /obj/item/food))
var/obj/item/food/item = result
data["foodtypes"] = bitfield_to_list(initial(item.foodtypes), FOOD_FLAGS)
- data["nutriments"] = total_nutriment_factor
+ data["complexity"] = initial(item.crafting_complexity)
return data
@@ -38,15 +30,25 @@
thermic_constant = 0
H_ion_release = 0
reaction_tags = REACTION_TAG_FOOD | REACTION_TAG_EASY
+ required_other = TRUE
/// Typepath of food that is created on reaction
var/atom/resulting_food_path
+ /// Reagent purity of the result, calculated on reaction
+ var/resulting_reagent_purity
+
+/datum/chemical_reaction/food/pre_reaction_other_checks(datum/reagents/holder)
+ resulting_reagent_purity = holder.get_average_purity(/datum/reagent/consumable)
+ return TRUE
/datum/chemical_reaction/food/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
if(resulting_food_path)
var/atom/location = holder.my_atom.drop_location()
for(var/i in 1 to created_volume)
- new resulting_food_path(location)
+ if(ispath(resulting_food_path, /obj/item/food) && !isnull(resulting_reagent_purity))
+ new resulting_food_path(location, starting_reagent_purity = resulting_reagent_purity)
+ else
+ new resulting_food_path(location)
/datum/chemical_reaction/food/tofu
required_reagents = list(/datum/reagent/consumable/soymilk = 10)
@@ -56,7 +58,7 @@
resulting_food_path = /obj/item/food/tofu
/datum/chemical_reaction/food/candycorn
- required_reagents = list(/datum/reagent/consumable/cornoil = 5)
+ required_reagents = list(/datum/reagent/consumable/nutriment/fat/oil = 5)
required_catalysts = list(/datum/reagent/consumable/sugar = 5)
mob_react = FALSE
reaction_flags = REACTION_INSTANT
@@ -206,7 +208,7 @@
required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/flour = 1)
/datum/chemical_reaction/food/mothic_pizza_dough
- required_reagents = list(/datum/reagent/consumable/milk = 5, /datum/reagent/consumable/quality_oil = 2, /datum/reagent/medicine/salglu_solution = 5, /datum/reagent/consumable/cornmeal = 10, /datum/reagent/consumable/flour = 5)
+ required_reagents = list(/datum/reagent/consumable/milk = 5, /datum/reagent/consumable/nutriment/fat/oil/olive = 2, /datum/reagent/medicine/salglu_solution = 5, /datum/reagent/consumable/cornmeal = 10, /datum/reagent/consumable/flour = 5)
mix_message = "The ingredients form a pizza dough."
reaction_flags = REACTION_INSTANT
resulting_food_path = /obj/item/food/mothic_pizza_dough
@@ -245,13 +247,13 @@
reaction_flags = REACTION_INSTANT
/datum/chemical_reaction/food/quality_oil_upconvert
- required_reagents = list(/datum/reagent/consumable/quality_oil = 1, /datum/reagent/consumable/cooking_oil = 2)
- results = list(/datum/reagent/consumable/quality_oil = 2)
+ required_reagents = list(/datum/reagent/consumable/nutriment/fat/oil/olive = 1, /datum/reagent/consumable/nutriment/fat/oil = 2)
+ results = list(/datum/reagent/consumable/nutriment/fat/oil/olive = 2)
mix_message = "The cooking oil dilutes the quality oil- how delightfully devilish..."
reaction_flags = REACTION_INSTANT
/datum/chemical_reaction/food/quality_oil
- results = list(/datum/reagent/consumable/quality_oil = 2)
+ results = list(/datum/reagent/consumable/nutriment/fat/oil/olive = 2)
required_reagents = list(/datum/reagent/consumable/olivepaste = 4, /datum/reagent/water = 1)
reaction_flags = REACTION_INSTANT
diff --git a/code/modules/food_and_drinks/recipes/soup_guide.dm b/code/modules/food_and_drinks/recipes/soup_guide.dm
index a2bc0faccdb..3a9ba05ff0c 100644
--- a/code/modules/food_and_drinks/recipes/soup_guide.dm
+++ b/code/modules/food_and_drinks/recipes/soup_guide.dm
@@ -28,7 +28,6 @@
var/datum/glass_style/has_foodtype/soup_style = GLOB.glass_style_singletons[expected_container][result]
if(istype(soup_style))
data["foodtypes"] = bitfield_to_list(soup_style.drink_type, FOOD_FLAGS)
- data["nutriments"] = total_nutriment_factor
return data
@@ -39,10 +38,6 @@
for(var/obj/item/ingredienttype as anything in chemical_reaction.required_ingredients)
LAZYSET(reqs, ingredienttype, chemical_reaction.required_ingredients[ingredienttype])
- if(ispath(result, /datum/reagent/consumable))
- var/datum/reagent/consumable/soup_result = result
- total_nutriment_factor += initial(soup_result.nutriment_factor) * result_amount
-
/datum/crafting_recipe/food/reaction/soup/meatball_soup
reaction = /datum/chemical_reaction/food/soup/meatballsoup
diff --git a/code/modules/food_and_drinks/recipes/soup_mixtures.dm b/code/modules/food_and_drinks/recipes/soup_mixtures.dm
index edc7867568f..71986e46812 100644
--- a/code/modules/food_and_drinks/recipes/soup_mixtures.dm
+++ b/code/modules/food_and_drinks/recipes/soup_mixtures.dm
@@ -4,7 +4,7 @@
/datum/reagent/consumable/nutriment/soup
name = "Soup"
chemical_flags = NONE
- nutriment_factor = 12 * REAGENTS_METABOLISM // Slightly less to that of nutriment as soups will come with nutriments in tow
+ nutriment_factor = 12 // Slightly less to that of nutriment as soups will come with nutriments in tow
burning_temperature = 520
default_container = /obj/item/reagent_containers/cup/bowl
glass_price = FOOD_PRICE_CHEAP
@@ -730,7 +730,7 @@
/datum/reagent/consumable/nutriment/soup/clown_tears
name = "Clown's Tears"
description = "The sorrow and melancholy of a thousand bereaved clowns, forever denied their Honkmechs."
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
ph = 9.2
data = list("a bad joke" = 1, "mournful honking" = 1)
color = "#EEF442"
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
index 5ef95ca8ab6..06b5e8952ed 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm
@@ -382,7 +382,7 @@
/obj/item/food/grown/cabbage = 1,
/obj/item/toy/crayon/green = 1,
/obj/item/flashlight/flare = 1,
- /datum/reagent/consumable/cooking_oil = 15
+ /datum/reagent/consumable/nutriment/fat/oil = 15
)
result = /obj/item/food/burger/crazy
category = CAT_BURGER
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
index b70b3b9114c..4a2c9f2935d 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm
@@ -141,14 +141,14 @@
result = /obj/item/food/cake/hardware_cake
category = CAT_CAKE
-/datum/crafting_recipe/food/bscccake
- name = "blackberry and strawberry chocolate cake"
+/datum/crafting_recipe/food/berry_chocolate_cake
+ name = "strawberry chocolate cake"
reqs = list(
/obj/item/food/cake/plain = 1,
/obj/item/food/chocolatebar = 2,
/obj/item/food/grown/berries = 5
)
- result = /obj/item/food/cake/bscc
+ result = /obj/item/food/cake/berry_chocolate_cake
category = CAT_CAKE
/datum/crafting_recipe/food/pavlovacream
@@ -173,13 +173,13 @@
result = /obj/item/food/cake/pavlova/nuts
category = CAT_CAKE
-/datum/crafting_recipe/food/bscvcake
+/datum/crafting_recipe/food/berry_vanilla_cake
name = "blackberry and strawberry vanilla cake"
reqs = list(
/obj/item/food/cake/plain = 1,
/obj/item/food/grown/berries = 5
)
- result = /obj/item/food/cake/bsvc
+ result = /obj/item/food/cake/berry_vanilla_cake
category = CAT_CAKE
/datum/crafting_recipe/food/clowncake
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm
index 30eee31295b..4e99329d0ae 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_guide.dm
@@ -181,7 +181,7 @@
reaction = /datum/chemical_reaction/food/yoghurt
/datum/crafting_recipe/food/reaction/quality_oil
- result = /datum/reagent/consumable/quality_oil
+ result = /datum/reagent/consumable/nutriment/fat/oil/olive
reaction = /datum/chemical_reaction/food/quality_oil
/datum/crafting_recipe/food/reaction/quality_oil/upconvert
@@ -228,6 +228,7 @@
/datum/crafting_recipe/food/rollingpin/pizza_sheet
reqs = list(/obj/item/food/pizzaslice/margherita = 1)
result = /obj/item/stack/sheet/pizza
+ category = CAT_PIZZA
// Tools: Knife
@@ -249,7 +250,7 @@
/datum/crafting_recipe/food/knife/cakeslice
reqs = list(/obj/item/food/cake/plain = 1)
result = /obj/item/food/cakeslice/plain
- category = CAT_PASTRY
+ category = CAT_CAKE
/datum/crafting_recipe/food/knife/pizzaslice
reqs = list(/obj/item/food/pizza/margherita = 1)
@@ -266,9 +267,9 @@
result = /obj/item/food/rootdoughslice
category = CAT_BREAD
-/datum/crafting_recipe/food/knife/pastrybase
+/datum/crafting_recipe/food/knife/rawpastrybase
reqs = list(/obj/item/food/piedough = 1)
- result = /obj/item/food/pastrybase
+ result = /obj/item/food/rawpastrybase
category = CAT_BREAD
/datum/crafting_recipe/food/knife/butterslice
@@ -357,7 +358,7 @@
/datum/crafting_recipe/food/knife/lil_baked_rice
reqs = list(/obj/item/food/big_baked_rice = 1)
result = /obj/item/food/lil_baked_rice
- category = CAT_SALAD
+ category = CAT_MOTH
/datum/crafting_recipe/food/knife/watermelonslice
reqs = list(/obj/item/food/grown/watermelon = 1)
@@ -447,7 +448,7 @@
/datum/crafting_recipe/food/grill/grilled_cheese_sandwich
reqs = list(/obj/item/food/sandwich/cheese = 1)
result = /obj/item/food/sandwich/cheese/grilled
- category = CAT_BREAD
+ category = CAT_SANDWICH
/datum/crafting_recipe/food/grill/grilled_cheese
reqs = list(/obj/item/food/cheese/firm_cheese_slice = 1)
@@ -511,6 +512,11 @@
"Bake until ready"
)
+/datum/crafting_recipe/food/grill/hard_taco_shell
+ reqs = list(/obj/item/food/tortilla = 1)
+ result = /obj/item/food/hard_taco_shell
+ category = CAT_MEXICAN
+
// Machinery: Grinder
/datum/crafting_recipe/food/grinder
machinery = list(/obj/machinery/reagentgrinder)
@@ -644,7 +650,7 @@
/datum/crafting_recipe/food/processor/tortilla
reqs = list(/obj/item/food/grown/corn = 1)
result = /obj/item/food/tortilla
- category = CAT_BREAD
+ category = CAT_MEXICAN
/datum/crafting_recipe/food/processor/tempeh
reqs = list(/obj/item/food/tempehstarter = 1)
@@ -748,12 +754,12 @@
/datum/crafting_recipe/food/oven/pie
reqs = list(/obj/item/food/piedough = 1)
result = /obj/item/food/pie/plain
- category = CAT_PASTRY
+ category = CAT_PIE
/datum/crafting_recipe/food/oven/cake
reqs = list(/obj/item/food/cakebatter = 1)
result = /obj/item/food/cake/plain
- category = CAT_PASTRY
+ category = CAT_CAKE
/datum/crafting_recipe/food/oven/breadstick
reqs = list(/obj/item/food/raw_breadstick = 1)
@@ -777,7 +783,7 @@
/datum/crafting_recipe/food/oven/big_baked_rice
reqs = list(/obj/item/food/raw_baked_rice = 1)
result = /obj/item/food/big_baked_rice
- category = CAT_SALAD
+ category = CAT_MOTH
/datum/crafting_recipe/food/oven/ratatouille
reqs = list(/obj/item/food/raw_ratatouille = 1)
@@ -787,7 +793,7 @@
/datum/crafting_recipe/food/oven/stuffed_peppers
reqs = list(/obj/item/food/raw_stuffed_peppers = 1)
result = /obj/item/food/stuffed_peppers
- category = CAT_SALAD
+ category = CAT_MOTH
/datum/crafting_recipe/food/oven/roasted_bell_pepper
reqs = list(/obj/item/food/grown/bell_pepper = 1)
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
index ccb0b975cb7..714c36223a4 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
@@ -74,7 +74,7 @@
/obj/item/food/grown/garlic = 1,
/datum/reagent/consumable/lemonjuice = 3,
/datum/reagent/consumable/blackpepper = 2,
- /datum/reagent/consumable/quality_oil = 3
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 3
)
result = /obj/item/food/lizard_escargot
category = CAT_LIZARD
@@ -148,7 +148,7 @@
/obj/item/food/steeped_mushrooms = 1,
/obj/item/food/grown/mushroom/plumphelmet = 1,
/obj/item/food/grown/mushroom/chanterelle = 1,
- /datum/reagent/consumable/quality_oil = 5
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5
)
result = /obj/item/food/mushroomy_stirfry
category = CAT_LIZARD
@@ -204,7 +204,7 @@
/obj/item/food/spaghetti/nizaya = 1,
/obj/item/food/grown/garlic = 1,
/obj/item/food/grown/chili = 1,
- /datum/reagent/consumable/quality_oil = 5
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5
)
result = /obj/item/food/spaghetti/garlic_nizaya
category = CAT_LIZARD
@@ -228,7 +228,7 @@
/obj/item/food/spaghetti/nizaya = 1,
/obj/item/food/steeped_mushrooms = 1,
/obj/item/food/grown/garlic = 1,
- /datum/reagent/consumable/quality_oil = 5
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5
)
result = /obj/item/food/spaghetti/mushroom_nizaya
category = CAT_LIZARD
@@ -239,7 +239,7 @@
/obj/item/food/root_flatbread = 1,
/obj/item/food/grown/garlic = 1,
/datum/reagent/consumable/lemonjuice = 2,
- /datum/reagent/consumable/quality_oil = 3
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 3
)
result = /obj/item/food/pizza/flatbread/rustic
category = CAT_LIZARD
@@ -251,7 +251,7 @@
/obj/item/food/grown/garlic = 1,
/obj/item/food/grown/tomato = 1,
/obj/item/food/meatball = 2,
- /datum/reagent/consumable/quality_oil = 3
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 3
)
result = /obj/item/food/pizza/flatbread/italic
category = CAT_LIZARD
@@ -313,7 +313,7 @@
/obj/item/food/root_flatbread = 1,
/obj/item/food/grown/tomato = 1,
/obj/item/food/grown/mushroom = 3,
- /datum/reagent/consumable/quality_oil = 3
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 3
)
result = /obj/item/food/pizza/flatbread/mushroom
category = CAT_LIZARD
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm
index b184347a38f..fb4f29284b8 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_martian.dm
@@ -648,7 +648,7 @@
/obj/item/food/friedegg = 1,
/obj/item/food/grown/chili = 1,
/datum/reagent/consumable/yoghurt = 5,
- /datum/reagent/consumable/quality_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2,
)
result = /obj/item/food/cilbir
category = CAT_MARTIAN
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
index 908ac40c016..ea2c1270303 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm
@@ -173,7 +173,7 @@
/obj/item/food/meat/slab/rawcrab = 1
)
result = /obj/item/food/crab_rangoon
- category = CAT_MISCFOOD
+ category = CAT_SEAFOOD
/datum/crafting_recipe/food/royalcheese
name = "Royal Cheese"
@@ -203,7 +203,7 @@
/datum/reagent/consumable/salt = 5,
/obj/item/food/grown/herbs = 2,
/obj/item/food/grown/garlic = 1,
- /datum/reagent/consumable/quality_oil = 5,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5,
/obj/item/food/canned/pine_nuts = 1
)
result = /obj/item/food/pesto
@@ -215,7 +215,7 @@
/obj/item/food/canned/tomatoes = 1,
/datum/reagent/consumable/salt = 2,
/obj/item/food/grown/herbs = 1,
- /datum/reagent/consumable/quality_oil = 5
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5
)
result = /obj/item/food/tomato_sauce
category = CAT_MISCFOOD
@@ -434,7 +434,7 @@
reqs = list(
/obj/item/food/grown/eggplant = 1,
/obj/item/food/grown/garlic = 1,
- /datum/reagent/consumable/quality_oil = 3,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 3,
)
result = /obj/item/food/sauteed_eggplant
category = CAT_MISCFOOD
@@ -458,7 +458,7 @@
/obj/item/food/pita_bread = 1,
/obj/item/food/grown/eggplant = 1,
/obj/item/food/grown/garlic = 1,
- /datum/reagent/consumable/quality_oil = 5,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5,
/datum/reagent/consumable/lemonjuice = 3,
)
result = /obj/item/food/baba_ghanoush
@@ -501,7 +501,7 @@
name = "Tzatziki sauce"
reqs = list(
/obj/item/food/grown/cucumber = 1,
- /datum/reagent/consumable/quality_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2,
/obj/item/food/grown/garlic = 1,
/datum/reagent/consumable/salt = 1,
)
@@ -548,7 +548,7 @@
reqs = list(
/datum/reagent/consumable/flour = 10,
/datum/reagent/water = 5,
- /datum/reagent/consumable/quality_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2,
/datum/reagent/consumable/sugar = 2,
)
result = /obj/item/food/raw_pita_bread
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm
index 880b51a3909..bb20f4ab0b3 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_moth.dm
@@ -23,7 +23,7 @@
/obj/item/seeds/sunflower = 1,
/obj/item/seeds/pumpkin = 1,
/obj/item/seeds/poppy = 1,
- /datum/reagent/consumable/quality_oil = 2
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2
)
result = /obj/item/food/toasted_seeds
category = CAT_MOTH
@@ -210,7 +210,7 @@
/obj/item/food/grown/tomato = 1,
/obj/item/food/cheese/mozzarella = 1,
/obj/item/food/grown/herbs = 1,
- /datum/reagent/consumable/quality_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2,
/datum/reagent/consumable/vinegar = 2
)
result = /obj/item/food/caprese_salad
@@ -219,7 +219,7 @@
/datum/crafting_recipe/food/fleet_salad
name = "Lörtonknusksolt (Fleet salad)"
reqs = list(
- /datum/reagent/consumable/quality_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2,
/datum/reagent/consumable/vinegar = 2,
/obj/item/food/breadslice/plain = 1,
/obj/item/food/grilled_cheese = 1,
@@ -233,7 +233,7 @@
/datum/crafting_recipe/food/cotton_salad
name = "Flöfrölenknusksolt (Cotton salad)"
reqs = list(
- /datum/reagent/consumable/quality_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2,
/datum/reagent/consumable/vinegar = 2,
/obj/item/food/grown/carrot = 1,
/obj/item/food/mothic_salad = 1,
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm
index 653aac9672c..8ed91683c05 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_salad.dm
@@ -104,7 +104,7 @@
/obj/item/food/grown/carrot = 1,
/obj/item/food/onion_slice/red = 2,
/obj/item/food/grown/cabbage = 1,
- /datum/reagent/consumable/quality_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2,
)
result = /obj/item/food/salad/kale_salad
category = CAT_SALAD
@@ -117,7 +117,7 @@
/obj/item/food/grown/tomato = 1,
/obj/item/food/onion_slice/red = 2,
/obj/item/food/cheese/wedge = 1,
- /datum/reagent/consumable/quality_oil = 5,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5,
/obj/item/food/grown/cucumber = 1,
)
result = /obj/item/food/salad/greek_salad
@@ -130,7 +130,7 @@
/obj/item/food/grown/cabbage = 2,
/obj/item/food/onion_slice/red = 1,
/obj/item/food/cheese/wedge = 1,
- /datum/reagent/consumable/quality_oil = 5,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5,
/obj/item/food/breadslice/plain = 1,
)
result = /obj/item/food/salad/caesar_salad
@@ -143,7 +143,7 @@
/obj/item/food/grown/cabbage = 2,
/obj/item/food/grown/carrot = 1,
/obj/item/food/grown/peas = 1,
- /datum/reagent/consumable/quality_oil = 5,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 5,
)
result = /obj/item/food/salad/spring_salad
category = CAT_SALAD
@@ -167,7 +167,7 @@
/obj/item/food/grown/herbs = 3,
/obj/item/food/grown/berries = 2,
/obj/item/food/pineappleslice = 2,
- /datum/reagent/consumable/quality_oil = 2,
+ /datum/reagent/consumable/nutriment/fat/oil/olive = 2,
)
result = /obj/item/food/salad/spinach_fruit_salad
category = CAT_SALAD
diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm
index b62802410da..41bf1aeb76e 100644
--- a/code/modules/hydroponics/beekeeping/honeycomb.dm
+++ b/code/modules/hydroponics/beekeeping/honeycomb.dm
@@ -7,7 +7,7 @@
food_reagents = list(/datum/reagent/consumable/honey = 5)
tastes = list("honey" = 1)
preserved_food = TRUE
-
+ starting_reagent_purity = 1
var/honey_color = ""
/obj/item/food/honeycomb/Initialize(mapload)
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 7a2b8f9841f..1f2951b3356 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -2,7 +2,8 @@
#define MAX_ITEMS_PER_RATING 10
/// How many items are converted per cycle, per rating point of the manipulator used.
#define PROCESSED_ITEMS_PER_RATING 5
-
+/// Starting purity of reagents made in biogenerator
+#define BIOGEN_REAGENT_PURITY 0.3
/obj/machinery/biogenerator
name = "biogenerator"
@@ -387,7 +388,7 @@
if(!use_biomass(design.materials, amount))
return FALSE
- beaker.reagents.add_reagent(design.make_reagent, amount)
+ beaker.reagents.add_reagent(design.make_reagent, amount, added_purity = BIOGEN_REAGENT_PURITY)
if(design.build_path)
if(!use_biomass(design.materials, amount))
@@ -568,3 +569,4 @@
#undef MAX_ITEMS_PER_RATING
#undef PROCESSED_ITEMS_PER_RATING
+#undef BIOGEN_REAGENT_PURITY
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 71c48c6e5c3..5a10c883e49 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -78,9 +78,6 @@
seed.prepare_result(src)
transform *= TRANSFORM_USING_VARIABLE(seed.potency, 100) + 0.5 //Makes the resulting produce's sprite larger or smaller based on potency!
- if(seed.get_gene(/datum/plant_gene/trait/brewing))
- ferment()
-
/obj/item/food/grown/Destroy()
if(isatom(seed))
QDEL_NULL(seed)
@@ -111,48 +108,49 @@
/// Turns the nutriments and vitamins into the distill reagent or fruit wine
/obj/item/food/grown/proc/ferment()
+ var/reagent_purity = seed.get_reagent_purity()
+ var/purity_above_base = clamp((reagent_purity - 0.5) * 2, 0, 1)
+ var/quality_min = 0
+ var/quality_max = DRINK_FANTASTIC
+ var/quality = round(LERP(quality_min, quality_max, purity_above_base))
for(var/datum/reagent/reagent in reagents.reagent_list)
- if(reagent.type != /datum/reagent/consumable/nutriment && reagent.type != /datum/reagent/consumable/nutriment/vitamin)
+ if(!istype(reagent, /datum/reagent/consumable))
continue
- var/purity = clamp(seed.lifespan/200 + seed.endurance/200, 0, 1)
- var/quality_min = 0
- var/quality_max = DRINK_FANTASTIC
- var/quality = round(LERP(quality_min, quality_max, purity))
if(distill_reagent)
var/data = list()
var/datum/reagent/consumable/ethanol/booze = distill_reagent
data["quality"] = quality
- data["boozepwr"] = round(initial(booze.boozepwr) * purity)
- reagents.add_reagent(distill_reagent, reagent.volume, data, added_purity = purity)
+ data["boozepwr"] = round(initial(booze.boozepwr) * reagent_purity * 2) // default boozepwr at 50% purity
+ reagents.add_reagent(distill_reagent, reagent.volume, data, added_purity = reagent_purity)
else
var/data = list()
data["names"] = list("[initial(name)]" = 1)
data["color"] = filling_color
- data["boozepwr"] = round(wine_power * purity)
+ data["boozepwr"] = round(wine_power * reagent_purity * 2) // default boozepwr at 50% purity
data["quality"] = quality
if(wine_flavor)
data["tastes"] = list(wine_flavor = 1)
else
data["tastes"] = list(tastes[1] = 1)
- reagents.add_reagent(/datum/reagent/consumable/ethanol/fruit_wine, reagent.volume, data, added_purity = purity)
+ reagents.add_reagent(/datum/reagent/consumable/ethanol/fruit_wine, reagent.volume, data, added_purity = reagent_purity)
reagents.del_reagent(reagent.type)
-/obj/item/food/grown/on_grind()
- . = ..()
- var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)
- if(grind_results?.len)
- for(var/i in 1 to grind_results.len)
- grind_results[grind_results[i]] = nutriment
- reagents.del_reagent(/datum/reagent/consumable/nutriment)
- reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin)
+/obj/item/food/grown/grind(datum/reagents/target_holder, mob/user)
+ if(on_grind() == -1)
+ return FALSE
-/obj/item/food/grown/on_juice()
- var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)
- if(juice_results?.len)
- for(var/i in 1 to juice_results.len)
- juice_results[juice_results[i]] = nutriment
- reagents.del_reagent(/datum/reagent/consumable/nutriment)
- reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin)
+ var/grind_results_num = LAZYLEN(grind_results)
+ if(grind_results_num)
+ var/average_purity = reagents.get_average_purity()
+ var/total_nutriment_amount = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment, include_subtypes = TRUE)
+ var/single_reagent_amount = grind_results_num > 1 ? round(total_nutriment_amount / grind_results_num, CHEMICAL_QUANTISATION_LEVEL) : total_nutriment_amount
+ reagents.remove_all_type(/datum/reagent/consumable/nutriment, total_nutriment_amount)
+ for(var/reagent in grind_results)
+ reagents.add_reagent(reagent, single_reagent_amount, added_purity = average_purity)
+
+ if(reagents && target_holder)
+ reagents.trans_to(target_holder, reagents.total_volume, transfered_by = user)
+ return TRUE
#undef BITE_SIZE_POTENCY_MULTIPLIER
#undef BITE_SIZE_VOLUME_MULTIPLIER
diff --git a/code/modules/hydroponics/grown/aloe.dm b/code/modules/hydroponics/grown/aloe.dm
index b031999ebdf..cfbefce6dba 100644
--- a/code/modules/hydroponics/grown/aloe.dm
+++ b/code/modules/hydroponics/grown/aloe.dm
@@ -23,7 +23,7 @@
icon_state = "aloe"
bite_consumption_mod = 3
foodtypes = VEGETABLES
- juice_results = list(/datum/reagent/consumable/aloejuice = 0)
+ juice_typepath = /datum/reagent/consumable/aloejuice
distill_reagent = /datum/reagent/consumable/ethanol/tequila
/obj/item/food/grown/aloe/make_bakeable()
diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm
index d4ac640ab44..b994749c2f8 100644
--- a/code/modules/hydroponics/grown/apple.dm
+++ b/code/modules/hydroponics/grown/apple.dm
@@ -22,7 +22,7 @@
desc = "It's a little piece of Eden."
icon_state = "apple"
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/applejuice = 0)
+ juice_typepath = /datum/reagent/consumable/applejuice
tastes = list("apple" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/hcider
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index a47dbceb8a8..fca26ebe978 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -25,7 +25,7 @@
trash_type = /obj/item/grown/bananapeel
bite_consumption_mod = 3
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/banana = 0)
+ juice_typepath = /datum/reagent/consumable/banana
distill_reagent = /datum/reagent/consumable/ethanol/bananahonk
/obj/item/food/grown/banana/make_edible()
@@ -49,7 +49,6 @@
var/obj/item/grown/bananapeel/peel = .
if(istype(peel))
peel.grind_results = list(/datum/reagent/medicine/coagulant/banana_peel = peel.seed.potency * 0.2)
- peel.juice_results = list(/datum/reagent/medicine/coagulant/banana_peel = peel.seed.potency * 0.2)
/obj/item/food/grown/banana/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!"))
diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm
index f79c4590218..8643c616b47 100644
--- a/code/modules/hydroponics/grown/beans.dm
+++ b/code/modules/hydroponics/grown/beans.dm
@@ -15,7 +15,7 @@
icon_dead = "soybean-dead"
genes = list(/datum/plant_gene/trait/repeated_harvest)
mutatelist = list(/obj/item/seeds/soya/koi)
- reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/consumable/cooking_oil = 0.03) //Vegetable oil!
+ reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/consumable/nutriment/fat/oil = 0.03) //Vegetable oil!
/obj/item/food/grown/soybeans
seed = /obj/item/seeds/soya
diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm
index 0c27184f2ce..45b0db82ea3 100644
--- a/code/modules/hydroponics/grown/berries.dm
+++ b/code/modules/hydroponics/grown/berries.dm
@@ -25,7 +25,7 @@
icon_state = "berrypile"
gender = PLURAL
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/berryjuice = 0)
+ juice_typepath = /datum/reagent/consumable/berryjuice
tastes = list("berry" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/gin
@@ -48,7 +48,7 @@
icon_state = "poisonberrypile"
bite_consumption_mod = 3
foodtypes = FRUIT | TOXIC
- juice_results = list(/datum/reagent/consumable/poisonberryjuice = 0)
+ juice_typepath = /datum/reagent/consumable/poisonberryjuice
tastes = list("poison-berry" = 1)
distill_reagent = null
wine_power = 35
@@ -74,7 +74,7 @@
icon_state = "deathberrypile"
bite_consumption_mod = 3
foodtypes = FRUIT | TOXIC
- juice_results = list(/datum/reagent/consumable/poisonberryjuice = 0)
+ juice_typepath = /datum/reagent/consumable/poisonberryjuice
tastes = list("death-berry" = 1)
distill_reagent = null
wine_power = 50
@@ -134,7 +134,7 @@
icon_state = "grapes"
bite_consumption_mod = 2
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/grapejuice = 0)
+ juice_typepath = /datum/reagent/consumable/grapejuice
tastes = list("grape" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/wine
@@ -185,6 +185,6 @@
desc = "A branch with töchtaüse berries on it. They're a favourite on the Mothic Fleet, but not in this form."
icon_state = "toechtauese_branch"
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/toechtauese_juice = 0)
+ juice_typepath = /datum/reagent/consumable/toechtauese_juice
tastes = list("fiery itchy pain" = 1)
distill_reagent = /datum/reagent/toxin/itching_powder
diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm
index 1a9db3c25d0..1a283afef08 100644
--- a/code/modules/hydroponics/grown/cereals.dm
+++ b/code/modules/hydroponics/grown/cereals.dm
@@ -97,7 +97,8 @@
/obj/item/food/grown/meatwheat/attack_self(mob/living/user)
user.visible_message(span_notice("[user] crushes [src] into meat."), span_notice("You crush [src] into something that resembles meat."))
playsound(user, 'sound/effects/blobattack.ogg', 50, TRUE)
- var/obj/item/food/meat/slab/meatwheat/M = new
+ var/reagent_purity = seed.get_reagent_purity()
+ var/obj/item/food/meat/slab/meatwheat/M = new(starting_reagent_purity = reagent_purity)
qdel(src)
user.put_in_hands(M)
return 1
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index de0643faed6..c624722f823 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -29,7 +29,7 @@
name = "lime"
desc = "It's so sour, your face will twist."
icon_state = "lime"
- juice_results = list(/datum/reagent/consumable/limejuice = 0)
+ juice_typepath = /datum/reagent/consumable/limejuice
// Orange
/obj/item/seeds/orange
@@ -56,7 +56,7 @@
desc = "It's a tangy fruit."
icon_state = "orange"
foodtypes = ORANGES
- juice_results = list(/datum/reagent/consumable/orangejuice = 0)
+ juice_typepath = /datum/reagent/consumable/orangejuice
distill_reagent = /datum/reagent/consumable/ethanol/triple_sec
// Lemon
@@ -82,7 +82,7 @@
name = "lemon"
desc = "When life gives you lemons, make lemonade."
icon_state = "lemon"
- juice_results = list(/datum/reagent/consumable/lemonjuice = 0)
+ juice_typepath = /datum/reagent/consumable/lemonjuice
// Combustible lemon
/obj/item/seeds/firelemon //combustible lemon is too long so firelemon
@@ -137,7 +137,7 @@
foodtypes = ORANGES
alt_icon = "orange"
bite_consumption_mod = 2
- juice_results = list(/datum/reagent/consumable/orangejuice = 0)
+ juice_typepath = /datum/reagent/consumable/orangejuice
distill_reagent = /datum/reagent/toxin/mindbreaker
tastes = list("polygons" = 1, "bluespace" = 1, "the true nature of reality" = 1)
diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm
index e7a13ffbbb6..4e9a9810b42 100644
--- a/code/modules/hydroponics/grown/cocoa_vanilla.dm
+++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm
@@ -80,7 +80,7 @@
bite_consumption_mod = 2
trash_type = /obj/item/food/grown/bungopit
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/bungojuice = 0)
+ juice_typepath = /datum/reagent/consumable/bungojuice
tastes = list("bungo" = 2, "tropical fruitiness" = 1)
distill_reagent = null
diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm
index 655123d5a74..a606cf62017 100644
--- a/code/modules/hydroponics/grown/corn.dm
+++ b/code/modules/hydroponics/grown/corn.dm
@@ -14,7 +14,7 @@
icon_grow = "corn-grow" // Uses one growth icons set for all the subtypes
icon_dead = "corn-dead" // Same for the dead icon
mutatelist = list(/obj/item/seeds/corn/snapcorn)
- reagents_add = list(/datum/reagent/consumable/cornoil = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
+ reagents_add = list(/datum/reagent/consumable/nutriment/fat/oil = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1)
/obj/item/food/grown/corn
seed = /obj/item/seeds/corn
@@ -25,7 +25,7 @@
bite_consumption_mod = 2
foodtypes = VEGETABLES
grind_results = list(/datum/reagent/consumable/cornmeal = 0)
- juice_results = list(/datum/reagent/consumable/corn_starch = 0)
+ juice_typepath = /datum/reagent/consumable/corn_starch
tastes = list("corn" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/whiskey
diff --git a/code/modules/hydroponics/grown/cucumber.dm b/code/modules/hydroponics/grown/cucumber.dm
index 649ef8b5212..f3712c6a5c9 100644
--- a/code/modules/hydroponics/grown/cucumber.dm
+++ b/code/modules/hydroponics/grown/cucumber.dm
@@ -22,5 +22,5 @@
desc = "Oblong and green, with pimples, the standard of salads."
icon_state = "cucumber"
foodtypes = VEGETABLES
- juice_results = list(/datum/reagent/consumable/cucumberjuice = 0)
+ juice_typepath = /datum/reagent/consumable/cucumberjuice
tastes = list("cucumber" = 1)
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index b9c750c61c1..333c7f57c45 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -178,7 +178,7 @@
icon_grow = "sunflower-grow"
icon_dead = "sunflower-dead"
mutatelist = list(/obj/item/seeds/sunflower/moonflower, /obj/item/seeds/sunflower/novaflower)
- reagents_add = list(/datum/reagent/consumable/cornoil = 0.08, /datum/reagent/consumable/nutriment = 0.04)
+ reagents_add = list(/datum/reagent/consumable/nutriment/fat/oil = 0.08, /datum/reagent/consumable/nutriment = 0.04)
/obj/item/food/grown/sunflower // FLOWER POWER!
seed = /obj/item/seeds/sunflower
diff --git a/code/modules/hydroponics/grown/herbs.dm b/code/modules/hydroponics/grown/herbs.dm
index 45d2ed1146d..b22be06ec6a 100644
--- a/code/modules/hydroponics/grown/herbs.dm
+++ b/code/modules/hydroponics/grown/herbs.dm
@@ -22,6 +22,6 @@
icon_state = "herbs"
foodtypes = VEGETABLES
grind_results = list(/datum/reagent/consumable/nutriment = 0)
- juice_results = list(/datum/reagent/consumable/nutriment = 0)
+ juice_typepath = /datum/reagent/consumable/nutriment
tastes = list("nondescript herbs" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/fernet
diff --git a/code/modules/hydroponics/grown/korta_nut.dm b/code/modules/hydroponics/grown/korta_nut.dm
index 0622b9d59d4..bf6ab82d474 100644
--- a/code/modules/hydroponics/grown/korta_nut.dm
+++ b/code/modules/hydroponics/grown/korta_nut.dm
@@ -23,7 +23,7 @@
icon_state = "korta_nut"
foodtypes = NUTS
grind_results = list(/datum/reagent/consumable/korta_flour = 0)
- juice_results = list(/datum/reagent/consumable/korta_milk = 0)
+ juice_typepath = /datum/reagent/consumable/korta_milk
tastes = list("peppery heat" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/kortara
@@ -47,6 +47,6 @@
desc = "A sweet treat lizards love to eat."
icon_state = "korta_nut"
grind_results = list(/datum/reagent/consumable/korta_flour = 0)
- juice_results = list(/datum/reagent/consumable/korta_milk = 0, /datum/reagent/consumable/korta_nectar = 0)
+ juice_typepath = /datum/reagent/consumable/korta_nectar
tastes = list("peppery sweet" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/kortara
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index e517883a2ea..83f6ac45466 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -30,7 +30,7 @@
bite_consumption_mod = 2
w_class = WEIGHT_CLASS_NORMAL
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/watermelonjuice = 0)
+ juice_typepath = /datum/reagent/consumable/watermelonjuice
wine_power = 40
/obj/item/food/grown/watermelon/make_processable()
@@ -62,7 +62,7 @@
bite_consumption_mod = 2
w_class = WEIGHT_CLASS_NORMAL
foodtypes = FRUIT
- juice_results = list(/datum/reagent/water/holywater = 0)
+ juice_typepath = /datum/reagent/water/holywater
wine_power = 70 //Water to wine, baby.
wine_flavor = "divinity"
diff --git a/code/modules/hydroponics/grown/peas.dm b/code/modules/hydroponics/grown/peas.dm
index e88b4fba1b1..c232ed247c6 100644
--- a/code/modules/hydroponics/grown/peas.dm
+++ b/code/modules/hydroponics/grown/peas.dm
@@ -54,7 +54,7 @@
desc = "Ridens Cicer, guaranteed to improve your mood dramatically upon consumption!"
icon_state = "laughpeas"
foodtypes = VEGETABLES
- juice_results = list (/datum/reagent/consumable/laughsyrup = 0)
+ juice_typepath = /datum/reagent/consumable/laughsyrup
tastes = list ("a prancing rabbit" = 1) //Vib Ribbon sends her regards.. wherever she is.
wine_power = 90
wine_flavor = "a vector-graphic rabbit dancing on your tongue"
diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm
index 060a7b172d3..3c0e462f388 100644
--- a/code/modules/hydroponics/grown/pineapple.dm
+++ b/code/modules/hydroponics/grown/pineapple.dm
@@ -30,7 +30,7 @@
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
foodtypes = FRUIT | PINEAPPLE
- juice_results = list(/datum/reagent/consumable/pineapplejuice = 0)
+ juice_typepath = /datum/reagent/consumable/pineapplejuice
tastes = list("pineapple" = 1)
wine_power = 40
diff --git a/code/modules/hydroponics/grown/plum.dm b/code/modules/hydroponics/grown/plum.dm
index 997efa41222..cac12bdb1eb 100644
--- a/code/modules/hydroponics/grown/plum.dm
+++ b/code/modules/hydroponics/grown/plum.dm
@@ -22,7 +22,7 @@
desc = "A poet's favorite fruit. Noice."
icon_state = "plum"
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/plumjuice = 0)
+ juice_typepath = /datum/reagent/consumable/plumjuice
tastes = list("plum" = 1)
distill_reagent = /datum/reagent/consumable/ethanol/plumwine
diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm
index 4178e82e0c8..837937e41d1 100644
--- a/code/modules/hydroponics/grown/potato.dm
+++ b/code/modules/hydroponics/grown/potato.dm
@@ -25,7 +25,7 @@
desc = "Boil 'em! Mash 'em! Stick 'em in a stew!"
icon_state = "potato"
foodtypes = VEGETABLES
- juice_results = list(/datum/reagent/consumable/potato_juice = 0)
+ juice_typepath = /datum/reagent/consumable/potato_juice
distill_reagent = /datum/reagent/consumable/ethanol/vodka
/obj/item/food/grown/potato/make_bakeable()
diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm
index 07a25d14c94..561bd5119aa 100644
--- a/code/modules/hydroponics/grown/pumpkin.dm
+++ b/code/modules/hydroponics/grown/pumpkin.dm
@@ -24,7 +24,7 @@
icon_state = "pumpkin"
bite_consumption_mod = 2
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/pumpkinjuice = 0)
+ juice_typepath = /datum/reagent/consumable/pumpkinjuice
wine_power = 20
///Which type of lantern this gourd produces when carved.
var/carved_type = /obj/item/clothing/head/utility/hardhat/pumpkinhead
@@ -57,6 +57,6 @@
icon_state = "blumpkin"
bite_consumption_mod = 3
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/blumpkinjuice = 0)
+ juice_typepath = /datum/reagent/consumable/blumpkinjuice
wine_power = 50
carved_type = /obj/item/clothing/head/utility/hardhat/pumpkinhead/blumpkin
diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm
index 8afa52be9da..df37e3bf2b7 100644
--- a/code/modules/hydroponics/grown/root.dm
+++ b/code/modules/hydroponics/grown/root.dm
@@ -22,7 +22,7 @@
icon_state = "carrot"
bite_consumption_mod = 2
foodtypes = VEGETABLES
- juice_results = list(/datum/reagent/consumable/carrotjuice = 0)
+ juice_typepath = /datum/reagent/consumable/carrotjuice
wine_power = 30
/obj/item/food/grown/carrot/attackby(obj/item/I, mob/user, params)
@@ -53,7 +53,7 @@
desc = "Closely related to carrots."
icon_state = "parsnip"
foodtypes = VEGETABLES
- juice_results = list(/datum/reagent/consumable/parsnipjuice = 0)
+ juice_typepath = /datum/reagent/consumable/parsnipjuice
wine_power = 35
diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm
index 1adfe4ac39b..c2fa44c7662 100644
--- a/code/modules/hydroponics/grown/tomato.dm
+++ b/code/modules/hydroponics/grown/tomato.dm
@@ -24,7 +24,7 @@
splat_type = /obj/effect/decal/cleanable/food/tomato_smudge
foodtypes = FRUIT
grind_results = list(/datum/reagent/consumable/ketchup = 0)
- juice_results = list(/datum/reagent/consumable/tomatojuice = 0)
+ juice_typepath = /datum/reagent/consumable/tomatojuice
distill_reagent = /datum/reagent/consumable/enzyme
// Blood Tomato
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index 7e45fd18d75..a3804c9262f 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -213,6 +213,19 @@
"rate" = reagent.rate
))
seed_data["volume_mod"] = (locate(/datum/plant_gene/trait/maxchem) in to_add.genes) ? 2 : 1
+ seed_data["mutatelist"] = list()
+ for(var/obj/item/seeds/mutant as anything in to_add.mutatelist)
+ seed_data["mutatelist"] += initial(mutant.plantname)
+ var/obj/item/food/grown/product = new to_add.product
+ if(product)
+ var/datum/reagent/product_distill_reagent = product.distill_reagent
+ seed_data["distill_reagent"] = initial(product_distill_reagent.name)
+ var/datum/reagent/product_juice_typepath = product.juice_typepath
+ seed_data["juice_name"] = initial(product_juice_typepath.name)
+ seed_data["grind_results"] = list()
+ for(var/datum/reagent/reagent as anything in product.grind_results)
+ seed_data["grind_results"] += initial(reagent.name)
+ qdel(product)
piles[seed_id] = seed_data
return TRUE
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 7b9ce55bd2c..52be3e98f0c 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -266,6 +266,7 @@
reagent_max += reagents_add[rid]
if(IS_EDIBLE(T) || istype(T, /obj/item/grown))
var/obj/item/food/grown/grown_edible = T
+ var/reagent_purity = get_reagent_purity()
for(var/rid in reagents_add)
var/reagent_overflow_mod = reagents_add[rid]
if(reagent_max > 1)
@@ -277,12 +278,13 @@
data = list("blood_type" = "O-")
if(istype(grown_edible) && (rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin))
data = grown_edible.tastes // apple tastes of apple.
- T.reagents.add_reagent(rid, amount, data)
+ T.reagents.add_reagent(rid, amount, data, added_purity = reagent_purity)
//Handles the juicing trait, swaps nutriment and vitamins for that species various juices if they exist. Mutually exclusive with distilling.
- if(get_gene(/datum/plant_gene/trait/juicing) && grown_edible.juice_results)
- grown_edible.on_juice()
- grown_edible.reagents.add_reagent_list(grown_edible.juice_results)
+ if(get_gene(/datum/plant_gene/trait/juicing) && grown_edible.juice_typepath)
+ grown_edible.juice()
+ else if(get_gene(/datum/plant_gene/trait/brewing))
+ grown_edible.ferment()
/// The number of nutriments we have inside of our plant, for use in our heating / cooling genes
var/num_nutriment = T.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)
@@ -302,6 +304,14 @@
T.reagents.handle_reactions()
playsound(T.loc, 'sound/effects/space_wind.ogg', 50)
+/// Returns reagent purity based on seed stats
+/obj/item/seeds/proc/get_reagent_purity()
+ var/purity_from_lifespan = lifespan / 400 //up to +25% for lifespan
+ var/purity_from_endurance = endurance / 400 //up to +25% for endurance
+ var/purity_from_instability = rand(-instability, instability) / 400 //up to +-25% at random for instability
+ var/result_purity = clamp(0.5 + purity_from_lifespan + purity_from_endurance + purity_from_instability, 0, 1) //50% base + stats
+ return result_purity
+
/// Setters procs ///
/**
diff --git a/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm b/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm
index b3eb18e0cd4..89f5174f15e 100644
--- a/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm
+++ b/code/modules/mob/living/basic/farm_animals/chicken/chicken.dm
@@ -49,7 +49,7 @@ GLOBAL_VAR_INIT(chicken_count, 0)
AddElement(/datum/element/animal_variety, "chicken", pick("brown", "black", "white"), modify_pixels = TRUE)
AddComponent(\
/datum/component/egg_layer,\
- /obj/item/food/egg,\
+ /obj/item/food/egg/organic,\
list(/obj/item/food/grown/wheat),\
feed_messages = list("She clucks contently."),\
lay_messages = EGG_LAYING_MESSAGES,\
diff --git a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
index 949a3cd0c34..8777cf5a4d1 100644
--- a/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
+++ b/code/modules/mob/living/basic/farm_animals/cow/_cow.dm
@@ -11,7 +11,7 @@
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_emote = list("moos","moos hauntingly")
speed = 1.1
- butcher_results = list(/obj/item/food/meat/slab = 6)
+ butcher_results = list(/obj/item/food/meat/slab/grassfed = 6)
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
diff --git a/code/modules/mob/living/basic/farm_animals/deer.dm b/code/modules/mob/living/basic/farm_animals/deer.dm
index a656426e3ba..445ad831e59 100644
--- a/code/modules/mob/living/basic/farm_animals/deer.dm
+++ b/code/modules/mob/living/basic/farm_animals/deer.dm
@@ -7,7 +7,7 @@
gender = FEMALE
mob_biotypes = MOB_ORGANIC|MOB_BEAST
speak_emote = list("grunts", "grunts lowly")
- butcher_results = list(/obj/item/food/meat/slab = 3)
+ butcher_results = list(/obj/item/food/meat/slab/grassfed = 3)
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently nudges"
diff --git a/code/modules/mob/living/basic/farm_animals/rabbit.dm b/code/modules/mob/living/basic/farm_animals/rabbit.dm
index fd95b7ef83b..92d40e0228e 100644
--- a/code/modules/mob/living/basic/farm_animals/rabbit.dm
+++ b/code/modules/mob/living/basic/farm_animals/rabbit.dm
@@ -32,7 +32,7 @@
response_harm_simple = "kick"
attack_verb_continuous = "kicks"
attack_verb_simple = "kick"
- butcher_results = list(/obj/item/food/meat/slab = 1)
+ butcher_results = list(/obj/item/food/meat/slab/grassfed = 1)
unsuitable_cold_damage = 0.5 // Cold damage is 0.5 here to account for low health on the rabbit.
unsuitable_heat_damage = 0.5 // Heat damage is 0.5 here to account for low health on the rabbit.
ai_controller = /datum/ai_controller/basic_controller/rabbit
diff --git a/code/modules/mob/living/basic/farm_animals/sheep.dm b/code/modules/mob/living/basic/farm_animals/sheep.dm
index 4102bd83fdf..691f1db14e3 100644
--- a/code/modules/mob/living/basic/farm_animals/sheep.dm
+++ b/code/modules/mob/living/basic/farm_animals/sheep.dm
@@ -9,7 +9,7 @@
mob_biotypes = MOB_ORGANIC | MOB_BEAST
speak_emote = list("baas","bleats")
speed = 1.1
- butcher_results = list(/obj/item/food/meat/slab = 3)
+ butcher_results = list(/obj/item/food/meat/slab/grassfed = 3)
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 774599948df..998cb9545d3 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -719,7 +719,7 @@
var/datum/reagent/bits = bile
if(istype(bits, /datum/reagent/consumable))
var/datum/reagent/consumable/goodbit = bile
- fullness += goodbit.nutriment_factor * goodbit.volume / goodbit.metabolization_rate
+ fullness += goodbit.get_nutriment_factor() * goodbit.volume / goodbit.metabolization_rate
continue
fullness += 0.6 * bits.volume / bits.metabolization_rate //not food takes up space
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 95b7da5b9da..c2e46d697cd 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -116,7 +116,7 @@
for(var/bile in reagents.reagent_list)
var/datum/reagent/consumable/bits = bile
if(bits)
- fullness += bits.nutriment_factor * bits.volume / bits.metabolization_rate
+ fullness += bits.get_nutriment_factor() * bits.volume / bits.metabolization_rate
return fullness
/**
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index bbe9bf1b0bd..62b86e315a5 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -2532,7 +2532,7 @@ GLOBAL_LIST_EMPTY(fire_appearances)
mob_mood.clear_mood_event(mood_events[chosen])
/// Adds a mood event to the mob
-/mob/living/proc/add_mood_event(category, type, ...)
+/mob/living/proc/add_mood_event(category, type, timeout_mod, ...)
if(QDELETED(mob_mood))
return
mob_mood.add_mood_event(arglist(args))
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index baeb6123d25..af1b4eb1370 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -11,7 +11,7 @@
emote_see = list("shakes their head.", "stamps a foot.", "glares around.")
speak_chance = 1
turns_per_move = 5
- butcher_results = list(/obj/item/food/meat/slab = 4)
+ butcher_results = list(/obj/item/food/meat/slab/grassfed = 4)
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
diff --git a/code/modules/mob/living/simple_animal/hostile/ooze.dm b/code/modules/mob/living/simple_animal/hostile/ooze.dm
index 72b464ff136..9491f5aa163 100644
--- a/code/modules/mob/living/simple_animal/hostile/ooze.dm
+++ b/code/modules/mob/living/simple_animal/hostile/ooze.dm
@@ -64,7 +64,7 @@
var/consumption_amount = min(reagents.get_reagent_amount(reagent.type), ooze_metabolism_modifier * REAGENTS_METABOLISM * seconds_per_tick)
if(istype(reagent, /datum/reagent/consumable))
var/datum/reagent/consumable/consumable = reagent
- nutrition_change += consumption_amount * consumable.nutriment_factor
+ nutrition_change += consumption_amount * consumable.get_nutriment_factor()
reagents.remove_reagent(reagent.type, consumption_amount)
adjust_ooze_nutrition(nutrition_change)
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/goose.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/goose.dm
index 29f628d148e..e4b07470c58 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/goose.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/goose.dm
@@ -8,7 +8,7 @@
mob_biotypes = MOB_ORGANIC|MOB_BEAST
speak_chance = 0
turns_per_move = 5
- butcher_results = list(/obj/item/food/meat/slab = 2)
+ butcher_results = list(/obj/item/food/meat/slab/grassfed = 2)
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
diff --git a/code/modules/plumbing/plumbers/grinder_chemical.dm b/code/modules/plumbing/plumbers/grinder_chemical.dm
index 54a8b48f2d2..5e3c3b0f5d3 100644
--- a/code/modules/plumbing/plumbers/grinder_chemical.dm
+++ b/code/modules/plumbing/plumbers/grinder_chemical.dm
@@ -41,18 +41,10 @@
if(!isitem(AM))
return
var/obj/item/I = AM
- if(I.juice_results || I.grind_results)
+ if(I.grind_results || I.juice_typepath)
use_power(active_power_usage)
- if(I.juice_results)
- I.on_juice()
- reagents.add_reagent_list(I.juice_results)
- if(I.reagents)
- I.reagents.trans_to(src, I.reagents.total_volume, transfered_by = src)
- qdel(I)
- return
- I.on_grind()
- reagents.add_reagent_list(I.grind_results)
- if(I.reagents)
- I.reagents.trans_to(src, I.reagents.total_volume, transfered_by = src)
+ if(I.grind_results)
+ I.grind(src, src)
+ else if (I.juice_typepath)
+ I.juice(src, src)
qdel(I)
-
diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm
index f9b5a2b18de..1160604fb23 100644
--- a/code/modules/reagents/chemistry/holder.dm
+++ b/code/modules/reagents/chemistry/holder.dm
@@ -421,6 +421,28 @@
SEND_SIGNAL(src, COMSIG_REAGENTS_DEL_REAGENT, reagent)
return TRUE
+/// Turn one reagent into another, preserving volume, temp, purity, ph
+/datum/reagents/proc/convert_reagent(source_reagent_typepath, target_reagent_typepath, multiplier = 1, include_source_subtypes = FALSE)
+ var/reagent_amount
+ var/reagent_purity
+ var/reagent_ph
+ if(include_source_subtypes)
+ reagent_ph = ph
+ var/weighted_purity
+ for(var/datum/reagent/reagent as anything in reagent_list)
+ if(reagent.type in typecacheof(source_reagent_typepath))
+ weighted_purity += reagent.volume * reagent.purity
+ reagent_amount += reagent.volume
+ remove_reagent(reagent.type, reagent.volume)
+ reagent_purity = weighted_purity / reagent_amount
+ else
+ var/datum/reagent/source_reagent = get_reagent(source_reagent_typepath)
+ reagent_amount = source_reagent.volume
+ reagent_purity = source_reagent.purity
+ reagent_ph = source_reagent.ph
+ remove_reagent(source_reagent_typepath, reagent_amount)
+ add_reagent(target_reagent_typepath, reagent_amount * multiplier, reagtemp = chem_temp, added_purity = reagent_purity, added_ph = reagent_ph)
+
//Converts the creation_purity to purity
/datum/reagents/proc/uncache_creation_purity(id)
var/datum/reagent/R = has_reagent(id)
@@ -1374,12 +1396,13 @@
return FALSE
/// Get the amount of this reagent
-/datum/reagents/proc/get_reagent_amount(reagent)
+/datum/reagents/proc/get_reagent_amount(reagent, include_subtypes = FALSE)
var/list/cached_reagents = reagent_list
+ var/total_amount = 0
for(var/datum/reagent/cached_reagent as anything in cached_reagents)
- if(cached_reagent.type == reagent)
- return round(cached_reagent.volume, CHEMICAL_QUANTISATION_LEVEL)
- return 0
+ if((!include_subtypes && cached_reagent.type == reagent) || (include_subtypes && ispath(cached_reagent.type, reagent)))
+ total_amount += round(cached_reagent.volume, CHEMICAL_QUANTISATION_LEVEL)
+ return total_amount
/datum/reagents/proc/get_multiple_reagent_amounts(list/reagents)
var/list/cached_reagents = reagent_list
@@ -1397,6 +1420,30 @@
return round(cached_reagent.purity, 0.01)
return 0
+/// Get the average purity of all reagents (or all subtypes of provided typepath)
+/datum/reagents/proc/get_average_purity(parent_type = null)
+ var/total_amount
+ var/weighted_purity
+ var/list/cached_reagents = reagent_list
+ for(var/datum/reagent/reagent as anything in cached_reagents)
+ if(!isnull(parent_type) && !istype(reagent, parent_type))
+ continue
+ total_amount += reagent.volume
+ weighted_purity += reagent.volume * reagent.purity
+ return weighted_purity / total_amount
+
+/// Get the average nutriment_factor of all consumable reagents
+/datum/reagents/proc/get_average_nutriment_factor()
+ var/consumable_volume
+ var/weighted_nutriment_factor
+ var/list/cached_reagents = reagent_list
+ for(var/datum/reagent/reagent as anything in cached_reagents)
+ if(istype(reagent, /datum/reagent/consumable))
+ var/datum/reagent/consumable/consumable_reagent = reagent
+ consumable_volume += consumable_reagent.volume
+ weighted_nutriment_factor += consumable_reagent.volume * consumable_reagent.nutriment_factor
+ return weighted_nutriment_factor / consumable_volume
+
/// Get a comma separated string of every reagent name in this holder. UNUSED
/datum/reagents/proc/get_reagent_names()
var/list/names = list()
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 516951e0e04..a3ed883551f 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -111,6 +111,8 @@
/datum/reagent/medicine/morphine
)
//SKYRAT EDIT ADDITION END
+ /// Starting purity of the created reagents
+ var/base_reagent_purity = 1
var/list/recording_recipe
@@ -319,7 +321,7 @@
if(!cell?.use(to_dispense / powerefficiency))
say("Not enough energy to complete operation!")
return
- holder.add_reagent(reagent, to_dispense, reagtemp = dispensed_temperature)
+ holder.add_reagent(reagent, to_dispense, reagtemp = dispensed_temperature, added_purity = base_reagent_purity)
work_animation()
else
@@ -359,7 +361,7 @@
if(!cell?.use(to_dispense / powerefficiency))
say("Not enough energy to complete operation!")
return
- holder.add_reagent(reagent, to_dispense, reagtemp = dispensed_temperature)
+ holder.add_reagent(reagent, to_dispense, reagtemp = dispensed_temperature, added_purity = base_reagent_purity)
work_animation()
else
recording_recipe[key] += dispense_amount
@@ -457,7 +459,7 @@
if(beaker?.reagents)
R += beaker.reagents
for(var/i in 1 to total)
- Q.add_reagent(pick(dispensable_reagents), 10, reagtemp = dispensed_temperature)
+ Q.add_reagent(pick(dispensable_reagents), 10, reagtemp = dispensed_temperature, added_purity = base_reagent_purity)
R += Q
chem_splash(get_turf(src), null, 3, R)
if(beaker?.reagents)
@@ -607,6 +609,7 @@
/datum/reagent/toxin/mindbreaker,
/datum/reagent/toxin/staminatoxin
)
+ base_reagent_purity = 0.5
/obj/machinery/chem_dispenser/drinks/Initialize(mapload)
. = ..()
diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm
index 2c4cff9c376..5749ac9a62e 100644
--- a/code/modules/reagents/chemistry/machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_master.dm
@@ -29,8 +29,8 @@ GLOBAL_LIST_INIT(chem_master_containers, list(
/obj/item/reagent_containers/condiment/coldsauce,
/obj/item/reagent_containers/condiment/mayonnaise,
/obj/item/reagent_containers/condiment/ketchup,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/cooking_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/vegetable_oil,
/obj/item/reagent_containers/condiment/peanut_butter,
/obj/item/reagent_containers/condiment/cherryjelly,
/obj/item/reagent_containers/condiment/honey,
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index 15929e190cc..d5de6418636 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -192,7 +192,7 @@
to_chat(user, span_notice("You fill [src] to the brim."))
return TRUE
- if(!I.grind_results && !I.juice_results)
+ if(!I.grind_results && !I.juice_typepath)
if(user.combat_mode)
return ..()
else
@@ -304,7 +304,7 @@
/obj/machinery/reagentgrinder/proc/stop_operating()
operating = FALSE
-/obj/machinery/reagentgrinder/proc/juice()
+/obj/machinery/reagentgrinder/proc/juice(mob/user)
power_change()
if(!beaker || machine_stat & (NOPOWER|BROKEN) || beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
return
@@ -313,14 +313,13 @@
if(beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
break
var/obj/item/I = i
- if(I.juice_results)
- juice_item(I)
+ if(I.juice_typepath)
+ juice_item(I, user)
-/obj/machinery/reagentgrinder/proc/juice_item(obj/item/I) //Juicing results can be found in respective object definitions
- if(I.on_juice(src) == -1)
+/obj/machinery/reagentgrinder/proc/juice_item(obj/item/I, mob/user) //Juicing results can be found in respective object definitions
+ if(!I.juice(beaker, user))
to_chat(usr, span_danger("[src] shorts out as it tries to juice up [I], and transfers it back to storage."))
return
- beaker.reagents.add_reagent_list(I.juice_results)
remove_object(I)
/obj/machinery/reagentgrinder/proc/grind(mob/user)
@@ -337,12 +336,9 @@
grind_item(i, user)
/obj/machinery/reagentgrinder/proc/grind_item(obj/item/I, mob/user) //Grind results can be found in respective object definitions
- if(I.on_grind(src) == -1) //Call on_grind() to change amount as needed, and stop grinding the item if it returns -1
+ if(!I.grind(beaker, user))
to_chat(usr, span_danger("[src] shorts out as it tries to grind up [I], and transfers it back to storage."))
return
- beaker.reagents.add_reagent_list(I.grind_results)
- if(I.reagents)
- I.reagents.trans_to(beaker, I.reagents.total_volume, transfered_by = user)
remove_object(I)
/obj/machinery/reagentgrinder/proc/mix(mob/user)
@@ -357,16 +353,13 @@
if(beaker?.reagents.total_volume)
//Recipe to make Butter
var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/milk) / MILK_TO_BUTTER_COEFF, 1)
+ var/purity = beaker.reagents.get_reagent_purity(/datum/reagent/consumable/milk)
beaker.reagents.remove_reagent(/datum/reagent/consumable/milk, MILK_TO_BUTTER_COEFF * butter_amt)
for(var/i in 1 to butter_amt)
- new /obj/item/food/butter(drop_location())
+ new /obj/item/food/butter(drop_location(), starting_reagent_purity = purity)
//Recipe to make Mayonnaise
if (beaker.reagents.has_reagent(/datum/reagent/consumable/eggyolk))
- var/amount = beaker.reagents.get_reagent_amount(/datum/reagent/consumable/eggyolk)
- beaker.reagents.remove_reagent(/datum/reagent/consumable/eggyolk, amount)
- beaker.reagents.add_reagent(/datum/reagent/consumable/mayonnaise, amount)
+ beaker.reagents.convert_reagent(/datum/reagent/consumable/eggyolk, /datum/reagent/consumable/mayonnaise)
//Recipe to make whipped cream
if (beaker.reagents.has_reagent(/datum/reagent/consumable/cream))
- var/amount = beaker.reagents.get_reagent_amount(/datum/reagent/consumable/cream)
- beaker.reagents.remove_reagent(/datum/reagent/consumable/cream, amount)
- beaker.reagents.add_reagent(/datum/reagent/consumable/whipped_cream, amount)
+ beaker.reagents.convert_reagent(/datum/reagent/consumable/cream, /datum/reagent/consumable/whipped_cream)
diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
index aacef0822e1..d40ca4fd85b 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
@@ -41,7 +41,7 @@
/datum/reagent/consumable/ethanol/New(list/data)
if(LAZYLEN(data))
- if(data["quality"])
+ if(!isnull(data["quality"]))
quality = data["quality"]
name = "Natural " + name
if(data["boozepwr"])
@@ -99,7 +99,7 @@
name = "Beer"
description = "An alcoholic beverage brewed since ancient times on Old Earth. Still popular today."
color = "#664300" // rgb: 102, 67, 0
- nutriment_factor = 1 * REAGENTS_METABOLISM
+ nutriment_factor = 1
boozepwr = 25
taste_description = "mild carbonated malt"
ph = 4
@@ -193,7 +193,7 @@
name = "Thirteen Loko"
description = "A potent mixture of caffeine and alcohol."
color = "#102000" // rgb: 16, 32, 0
- nutriment_factor = 1 * REAGENTS_METABOLISM
+ nutriment_factor = 1
boozepwr = 80
quality = DRINK_GOOD
overdose_threshold = 60
@@ -264,7 +264,7 @@
name = "Bilk"
description = "This appears to be beer mixed with milk. Disgusting."
color = "#895C4C" // rgb: 137, 92, 76
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
boozepwr = 15
taste_description = "desperation and lactate"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -1063,7 +1063,7 @@
name = "Mead"
description = "A Viking drink, though a cheap one."
color = "#e0c058" // rgb: 224,192,88
- nutriment_factor = 1 * REAGENTS_METABOLISM
+ nutriment_factor = 1
boozepwr = 30
quality = DRINK_NICE
taste_description = "sweet, sweet alcohol"
@@ -1195,7 +1195,7 @@
/datum/reagent/consumable/ethanol/driestmartini
name = "Driest Martini"
description = "Only for the experienced. You think you see sand floating in the glass."
- nutriment_factor = 1 * REAGENTS_METABOLISM
+ nutriment_factor = 1
color = "#2E6671" // rgb: 46, 102, 113
boozepwr = 65
quality = DRINK_GOOD
@@ -1205,7 +1205,7 @@
/datum/reagent/consumable/ethanol/bananahonk
name = "Banana Honk"
description = "A drink from Clown Heaven."
- nutriment_factor = 1 * REAGENTS_METABOLISM
+ nutriment_factor = 1
color = "#FFFF91" // rgb: 255, 255, 140
boozepwr = 60
quality = DRINK_GOOD
@@ -1222,7 +1222,7 @@
/datum/reagent/consumable/ethanol/silencer
name = "Silencer"
description = "A drink from Mime Heaven."
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
color = "#a8a8a8" // rgb: 168,168,168
boozepwr = 59 //Proof that clowns are better than mimes right here
quality = DRINK_GOOD
@@ -1257,7 +1257,7 @@
name = "Hard Cider"
description = "Apple juice, for adults."
color = "#CD6839"
- nutriment_factor = 1 * REAGENTS_METABOLISM
+ nutriment_factor = 1
boozepwr = 25
taste_description = "the season that falls between summer and winter"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -1449,7 +1449,7 @@
name = "Eggnog"
description = "For enjoying the most wonderful time of the year."
color = "#fcfdc6" // rgb: 252, 253, 198
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
boozepwr = 1
quality = DRINK_VERYGOOD
taste_description = "custard and alcohol"
@@ -1606,7 +1606,7 @@
color = "#FF0000"
boozepwr = 40
taste_description = "stale bread with a staler aftertaste"
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
@@ -1630,7 +1630,7 @@
boozepwr = 10
quality = DRINK_GOOD
taste_description = "your arteries clogging with sugar"
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
@@ -1857,7 +1857,7 @@
/datum/reagent/consumable/ethanol/blank_paper
name = "Blank Paper"
description = "A bubbling glass of blank paper. Just looking at it makes you feel fresh."
- nutriment_factor = 1 * REAGENTS_METABOLISM
+ nutriment_factor = 1
color = "#DCDCDC" // rgb: 220, 220, 220
boozepwr = 20
quality = DRINK_GOOD
@@ -2313,7 +2313,7 @@
color = "#FF5B69"
quality = DRINK_NICE
taste_description = "regret"
- nutriment_factor = 3 * REAGENTS_METABOLISM
+ nutriment_factor = 3
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/protein_blend/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
@@ -2511,7 +2511,7 @@
name = "Plum wine"
description = "Plums turned into wine."
color = "#8a0421"
- nutriment_factor = 1 * REAGENTS_METABOLISM
+ nutriment_factor = 1
boozepwr = 20
taste_description = "a poet's love and undoing"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
diff --git a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
index 4fe48c629ef..83aa18eebb5 100644
--- a/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drinks/drink_reagents.dm
@@ -165,7 +165,7 @@
/datum/reagent/consumable/potato_juice
name = "Potato Juice"
description = "Juice of the potato. Bleh."
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
color = "#302000" // rgb: 48, 32, 0
taste_description = "irish sadness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -173,7 +173,7 @@
/datum/reagent/consumable/pickle
name = "Pickle Juice"
description = "More accurately, this is the brine the pickle was floating in"
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
color = "#302000" // rgb: 48, 32, 0
taste_description = "vinegar brine"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -314,7 +314,7 @@
description = "Encourages the patient to go golfing."
color = "#FFB766"
quality = DRINK_NICE
- nutriment_factor = 10 * REAGENTS_METABOLISM
+ nutriment_factor = 10
taste_description = "bitter tea"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -434,7 +434,7 @@
description = "A delightfully bubbly root beer, filled with so much sugar that it can actually speed up the user's trigger finger."
color = "#181008" // rgb: 24, 16, 8
quality = DRINK_VERYGOOD
- nutriment_factor = 10 * REAGENTS_METABOLISM
+ nutriment_factor = 10
metabolization_rate = 2 * REAGENTS_METABOLISM
taste_description = "a monstrous sugar rush"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -745,7 +745,7 @@
description = "A cherry flavored milkshake."
color = "#FFB6C1"
quality = DRINK_VERYGOOD
- nutriment_factor = 8 * REAGENTS_METABOLISM
+ nutriment_factor = 8
taste_description = "creamy tart cherry"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_MEDIUM
@@ -755,7 +755,7 @@
description = "An exotic milkshake."
color = "#00F1FF"
quality = DRINK_VERYGOOD
- nutriment_factor = 8 * REAGENTS_METABOLISM
+ nutriment_factor = 8
taste_description = "creamy blue cherry"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -764,7 +764,7 @@
description = "A vanilla flavored milkshake. The basics are still good."
color = "#E9D2B2"
quality = DRINK_VERYGOOD
- nutriment_factor = 8 * REAGENTS_METABOLISM
+ nutriment_factor = 8
taste_description = "sweet creamy vanilla"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_MEDIUM
@@ -774,7 +774,7 @@
description = "A caramel flavored milkshake. Your teeth hurt looking at it."
color = "#E17C00"
quality = DRINK_GOOD
- nutriment_factor = 10 * REAGENTS_METABOLISM
+ nutriment_factor = 10
taste_description = "sweet rich creamy caramel"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_MEDIUM
@@ -784,7 +784,7 @@
description = "A frosty chocolate milkshake."
color = "#541B00"
quality = DRINK_VERYGOOD
- nutriment_factor = 8 * REAGENTS_METABOLISM
+ nutriment_factor = 8
taste_description = "sweet creamy chocolate"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_MEDIUM
@@ -794,7 +794,7 @@
description = "A strawberry milkshake."
color = "#ff7b7b"
quality = DRINK_VERYGOOD
- nutriment_factor = 8 * REAGENTS_METABOLISM
+ nutriment_factor = 8
taste_description = "sweet strawberries and milk"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_MEDIUM
@@ -804,7 +804,7 @@
description = "A banana milkshake. Stuff that clowns drink at their honkday parties."
color = "#f2d554"
quality = DRINK_VERYGOOD
- nutriment_factor = 8 * REAGENTS_METABOLISM
+ nutriment_factor = 8
taste_description = "thick banana"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_MEDIUM
@@ -814,7 +814,7 @@
description = "A mix of pumpkin juice and coffee."
color = "#F4A460"
quality = DRINK_VERYGOOD
- nutriment_factor = 3 * REAGENTS_METABOLISM
+ nutriment_factor = 3
taste_description = "creamy pumpkin"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -823,7 +823,7 @@
description = "Ice cream on top of a Dr. Gibb glass."
color = "#B22222"
quality = DRINK_NICE
- nutriment_factor = 3 * REAGENTS_METABOLISM
+ nutriment_factor = 3
taste_description = "creamy cherry"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -871,7 +871,7 @@
/datum/reagent/consumable/hot_coco
name = "Hot Coco"
description = "Made with love! And coco beans."
- nutriment_factor = 4 * REAGENTS_METABOLISM
+ nutriment_factor = 4
color = "#403010" // rgb: 64, 48, 16
taste_description = "creamy chocolate"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -888,7 +888,7 @@
/datum/reagent/consumable/italian_coco
name = "Italian Hot Chocolate"
description = "Made with love! You can just imagine a happy Nonna from the smell."
- nutriment_factor = 8 * REAGENTS_METABOLISM
+ nutriment_factor = 8
color = "#57372A"
quality = DRINK_VERYGOOD
taste_description = "thick creamy chocolate"
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index 0cc3d7beea8..3d9e8c40f82 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -13,8 +13,9 @@
taste_mult = 4
inverse_chem_val = 0.1
inverse_chem = null
+ creation_purity = 0.5 // 50% pure by default. Below - synthetic food. Above - natural food.
/// How much nutrition this reagent supplies
- var/nutriment_factor = 1 * REAGENTS_METABOLISM
+ var/nutriment_factor = 1
/// affects mood, typically higher for mixed drinks with more complex recipes'
var/quality = 0
@@ -23,7 +24,7 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!HAS_TRAIT(H, TRAIT_NOHUNGER))
- H.adjust_nutrition(nutriment_factor * REM * seconds_per_tick)
+ H.adjust_nutrition(get_nutriment_factor() * REM * seconds_per_tick)
if(length(reagent_removal_skip_list))
return
holder.remove_reagent(type, metabolization_rate * seconds_per_tick)
@@ -55,11 +56,14 @@
exposed_mob.add_mood_event("quality_drink", /datum/mood_event/race_drink)
// SKYRAT ADDITION END
+/datum/reagent/consumable/proc/get_nutriment_factor()
+ return nutriment_factor * REAGENTS_METABOLISM * (purity * 2)
+
/datum/reagent/consumable/nutriment
name = "Nutriment"
description = "All the vitamins, minerals, and carbohydrates the body needs in pure form."
reagent_state = SOLID
- nutriment_factor = 15 * REAGENTS_METABOLISM
+ nutriment_factor = 15
color = "#664330" // rgb: 102, 67, 48
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_DEAD_PROCESS
@@ -134,9 +138,90 @@
name = "Protein"
description = "A natural polyamide made up of amino acids. An essential constituent of mosts known forms of life."
brute_heal = 0.8 //Rewards the player for eating a balanced diet.
- nutriment_factor = 9 * REAGENTS_METABOLISM //45% as calorie dense as corn oil.
+ nutriment_factor = 9 //45% as calorie dense as oil.
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+/datum/reagent/consumable/nutriment/fat
+ name = "Fat"
+ description = "Triglycerides found in vegetable oils and fatty animal tissue."
+ color = "#f0eed7"
+ taste_description = "lard"
+ brute_heal = 0
+ burn_heal = 1
+ nutriment_factor = 18 // Twice as nutritious compared to protein and carbohydrates
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+ var/fry_temperature = 450 //Around ~350 F (117 C) which deep fryers operate around in the real world
+
+/datum/reagent/consumable/nutriment/fat/expose_obj(obj/exposed_obj, reac_volume)
+ . = ..()
+ if(!holder || (holder.chem_temp <= fry_temperature))
+ return
+ if(!isitem(exposed_obj) || HAS_TRAIT(exposed_obj, TRAIT_FOOD_FRIED))
+ return
+ if(is_type_in_typecache(exposed_obj, GLOB.oilfry_blacklisted_items) || (exposed_obj.resistance_flags & INDESTRUCTIBLE))
+ exposed_obj.visible_message(span_notice("The hot oil has no effect on [exposed_obj]!"))
+ return
+ if(exposed_obj.atom_storage)
+ exposed_obj.visible_message(span_notice("The hot oil splatters about as [exposed_obj] touches it. It seems too full to cook properly!"))
+ return
+
+ exposed_obj.visible_message(span_warning("[exposed_obj] rapidly fries as it's splashed with hot oil! Somehow."))
+ exposed_obj.AddElement(/datum/element/fried_item, volume)
+ exposed_obj.reagents.add_reagent(src.type, reac_volume)
+
+/datum/reagent/consumable/nutriment/fat/expose_mob(mob/living/exposed_mob, methods = TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
+ . = ..()
+ if(!(methods & (VAPOR|TOUCH)) || isnull(holder) || (holder.chem_temp < fry_temperature)) //Directly coats the mob, and doesn't go into their bloodstream
+ return
+
+ var/burn_damage = ((holder.chem_temp / fry_temperature) * 0.33) //Damage taken per unit
+ if(methods & TOUCH)
+ burn_damage *= max(1 - touch_protection, 0)
+ var/FryLoss = round(min(38, burn_damage * reac_volume))
+ if(!HAS_TRAIT(exposed_mob, TRAIT_OIL_FRIED))
+ exposed_mob.visible_message(span_warning("The boiling oil sizzles as it covers [exposed_mob]!"), \
+ span_userdanger("You're covered in boiling oil!"))
+ if(FryLoss)
+ exposed_mob.emote("scream")
+ playsound(exposed_mob, 'sound/machines/fryer/deep_fryer_emerge.ogg', 25, TRUE)
+ ADD_TRAIT(exposed_mob, TRAIT_OIL_FRIED, "cooking_oil_react")
+ addtimer(CALLBACK(exposed_mob, TYPE_PROC_REF(/mob/living, unfry_mob)), 3)
+ if(FryLoss)
+ exposed_mob.adjustFireLoss(FryLoss)
+
+/datum/reagent/consumable/nutriment/fat/expose_turf(turf/open/exposed_turf, reac_volume)
+ . = ..()
+ if(!istype(exposed_turf))
+ return
+ exposed_turf.MakeSlippery(TURF_WET_LUBE, min_wet_time = 10 SECONDS, wet_time_to_add = reac_volume*2 SECONDS)
+ var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in exposed_turf)
+ if(hotspot)
+ var/datum/gas_mixture/lowertemp = exposed_turf.remove_air(exposed_turf.air.total_moles())
+ lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
+ lowertemp.react(src)
+ exposed_turf.assume_air(lowertemp)
+ qdel(hotspot)
+
+/datum/reagent/consumable/nutriment/fat/oil
+ name = "Vegetable Oil"
+ description = "A variety of cooking oil derived from plant fats. Used in food preparation and frying."
+ color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil)
+ taste_mult = 0.8
+ taste_description = "oil"
+ nutriment_factor = 7 //Not very healthy on its own
+ metabolization_rate = 10 * REAGENTS_METABOLISM
+ penetrates_skin = NONE
+ chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
+ default_container = /obj/item/reagent_containers/condiment/vegetable_oil
+
+/datum/reagent/consumable/nutriment/fat/oil/olive
+ name = "Olive Oil"
+ description = "A high quality oil, suitable for dishes where the oil is a key flavour."
+ taste_description = "olive oil"
+ color = "#DBCF5C"
+ nutriment_factor = 10
+ default_container = /obj/item/reagent_containers/condiment/olive_oil
+
/datum/reagent/consumable/nutriment/organ_tissue
name = "Organ Tissue"
description = "Natural tissues that make up the bulk of organs, providing many vitamins and minerals."
@@ -146,7 +231,7 @@
/datum/reagent/consumable/nutriment/cloth_fibers
name = "Cloth Fibers"
description = "It's not actually a form of nutriment but it does keep Mothpeople going for a short while..."
- nutriment_factor = 30 * REAGENTS_METABOLISM
+ nutriment_factor = 30
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
brute_heal = 0
burn_heal = 0
@@ -175,79 +260,20 @@
current_cycle++
if (HAS_TRAIT(eater, TRAIT_ROCK_EATER) && !HAS_TRAIT(eater, TRAIT_NOHUNGER) && ishuman(eater))
var/mob/living/carbon/human/golem_eater = eater
- golem_eater.adjust_nutrition(nutriment_factor * REM * delta_time)
+ golem_eater.adjust_nutrition(get_nutriment_factor() * REM * delta_time)
if(length(reagent_removal_skip_list))
return
holder.remove_reagent(type, metabolization_rate * delta_time)
-/datum/reagent/consumable/cooking_oil
- name = "Cooking Oil"
- description = "A variety of cooking oil derived from fat or plants. Used in food preparation and frying."
- color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil)
- taste_mult = 0.8
- taste_description = "oil"
- nutriment_factor = 7 * REAGENTS_METABOLISM //Not very healthy on its own
- metabolization_rate = 10 * REAGENTS_METABOLISM
- penetrates_skin = NONE
- var/fry_temperature = 450 //Around ~350 F (117 C) which deep fryers operate around in the real world
- chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
- default_container = /obj/item/reagent_containers/condiment/cooking_oil
-
-/datum/reagent/consumable/cooking_oil/expose_obj(obj/exposed_obj, reac_volume)
- . = ..()
- if(!holder || (holder.chem_temp <= fry_temperature))
- return
- if(!isitem(exposed_obj) || HAS_TRAIT(exposed_obj, TRAIT_FOOD_FRIED))
- return
- if(is_type_in_typecache(exposed_obj, GLOB.oilfry_blacklisted_items) || (exposed_obj.resistance_flags & INDESTRUCTIBLE))
- exposed_obj.visible_message(span_notice("The hot oil has no effect on [exposed_obj]!"))
- return
- if(exposed_obj.atom_storage)
- exposed_obj.visible_message(span_notice("The hot oil splatters about as [exposed_obj] touches it. It seems too full to cook properly!"))
- return
-
- exposed_obj.visible_message(span_warning("[exposed_obj] rapidly fries as it's splashed with hot oil! Somehow."))
- exposed_obj.AddElement(/datum/element/fried_item, volume)
- exposed_obj.reagents.add_reagent(/datum/reagent/consumable/cooking_oil, reac_volume)
-
-/datum/reagent/consumable/cooking_oil/expose_mob(mob/living/exposed_mob, methods = TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
- . = ..()
- if(!(methods & (VAPOR|TOUCH)) || isnull(holder) || (holder.chem_temp < fry_temperature)) //Directly coats the mob, and doesn't go into their bloodstream
- return
-
- var/oil_damage = ((holder.chem_temp / fry_temperature) * 0.33) //Damage taken per unit
- if(methods & TOUCH)
- oil_damage *= max(1 - touch_protection, 0)
- var/FryLoss = round(min(38, oil_damage * reac_volume))
- if(!HAS_TRAIT(exposed_mob, TRAIT_OIL_FRIED))
- exposed_mob.visible_message(span_warning("The boiling oil sizzles as it covers [exposed_mob]!"), \
- span_userdanger("You're covered in boiling oil!"))
- if(FryLoss)
- exposed_mob.emote("scream")
- playsound(exposed_mob, 'sound/machines/fryer/deep_fryer_emerge.ogg', 25, TRUE)
- ADD_TRAIT(exposed_mob, TRAIT_OIL_FRIED, "cooking_oil_react")
- addtimer(CALLBACK(exposed_mob, TYPE_PROC_REF(/mob/living, unfry_mob)), 3)
- if(FryLoss)
- exposed_mob.adjustFireLoss(FryLoss)
-
-/datum/reagent/consumable/cooking_oil/expose_turf(turf/open/exposed_turf, reac_volume)
- . = ..()
- if(!istype(exposed_turf) || isgroundlessturf(exposed_turf) || (reac_volume < 5))
- return
-
- exposed_turf.MakeSlippery(TURF_WET_LUBE, min_wet_time = 10 SECONDS, wet_time_to_add = reac_volume * 1.5 SECONDS)
- exposed_turf.name = "Deep-fried [initial(exposed_turf.name)]"
- exposed_turf.add_atom_colour(color, TEMPORARY_COLOUR_PRIORITY)
-
/datum/reagent/consumable/sugar
name = "Sugar"
description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste."
reagent_state = SOLID
color = "#FFFFFF" // rgb: 255, 255, 255
taste_mult = 1.5 // stop sugar drowning out other flavours
- nutriment_factor = 10 * REAGENTS_METABOLISM
+ nutriment_factor = 2
metabolization_rate = 2 * REAGENTS_METABOLISM
- overdose_threshold = 200 // Hyperglycaemic shock
+ overdose_threshold = 100 // Hyperglycaemic shock
taste_description = "sweetness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
default_container = /obj/item/reagent_containers/condiment/sugar
@@ -270,7 +296,7 @@
/datum/reagent/consumable/virus_food
name = "Virus Food"
description = "A mixture of water and milk. Virus cells can use this mixture to reproduce."
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
color = "#899613" // rgb: 137, 150, 19
taste_description = "watery milk"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -282,7 +308,7 @@
/datum/reagent/consumable/soysauce
name = "Soysauce"
description = "A salty sauce made from the soy plant."
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
color = "#792300" // rgb: 121, 35, 0
taste_description = "umami"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -291,7 +317,7 @@
/datum/reagent/consumable/ketchup
name = "Ketchup"
description = "Ketchup, catsup, whatever. It's tomato paste."
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#731008" // rgb: 115, 16, 8
taste_description = "ketchup"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -459,7 +485,7 @@
name = "Coco Powder"
description = "A fatty, bitter paste made from coco beans."
reagent_state = SOLID
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#302000" // rgb: 48, 32, 0
taste_description = "bitterness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -528,28 +554,6 @@
. = TRUE
..()
-/datum/reagent/consumable/cornoil
- name = "Corn Oil"
- description = "An oil derived from various types of corn."
- nutriment_factor = 20 * REAGENTS_METABOLISM
- color = "#302000" // rgb: 48, 32, 0
- taste_description = "slime"
- chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
- default_container = /obj/item/reagent_containers/condiment/cooking_oil
-
-/datum/reagent/consumable/cornoil/expose_turf(turf/open/exposed_turf, reac_volume)
- . = ..()
- if(!istype(exposed_turf))
- return
- exposed_turf.MakeSlippery(TURF_WET_LUBE, min_wet_time = 10 SECONDS, wet_time_to_add = reac_volume*2 SECONDS)
- var/obj/effect/hotspot/hotspot = (locate(/obj/effect/hotspot) in exposed_turf)
- if(hotspot)
- var/datum/gas_mixture/lowertemp = exposed_turf.remove_air(exposed_turf.air.total_moles())
- lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
- lowertemp.react(src)
- exposed_turf.assume_air(lowertemp)
- qdel(hotspot)
-
/datum/reagent/consumable/enzyme
name = "Universal Enzyme"
description = "A universal enzyme used in the preparation of certain chemicals and foods."
@@ -570,7 +574,7 @@
/datum/reagent/consumable/hot_ramen
name = "Hot Ramen"
description = "The noodles are boiled, the flavors are artificial, just like being back in school."
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#302000" // rgb: 48, 32, 0
taste_description = "wet and cheap noodles"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -579,7 +583,7 @@
/datum/reagent/consumable/nutraslop
name = "Nutraslop"
description = "Mixture of leftover prison foods served on previous days."
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#3E4A00" // rgb: 62, 74, 0
taste_description = "your imprisonment"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -591,7 +595,7 @@
/datum/reagent/consumable/hell_ramen
name = "Hell Ramen"
description = "The noodles are boiled, the flavors are artificial, just like being back in school."
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#302000" // rgb: 48, 32, 0
taste_description = "wet and cheap noodles on fire"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -621,7 +625,7 @@
/datum/reagent/consumable/cherryjelly
name = "Cherry Jelly"
description = "Totally the best. Only to be spread on foods with excellent lateral symmetry."
- nutriment_factor = 10 * REAGENTS_METABOLISM
+ nutriment_factor = 10
color = "#801E28" // rgb: 128, 30, 40
taste_description = "cherry"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -637,7 +641,7 @@
name = "Rice"
description = "tiny nutritious grains"
reagent_state = SOLID
- nutriment_factor = 3 * REAGENTS_METABOLISM
+ nutriment_factor = 3
color = "#FFFFFF" // rgb: 0, 0, 0
taste_description = "rice"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -647,7 +651,7 @@
name = "Vanilla Powder"
description = "A fatty, bitter paste made from vanilla pods."
reagent_state = SOLID
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#FFFACD"
taste_description = "vanilla"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -655,7 +659,7 @@
/datum/reagent/consumable/eggyolk
name = "Egg Yolk"
description = "It's full of protein."
- nutriment_factor = 4 * REAGENTS_METABOLISM
+ nutriment_factor = 8
color = "#FFB500"
taste_description = "egg"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -663,7 +667,7 @@
/datum/reagent/consumable/eggwhite
name = "Egg White"
description = "It's full of even more protein."
- nutriment_factor = 1.5 * REAGENTS_METABOLISM
+ nutriment_factor = 4
color = "#fffdf7"
taste_description = "bland egg"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -690,7 +694,7 @@
name = "Honey"
description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties."
color = "#d3a308"
- nutriment_factor = 15 * REAGENTS_METABOLISM
+ nutriment_factor = 15
metabolization_rate = 1 * REAGENTS_METABOLISM
taste_description = "sweetness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -749,13 +753,13 @@
name = "Stabilized Nutriment"
description = "A bioengineered protien-nutrient structure designed to decompose in high saturation. In layman's terms, it won't get you fat."
reagent_state = SOLID
- nutriment_factor = 15 * REAGENTS_METABOLISM
+ nutriment_factor = 15
color = "#664330" // rgb: 102, 67, 48
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/carbon/M, seconds_per_tick, times_fired)
if(M.nutrition > NUTRITION_LEVEL_FULL - 25)
- M.adjust_nutrition(-3 * REM * nutriment_factor * seconds_per_tick)
+ M.adjust_nutrition(-3 * REM * get_nutriment_factor() * seconds_per_tick)
..()
////Lavaland Flora Reagents////
@@ -812,7 +816,7 @@
name = "Vitrium Froth"
description = "A bubbly paste that heals wounds of the skin."
color = "#d3a308"
- nutriment_factor = 3 * REAGENTS_METABOLISM
+ nutriment_factor = 3
taste_description = "fruity mushroom"
ph = 10.4
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -827,7 +831,7 @@
/datum/reagent/consumable/liquidelectricity
name = "Liquid Electricity"
description = "The blood of Ethereals, and the stuff that keeps them going. Great for them, horrid for anyone else."
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#97ee63"
taste_description = "pure electricity"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -874,7 +878,7 @@
/datum/reagent/consumable/secretsauce
name = "Secret Sauce"
description = "What could it be?"
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
color = "#792300"
taste_description = "indescribable"
quality = FOOD_AMAZING
@@ -886,7 +890,7 @@
color = "#BBD4D9"
taste_description = "mint frosting"
description = "These restorative peptides not only speed up wound healing, but are nutritious as well!"
- nutriment_factor = 10 * REAGENTS_METABOLISM // 33% less than nutriment to reduce weight gain
+ nutriment_factor = 10 // 33% less than nutriment to reduce weight gain
brute_heal = 3
burn_heal = 1
inverse_chem = /datum/reagent/peptides_failed//should be impossible, but it's so it appears in the chemical lookup gui
@@ -896,7 +900,7 @@
/datum/reagent/consumable/caramel
name = "Caramel"
description = "Who would have guessed that heated sugar could be so delicious?"
- nutriment_factor = 10 * REAGENTS_METABOLISM
+ nutriment_factor = 10
color = "#D98736"
taste_mult = 2
taste_description = "caramel"
@@ -907,7 +911,7 @@
name = "Char"
description = "Essence of the grill. Has strange properties when overdosed."
reagent_state = LIQUID
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#C8C8C8"
taste_mult = 6
taste_description = "smoke"
@@ -923,7 +927,7 @@
/datum/reagent/consumable/bbqsauce
name = "BBQ Sauce"
description = "Sweet, smoky, savory, and gets everywhere. Perfect for grilling."
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
color = "#78280A" // rgb: 120 40, 10
taste_mult = 2.5 //sugar's 1.5, capsacin's 1.5, so a good middle ground.
taste_description = "smokey sweetness"
@@ -935,7 +939,7 @@
description = "A great dessert for chocolate lovers."
color = "#800000"
quality = DRINK_VERYGOOD
- nutriment_factor = 4 * REAGENTS_METABOLISM
+ nutriment_factor = 4
taste_description = "sweet chocolate"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
glass_price = DRINK_PRICE_EASY
@@ -952,7 +956,7 @@
description = "A great dessert for vanilla lovers."
color = "#FAFAD2"
quality = DRINK_VERYGOOD
- nutriment_factor = 4 * REAGENTS_METABOLISM
+ nutriment_factor = 4
taste_description = "sweet vanilla"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -967,7 +971,7 @@
name = "Laughin' Syrup"
description = "The product of juicing Laughin' Peas. Fizzy, and seems to change flavour based on what it's used with!"
color = "#803280"
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
taste_mult = 2
taste_description = "fizzy sweetness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -1005,7 +1009,7 @@
name = "Korta Nectar"
description = "A sweet, sugary syrup made from crushed sweet korta nuts."
color = "#d3a308"
- nutriment_factor = 5 * REAGENTS_METABOLISM
+ nutriment_factor = 5
metabolization_rate = 1 * REAGENTS_METABOLISM
taste_description = "peppery sweetness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -1014,7 +1018,7 @@
name = "Whipped Cream"
description = "A white fluffy cream made from whipping cream at intense speed."
color = "#efeff0"
- nutriment_factor = 4 * REAGENTS_METABOLISM
+ nutriment_factor = 4
taste_description = "fluffy sweet cream"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -1024,7 +1028,7 @@
taste_description = "peanuts"
reagent_state = SOLID
color = "#D9A066"
- nutriment_factor = 15 * REAGENTS_METABOLISM
+ nutriment_factor = 15
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
default_container = /obj/item/reagent_containers/condiment/peanut_butter
@@ -1042,15 +1046,6 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
default_container = /obj/item/reagent_containers/condiment/vinegar
-//A better oil, representing choices like olive oil, argan oil, avocado oil, etc.
-/datum/reagent/consumable/quality_oil
- name = "Quality Oil"
- description = "A high quality oil, suitable for dishes where the oil is a key flavour."
- taste_description = "olive oil"
- color = "#DBCF5C"
- chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
- default_container = /obj/item/reagent_containers/condiment/quality_oil
-
/datum/reagent/consumable/cornmeal
name = "Cornmeal"
description = "Ground cornmeal, for making corn related things."
@@ -1064,7 +1059,7 @@
description = "Creamy natural yoghurt, with applications in both food and drinks."
taste_description = "yoghurt"
color = "#efeff0"
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
default_container = /obj/item/reagent_containers/condiment/yoghurt
@@ -1087,7 +1082,7 @@
description = "Powdered milk for cheap coffee. How delightful."
taste_description = "milk"
color = "#efeff0"
- nutriment_factor = 1.5 * REAGENTS_METABOLISM
+ nutriment_factor = 1.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
default_container = /obj/item/reagent_containers/condiment/creamer
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index e657ae7df21..54fa4391790 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -131,7 +131,7 @@
color = "#CC4633"
description = "You don't even want to think about what's in here."
taste_description = "gross iron"
- nutriment_factor = 2 * REAGENTS_METABOLISM
+ nutriment_factor = 2
material = /datum/material/meat
ph = 7.45
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm
index 9248c22dbe9..1c77ff5f6c1 100644
--- a/code/modules/reagents/chemistry/recipes/others.dm
+++ b/code/modules/reagents/chemistry/recipes/others.dm
@@ -16,7 +16,7 @@
/datum/chemical_reaction/spraytan2
results = list(/datum/reagent/spraytan = 2)
- required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cornoil = 1)
+ required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/nutriment/fat/oil = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_OTHER
/datum/chemical_reaction/impedrezene
@@ -31,7 +31,7 @@
/datum/chemical_reaction/glycerol
results = list(/datum/reagent/glycerol = 1)
- required_reagents = list(/datum/reagent/consumable/cornoil = 3, /datum/reagent/toxin/acid = 1)
+ required_reagents = list(/datum/reagent/consumable/nutriment/fat/oil = 3, /datum/reagent/toxin/acid = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_EXPLOSIVE
/datum/chemical_reaction/sodiumchloride
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index b39eee137c1..6b5ddfc14e3 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -383,8 +383,8 @@
explosion(holder.my_atom, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 6, explosion_cause = src)
-/datum/chemical_reaction/slime/slimecornoil
- results = list(/datum/reagent/consumable/cornoil = 10)
+/datum/chemical_reaction/slime/slimeoil
+ results = list(/datum/reagent/consumable/nutriment/fat/oil = 10)
required_reagents = list(/datum/reagent/blood = 1)
required_container = /obj/item/slime_extract/oil
diff --git a/code/modules/reagents/reagent_containers/condiment.dm b/code/modules/reagents/reagent_containers/condiment.dm
index 18a89f76a73..a5ea964172f 100644
--- a/code/modules/reagents/reagent_containers/condiment.dm
+++ b/code/modules/reagents/reagent_containers/condiment.dm
@@ -275,18 +275,18 @@
list_reagents = list(/datum/reagent/consumable/vinegar = 50)
fill_icon_thresholds = null
-/obj/item/reagent_containers/condiment/cooking_oil
+/obj/item/reagent_containers/condiment/vegetable_oil
name = "cooking oil"
desc = "For all your deep-frying needs."
icon_state = "cooking_oil"
- list_reagents = list(/datum/reagent/consumable/cooking_oil = 50)
+ list_reagents = list(/datum/reagent/consumable/nutriment/fat/oil = 50)
fill_icon_thresholds = null
-/obj/item/reagent_containers/condiment/quality_oil
+/obj/item/reagent_containers/condiment/olive_oil
name = "quality oil"
desc = "For the fancy chef inside everyone."
icon_state = "oliveoil"
- list_reagents = list(/datum/reagent/consumable/quality_oil = 50)
+ list_reagents = list(/datum/reagent/consumable/nutriment/fat/oil/olive = 50)
fill_icon_thresholds = null
/obj/item/reagent_containers/condiment/yoghurt
@@ -420,7 +420,7 @@
/datum/reagent/consumable/frostoil = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in its passage"),
/datum/reagent/consumable/salt = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"),
/datum/reagent/consumable/blackpepper = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"),
- /datum/reagent/consumable/cornoil = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"),
+ /datum/reagent/consumable/nutriment/fat/oil = list("condi_cornoil", "Vegetable Oil", "A delicious oil used in cooking."),
/datum/reagent/consumable/sugar = list("condi_sugar", "Sugar", "Tasty spacey sugar!"),
/datum/reagent/consumable/astrotame = list("condi_astrotame", "Astrotame", "The sweetness of a thousand sugars but none of the calories."),
/datum/reagent/consumable/bbqsauce = list("condi_bbq", "BBQ sauce", "Hand wipes not included."),
diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm
index c65bfe88090..f6b2a0fb323 100644
--- a/code/modules/reagents/reagent_containers/cups/_cup.dm
+++ b/code/modules/reagents/reagent_containers/cups/_cup.dm
@@ -515,36 +515,10 @@
if(do_after(user, 25, target = src))
user.adjustStaminaLoss(40)
switch(picked_option)
- if("Juice") //prioritize juicing
- if(grinded.juice_results)
- grinded.on_juice()
- reagents.add_reagent_list(grinded.juice_results)
- to_chat(user, span_notice("You juice [grinded] into a fine liquid."))
- QDEL_NULL(grinded)
- return
- else
- grinded.on_grind()
- reagents.add_reagent_list(grinded.grind_results)
- if(grinded.reagents) //If grinded item has reagents within, transfer them to the mortar
- grinded.reagents.trans_to(src, grinded.reagents.total_volume, transfered_by = user)
- to_chat(user, span_notice("You try to juice [grinded] but there is no liquids in it. Instead you get nice powder."))
- QDEL_NULL(grinded)
- return
+ if("Juice")
+ return juice_item(grinded, user)
if("Grind")
- if(grinded.grind_results)
- grinded.on_grind()
- reagents.add_reagent_list(grinded.grind_results)
- if(grinded.reagents) //If grinded item has reagents within, transfer them to the mortar
- grinded.reagents.trans_to(src, grinded.reagents.total_volume, transfered_by = user)
- to_chat(user, span_notice("You break [grinded] into powder."))
- QDEL_NULL(grinded)
- return
- else
- grinded.on_juice()
- reagents.add_reagent_list(grinded.juice_results)
- to_chat(user, span_notice("You try to grind [grinded] but it almost instantly turns into a fine liquid."))
- QDEL_NULL(grinded)
- return
+ return grind_item(grinded, user)
else
to_chat(user, span_notice("You try to grind the mortar itself instead of [grinded]. You failed."))
return
@@ -555,12 +529,28 @@
if(grinded)
to_chat(user, span_warning("There is something inside already!"))
return
- if(I.juice_results || I.grind_results)
+ if(I.juice_typepath || I.grind_results)
I.forceMove(src)
grinded = I
return
to_chat(user, span_warning("You can't grind this!"))
+/obj/item/reagent_containers/cup/mortar/proc/grind_item(obj/item/item, mob/living/carbon/human/user)
+ if(!item.grind(src, user))
+ to_chat(user, span_notice("You fail to grind [item]."))
+ return
+ to_chat(user, span_notice("You grind [item] into a nice powder."))
+ grinded = null
+ QDEL_NULL(item)
+
+/obj/item/reagent_containers/cup/mortar/proc/juice_item(obj/item/item, mob/living/carbon/human/user)
+ if(!item.juice(src, user))
+ to_chat(user, span_notice("You fail to juice [item]."))
+ return
+ to_chat(user, span_notice("You juice [item] into a fine liquid."))
+ grinded = null
+ QDEL_NULL(item)
+
//Coffeepots: for reference, a standard cup is 30u, to allow 20u for sugar/sweetener/milk/creamer
/obj/item/reagent_containers/cup/coffeepot
name = "coffeepot"
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 60f79d3615b..40a41c6f033 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -397,7 +397,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/virusfood, 30
desc = "A huge metal vat with a tap on the front. Filled with cooking oil for use in frying food."
icon_state = "vat"
anchored = TRUE
- reagent_id = /datum/reagent/consumable/cooking_oil
+ reagent_id = /datum/reagent/consumable/nutriment/fat/oil
openable = TRUE
/obj/structure/reagent_dispensers/servingdish
diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm
index 9d3b442773e..f07ef21a8e7 100644
--- a/code/modules/research/designs/biogenerator_designs.dm
+++ b/code/modules/research/designs/biogenerator_designs.dm
@@ -3,7 +3,7 @@
///////////////////////////////////
/datum/design/milk
- name = "Milk"
+ name = "Synthetic Milk"
id = "milk"
build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.4)
@@ -11,7 +11,7 @@
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
/datum/design/soymilk
- name = "Soy Milk"
+ name = "Synthetic Soy Milk"
id = "soymilk"
build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.4)
@@ -19,7 +19,7 @@
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
/datum/design/ethanol
- name = "Ethanol"
+ name = "Synthetic Ethanol"
id = "ethanol"
build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
@@ -27,7 +27,7 @@
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
/datum/design/cream
- name = "Cream"
+ name = "Synthetic Cream"
id = "cream"
build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
@@ -35,7 +35,7 @@
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
/datum/design/black_pepper
- name = "Black Pepper"
+ name = "Synthetic Black Pepper"
id = "black_pepper"
build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
@@ -43,7 +43,7 @@
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
/datum/design/enzyme
- name = "Universal Enzyme"
+ name = "Synthetic Enzyme"
id = "enzyme"
build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
@@ -51,7 +51,7 @@
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
/datum/design/flour
- name = "Flour"
+ name = "Synthetic Flour"
id = "flour_sack"
build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
@@ -59,7 +59,7 @@
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
/datum/design/sugar
- name = "Sugar"
+ name = "Synthetic Sugar"
id = "sugar"
build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
@@ -70,7 +70,7 @@
name = "Monkey Cube"
id = "mcube"
build_type = BIOGENERATOR
- materials = list(/datum/material/biomass =SMALL_MATERIAL_AMOUNT*0.5)
+ materials = list(/datum/material/biomass = 50)
build_path = /obj/item/food/monkeycube
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
diff --git a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm
index 1210e5527eb..bec3092d8ea 100644
--- a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm
+++ b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm
@@ -10,11 +10,10 @@
supplementary_reagents = list(
/datum/reagent/growthserum = 2,
/datum/reagent/consumable/liquidgibs = 2,
- /datum/reagent/consumable/cornoil = 2,
/datum/reagent/consumable/nutriment = 1,
/datum/reagent/consumable/nutriment/vitamin = 1,
/datum/reagent/consumable/sugar = 1,
- /datum/reagent/consumable/cooking_oil = 1,
+ /datum/reagent/consumable/nutriment/fat/oil = 2,
/datum/reagent/consumable/rice = 1,
/datum/reagent/consumable/eggyolk = 1)
@@ -176,9 +175,8 @@
/datum/reagent/consumable/nutriment)
supplementary_reagents = list(
- /datum/reagent/consumable/cornoil = 4, //Carp are oily fish
+ /datum/reagent/consumable/nutriment/fat/oil = 4, //Carp are oily fish
/datum/reagent/toxin/carpotoxin = 3,
- /datum/reagent/consumable/cooking_oil = 2,
/datum/reagent/consumable/nutriment/vitamin = 2)
suppressive_reagents = list(
@@ -197,10 +195,9 @@
/datum/reagent/consumable/nutriment)
supplementary_reagents = list(
- /datum/reagent/consumable/cornoil = 4,
+ /datum/reagent/consumable/nutriment/fat/oil = 4,
/datum/reagent/growthserum = 3,
/datum/reagent/toxin/carpotoxin = 2,
- /datum/reagent/consumable/cooking_oil = 2,
/datum/reagent/consumable/nutriment/vitamin = 2)
suppressive_reagents = list(
@@ -526,8 +523,7 @@
/datum/reagent/consumable/vanillapudding = 8,
/datum/reagent/growthserum = 6,
/datum/reagent/consumable/nutriment/peptides = 4,
- /datum/reagent/consumable/cornoil = 3,
- /datum/reagent/consumable/cooking_oil = 1,
+ /datum/reagent/consumable/nutriment/fat/oil = 3,
/datum/reagent/consumable/space_cola = 1)
suppressive_reagents = list(
diff --git a/code/modules/unit_tests/hydroponics_harvest.dm b/code/modules/unit_tests/hydroponics_harvest.dm
index fefd8839cd2..8ff72c40b06 100644
--- a/code/modules/unit_tests/hydroponics_harvest.dm
+++ b/code/modules/unit_tests/hydroponics_harvest.dm
@@ -39,7 +39,7 @@
// Apples should harvest 10 apples with 10u nutrients and 4u vitamins.
test_seed(hydroponics_tray, planted_food_seed, human)
- // Sunflowers should harvest 10 sunflowers with 4u nutriment and 0u vitamins. It should also have 8u corn oil.
+ // Sunflowers should harvest 10 sunflowers with 4u nutriment and 0u vitamins. It should also have 8u oil.
test_seed(hydroponics_tray, planted_not_food_seed, human)
// Redbeets should harvest 5 beets (10 / 2) with 10u nutriments (5 x 2) and 10u vitamins (5 x 2) thanks to densified chemicals.
test_seed(hydroponics_tray, planted_densified_seed, human)
diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi
index 7a1f40d6fcd..944337b18e5 100755
Binary files a/icons/hud/screen_alert.dmi and b/icons/hud/screen_alert.dmi differ
diff --git a/modular_skyrat/modules/basic_mobs/code/bananaspider.dm b/modular_skyrat/modules/basic_mobs/code/bananaspider.dm
index 0900f7a1a74..6e3a7e26dcd 100644
--- a/modular_skyrat/modules/basic_mobs/code/bananaspider.dm
+++ b/modular_skyrat/modules/basic_mobs/code/bananaspider.dm
@@ -42,7 +42,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2)
foodtypes = GORE | MEAT | RAW
grind_results = list(/datum/reagent/blood = 20, /datum/reagent/consumable/liquidgibs = 5)
- juice_results = list(/datum/reagent/consumable/banana = 10)
+ juice_typepath = /datum/reagent/consumable/banana
/obj/item/food/deadbanana_spider/Initialize(mapload)
diff --git a/modular_skyrat/modules/cargo/code/packs.dm b/modular_skyrat/modules/cargo/code/packs.dm
index 48cb5693967..5da7ac90af4 100644
--- a/modular_skyrat/modules/cargo/code/packs.dm
+++ b/modular_skyrat/modules/cargo/code/packs.dm
@@ -438,8 +438,8 @@
desc = "Chef slop boring? Have high-maintenance crewmembers that with wings? Maybe you just want to revel in the sinful delight that are Cheese Curds? The Finest of our trade union has made the pack for you, containing a mix of fine oils, vinegar, and exceptionally rare ingredients."
cost = CARGO_CRATE_VALUE * 5
contains = list(
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
/obj/item/reagent_containers/condiment/vinegar,
/obj/item/reagent_containers/condiment/vinegar,
/obj/item/food/canned/tomatoes,
@@ -459,16 +459,16 @@
desc = "Normal cooking oil not cutting it? Chef throw all the quality stuff in the frier because they thought it was funny? Well, We got you covered, Introducing a bulk pack of Ten (10) bottles of our finest oils, blended for the perfect taste in cold recipes, and a resistance for going acrid when cooking."
cost = CARGO_CRATE_VALUE * 9
contains = list(
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
- /obj/item/reagent_containers/condiment/quality_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
+ /obj/item/reagent_containers/condiment/olive_oil,
)
crate_name = "bulk quality oil pack"
crate_type = /obj/structure/closet/crate/freezer
diff --git a/modular_skyrat/modules/customization/modules/food_and_drinks/food/hemophage_food.dm b/modular_skyrat/modules/customization/modules/food_and_drinks/food/hemophage_food.dm
index df3ef78eba4..970b9eb5710 100644
--- a/modular_skyrat/modules/customization/modules/food_and_drinks/food/hemophage_food.dm
+++ b/modular_skyrat/modules/customization/modules/food_and_drinks/food/hemophage_food.dm
@@ -4,7 +4,6 @@
icon = 'modular_skyrat/master_files/icons/obj/food/hemophage_food.dmi'
foodtypes = GORE | BLOODY
-
/obj/item/food/hemophage/blood_rice_pearl
name = "kessen shinju"
desc = "A fun finger food. Little clumps of sticky rice with a bit of ground pork and green onion, all soaked and rolled in fresh blood; giving it a crimson hue. Recommended to serve hot!"
@@ -15,7 +14,7 @@
)
tastes = list("rice" = 3, "blood" = 5)
foodtypes = GRAIN | GORE | BLOODY
-
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/hemophage/blood_rice_pearl/raw
name = "uncooked blood rice"
@@ -29,11 +28,11 @@
tastes = list("raw rice" = 3, "blood" = 5)
color = "#810000"
foodtypes = GRAIN | GORE | BLOODY | RAW
+ crafting_complexity = FOOD_COMPLEXITY_0
/obj/item/food/hemophage/blood_rice_pearl/raw/make_microwaveable()
AddElement(/datum/element/microwavable, /obj/item/food/hemophage/blood_rice_pearl)
-
/obj/item/food/hemophage/blood_noodles
name = "boiled blood noodles"
desc = "A plain dish of blood-soaked noodles, it would probably be better with more ingredients."
@@ -46,7 +45,7 @@
)
tastes = list("blood" = 5, "pasta" = 1)
foodtypes = GRAIN | GORE | BLOODY
-
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/hemophage/blood_noodles/raw
name = "raw blood noodles"
@@ -58,11 +57,11 @@
)
tastes = list("blood" = 5, "raw pasta" = 1)
foodtypes = GRAIN | GORE | BLOODY | RAW
+ crafting_complexity = FOOD_COMPLEXITY_0
/obj/item/food/hemophage/blood_noodles/raw/make_microwaveable()
AddElement(/datum/element/microwavable, /obj/item/food/hemophage/blood_noodles)
-
/obj/item/food/hemophage/blood_noodles/boat_noodles
name = "boat noodles"
desc = "A dish with normally made with a very strong combination of pork and beef; the main attraction in this meatless version being the combination of blood curds and curly noodles, seasoned and immersed in fresh blood to the point they've turned crimson. It reeks of iron."
@@ -76,7 +75,7 @@
)
tastes = list("blood" = 5, "congealed blood" = 3, "pasta" = 1)
foodtypes = GRAIN | GORE | BLOODY
-
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/hemophage/blood_curd
name = "blood curd"
@@ -88,7 +87,7 @@
)
tastes = list("congealed blood" = 1)
foodtypes = GORE | BLOODY | RAW
-
+ crafting_complexity = FOOD_COMPLEXITY_0
/obj/item/food/hemophage/blood_cake
name = "ti hoeh koe"
@@ -101,7 +100,7 @@
)
tastes = list("blood" = 5, "crunchy rice" = 2, "peanut butter" = 2)
foodtypes = GRAIN | GORE | BLOODY | SUGAR | NUTS
-
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/soup/hemophage/blood_soup
name = "dinuguan"
@@ -115,3 +114,4 @@
)
tastes = list("blood" = 5, "congealed blood" = 2, "chili" = 3, "vinegar" = 1, "garlic" = 1)
foodtypes = GORE | BLOODY | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_4
diff --git a/modular_skyrat/modules/customization/modules/food_and_drinks/food/scottish.dm b/modular_skyrat/modules/customization/modules/food_and_drinks/food/scottish.dm
index 12532d1951f..9a26ebee5d2 100644
--- a/modular_skyrat/modules/customization/modules/food_and_drinks/food/scottish.dm
+++ b/modular_skyrat/modules/customization/modules/food_and_drinks/food/scottish.dm
@@ -4,10 +4,11 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "haggis"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 50,
+ /datum/reagent/consumable/nutriment = 50,
/datum/reagent/consumable/nutriment/vitamin = 25
)
foodtypes = MEAT | GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/snacks/store/bread/haggis/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/snacks/breadslice/haggis, 5, 30, screentip_verb = "Slice")
@@ -18,10 +19,11 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "haggis_chunk"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 10,
+ /datum/reagent/consumable/nutriment = 10,
/datum/reagent/consumable/nutriment/vitamin = 5
)
foodtypes = MEAT | GRAIN
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/snacks/neep_tatty_haggis
@@ -30,11 +32,12 @@
icon_state = "neep_tatty_haggis"
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
food_reagents = list(
- /datum/reagent/consumable/nutriment = 20,
- /datum/reagent/consumable/nutriment/vitamin = 10,
+ /datum/reagent/consumable/nutriment = 20,
+ /datum/reagent/consumable/nutriment/vitamin = 10,
/datum/reagent/iron = 10
)
foodtypes = GRAIN | VEGETABLES | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/raw_sausage/battered
name = "raw battered sausage"
@@ -42,11 +45,12 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "batteredsausage"
food_reagents = list(
- /datum/reagent/consumable/nutriment/protein = 5,
- /datum/reagent/consumable/nutriment/vitamin = 2,
+ /datum/reagent/consumable/nutriment/protein = 5,
+ /datum/reagent/consumable/nutriment/vitamin = 2,
/datum/reagent/consumable/ethanol/beerbatter = 5
)
-
+ crafting_complexity = FOOD_COMPLEXITY_1
+
/obj/item/food/raw_sausage/battered/make_grillable()
AddComponent(/datum/component/grillable, /obj/item/food/sausage/battered, rand(60 SECONDS, 75 SECONDS), TRUE)
@@ -57,11 +61,12 @@
icon_state = "grilled_batteredsausage"
food_reagents = list(
/datum/reagent/consumable/nutriment/protein = 5,
- /datum/reagent/consumable/nutriment/vitamin = 2,
- /datum/reagent/consumable/nutriment = 2,
- /datum/reagent/consumable/cooking_oil = 2
+ /datum/reagent/consumable/nutriment/vitamin = 2,
+ /datum/reagent/consumable/nutriment = 2,
+ /datum/reagent/consumable/nutriment/fat/oil = 2
)
foodtypes = MEAT | BREAKFAST | FRIED
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/sausage/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/salami, 6, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -72,8 +77,9 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "shortbread"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 6,
+ /datum/reagent/consumable/nutriment = 6,
/datum/reagent/consumable/sugar = 6
)
tastes = list("sugary dough" = 1)
foodtypes = GRAIN | JUNKFOOD | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_2
diff --git a/modular_skyrat/modules/customization/modules/food_and_drinks/food/teshari_food.dm b/modular_skyrat/modules/customization/modules/food_and_drinks/food/teshari_food.dm
index 69c251509db..228916b4869 100644
--- a/modular_skyrat/modules/customization/modules/food_and_drinks/food/teshari_food.dm
+++ b/modular_skyrat/modules/customization/modules/food_and_drinks/food/teshari_food.dm
@@ -7,6 +7,7 @@
w_class = WEIGHT_CLASS_SMALL
tastes = list("minty dough" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/piru_dough/make_processable()
AddElement(/datum/element/processable, TOOL_ROLLINGPIN, /obj/item/food/flat_piru_dough, 1, 3 SECONDS, table_required = TRUE, screentip_verb = "Flatten")
@@ -27,6 +28,7 @@
foodtypes = VEGETABLES
w_class = WEIGHT_CLASS_SMALL
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/piru_loaf/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/piru, 4, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -39,6 +41,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 5)
tastes = list("minty bread" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/flat_piru_dough
name = "flattened piru dough"
@@ -48,6 +51,7 @@
food_reagents = list(/datum/reagent/consumable/nutriment = 6)
tastes = list("minty dough" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_1
/obj/item/food/flat_piru_dough/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/piru_pasta, 3, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -67,6 +71,7 @@
tastes = list("minty flatbread" = 1)
foodtypes = VEGETABLES
burns_on_grill = TRUE
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/piru_pasta
name = "piru pasta"
@@ -77,6 +82,7 @@
w_class = WEIGHT_CLASS_SMALL
tastes = list("minty pasta" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/baked_kiri
name = "baked kiri fruit"
@@ -84,13 +90,14 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "baked_kiri"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 6,
+ /datum/reagent/consumable/nutriment = 6,
/datum/reagent/consumable/kiri_jelly = 6
)
burns_in_oven = TRUE
w_class = WEIGHT_CLASS_SMALL
tastes = list("crispy sweetness" = 1, "caramelized jelly" = 1)
foodtypes = FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/baked_muli
name = "baked muli pod"
@@ -98,14 +105,15 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "baked_muli"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 4,
- /datum/reagent/consumable/nutriment/vitamin = 4,
+ /datum/reagent/consumable/nutriment = 4,
+ /datum/reagent/consumable/nutriment/vitamin = 4,
/datum/reagent/consumable/muli_juice = 4
)
burns_in_oven = TRUE
w_class = WEIGHT_CLASS_SMALL
tastes = list("zesty mintyness" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/spiced_jerky
name = "spiced jerky"
@@ -113,12 +121,13 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "spiced_jerky"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 8,
+ /datum/reagent/consumable/nutriment = 8,
/datum/reagent/consumable/nutriment/protein = 6
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("tough, spicy jerky" = 1)
foodtypes = MEAT
+ crafting_complexity = FOOD_COMPLEXITY_2
/obj/item/food/sirisai_wrap
name = "sirisai wrap"
@@ -126,13 +135,14 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "sirisai_wrap"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 8,
- /datum/reagent/consumable/nutriment/protein = 6,
+ /datum/reagent/consumable/nutriment = 8,
+ /datum/reagent/consumable/nutriment/protein = 6,
/datum/reagent/consumable/nutriment/vitamin = 6
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("cooked cabbage" = 1, "spiced meat" = 1, "minty piru bread" = 1)
foodtypes = MEAT | VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/sweet_piru_noodles
name = "sweet piru noodles"
@@ -141,14 +151,15 @@
icon_state = "sweet_piru_noodles"
trash_type = /obj/item/reagent_containers/cup/bowl
food_reagents = list(
- /datum/reagent/consumable/nutriment = 8,
- /datum/reagent/consumable/kiri_jelly = 4,
- /datum/reagent/consumable/muli_juice = 4,
+ /datum/reagent/consumable/nutriment = 8,
+ /datum/reagent/consumable/kiri_jelly = 4,
+ /datum/reagent/consumable/muli_juice = 4,
/datum/reagent/consumable/nutriment/vitamin = 4
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("minty piru noodles" = 1, "minty muli juice" = 1, "sugary kiri jelly" = 1, "baked carrots" = 1)
foodtypes = VEGETABLES | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/kiri_curry
name = "kiri curry"
@@ -157,14 +168,15 @@
icon_state = "kiri_curry"
trash_type = /obj/item/reagent_containers/cup/bowl
food_reagents = list(
- /datum/reagent/consumable/nutriment = 8,
- /datum/reagent/consumable/nutriment/protein = 4,
- /datum/reagent/consumable/kiri_jelly = 6,
+ /datum/reagent/consumable/nutriment = 8,
+ /datum/reagent/consumable/nutriment/protein = 4,
+ /datum/reagent/consumable/kiri_jelly = 6,
/datum/reagent/consumable/nutriment/vitamin = 4
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("heavily seasoned meat" = 1, "sweetened minty piru noodles" = 1, "zesty chilis" = 1)
foodtypes = VEGETABLES | FRUIT | SUGAR | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/sirisai_flatbread
name = "sirisai flatbread"
@@ -172,14 +184,15 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "sirisai_flatbread"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 24,
- /datum/reagent/consumable/nutriment/protein = 16,
- /datum/reagent/consumable/muli_juice = 12,
+ /datum/reagent/consumable/nutriment = 24,
+ /datum/reagent/consumable/nutriment/protein = 16,
+ /datum/reagent/consumable/muli_juice = 12,
/datum/reagent/consumable/nutriment/vitamin = 16
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("crispy minty flatbread" = 1, "minty muli pods" = 1, "tomato sauce" = 1, "tangy spice" = 1, "baked meat" = 1)
foodtypes = VEGETABLES | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/sirisai_flatbread/make_processable()
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/sirisai_flatbread_slice, 4, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice")
@@ -190,14 +203,15 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "sirisai_flatbread_slice"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 6,
- /datum/reagent/consumable/nutriment/protein = 4,
- /datum/reagent/consumable/muli_juice = 3,
+ /datum/reagent/consumable/nutriment = 6,
+ /datum/reagent/consumable/nutriment/protein = 4,
+ /datum/reagent/consumable/muli_juice = 3,
/datum/reagent/consumable/nutriment/vitamin = 4
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("crispy minty flatbread" = 1, "minty muli pods" = 1, "tomato sauce" = 1, "tangy spice" = 1, "baked meat" = 1)
foodtypes = VEGETABLES | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/bluefeather_crisp
name = "bluefeather crisp"
@@ -205,12 +219,13 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "bluefeather_crisp"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 4,
+ /datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/nutriment/vitamin = 2
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("chewy crackers" = 1, "zesty spice" = 1, "pleasant mintyness" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/bluefeather_crisps_and_dip
name = "bluefeather crisps and dip"
@@ -218,13 +233,14 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "bluefeather_crisps_and_dip"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 12,
- /datum/reagent/consumable/muli_juice = 8,
+ /datum/reagent/consumable/nutriment = 12,
+ /datum/reagent/consumable/muli_juice = 8,
/datum/reagent/consumable/nutriment/vitamin = 6
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("chewy crackers" = 1, "tangy dip" = 1, "pleasant mintyness" = 1)
foodtypes = VEGETABLES
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/stewed_muli
name = "stewed muli"
@@ -233,14 +249,15 @@
icon_state = "stewed_muli"
trash_type = /obj/item/reagent_containers/cup/bowl
food_reagents = list(
- /datum/reagent/consumable/nutriment = 10,
- /datum/reagent/consumable/nutriment/protein = 8,
- /datum/reagent/consumable/nutriment/vitamin = 6,
+ /datum/reagent/consumable/nutriment = 10,
+ /datum/reagent/consumable/nutriment/protein = 8,
+ /datum/reagent/consumable/nutriment/vitamin = 6,
/datum/reagent/consumable/muli_juice = 6
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("hearty spiced meat" = 1, "baked carrots" = 1, "baked cabbage" = 1, "minty broth" = 1)
foodtypes = VEGETABLES | MEAT
+ crafting_complexity = FOOD_COMPLEXITY_5
/obj/item/food/stuffed_muli_pod
name = "stuffed muli pod"
@@ -248,14 +265,15 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "stuffed_muli_pod"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 8,
- /datum/reagent/consumable/nutriment/protein = 4,
- /datum/reagent/consumable/nutriment/vitamin = 4,
+ /datum/reagent/consumable/nutriment = 8,
+ /datum/reagent/consumable/nutriment/protein = 4,
+ /datum/reagent/consumable/nutriment/vitamin = 4,
/datum/reagent/consumable/muli_juice = 4
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("spiced meat" = 1, "minty muli pod" = 1, "super-sweet kiri fruit" = 1, "chili" = 1)
foodtypes = VEGETABLES | FRUIT | MEAT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/caramel_jelly_toast
name = "caramel jelly toast"
@@ -263,12 +281,13 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "caramel_jelly_toast"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 8,
+ /datum/reagent/consumable/nutriment = 8,
/datum/reagent/consumable/nutriment/vitamin = 6
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("minty piru bread" = 1, "sweet caramel" = 1, "super-sweet kiri jelly" = 1)
foodtypes = VEGETABLES | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
/obj/item/food/kiri_jellypuff
name = "kiri jellypuff"
@@ -276,10 +295,11 @@
icon = 'modular_skyrat/master_files/icons/obj/food/irnbru.dmi'
icon_state = "kiri_jellypuff"
food_reagents = list(
- /datum/reagent/consumable/nutriment = 8,
- /datum/reagent/consumable/nutriment/vitamin = 6,
+ /datum/reagent/consumable/nutriment = 8,
+ /datum/reagent/consumable/nutriment/vitamin = 6,
/datum/reagent/consumable/kiri_jelly = 4
)
w_class = WEIGHT_CLASS_SMALL
tastes = list("puffed minty piru bread" = 1, "rich cream" = 1, "super-sweet kiri jelly" = 1)
foodtypes = VEGETABLES | FRUIT | SUGAR
+ crafting_complexity = FOOD_COMPLEXITY_4
diff --git a/modular_skyrat/modules/customization/modules/food_and_drinks/recipes/drinks_recipes.dm b/modular_skyrat/modules/customization/modules/food_and_drinks/recipes/drinks_recipes.dm
index 636e0071c27..14691393f03 100644
--- a/modular_skyrat/modules/customization/modules/food_and_drinks/recipes/drinks_recipes.dm
+++ b/modular_skyrat/modules/customization/modules/food_and_drinks/recipes/drinks_recipes.dm
@@ -215,7 +215,7 @@
/datum/chemical_reaction/drink/beerbatter
results = list(/datum/reagent/consumable/ethanol/beerbatter = 4)
- required_reagents = list(/datum/reagent/consumable/cooking_oil = 1, /datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/flour = 1)
+ required_reagents = list(/datum/reagent/consumable/nutriment/fat/oil = 1, /datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/flour = 1)
mix_message = "Sizzling and cracking is heard as you beat the mixture into submission."
/datum/chemical_reaction/drink/shakiri_spritz
diff --git a/modular_skyrat/modules/customization/modules/hydroponics/grown/muli.dm b/modular_skyrat/modules/customization/modules/hydroponics/grown/muli.dm
index 308d34ca193..7f787804fc6 100644
--- a/modular_skyrat/modules/customization/modules/hydroponics/grown/muli.dm
+++ b/modular_skyrat/modules/customization/modules/hydroponics/grown/muli.dm
@@ -22,7 +22,7 @@
icon = 'modular_skyrat/master_files/icons/obj/hydroponics/harvest.dmi'
icon_state = "muli"
foodtypes = VEGETABLES
- juice_results = list(/datum/reagent/consumable/muli_juice = 0.3)
+ juice_typepath = /datum/reagent/consumable/muli_juice
grind_results = list(/datum/reagent/consumable/muli_juice = 0.1)
tastes = list("mint and savory sweetness" = 1)
diff --git a/modular_skyrat/modules/modular_items/code/pastries.dm b/modular_skyrat/modules/modular_items/code/pastries.dm
index d99e4d1da27..8ae5939bb09 100644
--- a/modular_skyrat/modules/modular_items/code/pastries.dm
+++ b/modular_skyrat/modules/modular_items/code/pastries.dm
@@ -9,6 +9,7 @@
foodtypes = GRAIN | SUGAR | FRUIT
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2)
tastes = list("fruit" = 1, "raisins" = 1, "christmas spirit" = 1)
+ crafting_complexity = FOOD_COMPLEXITY_3
/obj/item/food/mimce_pie
name = "mimce pie"
@@ -20,6 +21,7 @@
foodtypes = GRAIN | SUGAR | FRUIT
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2)
tastes = list("nothing" = 1, "christmas spirit" = 1)
+ crafting_complexity = FOOD_COMPLEXITY_3
// RECIPE
diff --git a/modular_skyrat/modules/primitive_cooking_additions/code/big_mortar.dm b/modular_skyrat/modules/primitive_cooking_additions/code/big_mortar.dm
index 23069d83941..da1aacc9d05 100644
--- a/modular_skyrat/modules/primitive_cooking_additions/code/big_mortar.dm
+++ b/modular_skyrat/modules/primitive_cooking_additions/code/big_mortar.dm
@@ -90,7 +90,7 @@
switch(picked_option)
if("Juice")
for(var/obj/item/target_item as anything in contents)
- if(target_item.juice_results)
+ if(target_item.juice_typepath)
juice_target_item(target_item, user)
else
grind_target_item(target_item, user)
@@ -103,7 +103,7 @@
juice_target_item(target_item, user)
return
- if(!attacking_item.juice_results && !attacking_item.grind_results)
+ if(!attacking_item.grind_results && !attacking_item.juice_typepath)
balloon_alert(user, "can't grind this")
return ..()
@@ -115,24 +115,16 @@
///Juices the passed target item, and transfers any contained chems to the mortar as well
/obj/structure/large_mortar/proc/juice_target_item(obj/item/to_be_juiced, mob/living/carbon/human/user)
- to_be_juiced.on_juice()
- reagents.add_reagent_list(to_be_juiced.juice_results)
+ to_be_juiced.juice(src, user)
- if(to_be_juiced.reagents) //If juiced item has reagents within, transfer them to the mortar
- to_be_juiced.reagents.trans_to(src, to_be_juiced.reagents.total_volume, transfered_by = user)
-
- to_chat(user, span_notice("You juice [to_be_juiced] into a fine liquid."))
+ to_chat(user, span_notice("You juice [to_be_juiced] into a liquid."))
QDEL_NULL(to_be_juiced)
///Grinds the passed target item, and transfers any contained chems to the mortar as well
/obj/structure/large_mortar/proc/grind_target_item(obj/item/to_be_ground, mob/living/carbon/human/user)
- to_be_ground.on_grind()
- reagents.add_reagent_list(to_be_ground.grind_results)
+ to_be_ground.grind(src, user)
- if(to_be_ground.reagents) //If grinded item has reagents within, transfer them to the mortar
- to_be_ground.reagents.trans_to(src, to_be_ground.reagents.total_volume, transfered_by = user)
-
- to_chat(user, span_notice("You break [to_be_ground] into powder."))
+ to_chat(user, span_notice("You break [to_be_ground] into a fine powder."))
QDEL_NULL(to_be_ground)
#undef LARGE_MORTAR_STAMINA_MINIMUM
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/amauri.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/amauri.dm
index af6c178a007..ed234b942e8 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/amauri.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/amauri.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/medicine/psicodine = 0)
+ juice_typepath = /datum/reagent/medicine/psicodine
tastes = list("shadow" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/gelthi.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/gelthi.dm
index 63013a631dc..3ff46763f1e 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/gelthi.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/gelthi.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/gold = 0)
+ juice_typepath = /datum/reagent/gold
tastes = list("gold" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/jurlmah.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/jurlmah.dm
index 95dda523b59..5351435276b 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/jurlmah.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/jurlmah.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/medicine/cryoxadone = 0)
+ juice_typepath = /datum/reagent/medicine/cryoxadone
tastes = list("cold" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/nofruit.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/nofruit.dm
index 770259c1266..65d8625e5d8 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/nofruit.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/nofruit.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/nothing = 0)
+ juice_typepath = /datum/reagent/consumable/nothing
tastes = list("entertainment" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/shand.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/shand.dm
index a898cd99ed9..c028b7b6082 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/shand.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/shand.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/pax = 0)
+ juice_typepath = /datum/reagent/pax
tastes = list("peace" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/surik.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/surik.dm
index b055083e428..073274209dd 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/surik.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/surik.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/consumable/frostoil = 0)
+ juice_typepath = /datum/reagent/consumable/frostoil
tastes = list("snow" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/telriis.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/telriis.dm
index 0193e4e140b..7783cbdac1b 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/telriis.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/telriis.dm
@@ -25,5 +25,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/medicine/higadrite = 0)
+ juice_typepath = /datum/reagent/medicine/higadrite
tastes = list("liver" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/thaadra.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/thaadra.dm
index 0c6384ed79a..e9eeadb274e 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/thaadra.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/thaadra.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/silver = 0)
+ juice_typepath = /datum/reagent/silver
tastes = list("silver" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/vale.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/vale.dm
index b3a78598dae..adf8654d6b6 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/vale.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/vale.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/medicine/neurine = 0)
+ juice_typepath = /datum/reagent/medicine/neurine
tastes = list("medicine" = 1)
diff --git a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/vaporsac.dm b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/vaporsac.dm
index fb3d6f72efc..1f467a66ab6 100644
--- a/modular_skyrat/modules/xenoarch/code/modules/hydroponics/vaporsac.dm
+++ b/modular_skyrat/modules/xenoarch/code/modules/hydroponics/vaporsac.dm
@@ -24,5 +24,5 @@
filling_color = "#FF4500"
bite_consumption_mod = 0.5
foodtypes = FRUIT
- juice_results = list(/datum/reagent/nitrous_oxide = 0)
+ juice_typepath = /datum/reagent/nitrous_oxide
tastes = list("sleep" = 1)
diff --git a/tgstation.dme b/tgstation.dme
index f53f2663d45..c5ecfcf71a4 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1539,6 +1539,7 @@
#include "code\datums\mood_events\dna_infuser_events.dm"
#include "code\datums\mood_events\drink_events.dm"
#include "code\datums\mood_events\drug_events.dm"
+#include "code\datums\mood_events\food_events.dm"
#include "code\datums\mood_events\generic_negative_events.dm"
#include "code\datums\mood_events\generic_positive_events.dm"
#include "code\datums\mood_events\morbid_events.dm"
@@ -1617,6 +1618,7 @@
#include "code\datums\status_effects\agent_pinpointer.dm"
#include "code\datums\status_effects\buffs.dm"
#include "code\datums\status_effects\drug_effects.dm"
+#include "code\datums\status_effects\food_effects.dm"
#include "code\datums\status_effects\gas.dm"
#include "code\datums\status_effects\grouped_effect.dm"
#include "code\datums\status_effects\limited_effect.dm"
@@ -1624,6 +1626,8 @@
#include "code\datums\status_effects\song_effects.dm"
#include "code\datums\status_effects\stacking_effect.dm"
#include "code\datums\status_effects\wound_effects.dm"
+#include "code\datums\status_effects\buffs\food_haste.dm"
+#include "code\datums\status_effects\buffs\food_traits.dm"
#include "code\datums\status_effects\buffs\stun_absorption.dm"
#include "code\datums\status_effects\debuffs\blindness.dm"
#include "code\datums\status_effects\debuffs\choke.dm"
diff --git a/tgui/packages/tgui/interfaces/PersonalCrafting.tsx b/tgui/packages/tgui/interfaces/PersonalCrafting.tsx
index d1b776dda1e..20a288a2828 100644
--- a/tgui/packages/tgui/interfaces/PersonalCrafting.tsx
+++ b/tgui/packages/tgui/interfaces/PersonalCrafting.tsx
@@ -145,7 +145,7 @@ type Data = {
categories: string[];
material_occurences: Material[];
foodtypes: string[];
- nutriments: number;
+ complexity: number;
};
export const PersonalCrafting = (props, context) => {
@@ -829,14 +829,14 @@ const RecipeContent = ({ item, craftable, busy, mode, diet }, context) => {
}
/>
)}
- {item.nutriments > 0 && (
+ {!!item.complexity && (
- Nutrition: {item.nutriments}
-
+ Complexity: {item.complexity}
)}
{item.foodtypes?.length > 0 && (
+
{item.foodtypes.map((foodtype) => (
{
])(seeds_filtered || []);
sortField !== 'name' && seeds.reverse();
return (
-
+
@@ -73,88 +77,81 @@ export const SeedExtractor = (props, context) => {
setSortField('potency')}>
- Potency
+ PTN
setSortField('yield')}>
- Yield
+ YLD
setSortField('instability')}>
- Instability
+ INS
setSortField('endurance')}>
- Endurance
+ END
+ content={`Lifespan: The age at which the plant starts decaying, in ${data.cycle_seconds} second long cycles. Improves quality of resulting food & drinks.`}>
setSortField('lifespan')}>
- Lifespan
+ LFS
+ content={`Maturation: The age required for the first harvest, in ${data.cycle_seconds} second long cycles.`}>
setSortField('maturation')}>
- Maturation
+ MTR
+ content={`Production: The period of product regrowth, in ${data.cycle_seconds} second long cycles.`}>
setSortField('production')}>
- Production
+ PRD
-
- setSortField('amount')}>
- Amount
-
-
{sortField !== 'name' && (
@@ -189,7 +186,7 @@ export const SeedExtractor = (props, context) => {
/>
- {item.name}
+ {`${item.amount}x ${item.name}`}
{item.traits?.map((trait) => (
@@ -199,11 +196,18 @@ export const SeedExtractor = (props, context) => {
trait_db={data.trait_db}
/>
))}
+ {!!item.mutatelist.length && (
+
+
+
+ )}
{item.reagents.length > 0 && (
@@ -211,6 +215,17 @@ export const SeedExtractor = (props, context) => {
)}
+ {!!item.juice_name && (
+
+
+
+ )}
+ {!!item.distill_reagent && (
+
+
+
+ )}
@@ -228,13 +243,10 @@ export const SeedExtractor = (props, context) => {
- {item.maturation}
+ {item.maturation}
- {item.production}
-
-
- {item.amount}
+ {item.production}
{
return (
- Reagents
+ Reagents on grind:
- {props.reagents?.map((reagent) => (
-
+ {props.reagents?.map((reagent, i) => (
+
{reagent.name}
{Math.max(
@@ -324,6 +336,20 @@ const ReagentTooltip = (props) => {
))}
+ {!!props.grind_results.length && (
+ <>
+
+
+ Nutriments turn into:
+
+
+ {props.grind_results?.map((reagent, i) => (
+
+ {reagent}
+
+ ))}
+ >
+ )}
);
};