/obj/machinery/juicer name = "Juicer" icon = 'icons/obj/kitchen.dmi' icon_state = "juicer1" layer = 2.9 density = 0 anchored = 0 use_power = 1 idle_power_usage = 5 active_power_usage = 100 var/obj/item/weapon/reagent_containers/beaker = null var/global/list/allowed_items = list( /obj/item/weapon/reagent_containers/food/snacks/watermelonslice = "watermelonjuice", /obj/item/weapon/reagent_containers/food/snacks/grown = "water", ) var/global/list/allowed_tags = list ( "tomato" = "tomatojuice", "carrot" = "carrotjuice", "berries" = "berryjuice", "banana" = "banana", "potato" = "potato", "lemon" = "lemonjuice", "orange" = "orangejuice", "lime" = "limejuice", "poisonberries" = "poisonberryjuice", ) /obj/machinery/juicer/New() beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src) /obj/machinery/juicer/update_icon() icon_state = "juicer"+num2text(!isnull(beaker)) return /obj/machinery/juicer/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if (istype(O,/obj/item/weapon/reagent_containers/glass) || \ istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass)) if (beaker) return 1 else if(!user.unEquip(O)) user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" return 0 O.loc = src beaker = O src.verbs += /obj/machinery/juicer/verb/detach update_icon() src.updateUsrDialog() return 0 if (!is_type_in_list(O, allowed_items)) user << "It doesn't look like that contains any juice." return 1 if(!user.unEquip(O)) user << "\the [O] is stuck to your hand, you cannot put it in \the [src]" return 0 O.loc = src src.updateUsrDialog() return 0 /obj/machinery/juicer/attack_ai(mob/user as mob) return 0 /obj/machinery/juicer/attack_hand(mob/user as mob) user.set_machine(src) interact(user) /obj/machinery/juicer/interact(mob/user as mob) // The microwave Menu var/is_chamber_empty = 0 var/is_beaker_ready = 0 var/processing_chamber = "" var/beaker_contents = "" for (var/i in allowed_items) for (var/obj/item/O in src.contents) if (!istype(O,i)) continue processing_chamber+= "some [O]
" break if (!processing_chamber) is_chamber_empty = 1 processing_chamber = "Nothing." if (!beaker) beaker_contents = "\The [src] has no beaker attached." else if (!beaker.reagents.total_volume) beaker_contents = "\The [src] has attached an empty beaker." is_beaker_ready = 1 else if (beaker.reagents.total_volume < beaker.reagents.maximum_volume) beaker_contents = "\The [src] has attached a beaker with something." is_beaker_ready = 1 else beaker_contents = "\The [src] has attached a beaker and beaker is full!" var/dat = {" Processing chamber contains:
[processing_chamber]
[beaker_contents]
"} if (is_beaker_ready && !is_chamber_empty && !(stat & (NOPOWER|BROKEN))) dat += "Turn on!
" if (beaker) dat += "
Detach a beaker!
" user << browse("Juicer[dat]", "window=juicer") onclose(user, "juicer") return /obj/machinery/juicer/Topic(href, href_list) if(..()) return usr.set_machine(src) switch(href_list["action"]) if ("juice") juice() if ("detach") detach() src.updateUsrDialog() return /obj/machinery/juicer/verb/detach() set category = "Object" set name = "Detach Beaker from the juicer" set src in oview(1) if (usr.stat != 0) return if (!beaker) return src.verbs -= /obj/machinery/juicer/verb/detach beaker.loc = src.loc beaker = null update_icon() /obj/machinery/juicer/proc/get_juice_id(var/obj/item/weapon/reagent_containers/food/snacks/O) if (istype(O, /obj/item/weapon/reagent_containers/food/snacks/watermelonslice)) return "watermelonjuice" else if(istype(O, /obj.item/weapon/reagent_containers/food/snacks/grown)) var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O for(var/i in allowed_tags) if(G.seed.kitchen_tag == allowed_tags[i]) return allowed_tags[i] return "water" /obj/machinery/juicer/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O) if (!istype(O)) return 5 else if (O.potency == -1) return 5 else return round(5*sqrt(O.potency)) /obj/machinery/juicer/proc/juice() power_change() //it is a portable machine if(stat & (NOPOWER|BROKEN)) return if (!beaker || beaker.reagents.total_volume >= beaker.reagents.maximum_volume) return playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1) for (var/obj/item/weapon/reagent_containers/food/snacks/O in src.contents) var/r_id = get_juice_id(O) beaker.reagents.add_reagent(r_id,get_juice_amount(O)) qdel(O) if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume) break /obj/structure/closet/crate/juice New() ..() new/obj/machinery/juicer(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/tomato(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/carrot(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/berries(src) new/obj/item/weapon/reagent_containers/food/snacks/grown/banana(src)