diff --git a/baystation12.dme b/baystation12.dme index e6ff26dfa36..34150e695b8 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -924,6 +924,12 @@ #include "code\modules\flufftext\Dreaming.dm" #include "code\modules\flufftext\Hallucination.dm" #include "code\modules\flufftext\TextFilters.dm" +#include "code\modules\food\cereal_maker.dm" +#include "code\modules\food\customizables.dm" +#include "code\modules\food\deep_fryer.dm" +#include "code\modules\food\food_grill.dm" +#include "code\modules\food\icecream_vat.dm" +#include "code\modules\food\oven.dm" #include "code\modules\food\recipes_microwave.dm" #include "code\modules\genetics\side_effects.dm" #include "code\modules\library\lib_items.dm" diff --git a/code/modules/food/cereal_maker.dm b/code/modules/food/cereal_maker.dm new file mode 100644 index 00000000000..920b4906905 --- /dev/null +++ b/code/modules/food/cereal_maker.dm @@ -0,0 +1,43 @@ +/obj/machinery/cerealmaker + name = "cereal maker" + desc = "Now with Dann O's available!" + icon = 'icons/obj/cooking_machines.dmi' + icon_state = "cereal_off" + layer = 2.9 + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + var/on = FALSE //Is it making cereal already? + +/obj/machinery/cerealmaker/attackby(obj/item/I, mob/user) + if(on) + user << "[src] is already processing, please wait." + return + if(!istype(I, /obj/item/weapon/reagent_containers/food/snacks/)) + user << "Budget cuts won't let you put that in there." + return + if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/cereal/)) + user << "That isn't going to fit." + return + else + user << "You put [I] into [src]." + on = TRUE + user.drop_item() + I.loc = src + icon_state = "cereal_on" + sleep(200) + icon_state = "cereal_off" + var/obj/item/weapon/reagent_containers/food/snacks/cereal/S = new(get_turf(src)) + var/image/img = new(I.icon, I.icon_state) + img.transform *= 0.7 + if(istype(I, /obj/item/weapon/reagent_containers/)) + var/obj/item/weapon/reagent_containers/food = I + food.reagents.trans_to(S, food.reagents.total_volume) + S.overlays += img + S.overlays += I.overlays + S.name = "box of [I] cereal" + playsound(loc, 'sound/machines/ding.ogg', 50, 1) + on = FALSE + qdel(I) + diff --git a/code/modules/food/customizables.dm b/code/modules/food/customizables.dm new file mode 100644 index 00000000000..632b1915b1c --- /dev/null +++ b/code/modules/food/customizables.dm @@ -0,0 +1,371 @@ +/obj/item/weapon/reagent_containers/food/snacks/breadslice/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/customizable/S = new(get_turf(user)) + S.attackby(W,user) + qdel(src) +/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/customizable/burger/S = new(get_turf(user)) + S.attackby(W,user) + qdel(src) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza/S = new(get_turf(user)) + S.attackby(W,user) + qdel(src) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/attackby(obj/item/W as obj, mob/user as mob) + + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta/S = new(get_turf(user)) + S.attackby(W,user) + qdel(src) + +/obj/item/trash/plate/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/customizable/fullycustom/S = new(get_turf(user)) + S.attackby(W,user) + qdel(src) + +/obj/item/trash/bowl + name = "bowl" + desc = "An empty bowl. Put some food in it to start making a soup." + icon = 'icons/obj/food.dmi' + icon_state = "soup" + +/obj/item/trash/bowl/attackby(obj/item/W as obj, mob/user as mob) + + if(istype(W,/obj/item/weapon/shard) || istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/customizable/soup/S = new(get_turf(user)) + S.attackby(W,user) + qdel(src) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/customizable + name = "sandwich" + desc = "A sandwich! A timeless classic." + icon_state = "breadslice" + var/baseicon = "sandwich" + var/basename = "sandwich" + var/top = 1 //Do we have a top? + var/add_overlays = 1 //Do we stack? +// var/offsetstuff = 1 //Do we offset the overlays? + var/sandwich_limit = 10 + var/fullycustom = 0 + trash = /obj/item/trash/plate + bitesize = 2 + + var/list/ingredients = list() + + New() + ..() + reagents.add_reagent("nutriment", 8) + +/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza + name = "personal pizza" + desc = "A personalized pan pizza meant for only one person." + icon_state = "personal_pizza" + baseicon = "personal_pizza" + basename = "personal pizza" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta + name = "spagetti" + desc = "Noodles. With stuff. Delicious." + icon_state = "pasta_bot" + baseicon = "pasta_bot" + basename = "spagetti" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/bread + name = "bread" + desc = "Tasty bread." + icon_state = "breadcustom" + baseicon = "breadcustom" + basename = "bread" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/pie + name = "pie" + desc = "Tasty pie." + icon_state = "piecustom" + baseicon = "piecustom" + basename = "pie" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/cake + name = "cake" + desc = "A popular band." + icon_state = "cakecustom" + baseicon = "cakecustom" + basename = "cake" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/jelly + name = "jelly" + desc = "Totally jelly." + icon_state = "jellycustom" + baseicon = "jellycustom" + basename = "jelly" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/donkpocket + name = "donk pocket" + desc = "You wanna put a bangin-Oh nevermind." + icon_state = "donkcustom" + baseicon = "donkcustom" + basename = "donk pocket" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/kebab + name = "kebab" + desc = "Kebab or Kabab?" + icon_state = "kababcustom" + baseicon = "kababcustom" + basename = "kebab" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/salad + name = "salad" + desc = "Very tasty." + icon_state = "saladcustom" + baseicon = "saladcustom" + basename = "salad" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/waffles + name = "waffles" + desc = "Made with love." + icon_state = "wafflecustom" + baseicon = "wafflecustom" + basename = "waffles" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cookie + name = "cookie" + desc = "COOKIE!!1!" + icon_state = "cookiecustom" + baseicon = "cookiecustom" + basename = "cookie" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cotton + name = "flavored cotton candy" + desc = "Who can take a sunrise, sprinkle it with dew," + icon_state = "cottoncandycustom" + baseicon = "cottoncandycustom" + basename = "flavored cotton candy" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gummybear + name = "flavored giant gummy bear" + desc = "Cover it in chocolate and a miracle or two," + icon_state = "gummybearcustom" + baseicon = "gummybearcustom" + basename = "flavored giant gummy bear" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gummyworm + name = "flavored giant gummy worm" + desc = "The Candy Man can 'cause he mixes it with love," + icon_state = "gummywormcustom" + baseicon = "gummywormcustom" + basename = "flavored giant gummy worm" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/jellybean + name = "flavored giant jelly bean" + desc = "And makes the world taste good." + icon_state = "jellybeancustom" + baseicon = "jellybeancustom" + basename = "flavored giant jelly bean" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/jawbreaker + name = "flavored jawbreaker" + desc = "Who can take a rainbow, Wrap it in a sigh," + icon_state = "jawbreakercustom" + baseicon = "jawbreakercustom" + basename = "flavored jawbreaker" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/candycane + name = "flavored candy cane" + desc = "Soak it in the sun and make strawberry-lemon pie," + icon_state = "candycanecustom" + baseicon = "candycanecustom" + basename = "flavored candy cane" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gum + name = "flavored gum" + desc = "The Candy Man can 'cause he mixes it with love and makes the world taste good. And the world tastes good 'cause the Candy Man thinks it should..." + icon_state = "gumcustom" + baseicon = "gumcustom" + basename = "flavored gum" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/donut + name = "filled donut" + desc = "Donut eat this!" // kill me + icon_state = "donutcustom" + baseicon = "donutcustom" + basename = "filled donut" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/bar + name = "flavored chocolate bar" + desc = "Made in a factory downtown." + icon_state = "barcustom" + baseicon = "barcustom" + basename = "flavored chocolate bar" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/sucker + name = "flavored sucker" + desc = "Suck suck suck." + icon_state = "suckercustom" + baseicon = "suckercustom" + basename = "flavored sucker" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cash + name = "flavored chocolate cash" + desc = "I got piles!" + icon_state = "cashcustom" + baseicon = "cashcustom" + basename = "flavored cash" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/coin + name = "flavored chocolate coin" + desc = "Clink, clink, clink." + icon_state = "coincustom" + baseicon = "coincustom" + basename = "flavored coin" + add_overlays = 0 + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/fullycustom // In the event you fuckers find something I forgot to add a customizable food for. + name = "on a plate" + desc = "A unique dish." + icon_state = "fullycustom" + baseicon = "fullycustom" + basename = "on a plate" + add_overlays = 0 + top = 0 + sandwich_limit = 20 + fullycustom = 1 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/soup + name = "soup" + desc = "A bowl with liquid and... stuff in it." + icon_state = "soup" + baseicon = "soup" + basename = "soup" + add_overlays = 0 + trash = /obj/item/trash/bowl + top = 0 + +/obj/item/weapon/reagent_containers/food/snacks/customizable/burger + name = "burger bun" + desc = "A bun for a burger. Delicious." + icon_state = "burger" + baseicon = "burger" + basename = "burger" + +/obj/item/weapon/reagent_containers/food/snacks/customizable/attackby(obj/item/W as obj, mob/user as mob) + if(src.contents.len > sandwich_limit) + user << "If you put anything else in or on [src] it's going to make a mess." + return + else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks)) + user << " You add [W] to [src]." + var/obj/item/weapon/reagent_containers/F = W + F.reagents.trans_to(src, F.reagents.total_volume) + user.drop_item() + W.loc = src + ingredients += W + update() + return + ..() + +/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/update() + var/fullname = "" //We need to build this from the contents of the var. + var/i = 0 + + overlays.Cut() + + for(var/obj/item/weapon/reagent_containers/food/snacks/O in ingredients) + + i++ + if(i == 1) + fullname += "[O.name]" + else if(i == ingredients.len) + fullname += " and [O.name]" + else + fullname += ", [O.name]" + + if(!fullycustom) + var/image/I = new(src.icon, "[baseicon]_filling") + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks)) + var/obj/item/weapon/reagent_containers/food/snacks/food = O + if(!food.filling_color == "#FFFFFF") + I.color = food.filling_color + else + I.color = pick("#FF0000","#0000FF","#008000","#FFFF00") + if(add_overlays) + I.pixel_x = pick(list(-1,0,1)) + I.pixel_y = (i*2)+1 + overlays += I + else + var/image/F = new(O.icon, O.icon_state) + F.pixel_x = pick(list(-1,0,1)) + F.pixel_y = pick(list(-1,0,1)) + overlays += F + overlays += O.overlays + + if(top) + var/image/T = new(src.icon, "[baseicon]_top") + T.pixel_x = pick(list(-1,0,1)) + T.pixel_y = (ingredients.len * 2)+1 + overlays += T + + name = lowertext("[fullname] [basename]") + if(length(name) > 80) name = "[pick(list("absurd","colossal","enormous","ridiculous","massive","oversized","cardiac-arresting","pipe-clogging","edible but sickening","sickening","gargantuan","mega","belly-burster","chest-burster"))] [basename]" + w_class = n_ceil(Clamp((ingredients.len/2),1,3)) + +/obj/item/weapon/reagent_containers/food/snacks/customizable/Del() + for(var/obj/item/O in ingredients) + del(O) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/customizable/examine() + ..() + var/whatsinside = pick(ingredients) + + usr << " You think you can see [whatsinside] in there." \ No newline at end of file diff --git a/code/modules/food/deep_fryer.dm b/code/modules/food/deep_fryer.dm new file mode 100644 index 00000000000..c317eedb5e7 --- /dev/null +++ b/code/modules/food/deep_fryer.dm @@ -0,0 +1,62 @@ +/obj/machinery/deepfryer + name = "deep fryer" + desc = "Deep fried everything." + icon = 'icons/obj/cooking_machines.dmi' + icon_state = "fryer_off" + layer = 2.9 + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + var/on = FALSE //Is it deep frying already? + var/obj/item/frying = null //What's being fried RIGHT NOW? + +/obj/machinery/deepfryer/examine() + ..() + if(frying) + usr << "You can make out [frying] in the oil." + +/obj/machinery/deepfryer/attackby(obj/item/I, mob/user) + if(on) + user << "[src] is still active!" + return + if(!istype(I, /obj/item/weapon/reagent_containers/food/snacks/)) + user << "Budget cuts won't let you put that in there." + return + if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/deepfryholder)) + user << "You cannot doublefry." + return + else + user << "You put [I] into [src]." + on = TRUE + user.drop_item() + frying = I + frying.loc = src + icon_state = "fryer_on" + sleep(200) + + if(frying && frying.loc == src) + var/obj/item/weapon/reagent_containers/food/snacks/deepfryholder/S = new(get_turf(src)) + if(istype(frying, /obj/item/weapon/reagent_containers/)) + var/obj/item/weapon/reagent_containers/food = frying + food.reagents.trans_to(S, food.reagents.total_volume) + S.color = "#FFAD33" + S.icon = frying.icon + S.overlays = I.overlays + S.icon_state = frying.icon_state + S.name = "deep fried [frying.name]" + S.desc = I.desc + frying.loc = S //this might be a bad idea. + + icon_state = "fryer_off" + on = FALSE + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + + +/obj/machinery/deepfryer/attack_hand(mob/user) + if(on && frying) + user << "You pull [frying] from [src]! It looks like you were just in time!" + user.put_in_hands(frying) + frying = null + return + ..() \ No newline at end of file diff --git a/code/modules/food/food_grill.dm b/code/modules/food/food_grill.dm new file mode 100644 index 00000000000..9e179793ab4 --- /dev/null +++ b/code/modules/food/food_grill.dm @@ -0,0 +1,51 @@ +/obj/machinery/foodgrill + name = "grill" + desc = "Backyard grilling, IN SPACE." + icon = 'icons/obj/cooking_machines.dmi' + icon_state = "grill_off" + layer = 2.9 + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + var/on = FALSE //Is it grilling food already? + +/obj/machinery/foodgrill/attackby(obj/item/I, mob/user) + if(on) + user << "[src] is already processing, please wait." + return + if(istype(I, /obj/item/weapon/grab)||istype(I, /obj/item/tk_grab)) + user << "That isn't going to fit." + return + else + user << "You put [I] onto [src]." + on = TRUE + user.drop_item() + I.loc = src + icon_state = "grill_on" + + var/image/img = new(I.icon, I.icon_state) + img.pixel_y = 5 + overlays += img + sleep(200) + overlays.Cut() + img.color = "#C28566" + overlays += img + sleep(200) + overlays.Cut() + img.color = "#A34719" + overlays += img + sleep(50) + overlays.Cut() + + on = FALSE + icon_state = "grill_off" + + if(istype(I, /obj/item/weapon/reagent_containers/)) + var/obj/item/weapon/reagent_containers/food = I + food.reagents.add_reagent("nutriment", 10) + food.reagents.trans_to(I, food.reagents.total_volume) + I.loc = get_turf(src) + I.color = "#A34719" + var/tempname = I.name + I.name = "grilled [tempname]" \ No newline at end of file diff --git a/code/modules/food/icecream_vat.dm b/code/modules/food/icecream_vat.dm new file mode 100644 index 00000000000..17a2e505720 --- /dev/null +++ b/code/modules/food/icecream_vat.dm @@ -0,0 +1,254 @@ +//ICE CREAM MACHINE +//Code made by Sawu at Sawu-Station. + +/obj/machinery/icemachine + name = "\improper Cream-Master Deluxe" + density = 1 + anchored = 1 + icon = 'icons/obj/cooking_machines.dmi' + icon_state = "icecream_vat" + use_power = 1 + idle_power_usage = 20 + var/obj/item/weapon/reagent_containers/glass/beaker = null + var/useramount = 15 //Last used amount + + +/obj/machinery/icemachine/proc/generate_name(reagent_name) + var/name_prefix = pick("Mr.","Mrs.","Super","Happy","Whippy") + var/name_suffix = pick(" Whippy "," Slappy "," Creamy "," Dippy "," Swirly "," Swirl ") + var/cone_name = null //Heart failure prevention. + cone_name += name_prefix + cone_name += name_suffix + cone_name += "[reagent_name]" + return cone_name + + +/obj/machinery/icemachine/New() + var/datum/reagents/R = new/datum/reagents(500) + reagents = R + R.my_atom = src + + +/obj/machinery/icemachine/attackby(obj/item/I, mob/user) + if(istype(I, /obj/item/weapon/reagent_containers/glass)) + if(beaker) + user << "A container is already inside [src]." + return + beaker = I + user.drop_item() + I.loc = src + user << "You add [I] to [src]" + updateUsrDialog() + return + if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/icecream)) + if(!I.reagents.has_reagent("sprinkles")) + if(I.reagents.total_volume > 29) I.reagents.remove_any(1) + I.reagents.add_reagent("sprinkles",1) + var/image/sprinkles = image('icons/obj/kitchen.dmi', src, "sprinkles") + I.overlays += sprinkles + I.name += " with sprinkles" + I.desc += ". This also has sprinkles." + else + user << "This [I] already has sprinkles." + + +/obj/machinery/icemachine/proc/validexchange(reag) + if(reag == "sprinkles" | reag == "cola" | reag == "kahlua" | reag == "dr_gibb" | reag == "vodka" | reag == "space_up" | reag == "rum" | reag == "spacemountainwind" | reag == "gin" | reag == "cream" | reag == "water") + return 1 + else + if(reagents.total_volume < 500) + usr << "[src] vibrates for a moment, apparently accepting the unknown liquid." + playsound(loc, 'sound/machines/twobeep.ogg', 10, 1) + return 1 + + +/obj/machinery/icemachine/Topic(href, href_list) + if(..()) return + + add_fingerprint(usr) + usr.set_machine(src) + + if(href_list["close"]) + usr << browse(null, "window=cream_master") + usr.unset_machine() + return + + var/obj/item/weapon/reagent_containers/glass/A = null + var/datum/reagents/R = null + + if(beaker) + A = beaker + R = A.reagents + + if(href_list["add"]) + if(href_list["amount"]) + var/id = href_list["add"] + var/amount = text2num(href_list["amount"]) + if(validexchange(id)) + R.trans_id_to(src, id, amount) + + else if(href_list["remove"]) + if(href_list["amount"]) + var/id = href_list["remove"] + var/amount = text2num(href_list["amount"]) + if(beaker == null) + reagents.remove_reagent(id,amount) + else + if(validexchange(id)) + reagents.trans_id_to(A, id, amount) + else + reagents.remove_reagent(id,amount) + + else if(href_list["main"]) + attack_hand(usr) + return + + else if(href_list["eject"]) + if(beaker) + A.loc = loc + beaker = null + reagents.trans_to(A,reagents.total_volume) + + else if(href_list["synthcond"]) + if(href_list["type"]) + var/ID = text2num(href_list["type"]) + /* + if(ID == 1) + reagents.add_reagent("sprinkles",1) + */ //Sprinkles are now created by using the ice cream on the machine + if(ID == 2 | ID == 3) + var/brand = pick(1,2,3,4) + if(brand == 1) + if(ID == 2) + reagents.add_reagent("cola",5) + else + reagents.add_reagent("kahlua",5) + else if(brand == 2) + if(ID == 2) + reagents.add_reagent("dr_gibb",5) + else + reagents.add_reagent("vodka",5) + else if(brand == 3) + if(ID == 2) + reagents.add_reagent("space_up",5) + else + reagents.add_reagent("rum",5) + else if(brand == 4) + if(ID == 2) + reagents.add_reagent("spacemountainwind",5) + else + reagents.add_reagent("gin",5) + else if(ID == 4) + if(reagents.total_volume <= 500 & reagents.total_volume >= 15) + reagents.add_reagent("cream",(30 - reagents.total_volume)) + else if(reagents.total_volume <= 15) + reagents.add_reagent("cream",(15 - reagents.total_volume)) + else if(ID == 5) + if(reagents.total_volume <= 500 & reagents.total_volume >= 15) + reagents.add_reagent("water",(30 - reagents.total_volume)) + else if(reagents.total_volume <= 15) + reagents.add_reagent("water",(15 - reagents.total_volume)) + + else if(href_list["createcup"]) + var/name = generate_name(reagents.get_master_reagent_name()) + name += " Chocolate Cone" + var/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcup/C + C = new/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcup(loc) + C.name = "[name]" + C.pixel_x = rand(-8, 8) + C.pixel_y = -16 + reagents.trans_to(C,30) + if(reagents) + reagents.clear_reagents() + C.update_icon() + + else if(href_list["createcone"]) + var/name = generate_name(reagents.get_master_reagent_name()) + name += " Cone" + var/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcone/C + C = new/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcone(loc) + C.name = "[name]" + C.pixel_x = rand(-8, 8) + C.pixel_y = -16 + reagents.trans_to(C,15) + if(reagents) + reagents.clear_reagents() + C.update_icon() + updateUsrDialog() + + +/obj/machinery/icemachine/attack_ai(mob/user) + return attack_hand(user) + +/obj/machinery/icemachine/attack_paw(mob/user) + return attack_hand(user) + + +/obj/machinery/icemachine/proc/show_toppings() + var/dat = "" + if(reagents.total_volume <= 500) + dat += "