diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index b0200b22ab2..0b77d811e63 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -439,7 +439,7 @@
src.beaker = B
B.forceMove(src)
to_chat(user, "You add the beaker to the machine!")
- src.updateUsrDialog()
+ nanomanager.update_uis(src)
icon_state = "mixer1"
else if(istype(B, /obj/item/weapon/storage/pill_bottle))
@@ -454,7 +454,7 @@
src.loaded_pill_bottle = B
B.forceMove(src)
to_chat(user, "You add the pill bottle into the dispenser slot!")
- src.updateUsrDialog()
+ nanomanager.update_uis(src)
return
/obj/machinery/chem_master/Topic(href, href_list)
@@ -673,7 +673,7 @@
else if(href_list["bottle_sprite"])
bottlesprite = href_list["bottle_sprite"]
- src.updateUsrDialog()
+ . = 1
return
/obj/machinery/chem_master/attack_ai(mob/user as mob)
@@ -683,9 +683,12 @@
return src.attack_hand(user)
/obj/machinery/chem_master/attack_hand(mob/user as mob)
- if(stat & BROKEN)
- return
- user.set_machine(src)
+ if(..())
+ return 1
+ ui_interact(user)
+ return
+
+/obj/machinery/chem_master/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1)
if(!(user.client in has_sprites))
spawn()
has_sprites += user.client
@@ -693,61 +696,33 @@
usr << browse_rsc(icon('icons/obj/chemical.dmi', "pill" + num2text(i)), "pill[i].png")
for(var/i = 1 to MAX_BOTTLE_SPRITE)
usr << browse_rsc(icon('icons/obj/chemical.dmi', "bottle" + num2text(i)), "bottle[i].png")
- var/dat = ""
- if(!beaker)
- dat = "Please insert beaker.
"
- if(src.loaded_pill_bottle)
- dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]
"
- else
- dat += "No pill bottle inserted.
"
- dat += "Close"
- else
- var/datum/reagents/R = beaker.reagents
- dat += "Eject beaker and Clear Buffer
"
- if(src.loaded_pill_bottle)
- dat += "Eject Pill Bottle \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.storage_slots]\]
"
- else
- dat += "No pill bottle inserted.
"
- if(!R.total_volume)
- dat += "Beaker is empty."
- else
- dat += "Add to buffer:
"
- for(var/datum/reagent/G in R.reagent_list)
- dat += "[G.name] , [G.volume] Units - "
- dat += "(Analyze) "
- dat += "(1) "
- dat += "(5) "
- dat += "(10) "
- dat += "(All) "
- dat += "(Custom)
"
-
- dat += "
Transfer to [(!mode ? "disposal" : "beaker")]:
"
- if(reagents.total_volume)
- for(var/datum/reagent/N in reagents.reagent_list)
- dat += "[N.name] , [N.volume] Units - "
- dat += "(Analyze) "
- dat += "(1) "
- dat += "(5) "
- dat += "(10) "
- dat += "(All) "
- dat += "(Custom)
"
- else
- dat += "Empty
"
- if(!condi)
- dat += "
Create pill (50 units max)
"
- dat += "Create multiple pills
"
- dat += "
Create patch (40 units max)
"
- dat += "Create multiple patches
"
- dat += "Create bottle (30 units max)"
- else
- dat += "
Create pack (10 units max)
"
- dat += "Create bottle (50 units max)"
- if(!condi)
- user << browse("Chemmaster 3000Chemmaster menu:
[dat]", "window=chem_master;size=575x400")
- else
- user << browse("Condimaster 3000Condimaster menu:
[dat]", "window=chem_master;size=575x400")
- onclose(user, "chem_master")
- return
+ var/data = list()
+
+ data["condi"] = condi
+ data["loaded_pill_bottle"] = (loaded_pill_bottle ? 1 : 0)
+ if(loaded_pill_bottle)
+ data["loaded_pill_bottle_contents_len"] = loaded_pill_bottle.contents.len
+ data["loaded_pill_bottle_storage_slots"] = loaded_pill_bottle.storage_slots
+
+ data["beaker"] = (beaker ? 1 : 0)
+ if(beaker)
+ var/list/beaker_reagents_list = list()
+ data["beaker_reagents"] = beaker_reagents_list
+ for(var/datum/reagent/R in beaker.reagents.reagent_list)
+ beaker_reagents_list[++beaker_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "id" = R.id, "description" = R.description)
+ var/list/buffer_reagents_list = list()
+ data["buffer_reagents"] = buffer_reagents_list
+ for(var/datum/reagent/R in reagents.reagent_list)
+ buffer_reagents_list[++buffer_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "id" = R.id, "description" = R.description)
+
+ data["pillsprite"] = pillsprite
+ data["mode"] = mode
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "chem_master.tmpl", src.name, 575, 400)
+ ui.set_initial_data(data)
+ ui.open()
/obj/machinery/chem_master/proc/isgoodnumber(var/num)
if(isnum(num))
diff --git a/nano/templates/chem_master.tmpl b/nano/templates/chem_master.tmpl
new file mode 100644
index 00000000000..0fcea280c42
--- /dev/null
+++ b/nano/templates/chem_master.tmpl
@@ -0,0 +1,83 @@
+{{if data.beaker}}
+ {{:helper.link('Eject Beaker and Clear Buffer', 'eject', {'eject': 1})}}
+
+
Add to buffer:
+ {{for data.beaker_reagents}}
+
+
{{:value.name}}, {{:value.volume}} units
+ {{:helper.link('Analyze', 'search', {'analyze': 1, 'desc': value.description, 'name': value.name})}}
+ {{:helper.link('1', 'plus', {'add': value.id, 'amount': 1})}}
+ {{:helper.link('5', 'plus', {'add': value.id, 'amount': 5})}}
+ {{:helper.link('10', 'plus', {'add': value.id, 'amount': 10})}}
+ {{:helper.link('All', 'plus', {'add': value.id, 'amount': value.volume})}}
+ {{:helper.link('Custom', 'plus', {'addcustom': value.id})}}
+
+ {{/for}}
+
+
+
+
+ Transfer to {{:helper.link(data.mode ? 'beaker' : 'disposal', 'arrows-h', {'toggle': 1})}}
+
+
+ {{for data.buffer_reagents}}
+
+
{{:value.name}}, {{:value.volume}} units
+ {{:helper.link('Analyze', 'search', {'analyze': 1, 'desc': value.description, 'name': value.name})}}
+ {{:helper.link('1', 'plus', {'remove': value.id, 'amount': 1})}}
+ {{:helper.link('5', 'plus', {'remove': value.id, 'amount': 5})}}
+ {{:helper.link('10', 'plus', {'remove': value.id, 'amount': 10})}}
+ {{:helper.link('All', 'plus', {'remove': value.id, 'amount': value.volume})}}
+ {{:helper.link('Custom', 'plus', {'removecustom': value.id})}}
+
+ {{/for}}
+
+
+
Containers:
+
+ {{if data.condi}}
+ {{:helper.link('Create pill (10u max)', 'arrow-right', {'createpill': 1})}}
+ {{:helper.link('Create bottle (50u max)', 'arrow-right', {'createpill': 1})}}
+ {{else}}
+
+
+ |
+ {{:helper.link('Create pill (50u max)', 'arrow-right', {'createpill': 1})}}
+ |
+
+ {{:helper.link('Multiple', 'arrow-right', {'createpill_multiple': 1})}}
+ |
+
+ {{:helper.link('Style', 'pencil', {'change_pill': 1})}}
+ |
+
+
+ |
+
+
+ |
+ {{:helper.link('Create patch (40u max)', 'arrow-right', {'createpatch': 1})}}
+ |
+
+ {{:helper.link('Multiple', 'arrow-right', {'createpatch_multiple': 1})}}
+ |
+
+
+ |
+ {{:helper.link('Create bottle (30u max)', 'arrow-right', {'createbottle': 1})}}
+ |
+
+
+ {{/if}}
+
+
+{{else}}
+ No beaker loaded
+{{/if}}
+
+ {{if data.loaded_pill_bottle}}
+ {{:helper.link('Pill Bottle (' + data.loaded_pill_bottle_contents_len + '/' + data.loaded_pill_bottle_storage_slots + ')', 'eject', {'ejectp': 1})}}
+ {{else}}
+ {{:helper.link('No Pill Bottle', 'eject', {}, 'disabled')}}
+ {{/if}}
+
\ No newline at end of file