Updating Database....
"
if(0.1) dat += "Processing and Updating Database...
"
if(0.2)
dat += "Constructing Prototype. Please Wait...
"
if(0.4)
dat += "Imprinting Circuit. Please Wait...
"
if(1.0) //Main Menu
dat += ""
if(d_disk.blueprint == null)
dat += "The disk has no data stored on it.
"
dat += "Operations: "
dat += " "
dat += "
R&D Console Device Linkage Menu:
"
dat += "
Re-sync with Nearby Devices"
dat += "
Linked Devices:
"
if(linked_destroy)
dat += "* Destructive Analyzer
Disconnect"
else
dat += "* No Destructive Analyzer Linked
"
if(linked_lathe)
dat += "* Protolathe
Disconnect"
else
dat += "* No Protolathe Linked
"
if(linked_imprinter)
dat += "* Circuit Imprinter
Disconnect"
else
dat += "* No Circuit Imprinter Linked
"
dat += "
"
////////////////////DESTRUCTIVE ANALYZER SCREENS////////////////////////////
if(2.0)
dat += "No Item Loaded. Standing-by...
"
if(2.2)
dat += "Item is neither reliable enough or broken enough to learn from.
"
/////////////////////PROTOLATHE SCREENS/////////////////////////
if(3.0)
dat += ""
dat += "
Protolathe Menu:
"
dat += "
Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
"
dat += "
Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
"
dat += "
"
dat += list_categories(linked_lathe.categories, 3.15)
//Grouping designs by categories, to improve readability
if(3.15)
dat += "
Main Menu"
dat += "
Protolathe Menu"
dat += "
Browsing [selected_category]:
"
dat += "
Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
"
dat += "
Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
"
var/coeff = linked_lathe.efficiency_coeff
for(var/datum/design/D in files.known_designs)
if(!(selected_category in D.category)|| !(D.build_type & PROTOLATHE))
continue
var/temp_material
var/c = 50
var/t
for(var/M in D.materials)
t = linked_lathe.check_mat(D, M)
temp_material += " | "
if (!t)
temp_material += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
else
temp_material += " [D.materials[M]/coeff] [CallMaterialName(M)]"
c = min(c,t)
if (c)
dat += "
[D.name]"
if(c >= 5.0)
dat += "
x5"
if(c >= 10.0)
dat += "
x10"
dat += "[temp_material]"
else
dat += "
[D.name][temp_material]"
if(D.locked)
dat += " |
LOCKED"
dat += "
"
dat += "
"
if(3.17) //Display search result
dat += "
Main Menu"
dat += "
Protolathe Menu"
dat += "
Search results:
"
dat += "
Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
"
dat += "
Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
"
var/coeff = linked_lathe.efficiency_coeff
for(var/datum/design/D in matching_designs)
var/temp_material
var/c = 50
var/t
for(var/M in D.materials)
t = linked_lathe.check_mat(D, M)
temp_material += " | "
if (!t)
temp_material += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
else
temp_material += " [D.materials[M]/coeff] [CallMaterialName(M)]"
c = min(c,t)
if (c)
dat += "
[D.name]"
if(c >= 5.0)
dat += "
x5"
if(c >= 10.0)
dat += "
x10"
dat += "[temp_material]"
else
dat += "
[D.name][temp_material]"
dat += "
"
dat += "
"
if(3.2) //Protolathe Material Storage Sub-menu
dat += "
Main Menu"
dat += "
Protolathe Menu"
dat += "
Material Storage:
"
//Metal
dat += "* [linked_lathe.m_amount] of Metal: "
if(linked_lathe.m_amount >= 3750) dat += "
Eject "
if(linked_lathe.m_amount >= 18750) dat += "
5x "
if(linked_lathe.m_amount >= 3750) dat += "
All"
dat += "
"
//Glass
dat += "* [linked_lathe.g_amount] of Glass: "
if(linked_lathe.g_amount >= 3750) dat += "
Eject "
if(linked_lathe.g_amount >= 18750) dat += "
5x "
if(linked_lathe.g_amount >= 3750) dat += "
All"
dat += "
"
//Gold
dat += "* [linked_lathe.gold_amount] of Gold: "
if(linked_lathe.gold_amount >= 2000) dat += "
Eject "
if(linked_lathe.gold_amount >= 10000) dat += "
5x "
if(linked_lathe.gold_amount >= 2000) dat += "
All"
dat += "
"
//Silver
dat += "* [linked_lathe.silver_amount] of Silver: "
if(linked_lathe.silver_amount >= 2000) dat += "
Eject "
if(linked_lathe.silver_amount >= 10000) dat += "
5x "
if(linked_lathe.silver_amount >= 2000) dat += "
All"
dat += "
"
//Plasma
dat += "* [linked_lathe.plasma_amount] of Solid Plasma: "
if(linked_lathe.plasma_amount >= 2000) dat += "
Eject "
if(linked_lathe.plasma_amount >= 10000) dat += "
5x "
if(linked_lathe.plasma_amount >= 2000) dat += "
All"
dat += "
"
//Uranium
dat += "* [linked_lathe.uranium_amount] of Uranium: "
if(linked_lathe.uranium_amount >= 2000) dat += "
Eject "
if(linked_lathe.uranium_amount >= 10000) dat += "
5x "
if(linked_lathe.uranium_amount >= 2000) dat += "
All"
dat += "
"
//Diamond
dat += "* [linked_lathe.diamond_amount] of Diamond: "
if(linked_lathe.diamond_amount >= 2000) dat += "
Eject "
if(linked_lathe.diamond_amount >= 10000) dat += "
5x "
if(linked_lathe.diamond_amount >= 2000) dat += "
All"
dat += "
"
//Bananium
dat += "* [linked_lathe.clown_amount] of Bananium: "
if(linked_lathe.clown_amount >= 2000) dat += "
Eject "
if(linked_lathe.clown_amount >= 10000) dat += "
5x "
if(linked_lathe.clown_amount >= 2000) dat += "
All"
dat += "
"
if(3.3)
dat += "
Main Menu"
dat += "
Protolathe Menu"
dat += "
Disposal All Chemicals in Storage"
dat += "
Chemical Storage:
"
for(var/datum/reagent/R in linked_lathe.reagents.reagent_list)
dat += "[R.name]: [R.volume]"
dat += "
Purge"
///////////////////CIRCUIT IMPRINTER SCREENS////////////////////
if(4.0)
dat += "
Main Menu
"
dat += "
NO CIRCUIT IMPRINTER LINKED TO CONSOLE
"
if(4.1)
dat += "
Main Menu"
dat += "
Material Storage"
dat += "
Chemical Storage"
dat += "
Circuit Imprinter Menu:
"
dat += "Material Amount: [linked_imprinter.TotalMaterials()]
"
dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
"
dat += "
"
dat += list_categories(linked_imprinter.categories, 4.15)
if(4.15)
dat += "
Main Menu"
dat += "
Circuit Imprinter Menu"
dat += "
Browsing [selected_category]:
"
dat += "Material Amount: [linked_imprinter.TotalMaterials()]
"
dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
"
var/coeff = linked_imprinter.efficiency_coeff
for(var/datum/design/D in files.known_designs)
if(!(selected_category in D.category) || !(D.build_type & IMPRINTER))
continue
var/temp_materials
var/check_materials = 1
for(var/M in D.materials)
temp_materials += " | "
if (!linked_imprinter.check_mat(D, M))
check_materials = 0
temp_materials += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
else
temp_materials += " [D.materials[M]/coeff] [CallMaterialName(M)]"
if (check_materials)
dat += "
[D.name][temp_materials]
"
else
dat += "
[D.name][temp_materials]
"
if(D.locked)
dat += " |
LOCKED"
dat += "
"
if(4.17)
dat += "
Main Menu"
dat += "
Circuit Imprinter Menu"
dat += "
Search results:
"
dat += "Material Amount: [linked_imprinter.TotalMaterials()]
"
dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
"
var/coeff = linked_imprinter.efficiency_coeff
for(var/datum/design/D in matching_designs)
var/temp_materials
var/check_materials = 1
for(var/M in D.materials)
temp_materials += " | "
if (!linked_imprinter.check_mat(D, M))
check_materials = 0
temp_materials += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
else
temp_materials += " [D.materials[M]/coeff] [CallMaterialName(M)]"
if (check_materials)
dat += "
[D.name][temp_materials]
"
else
dat += "
[D.name][temp_materials]
"
dat += "
"
if(4.2)
dat += "
Main Menu"
dat += "
Imprinter Menu"
dat += "
Disposal All Chemicals in Storage"
dat += "
Chemical Storage:
"
for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list)
dat += "[R.name]: [R.volume]"
dat += "
Purge"
if(4.3)
dat += "
Main Menu"
dat += "
Circuit Imprinter Menu"
dat += "
Material Storage:
"
//Glass
dat += "* [linked_imprinter.g_amount] glass: "
if(linked_imprinter.g_amount >= 3750) dat += "
Eject "
if(linked_imprinter.g_amount >= 18750) dat += "
5x "
if(linked_imprinter.g_amount >= 3750) dat += "
All"
dat += "
"
//Gold
dat += "* [linked_imprinter.gold_amount] gold: "
if(linked_imprinter.gold_amount >= 2000) dat += "
Eject "
if(linked_imprinter.gold_amount >= 10000) dat += "
5x "
if(linked_imprinter.gold_amount >= 2000) dat += "
All"
dat += "
"
//Diamond
dat += "* [linked_imprinter.diamond_amount] diamond: "
if(linked_imprinter.diamond_amount >= 2000) dat += "
Eject "
if(linked_imprinter.diamond_amount >= 10000) dat += "
5x "
if(linked_imprinter.diamond_amount >= 2000) dat += "
All"
dat += "
"
var/datum/browser/popup = new(user, "rndconsole", name, 700, 550)
popup.set_content(dat)
popup.open()
return
//helper proc, which return a table containing categories
/obj/machinery/computer/rdconsole/proc/list_categories(var/list/categories, var/menu_num as num)
if(!categories)
return
var/line_length = 1
var/dat = "
"
for(var/C in categories)
if(line_length > 2)
dat += "
"
line_length = 1
dat += "| [C] | "
line_length++
dat += "
"
return dat
/obj/machinery/computer/rdconsole/robotics
name = "Robotics R&D Console"
desc = "A console used to interface with R&D tools."
id = 2
req_access = null
req_access_txt = "29"
/obj/machinery/computer/rdconsole/core
name = "Core R&D Console"
desc = "A console used to interface with R&D tools."
id = 1