diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm
index f4611b9042db..2e0d143a9092 100644
--- a/code/game/machinery/kitchen/microwave.dm
+++ b/code/game/machinery/kitchen/microwave.dm
@@ -154,72 +154,81 @@
user.set_interaction(src)
interact(user)
+ tgui_interact(user)
+
+/obj/structure/machinery/microwave/tgui_interact(mob/user, datum/tgui/ui)
+ ui = SStgui.try_update_ui(user, src, ui)
+ if (!ui)
+ ui = new(user, src, "Microwave", "Microwave Controls")
+ ui.open()
+
//*******************
//* Microwave Menu
//********************/
+/obj/structure/machinery/microwave/ui_data(mob/user)
+ var/list/data = list()
-/obj/structure/machinery/microwave/interact(mob/user as mob) // The microwave Menu
- var/dat = ""
- if(src.broken > 0)
- dat = {"Bzzzzttttt"}
- else if(src.operating)
- dat = {"Microwaving in progress!
Please wait...!"}
- else if(src.dirty==100)
- dat = {"This microwave is dirty!
Please clean it before use!"}
- else
- var/list/items_counts = new
- var/list/items_measures = new
- var/list/items_measures_p = new
- for (var/obj/O in contents)
- var/display_name = O.name
- if (istype(O,/obj/item/reagent_container/food/snacks/egg))
- items_measures[display_name] = "egg"
- items_measures_p[display_name] = "eggs"
- if (istype(O,/obj/item/reagent_container/food/snacks/tofu))
- items_measures[display_name] = "tofu chunk"
- items_measures_p[display_name] = "tofu chunks"
- if (istype(O,/obj/item/reagent_container/food/snacks/meat)) //any meat
- items_measures[display_name] = "slab of meat"
- items_measures_p[display_name] = "slabs of meat"
- if (istype(O,/obj/item/reagent_container/food/snacks/donkpocket))
- display_name = "Turnovers"
- items_measures[display_name] = "turnover"
- items_measures_p[display_name] = "turnovers"
- if (istype(O,/obj/item/reagent_container/food/snacks/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 == "hotsauce")
- display_name = "Hotsauce"
- if (R.id == "frostoil")
- display_name = "Coldsauce"
- dat += {"[display_name]: [R.volume] unit\s
"}
-
- if (items_counts.len==0 && reagents.reagent_list.len==0)
- dat = {"The microwave is empty
"}
+ data["operating"] = src.operating
+ data["broken"] = src.broken
+ data["dirty"] = (src.dirty == 100)
+
+ var/list/ingredients = new
+ var/list/items_counts = new
+ var/list/items_measures = new
+ var/list/items_measures_p = new
+
+ for (var/obj/O in contents)
+ var/display_name = O.name
+
+ if (istype(O,/obj/item/reagent_container/food/snacks/egg))
+ items_measures[display_name] = "egg"
+ items_measures_p[display_name] = "eggs"
+ if (istype(O,/obj/item/reagent_container/food/snacks/tofu))
+ items_measures[display_name] = "tofu chunk"
+ items_measures_p[display_name] = "tofu chunks"
+ if (istype(O,/obj/item/reagent_container/food/snacks/meat)) //any meat
+ items_measures[display_name] = "slab of meat"
+ items_measures_p[display_name] = "slabs of meat"
+ if (istype(O,/obj/item/reagent_container/food/snacks/donkpocket))
+ display_name = "Turnovers"
+ items_measures[display_name] = "turnover"
+ items_measures_p[display_name] = "turnovers"
+ if (istype(O,/obj/item/reagent_container/food/snacks/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/list/item = new
+
+ item["name"] = capitalize(O)
+ item["count"] = items_counts[O]
+
+ if (!(O in items_measures))
+ item["measure"] = "[lowertext(O)][items_counts[O] > 1 ? "s" : ""]" // Adds 's' for plurals.
+ else if (items_counts[O] == 1)
+ item["measure"] = items_measures[O]
else
- dat = {"Ingredients:
[dat]"}
- dat += {"