diff --git a/code/game/objects/items/weapons/circuitboards/frame_ch.dm b/code/game/objects/items/weapons/circuitboards/frame_ch.dm
new file mode 100644
index 0000000000..45df1c1e48
--- /dev/null
+++ b/code/game/objects/items/weapons/circuitboards/frame_ch.dm
@@ -0,0 +1,9 @@
+/obj/item/weapon/circuitboard/microwave/advanced
+ name = T_BOARD("deluxe microwave")
+ build_path = /obj/machinery/microwave/advanced
+ board_type = new /datum/frame/frame_types/microwave
+ matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
+ req_components = list(
+ /obj/item/weapon/stock_parts/console_screen = 1,
+ /obj/item/weapon/stock_parts/motor = 1,
+ /obj/item/weapon/stock_parts/capacitor = 1)
diff --git a/code/modules/food/food/thecake_ch.dm b/code/modules/food/food/thecake_ch.dm
new file mode 100644
index 0000000000..93aef1a06b
--- /dev/null
+++ b/code/modules/food/food/thecake_ch.dm
@@ -0,0 +1,613 @@
+//The collection of everything 'cake' related
+// adjust recipes, make ingredients mobs
+
+/datum/recipe/thecake_firstlayer
+ reagents = list("flour" = 500,"milk" = 200, "sugar" = 200, "egg" = 100)
+ fruit = list("icechili" = 30, "plastellium" = 15)
+ items = list(
+ /obj/item/stack/material/silver,
+ /obj/item/stack/material/silver,
+ /obj/item/stack/material/silver,
+ /obj/item/stack/material/silver,
+ /obj/item/stack/material/silver,
+
+ /obj/item/slime_extract/grey,
+ /obj/item/slime_extract/grey,
+ /obj/item/slime_extract/grey,
+ /obj/item/slime_extract/grey,
+ /obj/item/slime_extract/grey,
+
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat
+ )
+ result = /obj/structure/thecake
+
+/datum/recipe/thecake_secondlayer
+ reagents = list("flour" = 400, "milk" = 200, "sugar" = 100, "cryoxadone" = 200, "frostoil" = 100)
+ fruit = list("vanilla" = 30, "icelettuce" = 15)
+ items = list(
+ /obj/item/stack/material/glass/phoronglass,
+ /obj/item/stack/material/glass/phoronglass,
+ /obj/item/stack/material/glass/phoronglass,
+ /obj/item/stack/material/glass/phoronglass,
+ /obj/item/stack/material/glass/phoronglass,
+
+ /obj/item/organ/internal/eyes,
+ /obj/item/organ/internal/eyes,
+ /obj/item/organ/internal/eyes,
+ /obj/item/organ/internal/eyes,
+ /obj/item/organ/internal/eyes,
+
+ /obj/item/stack/material/diamond,
+ /obj/item/stack/material/diamond,
+ /obj/item/stack/material/diamond,
+ /obj/item/stack/material/diamond,
+ /obj/item/stack/material/diamond
+ )
+ result = /obj/item/weapon/thecake_layertwo
+
+/datum/recipe/thecake_thirdlayer
+ reagents = list("flour" = 300, "singulo" = 300, "atomicbomb" = 150, "threemileisland" = 150, "manhattan_proj" = 100)
+ fruit = list("glowberries" = 30, "glowshrooms" = 15)
+ items = list(
+ /obj/item/stack/material/uranium,
+ /obj/item/stack/material/uranium,
+ /obj/item/stack/material/uranium,
+ /obj/item/stack/material/uranium,
+ /obj/item/stack/material/uranium,
+
+ /obj/item/slime_extract/green,
+ /obj/item/slime_extract/green,
+ /obj/item/slime_extract/green,
+ /obj/item/slime_extract/green,
+ /obj/item/slime_extract/green,
+
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat
+ )
+ result = /obj/item/weapon/thecake_layerthree
+
+/datum/recipe/thecake_fourthlayer
+ reagents = list("flour" = 400, "holymary" = 100, "angelskiss" = 100, "goldschlager" = 100, "gold" = 300)
+ fruit = list("ambrosiadeus" = 30, "goldapple" = 15)
+ items = list(
+ /obj/item/stack/material/gold,
+ /obj/item/stack/material/gold,
+ /obj/item/stack/material/gold,
+ /obj/item/stack/material/gold,
+ /obj/item/stack/material/gold,
+
+ /obj/item/organ/internal/heart,
+ /obj/item/organ/internal/heart,
+ /obj/item/organ/internal/heart,
+ /obj/item/organ/internal/heart,
+ /obj/item/organ/internal/heart,
+
+ /obj/item/weapon/reagent_containers/food/snacks/appletart,
+ /obj/item/weapon/reagent_containers/food/snacks/appletart,
+ /obj/item/weapon/reagent_containers/food/snacks/appletart,
+ /obj/item/weapon/reagent_containers/food/snacks/appletart,
+ /obj/item/weapon/reagent_containers/food/snacks/appletart
+ )
+ result = /obj/item/weapon/thecake_layerfour
+
+/datum/recipe/thecake_fifthlayer
+ reagents = list("deathbell" = 1000)
+ fruit = list("libertycap" = 10, "deathnettle" = 10, "destroyingangel" = 10)
+ items = list(
+ /obj/item/stack/material/platinum,
+ /obj/item/stack/material/platinum,
+ /obj/item/stack/material/platinum,
+ /obj/item/stack/material/platinum,
+ /obj/item/stack/material/platinum,
+
+ /obj/item/slime_extract/emerald,
+ /obj/item/slime_extract/emerald,
+ /obj/item/slime_extract/emerald,
+ /obj/item/slime_extract/emerald,
+ /obj/item/slime_extract/emerald,
+
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat,
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat,
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat,
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat,
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat
+ )
+ result = /obj/item/weapon/thecake_layerfive
+
+/obj/structure/thecake
+ name = "An unfinished cake"
+ desc = "A single layer of tasty delicious cake goodness, but it feels very incomplete..."
+
+ icon = 'icons/obj/64x64.dmi'
+ icon_state = "thecake_onelayer"
+ pixel_x = -16
+
+ var/edible = 0
+ var/stage = 1
+ var/slices = 5
+ var/maxslices = 5
+
+ var/regentime = 2000
+ var/interval = 0
+
+/obj/structure/thecake/proc/HasSliceMissing()
+ ..()
+ if(slices < maxslices)
+ if(interval >= regentime)
+ interval = 0
+ slices++
+ HasSliceMissing()
+ else
+ interval++
+ HasSliceMissing()
+ else
+ return
+
+/obj/item/weapon/thecake_layertwo
+ name = "A layer of cake"
+ desc = "a layer of cake, you can see your own reflection in it."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "thecake_layertwo"
+
+/obj/item/weapon/thecake_layerthree
+ desc = "a layer of cake, it bathes you in a soft green glowth and warmth."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "thecake_layerthree"
+
+/obj/item/weapon/thecake_layerfour
+ name = "A layer of cake"
+ desc = "a layer of cake, its of so high karat that even the lightest touch leaves a dent in it."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "thecake_layerfour"
+
+/obj/item/weapon/thecake_layerfive
+ name = "A layer of cake"
+ desc = "a layer of cake, whatever this strange metal thats used in it is, it seems to drawn in light and reflect it back in a different shade."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "thecake_layerfive"
+
+/obj/item/weapon/thecake_singulocherry
+ name = "A stable singularity cherry"
+ desc = "It's a tiny singularity, but it doesnt draw in everything around it, touching it feels strange, like your touching nothingness...That feels at the same time like touching a cherry."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "singulocherry"
+
+/obj/item/weapon/reagent_containers/food/snacks/thecakeslice
+ name = "The Infinity Cake Slice"
+ desc = "A slice from The Infinity Cake, sadly the slice itself isnt infinite..."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "thecakeslice"
+
+ center_of_mass = list("x"=16, "y"=10)
+ nutriment_desc = list("cake" = 10, "sweetness" = 10, "singularity?" = 1)
+ nutriment_amt = 5
+ //Add some randomized effect possibly, to make the slices special - Jack
+
+
+/obj/structure/thecake/attackby(var/obj/item/weapon/W, var/mob/living/user)
+ if(istype(W,/obj/item/weapon/material/knife))
+ if(edible == 1)
+ HasSliceMissing()
+ if(slices <= 0)
+ user << "The cake hums away quietly as the singulo powered goodness slowly recovers the large amount of lost mass, best to give it a moment before cutting another slice."
+ return
+ else
+ user << "You cut a slice of the cake. The slice looks like the cake was just baked, and you can see before your eyes as the spot where you cut the slice slowly regenerates!"
+ slices = slices - 1
+ new /obj/item/weapon/reagent_containers/food/snacks/thecakeslice(src.loc)
+
+ else
+ to_chat(user, "It looks so good... But it feels so wrong to eat it before it's finished...")
+ return
+ if(istype(W,/obj/item/weapon/thecake_layertwo))
+ if(stage == 1)
+ user << "You add a second layer to the cake, nice."
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "thecake_twolayers"
+ stage = 2
+ else if(stage == 6)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/thecake_layerthree))
+ if(stage == 2)
+ user << "You add a third layer to the cake, sweet~"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "thecake_threelayers"
+ stage = 3
+ else if(stage == 6)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/thecake_layerfour))
+ if(stage == 3)
+ user << "You add a fourth layer to the cake, it's almost done!"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "thecake_fourlayers"
+ stage = 4
+ else if(stage == 6)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/thecake_layerfive))
+ if(stage == 4)
+ user << "You add a fifth layer to the cake, it's finished!"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "thecake_fivelayers"
+ stage = 5
+ spawn(5 SECONDS)
+ user << "...But it feels like...It's missing something?"
+ else if(stage == 6)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/thecake_singulocherry))
+ if(stage == 5)
+ user << "Finally! The cherry on the top, the almighty infinity cake is complete!"
+ qdel(W)
+ name = "The Infinity Cake!"
+ desc = "its The Infinity Cake! This huge imposing cake made by immense efforts and resources stands tall in you, radiating a menacing aura of frosty goodness and diabetes for those not wary of it's infinite might!"
+ icon_state = "thecake_finished"
+ stage = 6
+ edible = 1
+ //Maybe fireworks going off? Confetti spawn? - Jack
+ else if(stage == 6)
+ user << "The cake is already done!"
+ else
+ user << "I don't think this goes on the cake...At least not yet?"
+
+// Chaos cake
+
+/datum/recipe/chaoscake_layerone
+ reagents = list("flour" = 500,"milk" = 200, "sugar" = 200, "egg" = 100)
+ fruit = list("icechili" = 30, "plastellium" = 15)
+ items = list(
+ /obj/item/stack/material/silver,
+ /obj/item/stack/material/silver,
+ /obj/item/stack/material/silver,
+ /obj/item/stack/material/silver,
+
+ /obj/item/slime_extract/grey,
+ /obj/item/slime_extract/grey,
+ /obj/item/slime_extract/grey,
+ /obj/item/slime_extract/grey,
+
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/meat/grubmeat
+ )
+ result = /obj/structure/chaoscake
+
+/datum/recipe/chaoscake_layertwo
+ reagents = list("flour" = 400, "milk" = 200, "sugar" = 100, "cryoxadone" = 200, "frostoil" = 100)
+ fruit = list("vanilla" = 30, "icelettuce" = 15)
+ items = list(
+ /obj/item/stack/material/glass/phoronglass,
+ /obj/item/stack/material/glass/phoronglass,
+ /obj/item/stack/material/glass/phoronglass,
+ /obj/item/stack/material/glass/phoronglass,
+
+ /obj/item/organ/internal/eyes,
+ /obj/item/organ/internal/eyes,
+ /obj/item/organ/internal/eyes,
+ /obj/item/organ/internal/eyes,
+
+ /obj/item/stack/material/diamond,
+ /obj/item/stack/material/diamond,
+ /obj/item/stack/material/diamond,
+ /obj/item/stack/material/diamond
+ )
+ result = /obj/item/weapon/chaoscake_layertwo
+
+/datum/recipe/chaoscake_layerthree
+ reagents = list("flour" = 300, "singulo" = 300, "atomicbomb" = 150, "threemileisland" = 150, "manhattan_proj" = 100)
+ fruit = list("glowberries" = 30, "glowshrooms" = 15)
+ items = list(
+ /obj/item/stack/material/uranium,
+ /obj/item/stack/material/uranium,
+ /obj/item/stack/material/uranium,
+ /obj/item/stack/material/uranium,
+ /obj/item/stack/material/uranium,
+
+ /obj/item/slime_extract/green,
+ /obj/item/slime_extract/green,
+ /obj/item/slime_extract/green,
+ /obj/item/slime_extract/green,
+
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat,
+ /obj/item/weapon/reagent_containers/food/snacks/carpmeat
+ )
+ result = /obj/item/weapon/chaoscake_layerthree
+
+/datum/recipe/chaoscake_layerfour
+ reagents = list("flour" = 400, "holymary" = 100, "angelskiss" = 100, "goldschlager" = 100, "gold" = 300)
+ fruit = list("ambrosiadeus" = 30, "goldapple" = 15)
+ items = list(
+ /obj/item/stack/material/gold,
+ /obj/item/stack/material/gold,
+ /obj/item/stack/material/gold,
+ /obj/item/stack/material/gold,
+
+ /obj/item/organ/internal/heart,
+ /obj/item/organ/internal/heart,
+ /obj/item/organ/internal/heart,
+ /obj/item/organ/internal/heart,
+
+ /obj/item/weapon/reagent_containers/food/snacks/appletart,
+ /obj/item/weapon/reagent_containers/food/snacks/appletart,
+ /obj/item/weapon/reagent_containers/food/snacks/appletart,
+ /obj/item/weapon/reagent_containers/food/snacks/appletart
+ )
+ result = /obj/item/weapon/chaoscake_layerfour
+
+/datum/recipe/chaoscake_layerfive
+ reagents = list("deathbell" = 1000)
+ fruit = list("libertycap" = 10, "deathnettle" = 10, "destroyingangel" = 10)
+ items = list(
+ /obj/item/stack/material/platinum,
+ /obj/item/stack/material/platinum,
+ /obj/item/stack/material/platinum,
+ /obj/item/stack/material/platinum,
+
+ /obj/item/slime_extract/emerald,
+ /obj/item/slime_extract/emerald,
+ /obj/item/slime_extract/emerald,
+ /obj/item/slime_extract/emerald,
+
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat,
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat,
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat,
+ /obj/item/weapon/reagent_containers/food/snacks/xenomeat
+ )
+ result = /obj/item/weapon/chaoscake_layerfive
+
+/datum/recipe/chaoscake_layersix
+ reagents = list()
+ fruit = list("potato" = 5)
+ items = list()
+ result = /obj/item/weapon/chaoscake_layersix
+
+/datum/recipe/chaoscake_layerseven
+ reagents = list()
+ fruit = list("tomato" = 5)
+ items = list()
+ result = /obj/item/weapon/chaoscake_layerseven
+
+/datum/recipe/chaoscake_layereight
+ reagents = list()
+ fruit = list("cabbage" = 5)
+ items = list()
+ result = /obj/item/weapon/chaoscake_layereight
+
+/datum/recipe/chaoscake_layernine
+ reagents = list()
+ fruit = list("mushroom" = 5)
+ items = list()
+ result = /obj/item/weapon/chaoscake_layernine
+
+/obj/structure/chaoscake
+ name = "An unfinished cake"
+ desc = "A single layer of tasty delicious cake goodness, but it feels very incomplete..."
+
+ icon = 'icons/obj/64x64.dmi'
+ icon_state = "chaoscake_unfinished-1"
+ pixel_x = -16
+
+ var/edible = 0
+ var/stage = 1
+ var/slices = 6
+ var/maxslices = 6
+
+ var/regentime = 2000
+ var/interval = 0
+
+/obj/structure/chaoscake/proc/HasSliceMissing()
+ ..()
+ if(slices < maxslices)
+ if(interval >= regentime)
+ interval = 0
+ slices++
+ HasSliceMissing()
+ else
+ interval++
+ HasSliceMissing()
+ else
+ return
+
+/*
+/obj/item/weapon/chaoscake_layerone
+ name = "A layer of cake"
+ desc = "a layer of cake, you can see the cherry paste ooze."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-1"
+*/
+
+/obj/item/weapon/chaoscake_layertwo
+ desc = "a layer of cake, it is made out of colourful cream."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-2"
+
+/obj/item/weapon/chaoscake_layerthree
+ name = "A layer of cake"
+ desc = "a layer of cake, glazed in purple."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-3"
+
+/obj/item/weapon/chaoscake_layerfour
+ name = "A layer of cake"
+ desc = "a layer of cake, reminding you of a colouring book."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-4"
+
+/obj/item/weapon/chaoscake_layerfive
+ name = "A layer of cake"
+ desc = "A layer of cake, smells like blood."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-5"
+
+/obj/item/weapon/chaoscake_layersix
+ name = "A layer of cake"
+ desc = "A layer of cake, featuring colourful sprinkles."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-6"
+
+/obj/item/weapon/chaoscake_layerseven
+ name = "A layer of cake"
+ desc = "A triplet of evil cake parts."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-7"
+
+/obj/item/weapon/chaoscake_layereight
+ name = "A layer of cake"
+ desc = "A triplet of good cake parts."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-8"
+
+/obj/item/weapon/chaoscake_layernine
+ name = "A coin of balance"
+ desc = "A very peculiar coin, it seems to stabilise the air around it."
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_layer-9"
+
+/obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice
+ name = "The Chaos Cake Slice"
+ desc = "A slice from The Chaos Cake, it pulses weirdly, as if angry to be seperated from the whole"
+ icon = 'icons/obj/food_ch.dmi'
+ icon_state = "chaoscake_slice-1"
+
+ center_of_mass = list("x"=16, "y"=10)
+ nutriment_desc = list("cake" = 10, "sweetness" = 10, "order and entrophy?" = 1)
+ nutriment_amt = 5
+
+/obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice/Initialize()
+ var/i = rand(1,6)
+ icon_state = "chaoscake_slice-[i]"
+
+/obj/structure/chaoscake/attackby(var/obj/item/weapon/W, var/mob/living/user)
+ if(istype(W,/obj/item/weapon/material/knife))
+ if(edible == 1)
+ HasSliceMissing()
+ if(slices <= 0)
+ user << "The cake hums away quietly as the chaos powered goodness slowly recovers the large amount of lost mass, best to give it a moment before cutting another slice."
+ return
+ else
+ user << "You cut a slice of the cake. The slice looks like the cake was just baked, and you can see before your eyes as the spot where you cut the slice slowly regenerates!"
+ slices = slices - 1
+ icon_state = "chaoscake-[slices]"
+ new /obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice(src.loc)
+
+ else
+ to_chat(user, "It looks so good... But it feels so wrong to eat it before it's finished...")
+ return
+ if(istype(W,/obj/item/weapon/chaoscake_layertwo))
+ if(stage == 1)
+ user << "You add a second layer to the cake, nice."
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "chaoscake_unfinished-2"
+ stage = 2
+ else if(stage == 9)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/chaoscake_layerthree))
+ if(stage == 2)
+ user << "You add a third layer to the cake, sweet~"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "chaoscake_unfinished-3"
+ stage = 3
+ else if(stage == 9)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/chaoscake_layerfour))
+ if(stage == 3)
+ user << "You add a fourth layer to the cake, it's almost done!"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "chaoscake_unfinished-4"
+ stage = 4
+ else if(stage == 9)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/chaoscake_layerfive))
+ if(stage == 4)
+ user << "You add a fifth layer to the cake, it's finished!"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "chaoscake_unfinished-5"
+ stage = 5
+ spawn(5 SECONDS)
+ user << "...But it feels like...It's missing something?"
+ else if(stage == 9)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/chaoscake_layersix))
+ if(stage == 5)
+ user << "You add a fifth layer to the cake, it's finished!"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "chaoscake_unfinished-6"
+ stage = 6
+ spawn(5 SECONDS)
+ user << "...But it feels like...It's missing something?"
+ else if(stage == 9)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/chaoscake_layerseven))
+ if(stage == 6)
+ user << "You add a fifth layer to the cake, it's finished!"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "chaoscake_unfinished-7"
+ stage = 7
+ spawn(5 SECONDS)
+ user << "...But it feels like...It's missing something?"
+ else if(stage == 9)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/chaoscake_layereight))
+ if(stage == 7)
+ user << "You add a fifth layer to the cake, it's finished!"
+ qdel(W)
+ desc = "Two layer of tasty delicious cake goodness, but it feels pretty incomplete..."
+ icon_state = "chaoscake_unfinished-8"
+ stage = 8
+ spawn(5 SECONDS)
+ user << "...But it feels like...It's missing something?"
+ else if(stage == 9)
+ user << "The cake is already done!"
+ else
+ user << "Hmm, doesnt seem like this layer is supposed to be added there?"
+ if(istype(W,/obj/item/weapon/chaoscake_layernine))
+ if(stage == 8)
+ user << "Finally! The coin on the top, the almighty chaos cake is complete!"
+ qdel(W)
+ name = "The Chaos Cake!"
+ desc = "its The Chaos Cake! This odd cake seems to be a careful balance between good and evil, order and entrophy. Take care not to destroy the equilibrium!"
+ icon_state = "chaoscake-1"
+ stage = 9
+ edible = 1
+ else if(stage == 9)
+ user << "The cake is already done!"
+ else
+ user << "I don't think this goes on the cake...At least not yet?"
diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm
index bb40355d6c..b8f5b9894a 100644
--- a/code/modules/food/kitchen/microwave.dm
+++ b/code/modules/food/kitchen/microwave.dm
@@ -12,6 +12,8 @@
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/circuit_item_capacity = 1 //how many items does the circuit add to max number of items
+ var/item_level = 0 //CHOMP - items microwave can handle, 0 foodstuff, 1 materials - Jack
var/global/list/datum/recipe/available_recipes // List of the recipes you can use
var/global/list/acceptable_items // List of the items you can put in
var/global/list/acceptable_reagents // List of the reagents you can put in
@@ -122,7 +124,7 @@
to_chat(user, "It's dirty!")
return 1
else if(is_type_in_list(O,acceptable_items))
- if (contents.len>=(max_n_of_items + component_parts.len + 1)) //Adds component_parts to the maximum number of items. The 1 is from the circuit
+ if (contents.len>=(max_n_of_items + component_parts.len + circuit_item_capacity)) //Adds component_parts to the maximum number of items.
to_chat(user, "This [src] is full of ingredients, you cannot put more.")
return 1
if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
@@ -306,14 +308,26 @@
sleep(5) //VOREStation Edit - Quicker Microwaves
return 1
-/obj/machinery/microwave/proc/has_extra_item()
- for (var/obj/O in ((contents - component_parts) - circuit))
- if ( \
- !istype(O,/obj/item/weapon/reagent_containers/food) && \
- !istype(O, /obj/item/weapon/grown) \
- )
- return 1
- return 0
+/obj/machinery/microwave/proc/has_extra_item() //CHOMP - coded to have different microwaves be able to handle different items - Jack
+ if(item_level == 0)
+ for (var/obj/O in ((contents - component_parts) - circuit))
+ if ( \
+ !istype(O,/obj/item/weapon/reagent_containers/food) && \
+ !istype(O, /obj/item/weapon/grown) \
+ )
+ return 1
+ return 0
+ if(item_level == 1)
+ for (var/obj/O in ((contents - component_parts) - circuit))
+ if ( \
+ !istype(O, /obj/item/weapon/reagent_containers/food) && \
+ !istype(O, /obj/item/weapon/grown) && \
+ !istype(O, /obj/item/slime_extract) && \
+ !istype(O, /obj/item/organ) && \
+ !istype(O, /obj/item/stack/material) \
+ )
+ return 1
+ return 0
/obj/machinery/microwave/proc/start()
src.visible_message("The microwave turns on.", "You hear a microwave.")
@@ -394,3 +408,19 @@
if ("dispose")
dispose()
return
+
+/***********************************
+* CHOMP advanced microwave
+************************************/
+
+
+/obj/machinery/microwave/advanced
+ name = "deluxe microwave"
+ icon = 'icons/obj/machines/machinery_ch.dmi'
+ circuit = /obj/item/weapon/circuitboard/microwave/advanced
+ circuit_item_capacity = 100
+ item_level = 1
+
+/obj/machinery/microwave/advanced/Initialize()
+ ..()
+ reagents.maximum_volume = 1000
diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm
index 9e34611b7d..e656794237 100644
--- a/code/modules/hydroponics/seed_datums.dm
+++ b/code/modules/hydroponics/seed_datums.dm
@@ -61,6 +61,7 @@
name = "glowberries"
seed_name = "glowberry"
display_name = "glowberry bush"
+ kitchen_tag = "glowberries"
mutants = null
chems = list("nutriment" = list(1,10), "uranium" = list(3,5))
@@ -206,6 +207,7 @@
name = "bluespacetomato"
seed_name = "bluespace tomato"
display_name = "bluespace tomato plant"
+ kitchen_tag = "bluespacetomato"
mutants = null
chems = list("nutriment" = list(1,20), "singulo" = list(10,5))
@@ -406,6 +408,7 @@
name = "libertycap"
seed_name = "liberty cap"
display_name = "liberty cap mushrooms"
+ kitchen_tag = "libertycap"
mutants = null
chems = list("nutriment" = list(1), "stoxin" = list(3,3), "space_drugs" = list(1,25))
@@ -440,6 +443,7 @@
name = "destroyingangel"
seed_name = "destroying angel"
display_name = "destroying angel mushrooms"
+ kitchen_tag = "destroyingangel"
mutants = null
chems = list("nutriment" = list(1,50), "amatoxin" = list(13,3), "psilocybin" = list(1,25))
@@ -473,6 +477,7 @@
name = "glowshroom"
seed_name = "glowshroom"
display_name = "glowshrooms"
+ kitchen_tag = "glowshrooms"
mutants = null
chems = list("radium" = list(1,20))
@@ -493,6 +498,7 @@
name = "plastic"
seed_name = "plastellium"
display_name = "plastellium"
+ kitchen_tag = "plastellium"
mutants = null
chems = list("plasticide" = list(1,10))
diff --git a/code/modules/research/designs/circuits/circuits_ch.dm b/code/modules/research/designs/circuits/circuits_ch.dm
new file mode 100644
index 0000000000..d06824799e
--- /dev/null
+++ b/code/modules/research/designs/circuits/circuits_ch.dm
@@ -0,0 +1,6 @@
+/datum/design/circuit/microwave/advanced
+ name = "deluxe microwave"
+ id = "deluxe microwave"
+ req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
+ build_path = /obj/item/weapon/circuitboard/microwave/advanced
+ sort_string = "MAAAC"
diff --git a/icons/obj/64x64.dmi b/icons/obj/64x64.dmi
index 0773896fa7..089261e954 100644
Binary files a/icons/obj/64x64.dmi and b/icons/obj/64x64.dmi differ
diff --git a/icons/obj/food_ch.dmi b/icons/obj/food_ch.dmi
index 1e0a8221d5..98c29fafc1 100644
Binary files a/icons/obj/food_ch.dmi and b/icons/obj/food_ch.dmi differ
diff --git a/icons/obj/machines/machinery_ch.dmi b/icons/obj/machines/machinery_ch.dmi
new file mode 100644
index 0000000000..636b4144e1
Binary files /dev/null and b/icons/obj/machines/machinery_ch.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index 9f7b289126..f736996c6b 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1130,6 +1130,7 @@
#include "code\game\objects\items\weapons\circuitboards\circuitboard.dm"
#include "code\game\objects\items\weapons\circuitboards\circuitboards_vr.dm"
#include "code\game\objects\items\weapons\circuitboards\frame.dm"
+#include "code\game\objects\items\weapons\circuitboards\frame_ch.dm"
#include "code\game\objects\items\weapons\circuitboards\mecha.dm"
#include "code\game\objects\items\weapons\circuitboards\other.dm"
#include "code\game\objects\items\weapons\circuitboards\computer\air_management.dm"
@@ -1933,6 +1934,7 @@
#include "code\modules\food\drinkingglass\metaglass.dm"
#include "code\modules\food\drinkingglass\shaker.dm"
#include "code\modules\food\food\cans.dm"
+#include "code\modules\food\food\thecake_ch.dm"
#include "code\modules\food\food\condiment.dm"
#include "code\modules\food\food\drinks.dm"
#include "code\modules\food\food\lunch.dm"
@@ -3130,6 +3132,7 @@
#include "code\modules\research\designs\xenobio_toys.dm"
#include "code\modules\research\designs\circuits\ai_modules.dm"
#include "code\modules\research\designs\circuits\circuits.dm"
+#include "code\modules\research\designs\circuits\circuits_ch.dm"
#include "code\modules\research\designs\circuits\circuits_vr.dm"
#include "code\modules\resleeving\circuitboards.dm"
#include "code\modules\resleeving\computers.dm"