/obj/machinery/computer/material name = "material recombobulator" icon = 'icons/obj/computer.dmi' icon_state = "computer_generic" var/mob/using = null var/datum/material/editing = null var/obj/editing_obj = null New() ..() attackby(obj/item/W as obj, mob/user as mob) if(W.material != null) if(!W.material.canMix || (!istype(W,/obj/item/raw_material) && !istype(W,/obj/item/material_piece))) boutput(user, "This material can not be used in [src].") return if(!editing) src.visible_message("[user] puts [W] into [src]") user.drop_item() editing = W.material editing_obj = W W.loc = src else boutput(user, "There's already a material inside [src]") else boutput(user, "This object has no material.") return attack_ai(mob/user as mob) return attack_hand(user) attack_hand(mob/user as mob) if(stat & (BROKEN|NOPOWER)) return if(using && (!using.client || using.client.inactivity >= 1200 || get_dist(src, using) > 1)) using << browse(null, "window=materials") using = null if(using && using != user) boutput(user, "Somebody is already using that machine.") return. using = user //(fart) user.machine = src add_fingerprint(user) user << browse(grabResource("html/materialRecombobulator.html"), "window=materials;size=730x415;can_resize=0;can_minimize=0;can_close=0") onclose(user, "materials", src) spawn(10) callJsFunc(usr, "setRef", list("\ref[src]")) //This is shit but without it, it calls the JS before the window is open and doesn't work. return proc/handleRecipes() if(!editing || !editing_obj) return var/datum/material_recipe/RE = matchesMaterialRecipe(editing) if(RE) if(RE.result_item) var/atom/movable/A = new RE.result_item(src.loc) A.set_loc(src) editing = null del(editing_obj) editing_obj = A editing = A.material else if(length(RE.result_id)) editing = null editing_obj.removeMaterial() editing_obj.setMaterial(getCachedMaterial(RE.result_id)) else RE.apply_to(editing) editing_obj.setMaterial(editing_obj.material) return Topic(href, href_list) //boutput(world, href) if(!using || get_dist(using, src) > 1) using << browse(null, "window=materials") using = null return if(href_list["close"]) using = null else if(href_list["jscall"]) switch(href_list["jscall"]) if("refResearch") loadContent("Research") if("selMod") if(!editing) callJsFunc(usr, "showDialog", list("No material to edit. Please insert material into computer.")) return var/newhtml = "" switch(href_list["name"]) if("Wendigo thermal insulation") newhtml += "" newhtml += "" //Before editing.setProperty(PROP_THERMAL, max(editing.getProperty(PROP_THERMAL) - 10, 18)) editing.setProperty(PROP_INSTABILITY, editing.getProperty(PROP_INSTABILITY) + 10) editing_obj.setMaterial(editing_obj.material) handleRecipes() newhtml += "" //After newhtml += "
BEFORE
[generateMaterialInfo()]
AFTER
[generateMaterialInfo()]
" callJsFunc(usr, "setHtmlId", list("#tabs-3", newhtml)) if("Wendigo King thermal protection") newhtml += "" newhtml += "" //Before editing.setProperty(PROP_THERMAL, max(editing.getProperty(PROP_THERMAL) - 20, 10)) editing.setProperty(PROP_INSTABILITY, editing.getProperty(PROP_INSTABILITY) + 25) editing.addDelegate(editing.triggersOnLife, new /datum/materialProc/wendigo_temp_onlife()) editing_obj.setMaterial(editing_obj.material) handleRecipes() newhtml += "" //After newhtml += "
BEFORE
[generateMaterialInfo()]
AFTER
[generateMaterialInfo()]
" callJsFunc(usr, "setHtmlId", list("#tabs-3", newhtml)) if("Supernatural enhancement") newhtml += "" newhtml += "" //Before editing.color = "#FFFFFF" editing.setProperty(PROP_ENERGY, min(editing.getProperty(PROP_ENERGY) + 20, 95)) editing.addDelegate(editing.triggersOnAdd, new /datum/materialProc/ethereal_add()) editing.setProperty(PROP_INSTABILITY, editing.getProperty(PROP_INSTABILITY) + 33) editing_obj.setMaterial(editing_obj.material) handleRecipes() newhtml += "" //After newhtml += "
BEFORE
[generateMaterialInfo()]
AFTER
[generateMaterialInfo()]
" callJsFunc(usr, "setHtmlId", list("#tabs-3", newhtml)) if("closeWindow") usr << browse(null, "window=materials") using = null if("ejectMaterial") if(editing_obj) editing_obj.set_loc(src.loc) editing = null editing_obj = null if("loadTab") if(href_list["newTab"]) loadContent(href_list["newTab"]) if("research") if(href_list["id"] && materialsResearch.research.Find(href_list["id"])) var/datum/materialResearch/R = materialsResearch.research[href_list["id"]] var/error = R.canStart() if(!error) R.beginResearch() loadContent("Research") else callJsFunc(usr, "showDialog", list(error)) src.add_fingerprint(usr) callJsFunc(usr, "setRef", list("\ref[src]")) return proc/loadContent(var/content, var/divId) switch(content) if("View Material") if(src.editing) callJsFunc(usr, "setHtmlId", list(divId ? divId : "#tabs-2", "[generateMaterialInfo()]")) else callJsFunc(usr, "setHtmlId", list(divId ? divId : "#tabs-2", "No material loaded.")) if("Modify Material") var/scripts = "" var/newhtml = "" newhtml += {"