/obj/machinery/computer/nanite_chamber_control name = "nanite chamber control console" desc = "Controls a connected nanite chamber. Can inoculate nanites, load programs, and analyze existing nanite swarms." var/obj/machinery/nanite_chamber/chamber var/obj/item/disk/nanite_program/disk circuit = /obj/item/circuitboard/computer/nanite_chamber_control icon_screen = "nanite_chamber_control" ui_x = 380 ui_y = 570 /obj/machinery/computer/nanite_chamber_control/Initialize() . = ..() find_chamber() /obj/machinery/computer/nanite_chamber_control/proc/find_chamber() for(var/direction in GLOB.cardinals) var/C = locate(/obj/machinery/nanite_chamber, get_step(src, direction)) if(C) var/obj/machinery/nanite_chamber/NC = C chamber = NC NC.console = src /obj/machinery/computer/nanite_chamber_control/interact() if(!chamber) find_chamber() ..() /obj/machinery/computer/nanite_chamber_control/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "nanite_chamber_control", name, ui_x, ui_y, master_ui, state) ui.open() /obj/machinery/computer/nanite_chamber_control/ui_data() var/list/data = list() if(!chamber) data["status_msg"] = "No chamber detected." return data if(!chamber.occupant) data["status_msg"] = "No occupant detected." return data var/mob/living/L = chamber.occupant if(!(L.mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD))) data["status_msg"] = "Occupant not compatible with nanites." return data if(chamber.busy) data["status_msg"] = chamber.busy_message return data data["status_msg"] = null data["scan_level"] = chamber.scan_level data["locked"] = chamber.locked data["occupant_name"] = chamber.occupant.name SEND_SIGNAL(L, COMSIG_NANITE_UI_DATA, data, chamber.scan_level) return data /obj/machinery/computer/nanite_chamber_control/ui_act(action, params) if(..()) return switch(action) if("toggle_lock") chamber.locked = !chamber.locked chamber.update_icon() . = TRUE if("set_safety") var/threshold = text2num(params["value"]) if(!isnull(threshold)) chamber.set_safety(CLAMP(round(threshold, 1),0,500)) playsound(src, "terminal_type", 25, FALSE) chamber.occupant.investigate_log("'s nanites' safety threshold was set to [threshold] by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) . = TRUE if("set_cloud") var/cloud_id = text2num(params["value"]) if(!isnull(cloud_id)) chamber.set_cloud(CLAMP(round(cloud_id, 1),0,100)) playsound(src, "terminal_type", 25, FALSE) chamber.occupant.investigate_log("'s nanites' cloud id was set to [cloud_id] by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) . = TRUE if("connect_chamber") find_chamber() . = TRUE if("remove_nanites") playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE) chamber.remove_nanites() log_combat(usr, chamber.occupant, "cleared nanites from", null, "via [src]") chamber.occupant.investigate_log("'s nanites were cleared by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) . = TRUE if("nanite_injection") playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE) chamber.inject_nanites() log_combat(usr, chamber.occupant, "injected", null, "with nanites via [src]") chamber.occupant.investigate_log("was injected with nanites by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) . = TRUE