code:
/obj/machinery/juicer
	name = "juicer"
	icon = 'icons/obj/kitchen.dmi'
	icon_state = "juicer1"
	layer = 2.9
	density = 1
	anchored = 0
	use_power = 1
	idle_power_usage = 5
	active_power_usage = 100
	pass_flags = PASSTABLE
	var/obj/item/weapon/reagent_containers/beaker = null
	var/global/list/allowed_items = list (
		/obj/item/weapon/reagent_containers/food/snacks/grown/tomato  = "tomatojuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/carrot  = "carrotjuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/berries = "berryjuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/grapes = "grapejuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green = "grapejuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/banana  = "banana",
		/obj/item/weapon/reagent_containers/food/snacks/grown/potato = "potato",
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon = "lemonjuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = "orangejuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime = "limejuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon = "watermelonjuice",
		/obj/item/weapon/reagent_containers/food/snacks/watermelonslice = "watermelonjuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison = "poisonberryjuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin = "pumpkinjuice",
		/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin = "blumpkinjuice",
	)

/obj/machinery/juicer/New()
	beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)

/obj/machinery/juicer/update_icon()
	icon_state = "juicer"+num2text(!isnull(beaker))
	return

/obj/machinery/juicer/attackby(obj/item/O, mob/user, params)
	if(default_unfasten_wrench(user, O))
		return
	if (istype(O,/obj/item/weapon/reagent_containers/glass) || \
		istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
		if (beaker)
			return 1
		else
			if(!user.unEquip(O))
				user << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
				return 0
			O.loc = src
			beaker = O
			src.verbs += /obj/machinery/juicer/verb/detach
			update_icon()
			src.updateUsrDialog()
			return 0
	if (!is_type_in_list(O, allowed_items))
		user << "It looks as not containing any juice."
		return 1
	if(!user.unEquip(O))
		user << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
		return 0
	O.loc = src
	src.updateUsrDialog()
	return 0

/obj/machinery/juicer/attack_paw(mob/user)
	return src.attack_hand(user)

/obj/machinery/juicer/attack_ai(mob/user)
	return 0

/obj/machinery/juicer/attack_hand(mob/user)
	user.set_machine(src)
	interact(user)

/obj/machinery/juicer/interact(mob/user) // The microwave Menu
	var/is_chamber_empty = 0
	var/is_beaker_ready = 0
	var/processing_chamber = ""
	var/beaker_contents = ""

	for (var/i in allowed_items)
		for (var/obj/item/O in src.contents)
			if (!istype(O,i))
				continue
			processing_chamber+= "some [O]
"
			break
	if (!processing_chamber)
		is_chamber_empty = 1
		processing_chamber = "Nothing."
	if (!beaker)
		beaker_contents = "\The [src] has no beaker attached."
	else if (!beaker.reagents.total_volume)
		beaker_contents = "\The [src]  has attached an empty beaker."
		is_beaker_ready = 1
	else if (beaker.reagents.total_volume < beaker.reagents.maximum_volume)
		beaker_contents = "\The [src]  has attached a beaker with something."
		is_beaker_ready = 1
	else
		beaker_contents = "\The [src]  has attached a beaker and the beaker is full!"

	var/dat = {"
Processing chamber contains:

[processing_chamber]

[beaker_contents]

"}
	if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN)))
		dat += "Turn on!
"
	if (beaker)
		dat += "Detach a beaker!
"
	user << browse("<TITLE>Juicer</TITLE><TT>[dat]</TT>", "window=juicer")
	onclose(user, "juicer")
	return

/obj/machinery/juicer/Topic(href, href_list)
	if(..())
		return
	usr.set_machine(src)
	switch(href_list["action"])
		if ("juice")
			juice()

		if ("detach")
			detach()
	src.updateUsrDialog()
	return

/obj/machinery/juicer/verb/detach()
	set category = "Object"
	set name = "Detach Beaker from the juicer"
	set src in oview(1)
	if(usr.stat || !usr.canmove || usr.restrained())
		return
	if (!beaker)
		return
	src.verbs -= /obj/machinery/juicer/verb/detach
	beaker.loc = src.loc
	beaker = null
	update_icon()

/obj/machinery/juicer/proc/get_juice_id(obj/item/weapon/reagent_containers/food/snacks/grown/O)
	for (var/i in allowed_items)
		if (istype(O, i))
			return allowed_items[i]

/obj/machinery/juicer/proc/get_juice_amount(obj/item/weapon/reagent_containers/food/snacks/grown/O)
	if (!istype(O))
		return 5
	else if (O.seed.potency == -1)
		return 5
	else
		return round(5*sqrt(O.seed.potency))

/obj/machinery/juicer/proc/juice()
	power_change() //it is a portable machine
	if(stat & (NOPOWER|BROKEN))
		return
	if (!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
		return
	playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
	for (var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents)
		var/r_id = get_juice_id(O)
		beaker.reagents.add_reagent(r_id,get_juice_amount(O))
		qdel(O)
		if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
			break

/obj/structure/closet/crate/juice/New()
	..()
	new/obj/machinery/juicer(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/grapes(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/grapes(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src)
	new/obj/item/weapon/reagent_containers/food/snacks/grown/grapes(src)


code:
/obj/machinery/microwave
	name = "microwave oven"
	desc = "Cooks and boils stuff."
	icon = 'icons/obj/kitchen.dmi'
	icon_state = "mw"
	layer = 2.9
	density = 1
	anchored = 1
	use_power = 1
	idle_power_usage = 5
	active_power_usage = 100
	var/operating = 0 // Is it on?
	var/dirty = 0 // = {0..100} Does it need cleaning?
	var/broken = 0 // ={0,1,2} How broken is it???
	var/max_n_of_items = 10 // whatever fat fuck made this a global var needs to look at themselves in the mirror sometime
	var/efficiency = 0

// see code/modules/food/recipes_microwave.dm for recipes

/*******************
*   Initialising
********************/

/obj/machinery/microwave/New()
	create_reagents(100)
	component_parts = list()
	component_parts += new /obj/item/weapon/circuitboard/microwave(null)
	component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
	component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
	component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
	component_parts += new /obj/item/stack/cable_coil(null, 2)
	RefreshParts()

/obj/machinery/microwave/RefreshParts()
	var/E
	var/max_items = 10
	for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts)
		E += M.rating
	for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
		max_items = 10 * M.rating
	efficiency = E
	max_n_of_items = max_items

/*******************
*   Item Adding
********************/

/obj/machinery/microwave/attackby(obj/item/O, mob/user, params)
	if(operating)
		return
	if(!broken && dirty<100)
		if(default_deconstruction_screwdriver(user, "mw-o", "mw", O))
			return
		if(default_unfasten_wrench(user, O))
			return
		if(exchange_parts(user, O))
			return

	if(default_deconstruction_crowbar(O))
		return

	if(src.broken > 0)
		if(src.broken == 2 && istype(O, /obj/item/weapon/wirecutters)) // If it's broken and they're using a screwdriver
			user.visible_message( \
				"[user] starts to fix part of the microwave.", \
				"You start to fix part of the microwave..." \
			)
			if (do_after(user,20/O.toolspeed, target = src))
				user.visible_message( \
					"[user] fixes part of the microwave.", \
					"You fix part of the microwave." \
				)
				src.broken = 1 // Fix it a bit
		else if(src.broken == 1 && istype(O, /obj/item/weapon/weldingtool)) // If it's broken and they're doing the wrench
			user.visible_message( \
				"[user] starts to fix part of the microwave.", \
				"You start to fix part of the microwave..." \
			)
			if (do_after(user,20/O.toolspeed, target = src))
				user.visible_message( \
					"[user] fixes the microwave.", \
					"You fix the microwave." \
				)
				src.icon_state = "mw"
				src.broken = 0 // Fix it!
				src.dirty = 0 // just to be sure
				src.flags = OPENCONTAINER
				return 0 //to use some fuel
		else
			user << "It's broken!"
			return 1
	else if(istype(O, /obj/item/weapon/reagent_containers/spray/))
		var/obj/item/weapon/reagent_containers/spray/clean_spray = O
		if(clean_spray.reagents.has_reagent("cleaner",clean_spray.amount_per_transfer_from_this))
			clean_spray.reagents.remove_reagent("cleaner",clean_spray.amount_per_transfer_from_this,1)
			playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
			user.visible_message( \
				"[user] has cleaned the microwave.", \
				"You clean the microwave." \
			)
			src.dirty = 0 // It's clean!
			src.broken = 0 // just to be sure
			src.icon_state = "mw"
			src.flags = OPENCONTAINER
			src.updateUsrDialog()
			return 1 // Disables the after-attack so we don't spray the floor/user.
		else
			user << "You need more space cleaner!"
			return 1

	else if(istype(O, /obj/item/weapon/soap/)) // If they're trying to clean it then let them
		var/obj/item/weapon/soap/P = O
		user.visible_message( \
			"[user] starts to clean the microwave.", \
			"You start to clean the microwave..." \
		)
		if (do_after(user, P.cleanspeed, target = src))
			user.visible_message( \
				"[user] has cleaned the microwave.", \
				"You clean the microwave." \
			)
			src.dirty = 0 // It's clean!
			src.broken = 0 // just to be sure
			src.icon_state = "mw"
			src.flags = OPENCONTAINER

	else if(src.dirty==100) // The microwave is all dirty so can't be used!
		user << "It's dirty!"
		return 1

	else if(istype(O, /obj/item/weapon/storage/bag/tray))
		var/obj/item/weapon/storage/T = O
		var/loaded = 0
		for(var/obj/item/weapon/reagent_containers/food/snacks/S in T.contents)
			if (contents.len>=max_n_of_items)
				user << "[src] is full, you cannot put more!"
				return 1
			T.remove_from_storage(S, src)
			loaded++

		if(loaded)
			user << "You insert [loaded] items into [src]."

	else if(istype(O,/obj/item/weapon/reagent_containers/food/snacks))
		if (contents.len>=max_n_of_items)
			user << "[src] is full, you cannot put more!"
			return 1
		else
		//	user.unEquip(O)	//This just causes problems so far as I can tell. -Pete
			if(!user.drop_item())
				user << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
				return 0
			O.loc = src
			user.visible_message( \
				"[user] has added \the [O] to \the [src].", \
				"You add \the [O] to \the [src].")

	else
		..()
	updateUsrDialog()

/obj/machinery/microwave/attack_paw(mob/user)
	return src.attack_hand(user)

/obj/machinery/microwave/attack_ai(mob/user)
	return 0

/obj/machinery/microwave/attack_hand(mob/user)
	if(..())
		return
	user.set_machine(src)
	interact(user)

/*******************
*   Microwave Menu
********************/

/obj/machinery/microwave/interact(mob/user) // The microwave Menu
	if(panel_open || !anchored)
		return
	var/dat = "
"
	if(broken > 0)
		dat += "ERROR: 09734014-A2379-D18746 --Bad memory
Contact your operator or use command line to rebase memory ///git checkout {HEAD} -a commit pull --rebase push {*NEW HEAD*}
"    //Thats how all the git fiddling looks to me
	else if(operating)
		dat += "Microwaving in progress!
Please wait...!
"
	else if(dirty==100)
		dat += "ERROR: >> 0 --Response input zero
Contact your operator of the device manifactor support.
"
	else
		var/list/items_counts = new
		for (var/obj/O in contents)
			items_counts[O.name]++

		for (var/O in items_counts)
			var/N = items_counts[O]
			dat += "[capitalize(O)]: [N]
"

		if (items_counts.len==0)
			dat += "The microwave is empty.
"
		else
			dat = "
Ingredients:
[dat]
"
		dat += "Turn on"
		dat += "Eject ingredients
"

	var/datum/browser/popup = new(user, "microwave", name, 300, 300)
	popup.set_content(dat)
	popup.open()
	return

/***********************************
*   Microwave Menu Handling/Cooking
************************************/

/obj/machinery/microwave/proc/cook()
	if(stat & (NOPOWER|BROKEN))
		return
	start()

	if (prob(max(5/efficiency-5,dirty*5))) //a clean unupgraded microwave has no risk of failure
		muck_start()
		if (!microwaving(4))
			muck_finish()
			return
		muck_finish()
		return

	else if (has_extra_item())
		if (!microwaving(4))
			broke()
			return

		broke()
		return

	else

		if(!microwaving(10))
			abort()
			return
		stop()

		for(var/obj/item/weapon/reagent_containers/food/snacks/F in contents)
			if(F.cooked_type)
				var/obj/item/weapon/reagent_containers/food/snacks/S = new F.cooked_type (get_turf(src))
				F.initialize_cooked_food(S, efficiency)
				feedback_add_details("food_made","[F.type]")
			else
				new /obj/item/weapon/reagent_containers/food/snacks/badrecipe(src)
				if(dirty < 100)
					dirty++
			qdel(F)

		return

/obj/machinery/microwave/proc/microwaving(seconds as num)
	for (var/i=1 to seconds)
		if (stat & (NOPOWER|BROKEN))
			return 0
		use_power(500)
		sleep(max(12-2*efficiency,2)) // standard microwave means sleep(10). The better the efficiency, the faster the cooking
	return 1

/obj/machinery/microwave/proc/has_extra_item()
	for (var/obj/O in contents)
		if ( \
				!istype(O,/obj/item/weapon/reagent_containers/food) && \
				!istype(O, /obj/item/weapon/grown) \
			)
			return 1
	return 0

/obj/machinery/microwave/proc/start()
	visible_message("The microwave turns on.", "You hear a microwave humming.")
	operating = 1
	icon_state = "mw1"
	updateUsrDialog()

/obj/machinery/microwave/proc/abort()
	operating = 0 // Turn it off again aferwards
	icon_state = "mw"
	updateUsrDialog()

/obj/machinery/microwave/proc/stop()
	playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
	abort()

/obj/machinery/microwave/proc/dispose()
	for (var/obj/O in contents)
		O.loc = src.loc
	usr << "You dispose of the microwave contents."
	updateUsrDialog()

/obj/machinery/microwave/proc/muck_start()
	playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound
	icon_state = "mwbloody1" // Make it look dirty!!

/obj/machinery/microwave/proc/muck_finish()
	playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
	visible_message("The microwave gets covered in muck!")
	dirty = 100 // Make it dirty so it can't be used util cleaned
	icon_state = "mwbloody" // Make it look dirty too
	operating = 0 // Turn it off again aferwards
	updateUsrDialog()
	for(var/obj/item/weapon/reagent_containers/food/snacks/S in src)
		if(prob(50))
			new /obj/item/weapon/reagent_containers/food/snacks/badrecipe(src)
			qdel(S)

/obj/machinery/microwave/proc/broke()
	var/datum/effect_system/spark_spread/s = new
	s.set_up(2, 1, src)
	s.start()
	icon_state = "mwb" // Make it look all busted up and shit
	visible_message("The microwave breaks!") //Let them know they're stupid
	broken = 2 // Make it broken so it can't be used util fixed
	flags = null //So you can't add condiments
	operating = 0 // Turn it off again aferwards
	updateUsrDialog()

/obj/machinery/microwave/Topic(href, href_list)
	if(..() || panel_open)
		return

	usr.set_machine(src)
	if(operating)
		updateUsrDialog()
		return

	switch(href_list["action"])
		if ("cook")
			cook()

		if ("dispose")
			dispose()
	updateUsrDialog()
	return

license: mit


code:
/obj/machinery/monkey_recycler
	name = "monkey recycler"
	desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces 1 cube for every 5 monkeys inserted." // except it literally never does
	icon = 'icons/obj/kitchen.dmi'
	icon_state = "grinder"
	layer = 2.9
	density = 1
	anchored = 1
	use_power = 1
	idle_power_usage = 5
	active_power_usage = 50
	var/grinded = 0
	var/required_grind = 5
	var/cube_production = 1

/obj/machinery/monkey_recycler/New()
	..()
	component_parts = list()
	component_parts += new /obj/item/weapon/circuitboard/monkey_recycler(null)
	component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
	component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
	RefreshParts()

/obj/machinery/monkey_recycler/RefreshParts()
	var/req_grind = 5
	var/cubes_made = 1
	for(var/obj/item/weapon/stock_parts/manipulator/B in component_parts)
		req_grind -= B.rating
	for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
		cubes_made = M.rating
	cube_production = cubes_made
	required_grind = req_grind
	src.desc = "A machine used for recycling dead monkeys into monkey cubes. It currently produces [cubes_made] cube(s) for every [required_grind] monkey(s) inserted."

/obj/machinery/monkey_recycler/attackby(obj/item/O, mob/user, params)
	if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", O))
		return

	if(exchange_parts(user, O))
		return

	if(default_pry_open(O))
		return

	if(default_unfasten_wrench(user, O))
		power_change()
		return

	default_deconstruction_crowbar(O)

	if (src.stat != 0) //NOPOWER etc
		return
	if (istype(O, /obj/item/weapon/grab))
		var/obj/item/weapon/grab/G = O
		if(!user.Adjacent(G.affecting))
			return
		var/grabbed = G.affecting
		if(ismonkey(grabbed))
			var/mob/living/carbon/monkey/target = grabbed
			if(target.stat == 0)
				user << "The monkey is struggling far too much to put it in the recycler."
				return
			if(target.buckled || target.buckled_mobs.len)
				user << "The monkey is attached to something."
				return
			if(!user.drop_item())
				return
			qdel(target)
			user << "You stuff the monkey into the machine."
			playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
			var/offset = prob(50) ? -2 : 2
			animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = 200) //start shaking
			use_power(500)
			grinded++
			sleep(50)
			pixel_x = initial(pixel_x) //return to its spot after shaking
			user << "The machine now has [grinded] monkey\s worth of material stored."

		else
			user << "The machine only accepts monkeys!"
	return

/obj/machinery/monkey_recycler/attack_hand(mob/user)
	if (src.stat != 0) //NOPOWER etc
		return
	if(grinded >= required_grind)
		user << "The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube."
		playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1)
		grinded -= required_grind
		for(var/i = 0, i < cube_production, i++)
			new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src.loc)
		user << "The machine's display flashes that it has [grinded] monkeys worth of material left."
	else
		user << "The machine needs at least [required_grind] monkey(s) worth of material to produce a monkey cube. It only has [grinded]."
	return


code:
/obj/machinery/processor
	name = "food processor"
	desc = "An industrial grinder used to process meat and other foods. Keep hands clear of intake area while operating."
	icon = 'icons/obj/kitchen.dmi'
	icon_state = "processor"
	layer = 2.9
	density = 1
	anchored = 1
	var/broken = 0
	var/processing = 0
	use_power = 1
	idle_power_usage = 5
	active_power_usage = 50
	var/rating_speed = 1
	var/rating_amount = 1

/obj/machinery/processor/New()
		..()
		component_parts = list()
		component_parts += new /obj/item/weapon/circuitboard/processor(null)
		component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
		component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
		RefreshParts()

/obj/machinery/processor/RefreshParts()
	for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
		rating_amount = B.rating
	for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
		rating_speed = M.rating

/datum/food_processor_process
	var/input
	var/output
	var/time = 40
/datum/food_processor_process/proc/process_food(loc, what, obj/machinery/processor/processor)
	if (src.output && loc && processor)
		for(var/i = 0, i < processor.rating_amount, i++)
			new src.output(loc)
	if (what)
		qdel(what) // Note to self: Make this safer

	/* objs */
/datum/food_processor_process/meat
	input = /obj/item/weapon/reagent_containers/food/snacks/meat/slab
	output = /obj/item/weapon/reagent_containers/food/snacks/faggot

/datum/food_processor_process/sweetpotato
	input = /obj/item/weapon/reagent_containers/food/snacks/grown/potato/sweet
	output = /obj/item/weapon/reagent_containers/food/snacks/yakiimo

/datum/food_processor_process/potato
	input = /obj/item/weapon/reagent_containers/food/snacks/grown/potato
	output = /obj/item/weapon/reagent_containers/food/snacks/fries

/datum/food_processor_process/carrot
	input = /obj/item/weapon/reagent_containers/food/snacks/grown/carrot
	output = /obj/item/weapon/reagent_containers/food/snacks/carrotfries

/datum/food_processor_process/soybeans
	input = /obj/item/weapon/reagent_containers/food/snacks/grown/soybeans
	output = /obj/item/weapon/reagent_containers/food/snacks/soydope

/datum/food_processor_process/spaghetti
	input = /obj/item/weapon/reagent_containers/food/snacks/doughslice
	output = /obj/item/weapon/reagent_containers/food/snacks/spaghetti

/datum/food_processor_process/corn
	input = /obj/item/weapon/reagent_containers/food/snacks/grown/corn
	output = /obj/item/weapon/reagent_containers/food/snacks/tortilla

/datum/food_processor_process/parsnip
	input = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip
	output = /obj/item/weapon/reagent_containers/food/snacks/roastparsnip

/* mobs */
/datum/food_processor_process/mob/process_food(loc, what, processor)
	..()

/datum/food_processor_process/mob/slime/process_food(loc, what, obj/machinery/processor/processor)
	var/mob/living/simple_animal/slime/S = what
	var/C = S.cores
	if(S.stat != DEAD)
		S.loc = loc
		S.visible_message("[C] crawls free of the processor!")
		return
	for(var/i in 1 to (C+processor.rating_amount-1))
		new S.coretype(loc)
		feedback_add_details("slime_core_harvested","[replacetext(S.colour," ","_")]")
	..()

/datum/food_processor_process/mob/slime/input = /mob/living/simple_animal/slime
/datum/food_processor_process/mob/slime/output = null

/datum/food_processor_process/mob/monkey/process_food(loc, what, processor)
	var/mob/living/carbon/monkey/O = what
	if (O.client) //grief-proof
		O.loc = loc
		O.visible_message("Suddenly [O] jumps out from the processor!", \
				"You jump out from the processor!", \
				"You hear chimpering.")
		return
	var/obj/item/weapon/reagent_containers/glass/bucket/bucket_of_blood = new(loc)
	var/datum/reagent/blood/B = new()
	B.holder = bucket_of_blood
	B.volume = 70
	//set reagent data
	B.data["donor"] = O

	for(var/datum/disease/D in O.viruses)
		if(!(D.spread_flags & SPECIAL))
			B.data["viruses"] += D.Copy()
	if(O.has_dna())
		B.data["blood_DNA"] = O.dna.unique_enzymes

	if(O.resistances&&O.resistances.len)
		B.data["resistances"] = O.resistances.Copy()
	bucket_of_blood.reagents.reagent_list += B
	bucket_of_blood.reagents.update_total()
	bucket_of_blood.on_reagent_change()
	//bucket_of_blood.reagents.handle_reactions() //blood doesn't react
	..()

/datum/food_processor_process/mob/monkey/input = /mob/living/carbon/monkey
/datum/food_processor_process/mob/monkey/output = null

/obj/machinery/processor/proc/select_recipe(X)
	for (var/Type in subtypesof(/datum/food_processor_process) - /datum/food_processor_process/mob)
		var/datum/food_processor_process/P = new Type()
		if (!istype(X, P.input))
			continue
		return P
	return 0

/obj/machinery/processor/attackby(obj/item/O, mob/user, params)
	if(src.processing)
		user << "The processor is in the process of processing!"
		return 1
	if(default_deconstruction_screwdriver(user, "processor1", "processor", O))
		return

	if(exchange_parts(user, O))
		return

	if(default_pry_open(O))
		return

	if(default_unfasten_wrench(user, O))
		return

	default_deconstruction_crowbar(O)

	var/atom/movable/what = O
	if(istype(O, /obj/item/weapon/grab))
		var/obj/item/weapon/grab/G = O
		if(!user.Adjacent(G.affecting))
			return
		if(G.affecting.buckled || G.affecting.buckled_mobs.len)
			user << "[G.affecting] is attached to somthing!"
			return
		what = G.affecting

	var/datum/food_processor_process/P = select_recipe(what)
	if (!P)
		user << "That probably won't blend!"
		return 1

	user.visible_message("[user] put [what] into [src].", \
		"You put the [what] into [src].")
	user.drop_item()
	what.loc = src
	return

/obj/machinery/processor/attack_hand(mob/user)
	if (src.stat != 0) //NOPOWER etc
		return
	if(src.processing)
		user << "The processor is in the process of processing!"
		return 1
	if(src.contents.len == 0)
		user << "The processor is empty!"
		return 1
	src.processing = 1
	user.visible_message("[user] turns on [src].", \
		"You turn on [src].", \
		"You hear a food processor.")
	playsound(src.loc, 'sound/machines/blender.ogg', 50, 1)
	use_power(500)
	var/total_time = 0
	for(var/O in src.contents)
		var/datum/food_processor_process/P = select_recipe(O)
		if (!P)
			log_admin("DEBUG: [O] in processor havent suitable recipe. How do you put it in?") //-rastaf0 // DEAR GOD THIS BURNS MY EYES HAVE YOU EVER LOOKED IN AN ENGLISH DICTONARY BEFORE IN YOUR LIFE AAAAAAAAAAAAAAAAAAAAA - Iamgoofball
			continue
		total_time += P.time
	var/offset = prob(50) ? -2 : 2
	animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = (total_time / rating_speed)*5) //start shaking
	sleep(total_time / rating_speed)
	for(var/O in src.contents)
		var/datum/food_processor_process/P = select_recipe(O)
		if (!P)
			log_admin("DEBUG: [O] in processor havent suitable recipe. How do you put it in?") //-rastaf0
			continue
		P.process_food(src.loc, O, src)
	pixel_x = initial(pixel_x) //return to its spot after shaking
	src.processing = 0
	src.visible_message("\the [src] finishes processing.")

/obj/machinery/processor/verb/eject()
	set category = "Object"
	set name = "Eject Contents"
	set src in oview(1)

	if(usr.stat || !usr.canmove || usr.restrained())
		return
	src.empty()
	add_fingerprint(usr)
	return

/obj/machinery/processor/proc/empty()
	for (var/obj/O in src)
		O.loc = src.loc
	for (var/mob/M in src)
		M.loc = src.loc
	return


code:
// -------------------------
//  SmartFridge.  Much todo
// -------------------------
/obj/machinery/smartfridge
	name = "smartfridge"
	desc = "Keeps cold things cold and hot things cold."
	icon = 'icons/obj/vending.dmi'
	icon_state = "smartfridge"
	layer = 2.9
	density = 1
	anchored = 1
	use_power = 1
	idle_power_usage = 5
	active_power_usage = 100
	flags = NOREACT
	var/max_n_of_items = 1500
	var/icon_on = "smartfridge"
	var/icon_off = "smartfridge-off"

/obj/machinery/smartfridge/New()
	..()
	component_parts = list()
	component_parts += new /obj/item/weapon/circuitboard/smartfridge(null, type)
	component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
	RefreshParts()

/obj/machinery/smartfridge/construction()
	for(var/datum/A in contents)
		qdel(A)

/obj/machinery/smartfridge/deconstruction()
	for(var/atom/movable/A in contents)
		A.loc = loc

/obj/machinery/smartfridge/RefreshParts()
	for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
		max_n_of_items = 1500 * B.rating

/obj/machinery/smartfridge/power_change()
	..()
	update_icon()

/obj/machinery/smartfridge/update_icon()
	if(!stat)
		icon_state = icon_on
	else
		icon_state = icon_off

/*******************
*   Item Adding
********************/

/obj/machinery/smartfridge/attackby(obj/item/O, mob/user, params)
	if(default_deconstruction_screwdriver(user, "smartfridge_open", "smartfridge", O))
		return

	if(exchange_parts(user, O))
		return

	if(default_pry_open(O))
		return

	if(default_unfasten_wrench(user, O))
		power_change()
		return

	default_deconstruction_crowbar(O)

	if(stat)
		return 0

	if(contents.len >= max_n_of_items)
		user << "\The [src] is full!"
		return 0

	if(accept_check(O))
		load(O)
		user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].")
		updateUsrDialog()
		return 1

	var/loaded = 0

	if(istype(O, /obj/item/weapon/storage/bag))
		var/obj/item/weapon/storage/P = O
		for(var/obj/G in P.contents)
			if(contents.len >= max_n_of_items)
				break
			if(accept_check(G))
				load(G)
				loaded++
	else
		user << "\The [src] smartly refuses [O]."
		updateUsrDialog()
		return 0

	// this is a little backwards but it avoids duplication.
	// this code follows storage items and trays only.
	if(loaded)
		if(contents.len >= max_n_of_items)
			user.visible_message("[user] loads \the [src] with \the [O].", \
							 "You fill \the [src] with \the [O].")
		else
			user.visible_message("[user] loads \the [src] with \the [O].", \
								 "You load \the [src] with \the [O].")
		if(O.contents.len > 0)
			user << "Some items are refused."
	else
		user << "There is nothing in [O] to put in [src]!"
		return 0

	updateUsrDialog()
	return 1

/obj/machinery/smartfridge/proc/accept_check(obj/item/O)
	if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/))
		return 1
	return 0

/obj/machinery/smartfridge/proc/load(obj/item/O)
	if(istype(O.loc,/mob))
		var/mob/M = O.loc
		if(!M.unEquip(O))
			usr << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
			return
	else if(istype(O.loc,/obj/item/weapon/storage))
		var/obj/item/weapon/storage/S = O.loc
		S.remove_from_storage(O,src)

	O.loc = src

/obj/machinery/smartfridge/attack_paw(mob/user)
	return src.attack_hand(user)

/obj/machinery/smartfridge/attack_ai(mob/user)
	return 0

/obj/machinery/smartfridge/attack_hand(mob/user)
	user.set_machine(src)
	interact(user)

/*******************
*   SmartFridge Menu
********************/

/obj/machinery/smartfridge/interact(mob/user)
	if(stat)
		return 0

	var/dat = "<TT>Select an item:
"

	if (contents.len == 0)
		dat += "No product loaded!"
	else
		var/listofitems = list()
		for (var/atom/movable/O in contents)
			if (listofitems[O.name])
				listofitems[O.name]++
			else
				listofitems[O.name] = 1
		sortList(listofitems)

		for (var/O in listofitems)
			if(listofitems[O] <= 0)
				continue
			var/N = listofitems[O]
			var/itemName = url_encode(O)
			dat += "[capitalize(O)]:"
			dat += " [N] "
			dat += "Vend "
			if(N > 5)
				dat += "(x5)"
				if(N > 10)
					dat += "(x10)"
					if(N > 25)
						dat += "(x25)"
			if(N > 1)
				dat += "(All)"

			dat += "
"

		dat += "</TT>"
	user << browse("<TITLE>[src] supplies</TITLE><TT>[dat]</TT>", "window=smartfridge")
	onclose(user, "smartfridge")
	return dat

/obj/machinery/smartfridge/Topic(var/href, var/list/href_list)
	if(..())
		return
	usr.set_machine(src)

	var/N = href_list["vend"]
	var/amount = text2num(href_list["amount"])

	var/i = amount
	for(var/obj/O in contents)
		if(i <= 0)
			break
		if(O.name == N)
			O.loc = src.loc
			i--

	updateUsrDialog()

// ----------------------------
//  Drying Rack 'smartfridge'
// ----------------------------
/obj/machinery/smartfridge/drying_rack
	name = "drying rack"
	icon = 'icons/obj/hydroponics/equipment.dmi'
	icon_state = "drying_rack_on"
	use_power = 1
	idle_power_usage = 5
	active_power_usage = 200
	icon_on = "drying_rack_on"
	icon_off = "drying_rack"
	var/drying = 0

/obj/machinery/smartfridge/drying_rack/interact(mob/user)
	var/dat = ..()
	if(dat)
		dat += "
"
		dat += "Toggle Drying "
		user << browse("<TITLE>[src] supplies</TITLE><TT>[dat]</TT>", "window=smartfridge")
	onclose(user, "smartfridge")

/obj/machinery/smartfridge/drying_rack/Topic(href, list/href_list)
	..()
	if(href_list["dry"])
		toggle_drying()
	src.updateUsrDialog()

/obj/machinery/smartfridge/drying_rack/power_change()
	if(powered() && anchored)
		stat &= ~NOPOWER
	else
		stat |= NOPOWER
		toggle_drying(1)
	update_icon()

/obj/machinery/smartfridge/drying_rack/load() //For updating the filled overlay
	..()
	update_icon()

/obj/machinery/smartfridge/drying_rack/update_icon()
	..()
	overlays = 0
	if(drying)
		overlays += "drying_rack_drying"
	if(contents.len)
		overlays += "drying_rack_filled"

/obj/machinery/smartfridge/drying_rack/process()
	..()
	if(drying)
		if(rack_dry())//no need to update unless something got dried
			update_icon()

/obj/machinery/smartfridge/drying_rack/accept_check(obj/item/O)
	if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/))
		var/obj/item/weapon/reagent_containers/food/snacks/S = O
		if(S.dried_type)
			return 1
	return 0

/obj/machinery/smartfridge/drying_rack/proc/toggle_drying(forceoff = 0)
	if(drying || forceoff)
		drying = 0
		use_power = 1
	else
		drying = 1
		use_power = 2
	update_icon()

/obj/machinery/smartfridge/drying_rack/proc/rack_dry()
	for(var/obj/item/weapon/reagent_containers/food/snacks/S in contents)
		if(S.dried_type == S.type)//if the dried type is the same as the object's type, don't bother creating a whole new item...
			S.color = "#ad7257"
			S.dry = 1
			S.loc = get_turf(src)
		else
			var/dried = S.dried_type
			new dried(src.loc)
			qdel(S)
		return 1
	return 0

/obj/machinery/smartfridge/drying_rack/emp_act(severity)
	..()
	atmos_spawn_air("TEMP=1000")

// ----------------------------
//  Bar drink smartfridge
// ----------------------------
/obj/machinery/smartfridge/drinks
	name = "drink showcase"
	desc = "A refrigerated storage unit for tasty tasty alcohol."

/obj/machinery/smartfridge/drinks/accept_check(obj/item/O)
	if(!istype(O,/obj/item/weapon/reagent_containers) || !O.reagents || !O.reagents.reagent_list.len)
		return 0
	if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment))
		return 1

// -------------------------------------
// Xenobiology Slime-Extract Smartfridge
// -------------------------------------
/obj/machinery/smartfridge/extract
	name = "smart slime extract storage"
	desc = "A refrigerated storage unit for slime extracts."

/obj/machinery/smartfridge/extract/accept_check(obj/item/O)
	if(istype(O,/obj/item/slime_extract))
		return 1
	if(istype(O,/obj/item/device/slime_scanner))
		return 1
	return 0

/obj/machinery/smartfridge/extract/New()
	..()
	var/obj/item/device/slime_scanner/I = new /obj/item/device/slime_scanner(src)
	load(I)
	var/obj/item/device/slime_scanner/T = new /obj/item/device/slime_scanner(src)
	load(T)

// -----------------------------
// Chemistry Medical Smartfridge
// -----------------------------
/obj/machinery/smartfridge/chemistry
	name = "smart chemical storage"
	desc = "A refrigerated storage unit for medicine storage."
	var/list/spawn_meds = list(/obj/item/weapon/reagent_containers/pill/epinephrine = 12,/obj/item/weapon/reagent_containers/pill/charcoal = 1,
								/obj/item/weapon/reagent_containers/glass/bottle/epinephrine = 1, /obj/item/weapon/reagent_containers/glass/bottle/charcoal = 1)

/obj/machinery/smartfridge/chemistry/New()
	..()
	for(var/typekey in spawn_meds)
		var/amount = spawn_meds[typekey]
		if(isnull(amount)) amount = 1
		while(amount)
			var/obj/item/I = new typekey(src)
			load(I)
			amount--

/obj/machinery/smartfridge/chemistry/accept_check(obj/item/O)
	if(istype(O,/obj/item/weapon/storage/pill_bottle))
		if(O.contents.len)
			for(var/obj/item/I in O)
				if(!accept_check(I))
					return 0
			return 1
		return 0
	if(!istype(O,/obj/item/weapon/reagent_containers))
		return 0
	if(istype(O,/obj/item/weapon/reagent_containers/pill)) // empty pill prank ok
		return 1
	if(!O.reagents || !O.reagents.reagent_list.len) // other empty containers not accepted
		return 0
	if(istype(O,/obj/item/weapon/reagent_containers/syringe) || istype(O,/obj/item/weapon/reagent_containers/glass/bottle) || istype(O,/obj/item/weapon/reagent_containers/glass/beaker) || istype(O,/obj/item/weapon/reagent_containers/spray))
		return 1
	return 0

// ----------------------------
// Virology Medical Smartfridge
// ----------------------------
/obj/machinery/smartfridge/chemistry/virology
	name = "smart virus storage"
	desc = "A refrigerated storage unit for volatile sample storage."
	spawn_meds = list(/obj/item/weapon/reagent_containers/syringe/antiviral = 4, /obj/item/weapon/reagent_containers/glass/bottle/cold = 1, /obj/item/weapon/reagent_containers/glass/bottle/flu_virion = 1, /obj/item/weapon/reagent_containers/glass/bottle/mutagen = 1, /obj/item/weapon/reagent_containers/glass/bottle/plasma = 1, /obj/item/weapon/reagent_containers/glass/bottle/synaptizine = 1)


code:
/obj/item/weapon/bombcore/pizza
	parent_type = /obj/item/weapon/bombcore/miniature
	name = "pizza bomb"
	desc = "Special delivery!"
	icon_state = "pizzabomb_inactive"
	item_state = "eshield0"
	origin_tech = "syndicate=4"

/obj/item/pizzabox
	name = "pizza box"
	desc = "A box suited for pizzas."
	icon = 'icons/obj/food/containers.dmi'
	icon_state = "pizzabox1"
	item_state = "pizzabox"

	var/open = 0
	var/boxtag = ""
	var/list/boxes = list()

	var/obj/item/weapon/reagent_containers/food/snacks/pizza/pizza

	var/obj/item/weapon/bombcore/pizza/bomb
	var/bomb_active = FALSE // If the bomb is counting down.
	var/bomb_defused = TRUE // If the bomb is inert.
	var/bomb_timer = 1 // How long before blowing the bomb.
	var/const/BOMB_TIMER_MIN = 1
	var/const/BOMB_TIMER_MAX = 10

/obj/item/pizzabox/New()
	update_icon()

/obj/item/pizzabox/Destroy()
	unprocess()

/obj/item/pizzabox/update_icon()
	// Description
	desc = initial(desc)
	if(open)
		if(pizza)
			desc = "[desc] It appears to have \a [pizza] inside."
		if(bomb)
			desc = "[desc] Wait, what?! It has \a [bomb] inside!"
			if(bomb_defused)
				desc = "[desc] The bomb seems inert."
			if(bomb_active)
				desc = "[desc] It looks like its about to go off!"
	else
		var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
		if(boxes.len)
			desc = "A pile of boxes suited for pizzas. There appears to be [boxes.len + 1] boxes in the pile."
		if(box.boxtag != "")
			desc = "[desc] The [boxes.len ? "top box" : "box"]'s tag reads: [box.boxtag]"

	// Icon/Overlays
	overlays.Cut()
	if(open)
		icon_state = "pizzabox_open"
		if(pizza)
			icon_state = "pizzabox_messy"
			var/image/pizzaimg = image(pizza.icon, icon_state = pizza.icon_state)
			pizzaimg.pixel_y = -3
			overlays += pizzaimg
		if(bomb)
			bomb.icon_state = "pizzabomb_[bomb_active ? "active" : "inactive"]"
			var/image/bombimg = image(bomb.icon, icon_state = bomb.icon_state)
			bombimg.pixel_y = 5
			overlays += bombimg
	else
		icon_state = "pizzabox[boxes.len + 1]"
		var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
		if(box.boxtag != "")
			var/image/tagimg = image(icon, icon_state = "pizzabox_tag")
			tagimg.pixel_y = boxes.len * 3
			overlays += tagimg

/obj/item/pizzabox/attack_self(mob/user)
	if(boxes.len > 0)
		return
	open = !open
	if(open && !bomb_defused)
		audible_message("\icon[src] *beep*")
		bomb_active = TRUE
		SSobj.processing |= src
	update_icon()

/obj/item/pizzabox/attack_hand(mob/user)
	if(user.get_inactive_hand() != src)
		..()
		return
	if(open)
		if(pizza)
			user.put_in_hands(pizza)
			user << "You take [pizza] out of [src]."
			pizza = null
			update_icon()
			return
		else if(bomb)
			if(wires.is_all_cut() && bomb_defused)
				user.put_in_hands(bomb)
				user << "You carefully remove the [bomb] from [src]."
				bomb = null
				update_icon()
				return
			else
				bomb_timer = input(user, "Set the [bomb] timer from [BOMB_TIMER_MIN] to [BOMB_TIMER_MAX].", bomb, bomb_timer) as num
				bomb_timer = Clamp(Ceiling(bomb_timer / 2), BOMB_TIMER_MIN, BOMB_TIMER_MAX)
				bomb_defused = FALSE

				message_admins("[key_name_admin(user)]? (FLW) has trapped a [src] with [bomb] set to [bomb_timer * 2] seconds.")
				log_game("[key_name(user)] has trapped a [src] with [bomb] set to [bomb_timer * 2] seconds.")
				bomb.adminlog = "The [bomb.name] in [src.name] that [key_name(user)] activated has detonated!"

				user << "You trap [src] with [bomb]."
				update_icon()
			return
	else if(boxes.len)
		var/obj/item/pizzabox/topbox = boxes[boxes.len]
		boxes -= topbox
		user.put_in_hands(topbox)
		user << "You remove the topmost [name] from the stack."
		topbox.update_icon()
		update_icon()
		return
	..()

/obj/item/pizzabox/attackby(obj/item/I, mob/user, params)
	if(istype(I, /obj/item/pizzabox))
		var/obj/item/pizzabox/newbox = I
		if(!open && !newbox.open)
			var/list/add = list()
			add += newbox
			add += newbox.boxes

			if((boxes.len + 1) + add.len <= 5)
				if(!user.drop_item())
					return
				boxes += add
				newbox.boxes.Cut()
				newbox.loc = src
				user << "You put [newbox] on top of [src]!"
				newbox.update_icon()
				update_icon()
				return
			else
				user << "The stack is dangerously high!"
		else
			user << "Close [open ? src : newbox] first!"
	else if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/pizza) || istype(I, /obj/item/weapon/reagent_containers/food/snacks/customizable/pizza))
		if(open)
			if(!user.drop_item())
				return
			pizza = I
			I.loc = src
			user << "You put [I] in [src]."
			update_icon()
			return
	else if(istype(I, /obj/item/weapon/bombcore/pizza))
		if(open && !bomb)
			if(!user.drop_item())
				return
			wires = new /datum/wires/explosive/pizza(src)
			bomb = I
			I.loc = src
			user << "You put [I] in [src]. Sneeki breeki..."
			update_icon()
			return
		else if(bomb)
			user << "[src] already has a bomb in it!"
	else if(istype(I, /obj/item/weapon/pen))
		if(!open)
			var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
			box.boxtag += stripped_input(user, "Write on [box]'s tag:", box, "", 30)
			user << "You write with [I] on [src]."
			update_icon()
			return
	else if(is_wire_tool(I))
		if(wires && bomb)
			wires.interact(user)
	else if(istype(I, /obj/item/weapon/reagent_containers/food))
		user << "That's not a pizza!"
	..()

/obj/item/pizzabox/process()
	if(bomb_active && !bomb_defused && (bomb_timer > 0))
		playsound(loc, 'sound/items/timer.ogg', 50, 0)
		bomb_timer--
	if(bomb_active && !bomb_defused && (bomb_timer <= 0))
		if(bomb in src)
			bomb.detonate()
			unprocess()
	if(!bomb_active || bomb_defused)
		if(bomb_defused && bomb in src)
			bomb.defuse()
			bomb_active = FALSE
			unprocess()
	return

/obj/item/pizzabox/proc/unprocess()
	SSobj.processing -= src
	qdel(wires)
	wires = null
	update_icon()

/obj/item/pizzabox/bomb/New()
	var/randompizza = pick(subtypesof(/obj/item/weapon/reagent_containers/food/snacks/pizza))
	pizza = new randompizza(src)
	bomb = new(src)
	wires = new /datum/wires/explosive/pizza(src)
	..()

/obj/item/pizzabox/margherita/New()
	pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/margherita(src)
	boxtag = "Margherita Deluxe"
	..()

/obj/item/pizzabox/vegetable/New()
	pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/vegetable(src)
	boxtag = "Gourmet Vegatable"
	..()

/obj/item/pizzabox/mushroom/New()
	pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/mushroom(src)
	boxtag = "Mushroom Special"
	..()

/obj/item/pizzabox/meat/New()
	pizza = new /obj/item/weapon/reagent_containers/food/snacks/pizza/meat(src)
	boxtag = "Meatlover's Supreme"
	..()


code:
////////////////////////////////////////// COCKTAILS //////////////////////////////////////

/datum/chemical_reaction/goldschlager
	name = "Goldschlager"
	id = "goldschlager"
	result = "goldschlager"
	required_reagents = list("vodka" = 10, "gold" = 1)
	result_amount = 10

/datum/chemical_reaction/patron
	name = "Patron"
	id = "patron"
	result = "patron"
	required_reagents = list("tequila" = 10, "silver" = 1)
	result_amount = 10

/datum/chemical_reaction/bilk
	name = "Bilk"
	id = "bilk"
	result = "bilk"
	required_reagents = list("milk" = 1, "beer" = 1)
	result_amount = 2

/datum/chemical_reaction/icetea
	name = "Iced Tea"
	id = "icetea"
	result = "icetea"
	required_reagents = list("ice" = 1, "tea" = 3)
	result_amount = 4

/datum/chemical_reaction/icecoffee
	name = "Iced Coffee"
	id = "icecoffee"
	result = "icecoffee"
	required_reagents = list("ice" = 1, "coffee" = 3)
	result_amount = 4

/datum/chemical_reaction/nuka_cola
	name = "Nuka Cola"
	id = "nuka_cola"
	result = "nuka_cola"
	required_reagents = list("uranium" = 1, "cola" = 6)
	result_amount = 6

/datum/chemical_reaction/moonshine
	name = "Moonshine"
	id = "moonshine"
	result = "moonshine"
	required_reagents = list("nutriment" = 10)
	required_catalysts = list("enzyme" = 5)
	result_amount = 10

/datum/chemical_reaction/wine
	name = "Wine"
	id = "wine"
	result = "wine"
	required_reagents = list("grapejuice" = 10)
	required_catalysts = list("enzyme" = 5)
	result_amount = 10

/datum/chemical_reaction/spacebeer
	name = "Space Beer"
	id = "spacebeer"
	result = "beer"
	required_reagents = list("flour" = 10)
	required_catalysts = list("enzyme" = 5)
	result_amount = 10

/datum/chemical_reaction/vodka
	name = "Vodka"
	id = "vodka"
	result = "vodka"
	required_reagents = list("potato" = 10)
	required_catalysts = list("enzyme" = 5)
	result_amount = 10

/datum/chemical_reaction/kahlua
	name = "Kahlua"
	id = "kahlua"
	result = "kahlua"
	required_reagents = list("coffee" = 5, "sugar" = 5)
	required_catalysts = list("enzyme" = 5)
	result_amount = 5

/datum/chemical_reaction/gin_tonic
	name = "Gin and Tonic"
	id = "gintonic"
	result = "gintonic"
	required_reagents = list("gin" = 2, "tonic" = 1)
	result_amount = 3

/datum/chemical_reaction/cuba_libre
	name = "Cuba Libre"
	id = "cubalibre"
	result = "cubalibre"
	required_reagents = list("rum" = 2, "cola" = 1)
	result_amount = 3

/datum/chemical_reaction/martini
	name = "Classic Martini"
	id = "martini"
	result = "martini"
	required_reagents = list("gin" = 2, "vermouth" = 1)
	result_amount = 3

/datum/chemical_reaction/vodkamartini
	name = "Vodka Martini"
	id = "vodkamartini"
	result = "vodkamartini"
	required_reagents = list("vodka" = 2, "vermouth" = 1)
	result_amount = 3

/datum/chemical_reaction/white_russian
	name = "White Russian"
	id = "whiterussian"
	result = "whiterussian"
	required_reagents = list("blackrussian" = 3, "cream" = 2)
	result_amount = 5

/datum/chemical_reaction/whiskey_cola
	name = "Whiskey Cola"
	id = "whiskeycola"
	result = "whiskeycola"
	required_reagents = list("whiskey" = 2, "cola" = 1)
	result_amount = 3

/datum/chemical_reaction/screwdriver
	name = "Screwdriver"
	id = "screwdrivercocktail"
	result = "screwdrivercocktail"
	required_reagents = list("vodka" = 2, "orangejuice" = 1)
	result_amount = 3

/datum/chemical_reaction/bloody_mary
	name = "Bloody Mary"
	id = "bloodymary"
	result = "bloodymary"
	required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1)
	result_amount = 4

/datum/chemical_reaction/gargle_blaster
	name = "Pan-Galactic Gargle Blaster"
	id = "gargleblaster"
	result = "gargleblaster"
	required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1)
	result_amount = 5

/datum/chemical_reaction/brave_bull
	name = "Brave Bull"
	id = "bravebull"
	result = "bravebull"
	required_reagents = list("tequila" = 2, "kahlua" = 1)
	result_amount = 3

/datum/chemical_reaction/tequila_sunrise
	name = "tequila Sunrise"
	id = "tequilasunrise"
	result = "tequilasunrise"
	required_reagents = list("tequila" = 2, "orangejuice" = 1)
	result_amount = 3

/datum/chemical_reaction/toxins_special
	name = "Toxins Special"
	id = "toxinsspecial"
	result = "toxinsspecial"
	required_reagents = list("rum" = 2, "vermouth" = 1, "plasma" = 2)
	result_amount = 5

/datum/chemical_reaction/beepsky_smash
	name = "Beepksy Smash"
	id = "beepksysmash"
	result = "beepskysmash"
	required_reagents = list("limejuice" = 2, "whiskey" = 2, "iron" = 1)
	result_amount = 4

/datum/chemical_reaction/doctor_delight
	name = "The Doctor's Delight"
	id = "doctordelight"
	result = "doctorsdelight"
	required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "cryoxadone" = 1)
	result_amount = 5

/datum/chemical_reaction/irish_cream
	name = "Irish Cream"
	id = "irishcream"
	result = "irishcream"
	required_reagents = list("whiskey" = 2, "cream" = 1)
	result_amount = 3

/datum/chemical_reaction/manly_dorf
	name = "The Manly Dorf"
	id = "manlydorf"
	result = "manlydorf"
	required_reagents = list ("beer" = 1, "ale" = 2)
	result_amount = 3

/datum/chemical_reaction/greenbeer
	name = "Green Beer"
	id = "greenbeer"
	result = "greenbeer"
	required_reagents = list("greencrayonpowder" = 1, "beer" = 10)
	result_amount = 10

/datum/chemical_reaction/hooch
	name = "Hooch"
	id = "hooch"
	result = "hooch"
	required_reagents = list ("ethanol" = 2, "welding_fuel" = 1)
	required_catalysts = list("enzyme" = 1)
	result_amount = 3

/datum/chemical_reaction/irish_coffee
	name = "Irish Coffee"
	id = "irishcoffee"
	result = "irishcoffee"
	required_reagents = list("irishcream" = 1, "coffee" = 1)
	result_amount = 2

/datum/chemical_reaction/b52
	name = "B-52"
	id = "b52"
	result = "b52"
	required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1)
	result_amount = 3

/datum/chemical_reaction/atomicbomb
	name = "Atomic Bomb"
	id = "atomicbomb"
	result = "atomicbomb"
	required_reagents = list("b52" = 10, "uranium" = 1)
	result_amount = 10

/datum/chemical_reaction/margarita
	name = "Margarita"
	id = "margarita"
	result = "margarita"
	required_reagents = list("tequila" = 2, "limejuice" = 1)
	result_amount = 3

/datum/chemical_reaction/longislandicedtea
	name = "Long Island Iced Tea"
	id = "longislandicedtea"
	result = "longislandicedtea"
	required_reagents = list("vodka" = 1, "gin" = 1, "tequila" = 1, "cubalibre" = 1)
	result_amount = 4

/datum/chemical_reaction/threemileisland
	name = "Three Mile Island Iced Tea"
	id = "threemileisland"
	result = "threemileisland"
	required_reagents = list("longislandicedtea" = 10, "uranium" = 1)
	result_amount = 10

/datum/chemical_reaction/whiskeysoda
	name = "Whiskey Soda"
	id = "whiskeysoda"
	result = "whiskeysoda"
	required_reagents = list("whiskey" = 2, "sodawater" = 1)
	result_amount = 3

/datum/chemical_reaction/black_russian
	name = "Black Russian"
	id = "blackrussian"
	result = "blackrussian"
	required_reagents = list("vodka" = 3, "kahlua" = 2)
	result_amount = 5

/datum/chemical_reaction/manhattan
	name = "Manhattan"
	id = "manhattan"
	result = "manhattan"
	required_reagents = list("whiskey" = 2, "vermouth" = 1)
	result_amount = 3

/datum/chemical_reaction/manhattan_proj
	name = "Manhattan Project"
	id = "manhattan_proj"
	result = "manhattan_proj"
	required_reagents = list("manhattan" = 10, "uranium" = 1)
	result_amount = 10

/datum/chemical_reaction/vodka_tonic
	name = "Vodka and Tonic"
	id = "vodkatonic"
	result = "vodkatonic"
	required_reagents = list("vodka" = 2, "tonic" = 1)
	result_amount = 3

/datum/chemical_reaction/gin_fizz
	name = "Gin Fizz"
	id = "ginfizz"
	result = "ginfizz"
	required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1)
	result_amount = 4

/datum/chemical_reaction/bahama_mama
	name = "Bahama mama"
	id = "bahama_mama"
	result = "bahama_mama"
	required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1)
	result_amount = 6

/datum/chemical_reaction/singulo
	name = "Singulo"
	id = "singulo"
	result = "singulo"
	required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5)
	result_amount = 10

/datum/chemical_reaction/alliescocktail
	name = "Allies Cocktail"
	id = "alliescocktail"
	result = "alliescocktail"
	required_reagents = list("martini" = 1, "vodka" = 1)
	result_amount = 2

/datum/chemical_reaction/demonsblood
	name = "Demons Blood"
	id = "demonsblood"
	result = "demonsblood"
	required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1)
	result_amount = 4

/datum/chemical_reaction/booger
	name = "Booger"
	id = "booger"
	result = "booger"
	required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1)
	result_amount = 4

/datum/chemical_reaction/antifreeze
	name = "Anti-freeze"
	id = "antifreeze"
	result = "antifreeze"
	required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1)
	result_amount = 4

/datum/chemical_reaction/barefoot
	name = "Barefoot"
	id = "barefoot"
	result = "barefoot"
	required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1)
	result_amount = 3

////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri/////

/datum/chemical_reaction/sbiten
	name = "Sbiten"
	id = "sbiten"
	result = "sbiten"
	required_reagents = list("vodka" = 10, "capsaicin" = 1)
	result_amount = 10

/datum/chemical_reaction/red_mead
	name = "Red Mead"
	id = "red_mead"
	result = "red_mead"
	required_reagents = list("blood" = 1, "mead" = 1)
	result_amount = 2

/datum/chemical_reaction/mead
	name = "Mead"
	id = "mead"
	result = "mead"
	required_reagents = list("honey" = 2)
	required_catalysts = list("enzyme" = 5)
	result_amount = 2

/datum/chemical_reaction/iced_beer
	name = "Iced Beer"
	id = "iced_beer"
	result = "iced_beer"
	required_reagents = list("beer" = 5, "ice" = 1)
	result_amount = 6

/datum/chemical_reaction/grog
	name = "Grog"
	id = "grog"
	result = "grog"
	required_reagents = list("rum" = 1, "water" = 1)
	result_amount = 2

/datum/chemical_reaction/soy_latte
	name = "Soy Latte"
	id = "soy_latte"
	result = "soy_latte"
	required_reagents = list("coffee" = 1, "soymilk" = 1)
	result_amount = 2

/datum/chemical_reaction/cafe_latte
	name = "Cafe Latte"
	id = "cafe_latte"
	result = "cafe_latte"
	required_reagents = list("coffee" = 1, "milk" = 1)
	result_amount = 2

/datum/chemical_reaction/acidspit
	name = "Acid Spit"
	id = "acidspit"
	result = "acidspit"
	required_reagents = list("sacid" = 1, "wine" = 5)
	result_amount = 6

/datum/chemical_reaction/amasec
	name = "Amasec"
	id = "amasec"
	result = "amasec"
	required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5)
	result_amount = 10

/datum/chemical_reaction/changelingsting
	name = "Changeling Sting"
	id = "changelingsting"
	result = "changelingsting"
	required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1)
	result_amount = 5

/datum/chemical_reaction/aloe
	name = "Aloe"
	id = "aloe"
	result = "aloe"
	required_reagents = list("irishcream" = 1, "watermelonjuice" = 1)
	result_amount = 2

/datum/chemical_reaction/andalusia
	name = "Andalusia"
	id = "andalusia"
	result = "andalusia"
	required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1)
	result_amount = 3

/datum/chemical_reaction/neurotoxin
	name = "Neurotoxin"
	id = "neurotoxin"
	result = "neurotoxin"
	required_reagents = list("gargleblaster" = 1, "morphine" = 1)
	result_amount = 2

/datum/chemical_reaction/snowwhite
	name = "Snow White"
	id = "snowwhite"
	result = "snowwhite"
	required_reagents = list("beer" = 1, "lemon_lime" = 1)
	result_amount = 2

/datum/chemical_reaction/irishcarbomb
	name = "Irish Car Bomb"
	id = "irishcarbomb"
	result = "irishcarbomb"
	required_reagents = list("ale" = 1, "irishcream" = 1)
	result_amount = 2

/datum/chemical_reaction/syndicatebomb
	name = "Syndicate Bomb"
	id = "syndicatebomb"
	result = "syndicatebomb"
	required_reagents = list("beer" = 1, "whiskeycola" = 1)
	result_amount = 2

/datum/chemical_reaction/erikasurprise
	name = "Erika Surprise"
	id = "erikasurprise"
	result = "erikasurprise"
	required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1)
	result_amount = 5

/datum/chemical_reaction/devilskiss
	name = "Devils Kiss"
	id = "devilskiss"
	result = "devilskiss"
	required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1)
	result_amount = 3

/datum/chemical_reaction/hippiesdelight
	name = "Hippies Delight"
	id = "hippiesdelight"
	result = "hippiesdelight"
	required_reagents = list("mushroomhallucinogen" = 1, "gargleblaster" = 1)
	result_amount = 2

/datum/chemical_reaction/bananahonk
	name = "Banana Honk"
	id = "bananahonk"
	result = "bananahonk"
	required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1)
	result_amount = 3

/datum/chemical_reaction/silencer
	name = "Silencer"
	id = "silencer"
	result = "silencer"
	required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1)
	result_amount = 3

/datum/chemical_reaction/driestmartini
	name = "Driest Martini"
	id = "driestmartini"
	result = "driestmartini"
	required_reagents = list("nothing" = 1, "gin" = 1)
	result_amount = 2

/datum/chemical_reaction/thirteenloko
	name = "Thirteen Loko"
	id = "thirteenloko"
	result = "thirteenloko"
	required_reagents = list("vodka" = 1, "coffee" = 1, "limejuice" = 1)
	result_amount = 3

/datum/chemical_reaction/chocolatepudding
	name = "Chocolate Pudding"
	id = "chocolatepudding"
	result = "chocolatepudding"
	required_reagents = list("cocoa" = 5, "milk" = 5, "eggyolk" = 5)
	result_amount = 20

/datum/chemical_reaction/vanillapudding
	name = "Vanilla Pudding"
	id = "vanillapudding"
	result = "vanillapudding"
	required_reagents = list("vanilla" = 5, "milk" = 5, "eggyolk" = 5)
	result_amount = 20

/datum/chemical_reaction/cherryshake
	name = "Cherry Shake"
	id = "cherryshake"
	result = "cherryshake"
	required_reagents = list("cherryjelly" = 1, "ice" = 1, "cream" = 1)
	result_amount = 3

/datum/chemical_reaction/bluecherryshake
	name = "Blue Cherry Shake"
	id = "bluecherryshake"
	result = "bluecherryshake"
	required_reagents = list("bluecherryjelly" = 1, "ice" = 1, "cream" = 1)
	result_amount = 3

/datum/chemical_reaction/drunkenblumpkin
	name = "Drunken Blumpkin"
	id = "drunkenblumpkin"
	result = "drunkenblumpkin"
	required_reagents = list("blumpkinjuice" = 1, "irishcream" = 2, "ice" = 1)
	result_amount = 4

/datum/chemical_reaction/pumpkin_latte
	name = "Pumpkin space latte"
	id = "pumpkin_latte"
	result = "pumpkin_latte"
	required_reagents = list("pumpkinjuice" = 5, "coffee" = 5, "cream" = 5)
	result_amount = 15

/datum/chemical_reaction/gibbfloats
	name = "Gibb Floats"
	id = "gibbfloats"
	result = "gibbfloats"
	required_reagents = list("dr_gibb" = 5, "ice" = 5, "cream" = 5)
	result_amount = 15

/datum/chemical_reaction/triple_citrus
	name = "triple_citrus"
	id = "triple_citrus"
	result = "triple_citrus"
	required_reagents = list("lemonjuice" = 1, "limejuice" = 1, "orangejuice" = 1)
	result_amount = 5

/datum/chemical_reaction/grape_soda
	name = "grape soda"
	id = "grapesoda"
	result = "grape_soda"
	required_reagents = list("grapejuice" = 1, "sodawater" = 1)
	result_amount = 2

/datum/chemical_reaction/grappa
	name = "grappa"
	id = "grappa"
	result = "grappa"
	required_reagents = list ("wine" = 10)
	required_catalysts = list ("enzyme" = 5)
	result_amount = 10

/datum/chemical_reaction/whiskey_sour
	name = "Whiskey Sour"
	id = "whiskey_sour"
	result = "whiskey_sour"
	required_reagents = list("whiskey" = 1, "lemonjuice" = 1, "sugar" = 1)
	result_amount = 3
	mix_message = "The mixture darkens to a rich gold hue."
	mix_sound = null

/datum/chemical_reaction/fetching_fizz
	name = "Fetching Fizz"
	id = "fetching_fizz"
	result = "fetching_fizz"
	required_reagents = list("nuka_cola" = 1, "iron" = 1) //Manufacturable from only the mining station
	result_amount = 3
	mix_message = "The mixture slightly vibrates before settling."

/datum/chemical_reaction/hearty_punch
	name = "Hearty Punch"
	id = "hearty_punch"
	result = "hearty_punch"
	required_reagents = list("bravebull" = 5, "syndicatebomb" = 5, "absinthe" = 5)
	result_amount = 1 //Very little, for balance reasons
	mix_message = "The mixture darkens to a healthy crimson."
	mix_sound = null
	required_temp = 315 //Piping hot!

/datum/chemical_reaction/bacchus_blessing
	name = "Bacchus' Blessing"
	id = "bacchus_blessing"
	result = "bacchus_blessing"
	required_reagents = list("hooch" = 1, "absinthe" = 1, "manlydorf" = 1, "syndicatebomb" = 1)
	result_amount = 4
	mix_message = "The mixture turns to a sickening froth."


code:
//////////////////////////////////////////FOOD MIXTURES////////////////////////////////////

/datum/chemical_reaction/tofu
	name = "Tofu"
	id = "tofu"
	result = null
	required_reagents = list("soymilk" = 10)
	required_catalysts = list("enzyme" = 5)
	result_amount = 1
	mob_react=1

/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume)
	var/location = get_turf(holder.my_atom)
	for(var/i = 1, i <= created_volume, i++)
		new /obj/item/weapon/reagent_containers/food/snacks/tofu(location)
	return

/datum/chemical_reaction/chocolate_bar
	name = "Chocolate Bar"
	id = "chocolate_bar"
	result = null
	required_reagents = list("soymilk" = 2, "cocoa" = 2, "sugar" = 2)
	result_amount = 1

/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume)
	var/location = get_turf(holder.my_atom)
	for(var/i = 1, i <= created_volume, i++)
		new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
	return

/datum/chemical_reaction/chocolate_bar2
	name = "Chocolate Bar"
	id = "chocolate_bar"
	result = null
	required_reagents = list("milk" = 2, "cocoa" = 2, "sugar" = 2)
	result_amount = 1
	mob_react = 1
/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume)
	var/location = get_turf(holder.my_atom)
	for(var/i = 1, i <= created_volume, i++)
		new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
	return

/datum/chemical_reaction/hot_coco
	name = "Hot Coco"
	id = "hot_coco"
	result = "hot_coco"
	required_reagents = list("water" = 5, "cocoa" = 1)
	result_amount = 5

/datum/chemical_reaction/coffee
	name = "Coffee"
	id = "coffee"
	result = "coffee"
	required_reagents = list("coffeepowder" = 1, "water" = 5)
	result_amount = 5

/datum/chemical_reaction/tea
	name = "Tea"
	id = "tea"
	result = "tea"
	required_reagents = list("teapowder" = 1, "water" = 5)
	result_amount = 5

/datum/chemical_reaction/soysauce
	name = "Soy Sauce"
	id = "soysauce"
	result = "soysauce"
	required_reagents = list("soymilk" = 4, "sacid" = 1)
	result_amount = 5

/datum/chemical_reaction/corn_syrup
	name = "corn_syrup"
	id = "corn_syrup"
	result = "corn_syrup"
	required_reagents = list("corn_starch" = 1, "sacid" = 1)
	result_amount = 5
	required_temp = 374

/datum/chemical_reaction/cheesewheel
	name = "Cheesewheel"
	id = "cheesewheel"
	result = null
	required_reagents = list("milk" = 40)
	required_catalysts = list("enzyme" = 5)
	result_amount = 1

/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume)
	var/location = get_turf(holder.my_atom)
	new /obj/item/weapon/reagent_containers/food/snacks/store/cheesewheel(location)
	return

/datum/chemical_reaction/synthmeat
	name = "synthmeat"
	id = "synthmeat"
	result = null
	required_reagents = list("blood" = 5, "cryoxadone" = 1)
	result_amount = 1
	mob_react = 1

/datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume)
	var/location = get_turf(holder.my_atom)
	new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/synthmeat(location)
	return

/datum/chemical_reaction/hot_ramen
	name = "Hot Ramen"
	id = "hot_ramen"
	result = "hot_ramen"
	required_reagents = list("water" = 1, "dry_ramen" = 3)
	result_amount = 3

/datum/chemical_reaction/hell_ramen
	name = "Hell Ramen"
	id = "hell_ramen"
	result = "hell_ramen"
	required_reagents = list("capsaicin" = 1, "hot_ramen" = 6)
	result_amount = 6

/datum/chemical_reaction/imitationcarpmeat
	name = "Imitation Carpmeat"
	id = "imitationcarpmeat"
	result = null
	required_reagents = list("carpotoxin" = 5)
	result_amount = 1
	required_container = /obj/item/weapon/reagent_containers/food/snacks/tofu
	mix_message = "The mixture becomes similar to carp meat."

/datum/chemical_reaction/imitationcarpmeat/on_reaction(datum/reagents/holder)
	var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/carpmeat/imitation
	S.loc = get_turf(holder.my_atom)
	if(holder && holder.my_atom)
		qdel(holder.my_atom)

/datum/chemical_reaction/dough
	name = "Dough"
	id = "dough"
	result = null
	required_reagents = list("water" = 10, "flour" = 15)
	result_amount = 1
	mix_message = "The ingredients form a dough."

/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume)
	var/location = get_turf(holder.my_atom)
	for(var/i = 1, i <= created_volume, i++)
		new /obj/item/weapon/reagent_containers/food/snacks/dough(location)

/datum/chemical_reaction/cakebatter
	name = "Cake Batter"
	id = "cakebatter"
	result = null
	required_reagents = list("eggyolk" = 15, "flour" = 15, "sugar" = 5)
	result_amount = 1
	mix_message = "The ingredients form a cake batter."

/datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, created_volume)
	var/location = get_turf(holder.my_atom)
	for(var/i = 1, i <= created_volume, i++)
		new /obj/item/weapon/reagent_containers/food/snacks/cakebatter(location)

/datum/chemical_reaction/cakebatter/vegan
	id = "vegancakebatter"
	required_reagents = list("soymilk" = 15, "flour" = 15, "sugar" = 5)

/datum/chemical_reaction/ricebowl
	name = "Rice Bowl"
	id = "ricebowl"
	result = null
	required_reagents = list("rice" = 10, "water" = 10)
	result_amount = 1
	required_container = /obj/item/weapon/reagent_containers/glass/bowl
	mix_message = "The rice absorbs the water."

/datum/chemical_reaction/ricebowl/on_reaction(datum/reagents/holder)
	var/obj/item/weapon/reagent_containers/food/snacks/S = new /obj/item/weapon/reagent_containers/food/snacks/salad/ricebowl
	S.loc = get_turf(holder.my_atom)
	if(holder && holder.my_atom)
		qdel(holder.my_atom)


code:
// see code/module/crafting/table.dm

////////////////////////////////////////////////BREAD////////////////////////////////////////////////

/datum/table_recipe/meatbread
	name = "Meat bread"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/plain = 3,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/meat
	category = CAT_FOOD

/datum/table_recipe/xenomeatbread
	name = "Xenomeat bread"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/xeno = 3,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/xenomeat
	category = CAT_FOOD

/datum/table_recipe/spidermeatbread
	name = "Spidermeat bread"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/spider = 3,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/spidermeat
	category = CAT_FOOD

/datum/table_recipe/banananutbread
	name = "Banana nut bread"
	reqs = list(
		/datum/reagent/consumable/milk = 5,
		/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/boiledegg = 3,
		/obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/banana
	category = CAT_FOOD

/datum/table_recipe/tofubread
	name = "Tofu bread"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/tofu = 3,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/tofu
	category = CAT_FOOD

/datum/table_recipe/creamcheesebread
	name = "Cream cheese bread"
	reqs = list(
		/datum/reagent/consumable/milk = 5,
		/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/creamcheese
	category = CAT_FOOD

/datum/table_recipe/mimanabread
	name = "Mimana bread"
	reqs = list(
		/datum/reagent/consumable/soymilk = 5,
		/obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/tofu = 3,
		/obj/item/weapon/reagent_containers/food/snacks/grown/banana/mime = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/mimana
	category = CAT_FOOD


code:
// see code/module/crafting/table.dm

////////////////////////////////////////////////BURGERS////////////////////////////////////////////////

/datum/table_recipe/humanburger
	name = "Human burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human = 1
	)
	parts = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/human
	category = CAT_FOOD

/datum/table_recipe/burger
	name = "Burger"
	reqs = list(
			/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1,
			/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)

	result = /obj/item/weapon/reagent_containers/food/snacks/burger/plain
	category = CAT_FOOD

/datum/table_recipe/corgiburger
	name = "Corgi burger"
	reqs = list(
			/obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi = 1,
			/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)

	result = /obj/item/weapon/reagent_containers/food/snacks/burger/corgi
	category = CAT_FOOD

/datum/table_recipe/appendixburger
	name = "Appendix burger"
	reqs = list(
		/obj/item/organ/internal/appendix = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/appendix
	category = CAT_FOOD

/datum/table_recipe/brainburger
	name = "Brain burger"
	reqs = list(
		/obj/item/organ/internal/brain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/brain
	category = CAT_FOOD

/datum/table_recipe/xenoburger
	name = "Xeno burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/xeno = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/xeno
	category = CAT_FOOD

/datum/table_recipe/bearger
	name = "Bearger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/bear = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/bearger
	category = CAT_FOOD

/datum/table_recipe/fishburger
	name = "Fish burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/fish
	category = CAT_FOOD

/datum/table_recipe/tofuburger
	name = "Tofu burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/tofu = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/tofu
	category = CAT_FOOD

/datum/table_recipe/ghostburger
	name = "Ghost burger"
	reqs = list(
		/obj/item/weapon/ectoplasm = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/ghost
	category = CAT_FOOD

/datum/table_recipe/clownburger
	name = "Clown burger"
	reqs = list(
		/obj/item/clothing/mask/gas/clown_hat = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/clown
	category = CAT_FOOD

/datum/table_recipe/mimeburger
	name = "Mime burger"
	reqs = list(
		/obj/item/clothing/mask/gas/mime = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/mime
	category = CAT_FOOD

/datum/table_recipe/redburger
	name = "Red burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1,
		/obj/item/toy/crayon/red = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/red
	category = CAT_FOOD

/datum/table_recipe/orangeburger
	name = "Orange burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1,
		/obj/item/toy/crayon/orange = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/orange
	category = CAT_FOOD

/datum/table_recipe/yellowburger
	name = "Yellow burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1,
		/obj/item/toy/crayon/yellow = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/yellow
	category = CAT_FOOD

/datum/table_recipe/greenburger
	name = "Green burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1,
		/obj/item/toy/crayon/green = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/green
	category = CAT_FOOD

/datum/table_recipe/blueburger
	name = "Blue burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1,
		/obj/item/toy/crayon/blue = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/blue
	category = CAT_FOOD

/datum/table_recipe/purpleburger
	name = "Purple burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1,
		/obj/item/toy/crayon/purple = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/purple
	category = CAT_FOOD

/datum/table_recipe/spellburger
	name = "Spell burger"
	reqs = list(
		/obj/item/clothing/head/wizard/fake,
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell
	category = CAT_FOOD

/datum/table_recipe/spellburger2
	name = "Spell burger"
	reqs = list(
		/obj/item/clothing/head/wizard = 1,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell
	category = CAT_FOOD

/datum/table_recipe/bigbiteburger
	name = "Big bite burger"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 3,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/bigbite
	category = CAT_FOOD

/datum/table_recipe/superbiteburger
	name = "Super bite burger"
	reqs = list(
		/datum/reagent/consumable/sodiumchloride = 5,
		/datum/reagent/consumable/blackpepper = 5,
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 5,
		/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 4,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 3,
		/obj/item/weapon/reagent_containers/food/snacks/boiledegg = 2,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1

	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/superbite
	category = CAT_FOOD

/datum/table_recipe/slimeburger
	name = "Jelly burger"
	reqs = list(
		/datum/reagent/toxin/slimejelly = 5,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/slime
	category = CAT_FOOD

/datum/table_recipe/jellyburger
	name = "Jelly burger"
	reqs = list(
			/datum/reagent/consumable/cherryjelly = 5,
			/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/cherry
	category = CAT_FOOD

/datum/table_recipe/fivealarmburger
	name = "Five alarm burger"
	reqs = list(
			/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili = 2,
			/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/fivealarm
	category = CAT_FOOD

/datum/table_recipe/ratburger
	name = "Rat burger"
	reqs = list(
			/obj/item/trash/deadmouse = 1,
			/obj/item/weapon/reagent_containers/food/snacks/bun = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burger/rat
	category = CAT_FOOD


code:
// see code/module/crafting/table.dm

////////////////////////////////////////////////CAKE////////////////////////////////////////////////

/datum/table_recipe/carrotcake
	name = "Carrot cake"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/carrot
	category = CAT_FOOD

/datum/table_recipe/cheesecake
	name = "Cheese cake"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/cheese
	category = CAT_FOOD

/datum/table_recipe/applecake
	name = "Apple cake"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/apple = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/apple
	category = CAT_FOOD

/datum/table_recipe/orangecake
	name = "Orange cake"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/orange
	category = CAT_FOOD

/datum/table_recipe/limecake
	name = "Lime cake"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lime = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lime
	category = CAT_FOOD

/datum/table_recipe/lemoncake
	name = "Lemon cake"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lemon
	category = CAT_FOOD

/datum/table_recipe/chocolatecake
	name = "Chocolate cake"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/chocolate
	category = CAT_FOOD

/datum/table_recipe/birthdaycake
	name = "Birthday cake"
	reqs = list(
		/obj/item/clothing/head/hardhat/cakehat = 1,
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/birthday
	category = CAT_FOOD

/datum/table_recipe/braincake
	name = "Brain cake"
	reqs = list(
		/obj/item/organ/internal/brain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/brain
	category = CAT_FOOD

/datum/table_recipe/slimecake
	name = "Slime cake"
	reqs = list(
		/obj/item/slime_extract = 1,
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/slimecake
	category = CAT_FOOD

/datum/table_recipe/pumpkinspicecake
	name = "Pumpkin spice cake"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/pumpkinspice
	category = CAT_FOOD


code:
// see code/module/crafting/table.dm

////////////////////////////////////////////////EGG RECIPE's////////////////////////////////////////////////

/datum/table_recipe/friedegg
	name = "Fried egg"
	reqs = list(
		/datum/reagent/consumable/sodiumchloride = 1,
		/datum/reagent/consumable/blackpepper = 1,
		/obj/item/weapon/reagent_containers/food/snacks/boiledegg = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/friedegg
	category = CAT_FOOD

/datum/table_recipe/omelette
	name = "omelette"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/boiledegg = 2,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/omelette
	category = CAT_FOOD

/datum/table_recipe/chocolateegg
	name = "Chocolate egg"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/boiledegg = 1,
		/obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg
	category = CAT_FOOD

/datum/table_recipe/eggsbenedict
	name = "Eggs benedict"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/friedegg = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak = 1,
		/obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1,
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/benedict
	category = CAT_FOOD


code:
////////////////////////////////////////////////KEBABS////////////////////////////////////////////////

/datum/table_recipe/humankebab
	name = "Human kebab"
	reqs = list(
		/obj/item/stack/rods = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/kebab/human
	category = CAT_FOOD

/datum/table_recipe/kebab
	name = "Kebab"
	reqs = list(
		/obj/item/stack/rods = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/kebab/monkey
	category = CAT_FOOD

/datum/table_recipe/tofukebab
	name = "Tofu kebab"
	reqs = list(
		/obj/item/stack/rods = 1,
		/obj/item/weapon/reagent_containers/food/snacks/tofu = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tofu
	category = CAT_FOOD

/datum/table_recipe/tailkebab
	name = "Lizard tail kebab"
	reqs = list(
		/obj/item/stack/rods = 1,
		/obj/item/organ/severedtail = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tail
	category = CAT_FOOD

// see code/module/crafting/table.dm

////////////////////////////////////////////////FISH////////////////////////////////////////////////

/datum/table_recipe/cubancarp
	name = "Cuban carp"
	reqs = list(
		/datum/reagent/consumable/flour = 5,
		/obj/item/weapon/reagent_containers/food/snacks/grown/chili = 1,
		/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp
	category = CAT_FOOD

/datum/table_recipe/fishandchips
	name = "Fish and chips"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/fries = 1,
		/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips
	category = CAT_FOOD

/datum/table_recipe/fishfingers
	name = "Fish fingers"
	reqs = list(
		/datum/reagent/consumable/flour = 5,
		/obj/item/weapon/reagent_containers/food/snacks/bun = 1,
		/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers
	category = CAT_FOOD

/datum/table_recipe/sashimi
	name = "Sashimi"
	reqs = list(
		/datum/reagent/consumable/soysauce = 5,
		/obj/item/weapon/reagent_containers/food/snacks/spidereggs = 1,
		/obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/sashimi
	category = CAT_FOOD

////////////////////////////////////////////////MR SPIDER////////////////////////////////////////////////

/datum/table_recipe/spidereggsham
	name = "Spider eggs ham"
	reqs = list(
		/datum/reagent/consumable/sodiumchloride = 1,
		/obj/item/weapon/reagent_containers/food/snacks/spidereggs = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet/spider = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/spidereggsham
	category = CAT_FOOD

////////////////////////////////////////////////MISC RECIPE's////////////////////////////////////////////////

/datum/table_recipe/cornedbeef
	name = "Corned beef"
	reqs = list(
		/datum/reagent/consumable/sodiumchloride = 5,
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/cornedbeef
	category = CAT_FOOD

/datum/table_recipe/bearsteak
	name = "Filet migrawr"
	reqs = list(
		/datum/reagent/consumable/ethanol/manly_dorf = 5,
		/obj/item/weapon/reagent_containers/food/snacks/meat/steak/bear = 1,
	)
	tools = list(/obj/item/weapon/lighter)
	result = /obj/item/weapon/reagent_containers/food/snacks/bearsteak
	category = CAT_FOOD

/datum/table_recipe/enchiladas
	name = "Enchiladas"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 2,
		/obj/item/weapon/reagent_containers/food/snacks/grown/chili = 2,
		/obj/item/weapon/reagent_containers/food/snacks/tortilla = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas
	category = CAT_FOOD

/datum/table_recipe/stewedsoymeat
	name = "Stewed soymeat"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/soydope = 2,
		/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat
	category = CAT_FOOD

/datum/table_recipe/sausage
	name = "Sausage"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/faggot = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/sausage
	category = CAT_FOOD

/datum/table_recipe/nugget
	name = "Chicken nugget"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/nugget
	category = CAT_FOOD


code:
// see code/module/crafting/table.dm

// MISC

/datum/table_recipe/candiedapple
	name = "Candied apple"
	reqs = list(/datum/reagent/water = 5,
		/datum/reagent/consumable/sugar = 5,
		/obj/item/weapon/reagent_containers/food/snacks/grown/apple = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple
	category = CAT_FOOD

/datum/table_recipe/chococoin
	name = "Choco coin"
	reqs = list(
		/obj/item/weapon/coin = 1,
		/obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1,
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/chococoin
	category = CAT_FOOD

/datum/table_recipe/fudgedice
	name = "Fudge dice"
	reqs = list(
		/obj/item/weapon/dice = 1,
		/obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1,
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/fudgedice
	category = CAT_FOOD

/datum/table_recipe/chocoorange
	name = "Choco orange"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 1,
		/obj/item/weapon/reagent_containers/food/snacks/chocolatebar = 1,
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/chocoorange
	category = CAT_FOOD

/datum/table_recipe/loadedbakedpotato
	name = "Loaded baked potato"
	time = 40
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/grown/potato = 1,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato
	category = CAT_FOOD

/datum/table_recipe/cheesyfries
	name = "Cheesy fries"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/fries = 1,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries
	category = CAT_FOOD

/datum/table_recipe/wrap
	name = "Wrap"
	reqs = list(/datum/reagent/consumable/soysauce = 10,
		/obj/item/weapon/reagent_containers/food/snacks/friedegg = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage = 1,
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/eggwrap
	category = CAT_FOOD

/datum/table_recipe/beans
	name = "Beans"
	time = 40
	reqs = list(/datum/reagent/consumable/ketchup = 5,
		/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/beans
	category = CAT_FOOD

/datum/table_recipe/eggplantparm
	name ="Eggplant parmigiana"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2,
		/obj/item/weapon/reagent_containers/food/snacks/grown/eggplant = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm
	category = CAT_FOOD

/datum/table_recipe/baguette
	name = "Baguette"
	time = 40
	reqs = list(/datum/reagent/consumable/sodiumchloride = 1,
				/datum/reagent/consumable/blackpepper = 1,
				/obj/item/weapon/reagent_containers/food/snacks/pastrybase = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/baguette
	category = CAT_FOOD

////////////////////////////////////////////////TOAST////////////////////////////////////////////////

/datum/table_recipe/slimetoast
	name = "Slime toast"
	reqs = list(
		/datum/reagent/toxin/slimejelly = 5,
		/obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime
	category = CAT_FOOD

/datum/table_recipe/jelliedyoast
	name = "Jellied toast"
	reqs = list(
		/datum/reagent/consumable/cherryjelly = 5,
		/obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry
	category = CAT_FOOD

/datum/table_recipe/twobread
	name = "Two bread"
	reqs = list(
		/datum/reagent/consumable/ethanol/wine = 5,
		/obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/twobread
	category = CAT_FOOD

/datum/table_recipe/burrito
	name ="Burrito"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/tortilla = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 2
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/burrito
	category = CAT_FOOD

/datum/table_recipe/cheesyburrito
	name ="Cheesy burrito"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/tortilla = 1,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2,
		/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/cheesyburrito
	category = CAT_FOOD

/datum/table_recipe/carneburrito
	name ="Carne de asada burrito"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/tortilla = 1,
		/obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 2,
		/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/carneburrito
	category = CAT_FOOD

/datum/table_recipe/fuegoburrito
	name ="Fuego plasma burrito"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/tortilla = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili = 2,
		/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/fuegoburrito
	category = CAT_FOOD

/datum/table_recipe/melonfruitbowl
	name ="Melon fruit bowl"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/grown/watermelon = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/apple = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/citrus/lemon = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/melonfruitbowl
	category = CAT_FOOD

/datum/table_recipe/spacefreezy
	name ="Space freezy"
	reqs = list(
		/datum/reagent/consumable/bluecherryjelly = 5,
		/datum/reagent/consumable/spacemountainwind = 15,
		/obj/item/weapon/reagent_containers/food/snacks/icecream = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/spacefreezy
	category = CAT_FOOD

/datum/table_recipe/sundae
	name ="Sundae"
	reqs = list(
		/datum/reagent/consumable/cream = 5,
		/obj/item/weapon/reagent_containers/food/snacks/grown/cherries = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/banana = 1,
		/obj/item/weapon/reagent_containers/food/snacks/icecream = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/sundae
	category = CAT_FOOD

/datum/table_recipe/honkdae
	name ="Honkdae"
	reqs = list(
		/datum/reagent/consumable/cream = 5,
		/obj/item/clothing/mask/gas/clown_hat = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/cherries = 1,
		/obj/item/weapon/reagent_containers/food/snacks/grown/banana = 2,
		/obj/item/weapon/reagent_containers/food/snacks/icecream = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/honkdae
	category = CAT_FOOD

/datum/table_recipe/nachos
	name ="Nachos"
	reqs = list(
		/datum/reagent/consumable/sodiumchloride = 1,
		/obj/item/weapon/reagent_containers/food/snacks/tortilla = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/nachos
	category = CAT_FOOD

/datum/table_recipe/cheesynachos
	name ="Cheesy nachos"
	reqs = list(
		/datum/reagent/consumable/sodiumchloride = 1,
		/obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 1,
		/obj/item/weapon/reagent_containers/food/snacks/tortilla = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/cheesynachos
	category = CAT_FOOD

/datum/table_recipe/cubannachos
	name ="Cuban nachos"
	reqs = list(
		/datum/reagent/consumable/ketchup = 5,
		/obj/item/weapon/reagent_containers/food/snacks/grown/chili = 2,
		/obj/item/weapon/reagent_containers/food/snacks/tortilla = 1
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/cubannachos
	category = CAT_FOOD

/datum/table_recipe/melonkeg
	name ="Melon keg"
	reqs = list(
		/datum/reagent/consumable/ethanol/vodka = 25,
		/obj/item/weapon/reagent_containers/food/snacks/grown/holymelon = 1,
		/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 1
	)
	parts = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka = 1)
	result = /obj/item/weapon/reagent_containers/food/snacks/melonkeg
	category = CAT_FOOD

/datum/table_recipe/honeybar
	name = "Honey nut bar"
	reqs = list(
		/obj/item/weapon/reagent_containers/food/snacks/grown/oat = 1,
		/datum/reagent/consumable/honey = 5
	)
	result = /obj/item/weapon/reagent_containers/food/snacks/honeybar
	category = CAT_FOOD