From 9e6facc767cad56cfb63f21d998b4c0acc674aad Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Mon, 9 Sep 2013 13:47:36 +1000 Subject: [PATCH 1/2] changelog update Signed-off-by: Cael_Aislinn --- html/changelog.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 01fd7e5b564..88568e4975b 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -52,6 +52,15 @@ should be listed in the changelog upon commit tho. Thanks. --> +
+

3 September 2013

+

Cael_Aislinn updated:

+
    +
  • Terbs Fun Week Day 5: Chef gets a Nanotrasen-issued icecream machine with four pre-approved icecream flavours and two official cone types.
  • +
+
+ +

2 September 2013

Cael_Aislinn updated:

From 2d120ea1e243660f4563790234f705b2257e9d30 Mon Sep 17 00:00:00 2001 From: Cael_Aislinn Date: Tue, 10 Sep 2013 13:15:41 +1000 Subject: [PATCH 2/2] adds the icecream dispenser, adds icecream dispenser to kitchen, adds pda painter to hop office Signed-off-by: Cael_Aislinn --- code/game/machinery/kitchen/icecream_vat.dm | 242 ++++++++++++++++++++ icons/obj/kitchen.dmi | Bin 12539 -> 15707 bytes maps/tgstation.2.1.2.dmm | 4 +- tgstation.dme | 1 + 4 files changed, 245 insertions(+), 2 deletions(-) create mode 100644 code/game/machinery/kitchen/icecream_vat.dm diff --git a/code/game/machinery/kitchen/icecream_vat.dm b/code/game/machinery/kitchen/icecream_vat.dm new file mode 100644 index 00000000000..19092885a6d --- /dev/null +++ b/code/game/machinery/kitchen/icecream_vat.dm @@ -0,0 +1,242 @@ +#define ICECREAM_VANILLA 1 +#define FLAVOUR_CHOCOLATE 2 +#define FLAVOUR_STRAWBERRY 3 +#define FLAVOUR_BLUE 4 +#define CONE_WAFFLE 5 +#define CONE_CHOC 6 +#define INGR_MILK 7 +#define INGR_FLOUR 8 +#define INGR_SUGAR 9 +#define INGR_ICE 10 +#define MUCK 11 + +var/list/ingredients_source = list( +"berryjuice" = FLAVOUR_STRAWBERRY,\ +"coco" = FLAVOUR_CHOCOLATE,\ +"singulo" = FLAVOUR_BLUE,\ +"milk" = INGR_MILK,\ +"soymilk" = INGR_MILK,\ +"ice" = INGR_ICE,\ +"flour" = INGR_FLOUR,\ +"sugar" = INGR_SUGAR,\ +) + +/proc/get_icecream_flavour_string(var/flavour_type) + switch(flavour_type) + if(FLAVOUR_CHOCOLATE) + return "chocolate" + if(FLAVOUR_STRAWBERRY) + return "strawberry" + if(FLAVOUR_BLUE) + return "blue" + if(CONE_WAFFLE) + return "waffle" + if(CONE_CHOC) + return "chocolate" + if(INGR_MILK) + return "milk" + if(INGR_FLOUR) + return "flour" + if(INGR_SUGAR) + return "sugar" + if(INGR_ICE) + return "ice" + if(MUCK) + return "muck" + else + return "vanilla" + +/obj/machinery/icecream_vat + name = "icecream vat" + desc = "Ding-aling ding dong. Get your Nanotrasen-approved ice cream!" + icon = 'icons/obj/kitchen.dmi' + icon_state = "icecream_vat" + density = 1 + anchored = 0 + var/list/ingredients = list() + var/dispense_flavour = 0 + var/obj/item/weapon/reagent_containers/glass/held_container + +/obj/machinery/icecream_vat/New() + ..() + + while(ingredients.len < 11) + ingredients.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 += "Dispense vanilla icecream There is [ingredients[ICECREAM_VANILLA]] scoops of vanilla icecream left (made from milk and ice).
" + dat += "Dispense strawberry icecream There is [ingredients[FLAVOUR_STRAWBERRY]] dollops of strawberry flavouring left (obtained from berry juice.
" + dat += "Dispense chocolate icecream There is [ingredients[FLAVOUR_CHOCOLATE]] dollops of chocolate flavouring left (obtained from cocoa powder).
" + dat += "Dispense blue icecream There is [ingredients[FLAVOUR_BLUE]] dollops of blue flavouring left (obtained from bluespace tomato singulo).
" + dat += "
" + dat += "Dispense waffle cones There are [ingredients[CONE_WAFFLE]] waffle cones left.
" + dat += "Dispense chocolate cones There are [ingredients[CONE_CHOC]] chocolate cones left.
" + dat += "
" + dat += "Make waffle cones There is [ingredients[INGR_FLOUR]]/[ingredients[INGR_SUGAR]] of flour and sugar left.
" + dat += "Make chocolate cones There is [ingredients[FLAVOUR_CHOCOLATE]]/[ingredients[CONE_WAFFLE]] of chocolate flavouring and waffle cones left.
" + dat += "Make vanilla icecream There is [ingredients[INGR_MILK]]/[ingredients[INGR_ICE]] of milk and ice left.
" + dat += "
" + if(held_container) + dat += "Eject [held_container] " + else + dat += "No beaker inserted. " + dat += "Refresh Close" + user << browse(dat,"window=icecreamvat;size=600x400") + +/obj/machinery/icecream_vat/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(istype(O, /obj/item/weapon/reagent_containers)) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/icecream)) + var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = O + if(!I.ice_creamed) + if(ingredients[ICECREAM_VANILLA] > 0) + var/flavour_name = get_icecream_flavour_string(dispense_flavour) + if(ingredients[dispense_flavour] > 0) + src.visible_message("\icon[src] [user] scoops delicious [flavour_name] flavoured icecream into [I].") + ingredients[dispense_flavour] -= 1 + ingredients[ICECREAM_VANILLA] -= 1 + + I.add_ice_cream(dispense_flavour) + if(held_container) + held_container.reagents.trans_to(I, 2) + else + reagents.add_reagent("sugar", 1, 2) + else + user << "There is not enough [flavour_name] flavouring left! Insert more of the required ingredients." + else + user << "There is not enough icecream left! Insert more milk and ice." + else + user << "[O] already has icecream in it." + else if(istype(O, /obj/item/weapon/reagent_containers/glass)) + if(held_container) + user << "You must remove [held_container] from [src] first." + else + user << "You insert [O] into [src]." + user.drop_item() + O.loc = src + held_container = O + else + var/obj/item/weapon/reagent_containers/R = O + if(R.reagents) + src.visible_message("[user] has emptied all of [R] into [src].") + for (var/datum/reagent/current_reagent in R.reagents.reagent_list) + if(ingredients_source[current_reagent.id]) + add(ingredients_source[current_reagent.id], current_reagent.volume / 2) + else + add(MUCK, current_reagent.volume / 5) + R.reagents.clear_reagents() + return 1 + else + ..() + +/obj/machinery/icecream_vat/proc/add(var/add_type, var/amount) + if(add_type <= ingredients.len) + ingredients[add_type] += amount + updateDialog() + +/obj/machinery/icecream_vat/proc/make(var/mob/user, var/make_type) + switch(make_type) + if(CONE_WAFFLE) + if(ingredients[INGR_FLOUR] > 0 && ingredients[INGR_SUGAR] > 0) + var/amount = max( min(ingredients[INGR_FLOUR], ingredients[INGR_SUGAR]), 5) + ingredients[INGR_FLOUR] -= amount + ingredients[INGR_SUGAR] -= amount + ingredients[CONE_WAFFLE] += amount + src.visible_message("[user] cooks up some waffle cones.") + else + user << "You require sugar and flour to make waffle cones." + if(CONE_CHOC) + if(ingredients[FLAVOUR_CHOCOLATE] > 0 && ingredients[CONE_WAFFLE] > 0) + var/amount = min(ingredients[CONE_WAFFLE], ingredients[FLAVOUR_CHOCOLATE]) + ingredients[CONE_WAFFLE] -= amount + ingredients[FLAVOUR_CHOCOLATE] -= amount + ingredients[CONE_CHOC] += amount + src.visible_message("[user] cooks up some chocolate cones.") + else + user << "You require waffle cones and chocolate flavouring to make chocolate cones." + if(ICECREAM_VANILLA) + if(ingredients[INGR_ICE] > 0 && ingredients[INGR_MILK] > 0) + var/amount = min(ingredients[INGR_ICE], ingredients[INGR_MILK]) + ingredients[INGR_ICE] -= amount + ingredients[INGR_MILK] -= amount + ingredients[ICECREAM_VANILLA] += amount + src.visible_message("[user] whips up some vanilla icecream.") + else + user << "You require milk and ice to make vanilla icecream." + updateDialog() + +/obj/machinery/icecream_vat/Topic(href, href_list) + if(..()) + return + if(href_list["dispense"]) + dispense_flavour = text2num(href_list["dispense"]) + src.visible_message("\blue[usr] sets [src] to dispense [get_icecream_flavour_string(dispense_flavour)] flavoured icecream.") + + if(href_list["cone"]) + var/dispense_cone = text2num(href_list["cone"]) + if(ingredients[dispense_cone] <= ingredients.len) + var/cone_name = get_icecream_flavour_string(dispense_cone) + if(ingredients[dispense_cone] >= 1) + ingredients[dispense_cone] -= 1 + var/obj/item/weapon/reagent_containers/food/snacks/icecream/I = new(src.loc) + I.cone_type = cone_name + I.icon_state = "icecream_cone_[cone_name]" + I.desc = "Delicious [cone_name] cone, but no ice cream." + src.visible_message("[usr] dispenses a crunchy [cone_name] cone from [src].") + else + usr << "There are no [cone_name] cones left!" + updateDialog() + + if(href_list["make"]) + make( usr, text2num(href_list["make"]) ) + updateDialog() + + if(href_list["eject"]) + if(held_container) + held_container.loc = src.loc + held_container = null + updateDialog() + + if(href_list["refresh"]) + updateDialog() + + if(href_list["close"]) + usr.unset_machine() + usr << browse(null,"window=icecreamvat") + return + +/obj/item/weapon/reagent_containers/food/snacks/icecream + name = "ice cream cone" + desc = "Delicious waffle cone, but no ice cream." + icon = 'icons/obj/kitchen.dmi' + icon_state = "icecream_cone" + layer = 3.1 + var/ice_creamed = 0 + var/cone_type + +/obj/item/weapon/reagent_containers/food/snacks/icecream/New() + create_reagents(5) + reagents.add_reagent("nutriment", 1, 1) + +/obj/item/weapon/reagent_containers/food/snacks/icecream/proc/add_ice_cream(var/flavour) + var/flavour_name = get_icecream_flavour_string(flavour) + name = "[flavour_name] icecream" + src.overlays += "icecream_[flavour_name]" + desc = "Delicious [cone_type] cone with a dollop of [flavour_name] ice cream." + ice_creamed = 1 + +#undef ICECREAM_VANILLA +#undef FLAVOUR_CHOCOLATE +#undef FLAVOUR_STRAWBERRY +#undef FLAVOUR_BLUE +#undef CONE_WAFFLE +#undef CONE_CHOC +#undef INGR_MILK +#undef INGR_FLOUR +#undef INGR_SUGAR +#undef INGR_ICE +#undef MUCK diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index 089bf9075561a27dd8b1a4279866a961437afbb0..410284ab7e19814765d5c61281d6645c025787e2 100644 GIT binary patch literal 15707 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�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 QzdNm}sQ#>2-u&bL0%SG1%>V!Z literal 12539 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 diff --git a/maps/tgstation.2.1.2.dmm b/maps/tgstation.2.1.2.dmm index 2d78e699637..13d8060756c 100644 --- a/maps/tgstation.2.1.2.dmm +++ b/maps/tgstation.2.1.2.dmm @@ -1663,7 +1663,7 @@ "aFY" = (/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aFZ" = (/obj/machinery/vending/cola,/turf/simulated/floor/wood,/area/crew_quarters/bar) "aGa" = (/obj/machinery/vending/coffee,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aGb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) +"aGb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/icecream_vat,/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aGc" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aGd" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"},/obj/machinery/camera{c_tag = "Kitchen Cold Room"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) "aGe" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -2645,7 +2645,7 @@ "aYS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/port) "aYT" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/maintenance/port) "aYU" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/crew_quarters/locker) -"aYV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/crew_quarters/heads) +"aYV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/pdapainter,/turf/simulated/floor,/area/crew_quarters/heads) "aYW" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/port) "aYX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/port) "aYY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/quartermaster/storage) diff --git a/tgstation.dme b/tgstation.dme index 3748c773430..3eea0ed36a9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -353,6 +353,7 @@ #include "code\game\machinery\embedded_controller\embedded_controller_base.dm" #include "code\game\machinery\embedded_controller\simple_vent_controller.dm" #include "code\game\machinery\kitchen\gibber.dm" +#include "code\game\machinery\kitchen\icecream_vat.dm" #include "code\game\machinery\kitchen\juicer.dm" #include "code\game\machinery\kitchen\microwave.dm" #include "code\game\machinery\kitchen\monkeyrecycler.dm"