From 1ab69f9fda82fce7b45c4368bb021f9c1b59f608 Mon Sep 17 00:00:00 2001 From: phil235 Date: Thu, 23 Jul 2015 16:06:03 +0200 Subject: [PATCH] Readding loading chef food into snack vending mechines. Adding a mention about being able to load food into snack vending machines in the cook book. Removing the power setting of the microwave. The microwave upgrades makes it unneeded. --- code/game/machinery/vending.dm | 100 ++++++++++++++++++ code/game/objects/items/weapons/manuals.dm | 4 +- .../kitchen machinery/microwave.dm | 16 +-- 3 files changed, 105 insertions(+), 15 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 64f137d4e17..1247c6645a9 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -51,6 +51,8 @@ var/obj/item/weapon/coin/coin var/datum/wires/vending/wires = null + var/dish_quants = list() //used by the snack machine's custom compartment to count dishes. + var/obj/item/weapon/vending_refill/refill_canister = null //The type of refill canisters used by this machine. /obj/machinery/vending/New() @@ -84,6 +86,11 @@ coin = null ..() +/obj/machinery/vending/snack/Destroy() + for(var/obj/item/weapon/reagent_containers/food/snacks/S in contents) + S.loc = get_turf(src) + return ..() + /obj/machinery/vending/RefreshParts() //Better would be to make constructable child if(component_parts) product_records = list() @@ -160,6 +167,72 @@ total += restock return total +/obj/machinery/vending/snack/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/reagent_containers/food/snacks)) + if(!compartment_access_check(user)) + return + if(junk_check(W)) + if(!iscompartmentfull(user)) + if(!user.drop_item()) + return + W.loc = src + food_load(W) + user << "You insert [W] into [src]'s chef compartment." + else + user << "[src]'s chef compartment does not accept junk food." + return + + if(istype(W, /obj/item/weapon/storage/bag/tray)) + if(!compartment_access_check(user)) + return + var/obj/item/weapon/storage/T = W + var/loaded = 0 + var/denied_items = 0 + for(var/obj/item/weapon/reagent_containers/food/snacks/S in T.contents) + if(iscompartmentfull(user)) + break + if(junk_check(S)) + T.remove_from_storage(S, src) + food_load(S) + loaded++ + else + denied_items++ + if(denied_items) + user << "[src] refuses some items." + if(loaded) + user << "You insert [loaded] dishes into [src]'s chef compartment." + updateUsrDialog() + return + + ..() + +/obj/machinery/vending/snack/proc/compartment_access_check(user) + req_access_txt = chef_compartment_access + if(!allowed(user) && !emagged && scan_id) + user << "[src]'s chef compartment blinks red: Access denied." + req_access_txt = "0" + return 0 + req_access_txt = "0" + return 1 + +/obj/machinery/vending/snack/proc/junk_check(obj/item/weapon/reagent_containers/food/snacks/S) + if(S.junkiness) + return 0 + return 1 + +/obj/machinery/vending/snack/proc/iscompartmentfull(mob/user) + if(contents.len >= 30) // no more than 30 dishes can fit inside + user << "[src]'s chef compartment is full." + return 1 + return 0 + +/obj/machinery/vending/snack/proc/food_load(obj/item/weapon/reagent_containers/food/snacks/S) + if(dish_quants[S.name]) + dish_quants[S.name]++ + else + dish_quants[S.name] = 1 + sortList(dish_quants) + /obj/machinery/vending/attackby(obj/item/weapon/W, mob/user, params) if(panel_open) if(default_unfasten_wrench(user, W, time = 60)) @@ -280,6 +353,15 @@ dat += "[coin]  Remove" else dat += "No coin  Remove" + if(istype(src, /obj/machinery/vending/snack)) + dat += "

Chef's Food Selection

" + dat += "
" + for (var/O in dish_quants) + if(dish_quants[O] > 0) + var/N = dish_quants[O] + dat += "Dispense " + dat += "[capitalize(O)]: [N]
" + dat += "
" user.set_machine(src) if(seconds_electrified && !(stat & NOPOWER)) if(shock(user, 100)) @@ -327,6 +409,23 @@ usr.set_machine(src) + if((href_list["dispense"]) && (vend_ready)) + var/N = href_list["dispense"] + if(dish_quants[N] <= 0) // Sanity check, there are probably ways to press the button when it shouldn't be possible. + return + vend_ready = 0 + use_power(5) + + spawn(vend_delay) + dish_quants[N] = max(dish_quants[N] - 1, 0) + for(var/obj/O in contents) + if(O.name == N) + O.loc = src.loc + break + vend_ready = 1 + updateUsrDialog() + return + if((href_list["vend"]) && (vend_ready)) if(panel_open) usr << "The vending machine cannot dispense products while its service panel is open!" @@ -578,6 +677,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6) contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6) refill_canister = /obj/item/weapon/vending_refill/snack + var/chef_compartment_access = "28" /obj/machinery/vending/sustenance name = "\improper Sustenance Vendor" diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 7e69597ba3d..08a4a762d0c 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -709,7 +709,7 @@

Microwave:

Use it to cook or boil food ingredients (meats, doughs, egg, spaghetti, donkpocket, etc...). - It can cook multiple items at once. Use the higher power settings for faster (and riskier) cooking. + It can cook multiple items at once.

Processor:

Use it to process certain ingredients (meat into faggot, doughslice into spaghetti, potato into fries,etc...) @@ -733,6 +733,8 @@ Donuts: 1u sugar + 1 pastry base
Fries: Process potato. +

Sharing your food:

+ You can put your meals on your kitchen counter or load them in the snack vending machines. "} diff --git a/code/modules/food&drinks/kitchen machinery/microwave.dm b/code/modules/food&drinks/kitchen machinery/microwave.dm index ff512b49687..0221c4bdc07 100644 --- a/code/modules/food&drinks/kitchen machinery/microwave.dm +++ b/code/modules/food&drinks/kitchen machinery/microwave.dm @@ -14,7 +14,6 @@ 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 - var/microwavepower = 1 // see code/modules/food/recipes_microwave.dm for recipes @@ -203,12 +202,6 @@ dat = "

Ingredients:

[dat]" dat += "Turn on" dat += "Eject ingredients
" - dat += "Microwave Power: [microwavepower*200]W
" - dat += "200W" - dat += "400W" - dat += "600W" - dat += "800W" - dat += "1000W
" var/datum/browser/popup = new(user, "microwave", name, 300, 300) popup.set_content(dat) @@ -224,7 +217,7 @@ return start() - if (prob(max(microwavepower*5/efficiency-5,dirty*5))) //a clean unupgraded microwave on lowest power has no risk of failure + if (prob(max(5/efficiency-5,dirty*5))) //a clean unupgraded microwave has no risk of failure muck_start() if (!microwaving(4)) muck_finish() @@ -265,7 +258,7 @@ if (stat & (NOPOWER|BROKEN)) return 0 use_power(500) - sleep(max(14-2*microwavepower-2*efficiency,2)) // standard power means sleep(10). The higher the power and the better the efficiency, the faster the cooking + 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() @@ -340,10 +333,5 @@ if ("dispose") dispose() - if ("power") - var/amount = text2num(href_list["amount"]) - if(amount<1 || amount>5) - return - microwavepower = amount updateUsrDialog() return