Files
Bubberstation/code/modules/unit_tests/food_edibility_check.dm
SkyratBot 810fef5fde [MIRROR] This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional. [MDB IGNORE] (#17848)
* This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional. (#71551)

## About The Pull Request

Refactors deepfrying, removing the gross Deep Fried Foods Holder Object
and replacing it with the edible component.

Now, deep frying a food will simply make the item edible directly. This
means it's still functional and doesn't become a dead item.

This follows the same method that grilling uses when applying its
effects. Tweaks grilling a bit so they line up better. Also, silver
foods can make grilled items.

![image](https://user-images.githubusercontent.com/51863163/204105022-ee66889b-f843-4dc2-b0dc-5f1eb5ba19c3.png)

I swear this is unrelated to the other 2 fried foods related PRs. I
started this a few weeks ago.

## Why It's Good For The Game

Tangibly better code (doesn't have to copy a million vars! Less
abusable!) at the price of removing a soulful piece of code. Also means
that deep frying an item doesn't irreversibly make it unusable / dead.
This is sad, but... damn the holder object sucks.

Unfortunate side effect is that anything that overrides `attack` to not
send signal will *not* be edible when deepfried. Maybe this encourages
better signal use?

Either that or fried foods can override `pre_attack` to hook directly
into eating. I can do that as well.

## Changelog

🆑 Melbert
refactor: Refactored deep fried foods. Deep fried foods are still
""usable"" as their normal item, but are just edible.
qol: Silver Slime stuff can spawn grilled as well as fried.
/🆑

* This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional.

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2022-12-01 01:11:20 +00:00

24 lines
761 B
Plaintext

/// Makes sure that spawned food has reagents and the edible component (or else it can't be eaten).
/datum/unit_test/food_edibility_check
/datum/unit_test/food_edibility_check/Run()
var/list/not_food = list(
/obj/item/food/grown,
/obj/item/food/grown/mushroom,
/obj/item/food/clothing,
/obj/item/food/meat/slab/human/mutant,
/obj/item/food/grown/shell)
var/list/food_paths = subtypesof(/obj/item/food) - not_food
for(var/food_path in food_paths)
var/obj/item/food/spawned_food = allocate(food_path)
if(!spawned_food.reagents)
TEST_FAIL("[food_path] does not have any reagents, making it inedible!")
if(!IS_EDIBLE(spawned_food))
TEST_FAIL("[food_path] does not have the edible component, making it inedible!")
qdel(spawned_food)