Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kitchen rework part 1: machines and recipes. #28277

Open
wants to merge 16 commits into
base: master
Choose a base branch
from

Conversation

warriorstar-orion
Copy link
Contributor

@warriorstar-orion warriorstar-orion commented Feb 6, 2025

What Does This PR Do

This PR implements the first part of the kitchen rework, covering machines and recipes.

The new cooking system is based off of CWJ, a module which I believe was first implemented in Sojourn Station. This code has been extensively rewritten not only to improve the implementation and bring it in line with Para coding standards/idioms, but extended to include all of our existing machines and recipes.

More is coming but this is just getting the first phase in a TMable state to start getting player feedback, iron out bugs, and get eyes on the code.

Summary

Kitchens now have new and reworked machines: stovetops, grills, ovens, deep fryers, and ice cream mixers.

Recipes are made on/in a container, and optionally that container is placed on a cooking machine to finish/progress the recipe.
For example, to make a burger, a bun, lettuce, and patty must be put on a cutting board. To make a fried egg, an egg, salt, and pepper must be placed in a pan, and the pan must be placed on a stovetop and cooked for 10 seconds on medium.

Food now has a quality rating. The more closely a recipe is followed, the better the rating. The higher upgrade-tier the cooking machines, the better the rating. Quality rating currently has no mechanical benefits but will soon be expanded to include useful buffs.

This is just the foundation for the kitchen rework; all the stuff regarding food quality and mid-round mechanical improvements like autochefs are coming in later PRs; trying to do this all at once would be a nightmare and exhausting to test and review.

Why It's Good For The Game

See the project discussion thread for background and motivation.

Images of changes

2025_02_06__10_00_59__Paradise Station 13

2025_02_06__09_54_44__Paradise Station 13

Testing

So much.


Declaration

  • I confirm that I either do not require pre-approval for this PR, or I have obtained such approval and have included a screenshot to demonstrate this below.

Changelog

🆑
add: Cooking machines and recipes have been reworked. Recipes now typically require a "container" for ingredients, such as a prep bowl for salads or a frying pan for using on the stove. Most recipe steps must be followed in order, and their cooking steps will specify a temperature and an amount of time.
add: Kitchens have new and reworked machines: stovetops, grills, ovens, deep fryers, and ice cream mixer.
add: Prepared food now has a quality rating. The more closely the recipe is followed, and the higher the cooking machine upgrades, the better the rating. This rating has no mechanical benefits currently.
add: The chef's PDA starts with a cartridge containing a searchable database of all food recipes.
add: Leaving food cooking on a machine for too long will cause it to become a burned mess. Leave it on longer than that and the machine will catch on fire!
wip: Currently the only purpose of microwaves is to reheat donk pockets. Microwaves have been added into some department break rooms.
wip: Expert chef knowledge temporarily disabled while it gets integrated into the new recipe system.
wip: Some cooking machine interactions such as special attacks and deep fryer ice explosions are temporarily disabled.
fix: Recipes meant to remove toxins on creation, such as boiled spider legs, work properly.
del: Mixing bowls have been removed as they are no longer necessary for available recipes.
/:cl:

@ParadiseSS13-Bot ParadiseSS13-Bot added Testmerge Requested This PR has a pending testmerge request -Status: Awaiting approval This PR is waiting for approval internally Map Edit This PR will modify a map Sprites This PR modifies the game sprites Sound This PR modifies the game sound TGUI This PR modifies TGUI, will conflict labels Feb 6, 2025
@ParadiseSS13-Bot ParadiseSS13-Bot added the Testmerge Active This PR is currently testmerged on production label Feb 6, 2025
@WenlockTheBritishHobo
Copy link
Contributor

Cakes don't seem to be able to be made.

Might be something to do with reagents in cooking, or specifically milk?

@ParadiseSS13-Bot ParadiseSS13-Bot added Testmerge Active This PR is currently testmerged on production and removed Testmerge Active This PR is currently testmerged on production labels Feb 7, 2025
@AshGraham94
Copy link

I think there might be an issue with some cutting board recipes? yesterday I tried making peanut butter banana sandwiches, and it will say "you are finished cooking with the cutting board" after only adding one bread slice and the peanut butter. won't take anything else to finish the recipe saying the cutting board is full. similar issue with the PB&J variant.

@WenlockTheBritishHobo
Copy link
Contributor

It seems like it's recipes that partially or fully use reagents that don't properly work. Such as Wish Soup or the Superbite Burger.

@ParadiseSS13-Bot ParadiseSS13-Bot removed the Testmerge Active This PR is currently testmerged on production label Feb 7, 2025
@hanyuuuuuuuu
Copy link

I love this PR and think all of these changes make playing around in the kitchen really, really fun, though putting reagents and items on/in cooking utensils seems a decent bit scuffed as you have to follow your recipe in the exact order specified in the recipe book in some cases.

@ParadiseSS13-Bot ParadiseSS13-Bot added -Status: Awaiting review This PR is awaiting review from the review team and removed -Status: Awaiting approval This PR is waiting for approval internally labels Feb 8, 2025

// Burn times for cooking things on a stove.
// Anything put on a stove for this long becomes a burned mess.
#define PCWJ_BURN_TIME_LOW 3 MINUTES
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that these times are overly forgiving.

Setting the cook time to exact is trivial, and there's no risk in setting something to cook for 59 seconds in this way.

I'd like to see the times adjusted so that there's some risk involved, otherwise no one is going to burn food ever again.

lip = "oven_dish_lip"
materials = list(MAT_METAL = 10)

/obj/item/reagent_containers/cooking/pan
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You've specified a hitsound, but this item can't actually strike someone, even on harm intent. I think you need to specify force. A comparable item would be the baseball bat, which has

force = 10
throwforce = 12
attack_verb = list("beat", "smacked")

AM.forceMove(get_turf(target))

if(ismob(user))
to_chat(user, "<span class='notice'>You remove all the solid items from [src].</span>")
Copy link
Contributor

@pwbokie pwbokie Feb 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If reagents are also removed, this message is very misleading. I'd like this message to just read "You remove everything from [src]" or change dynamically based on what is removed.


return calculated_quality - (total_volume - calculated_volume)

/proc/initialize_cooking_recipes()
Copy link
Contributor

@pwbokie pwbokie Feb 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice if this initialize_cooking_recipes checked for duplicates. I recall seeing an exact duplicate of a recipe in the cookbook at least once.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-Status: Awaiting review This PR is awaiting review from the review team Map Edit This PR will modify a map Sound This PR modifies the game sound Sprites This PR modifies the game sprites Testmerge Requested This PR has a pending testmerge request TGUI This PR modifies TGUI, will conflict
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

6 participants