/obj/item/mixing_bowl name = "mixing bowl" desc = "Mixing it up in the kitchen." container_type = OPENCONTAINER icon = 'icons/obj/kitchen.dmi' icon_state = "mixing_bowl" var/max_n_of_items = 25 var/dirty = FALSE var/clean_icon = "mixing_bowl" var/dirty_icon = "mixing_bowl_dirty" /obj/item/mixing_bowl/New() ..() create_reagents(100) /obj/item/mixing_bowl/attackby(obj/item/I, mob/user, params) if(dirty) if(istype(I, /obj/item/soap)) user.visible_message("[user] starts to scrub [src].", "You start to scrub [src].") if(do_after(user, 20 * I.toolspeed, target = src)) clean() user.visible_message("[user] has scrubbed [src] clean.", "You have scrubbed [src] clean.") return 1 else to_chat(user, "You should clean [src] before you use it for food prep.") return 0 if(is_type_in_list(I, GLOB.cooking_ingredients[RECIPE_MICROWAVE]) || is_type_in_list(I, GLOB.cooking_ingredients[RECIPE_GRILL]) || is_type_in_list(I, GLOB.cooking_ingredients[RECIPE_OVEN]) || is_type_in_list(I, GLOB.cooking_ingredients[RECIPE_CANDY])) if(length(contents)>=max_n_of_items) to_chat(user, "This [src] is full of ingredients, you cannot put more.") return 1 if(istype(I, /obj/item/stack)) var/obj/item/stack/S = I if(S.get_amount() > 1) var/obj/item/stack/to_add = S.split(user, 1) to_add.forceMove(src) user.visible_message("[user] adds one of [S] to [src].", "You add one of [S] to [src].") else return add_item(S, user) else return add_item(I, user) else if(is_type_in_list(I, list(/obj/item/reagent_containers/glass, /obj/item/reagent_containers/drinks, /obj/item/reagent_containers/condiment))) if(!I.reagents) return 1 for(var/datum/reagent/R in I.reagents.reagent_list) if(!(R.id in GLOB.cooking_reagents[RECIPE_MICROWAVE]) && !(R.id in GLOB.cooking_reagents[RECIPE_GRILL]) && !(R.id in GLOB.cooking_reagents[RECIPE_OVEN]) && !(R.id in GLOB.cooking_reagents[RECIPE_CANDY])) to_chat(user, "Your [I] contains components unsuitable for cookery.") return 1 else to_chat(user, "You have no idea what you can cook with [I].") return 1 /obj/item/mixing_bowl/proc/add_item(obj/item/I, mob/user) if(!user.drop_item()) to_chat(user, "\The [I] is stuck to your hand, you cannot put it in [src]") //return 0 else I.forceMove(src) user.visible_message("[user] adds [I] to [src].", "You add [I] to [src].") /obj/item/mixing_bowl/attack_self(mob/user) var/dat = "" if(dirty) dat = {"This [src] is dirty!
Please clean it before use!
"} else var/list/items_counts = list() var/list/items_measures = list() var/list/items_measures_p = list() for(var/obj/O in contents) var/display_name = O.name if(istype(O,/obj/item/food/egg)) items_measures[display_name] = "egg" items_measures_p[display_name] = "eggs" if(istype(O,/obj/item/food/tofu)) items_measures[display_name] = "tofu chunk" items_measures_p[display_name] = "tofu chunks" if(istype(O,/obj/item/food/meat)) //any meat items_measures[display_name] = "slab of meat" items_measures_p[display_name] = "slabs of meat" if(istype(O,/obj/item/food/donkpocket)) display_name = "Turnovers" items_measures[display_name] = "turnover" items_measures_p[display_name] = "turnovers" if(istype(O,/obj/item/food/carpmeat)) items_measures[display_name] = "fillet of meat" items_measures_p[display_name] = "fillets of meat" items_counts[display_name]++ for(var/O in items_counts) var/N = items_counts[O] if(!(O in items_measures)) dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} else if(N==1) dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} else dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} for(var/datum/reagent/R in reagents.reagent_list) var/display_name = R.name if(R.id == "capsaicin") display_name = "Hotsauce" if(R.id == "frostoil") display_name = "Coldsauce" dat += {"[display_name]: [R.volume] unit\s
"} if(length(items_counts)==0 && length(reagents.reagent_list)==0) dat = {"[src] is empty
"} else dat = {"Ingredients:
[dat]"} dat += {"

Dispose ingredients!
"} var/datum/browser/popup = new(user, name, name, 400, 400) popup.set_content(dat) popup.open(0) onclose(user, "[name]") return /obj/item/mixing_bowl/Topic(href, href_list) if(..()) return switch(href_list["action"]) if("dispose") dispose() return /obj/item/mixing_bowl/proc/dispose() for(var/obj/O in contents) O.forceMove(loc) if(reagents.total_volume) make_dirty(5) reagents.clear_reagents() to_chat(usr, "You dispose of [src]'s contents.") updateUsrDialog() /obj/item/mixing_bowl/proc/make_dirty(chance) if(!chance) return if(prob(chance)) dirty = TRUE container_type = null icon_state = dirty_icon /obj/item/mixing_bowl/proc/clean() dirty = FALSE container_type = OPENCONTAINER icon_state = clean_icon /obj/item/mixing_bowl/wash(mob/user, atom/source) if(..()) clean() /obj/item/mixing_bowl/proc/fail(obj/source) if(!source) source = src var/amount = 0 for(var/obj/O in contents) amount++ if(O.reagents) var/id = O.reagents.get_master_reagent_id() if(id) amount+=O.reagents.get_reagent_amount(id) qdel(O) if(reagents && reagents.total_volume) var/id = reagents.get_master_reagent_id() if(id) amount += reagents.get_reagent_amount(id) reagents.clear_reagents() var/obj/item/food/badrecipe/mysteryfood = new(get_turf(source)) mysteryfood.reagents.add_reagent("carbon", amount) mysteryfood.reagents.add_reagent("????", amount / 10) make_dirty(75)