Files
Bubberstation/code/modules/cargo/bounties/chef.dm
T
MrMelbertandGitHub 6085e3b5ee Reagent soup / Soup rework / Stoves - A kitchen expansion (#74205)
## About The Pull Request


![image](https://user-images.githubusercontent.com/51863163/227391708-8de28b68-149f-4e02-a2d3-22f6e3067784.png)

**This PR:** 

- Reworks most* existing soup into reagents. 

- Adds Stoves and Ranges. Ranges replace most* existing ovens. 

- Adds soup pots, to cook soup

**How does it work?** 

In the kitchen you will find a stove now.

Stoves act as a "reagent container heater", essentially a chem heater.
You can set a pot onto the stove.

To make soup, visit the cooking recipe book for a guide. Most recipes
are the same as before, just tweaked slightly - Add water to the pot (50
units for 1 batch generally), then add all the corresponding ingredients
to the pot. Set the pot out on the stove and right click it to turn it
on. If the recipe's correct, shortly it will start to mix and give you
soup!

One soup recipe will give you roughly 3 servings of soup. You can pour
our the soup into a bowl using a ladle or just by pouring it manually.

Of note: **All of the reagent contents of the ingredient are transferred
into the soup.** Better, more nutrient rich ingredients produces more
soup, and poisoned produce will pass it on.

If you place the soup into a chem master, you will notice it's roughly
half "soup reagent" and half a variety of reagents, including nutriments
/ proteins. This is your soup! It is recommended you serve your soup
with the reagents included, as they make up more nutrition for the
customer, however you can separate it out if you're picky.

**Todo:** 

- [x] Fill out the PR body a bit more 
- [x] Mapping (wait for big merge conflict pr to go past)
- [x] Soup colors
- [x] Balance pass over for soup recipes
- [x] TODOs
- [ ] Unit tests
- [x] Cullen Skink's recipe is invalid
- [x] Try to see if there's an easy way to prevent soup from fattening
you up too easy.

## Why it's good for the game

Adds some more depth to the kitchen and moves chef away from the
click-button-get-food style that exists.

Allows for inherently custom soups by the way of making it reagents, so
no need to support custom soup food items.

## Changelog

🆑 Melbert, stove and pot sprites by Kryson, ladle sprite by Kinneb
add: Kitchens are now stocked with Ranges. 
add: You can now print (and create) Stoves. 
add: The dinnerware vendor now dispenses ladles. 
add: Spoons can now actually spoon... things.
add: Soup has been reworked entirely. Soups are now reagents, cooked via
a soup pot on a Stove or Range. Simply add water and your required
items, then apply heat. Be careful not to boil over!
add: Stoves, Ranges, and Griddles will now heat up their surroundings -
don't turn them on around plasma!
fix: Fixes being able to cook in an Oven while the room is depowered
qol: Hitting a customer bot with an incorrect recipe no longer counts as
a hostile attack leading to your demise shortly after
refactor: Customer bots that request a reagent now use custom orders
code: Cut down a lot of code in the crafting menu code, and removes some
ugly ispaths
del: Soup is no longer food items, so can't appear in random food pools
(at least not yet).
balance: Virus Food recipe now requires you cool it to 200k.
/🆑
2023-04-07 19:42:49 -06:00

167 lines
6.8 KiB
Plaintext

/datum/bounty/item/chef/birthday_cake
name = "Birthday Cake"
description = "Nanotrasen's birthday is coming up! Ship Central Command a birthday cake to celebrate!"
reward = CARGO_CRATE_VALUE * 8
wanted_types = list(
/obj/item/food/cake/birthday = TRUE,
/obj/item/food/cakeslice/birthday = TRUE
)
/datum/bounty/reagent/chef/soup
name = "Soup"
description = "To quell the homeless uprising, Nanotrasen will be serving soup to all underpaid workers."
/datum/bounty/reagent/chef/soup/New()
. = ..()
required_volume = pick(10, 15, 20, 25)
wanted_reagent = pick(subtypesof(/datum/reagent/consumable/nutriment/soup))
reward = CARGO_CRATE_VALUE * round(required_volume / 3)
// In the future there could be tiers of soup bounty corresponding to soup difficulty
// (IE, stew is harder to make than tomato soup, so it should reward more)
description += " Send us [required_volume] units of [initial(wanted_reagent.name)]."
/datum/bounty/item/chef/popcorn
name = "Popcorn Bags"
description = "Upper management wants to host a movie night. Ship bags of popcorn for the occasion."
reward = CARGO_CRATE_VALUE * 6
required_count = 3
wanted_types = list(/obj/item/food/popcorn = TRUE)
/datum/bounty/item/chef/onionrings
name = "Onion Rings"
description = "Nanotrasen is remembering Saturn day. Ship onion rings to show the station's support."
reward = CARGO_CRATE_VALUE * 6
required_count = 3
wanted_types = list(/obj/item/food/onionrings = TRUE)
/datum/bounty/item/chef/icecreamsandwich
name = "Ice Cream Sandwiches"
description = "Upper management has been screaming non-stop for ice cream sandwiches. Please send some."
reward = CARGO_CRATE_VALUE * 8
required_count = 3
wanted_types = list(/obj/item/food/icecreamsandwich = TRUE)
/datum/bounty/item/chef/strawberryicecreamsandwich
name = "Strawberry Ice Cream Sandwiches"
description = "Upper management has been screaming non-stop for more flavourful ice cream sandwiches. Please send some."
reward = CARGO_CRATE_VALUE * 10
required_count = 3
wanted_types = list(/obj/item/food/strawberryicecreamsandwich = TRUE)
/datum/bounty/item/chef/bread
name = "Bread"
description = "Problems with central planning have led to bread prices skyrocketing. Ship some bread to ease tensions."
reward = CARGO_CRATE_VALUE * 2
wanted_types = list(
/obj/item/food/bread = TRUE,
/obj/item/food/breadslice = TRUE,
/obj/item/food/bun = TRUE,
/obj/item/food/pizzabread = TRUE,
/obj/item/food/rawpastrybase = TRUE,
)
/datum/bounty/item/chef/pie
name = "Pie"
description = "3.14159? No! CentCom management wants edible pie! Ship a whole one."
reward = 3142 //Screw it I'll do this one by hand
wanted_types = list(/obj/item/food/pie = TRUE)
/datum/bounty/item/chef/salad
name = "Salad or Rice Bowls"
description = "CentCom management is going on a health binge. Your order is to ship salad or rice bowls."
reward = CARGO_CRATE_VALUE * 6
required_count = 3
wanted_types = list(/obj/item/food/salad = TRUE)
/datum/bounty/item/chef/carrotfries
name = "Carrot Fries"
description = "Night sight can mean life or death! A shipment of carrot fries is the order."
reward = CARGO_CRATE_VALUE * 7
required_count = 3
wanted_types = list(/obj/item/food/carrotfries = TRUE)
/datum/bounty/item/chef/superbite
name = "Super Bite Burger"
description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him."
reward = CARGO_CRATE_VALUE * 24
wanted_types = list(/obj/item/food/burger/superbite = TRUE)
/datum/bounty/item/chef/poppypretzel
name = "Poppy Pretzel"
description = "Central Command needs a reason to fire their HR head. Send over a poppy pretzel to force a failed drug test."
reward = CARGO_CRATE_VALUE * 6
wanted_types = list(/obj/item/food/poppypretzel = TRUE)
/datum/bounty/item/chef/cubancarp
name = "Cuban Carp"
description = "To celebrate the birth of Castro XXVII, ship one cuban carp to CentCom."
reward = CARGO_CRATE_VALUE * 16
wanted_types = list(/obj/item/food/cubancarp = TRUE)
/datum/bounty/item/chef/hotdog
name = "Hot Dog"
description = "Nanotrasen is conducting taste tests to determine the best hot dog recipe. Ship your station's version to participate."
reward = CARGO_CRATE_VALUE * 16
wanted_types = list(/obj/item/food/hotdog = TRUE)
/datum/bounty/item/chef/eggplantparm
name = "Eggplant Parmigianas"
description = "A famous singer will be arriving at CentCom, and their contract demands that they only be served Eggplant Parmigiana. Ship some, please!"
reward = CARGO_CRATE_VALUE * 7
required_count = 3
wanted_types = list(/obj/item/food/eggplantparm = TRUE)
/datum/bounty/item/chef/muffin
name = "Muffins"
description = "The Muffin Man is visiting CentCom, but he's forgotten his muffins! Your order is to rectify this."
reward = CARGO_CRATE_VALUE * 6
required_count = 3
wanted_types = list(/obj/item/food/muffin = TRUE)
/datum/bounty/item/chef/chawanmushi
name = "Chawanmushi"
description = "Nanotrasen wants to improve relations with its sister company, Japanotrasen. Ship Chawanmushi immediately."
reward = CARGO_CRATE_VALUE * 16
wanted_types = list(/obj/item/food/chawanmushi = TRUE)
/datum/bounty/item/chef/kebab
name = "Kebabs"
description = "Remove all kebab from station you are best food. Ship to CentCom to remove from the premises."
reward = CARGO_CRATE_VALUE * 7
required_count = 3
wanted_types = list(/obj/item/food/kebab = TRUE)
/datum/bounty/item/chef/soylentgreen
name = "Soylent Green"
description = "CentCom has heard wonderful things about the product 'Soylent Green', and would love to try some. If you indulge them, expect a pleasant bonus."
reward = CARGO_CRATE_VALUE * 10
wanted_types = list(/obj/item/food/soylentgreen = TRUE)
/datum/bounty/item/chef/pancakes
name = "Pancakes"
description = "Here at Nanotrasen we consider employees to be family. And you know what families love? Pancakes. Ship a baker's dozen."
reward = CARGO_CRATE_VALUE * 10
required_count = 13
wanted_types = list(/obj/item/food/pancakes = TRUE)
/datum/bounty/item/chef/nuggies
name = "Chicken Nuggets"
description = "The vice president's son won't shut up about chicken nuggies. Would you mind shipping some?"
reward = CARGO_CRATE_VALUE * 8
required_count = 6
wanted_types = list(/obj/item/food/nugget = TRUE)
/datum/bounty/item/chef/corgifarming //Butchering is a chef's job.
name = "Corgi Hides"
description = "Admiral Weinstein's space yacht needs new upholstery. A dozen Corgi furs should do just fine."
reward = CARGO_CRATE_VALUE * 60 //that's a lot of dead dogs
required_count = 12
wanted_types = list(/obj/item/stack/sheet/animalhide/corgi = TRUE)
/datum/bounty/item/chef/pickles
name = "Pickles"
description = "The food control department lacks enough pickles to properly evaluate some of the different types of hard liquor."
reward = CARGO_CRATE_VALUE * 10
required_count = 7
wanted_types = list(/obj/item/food/pickle = TRUE)