/**********************Mineral processing unit console**************************/ /obj/machinery/computer/smelting name = "ore processing console" icon = 'icons/obj/computer.dmi' icon_state = "orecomp" density = 1 anchored = 1 circuit = "/obj/item/weapon/circuitboard/smeltcomp" light_color = LIGHT_COLOR_BLUE req_access = list(access_mining) var/frequency = FREQ_DISPOSAL //Same as conveyors. var/smelter_tag = null var/datum/radio_frequency/radio_connection var/list/smelter_data //All the data we have about the smelter, since it uses radio connection based RC. var/obj/item/weapon/card/id/id //Ref to the inserted ID card (for claiming points via the smelter). /obj/machinery/computer/smelting/New() . = ..() if(ticker && ticker.current_state == 3) initialize() /obj/machinery/computer/smelting/initialize() set_frequency(frequency) /obj/machinery/computer/smelting/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) frequency = new_frequency if(frequency) radio_connection = radio_controller.add_object(src, frequency) /obj/machinery/computer/smelting/process() updateUsrDialog() /obj/machinery/computer/smelting/attack_ai(mob/user) add_hiddenprint(user) interact(user) /obj/machinery/computer/smelting/attack_hand(mob/user) add_fingerprint(user) if(stat & (NOPOWER | BROKEN) && id) //Power out/this thing is broken, but at least allow the guy to take his ID out if it's still in there. id.forceMove(get_turf(src)) user.put_in_hands(id) to_chat(user, "You pry the ID card out of \the [src]") id = null interact(user) /obj/machinery/computer/smelting/interact(mob/user) if(stat & (NOPOWER | BROKEN)) //It's broken ya derp. if(user.machine == src) user.unset_machine(src) return if(!smelter_data) request_status() if(!smelter_data) //Still no data. to_chat(user, "Unable to find an ore processing machine.") if(user.machine == src) user.unset_machine(src) return user.set_machine(src) var/dat = {"
"} var/datum/browser/popup = new(user, "console_processing_unit", name, 460, 620, src) popup.set_content(dat) popup.open() /obj/machinery/computer/smelting/Topic(href, href_list) . = ..() if(.) return usr.set_machine(src) src.add_fingerprint(usr) if(href_list["close"]) usr.unset_machine(src) return 1 if(href_list["toggle_power"]) send_signal(list("toggle_power" = 1)) request_status() return 1 if(href_list["eject"]) if(!id) return id.forceMove(get_turf(src)) if(usr.Adjacent(src)) usr.put_in_hands(id) id = null updateUsrDialog() return 1 if(href_list["claim"]) send_signal(list("claimcredits" = get_card_account(id))) request_status() return 1 if(href_list["insert"]) if(smelter_data && smelter_data["credits"] == -1) //No credit mode. return 1 if(id) to_chat(usr, "There is already an ID in the console!") return 1 if(!allowed(usr)) to_chat(usr, "The machine rejects your access credentials.") return 1 var/obj/item/weapon/card/id/I = usr.get_active_hand() if(istype(I)) if(usr.drop_item(I, src)) id = I updateUsrDialog() return 1 if(href_list["inc_priority"]) send_signal(list("inc_priority" = text2num(href_list["inc_priority"]))) updateUsrDialog() return 1 if(href_list["dec_priority"]) send_signal(list("dec_priority" = text2num(href_list["dec_priority"]))) updateUsrDialog() return 1 /obj/machinery/computer/smelting/attackby(var/obj/item/W, var/mob/user) if(istype(W, /obj/item/weapon/card/id)) if(smelter_data && smelter_data["credits"] == -1) //No credit mode. return 1 if(id) to_chat(usr, "There is already an ID in the console!") return 1 if(user.drop_item(W, src)) id = W updateUsrDialog() return 1 . = ..() //Just a little helper proc /obj/machinery/computer/smelting/proc/send_signal(list/data) if(!frequency) return var/datum/signal/signal = new /datum/signal signal.data["tag"] = smelter_tag signal.transmission_method = 1 //radio signal signal.source = src signal.data += data radio_connection.post_signal(src, signal) /obj/machinery/computer/smelting/receive_signal(datum/signal/signal) if(stat & (NOPOWER | BROKEN) || !signal || !signal.data["tag"] || signal.data["tag"] != smelter_tag) return if(signal.data["type"] != "smelter") //So I can forgo sanity, henk. return smelter_data = signal.data updateUsrDialog() /obj/machinery/computer/smelting/proc/request_status() smelter_data = null send_signal(list("sigtype" = "status")) /obj/machinery/computer/smelting/multitool_menu(var/mob/user, var/obj/item/device/multitool/P) return {"