#define ICECREAM_VANILLA 1 #define ICECREAM_CHOCOLATE 2 #define ICECREAM_STRAWBERRY 3 #define ICECREAM_BLUE 4 #define ICECREAM_CHERRY 5 #define ICECREAM_BANANA 6 #define CONE_WAFFLE 7 #define CONE_CHOC 8 // Ported wholesale from Apollo Station. /obj/machinery/icecream_vat name = "icecream vat" desc = "Ding-aling ding dong. Get your corporate-approved ice cream!" icon = 'icons/obj/machinery/cooking_machines.dmi' icon_state = "icecream_vat" density = TRUE anchored = FALSE use_power = POWER_USE_OFF atom_flags = ATOM_FLAG_OPEN_CONTAINER | ATOM_FLAG_NO_REACT var/list/product_types = list() var/dispense_flavour = ICECREAM_VANILLA var/flavour_name = "vanilla" reagents_to_add = list( /singleton/reagent/drink/milk = 5, /singleton/reagent/nutriment/flour = 5, /singleton/reagent/sugar = 5, /singleton/reagent/drink/ice = 5 ) /obj/machinery/icecream_vat/proc/get_ingredient_list(var/type) switch(type) if(ICECREAM_CHOCOLATE) return list(/singleton/reagent/drink/milk, /singleton/reagent/drink/ice, /singleton/reagent/nutriment/coco) if(ICECREAM_STRAWBERRY) return list(/singleton/reagent/drink/milk, /singleton/reagent/drink/ice, /singleton/reagent/drink/berryjuice) if(ICECREAM_BLUE) return list(/singleton/reagent/drink/milk, /singleton/reagent/drink/ice, /singleton/reagent/alcohol/singulo) if(ICECREAM_CHERRY) return list(/singleton/reagent/drink/milk, /singleton/reagent/drink/ice, /singleton/reagent/nutriment/cherryjelly) if(ICECREAM_BANANA) return list(/singleton/reagent/drink/milk, /singleton/reagent/drink/ice, /singleton/reagent/drink/banana) if(CONE_WAFFLE) return list(/singleton/reagent/nutriment/flour, /singleton/reagent/sugar) if(CONE_CHOC) return list(/singleton/reagent/nutriment/flour, /singleton/reagent/sugar, /singleton/reagent/nutriment/coco) else return list(/singleton/reagent/drink/milk, /singleton/reagent/drink/ice) /obj/machinery/icecream_vat/proc/get_flavour_name(var/flavour_type) switch(flavour_type) if(ICECREAM_CHOCOLATE) return "chocolate" if(ICECREAM_STRAWBERRY) return "strawberry" if(ICECREAM_BLUE) return "blue" if(ICECREAM_CHERRY) return "cherry" if(ICECREAM_BANANA) return "banana" if(CONE_WAFFLE) return "waffle" if(CONE_CHOC) return "chocolate" else return "vanilla" /obj/machinery/icecream_vat/Initialize() . = ..() create_reagents(100) while(length(product_types) < CONE_CHOC) product_types.Add(5) /obj/machinery/icecream_vat/attack_hand(mob/user as mob) user.set_machine(src) interact(user) /obj/machinery/icecream_vat/interact(mob/user as mob) var/dat dat += "ICECREAM
" dat += "Dispensing: [flavour_name] icecream

" dat += "Vanilla icecream: Select Make x5 [product_types[ICECREAM_VANILLA]] scoops left. (Ingredients: milk, ice)
" dat += "Strawberry icecream: Select Make x5 [product_types[ICECREAM_STRAWBERRY]] dollops left. (Ingredients: milk, ice, berry juice)
" dat += "Chocolate icecream: Select Make x5 [product_types[ICECREAM_CHOCOLATE]] dollops left. (Ingredients: milk, ice, coco powder)
" dat += "Blue icecream: Select Make x5 [product_types[ICECREAM_BLUE]] dollops left. (Ingredients: milk, ice, singulo)
" dat += "Cherry icecream: Select Make x5 [product_types[ICECREAM_CHERRY]] dollops left. (Ingredients: milk, ice, cherry jelly)
" dat += "Banana icecream: Select Make x5 [product_types[ICECREAM_BANANA]] dollops left. (Ingredients: milk, ice, banana)
" dat += "
CONES
" dat += "Waffle cones: Dispense Make x5 [product_types[CONE_WAFFLE]] cones left. (Ingredients: flour, sugar)
" dat += "Chocolate cones: Dispense Make x5 [product_types[CONE_CHOC]] cones left. (Ingredients: flour, sugar, coco powder)
" dat += "
" dat += "VAT CONTENT
" for(var/_R in reagents.reagent_volumes) var/singleton/reagent/R = GET_SINGLETON(_R) dat += "[R.name]: [reagents.reagent_volumes[_R]]" dat += "Purge
" dat += "Refresh Close" var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) popup.set_content(dat) popup.open() /obj/machinery/icecream_vat/attackby(obj/item/attacking_item, mob/user) if(istype(attacking_item, /obj/item/reagent_containers/food/snacks/icecream)) var/obj/item/reagent_containers/food/snacks/icecream/I = attacking_item if(!I.ice_creamed) if(product_types[dispense_flavour] > 0) visible_message("[icon2html(src, viewers(get_turf(src)))] [user] scoops [flavour_name] icecream into [I].") product_types[dispense_flavour]-- I.add_ice_cream(flavour_name) // if(beaker) // beaker.reagents.trans_to(I, 10) if(I.reagents.total_volume < 10) I.reagents.add_reagent(/singleton/reagent/sugar, 10 - I.reagents.total_volume, temperature = T0C - 15) I.reagents.reagent_data = list(/singleton/reagent/nutriment = list("[flavour_name]" = 10)) else to_chat(user, SPAN_WARNING("There is not enough icecream left!")) else to_chat(user, SPAN_NOTICE("[attacking_item] already has icecream in it.")) return TRUE else if(attacking_item.is_open_container()) return ..() /obj/machinery/icecream_vat/proc/make(var/mob/user, var/make_type, var/amount) for(var/R in get_ingredient_list(make_type)) if(reagents.has_reagent(R, amount)) continue amount = 0 break if(amount) for(var/R in get_ingredient_list(make_type)) reagents.remove_reagent(R, amount) product_types[make_type] += amount var/flavour = get_flavour_name(make_type) if(make_type > 6) visible_message("[user] cooks up some [flavour] cones.") else visible_message("[user] whips up some [flavour] icecream.") else to_chat(user, SPAN_WARNING("You don't have the ingredients to make this.")) /obj/machinery/icecream_vat/Topic(href, href_list) if(..()) return if(href_list["select"]) dispense_flavour = text2num(href_list["select"]) flavour_name = get_flavour_name(dispense_flavour) visible_message("[usr] sets [src] to dispense [flavour_name] flavoured icecream.") if(href_list["cone"]) var/dispense_cone = text2num(href_list["cone"]) var/cone_name = get_flavour_name(dispense_cone) if(product_types[dispense_cone] <= 1) to_chat(usr, SPAN_WARNING("There are no [cone_name] cones left!")) return product_types[dispense_cone]-- var/obj/item/reagent_containers/food/snacks/icecream/I = new(loc) I.cone_type = cone_name I.icon_state = "icecream_cone_[cone_name]" I.desc = "Delicious [cone_name] cone, but no ice cream." visible_message("[usr] dispenses a crunchy [cone_name] cone from [src].") if(href_list["make"]) var/amount = (text2num(href_list["amount"])) var/C = text2num(href_list["make"]) make(usr, C, amount) if(href_list["disposeI"]) reagents.del_reagent(href_list["disposeI"]) updateDialog() if(href_list["refresh"]) updateDialog() if(href_list["close"]) usr.unset_machine() show_browser(usr, null,"window=icecreamvat") return /obj/item/reagent_containers/food/snacks/icecream name = "ice cream cone" desc = "Delicious waffle cone, but no ice cream." icon = 'icons/obj/item/reagent_containers/food/confections.dmi' icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time layer = 3.1 bitesize = 3 volume = 20 reagents_to_add = list(/singleton/reagent/nutriment = 5) var/ice_creamed = 0 var/cone_type /obj/item/reagent_containers/food/snacks/icecream/proc/add_ice_cream(var/flavour_name) name = "[flavour_name] icecream" AddOverlays("icecream_[flavour_name]") desc = "Delicious [cone_type] cone with a dollop of [flavour_name] ice cream." ice_creamed = 1 #undef ICECREAM_VANILLA #undef ICECREAM_CHOCOLATE #undef ICECREAM_STRAWBERRY #undef ICECREAM_BLUE #undef ICECREAM_CHERRY #undef ICECREAM_BANANA #undef CONE_WAFFLE #undef CONE_CHOC