From a9027442646764cf800f3ea8e1e7090e5a128f9a Mon Sep 17 00:00:00 2001 From: cib Date: Wed, 28 Dec 2011 19:45:43 -0800 Subject: [PATCH] A new breakthrough in quantum technology now allows you to convert energy to mass directly using the chem dispenser. Enabling this feature requires huge amounts of power, however. --- code/modules/chemical/Chemistry-Machinery.dm | 20 +++- interface/skin.dmf | 114 ++++++++++++++++++- 2 files changed, 130 insertions(+), 4 deletions(-) diff --git a/code/modules/chemical/Chemistry-Machinery.dm b/code/modules/chemical/Chemistry-Machinery.dm index a34b36606ea..4bca9def67d 100644 --- a/code/modules/chemical/Chemistry-Machinery.dm +++ b/code/modules/chemical/Chemistry-Machinery.dm @@ -8,11 +8,13 @@ anchored = 1 icon = 'chemical.dmi' icon_state = "dispenser" + use_power = 1 var/energy = 25 var/max_energy = 75 var/amount = 30 var/beaker = null var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine","sodium","aluminum","silicon","phosphorus","sulfur","chlorine","potassium","iron","copper","mercury","radium","water","ethanol","sugar","acid","milk",) + var/charging_reagents = 0 ex_act(severity) switch(severity) @@ -33,12 +35,16 @@ return proc/updateWindow(mob/user as mob) - winset(user, "chemdispenser.energy", "text=\"Energy: [src.energy]\"") + winset(user, "chemdispenser.energy", "text=\"Energy: [round(src.energy)]\"") winset(user, "chemdispenser.amount", "text=\"Amount: [src.amount]\"") if (beaker) winset(user, "chemdispenser.eject", "text=\"Eject beaker\"") else winset(user, "chemdispenser.eject", "text=\"\[Insert beaker\]\"") + if(charging_reagents) + winset(user, "chemdispenser.charging", "text=\"Charging\"") + else + winset(user, "chemdispenser.charging", "text=\"Not Charging\"") proc/initWindow(mob/user as mob) var/i = 0 var list/nameparams = params2list(winget(user, "chemdispenser_reagents.template_name", "pos;size;type;image;image-mode")) @@ -77,6 +83,8 @@ var/obj/item/weapon/reagent_containers/glass/B = src.beaker B.loc = src.loc src.beaker = null + else if (data == "tcharge") + src.charging_reagents = !src.charging_reagents else if (copytext(data, 1, 7) == "amount") if (text2num(copytext(data, 7))) amount = text2num(copytext(data, 7)) @@ -85,7 +93,7 @@ var/obj/item/weapon/reagent_containers/glass/B = src.beaker var/datum/reagents/R = B.reagents var/space = R.maximum_volume - R.total_volume - R.add_reagent(data, min(amount, energy * 10, space)) + R.add_reagent(data, min(amount, round(energy) * 10, space)) energy = max(energy - min(amount, space) / 10, 0) amount = round(amount, 10) // Chem dispenser doesnt really have that much prescion @@ -143,6 +151,14 @@ user.skincmds["chemdispenser"] = src return + +/obj/machinery/chem_dispenser/process() + if(stat & NOPOWER) return + if(!charging_reagents) return + + use_power(5000) + src.energy += 0.01 + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/interface/skin.dmf b/interface/skin.dmf index 11e4b73558d..ff5f90bad21 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -323,6 +323,116 @@ window "chemdispenser" macro = "" menu = "" on-close = "" + elem "charging" + type = BUTTON + pos = 72,24 + size = 88x20 + anchor1 = none + anchor2 = none + font-family = "" + font-size = 0 + font-style = "" + text-color = #000000 + background-color = none + is-visible = true + is-disabled = false + is-transparent = false + is-default = false + border = none + drop-zone = false + right-click = false + saved-params = "is-checked" + on-size = "" + text = "[Not charging]" + image = "" + command = "skincmd \"chemdispenser;tcharge\"" + is-flat = false + stretch = false + is-checked = false + group = "" + button-type = pushbutton + elem "button4" + type = BUTTON + pos = 208,4 + size = 48x20 + anchor1 = none + anchor2 = none + font-family = "" + font-size = 0 + font-style = "" + text-color = #000000 + background-color = none + is-visible = true + is-disabled = false + is-transparent = false + is-default = false + border = none + drop-zone = false + right-click = false + saved-params = "is-checked" + on-size = "" + text = "[Other]" + image = "" + command = "skincmd \"chemdispenser;amountc\"" + is-flat = false + stretch = false + is-checked = false + group = "" + button-type = pushbutton + elem "child2" + type = CHILD + pos = 0,48 + size = 340x432 + anchor1 = none + anchor2 = none + font-family = "" + font-size = 0 + font-style = "" + text-color = #000000 + background-color = none + is-visible = true + is-disabled = false + is-transparent = false + is-default = false + border = none + drop-zone = false + right-click = false + saved-params = "splitter" + on-size = "" + left = "chemdispenser_reagents" + right = "" + is-vert = false + splitter = 50 + show-splitter = true + lock = none + elem "button3" + type = BUTTON + pos = 208,4 + size = 48x20 + anchor1 = none + anchor2 = none + font-family = "" + font-size = 0 + font-style = "" + text-color = #000000 + background-color = none + is-visible = true + is-disabled = false + is-transparent = false + is-default = false + border = none + drop-zone = false + right-click = false + saved-params = "is-checked" + on-size = "" + text = "[Other]" + image = "" + command = "skincmd \"chemdispenser;amountc\"" + is-flat = false + stretch = false + is-checked = false + group = "" + button-type = pushbutton elem "energy" type = LABEL pos = 8,24 @@ -517,8 +627,8 @@ window "chemdispenser" text-wrap = false elem "child1" type = CHILD - pos = 0,40 - size = 340x440 + pos = 0,56 + size = 340x424 anchor1 = none anchor2 = none font-family = ""