[MIRROR] [READY] RND TECHWEBS + DEPARTMENTAL LATHES (#4014)
* [READY] RND TECHWEBS + DEPARTMENTAL LATHES * resetting all the maps because we can worry about them later. * Regexing * I'm fucked * Fixes * . * maps * bleh * ree * fixes
This commit is contained in:
committed by
kevinz000
parent
b5600cb91c
commit
cc0b768c72
@@ -4,7 +4,7 @@ a /datum/desgin on the linked R&D console. You can then print them out in a fasi
|
||||
using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
|
||||
*/
|
||||
/obj/machinery/r_n_d/circuit_imprinter
|
||||
/obj/machinery/rnd/circuit_imprinter
|
||||
name = "circuit imprinter"
|
||||
desc = "Manufactures circuit boards for the construction of machines."
|
||||
icon_state = "circuit_imprinter"
|
||||
@@ -12,6 +12,10 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
circuit = /obj/item/circuitboard/machine/circuit_imprinter
|
||||
|
||||
var/efficiency_coeff
|
||||
var/console_link = TRUE //can this link to a console?
|
||||
var/requires_console = TRUE
|
||||
|
||||
var/datum/component/material_container/materials //Store for hyper speed!
|
||||
|
||||
var/list/categories = list(
|
||||
"AI Modules",
|
||||
@@ -27,16 +31,15 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
"Computer Parts"
|
||||
)
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/Initialize()
|
||||
var/datum/component/material_container/materials
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/Initialize()
|
||||
materials = AddComponent(/datum/component/material_container, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND, MAT_METAL, MAT_BLUESPACE), 0,
|
||||
FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert))
|
||||
materials.precise_insertion = TRUE
|
||||
create_reagents(0)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/RefreshParts()
|
||||
/obj/machinery/rnd/circuit_imprinter/RefreshParts()
|
||||
reagents.maximum_volume = 0
|
||||
for(var/obj/item/reagent_containers/glass/G in component_parts)
|
||||
reagents.maximum_volume += G.volume
|
||||
@@ -52,11 +55,11 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
T += M.rating
|
||||
efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/structure/blob/B)
|
||||
/obj/machinery/rnd/circuit_imprinter/blob_act(obj/structure/blob/B)
|
||||
if (prob(50))
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
|
||||
/obj/machinery/rnd/circuit_imprinter/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
|
||||
var/list/all_materials = being_built.reagents_list + being_built.materials
|
||||
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
@@ -67,7 +70,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
return round(A / max(1, (all_materials[M]/efficiency_coeff)))
|
||||
|
||||
//we eject the materials upon deconstruction.
|
||||
/obj/machinery/r_n_d/circuit_imprinter/on_deconstruction()
|
||||
/obj/machinery/rnd/circuit_imprinter/on_deconstruction()
|
||||
for(var/obj/item/reagent_containers/glass/G in component_parts)
|
||||
reagents.trans_to(G, G.reagents.maximum_volume)
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
@@ -75,6 +78,52 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/disconnect_console()
|
||||
/obj/machinery/rnd/circuit_imprinter/disconnect_console()
|
||||
linked_console.linked_imprinter = null
|
||||
..()
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/proc/user_try_print_id(id)
|
||||
if((!linked_console && requires_console) || !id)
|
||||
return FALSE
|
||||
var/datum/design/D = (linked_console || requires_console)? linked_console.stored_research.researched_designs[id] : get_techweb_design_by_id(id)
|
||||
if(!istype(D))
|
||||
return FALSE
|
||||
|
||||
var/power = 1000
|
||||
for(var/M in D.materials)
|
||||
power += round(D.materials[M] / 5)
|
||||
power = max(4000, power)
|
||||
use_power(power)
|
||||
|
||||
var/list/efficient_mats = list()
|
||||
for(var/MAT in D.materials)
|
||||
efficient_mats[MAT] = D.materials[MAT]/efficiency_coeff
|
||||
|
||||
if(!materials.has_materials(efficient_mats))
|
||||
say("Not enough materials to complete prototype.")
|
||||
return FALSE
|
||||
for(var/R in D.reagents_list)
|
||||
if(!reagents.has_reagent(R, D.reagents_list[R]/efficiency_coeff))
|
||||
say("Not enough reagents to complete prototype.")
|
||||
return FALSE
|
||||
|
||||
busy = TRUE
|
||||
flick("circuit_imprinter_ani", src)
|
||||
materials.use_amount(efficient_mats)
|
||||
for(var/R in D.reagents_list)
|
||||
reagents.remove_reagent(R, D.reagents_list[R]/efficiency_coeff)
|
||||
|
||||
var/P = D.build_path
|
||||
addtimer(CALLBACK(src, .proc/reset_busy), 16)
|
||||
addtimer(CALLBACK(src, .proc/do_print, P, efficient_mats, D.dangerous_construction), 16)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/proc/do_print(path, list/matlist, notify_admins)
|
||||
if(notify_admins)
|
||||
if(usr)
|
||||
usr.investigate_log("built [path] at a circuit imprinter.", INVESTIGATE_RESEARCH)
|
||||
var/turf/T = get_turf(usr)
|
||||
message_admins("[key_name(usr)][ADMIN_JMP(T)] has built [path] at a circuit imprinter at [COORD(usr)]")
|
||||
var/obj/item/I = new path(get_turf(src))
|
||||
I.materials = matlist.Copy()
|
||||
SSblackbox.record_feedback("nested_tally", "circuit_printed", 1, list("[type]", "[path]"))
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
/obj/machinery/rnd/circuit_imprinter/department
|
||||
name = "Department Circuit Imprinter"
|
||||
desc = "A special circuit imprinter with a built in interface meant for departmental usage, with built in ExoSync recievers allowing it to print designs researched that match its ROM-encoded department type. Features a bluespace materials reciever for recieving materials without the hassle of running to mining!"
|
||||
icon_state = "circuit_imprinter"
|
||||
container_type = OPENCONTAINER_1
|
||||
circuit = /obj/item/circuitboard/machine/circuit_imprinter/department
|
||||
console_link = FALSE
|
||||
requires_console = FALSE
|
||||
|
||||
var/list/allowed_department_flags = DEPARTMENTAL_FLAG_ALL
|
||||
var/list/datum/design/cached_designs
|
||||
var/list/datum/design/matching_designs
|
||||
var/department_tag = "Unidentified" //used for material distribution among other things.
|
||||
var/datum/techweb/stored_research
|
||||
var/datum/techweb/host_research
|
||||
var/screen = DEPPRINTER_SCREEN_PRIMARY
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/science
|
||||
allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_SCIENCE
|
||||
department_tag = "Science"
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/Initialize()
|
||||
. = ..()
|
||||
stored_research = new
|
||||
cached_designs = list()
|
||||
host_research = SSresearch.science_tech
|
||||
matching_designs = list()
|
||||
update_research()
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/Destroy()
|
||||
QDEL_NULL(stored_research)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/user_try_print_id(id, amount)
|
||||
var/datum/design/D = get_techweb_design_by_id(id)
|
||||
if(!D || !(D.departmental_flags & allowed_department_flags))
|
||||
say("Warning: Printing failed. Please update the research data with the on-screen button!")
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
|
||||
var/datum/browser/popup = new(user, "rndconsole", name, 460, 550)
|
||||
popup.set_content(generate_ui())
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/search(string)
|
||||
matching_designs.Cut()
|
||||
for(var/v in stored_research.researched_designs)
|
||||
var/datum/design/D = stored_research.researched_designs[v]
|
||||
if(!(D.build_type & IMPRINTER) || !(D.departmental_flags & allowed_department_flags))
|
||||
continue
|
||||
if(findtext(D.name,string))
|
||||
matching_designs.Add(D)
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/update_research()
|
||||
host_research.copy_research_to(stored_research, TRUE)
|
||||
update_designs()
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/update_designs()
|
||||
cached_designs.Cut()
|
||||
for(var/i in stored_research.researched_designs)
|
||||
var/datum/design/d = stored_research.researched_designs[i]
|
||||
if((d.departmental_flags & allowed_department_flags) && (d.build_type & IMPRINTER))
|
||||
cached_designs |= d
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/generate_ui()
|
||||
var/list/ui = list()
|
||||
ui += ui_header()
|
||||
switch(screen)
|
||||
if(DEPPRINTER_SCREEN_MATERIALS)
|
||||
ui += ui_materials()
|
||||
if(DEPPRINTER_SCREEN_CHEMICALS)
|
||||
ui += ui_chemicals()
|
||||
if(DEPPRINTER_SCREEN_SEARCH)
|
||||
ui += ui_search()
|
||||
else
|
||||
ui += ui_department_imprinter()
|
||||
for(var/i in 1 to length(ui))
|
||||
if(!findtextEx(ui[i], RDSCREEN_NOBREAK))
|
||||
ui[i] += "<br>"
|
||||
ui[i] = replacetextEx(ui[i], RDSCREEN_NOBREAK, "")
|
||||
return ui.Join("")
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/ui_search() //Legacy code
|
||||
var/list/l = list()
|
||||
l += "<h2>Search Results:</h2>"
|
||||
l += "<form name='search' action='?src=[REF(src)]'>\
|
||||
<input type='hidden' name='src' value='[REF(src)]'>\
|
||||
<input type='hidden' name='search' value='to_search'>\
|
||||
<input type='text' name='to_search'>\
|
||||
<input type='submit' value='Search'>\
|
||||
</form><HR>"
|
||||
var/coeff = efficiency_coeff
|
||||
for(var/datum/design/D in matching_designs)
|
||||
var/temp_materials
|
||||
var/check_materials = TRUE
|
||||
var/all_materials = D.materials + D.reagents_list
|
||||
for(var/M in all_materials)
|
||||
temp_materials += " | "
|
||||
if (!check_mat(D, M))
|
||||
check_materials = FALSE
|
||||
temp_materials += " <span class='bad'>[all_materials[M]/coeff] [CallMaterialName(M)]</span>"
|
||||
else
|
||||
temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]"
|
||||
if (check_materials)
|
||||
l += "<A href='?src=[REF(src)];imprint=[D.id]'>[D.name]</A>[temp_materials]"
|
||||
else
|
||||
l += "<span class='linkOff'>[D.name]</span>[temp_materials]"
|
||||
l += "</div>"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/ui_department_imprinter()
|
||||
var/list/l = list()
|
||||
var/coeff = efficiency_coeff
|
||||
l += "<form name='search' action='?src=[REF(src)]'>\
|
||||
<input type='hidden' name='src' value='[REF(src)]'>\
|
||||
<input type='hidden' name='search' value='to_search'>\
|
||||
<input type='text' name='to_search'>\
|
||||
<input type='submit' value='Search'>\
|
||||
</form><HR>"
|
||||
for(var/datum/design/D in cached_designs)
|
||||
var/temp_materials
|
||||
var/check_materials = TRUE
|
||||
var/all_materials = D.materials + D.reagents_list
|
||||
for(var/M in all_materials)
|
||||
temp_materials += " | "
|
||||
if (!check_mat(D, M))
|
||||
check_materials = FALSE
|
||||
temp_materials += " <span class='bad'>[all_materials[M]/coeff] [CallMaterialName(M)]</span>"
|
||||
else
|
||||
temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]"
|
||||
if (check_materials)
|
||||
l += "<A href='?src=[REF(src)];imprint=[D.id]'>[D.name]</A>[temp_materials]"
|
||||
else
|
||||
l += "<span class='linkOff'>[D.name]</span>[temp_materials]"
|
||||
l += "</div>"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/ui_header()
|
||||
var/list/l = list()
|
||||
l += "<h2>Nanotrasen Department Circuit Imprinter: [department_tag]</h2>[RDSCREEN_NOBREAK]"
|
||||
l += "<div class='statusDisplay'><b>Connected Technology database: [host_research == SSresearch.science_tech? "Nanotrasen" : "Third Party"]"
|
||||
l += "Security protocols: [emagged? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
|
||||
l += "<A href='?src=[REF(src)];switch_screen=[DEPPRINTER_SCREEN_MATERIALS]'><B>Material Amount:</B> [materials.total_amount] / [materials.max_amount]</A>"
|
||||
l += "<A href='?src=[REF(src)];switch_screen=[DEPPRINTER_SCREEN_CHEMICALS]'><B>Chemical volume:</B> [reagents.total_volume] / [reagents.maximum_volume]</A>"
|
||||
l += "<a href='?src=[REF(src)];sync_research=1'>Synchronize Research</a>"
|
||||
l += "<a href='?src=[REF(src)];switch_screen=[DEPPRINTER_SCREEN_PRIMARY]'>Main Screen</a></div>[RDSCREEN_NOBREAK]"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/ui_materials()
|
||||
var/list/l = list()
|
||||
l += "<div class='statusDisplay'><h3>Material Storage:</h3>"
|
||||
for(var/mat_id in materials.materials)
|
||||
var/datum/material/M = materials.materials[mat_id]
|
||||
l += "* [M.amount] of [M.name]: "
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=1'>Eject</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=5'>5x</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=50'>All</A>[RDSCREEN_NOBREAK]"
|
||||
l += ""
|
||||
l += "</div>[RDSCREEN_NOBREAK]"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/proc/ui_chemicals()
|
||||
var/list/l = list()
|
||||
l += "<div class='statusDisplay'><A href='?src=[REF(src)];disposeall=1'>Disposal All Chemicals in Storage</A>"
|
||||
l += "<h3>Chemical Storage:</h3>"
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
l += "[R.name]: [R.volume]"
|
||||
l += "<A href='?src=[REF(src)];dispose=[R.id]'>Purge</A>"
|
||||
l += "</div>"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/circuit_imprinter/department/Topic(raw, ls)
|
||||
if(..())
|
||||
return
|
||||
add_fingerprint(usr)
|
||||
usr.set_machine(src)
|
||||
if(ls["switch_screen"])
|
||||
screen = text2num(ls["switch_screen"])
|
||||
if(ls["imprint"]) //Causes the circuit_imprinter to build something.
|
||||
if(busy)
|
||||
say("Warning: Fabricators busy!")
|
||||
else
|
||||
user_try_print_id(ls["imprint"])
|
||||
if(ls["search"]) //Search for designs with name matching pattern
|
||||
search(ls["to_search"])
|
||||
screen = DEPPRINTER_SCREEN_SEARCH
|
||||
if(ls["sync_research"])
|
||||
update_research()
|
||||
say("Synchronizing research with host technology database.")
|
||||
if(ls["dispose"]) //Causes the protolathe to dispose of a single reagent (all of it)
|
||||
reagents.del_reagent(ls["dispose"])
|
||||
if(ls["disposeall"]) //Causes the protolathe to dispose of all it's reagents.
|
||||
reagents.clear_reagents()
|
||||
if(ls["ejectsheet"]) //Causes the protolathe to eject a sheet of material
|
||||
materials.retrieve_sheets(text2num(ls["eject_amt"]), ls["ejectsheet"])
|
||||
@@ -0,0 +1,247 @@
|
||||
/obj/machinery/rnd/protolathe/department
|
||||
name = "department protolathe"
|
||||
desc = "A special protolathe with a built in interface meant for departmental usage, with built in ExoSync recievers allowing it to print designs researched that match its ROM-encoded department type. Features a bluespace materials reciever for recieving materials without the hassle of running to mining!"
|
||||
icon_state = "protolathe"
|
||||
container_type = OPENCONTAINER_1
|
||||
circuit = /obj/item/circuitboard/machine/protolathe/department
|
||||
console_link = FALSE
|
||||
requires_console = FALSE
|
||||
|
||||
var/list/allowed_department_flags = DEPARTMENTAL_FLAG_ALL
|
||||
var/list/datum/design/cached_designs
|
||||
var/list/datum/design/matching_designs
|
||||
var/department_tag = "Unidentified" //used for material distribution among other things.
|
||||
var/datum/techweb/stored_research
|
||||
var/datum/techweb/host_research
|
||||
var/screen = DEPLATHE_SCREEN_PRIMARY
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/engineering
|
||||
allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_ENGINEERING
|
||||
department_tag = "Engineering"
|
||||
circuit = /obj/item/circuitboard/machine/protolathe/department/engineering
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/service
|
||||
allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_SERVICE
|
||||
department_tag = "Service"
|
||||
circuit = /obj/item/circuitboard/machine/protolathe/department/service
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/medical
|
||||
allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_MEDICAL
|
||||
department_tag = "Medical"
|
||||
circuit = /obj/item/circuitboard/machine/protolathe/department/medical
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/cargo
|
||||
allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_CARGO
|
||||
department_tag = "Cargo"
|
||||
circuit = /obj/item/circuitboard/machine/protolathe/department/cargo
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/science
|
||||
allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_SCIENCE
|
||||
department_tag = "Science"
|
||||
circuit = /obj/item/circuitboard/machine/protolathe/department/science
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/security
|
||||
allowed_department_flags = DEPARTMENTAL_FLAG_ALL|DEPARTMENTAL_FLAG_SECURITY
|
||||
department_tag = "Security"
|
||||
circuit = /obj/item/circuitboard/machine/protolathe/department/security
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/Initialize()
|
||||
. = ..()
|
||||
matching_designs = list()
|
||||
cached_designs = list()
|
||||
stored_research = new
|
||||
host_research = SSresearch.science_tech
|
||||
update_research()
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/Destroy()
|
||||
QDEL_NULL(stored_research)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/user_try_print_id(id, amount)
|
||||
var/datum/design/D = get_techweb_design_by_id(id)
|
||||
if(!D || !(D.departmental_flags & allowed_department_flags))
|
||||
say("Warning: Printing failed. Please update the research data with the on-screen button!")
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/interact(mob/user)
|
||||
user.set_machine(src)
|
||||
var/datum/browser/popup = new(user, "rndconsole", name, 460, 550)
|
||||
popup.set_content(generate_ui())
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/search(string)
|
||||
matching_designs.Cut()
|
||||
for(var/v in stored_research.researched_designs)
|
||||
var/datum/design/D = stored_research.researched_designs[v]
|
||||
if(!(D.build_type & PROTOLATHE) || !(D.departmental_flags & allowed_department_flags))
|
||||
continue
|
||||
if(findtext(D.name,string))
|
||||
matching_designs.Add(D)
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/update_research()
|
||||
host_research.copy_research_to(stored_research, TRUE)
|
||||
update_designs()
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/update_designs()
|
||||
cached_designs.Cut()
|
||||
for(var/i in stored_research.researched_designs)
|
||||
var/datum/design/d = stored_research.researched_designs[i]
|
||||
if((d.departmental_flags & allowed_department_flags) && (d.build_type & PROTOLATHE))
|
||||
cached_designs |= d
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/generate_ui()
|
||||
var/list/ui = list()
|
||||
ui += ui_header()
|
||||
switch(screen)
|
||||
if(DEPLATHE_SCREEN_MATERIALS)
|
||||
ui += ui_materials()
|
||||
if(DEPLATHE_SCREEN_CHEMICALS)
|
||||
ui += ui_chemicals()
|
||||
if(DEPLATHE_SCREEN_SEARCH)
|
||||
ui += ui_search()
|
||||
else
|
||||
ui += ui_department_lathe()
|
||||
for(var/i in 1 to length(ui))
|
||||
if(!findtextEx(ui[i], RDSCREEN_NOBREAK))
|
||||
ui[i] += "<br>"
|
||||
ui[i] = replacetextEx(ui[i], RDSCREEN_NOBREAK, "")
|
||||
return ui.Join("")
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/ui_search() //Legacy code
|
||||
var/list/l = list()
|
||||
var/coeff = efficiency_coeff
|
||||
l += "<h2>Search Results:</h2>"
|
||||
l += "<form name='search' action='?src=[REF(src)]'>\
|
||||
<input type='hidden' name='src' value='[REF(src)]'>\
|
||||
<input type='hidden' name='search' value='to_search'>\
|
||||
<input type='text' name='to_search'>\
|
||||
<input type='submit' value='Search'>\
|
||||
</form><HR>"
|
||||
for(var/datum/design/D in matching_designs)
|
||||
var/temp_material
|
||||
var/c = 50
|
||||
var/t
|
||||
var/all_materials = D.materials + D.reagents_list
|
||||
for(var/M in all_materials)
|
||||
t = check_mat(D, M)
|
||||
temp_material += " | "
|
||||
if (t < 1)
|
||||
temp_material += "<span class='bad'>[all_materials[M]*coeff] [CallMaterialName(M)]</span>"
|
||||
else
|
||||
temp_material += " [all_materials[M]*coeff] [CallMaterialName(M)]"
|
||||
c = min(c,t)
|
||||
|
||||
if (c >= 1)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=1'>[D.name]</A>[RDSCREEN_NOBREAK]"
|
||||
if(c >= 5)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=5'>x5</A>[RDSCREEN_NOBREAK]"
|
||||
if(c >= 10)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=10'>x10</A>[RDSCREEN_NOBREAK]"
|
||||
l += "[temp_material][RDSCREEN_NOBREAK]"
|
||||
else
|
||||
l += "<span class='linkOff'>[D.name]</span>[temp_material][RDSCREEN_NOBREAK]"
|
||||
l += ""
|
||||
l += "</div>"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/ui_department_lathe()
|
||||
var/list/l = list()
|
||||
var/coeff = efficiency_coeff
|
||||
l += "<form name='search' action='?src=[REF(src)]'>\
|
||||
<input type='hidden' name='src' value='[REF(src)]'>\
|
||||
<input type='hidden' name='search' value='to_search'>\
|
||||
<input type='text' name='to_search'>\
|
||||
<input type='submit' value='Search'>\
|
||||
</form><HR>"
|
||||
for(var/datum/design/D in cached_designs)
|
||||
var/temp_material
|
||||
var/c = 50
|
||||
var/t
|
||||
var/all_materials = D.materials + D.reagents_list
|
||||
for(var/M in all_materials)
|
||||
t = check_mat(D, M)
|
||||
temp_material += " | "
|
||||
if (t < 1)
|
||||
temp_material += "<span class='bad'>[all_materials[M]*coeff] [CallMaterialName(M)]</span>"
|
||||
else
|
||||
temp_material += " [all_materials[M]*coeff] [CallMaterialName(M)]"
|
||||
c = min(c,t)
|
||||
|
||||
if (c >= 1)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=1'>[D.name]</A>[RDSCREEN_NOBREAK]"
|
||||
if(c >= 5)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=5'>x5</A>[RDSCREEN_NOBREAK]"
|
||||
if(c >= 10)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=10'>x10</A>[RDSCREEN_NOBREAK]"
|
||||
l += "[temp_material][RDSCREEN_NOBREAK]"
|
||||
else
|
||||
l += "<span class='linkOff'>[D.name]</span>[temp_material][RDSCREEN_NOBREAK]"
|
||||
l += ""
|
||||
l += "</div>"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/ui_header()
|
||||
var/list/l = list()
|
||||
l += "<h2>Nanotrasen Department Lathe: [department_tag]</h2>[RDSCREEN_NOBREAK]"
|
||||
l += "<div class='statusDisplay'><b>Connected Technology database: [host_research == SSresearch.science_tech? "Nanotrasen" : "Third Party"]"
|
||||
l += "Security protocols: [emagged? "<font color='red'>Disabled</font>" : "<font color='green'>Enabled</font>"]"
|
||||
l += "<A href='?src=[REF(src)];switch_screen=[DEPLATHE_SCREEN_MATERIALS]'><B>Material Amount:</B> [materials.total_amount] / [materials.max_amount]</A>"
|
||||
l += "<A href='?src=[REF(src)];switch_screen=[DEPLATHE_SCREEN_CHEMICALS]'><B>Chemical volume:</B> [reagents.total_volume] / [reagents.maximum_volume]</A>"
|
||||
l += "<a href='?src=[REF(src)];sync_research=1'>Synchronize Research</a>"
|
||||
l += "<a href='?src=[REF(src)];switch_screen=[DEPLATHE_SCREEN_PRIMARY]'>Main Screen</a></div>[RDSCREEN_NOBREAK]"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/ui_materials()
|
||||
var/list/l = list()
|
||||
l += "<div class='statusDisplay'><h3>Material Storage:</h3>"
|
||||
for(var/mat_id in materials.materials)
|
||||
var/datum/material/M = materials.materials[mat_id]
|
||||
l += "* [M.amount] of [M.name]: "
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=1'>Eject</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=5'>5x</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=50'>All</A>[RDSCREEN_NOBREAK]"
|
||||
l += ""
|
||||
l += "</div>[RDSCREEN_NOBREAK]"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/proc/ui_chemicals()
|
||||
var/list/l = list()
|
||||
l += "<div class='statusDisplay'><A href='?src=[REF(src)];disposeall=1'>Disposal All Chemicals in Storage</A>"
|
||||
l += "<h3>Chemical Storage:</h3>"
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
l += "[R.name]: [R.volume]"
|
||||
l += "<A href='?src=[REF(src)];dispose=[R.id]'>Purge</A>"
|
||||
l += "</div>"
|
||||
return l
|
||||
|
||||
/obj/machinery/rnd/protolathe/department/Topic(raw, ls)
|
||||
if(..())
|
||||
return
|
||||
add_fingerprint(usr)
|
||||
usr.set_machine(src)
|
||||
if(ls["switch_screen"])
|
||||
screen = text2num(ls["switch_screen"])
|
||||
if(ls["build"]) //Causes the Protolathe to build something.
|
||||
if(busy)
|
||||
say("Warning: Fabricators busy!")
|
||||
else
|
||||
user_try_print_id(ls["build"], ls["amount"])
|
||||
if(ls["search"]) //Search for designs with name matching pattern
|
||||
search(ls["to_search"])
|
||||
screen = DEPLATHE_SCREEN_SEARCH
|
||||
if(ls["sync_research"])
|
||||
update_research()
|
||||
say("Synchronizing research with host technology database.")
|
||||
if(ls["dispose"]) //Causes the protolathe to dispose of a single reagent (all of it)
|
||||
reagents.del_reagent(ls["dispose"])
|
||||
if(ls["disposeall"]) //Causes the protolathe to dispose of all it's reagents.
|
||||
reagents.clear_reagents()
|
||||
if(ls["ejectsheet"]) //Causes the protolathe to eject a sheet of material
|
||||
materials.retrieve_sheets(text2num(ls["eject_amt"]), ls["ejectsheet"])
|
||||
updateUsrDialog()
|
||||
@@ -26,11 +26,12 @@ other types of metals and chemistry for reagents).
|
||||
- Add the AUTOLATHE tag to
|
||||
*/
|
||||
|
||||
//DESIGNS ARE GLOBAL. DO NOT CREATE OR DESTROY THEM AT RUNTIME OUTSIDE OF INIT, JUST REFERENCE THEM TO WHATEVER YOU'RE DOING!
|
||||
|
||||
/datum/design //Datum for object designs, used in construction
|
||||
var/name = "Name" //Name of the created object.
|
||||
var/desc = "Desc" //Description of the created object.
|
||||
var/id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols
|
||||
var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements.
|
||||
var/id = DESIGN_ID_IGNORE //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols
|
||||
var/build_type = null //Flag as to what kind machine the design is built in. See defines.
|
||||
var/list/materials = list() //List of materials. Format: "id" = amount.
|
||||
var/construction_time //Amount of time required for building the object
|
||||
@@ -40,7 +41,12 @@ other types of metals and chemistry for reagents).
|
||||
var/list/reagents_list = list() //List of reagents. Format: "id" = amount.
|
||||
var/maxstack = 1
|
||||
var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe
|
||||
var/dangerous_construction = FALSE //notify and log for admin investigations if this is printed.
|
||||
var/departmental_flags = NONE //bitflags for deplathes.
|
||||
|
||||
/datum/design/Destroy()
|
||||
CRASH("DESIGN DATUMS SHOULD NOT EVER BE DESTROYED AS THEY ARE ONLY MEANT TO BE IN A GLOBAL LIST AND REFERENCED FOR US.")
|
||||
return ..()
|
||||
|
||||
////////////////////////////////////////
|
||||
//Disks for transporting design datums//
|
||||
@@ -66,609 +72,3 @@ other types of metals and chemistry for reagents).
|
||||
desc = "A disk for storing device design data for construction in lathes. This one has extra storage space."
|
||||
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER = 50)
|
||||
max_blueprints = 5
|
||||
|
||||
///////////////////////////////////
|
||||
/////Non-Board Computer Stuff//////
|
||||
///////////////////////////////////
|
||||
|
||||
/datum/design/intellicard
|
||||
name = "Intellicard AI Transportation System"
|
||||
desc = "Allows for the construction of an intellicard."
|
||||
id = "intellicard"
|
||||
req_tech = list("programming" = 3, "materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 200)
|
||||
build_path = /obj/item/device/aicard
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/paicard
|
||||
name = "Personal Artificial Intelligence Card"
|
||||
desc = "Allows for the construction of a pAI Card."
|
||||
id = "paicard"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
build_path = /obj/item/device/paicard
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/integrated_printer
|
||||
name = "Integrated circuits printer"
|
||||
desc = "This machine provides all neccesary things for circuitry."
|
||||
id = "icprinter"
|
||||
req_tech = list("programming" = 2,"materials" = 2, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 5000, MAT_METAL = 5000)
|
||||
build_path = /obj/item/device/integrated_circuit_printer
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/advupdisk
|
||||
name = "Upgrade disk-advanced circuits"
|
||||
desc = "Upgrade disk for integrated circuits printer.Allows advanced designs."
|
||||
id = "udiskadv"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
build_path = /obj/item/disk/integrated_circuit/upgrade/advanced
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/cloneupisk
|
||||
name = "Upgrade disk-assembly cloning"
|
||||
desc = "Upgrade disk for integrated circuits printer.Allows assembly cloning."
|
||||
id = "udiskclone"
|
||||
req_tech = list("programming" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
build_path = /obj/item/disk/integrated_circuit/upgrade/clone
|
||||
category = list("Electronics")
|
||||
|
||||
////////////////////////////////////////
|
||||
//////////Disk Construction Disks///////
|
||||
////////////////////////////////////////
|
||||
/datum/design/design_disk
|
||||
name = "Design Storage Disk"
|
||||
desc = "Produce additional disks for storing device designs."
|
||||
id = "design_disk"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
build_path = /obj/item/disk/design_disk
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/design_disk_adv
|
||||
name = "Advanced Design Storage Disk"
|
||||
desc = "Produce additional disks for storing device designs."
|
||||
id = "design_disk_adv"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
|
||||
build_path = /obj/item/disk/design_disk/adv
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/tech_disk
|
||||
name = "Technology Data Storage Disk"
|
||||
desc = "Produce additional disks for storing technology data."
|
||||
id = "tech_disk"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
build_path = /obj/item/disk/tech_disk
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/tech_disk_adv
|
||||
name = "Advanced Technology Data Storage Disk"
|
||||
desc = "Produce disks with extra storage capacity for storing technology data."
|
||||
id = "tech_disk_adv"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
|
||||
build_path = /obj/item/disk/tech_disk/adv
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/tech_disk_super_adv
|
||||
name = "Quantum Technology Data Storage Disk"
|
||||
desc = "Produce disks with extremely large storage capacity for storing technology data."
|
||||
id = "tech_disk_super_adv"
|
||||
req_tech = list("programming" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=100, MAT_GOLD=100, MAT_BLUESPACE = 100)
|
||||
build_path = /obj/item/disk/tech_disk/super_adv
|
||||
category = list("Electronics")
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////////Mining//////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/drill
|
||||
name = "Mining Drill"
|
||||
desc = "Yours is the drill that will pierce through the rock walls."
|
||||
id = "drill"
|
||||
req_tech = list("materials" = 2, "powerstorage" = 2, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000) //expensive, but no need for miners.
|
||||
build_path = /obj/item/pickaxe/drill
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/drill_diamond
|
||||
name = "Diamond-Tipped Mining Drill"
|
||||
desc = "Yours is the drill that will pierce the heavens!"
|
||||
id = "drill_diamond"
|
||||
req_tech = list("materials" = 6, "powerstorage" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) //Yes, a whole diamond is needed.
|
||||
build_path = /obj/item/pickaxe/drill/diamonddrill
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/plasmacutter
|
||||
name = "Plasma Cutter"
|
||||
desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff."
|
||||
id = "plasmacutter"
|
||||
req_tech = list("materials" = 3, "plasmatech" = 3, "magnets" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_GLASS = 500, MAT_PLASMA = 400)
|
||||
build_path = /obj/item/gun/energy/plasmacutter
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/plasmacutter_adv
|
||||
name = "Advanced Plasma Cutter"
|
||||
desc = "It's an advanced plasma cutter, oh my god."
|
||||
id = "plasmacutter_adv"
|
||||
req_tech = list("materials" = 4, "plasmatech" = 4, "engineering" = 2, "combat" = 3, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_PLASMA = 2000, MAT_GOLD = 500)
|
||||
build_path = /obj/item/gun/energy/plasmacutter/adv
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/jackhammer
|
||||
name = "Sonic Jackhammer"
|
||||
desc = "Essentially a handheld planet-cracker. Can drill through walls with ease as well."
|
||||
id = "jackhammer"
|
||||
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 6, "magnets" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_DIAMOND = 6000)
|
||||
build_path = /obj/item/pickaxe/drill/jackhammer
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/superresonator
|
||||
name = "Upgraded Resonator"
|
||||
desc = "An upgraded version of the resonator that allows more fields to be active at once."
|
||||
id = "superresonator"
|
||||
req_tech = list("materials" = 4, "powerstorage" = 3, "engineering" = 3, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/resonator/upgraded
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/trigger_guard_mod
|
||||
name = "Kinetic Accelerator Trigger Guard Mod"
|
||||
desc = "A device which allows kinetic accelerators to be wielded by any organism."
|
||||
id = "triggermod"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/trigger_guard
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/damage_mod
|
||||
name = "Kinetic Accelerator Damage Mod"
|
||||
desc = "A device which allows kinetic accelerators to deal more damage."
|
||||
id = "damagemod"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/damage
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/cooldown_mod
|
||||
name = "Kinetic Accelerator Cooldown Mod"
|
||||
desc = "A device which decreases the cooldown of a Kinetic Accelerator."
|
||||
id = "cooldownmod"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/cooldown
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/range_mod
|
||||
name = "Kinetic Accelerator Range Mod"
|
||||
desc = "A device which allows kinetic accelerators to fire at a further range."
|
||||
id = "rangemod"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/range
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/hyperaccelerator
|
||||
name = "Kinetic Accelerator Mining AoE Mod"
|
||||
desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock."
|
||||
id = "hypermod"
|
||||
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////Blue Space/////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/beacon
|
||||
name = "Tracking Beacon"
|
||||
desc = "A blue space tracking beacon."
|
||||
id = "beacon"
|
||||
req_tech = list("bluespace" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
build_path = /obj/item/device/radio/beacon
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
/datum/design/bag_holding
|
||||
name = "Bag of Holding"
|
||||
desc = "A backpack that opens into a localized pocket of bluespace."
|
||||
id = "bag_holding"
|
||||
req_tech = list("bluespace" = 7, "materials" = 5, "engineering" = 5, "plasmatech" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250, MAT_BLUESPACE = 2000)
|
||||
build_path = /obj/item/storage/backpack/holding
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
/datum/design/bluespace_crystal
|
||||
name = "Artificial Bluespace Crystal"
|
||||
desc = "A small blue crystal with mystical properties."
|
||||
id = "bluespace_crystal"
|
||||
req_tech = list("bluespace" = 3, "materials" = 6, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500)
|
||||
build_path = /obj/item/ore/bluespace_crystal/artificial
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
/datum/design/telesci_gps
|
||||
name = "GPS Device"
|
||||
desc = "Little thingie that can track its position at all times."
|
||||
id = "telesci_gps"
|
||||
req_tech = list("materials" = 2, "bluespace" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/device/gps
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
/datum/design/miningsatchel_holding
|
||||
name = "Mining Satchel of Holding"
|
||||
desc = "A mining satchel that can hold an infinite amount of ores."
|
||||
id = "minerbag_holding"
|
||||
req_tech = list("bluespace" = 4, "materials" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 250, MAT_URANIUM = 500) //quite cheap, for more convenience
|
||||
build_path = /obj/item/storage/bag/ore/holding
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////////HUDs////////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/health_hud
|
||||
name = "Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
|
||||
id = "health_hud"
|
||||
req_tech = list("biotech" = 2, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/health
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/health_hud_night
|
||||
name = "Night Vision Health Scanner HUD"
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
id = "health_hud_night"
|
||||
req_tech = list("biotech" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/night
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/security_hud
|
||||
name = "Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
|
||||
id = "security_hud"
|
||||
req_tech = list("magnets" = 3, "combat" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/security
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/security_hud_night
|
||||
name = "Night Vision Security HUD"
|
||||
desc = "A heads-up display which provides id data and vision in complete darkness."
|
||||
id = "security_hud_night"
|
||||
req_tech = list("combat" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/night
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/diagnostic_hud
|
||||
name = "Diagnostic HUD"
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery."
|
||||
id = "dianostic_hud"
|
||||
req_tech = list("magnets" = 3, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/diagnostic_hud_night
|
||||
name = "Night Vision Diagnostic HUD"
|
||||
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
|
||||
id = "dianostic_hud_night"
|
||||
req_tech = list("magnets" = 5, "plasmatech" = 4, "engineering" = 6, "powerstorage" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
|
||||
category = list("Equipment")
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////////Test///////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/* test
|
||||
name = "Test Design"
|
||||
desc = "A design to test the new protolathe."
|
||||
id = "protolathe_test"
|
||||
build_type = PROTOLATHE
|
||||
req_tech = list("materials" = 1)
|
||||
materials = list(MAT_GOLD = 3000, "iron" = 15, "copper" = 10, MAT_SILVER = 2500)
|
||||
build_path = /obj/item/banhammer"
|
||||
category = list("Weapons") */
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////////Misc///////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/welding_mask
|
||||
name = "Welding Gas Mask"
|
||||
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
|
||||
id = "weldingmask"
|
||||
req_tech = list("materials" = 2, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/clothing/mask/gas/welding
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/portaseeder
|
||||
name = "Portable Seed Extractor"
|
||||
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
|
||||
build_type = PROTOLATHE
|
||||
req_tech = list("biotech" = 3, "engineering" = 2)
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
|
||||
build_path = /obj/item/storage/bag/plants/portaseeder
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/air_horn
|
||||
name = "Air Horn"
|
||||
desc = "Damn son, where'd you find this?"
|
||||
id = "air_horn"
|
||||
req_tech = list("materials" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000)
|
||||
build_path = /obj/item/bikehorn/airhorn
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/mesons
|
||||
name = "Optical Meson Scanners"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
|
||||
id = "mesons"
|
||||
req_tech = list("magnets" = 2, "engineering" = 2, "plasmatech" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/engine_goggles
|
||||
name = "Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
|
||||
id = "engine_goggles"
|
||||
req_tech = list("materials" = 4, "magnets" = 3, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/tray_goggles
|
||||
name = "Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
|
||||
id = "tray_goggles"
|
||||
req_tech = list("materials" = 3, "magnets" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/nvgmesons
|
||||
name = "Night Vision Optical Meson Scanners"
|
||||
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
|
||||
id = "nvgmesons"
|
||||
req_tech = list("magnets" = 5, "plasmatech" = 5, "engineering" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/meson/night
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/night_vision_goggles
|
||||
name = "Night Vision Goggles"
|
||||
desc = "Goggles that let you see through darkness unhindered."
|
||||
id = "night_visision_goggles"
|
||||
req_tech = list("materials" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/magboots
|
||||
name = "Magnetic Boots"
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
id = "magboots"
|
||||
req_tech = list("materials" = 4, "magnets" = 4, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500)
|
||||
build_path = /obj/item/clothing/shoes/magboots
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/sci_goggles
|
||||
name = "Science Goggles"
|
||||
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
|
||||
id = "scigoggles"
|
||||
req_tech = list("magnets" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/science
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/handdrill
|
||||
name = "Hand Drill"
|
||||
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
|
||||
id = "handdrill"
|
||||
req_tech = list("materials" = 4, "engineering" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
|
||||
build_path = /obj/item/screwdriver/power
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/jawsoflife
|
||||
name = "Jaws of Life"
|
||||
desc = "A small, compact Jaws of Life with an interchangeable pry jaws and cutting jaws"
|
||||
id = "jawsoflife"
|
||||
req_tech = list("materials" = 4, "engineering" = 6, "magnets" = 6) // added one more requirment since the Jaws of Life are a bit OP
|
||||
build_path = /obj/item/crowbar/power
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/alienwrench
|
||||
name = "Alien Wrench"
|
||||
desc = "An advanced wrench obtained through Abductor technology."
|
||||
id = "alien_wrench"
|
||||
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
|
||||
build_path = /obj/item/wrench/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/alienwirecutters
|
||||
name = "Alien Wirecutters"
|
||||
desc = "Advanced wirecutters obtained through Abductor technology."
|
||||
id = "alien_wirecutters"
|
||||
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
|
||||
build_path = /obj/item/wirecutters/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/alienscrewdriver
|
||||
name = "Alien Screwdriver"
|
||||
desc = "An advanced screwdriver obtained through Abductor technology."
|
||||
id = "alien_screwdriver"
|
||||
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
|
||||
build_path = /obj/item/screwdriver/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/aliencrowbar
|
||||
name = "Alien Crowbar"
|
||||
desc = "An advanced crowbar obtained through Abductor technology."
|
||||
id = "alien_crowbar"
|
||||
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
|
||||
build_path = /obj/item/crowbar/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/alienwelder
|
||||
name = "Alien Welding Tool"
|
||||
desc = "An advanced welding tool obtained through Abductor technology."
|
||||
id = "alien_welder"
|
||||
req_tech = list("engineering" = 5, "plasmatech" = 5, "abductor" = 4)
|
||||
build_path = /obj/item/weldingtool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/alienmultitool
|
||||
name = "Alien Multitool"
|
||||
desc = "An advanced multitool obtained through Abductor technology."
|
||||
id = "alien_multitool"
|
||||
req_tech = list("engineering" = 5, "programming" = 5, "abductor" = 4)
|
||||
build_path = /obj/item/device/multitool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/diskplantgene
|
||||
name = "Plant Data Disk"
|
||||
desc = "A disk for storing plant genetic data."
|
||||
id = "diskplantgene"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=200, MAT_GLASS=100)
|
||||
build_path = /obj/item/disk/plantgene
|
||||
category = list("Electronics")
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Janitor Designs//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/advmop
|
||||
name = "Advanced Mop"
|
||||
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
|
||||
id = "advmop"
|
||||
req_tech = list("materials" = 4, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 200)
|
||||
build_path = /obj/item/mop/advanced
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/blutrash
|
||||
name = "Trashbag of Holding"
|
||||
desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage."
|
||||
id = "blutrash"
|
||||
req_tech = list("materials" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500)
|
||||
build_path = /obj/item/storage/bag/trash/bluespace
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/buffer
|
||||
name = "Floor Buffer Upgrade"
|
||||
desc = "A floor buffer that can be attached to vehicular janicarts."
|
||||
id = "buffer"
|
||||
req_tech = list("materials" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/janiupgrade
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/holosign
|
||||
name = "Holographic Sign Projector"
|
||||
desc = "A holograpic projector used to project various warning signs."
|
||||
id = "holosign"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/holosign_creator
|
||||
category = list("Equipment")
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Tools//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/exwelder
|
||||
name = "Experimental Welding Tool"
|
||||
desc = "An experimental welder capable of self-fuel generation."
|
||||
id = "exwelder"
|
||||
req_tech = list("materials" = 4, "engineering" = 5, "bluespace" = 3, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
|
||||
build_path = /obj/item/weldingtool/experimental
|
||||
category = list("Equipment")
|
||||
|
||||
@@ -6,146 +6,142 @@
|
||||
name = "AI Design (AI Core)"
|
||||
desc = "Allows for the construction of circuit boards used to build new AI cores."
|
||||
id = "aicore"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/circuitboard/aicore
|
||||
category = list("AI Modules")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/safeguard_module
|
||||
name = "Module Design (Safeguard)"
|
||||
desc = "Allows for the construction of a Safeguard AI Module."
|
||||
id = "safeguard_module"
|
||||
req_tech = list("programming" = 3, "materials" = 3)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/supplied/safeguard
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/onehuman_module
|
||||
name = "Module Design (OneCrew)"
|
||||
desc = "Allows for the construction of a OneCrew AI Module."
|
||||
id = "onehuman_module"
|
||||
req_tech = list("programming" = 6, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/zeroth/oneHuman
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/protectstation_module
|
||||
name = "Module Design (ProtectStation)"
|
||||
desc = "Allows for the construction of a ProtectStation AI Module."
|
||||
id = "protectstation_module"
|
||||
req_tech = list("programming" = 5, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/supplied/protectStation
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/quarantine_module
|
||||
name = "Module Design (Quarantine)"
|
||||
desc = "Allows for the construction of a Quarantine AI Module."
|
||||
id = "quarantine_module"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/supplied/quarantine
|
||||
category = list("AI Modules")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/oxygen_module
|
||||
name = "Module Design (OxygenIsToxicToHumans)"
|
||||
desc = "Allows for the construction of a Safeguard AI Module."
|
||||
id = "oxygen_module"
|
||||
req_tech = list("programming" = 4, "biotech" = 2, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/supplied/oxygen
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/freeform_module
|
||||
name = "Module Design (Freeform)"
|
||||
desc = "Allows for the construction of a Freeform AI Module."
|
||||
id = "freeform_module"
|
||||
req_tech = list("programming" = 5, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/supplied/freeform
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/reset_module
|
||||
name = "Module Design (Reset)"
|
||||
desc = "Allows for the construction of a Reset AI Module."
|
||||
id = "reset_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/aiModule/reset
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/purge_module
|
||||
name = "Module Design (Purge)"
|
||||
desc = "Allows for the construction of a Purge AI Module."
|
||||
id = "purge_module"
|
||||
req_tech = list("programming" = 5, "materials" = 6)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/reset/purge
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/remove_module
|
||||
name = "Module Design (Law Removal)"
|
||||
desc = "Allows for the construction of a Law Removal AI Core Module."
|
||||
id = "remove_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/remove
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/freeformcore_module
|
||||
name = "AI Core Module (Freeform)"
|
||||
desc = "Allows for the construction of a Freeform AI Core Module."
|
||||
id = "freeformcore_module"
|
||||
req_tech = list("programming" = 6, "materials" = 6)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/core/freeformcore
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/asimov
|
||||
name = "Core Module Design (Asimov)"
|
||||
desc = "Allows for the construction of an Asimov AI Core Module."
|
||||
id = "asimov_module"
|
||||
req_tech = list("programming" = 3, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/core/full/asimov
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/paladin_module
|
||||
name = "Core Module Design (P.A.L.A.D.I.N.)"
|
||||
desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
|
||||
id = "paladin_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/core/full/paladin
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/tyrant_module
|
||||
name = "Core Module Design (T.Y.R.A.N.T.)"
|
||||
desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
|
||||
id = "tyrant_module"
|
||||
req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/core/full/tyrant
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/corporate_module
|
||||
name = "Core Module Design (Corporate)"
|
||||
desc = "Allows for the construction of a Corporate AI Core Module."
|
||||
id = "corporate_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/core/full/corp
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/default_module
|
||||
name = "Core Module Design (Default)"
|
||||
desc = "Allows for the construction of a Default AI Core Module."
|
||||
id = "default_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/aiModule/core/full/custom
|
||||
category = list("AI Modules")
|
||||
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////Blue Space/////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/beacon
|
||||
name = "Tracking Beacon"
|
||||
desc = "A blue space tracking beacon."
|
||||
id = "beacon"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
build_path = /obj/item/device/radio/beacon
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/bag_holding
|
||||
name = "Bag of Holding"
|
||||
desc = "A backpack that opens into a localized pocket of bluespace."
|
||||
id = "bag_holding"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250, MAT_BLUESPACE = 2000)
|
||||
build_path = /obj/item/storage/backpack/holding
|
||||
category = list("Bluespace Designs")
|
||||
dangerous_construction = TRUE
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/bluespace_crystal
|
||||
name = "Artificial Bluespace Crystal"
|
||||
desc = "A small blue crystal with mystical properties."
|
||||
id = "bluespace_crystal"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500)
|
||||
build_path = /obj/item/ore/bluespace_crystal/artificial
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/telesci_gps
|
||||
name = "GPS Device"
|
||||
desc = "Little thingie that can track its position at all times."
|
||||
id = "telesci_gps"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/device/gps
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/miningsatchel_holding
|
||||
name = "Mining Satchel of Holding"
|
||||
desc = "A mining satchel that can hold an infinite amount of ores."
|
||||
id = "minerbag_holding"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 250, MAT_URANIUM = 500) //quite cheap, for more convenience
|
||||
build_path = /obj/item/storage/bag/ore/holding
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -1,30 +1,32 @@
|
||||
///////////////////Computer Boards///////////////////////////////////
|
||||
|
||||
/datum/design/board
|
||||
name = "Computer Design (Battle Arcade Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
|
||||
id = "arcade_battle"
|
||||
req_tech = list("programming" = 1)
|
||||
name = "Computer Design ( NULL ENTRY )"
|
||||
desc = "I promise this doesn't give you syndicate goodies!"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
reagents_list = list("sacid" = 20)
|
||||
|
||||
/datum/design/board/arcade_battle
|
||||
name = "Computer Design (Battle Arcade Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
|
||||
id = "arcade_battle"
|
||||
build_path = /obj/item/circuitboard/computer/arcade/battle
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/orion_trail
|
||||
name = "Computer Design (Orion Trail Arcade Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine."
|
||||
id = "arcade_orion"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/computer/arcade/orion_trail
|
||||
category = list("Computer Boards")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/seccamera
|
||||
name = "Computer Design (Security Camera)"
|
||||
desc = "Allows for the construction of circuit boards used to build security camera computers."
|
||||
id = "seccamera"
|
||||
req_tech = list("programming" = 2, "combat" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/security
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -32,15 +34,14 @@
|
||||
name = "Computer Design (Xenobiology Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build xenobiology camera computers."
|
||||
id = "xenobioconsole"
|
||||
req_tech = list("programming" = 3, "biotech" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/xenobiology
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/aiupload
|
||||
name = "Computer Design (AI Upload)"
|
||||
desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
|
||||
id = "aiupload"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/computer/aiupload
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -48,7 +49,6 @@
|
||||
name = "Computer Design (Cyborg Upload)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console."
|
||||
id = "borgupload"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/computer/borgupload
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -56,7 +56,6 @@
|
||||
name = "Computer Design (Medical Records)"
|
||||
desc = "Allows for the construction of circuit boards used to build a medical records console."
|
||||
id = "med_data"
|
||||
req_tech = list("programming" = 2, "biotech" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/med_data
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -64,7 +63,6 @@
|
||||
name = "Computer Design (Operating Computer)"
|
||||
desc = "Allows for the construction of circuit boards used to build an operating computer console."
|
||||
id = "operating"
|
||||
req_tech = list("programming" = 2, "biotech" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/operating
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -72,7 +70,6 @@
|
||||
name = "Computer Design (PanD.E.M.I.C. 2200)"
|
||||
desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console."
|
||||
id = "pandemic"
|
||||
req_tech = list("programming" = 3, "biotech" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/pandemic
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -80,7 +77,6 @@
|
||||
name = "Computer Design (DNA Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new DNA scanning console."
|
||||
id = "scan_console"
|
||||
req_tech = list("programming" = 2, "biotech" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/scan_consolenew
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -88,7 +84,6 @@
|
||||
name = "Computer Design (Communications)"
|
||||
desc = "Allows for the construction of circuit boards used to build a communications console."
|
||||
id = "comconsole"
|
||||
req_tech = list("programming" = 3, "magnets" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/communications
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -96,7 +91,6 @@
|
||||
name = "Computer Design (ID Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build an ID computer."
|
||||
id = "idcardconsole"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/card
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -104,7 +98,6 @@
|
||||
name = "Computer Design (Crew monitoring computer)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer."
|
||||
id = "crewconsole"
|
||||
req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/crew
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -112,7 +105,6 @@
|
||||
name = "Computer Design (Security Records Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a security records console."
|
||||
id = "secdata"
|
||||
req_tech = list("programming" = 2, "combat" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/secure_data
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -120,7 +112,6 @@
|
||||
name = "Computer Design (Atmosphere Alert)"
|
||||
desc = "Allows for the construction of circuit boards used to build an atmosphere alert console."
|
||||
id = "atmosalerts"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/atmos_alert
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -128,7 +119,6 @@
|
||||
name = "Computer Design (Atmospheric Monitor)"
|
||||
desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor."
|
||||
id = "atmos_control"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/atmos_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -136,7 +126,6 @@
|
||||
name = "Computer Design (Robotics Control Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Robotics Control console."
|
||||
id = "robocontrol"
|
||||
req_tech = list("programming" = 4)
|
||||
build_path = /obj/item/circuitboard/computer/robotics
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -144,7 +133,6 @@
|
||||
name = "Computer Design (Slot Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new slot machine."
|
||||
id = "slotmachine"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/computer/slot_machine
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -152,7 +140,6 @@
|
||||
name = "Computer Design (Power Monitor)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new power monitor."
|
||||
id = "powermonitor"
|
||||
req_tech = list("programming" = 2, "powerstorage" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/powermonitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -160,7 +147,6 @@
|
||||
name = "Computer Design (Solar Control)"
|
||||
desc = "Allows for the construction of circuit boards used to build a solar control console."
|
||||
id = "solarcontrol"
|
||||
req_tech = list("programming" = 2, "powerstorage" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/solar_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -168,7 +154,6 @@
|
||||
name = "Computer Design (Prisoner Management Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a prisoner management console."
|
||||
id = "prisonmanage"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/prisoner
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -176,31 +161,30 @@
|
||||
name = "Computer Design (Exosuit Control Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build an exosuit control console."
|
||||
id = "mechacontrol"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/mecha_control
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/mechapower
|
||||
name = "Computer Design (Mech Bay Power Control Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a mech bay power control console."
|
||||
id = "mechapower"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/mech_bay_power_console
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/rdconsole
|
||||
name = "Computer Design (R&D Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new R&D console."
|
||||
id = "rdconsole"
|
||||
req_tech = list("programming" = 4)
|
||||
build_path = /obj/item/circuitboard/computer/rdconsole
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/cargo
|
||||
name = "Computer Design (Supply Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Supply Console."
|
||||
id = "cargo"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/cargo
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -208,7 +192,6 @@
|
||||
name = "Computer Design (Supply Request Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Supply Request Console."
|
||||
id = "cargorequest"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/cargo/request
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -216,7 +199,6 @@
|
||||
name = "Computer Design (Stock Exchange Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Stock Exchange Console."
|
||||
id = "stockexchange"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/stockexchange
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -224,7 +206,6 @@
|
||||
name = "Computer Design (Outpost Status Display)"
|
||||
desc = "Allows for the construction of circuit boards used to build an outpost status display console."
|
||||
id = "mining"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/mining
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -232,7 +213,6 @@
|
||||
name = "Computer Design (Telecommunications Monitoring Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a telecommunications monitor."
|
||||
id = "comm_monitor"
|
||||
req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/comm_monitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -240,7 +220,6 @@
|
||||
name = "Computer Design (Telecommunications Server Monitoring Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor."
|
||||
id = "comm_server"
|
||||
req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2)
|
||||
build_path = /obj/item/circuitboard/computer/comm_server
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -248,7 +227,6 @@
|
||||
name = "Computer Design (Messaging Monitor Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a messaging monitor console."
|
||||
id = "message_monitor"
|
||||
req_tech = list("programming" = 5)
|
||||
build_path = /obj/item/circuitboard/computer/message_monitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -256,15 +234,14 @@
|
||||
name = "Computer Design (AI Integrity Restorer)"
|
||||
desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer."
|
||||
id = "aifixer"
|
||||
req_tech = list("programming" = 4, "magnets" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/aifixer
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/libraryconsole
|
||||
name = "Computer Design (Library Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new library console."
|
||||
id = "libraryconsole"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/computer/libraryconsole
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -272,6 +249,5 @@
|
||||
name = "Computer Design (APC Control)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new APC control console."
|
||||
id = "apc_control"
|
||||
req_tech = list("programming" = 4, "engineering" = 4, "powerstorage" = 5)
|
||||
build_path = /obj/item/circuitboard/computer/apc_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -5,257 +5,251 @@
|
||||
/datum/design/disk/normal
|
||||
name = "Hard Disk Drive"
|
||||
id = "hdd_basic"
|
||||
req_tech = list("programming" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
|
||||
build_path = /obj/item/computer_hardware/hard_drive
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/disk/advanced
|
||||
name = "Advanced Hard Disk Drive"
|
||||
id = "hdd_advanced"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/advanced
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/disk/super
|
||||
name = "Super Hard Disk Drive"
|
||||
id = "hdd_super"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1600, MAT_GLASS = 400)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/super
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/disk/cluster
|
||||
name = "Cluster Hard Disk Drive"
|
||||
id = "hdd_cluster"
|
||||
req_tech = list("programming" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3200, MAT_GLASS = 800)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/cluster
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/disk/small
|
||||
name = "Solid State Drive"
|
||||
id = "ssd_small"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/small
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/disk/micro
|
||||
name = "Micro Solid State Drive"
|
||||
id = "ssd_micro"
|
||||
req_tech = list("programming" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/micro
|
||||
category = list("Computer Parts")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// Network cards
|
||||
/datum/design/netcard/basic
|
||||
name = "Network Card"
|
||||
id = "netcard_basic"
|
||||
req_tech = list("programming" = 2, "engineering" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 250, MAT_GLASS = 100)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/network_card
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/netcard/advanced
|
||||
name = "Advanced Network Card"
|
||||
id = "netcard_advanced"
|
||||
req_tech = list("programming" = 4, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 200)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/network_card/advanced
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/netcard/wired
|
||||
name = "Wired Network Card"
|
||||
id = "netcard_wired"
|
||||
req_tech = list("programming" = 5, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 400)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/network_card/wired
|
||||
category = list("Computer Parts")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// Data disks
|
||||
/datum/design/portabledrive/basic
|
||||
name = "Data Disk"
|
||||
id = "portadrive_basic"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 800)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/portabledrive/advanced
|
||||
name = "Advanced Data Disk"
|
||||
id = "portadrive_advanced"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1600)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable/advanced
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/portabledrive/super
|
||||
name = "Super Data Disk"
|
||||
id = "portadrive_super"
|
||||
req_tech = list("programming" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 3200)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable/super
|
||||
category = list("Computer Parts")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// Card slot
|
||||
/datum/design/cardslot
|
||||
name = "ID Card Slot"
|
||||
id = "cardslot"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
build_path = /obj/item/computer_hardware/card_slot
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// Intellicard slot
|
||||
/datum/design/aislot
|
||||
name = "Intellicard Slot"
|
||||
id = "aislot"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
build_path = /obj/item/computer_hardware/ai_slot
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// Mini printer
|
||||
/datum/design/miniprinter
|
||||
name = "Miniprinter"
|
||||
id = "miniprinter"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
build_path = /obj/item/computer_hardware/printer/mini
|
||||
category = list("Computer Parts")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// APC Link
|
||||
/datum/design/APClink
|
||||
name = "Area Power Connector"
|
||||
id = "APClink"
|
||||
req_tech = list("programming" = 2, "powerstorage" = 3, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000)
|
||||
build_path = /obj/item/computer_hardware/recharger/APC
|
||||
category = list("Computer Parts")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// Batteries
|
||||
/datum/design/battery/controller
|
||||
name = "Power Cell Controller"
|
||||
id = "bat_control"
|
||||
req_tech = list("powerstorage" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
build_path = /obj/item/computer_hardware/battery
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/battery/normal
|
||||
name = "Battery Module"
|
||||
id = "bat_normal"
|
||||
req_tech = list("powerstorage" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
build_path = /obj/item/stock_parts/cell/computer
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/battery/advanced
|
||||
name = "Advanced Battery Module"
|
||||
id = "bat_advanced"
|
||||
req_tech = list("powerstorage" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800)
|
||||
build_path = /obj/item/stock_parts/cell/computer/advanced
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/battery/super
|
||||
name = "Super Battery Module"
|
||||
id = "bat_super"
|
||||
req_tech = list("powerstorage" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1600)
|
||||
build_path = /obj/item/stock_parts/cell/computer/super
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/battery/nano
|
||||
name = "Nano Battery Module"
|
||||
id = "bat_nano"
|
||||
req_tech = list("powerstorage" = 1, "engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/stock_parts/cell/computer/nano
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/battery/micro
|
||||
name = "Micro Battery Module"
|
||||
id = "bat_micro"
|
||||
req_tech = list("powerstorage" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
build_path = /obj/item/stock_parts/cell/computer/micro
|
||||
category = list("Computer Parts")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// Processor unit
|
||||
/datum/design/cpu
|
||||
name = "Processor Board"
|
||||
id = "cpu_normal"
|
||||
req_tech = list("programming" = 3, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1600)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/processor_unit
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/cpu/small
|
||||
name = "Microprocessor"
|
||||
id = "cpu_small"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 800)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/small
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/cpu/photonic
|
||||
name = "Photonic Processor Board"
|
||||
id = "pcpu_normal"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000)
|
||||
reagents_list = list("sacid" = 40)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/photonic
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/cpu/photonic/small
|
||||
name = "Photonic Microprocessor"
|
||||
id = "pcpu_small"
|
||||
req_tech = list("programming" = 4, "engineering" = 3)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000)
|
||||
reagents_list = list("sacid" = 20)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/photonic/small
|
||||
category = list("Computer Parts")
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
|
||||
///////////////////////////////////
|
||||
/////Non-Board Computer Stuff//////
|
||||
///////////////////////////////////
|
||||
|
||||
/datum/design/intellicard
|
||||
name = "Intellicard AI Transportation System"
|
||||
desc = "Allows for the construction of an intellicard."
|
||||
id = "intellicard"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 200)
|
||||
build_path = /obj/item/device/aicard
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/paicard
|
||||
name = "Personal Artificial Intelligence Card"
|
||||
desc = "Allows for the construction of a pAI Card."
|
||||
id = "paicard"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
build_path = /obj/item/device/paicard
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
|
||||
////////////////////////////////////////
|
||||
//////////Disk Construction Disks///////
|
||||
////////////////////////////////////////
|
||||
/datum/design/design_disk
|
||||
name = "Design Storage Disk"
|
||||
desc = "Produce additional disks for storing device designs."
|
||||
id = "design_disk"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
build_path = /obj/item/disk/design_disk
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/design_disk_adv
|
||||
name = "Advanced Design Storage Disk"
|
||||
desc = "Produce additional disks for storing device designs."
|
||||
id = "design_disk_adv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
|
||||
build_path = /obj/item/disk/design_disk/adv
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/tech_disk
|
||||
name = "Technology Data Storage Disk"
|
||||
desc = "Produce additional disks for storing technology data."
|
||||
id = "tech_disk"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
build_path = /obj/item/disk/tech_disk
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/integrated_printer
|
||||
name = "Integrated circuits printer"
|
||||
desc = "This machine provides all neccesary things for circuitry."
|
||||
id = "icprinter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 5000, MAT_METAL = 5000)
|
||||
build_path = /obj/item/device/integrated_circuit_printer
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/IC_printer_upgrade_advanced
|
||||
name = "Integrated Circuits printer upgrade: Advanced Designs"
|
||||
desc = "This disk allows for integrated circuit printers to print advanced circuitry designs."
|
||||
id = "icupgadv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 10000, MAT_METAL = 10000)
|
||||
build_path = /obj/item/disk/integrated_circuit/upgrade/advanced
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/IC_printer_upgrade_clone
|
||||
name = "Integrated Circuits printer upgrade: Clone Ability"
|
||||
desc = "This disk allows for integrated circuit printers to clone designs."
|
||||
id = "icupgclo"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 10000, MAT_METAL = 10000)
|
||||
build_path = /obj/item/disk/integrated_circuit/upgrade/clone
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -0,0 +1,32 @@
|
||||
/datum/design/flightsuit
|
||||
name = "Flight Suit"
|
||||
desc = "A specialized hardsuit that is able to attach a flightpack and accessories.."
|
||||
id = "flightsuit"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/clothing/suit/space/hardsuit/flightsuit
|
||||
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 200, MAT_GOLD = 3000, MAT_SILVER = 3000, MAT_TITANIUM = 16000) //This expensive enough for you?
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/flightpack
|
||||
name = "Flight Pack"
|
||||
desc = "An advanced back-worn system that has dual ion engines powerful enough to grant a humanoid flight. Contains an internal self-recharging high-current capacitor for short, powerful boosts."
|
||||
id = "flightpack"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/device/flightpack
|
||||
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 4000, MAT_GOLD = 12000, MAT_SILVER = 12000, MAT_URANIUM = 20000, MAT_PLASMA = 16000, MAT_TITANIUM = 16000) //This expensive enough for you?
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/flightshoes
|
||||
name = "Flight Shoes"
|
||||
desc = "Flight shoes, attachable to a flight suit to provide additional functions."
|
||||
id = "flightshoes"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/clothing/shoes/flightshoes
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 1500, MAT_SILVER = 1500, MAT_PLASMA = 2000, MAT_TITANIUM = 2000)
|
||||
construction_time = 100
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -6,7 +6,6 @@
|
||||
name = "Machine Design (SMES Board)"
|
||||
desc = "The circuit board for a SMES."
|
||||
id = "smes"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/machine/smes
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -14,7 +13,6 @@
|
||||
name = "Machine Design (Automated Announcement System Board)"
|
||||
desc = "The circuit board for an automated announcement system."
|
||||
id = "automated_announcement"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "magnets" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/announcement_system
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -22,7 +20,6 @@
|
||||
name = "Computer Design (Power Turbine Console Board)"
|
||||
desc = "The circuit board for a power turbine console."
|
||||
id = "power_turbine_console"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/computer/turbine_computer
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -30,7 +27,6 @@
|
||||
name = "Machine Design (Emitter Board)"
|
||||
desc = "The circuit board for an emitter."
|
||||
id = "emitter"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/machine/emitter
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -38,7 +34,6 @@
|
||||
name = "Machine Design (Power Compressor Board)"
|
||||
desc = "The circuit board for a power compressor."
|
||||
id = "power_compressor"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/machine/power_compressor
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -46,7 +41,6 @@
|
||||
name = "Machine Design (Power Turbine Board)"
|
||||
desc = "The circuit board for a power turbine."
|
||||
id = "power_turbine"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 4, "engineering" = 5)
|
||||
build_path = /obj/item/circuitboard/machine/power_turbine
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -54,7 +48,6 @@
|
||||
name = "Machine Design (Freezer/Heater Board)"
|
||||
desc = "The circuit board for a freezer/heater."
|
||||
id = "thermomachine"
|
||||
req_tech = list("programming" = 3, "plasmatech" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/thermomachine
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -62,7 +55,6 @@
|
||||
name = "Machine Design (Space Heater Board)"
|
||||
desc = "The circuit board for a space heater."
|
||||
id = "space_heater"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "plasmatech" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/space_heater
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
@@ -70,55 +62,54 @@
|
||||
name = "Machine Design (Teleportation Station Board)"
|
||||
desc = "The circuit board for a teleportation station."
|
||||
id = "tele_station"
|
||||
req_tech = list("programming" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 4)
|
||||
build_path = /obj/item/circuitboard/machine/teleporter_station
|
||||
category = list ("Teleportation Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/teleport_hub
|
||||
name = "Machine Design (Teleportation Hub Board)"
|
||||
desc = "The circuit board for a teleportation hub."
|
||||
id = "tele_hub"
|
||||
req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
|
||||
build_path = /obj/item/circuitboard/machine/teleporter_hub
|
||||
category = list ("Teleportation Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/quantumpad
|
||||
name = "Machine Design (Quantum Pad Board)"
|
||||
desc = "The circuit board for a quantum telepad."
|
||||
id = "quantumpad"
|
||||
req_tech = list("programming" = 4, "bluespace" = 4, "plasmatech" = 3, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/machine/quantumpad
|
||||
category = list ("Teleportation Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/launchpad
|
||||
name = "Machine Design (Bluespace Launchpad Board)"
|
||||
desc = "The circuit board for a bluespace Launchpad."
|
||||
id = "launchpad"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 2, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/launchpad
|
||||
category = list ("Teleportation Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/launchpad_console
|
||||
name = "Machine Design (Bluespace Launchpad Console Board)"
|
||||
desc = "The circuit board for a bluespace launchpad Console."
|
||||
id = "launchpad_console"
|
||||
req_tech = list("programming" = 4, "bluespace" = 3, "plasmatech" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/launchpad_console
|
||||
category = list ("Teleportation Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/teleconsole
|
||||
name = "Computer Design (Teleporter Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a teleporter control console."
|
||||
id = "teleconsole"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4)
|
||||
build_path = /obj/item/circuitboard/computer/teleporter
|
||||
category = list("Teleportation Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/sleeper
|
||||
name = "Machine Design (Sleeper Board)"
|
||||
desc = "The circuit board for a sleeper."
|
||||
id = "sleeper"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/sleeper
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
@@ -126,7 +117,6 @@
|
||||
name = "Machine Design (Cryotube Board)"
|
||||
desc = "The circuit board for a cryotube."
|
||||
id = "cryotube"
|
||||
req_tech = list("programming" = 5, "biotech" = 3, "engineering" = 4, "plasmatech" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/cryo_tube
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
@@ -134,7 +124,6 @@
|
||||
name = "Machine Design (Portable Chem Dispenser Board)"
|
||||
desc = "The circuit board for a portable chem dispenser."
|
||||
id = "chem_dispenser"
|
||||
req_tech = list("programming" = 5, "biotech" = 3, "materials" = 4, "plasmatech" = 4)
|
||||
build_path = /obj/item/circuitboard/machine/chem_dispenser
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
@@ -142,7 +131,6 @@
|
||||
name = "Machine Design (Chem Master Board)"
|
||||
desc = "The circuit board for a Chem Master 3000."
|
||||
id = "chem_master"
|
||||
req_tech = list("biotech" = 3, "materials" = 3, "programming" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/chem_master
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
@@ -150,7 +138,6 @@
|
||||
name = "Machine Design (Chemical Heater Board)"
|
||||
desc = "The circuit board for a chemical heater."
|
||||
id = "chem_heater"
|
||||
req_tech = list("engineering" = 2, "biotech" = 2, "programming" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/chem_heater
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
@@ -158,7 +145,6 @@
|
||||
name = "Machine Design (Smoke Machine)"
|
||||
desc = "The circuit board for a smoke machine."
|
||||
id = "smoke_machine"
|
||||
req_tech = list("materials" = 4, "biotech" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/smoke_machine
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
@@ -166,7 +152,6 @@
|
||||
name = "Computer Design (Cloning Machine Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
|
||||
id = "clonecontrol"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/cloning
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -174,7 +159,6 @@
|
||||
name = "Machine Design (Clone Pod)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Cloning Pod."
|
||||
id = "clonepod"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/clonepod
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -182,7 +166,6 @@
|
||||
name = "Machine Design (Cloning Scanner)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Cloning Scanner."
|
||||
id = "clonescanner"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/clonescanner
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -190,7 +173,6 @@
|
||||
name = "Machine Design (Biogenerator Board)"
|
||||
desc = "The circuit board for a biogenerator."
|
||||
id = "biogenerator"
|
||||
req_tech = list("programming" = 2, "biotech" = 3, "materials" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/biogenerator
|
||||
category = list ("Hydroponics Machinery")
|
||||
|
||||
@@ -198,7 +180,6 @@
|
||||
name = "Machine Design (Hydroponics Tray Board)"
|
||||
desc = "The circuit board for a hydroponics tray."
|
||||
id = "hydro_tray"
|
||||
req_tech = list("biotech" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/hydroponics
|
||||
category = list ("Hydroponics Machinery")
|
||||
|
||||
@@ -206,23 +187,22 @@
|
||||
name = "Machine Design (Destructive Analyzer Board)"
|
||||
desc = "The circuit board for a destructive analyzer."
|
||||
id = "destructive_analyzer"
|
||||
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/destructive_analyzer
|
||||
category = list("Research Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/experimentor
|
||||
name = "Machine Design (E.X.P.E.R.I-MENTOR Board)"
|
||||
desc = "The circuit board for an E.X.P.E.R.I-MENTOR."
|
||||
id = "experimentor"
|
||||
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2, "bluespace" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/experimentor
|
||||
category = list("Research Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/protolathe
|
||||
name = "Machine Design (Protolathe Board)"
|
||||
desc = "The circuit board for a protolathe."
|
||||
id = "protolathe"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/protolathe
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -230,7 +210,6 @@
|
||||
name = "Machine Design (Circuit Imprinter Board)"
|
||||
desc = "The circuit board for a circuit imprinter."
|
||||
id = "circuit_imprinter"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/circuit_imprinter
|
||||
category = list("Research Machinery")
|
||||
|
||||
@@ -238,47 +217,46 @@
|
||||
name = "Computer Design (R&D Server Control Console Board)"
|
||||
desc = "The circuit board for an R&D Server Control Console."
|
||||
id = "rdservercontrol"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/circuitboard/computer/rdservercontrol
|
||||
category = list("Research Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/rdserver
|
||||
name = "Machine Design (R&D Server Board)"
|
||||
desc = "The circuit board for an R&D Server."
|
||||
id = "rdserver"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/rdserver
|
||||
category = list("Research Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/mechfab
|
||||
name = "Machine Design (Exosuit Fabricator Board)"
|
||||
desc = "The circuit board for an Exosuit Fabricator."
|
||||
id = "mechfab"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/mechfab
|
||||
category = list("Research Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/cyborgrecharger
|
||||
name = "Machine Design (Cyborg Recharger Board)"
|
||||
desc = "The circuit board for a Cyborg Recharger."
|
||||
id = "cyborgrecharger"
|
||||
req_tech = list("powerstorage" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/cyborgrecharger
|
||||
category = list("Research Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/mech_recharger
|
||||
name = "Machine Design (Mechbay Recharger Board)"
|
||||
desc = "The circuit board for a Mechbay Recharger."
|
||||
id = "mech_recharger"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/mech_recharger
|
||||
category = list("Research Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/microwave
|
||||
name = "Machine Design (Microwave Board)"
|
||||
desc = "The circuit board for a microwave."
|
||||
id = "microwave"
|
||||
req_tech = list("programming" = 2, "magnets" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/microwave
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -286,7 +264,6 @@
|
||||
name = "Machine Design (Gibber Board)"
|
||||
desc = "The circuit board for a gibber."
|
||||
id = "gibber"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/gibber
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -294,7 +271,6 @@
|
||||
name = "Machine Design (Smartfridge Board)"
|
||||
desc = "The circuit board for a smartfridge."
|
||||
id = "smartfridge"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/smartfridge
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -302,7 +278,6 @@
|
||||
name = "Machine Design (Monkey Recycler Board)"
|
||||
desc = "The circuit board for a monkey recycler."
|
||||
id = "monkey_recycler"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/monkey_recycler
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -310,7 +285,6 @@
|
||||
name = "Machine Design (Seed Extractor Board)"
|
||||
desc = "The circuit board for a seed extractor."
|
||||
id = "seed_extractor"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/seed_extractor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -318,7 +292,6 @@
|
||||
name = "Machine Design (Food Processor Board)"
|
||||
desc = "The circuit board for a food processor."
|
||||
id = "processor"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/processor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -326,7 +299,6 @@
|
||||
name = "Machine Design (Slime Processor Board)"
|
||||
desc = "The circuit board for a slime processor."
|
||||
id = "slimeprocessor"
|
||||
req_tech = list("programming" = 1, "plasmatech" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/processor/slime
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -334,7 +306,6 @@
|
||||
name = "Machine Design (Recycler Board)"
|
||||
desc = "The circuit board for a recycler."
|
||||
id = "recycler"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/recycler
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -342,15 +313,14 @@
|
||||
name = "Machine Design (AI Holopad Board)"
|
||||
desc = "The circuit board for a holopad."
|
||||
id = "holopad"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/holopad
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
|
||||
/datum/design/board/autolathe
|
||||
name = "Machine Design (Autolathe Board)"
|
||||
desc = "The circuit board for an autolathe."
|
||||
id = "autolathe"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/autolathe
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -358,7 +328,6 @@
|
||||
name = "Machine Design (Weapon Recharger Board)"
|
||||
desc = "The circuit board for a Weapon Recharger."
|
||||
id = "recharger"
|
||||
req_tech = list("powerstorage" = 4, "engineering" = 3, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/circuitboard/machine/recharger
|
||||
category = list("Misc. Machinery")
|
||||
@@ -367,7 +336,6 @@
|
||||
name = "Machine Design (Vendor Board)"
|
||||
desc = "The circuit board for a Vendor."
|
||||
id = "vendor"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/vendor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -375,23 +343,22 @@
|
||||
name = "Machine Design (Ore Redemption Board)"
|
||||
desc = "The circuit board for an Ore Redemption machine."
|
||||
id = "ore_redemption"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "plasmatech" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/ore_redemption
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/mining_equipment_vendor
|
||||
name = "Machine Design (Mining Rewards Vender Board)"
|
||||
desc = "The circuit board for a Mining Rewards Vender."
|
||||
id = "mining_equipment_vendor"
|
||||
req_tech = list("engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/mining_equipment_vendor
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/tesla_coil
|
||||
name = "Machine Design (Tesla Coil Board)"
|
||||
desc = "The circuit board for a tesla coil."
|
||||
id = "tesla_coil"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3, "magnets" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/tesla_coil
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -399,7 +366,6 @@
|
||||
name = "Machine Design (Grounding Rod Board)"
|
||||
desc = "The circuit board for a grounding rod."
|
||||
id = "grounding_rod"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3, "magnets" = 3, "plasmatech" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/grounding_rod
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -407,7 +373,6 @@
|
||||
name = "Machine Design (Plant DNA Manipulator Board)"
|
||||
desc = "The circuit board for a plant DNA manipulator."
|
||||
id = "plantgenes"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/plantgenes
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -415,15 +380,14 @@
|
||||
name = "Machine Design (NTNet Relay Board)"
|
||||
desc = "The circuit board for a wireless network relay."
|
||||
id = "ntnet_relay"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/ntnet_relay
|
||||
category = list("Subspace Telecomms")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/limbgrower
|
||||
name = "Machine Design (Limb Grower Board)"
|
||||
desc = "The circuit board for a limb grower."
|
||||
id = "limbgrower"
|
||||
req_tech = list("programming" = 3, "biotech" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/limbgrower
|
||||
category = list("Medical Machinery")
|
||||
|
||||
@@ -431,7 +395,6 @@
|
||||
name = "Machine Design (Deep Fryer)"
|
||||
desc = "The circuit board for a Deep Fryer."
|
||||
id = "deepfryer"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/deep_fryer
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -439,6 +402,5 @@
|
||||
name = "Machine Design (Donksoft Toy Vendor Board)"
|
||||
desc = "The circuit board for a Donksoft Toy Vendor."
|
||||
id = "donksofttoyvendor"
|
||||
req_tech = list("programming" = 1, "syndicate" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/vending/donksofttoyvendor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -6,137 +6,132 @@
|
||||
name = "APLU \"Ripley\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Ripley\" Central Control module."
|
||||
id = "ripley_main"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/circuitboard/mecha/ripley/main
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/ripley_peri
|
||||
name = "APLU \"Ripley\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Ripley\" Peripheral Control module."
|
||||
id = "ripley_peri"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/circuitboard/mecha/ripley/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/odysseus_main
|
||||
name = "\"Odysseus\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Odysseus\" Central Control module."
|
||||
id = "odysseus_main"
|
||||
req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/mecha/odysseus/main
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/odysseus_peri
|
||||
name = "\"Odysseus\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module."
|
||||
id = "odysseus_peri"
|
||||
req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/mecha/odysseus/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/gygax_main
|
||||
name = "\"Gygax\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Gygax\" Central Control module."
|
||||
id = "gygax_main"
|
||||
req_tech = list("programming" = 4, "combat" = 3, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/mecha/gygax/main
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/gygax_peri
|
||||
name = "\"Gygax\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Gygax\" Peripheral Control module."
|
||||
id = "gygax_peri"
|
||||
req_tech = list("programming" = 4, "combat" = 3, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/mecha/gygax/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/gygax_targ
|
||||
name = "\"Gygax\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module."
|
||||
id = "gygax_targ"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/mecha/gygax/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/durand_main
|
||||
name = "\"Durand\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Durand\" Central Control module."
|
||||
id = "durand_main"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/mecha/durand/main
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/durand_peri
|
||||
name = "\"Durand\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Durand\" Peripheral Control module."
|
||||
id = "durand_peri"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/mecha/durand/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/durand_targ
|
||||
name = "\"Durand\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"Durand\" Weapons & Targeting Control module."
|
||||
id = "durand_targ"
|
||||
req_tech = list("programming" = 5, "combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/mecha/durand/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/honker_main
|
||||
name = "\"H.O.N.K\" Central Control module"
|
||||
desc = "Allows for the construction of a \"H.O.N.K\" Central Control module."
|
||||
id = "honker_main"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/mecha/honker/main
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/honker_peri
|
||||
name = "\"H.O.N.K\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module."
|
||||
id = "honker_peri"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/mecha/honker/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/honker_targ
|
||||
name = "\"H.O.N.K\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module."
|
||||
id = "honker_targ"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/mecha/honker/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/phazon_main
|
||||
name = "\"Phazon\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Central Control module."
|
||||
id = "phazon_main"
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
req_tech = list("programming" = 6, "materials" = 6, "plasmatech" = 5)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/main
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/phazon_peri
|
||||
name = "\"Phazon\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Peripheral Control module."
|
||||
id = "phazon_peri"
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
req_tech = list("programming" = 6, "bluespace" = 5, "plasmatech" = 5)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/phazon_targ
|
||||
name = "\"Phazon\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module."
|
||||
id = "phazon_targ"
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
req_tech = list("programming" = 6, "magnets" = 5, "plasmatech" = 5)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/targeting
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
////////////////////////////////////////
|
||||
/////////// Mecha Equpment /////////////
|
||||
@@ -147,7 +142,6 @@
|
||||
desc = "Allows for the construction of LBX AC 10."
|
||||
id = "mech_scattershot"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
@@ -158,7 +152,6 @@
|
||||
desc = "Allows for the construction of FNX-99 \"Hades\" Carbine."
|
||||
id = "mech_carbine"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 5, "materials" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
@@ -169,7 +162,6 @@
|
||||
desc = "Allows for the construction of MKIV Ion Heavy Cannon."
|
||||
id = "mech_ion"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 6, "magnets" = 5, "materials" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
|
||||
materials = list(MAT_METAL=20000,MAT_SILVER=6000,MAT_URANIUM=2000)
|
||||
construction_time = 100
|
||||
@@ -180,7 +172,6 @@
|
||||
desc = "Allows for the construction of MKI Tesla Cannon."
|
||||
id = "mech_tesla"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 6, "magnets" = 5, "materials" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla
|
||||
materials = list(MAT_METAL=20000,MAT_SILVER=8000)
|
||||
construction_time = 100
|
||||
@@ -191,7 +182,6 @@
|
||||
desc = "Allows for the construction of CH-PS Laser."
|
||||
id = "mech_laser"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 3, "magnets" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
@@ -202,7 +192,6 @@
|
||||
desc = "Allows for the construction of CH-LC Laser Cannon."
|
||||
id = "mech_laser_heavy"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4, "magnets" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
@@ -213,7 +202,6 @@
|
||||
desc = "Allows for the construction of SGL-6 Grenade Launcher."
|
||||
id = "mech_grenade_launcher"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang
|
||||
materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000)
|
||||
construction_time = 100
|
||||
@@ -224,7 +212,6 @@
|
||||
desc = "Allows for the construction of SRM-8 Missile Rack."
|
||||
id = "mech_missile_rack"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 6, "materials" = 5, "engineering" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
|
||||
materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000)
|
||||
construction_time = 100
|
||||
@@ -235,7 +222,6 @@
|
||||
desc = "A weapon that violates the Geneva Convention at 3 rounds per minute"
|
||||
id = "clusterbang_launcher"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat"= 5, "materials" = 5, "syndicate" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang
|
||||
materials = list(MAT_METAL=20000,MAT_GOLD=10000,MAT_URANIUM=10000)
|
||||
construction_time = 100
|
||||
@@ -246,7 +232,6 @@
|
||||
desc = "An exosuit module that allows generating of small quasi-stable wormholes."
|
||||
id = "mech_wormhole_gen"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("bluespace" = 4, "magnets" = 4, "plasmatech" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
@@ -257,7 +242,6 @@
|
||||
desc = "An exosuit module that allows exosuits to teleport to any position in view."
|
||||
id = "mech_teleporter"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("bluespace" = 8, "magnets" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/teleporter
|
||||
materials = list(MAT_METAL=10000,MAT_DIAMOND=10000)
|
||||
construction_time = 100
|
||||
@@ -268,7 +252,6 @@
|
||||
desc = "An exosuit-mounted Rapid Construction Device."
|
||||
id = "mech_rcd"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("materials" = 5, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/rcd
|
||||
materials = list(MAT_METAL=30000,MAT_GOLD=20000,MAT_PLASMA=25000,MAT_SILVER=20000)
|
||||
construction_time = 1200
|
||||
@@ -279,7 +262,6 @@
|
||||
desc = "An exosuit mounted Gravitational Catapult."
|
||||
id = "mech_gravcatapult"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("bluespace" = 4, "magnets" = 3, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
@@ -290,7 +272,6 @@
|
||||
desc = "Automated Repair Droid. BEEP BOOP"
|
||||
id = "mech_repair_droid"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_GOLD=1000,MAT_SILVER=2000)
|
||||
construction_time = 100
|
||||
@@ -301,7 +282,6 @@
|
||||
desc = "Tesla Energy Relay"
|
||||
id = "mech_energy_relay"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("magnets" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=2000,MAT_GOLD=2000,MAT_SILVER=3000)
|
||||
construction_time = 100
|
||||
@@ -312,7 +292,6 @@
|
||||
desc = "Exosuit-mounted armor booster."
|
||||
id = "mech_ccw_armor"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("materials" = 5, "combat" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster
|
||||
materials = list(MAT_METAL=20000,MAT_SILVER=5000)
|
||||
construction_time = 100
|
||||
@@ -323,7 +302,6 @@
|
||||
desc = "Exosuit-mounted armor booster."
|
||||
id = "mech_proj_armor"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("materials" = 5, "combat" = 5, "engineering"=3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
|
||||
materials = list(MAT_METAL=20000,MAT_GOLD=5000)
|
||||
construction_time = 100
|
||||
@@ -334,7 +312,6 @@
|
||||
desc = "An upgraded version of the standard drill."
|
||||
id = "mech_diamond_drill"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("materials" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill
|
||||
materials = list(MAT_METAL=10000,MAT_DIAMOND=6500)
|
||||
construction_time = 100
|
||||
@@ -345,7 +322,6 @@
|
||||
desc = "Compact nuclear reactor module."
|
||||
id = "mech_generator_nuclear"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("powerstorage"= 5, "engineering" = 4, "materials" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=500)
|
||||
construction_time = 100
|
||||
@@ -356,7 +332,6 @@
|
||||
desc = "A device that shoots resonant plasma bursts at extreme velocity. The blasts are capable of crushing rock and demolishing solid obstacles."
|
||||
id = "mech_plasma_cutter"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("engineering" = 3, "materials" = 3, "plasmatech" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1000, MAT_PLASMA = 2000)
|
||||
construction_time = 100
|
||||
@@ -367,7 +342,6 @@
|
||||
desc = "A weapon for combat exosuits. Shoots non-lethal stunning electrodes."
|
||||
id = "mech_taser"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
@@ -378,7 +352,6 @@
|
||||
desc = "A weapon for combat exosuits. Shoots a rapid, three shot burst."
|
||||
id = "mech_lmg"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
@@ -389,7 +362,6 @@
|
||||
desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves."
|
||||
id = "mech_sleeper"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("biotech" = 3, "engineering" = 3, "plasmatech" = 2)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper
|
||||
materials = list(MAT_METAL=5000,MAT_GLASS=10000)
|
||||
construction_time = 100
|
||||
@@ -400,7 +372,6 @@
|
||||
desc = "Equipment for medical exosuits. A chem synthesizer with syringe gun. Reagents inside are held in stasis, so no reactions will occur."
|
||||
id = "mech_syringe_gun"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("magnets" = 4,"biotech" = 4, "combat" = 3, "materials" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun
|
||||
materials = list(MAT_METAL=3000,MAT_GLASS=2000)
|
||||
construction_time = 200
|
||||
@@ -410,7 +381,6 @@
|
||||
name = "Exosuit Medical Equipment (Medical Beamgun)"
|
||||
desc = "Equipment for medical exosuits. A mounted medical nanite projector which will treat patients with a focused beam."
|
||||
id = "mech_medi_beam"
|
||||
req_tech = list("engineering" = 6, "materials" = 7, "powerstorage" = 5, "biotech" = 6)
|
||||
build_type = MECHFAB
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000)
|
||||
construction_time = 250
|
||||
|
||||
@@ -593,7 +593,6 @@
|
||||
id = "borg_upgrade_vtec"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/vtec
|
||||
req_tech = list("engineering" = 4, "materials" = 5, "programming" = 4)
|
||||
materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_URANIUM= 5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -603,7 +602,6 @@
|
||||
id = "borg_upgrade_thrusters"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/thrusters
|
||||
req_tech = list("engineering" = 4, "powerstorage" = 4)
|
||||
materials = list(MAT_METAL=10000, MAT_PLASMA=5000, MAT_URANIUM = 6000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -613,7 +611,6 @@
|
||||
id = "borg_upgrade_disablercooler"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/disablercooler
|
||||
req_tech = list("combat" = 5, "powerstorage" = 4, "engineering" = 4)
|
||||
materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_GOLD= 2000, MAT_DIAMOND = 500)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -623,7 +620,6 @@
|
||||
id = "borg_upgrade_diamonddrill"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/ddrill
|
||||
req_tech = list("engineering" = 5, "materials" = 6)
|
||||
materials = list(MAT_METAL=10000, MAT_DIAMOND=2000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -633,7 +629,6 @@
|
||||
id = "borg_upgrade_holding"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/soh
|
||||
req_tech = list("engineering" = 4, "materials" = 4, "bluespace" = 4)
|
||||
materials = list(MAT_METAL = 10000, MAT_GOLD = 250, MAT_URANIUM = 500)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -643,7 +638,6 @@
|
||||
id = "borg_upgrade_lavaproof"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/lavaproof
|
||||
req_tech = list("plasmatech" = 4, "materials" = 4, "engineering" = 4)
|
||||
materials = list(MAT_METAL = 10000, MAT_PLASMA = 4000, MAT_TITANIUM = 5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -652,7 +646,6 @@
|
||||
name = "Cyborg Upgrade (Illegal Modules)"
|
||||
id = "borg_syndicate_module"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4, "syndicate" = 2)
|
||||
build_path = /obj/item/borg/upgrade/syndicate
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_DIAMOND = 10000)
|
||||
construction_time = 120
|
||||
@@ -663,7 +656,6 @@
|
||||
id = "borg_upgrade_selfrepair"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/selfrepair
|
||||
req_tech = list("materials" = 4, "engineering" = 4)
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -673,7 +665,6 @@
|
||||
id = "borg_upgrade_expandedsynthesiser"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/hypospray/expanded
|
||||
req_tech = list("programming" = 5, "engineering" = 4, "biotech" = 5)
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -683,7 +674,6 @@
|
||||
id = "borg_upgrade_highstrengthsynthesiser"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/hypospray/high_strength
|
||||
req_tech = list("programming" = 5, "engineering" = 5, "biotech" = 6)
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=10000, MAT_URANIUM=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -693,7 +683,6 @@
|
||||
id = "borg_upgrade_piercinghypospray"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/piercing_hypospray
|
||||
req_tech = list("materials" = 5, "engineering" = 7, "combat" = 3)
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_TITANIUM=10000, MAT_DIAMOND=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -703,7 +692,6 @@
|
||||
id = "borg_upgrade_defibrillator"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/defib
|
||||
req_tech = list("programming" = 4, "engineering" = 5, "materials" = 5, "powerstorage" = 5, "biotech" = 5)
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_SILVER=10000, MAT_GOLD=10000, MAT_TITANIUM=5000, MAT_DIAMOND=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
@@ -714,7 +702,6 @@
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/ai
|
||||
materials = list(MAT_METAL = 1200, MAT_GLASS = 1500, MAT_GOLD = 200)
|
||||
req_tech = list("programming" = 4, "magnets" = 4, "engineering" = 4)
|
||||
construction_time = 50
|
||||
category = list("Misc")
|
||||
|
||||
@@ -734,7 +721,6 @@
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_tracking/ai_control
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_SILVER = 200)
|
||||
req_tech = list("programming" = 3, "magnets" = 2, "engineering" = 2)
|
||||
construction_time = 50
|
||||
category = list("Misc")
|
||||
|
||||
@@ -742,12 +728,12 @@
|
||||
name = "Drone Shell"
|
||||
desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs."
|
||||
id = "drone_shell"
|
||||
req_tech = list("programming" = 2, "biotech" = 4)
|
||||
build_type = MECHFAB | PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 350)
|
||||
construction_time=150
|
||||
build_path = /obj/item/drone_shell
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/synthetic_flash
|
||||
name = "Flash"
|
||||
@@ -758,36 +744,3 @@
|
||||
construction_time = 100
|
||||
build_path = /obj/item/device/assembly/flash/handheld
|
||||
category = list("Misc")
|
||||
|
||||
/datum/design/flightsuit //Multi step build process/redo WIP
|
||||
name = "Flight Suit"
|
||||
desc = "A specialized hardsuit that is able to attach a flightpack and accessories.."
|
||||
id = "flightsuit"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/clothing/suit/space/hardsuit/flightsuit
|
||||
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 200, MAT_GOLD = 3000, MAT_SILVER = 3000, MAT_TITANIUM = 16000) //This expensive enough for you?
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
req_tech = list("magnets" = 2, "combat" = 2, "plasmatech" = 2, "materials" = 4, "engineering" = 3, "powerstorage" = 2)
|
||||
|
||||
/datum/design/flightpack
|
||||
name = "Flight Pack"
|
||||
desc = "An advanced back-worn system that has dual ion engines powerful enough to grant a humanoid flight. Contains an internal self-recharging high-current capacitor for short, powerful boosts."
|
||||
id = "flightpack"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/device/flightpack
|
||||
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 4000, MAT_GOLD = 12000, MAT_SILVER = 12000, MAT_URANIUM = 20000, MAT_PLASMA = 16000, MAT_TITANIUM = 16000) //This expensive enough for you?
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
req_tech = list("magnets" = 4, "combat" = 3, "plasmatech" = 4, "materials" = 5, "engineering" = 4, "powerstorage" = 4)
|
||||
|
||||
/datum/design/flightshoes
|
||||
name = "Flight Shoes"
|
||||
desc = "Flight shoes, attachable to a flight suit to provide additional functions."
|
||||
id = "flightshoes"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/clothing/shoes/flightshoes
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 1500, MAT_SILVER = 1500, MAT_PLASMA = 2000, MAT_TITANIUM = 2000)
|
||||
construction_time = 100
|
||||
category = list("Misc")
|
||||
req_tech = list("magnets" = 2, "combat" = 2, "plasmatech" = 3, "materials" = 3, "engineering" = 2, "powerstorage" = 2)
|
||||
|
||||
@@ -6,153 +6,153 @@
|
||||
name = "Man-Machine Interface"
|
||||
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity."
|
||||
id = "mmi"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
construction_time = 75
|
||||
build_path = /obj/item/device/mmi
|
||||
category = list("Misc","Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/posibrain
|
||||
name = "Positronic Brain"
|
||||
desc = "The latest in Artificial Intelligences."
|
||||
id = "mmi_posi"
|
||||
req_tech = list("programming" = 5, "biotech" = 4, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG.
|
||||
construction_time = 75
|
||||
build_path = /obj/item/device/mmi/posibrain
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/bluespacebeaker
|
||||
name = "Bluespace Beaker"
|
||||
desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units."
|
||||
id = "bluespacebeaker"
|
||||
req_tech = list("bluespace" = 6, "materials" = 5, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 250, MAT_BLUESPACE = 250)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker/bluespace
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/noreactbeaker
|
||||
name = "Cryostasis Beaker"
|
||||
desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
|
||||
id = "splitbeaker"
|
||||
req_tech = list("materials" = 3, "engineering" = 3, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker/noreact
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/bluespacesyringe
|
||||
name = "Bluespace Syringe"
|
||||
desc = "An advanced syringe that can hold 60 units of chemicals"
|
||||
id = "bluespacesyringe"
|
||||
req_tech = list("bluespace" = 5, "materials" = 4, "biotech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 2000, MAT_PLASMA = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 500)
|
||||
build_path = /obj/item/reagent_containers/syringe/bluespace
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/noreactsyringe
|
||||
name = "Cryo Syringe"
|
||||
desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units."
|
||||
id = "noreactsyringe"
|
||||
req_tech = list("materials" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 2000, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/reagent_containers/syringe/noreact
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/piercesyringe
|
||||
name = "Piercing Syringe"
|
||||
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
|
||||
id = "piercesyringe"
|
||||
req_tech = list("materials" = 7, "combat" = 3, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 2000, MAT_DIAMOND = 1000)
|
||||
build_path = /obj/item/reagent_containers/syringe/piercing
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/bluespacebodybag
|
||||
name = "Bluespace Body Bag"
|
||||
desc = "A bluespace body bag, powered by experimental bluespace technology. It can hold loads of bodies and the largest of creatures."
|
||||
id = "bluespacebodybag"
|
||||
req_tech = list("bluespace" = 5, "materials" = 4, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_PLASMA = 2000, MAT_DIAMOND = 500, MAT_BLUESPACE = 500)
|
||||
build_path = /obj/item/bodybag/bluespace
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/plasmarefiller
|
||||
name = "Plasma-Man Jumpsuit Refill"
|
||||
desc = "A refill pack for the auto-extinguisher on Plasma-man suits."
|
||||
id = "plasmarefiller"
|
||||
req_tech = list("materials" = 2, "plasmatech" = 3) //Why did this have no plasmatech
|
||||
id = "plasmarefiller" //Why did this have no plasmatech
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 1000)
|
||||
build_path = /obj/item/device/extinguisher_refill
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
|
||||
/datum/design/alienscalpel
|
||||
name = "Alien Scalpel"
|
||||
desc = "An advanced scalpel obtained through Abductor technology."
|
||||
id = "alien_scalpel"
|
||||
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
|
||||
build_path = /obj/item/scalpel/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/alienhemostat
|
||||
name = "Alien Hemostat"
|
||||
desc = "An advanced hemostat obtained through Abductor technology."
|
||||
id = "alien_hemostat"
|
||||
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
|
||||
build_path = /obj/item/hemostat/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/alienretractor
|
||||
name = "Alien Retractor"
|
||||
desc = "An advanced retractor obtained through Abductor technology."
|
||||
id = "alien_retractor"
|
||||
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
|
||||
build_path = /obj/item/retractor/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/aliensaw
|
||||
name = "Alien Circular Saw"
|
||||
desc = "An advanced surgical saw obtained through Abductor technology."
|
||||
id = "alien_saw"
|
||||
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
|
||||
build_path = /obj/item/circular_saw/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/aliendrill
|
||||
name = "Alien Drill"
|
||||
desc = "An advanced drill obtained through Abductor technology."
|
||||
id = "alien_drill"
|
||||
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
|
||||
build_path = /obj/item/surgicaldrill/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/aliencautery
|
||||
name = "Alien Cautery"
|
||||
desc = "An advanced cautery obtained through Abductor technology."
|
||||
id = "alien_cautery"
|
||||
req_tech = list("biotech" = 4, "materials" = 4, "abductor" = 3)
|
||||
build_path = /obj/item/cautery/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////Cybernetic Implants////////////
|
||||
@@ -162,167 +162,166 @@
|
||||
name = "Welding Shield Eyes"
|
||||
desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision."
|
||||
id = "ci-welding"
|
||||
req_tech = list("materials" = 4, "biotech" = 4, "engineering" = 5, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 400)
|
||||
build_path = /obj/item/organ/eyes/robotic/shield
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_gloweyes
|
||||
name = "Luminescent Eyes"
|
||||
desc = "A pair of cybernetic eyes that can emit multicolored light"
|
||||
id = "ci-gloweyes"
|
||||
req_tech = list("materials" = 3, "biotech" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/organ/eyes/robotic/glow
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_breather
|
||||
name = "Breathing Tube Implant"
|
||||
desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked."
|
||||
id = "ci-breather"
|
||||
req_tech = list("materials" = 2, "biotech" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 35
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 250)
|
||||
build_path = /obj/item/organ/cyberimp/mouth/breathing_tube
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_surgical
|
||||
name = "Surgical Arm Implant"
|
||||
desc = "A set of surgical tools hidden behind a concealed panel on the user's arm."
|
||||
id = "ci-surgery"
|
||||
req_tech = list("materials" = 3, "engineering" = 3, "biotech" = 3, "programming" = 2, "magnets" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
|
||||
construction_time = 200
|
||||
build_path = /obj/item/organ/cyberimp/arm/surgery
|
||||
category = list("Misc", "Medical Designs")
|
||||
name = "Surgical Arm Implant"
|
||||
desc = "A set of surgical tools hidden behind a concealed panel on the user's arm."
|
||||
id = "ci-surgery"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
|
||||
construction_time = 200
|
||||
build_path = /obj/item/organ/cyberimp/arm/surgery
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_toolset
|
||||
name = "Toolset Arm Implant"
|
||||
desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm."
|
||||
id = "ci-toolset"
|
||||
req_tech = list("materials" = 3, "engineering" = 4, "biotech" = 4, "powerstorage" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
|
||||
construction_time = 200
|
||||
build_path = /obj/item/organ/cyberimp/arm/toolset
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_medical_hud
|
||||
name = "Medical HUD Implant"
|
||||
desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control."
|
||||
id = "ci-medhud"
|
||||
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/hud/medical
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_security_hud
|
||||
name = "Security HUD Implant"
|
||||
desc = "These cybernetic eyes will display a security HUD over everything you see. Wiggle eyes to control."
|
||||
id = "ci-sechud"
|
||||
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 4, "combat" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 750, MAT_GOLD = 750)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/hud/security
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_xray
|
||||
name = "X-Ray Eyes"
|
||||
desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
|
||||
id = "ci-xray"
|
||||
req_tech = list("materials" = 7, "programming" = 5, "biotech" = 7, "magnets" = 5,"plasmatech" = 6)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 1000)
|
||||
build_path = /obj/item/organ/eyes/robotic/xray
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_thermals
|
||||
name = "Thermal Eyes"
|
||||
desc = "These cybernetic eyes will give you Thermal vision. Vertical slit pupil included."
|
||||
id = "ci-thermals"
|
||||
req_tech = list("materials" = 6, "programming" = 4, "biotech" = 7, "magnets" = 5,"plasmatech" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/organ/eyes/robotic/thermals
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_antidrop
|
||||
name = "Anti-Drop Implant"
|
||||
desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle."
|
||||
id = "ci-antidrop"
|
||||
req_tech = list("materials" = 5, "programming" = 6, "biotech" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400)
|
||||
build_path = /obj/item/organ/cyberimp/brain/anti_drop
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_antistun
|
||||
name = "CNS Rebooter Implant"
|
||||
desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned."
|
||||
id = "ci-antistun"
|
||||
req_tech = list("materials" = 6, "programming" = 5, "biotech" = 6)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/organ/cyberimp/brain/anti_stun
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_nutriment
|
||||
name = "Nutriment Pump Implant"
|
||||
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
|
||||
id = "ci-nutriment"
|
||||
req_tech = list("materials" = 3, "powerstorage" = 4, "biotech" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500)
|
||||
build_path = /obj/item/organ/cyberimp/chest/nutriment
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_nutriment_plus
|
||||
name = "Nutriment Pump Implant PLUS"
|
||||
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
|
||||
id = "ci-nutrimentplus"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 4, "biotech" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750)
|
||||
build_path = /obj/item/organ/cyberimp/chest/nutriment/plus
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_reviver
|
||||
name = "Reviver Implant"
|
||||
desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!"
|
||||
id = "ci-reviver"
|
||||
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500)
|
||||
build_path = /obj/item/organ/cyberimp/chest/reviver
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_thrusters
|
||||
name = "Thrusters Set Implant"
|
||||
desc = "This implant will allow you to use gas from environment or your internals for propulsion in zero-gravity areas."
|
||||
id = "ci-thrusters"
|
||||
req_tech = list("materials" = 5, "biotech" = 5, "magnets" = 4, "engineering" = 7)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 80
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 1000)
|
||||
build_path = /obj/item/organ/cyberimp/chest/thrusters
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Regular Implants/////////////
|
||||
@@ -332,51 +331,51 @@
|
||||
name = "Implanter"
|
||||
desc = "A sterile automatic implant injector."
|
||||
id = "implanter"
|
||||
req_tech = list("materials" = 2, "biotech" = 3, "programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 200)
|
||||
build_path = /obj/item/implanter
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/implantcase
|
||||
name = "Implant Case"
|
||||
desc = "A glass case for containing an implant."
|
||||
id = "implantcase"
|
||||
req_tech = list("biotech" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
build_path = /obj/item/implantcase
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/implant_sadtrombone
|
||||
name = "Sad Trombone Implant Case"
|
||||
desc = "Makes death amusing."
|
||||
id = "implant_trombone"
|
||||
req_tech = list("materials" = 2, "biotech" = 3, "programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_BANANIUM = 500)
|
||||
build_path = /obj/item/implantcase/sad_trombone
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL //if you get bananium you get the sad trombones.
|
||||
|
||||
/datum/design/implant_chem
|
||||
name = "Chemical Implant Case"
|
||||
desc = "A glass case containing an implant."
|
||||
id = "implant_chem"
|
||||
req_tech = list("materials" = 3, "biotech" = 5,)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 700)
|
||||
build_path = /obj/item/implantcase/chem
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/implant_tracking
|
||||
name = "Tracking Implant Case"
|
||||
desc = "A glass case containing an implant."
|
||||
id = "implant_tracking"
|
||||
req_tech = list("materials" = 2, "biotech" = 3, "magnets" = 3, "programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/implantcase/track
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
//Cybernetic organs
|
||||
|
||||
@@ -384,48 +383,48 @@
|
||||
name = "Cybernetic Liver"
|
||||
desc = "A cybernetic liver"
|
||||
id = "cybernetic_liver"
|
||||
req_tech = list("biotech" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/organ/liver/cybernetic
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cybernetic_heart
|
||||
name = "Cybernetic Heart"
|
||||
desc = "A cybernetic heart"
|
||||
id = "cybernetic_heart"
|
||||
req_tech = list("biotech" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/organ/heart/cybernetic
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cybernetic_liver_u
|
||||
name = "Upgraded Cybernetic Liver"
|
||||
desc = "An upgraded cybernetic liver"
|
||||
id = "cybernetic_liver_u"
|
||||
req_tech = list("biotech" = 5, "materials" = 5, "plasmatech" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/organ/liver/cybernetic/upgraded
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cybernetic_lungs
|
||||
name = "Cybernetic Lungs"
|
||||
desc = "A pair of cybernetic lungs."
|
||||
id = "cybernetic_lungs"
|
||||
req_tech = list("biotech" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/organ/lungs/cybernetic
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cybernetic_lungs_u
|
||||
name = "Upgraded Cybernetic Lungs"
|
||||
desc = "A pair of upgraded cybernetic lungs."
|
||||
id = "cybernetic_lungs_u"
|
||||
req_tech = list("biotech" = 5, "materials" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500)
|
||||
build_path = /obj/item/organ/lungs/cybernetic/upgraded
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////////Mining//////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/drill
|
||||
name = "Mining Drill"
|
||||
desc = "Yours is the drill that will pierce through the rock walls."
|
||||
id = "drill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000) //expensive, but no need for miners.
|
||||
build_path = /obj/item/pickaxe/drill
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/drill_diamond
|
||||
name = "Diamond-Tipped Mining Drill"
|
||||
desc = "Yours is the drill that will pierce the heavens!"
|
||||
id = "drill_diamond"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) //Yes, a whole diamond is needed.
|
||||
build_path = /obj/item/pickaxe/drill/diamonddrill
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/plasmacutter
|
||||
name = "Plasma Cutter"
|
||||
desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff."
|
||||
id = "plasmacutter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_GLASS = 500, MAT_PLASMA = 400)
|
||||
build_path = /obj/item/gun/energy/plasmacutter
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/plasmacutter_adv
|
||||
name = "Advanced Plasma Cutter"
|
||||
desc = "It's an advanced plasma cutter, oh my god."
|
||||
id = "plasmacutter_adv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_PLASMA = 2000, MAT_GOLD = 500)
|
||||
build_path = /obj/item/gun/energy/plasmacutter/adv
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/jackhammer
|
||||
name = "Sonic Jackhammer"
|
||||
desc = "Essentially a handheld planet-cracker. Can drill through walls with ease as well."
|
||||
id = "jackhammer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_DIAMOND = 6000)
|
||||
build_path = /obj/item/pickaxe/drill/jackhammer
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/superresonator
|
||||
name = "Upgraded Resonator"
|
||||
desc = "An upgraded version of the resonator that allows more fields to be active at once."
|
||||
id = "superresonator"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/resonator/upgraded
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/trigger_guard_mod
|
||||
name = "Kinetic Accelerator Trigger Guard Mod"
|
||||
desc = "A device which allows kinetic accelerators to be wielded by any organism."
|
||||
id = "triggermod"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/trigger_guard
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/damage_mod
|
||||
name = "Kinetic Accelerator Damage Mod"
|
||||
desc = "A device which allows kinetic accelerators to deal more damage."
|
||||
id = "damagemod"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/damage
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/cooldown_mod
|
||||
name = "Kinetic Accelerator Cooldown Mod"
|
||||
desc = "A device which decreases the cooldown of a Kinetic Accelerator."
|
||||
id = "cooldownmod"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/cooldown
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/range_mod
|
||||
name = "Kinetic Accelerator Range Mod"
|
||||
desc = "A device which allows kinetic accelerators to fire at a further range."
|
||||
id = "rangemod"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/range
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/hyperaccelerator
|
||||
name = "Kinetic Accelerator Mining AoE Mod"
|
||||
desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock."
|
||||
id = "hypermod"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -0,0 +1,316 @@
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////////HUDs////////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/health_hud
|
||||
name = "Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
|
||||
id = "health_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/health
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/health_hud_night
|
||||
name = "Night Vision Health Scanner HUD"
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
id = "health_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/security_hud
|
||||
name = "Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
|
||||
id = "security_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/security
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/security_hud_night
|
||||
name = "Night Vision Security HUD"
|
||||
desc = "A heads-up display which provides id data and vision in complete darkness."
|
||||
id = "security_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/diagnostic_hud
|
||||
name = "Diagnostic HUD"
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery."
|
||||
id = "diagnostic_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/diagnostic_hud_night
|
||||
name = "Night Vision Diagnostic HUD"
|
||||
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
|
||||
id = "diagnostic_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////////Misc///////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/welding_mask
|
||||
name = "Welding Gas Mask"
|
||||
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
|
||||
id = "weldingmask"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/clothing/mask/gas/welding
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/portaseeder
|
||||
name = "Portable Seed Extractor"
|
||||
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
|
||||
id = "portaseeder"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
|
||||
build_path = /obj/item/storage/bag/plants/portaseeder
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/air_horn
|
||||
name = "Air Horn"
|
||||
desc = "Damn son, where'd you find this?"
|
||||
id = "air_horn"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000)
|
||||
build_path = /obj/item/bikehorn/airhorn
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK!
|
||||
|
||||
/datum/design/mesons
|
||||
name = "Optical Meson Scanners"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
|
||||
id = "mesons"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/engine_goggles
|
||||
name = "Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
|
||||
id = "engine_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/tray_goggles
|
||||
name = "Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
|
||||
id = "tray_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/nvgmesons
|
||||
name = "Night Vision Optical Meson Scanners"
|
||||
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
|
||||
id = "nvgmesons"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/meson/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/night_vision_goggles
|
||||
name = "Night Vision Goggles"
|
||||
desc = "Goggles that let you see through darkness unhindered."
|
||||
id = "night_visision_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/magboots
|
||||
name = "Magnetic Boots"
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
id = "magboots"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500)
|
||||
build_path = /obj/item/clothing/shoes/magboots
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/sci_goggles
|
||||
name = "Science Goggles"
|
||||
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
|
||||
id = "scigoggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/science
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/handdrill
|
||||
name = "Hand Drill"
|
||||
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
|
||||
id = "handdrill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
|
||||
build_path = /obj/item/screwdriver/power
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/jawsoflife
|
||||
name = "Jaws of Life"
|
||||
desc = "A small, compact Jaws of Life with an interchangeable pry jaws and cutting jaws"
|
||||
id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP
|
||||
build_path = /obj/item/crowbar/power
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwrench
|
||||
name = "Alien Wrench"
|
||||
desc = "An advanced wrench obtained through Abductor technology."
|
||||
id = "alien_wrench"
|
||||
build_path = /obj/item/wrench/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwirecutters
|
||||
name = "Alien Wirecutters"
|
||||
desc = "Advanced wirecutters obtained through Abductor technology."
|
||||
id = "alien_wirecutters"
|
||||
build_path = /obj/item/wirecutters/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienscrewdriver
|
||||
name = "Alien Screwdriver"
|
||||
desc = "An advanced screwdriver obtained through Abductor technology."
|
||||
id = "alien_screwdriver"
|
||||
build_path = /obj/item/screwdriver/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/aliencrowbar
|
||||
name = "Alien Crowbar"
|
||||
desc = "An advanced crowbar obtained through Abductor technology."
|
||||
id = "alien_crowbar"
|
||||
build_path = /obj/item/crowbar/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienwelder
|
||||
name = "Alien Welding Tool"
|
||||
desc = "An advanced welding tool obtained through Abductor technology."
|
||||
id = "alien_welder"
|
||||
build_path = /obj/item/weldingtool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/alienmultitool
|
||||
name = "Alien Multitool"
|
||||
desc = "An advanced multitool obtained through Abductor technology."
|
||||
id = "alien_multitool"
|
||||
build_path = /obj/item/device/multitool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/diskplantgene
|
||||
name = "Plant Data Disk"
|
||||
desc = "A disk for storing plant genetic data."
|
||||
id = "diskplantgene"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=200, MAT_GLASS=100)
|
||||
build_path = /obj/item/disk/plantgene
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Janitor Designs//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/advmop
|
||||
name = "Advanced Mop"
|
||||
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
|
||||
id = "advmop"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 200)
|
||||
build_path = /obj/item/mop/advanced
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/blutrash
|
||||
name = "Trashbag of Holding"
|
||||
desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage."
|
||||
id = "blutrash"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500)
|
||||
build_path = /obj/item/storage/bag/trash/bluespace
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/buffer
|
||||
name = "Floor Buffer Upgrade"
|
||||
desc = "A floor buffer that can be attached to vehicular janicarts."
|
||||
id = "buffer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/janiupgrade
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/holosign
|
||||
name = "Holographic Sign Projector"
|
||||
desc = "A holograpic projector used to project various warning signs."
|
||||
id = "holosign"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/holosign_creator
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Tools//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/exwelder
|
||||
name = "Experimental Welding Tool"
|
||||
desc = "An experimental welder capable of self-fuel generation."
|
||||
id = "exwelder"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
|
||||
build_path = /obj/item/weldingtool/experimental
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -6,96 +6,95 @@
|
||||
name = "Basic Power Cell"
|
||||
desc = "A basic power cell that holds 1 MJ of energy."
|
||||
id = "basic_cell"
|
||||
req_tech = list("powerstorage" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE |MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 50)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell
|
||||
category = list("Misc","Power Designs","Machinery","initial")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/high_cell
|
||||
name = "High-Capacity Power Cell"
|
||||
desc = "A power cell that holds 10 MJ of energy."
|
||||
id = "high_cell"
|
||||
req_tech = list("powerstorage" = 2)
|
||||
build_type = PROTOLATHE | AUTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 60)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/high
|
||||
category = list("Misc","Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/super_cell
|
||||
name = "Super-Capacity Power Cell"
|
||||
desc = "A power cell that holds 20 MJ of energy."
|
||||
id = "super_cell"
|
||||
req_tech = list("powerstorage" = 3, "materials" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 70)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/super
|
||||
category = list("Misc","Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/hyper_cell
|
||||
name = "Hyper-Capacity Power Cell"
|
||||
desc = "A power cell that holds 30 MJ of energy."
|
||||
id = "hyper_cell"
|
||||
req_tech = list("powerstorage" = 5, "materials" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 80)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/hyper
|
||||
category = list("Misc","Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/bluespace_cell
|
||||
name = "Bluespace Power Cell"
|
||||
desc = "A power cell that holds 40 MJ of energy."
|
||||
id = "bluespace_cell"
|
||||
req_tech = list("powerstorage" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300, MAT_BLUESPACE = 100)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/bluespace
|
||||
category = list("Misc","Power Designs")
|
||||
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/light_replacer
|
||||
name = "Light Replacer"
|
||||
desc = "A device to automatically replace lights. Refill with working lightbulbs."
|
||||
id = "light_replacer"
|
||||
req_tech = list("magnets" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000)
|
||||
build_path = /obj/item/device/lightreplacer
|
||||
category = list("Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/inducer
|
||||
name = "Inducer"
|
||||
desc = "The NT-75 Electromagnetic Power Inducer can wirelessly induce electric charge in an object, allowing you to recharge power cells without having to remove them."
|
||||
id = "inducer"
|
||||
req_tech = list("powerstorage" = 4, "engineering" = 4, "magnets" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/inducer/sci
|
||||
category = list("Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/pacman
|
||||
name = "Machine Design (PACMAN-type Generator Board)"
|
||||
desc = "The circuit board that for a PACMAN-type portable generator."
|
||||
id = "pacman"
|
||||
req_tech = list("programming" = 2, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/circuitboard/machine/pacman
|
||||
category = list("Engineering Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/pacman/super
|
||||
name = "Machine Design (SUPERPACMAN-type Generator Board)"
|
||||
desc = "The circuit board that for a SUPERPACMAN-type portable generator."
|
||||
id = "superpacman"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/circuitboard/machine/pacman/super
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/pacman/mrs
|
||||
name = "Machine Design (MRSPACMAN-type Generator Board)"
|
||||
desc = "The circuit board that for a MRSPACMAN-type portable generator."
|
||||
id = "mrspacman"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5, "plasmatech" = 4)
|
||||
build_path = /obj/item/circuitboard/machine/pacman/mrs
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
name = "Alien Alloy"
|
||||
desc = "A sheet of reverse-engineered alien alloy."
|
||||
id = "alienalloy"
|
||||
req_tech = list("abductor" = 1, "materials" = 7, "plasmatech" = 2)
|
||||
build_type = PROTOLATHE | SMELTER
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 4000)
|
||||
build_path = /obj/item/stack/sheet/mineral/abductor
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
@@ -6,272 +6,271 @@
|
||||
name = "Rapid Part Exchange Device"
|
||||
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
|
||||
id = "rped"
|
||||
req_tech = list("engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000) //hardcore
|
||||
build_path = /obj/item/storage/part_replacer
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/BS_RPED
|
||||
name = "Bluespace RPED"
|
||||
desc = "Powered by bluespace technology, this RPED variant can upgrade buildings from a distance, without needing to remove the panel first."
|
||||
id = "bs_rped"
|
||||
req_tech = list("engineering" = 4, "bluespace" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 5000, MAT_SILVER = 2500) //hardcore
|
||||
build_path = /obj/item/storage/part_replacer/bluespace
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
//Capacitors
|
||||
/datum/design/basic_capacitor
|
||||
name = "Basic Capacitor"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_capacitor"
|
||||
req_tech = list("powerstorage" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
|
||||
build_path = /obj/item/stock_parts/capacitor
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/adv_capacitor
|
||||
name = "Advanced Capacitor"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_capacitor"
|
||||
req_tech = list("powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
|
||||
build_path = /obj/item/stock_parts/capacitor/adv
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/super_capacitor
|
||||
name = "Super Capacitor"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "super_capacitor"
|
||||
req_tech = list("powerstorage" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100)
|
||||
build_path = /obj/item/stock_parts/capacitor/super
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/quadratic_capacitor
|
||||
name = "Quadratic Capacitor"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "quadratic_capacitor"
|
||||
req_tech = list("powerstorage" = 6, "engineering" = 5, "materials" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/stock_parts/capacitor/quadratic
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
//Scanning modules
|
||||
/datum/design/basic_scanning
|
||||
name = "Basic Scanning Module"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_scanning"
|
||||
req_tech = list("magnets" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
|
||||
build_path = /obj/item/stock_parts/scanning_module
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/adv_scanning
|
||||
name = "Advanced Scanning Module"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_scanning"
|
||||
req_tech = list("magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
build_path = /obj/item/stock_parts/scanning_module/adv
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/phasic_scanning
|
||||
name = "Phasic Scanning Module"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "phasic_scanning"
|
||||
req_tech = list("magnets" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_SILVER = 60)
|
||||
build_path = /obj/item/stock_parts/scanning_module/phasic
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/triphasic_scanning
|
||||
name = "Triphasic Scanning Module"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "triphasic_scanning"
|
||||
req_tech = list("magnets" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 30, MAT_BLUESPACE = 30)
|
||||
build_path = /obj/item/stock_parts/scanning_module/triphasic
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
//Maipulators
|
||||
/datum/design/micro_mani
|
||||
name = "Micro Manipulator"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "micro_mani"
|
||||
req_tech = list("materials" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100)
|
||||
build_path = /obj/item/stock_parts/manipulator
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/nano_mani
|
||||
name = "Nano Manipulator"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "nano_mani"
|
||||
req_tech = list("materials" = 3, "programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
build_path = /obj/item/stock_parts/manipulator/nano
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/pico_mani
|
||||
name = "Pico Manipulator"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "pico_mani"
|
||||
req_tech = list("materials" = 5, "programming" = 4, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/stock_parts/manipulator/pico
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/femto_mani
|
||||
name = "Femto Manipulator"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "femto_mani"
|
||||
req_tech = list("materials" = 7, "programming" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_DIAMOND = 30, MAT_TITANIUM = 30)
|
||||
build_path = /obj/item/stock_parts/manipulator/femto
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
//Micro-lasers
|
||||
/datum/design/basic_micro_laser
|
||||
name = "Basic Micro-Laser"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_micro_laser"
|
||||
req_tech = list("magnets" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
|
||||
build_path = /obj/item/stock_parts/micro_laser
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/high_micro_laser
|
||||
name = "High-Power Micro-Laser"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "high_micro_laser"
|
||||
req_tech = list("magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
build_path = /obj/item/stock_parts/micro_laser/high
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/ultra_micro_laser
|
||||
name = "Ultra-High-Power Micro-Laser"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "ultra_micro_laser"
|
||||
req_tech = list("magnets" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_URANIUM = 60)
|
||||
build_path = /obj/item/stock_parts/micro_laser/ultra
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/quadultra_micro_laser
|
||||
name = "Quad-Ultra Micro-Laser"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "quadultra_micro_laser"
|
||||
req_tech = list("magnets" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 100, MAT_DIAMOND = 60)
|
||||
build_path = /obj/item/stock_parts/micro_laser/quadultra
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/basic_matter_bin
|
||||
name = "Basic Matter Bin"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_matter_bin"
|
||||
req_tech = list("materials" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100)
|
||||
build_path = /obj/item/stock_parts/matter_bin
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/adv_matter_bin
|
||||
name = "Advanced Matter Bin"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_matter_bin"
|
||||
req_tech = list("materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
build_path = /obj/item/stock_parts/matter_bin/adv
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/super_matter_bin
|
||||
name = "Super Matter Bin"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "super_matter_bin"
|
||||
req_tech = list("materials" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/stock_parts/matter_bin/super
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/bluespace_matter_bin
|
||||
name = "Bluespace Matter Bin"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "bluespace_matter_bin"
|
||||
req_tech = list("materials" = 7, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 250, MAT_DIAMOND = 100, MAT_BLUESPACE = 100)
|
||||
build_path = /obj/item/stock_parts/matter_bin/bluespace
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
//T-Comms devices
|
||||
/datum/design/subspace_ansible
|
||||
name = "Subspace Ansible"
|
||||
desc = "A compact module capable of sensing extradimensional activity."
|
||||
id = "s-ansible"
|
||||
req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/ansible
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/hyperwave_filter
|
||||
name = "Hyperwave Filter"
|
||||
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
||||
id = "s-filter"
|
||||
req_tech = list("programming" = 3, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/filter
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/subspace_amplifier
|
||||
name = "Subspace Amplifier"
|
||||
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
|
||||
id = "s-amplifier"
|
||||
req_tech = list("programming" = 3, "magnets" = 4, "materials" = 3, "bluespace" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GOLD = 100, MAT_URANIUM = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/amplifier
|
||||
@@ -281,38 +280,38 @@
|
||||
name = "Subspace Treatment Disk"
|
||||
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
|
||||
id = "s-treatment"
|
||||
req_tech = list("programming" = 2, "magnets" = 3, "materials" = 2, "bluespace" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 200)
|
||||
build_path = /obj/item/stock_parts/subspace/treatment
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/subspace_analyzer
|
||||
name = "Subspace Analyzer"
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
id = "s-analyzer"
|
||||
req_tech = list("programming" = 3, "magnets" = 4, "materials" = 2, "bluespace" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GOLD = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/analyzer
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/subspace_crystal
|
||||
name = "Ansible Crystal"
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
id = "s-crystal"
|
||||
req_tech = list("magnets" = 2, "materials" = 2, "bluespace" = 3, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 800, MAT_SILVER = 100, MAT_GOLD = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/crystal
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/subspace_transmitter
|
||||
name = "Subspace Transmitter"
|
||||
desc = "A large piece of equipment used to open a window into the subspace dimension."
|
||||
id = "s-transmitter"
|
||||
req_tech = list("magnets" = 3, "materials" = 4, "bluespace" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 100, MAT_SILVER = 100, MAT_URANIUM = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/transmitter
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
name = "Machine Design (Subspace Receiver)"
|
||||
desc = "Allows for the construction of Subspace Receiver equipment."
|
||||
id = "s-receiver"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1)
|
||||
build_path = /obj/item/circuitboard/machine/telecomms/receiver
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -14,7 +13,6 @@
|
||||
name = "Machine Design (Bus Mainframe)"
|
||||
desc = "Allows for the construction of Telecommunications Bus Mainframes."
|
||||
id = "s-bus"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/telecomms/bus
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -22,7 +20,6 @@
|
||||
name = "Machine Design (Hub Mainframe)"
|
||||
desc = "Allows for the construction of Telecommunications Hub Mainframes."
|
||||
id = "s-hub"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/telecomms/hub
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -30,7 +27,6 @@
|
||||
name = "Machine Design (Relay Mainframe)"
|
||||
desc = "Allows for the construction of Telecommunications Relay Mainframes."
|
||||
id = "s-relay"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/telecomms/relay
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -38,7 +34,6 @@
|
||||
name = "Machine Design (Processor Unit)"
|
||||
desc = "Allows for the construction of Telecommunications Processor equipment."
|
||||
id = "s-processor"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/telecomms/processor
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -46,7 +41,6 @@
|
||||
name = "Machine Design (Server Mainframe)"
|
||||
desc = "Allows for the construction of Telecommunications Servers."
|
||||
id = "s-server"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/telecomms/server
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -54,6 +48,5 @@
|
||||
name = "Machine Design (Subspace Broadcaster)"
|
||||
desc = "Allows for the construction of Subspace Broadcasting equipment."
|
||||
id = "s-broadcaster"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/circuitboard/machine/telecomms/broadcaster
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
@@ -6,163 +6,173 @@
|
||||
name = "Test-Range Firing Pin"
|
||||
desc = "This safety firing pin allows firearms to be operated within proximity to a firing range."
|
||||
id = "pin_testing"
|
||||
req_tech = list("combat" = 2, "materials" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 300)
|
||||
build_path = /obj/item/device/firing_pin/test_range
|
||||
category = list("Firing Pins")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/pin_mindshield
|
||||
name = "Mindshield Firing Pin"
|
||||
desc = "This is a security firing pin which only authorizes users who are mindshield-implanted."
|
||||
id = "pin_loyalty"
|
||||
req_tech = list("combat" = 5, "materials" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 600, MAT_DIAMOND = 600, MAT_URANIUM = 200)
|
||||
build_path = /obj/item/device/firing_pin/implant/mindshield
|
||||
category = list("Firing Pins")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/stunrevolver
|
||||
name = "Tesla Revolver"
|
||||
desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers."
|
||||
id = "stunrevolver"
|
||||
req_tech = list("combat" = 4, "materials" = 4, "powerstorage" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 10000, MAT_SILVER = 10000)
|
||||
build_path = /obj/item/gun/energy/tesla_revolver
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/nuclear_gun
|
||||
name = "Advanced Energy Gun"
|
||||
desc = "An energy gun with an experimental miniaturized reactor."
|
||||
id = "nuclear_gun"
|
||||
req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 3000, MAT_TITANIUM = 1000)
|
||||
build_path = /obj/item/gun/energy/e_gun/nuclear
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/tele_shield
|
||||
name = "Telescopic Riot Shield"
|
||||
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
|
||||
id = "tele_shield"
|
||||
req_tech = list("combat" = 4, "materials" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
|
||||
build_path = /obj/item/shield/riot/tele
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/beamrifle
|
||||
name = "Beam Marksman Rifle"
|
||||
desc = "A powerful long ranged anti-material rifle that fires charged particle beams to obliterate targets."
|
||||
id = "beamrifle"
|
||||
req_tech = list("combat" = 7, "magnets" = 5, "powerstorage" = 5, "materials" = 7, "programming" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000)
|
||||
build_path = /obj/item/gun/energy/beam_rifle
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/decloner
|
||||
name = "Decloner"
|
||||
desc = "Your opponent will bubble into a messy pile of goop."
|
||||
id = "decloner"
|
||||
req_tech = list("combat" = 5, "materials" = 5, "biotech" = 6, "plasmatech" = 7)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000)
|
||||
reagents_list = list("mutagen" = 40)
|
||||
build_path = /obj/item/gun/energy/decloner
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/rapidsyringe
|
||||
name = "Rapid Syringe Gun"
|
||||
desc = "A gun that fires many syringes."
|
||||
id = "rapidsyringe"
|
||||
req_tech = list("combat" = 2, "biotech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/gun/syringe/rapidsyringe
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL //uwu
|
||||
|
||||
/datum/design/temp_gun
|
||||
name = "Temperature Gun"
|
||||
desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want
|
||||
id = "temp_gun"
|
||||
req_tech = list("combat" = 4, "materials" = 4, "powerstorage" = 3, "magnets" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000)
|
||||
build_path = /obj/item/gun/energy/temperature
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/flora_gun
|
||||
name = "Floral Somatoray"
|
||||
desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life."
|
||||
id = "flora_gun"
|
||||
req_tech = list("materials" = 2, "biotech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 500)
|
||||
reagents_list = list("radium" = 20)
|
||||
build_path = /obj/item/gun/energy/floragun
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/large_grenade
|
||||
name = "Large Grenade"
|
||||
desc = "A grenade that affects a larger area and use larger containers."
|
||||
id = "large_Grenade"
|
||||
req_tech = list("combat" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
build_path = /obj/item/grenade/chem_grenade/large
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/pyro_grenade
|
||||
name = "Pyro Grenade"
|
||||
desc = "An advanced grenade that is able to self ignite its mixture."
|
||||
id = "pyro_Grenade"
|
||||
req_tech = list("combat" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_PLASMA = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/pyro
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cryo_grenade
|
||||
name = "Cryo Grenade"
|
||||
desc = "An advanced grenade that rapidly cools its contents upon detonation."
|
||||
id = "cryo_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/cryo
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/adv_grenade
|
||||
name = "Advanced Release Grenade"
|
||||
desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter."
|
||||
id = "adv_Grenade"
|
||||
req_tech = list("combat" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/adv_release
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/xray
|
||||
name = "Xray Laser Gun"
|
||||
desc = "Not quite as menacing as it sounds"
|
||||
id = "xray"
|
||||
req_tech = list("combat" = 7, "magnets" = 5, "biotech" = 5, "powerstorage" = 4)
|
||||
id = "xray_laser"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 5000, MAT_URANIUM = 4000, MAT_METAL = 5000, MAT_TITANIUM = 2000, MAT_BLUESPACE = 2000)
|
||||
build_path = /obj/item/gun/energy/xray
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/ioncarbine
|
||||
name = "Ion Carbine"
|
||||
desc = "How to dismantle a cyborg : The gun."
|
||||
id = "ioncarbine"
|
||||
req_tech = list("combat" = 5, "magnets" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 6000, MAT_METAL = 8000, MAT_URANIUM = 2000)
|
||||
build_path = /obj/item/gun/energy/ionrifle/carbine
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/wormhole_projector
|
||||
name = "Bluespace Wormhole Projector"
|
||||
desc = "A projector that emits high density quantum-coupled bluespace beams."
|
||||
id = "wormholeprojector"
|
||||
req_tech = list("combat" = 5, "engineering" = 5, "bluespace" = 7, "plasmatech" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 2000, MAT_METAL = 5000, MAT_DIAMOND = 2000, MAT_BLUESPACE = 3000)
|
||||
build_path = /obj/item/gun/energy/wormhole_projector
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
//WT550 Mags
|
||||
|
||||
@@ -170,11 +180,11 @@
|
||||
name = "WT-550 Auto Gun Magazine (4.6x30mm)"
|
||||
desc = "A 20 round magazine for the out of date security WT-550 Auto Rifle"
|
||||
id = "mag_oldsmg"
|
||||
req_tech = list("combat" = 1, "materials" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mag_oldsmg/ap_mag
|
||||
name = "WT-550 Auto Gun Armour Piercing Magazine (4.6x30mm AP)"
|
||||
@@ -189,53 +199,54 @@
|
||||
id = "mag_oldsmg_ic"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/stunshell
|
||||
name = "Stun Shell"
|
||||
desc = "A stunning shell for a shotgun."
|
||||
id = "stunshell"
|
||||
req_tech = list("combat" = 3, "materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/stunslug
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/techshell
|
||||
name = "Unloaded Technological Shotshell"
|
||||
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
|
||||
id = "techshotshell"
|
||||
req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 4, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/techshell
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/suppressor
|
||||
name = "Universal Suppressor"
|
||||
desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
|
||||
id = "suppressor"
|
||||
req_tech = list("combat" = 6, "engineering" = 5, "syndicate" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
build_path = /obj/item/suppressor
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/gravitygun
|
||||
name = "One-point Bluespace-gravitational Manipulator"
|
||||
desc = "A multi-mode device that blasts one-point bluespace-gravitational bolts that locally distort gravity."
|
||||
id = "gravitygun"
|
||||
req_tech = list("combat" = 4, "materials" = 5, "bluespace" = 4, "powerstorage" = 4, "magnets" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 8000, MAT_URANIUM = 8000, MAT_GLASS = 12000, MAT_METAL = 12000, MAT_DIAMOND = 3000, MAT_BLUESPACE = 3000)
|
||||
build_path = /obj/item/gun/energy/gravity_gun
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/largecrossbow
|
||||
name = "Energy Crossbow"
|
||||
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
|
||||
id = "largecrossbow"
|
||||
req_tech = list("combat" = 5, "engineering" = 3, "magnets" = 5, "syndicate" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1500, MAT_URANIUM = 1500, MAT_SILVER = 1500)
|
||||
build_path = /obj/item/gun/energy/kinetic_accelerator/crossbow/large
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
@@ -7,42 +7,35 @@ It is used to destroy hand-held objects and advance technological research. Cont
|
||||
|
||||
Note: Must be placed within 3 tiles of the R&D Console
|
||||
*/
|
||||
/obj/machinery/r_n_d/destructive_analyzer
|
||||
/obj/machinery/rnd/destructive_analyzer
|
||||
name = "destructive analyzer"
|
||||
desc = "Learn science by destroying things!"
|
||||
icon_state = "d_analyzer"
|
||||
circuit = /obj/item/circuitboard/machine/destructive_analyzer
|
||||
var/decon_mod = 0
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/RefreshParts()
|
||||
/obj/machinery/rnd/destructive_analyzer/RefreshParts()
|
||||
var/T = 0
|
||||
for(var/obj/item/stock_parts/S in component_parts)
|
||||
T += S.rating
|
||||
decon_mod = T
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/proc/ConvertReqString2List(list/source_list)
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/ConvertReqString2List(list/source_list)
|
||||
var/list/temp_list = params2list(source_list)
|
||||
for(var/O in temp_list)
|
||||
temp_list[O] = text2num(temp_list[O])
|
||||
return temp_list
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/disconnect_console()
|
||||
/obj/machinery/rnd/destructive_analyzer/disconnect_console()
|
||||
linked_console.linked_destroy = null
|
||||
..()
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/Insert_Item(obj/item/O, mob/user)
|
||||
/obj/machinery/rnd/destructive_analyzer/Insert_Item(obj/item/O, mob/user)
|
||||
if(user.a_intent != INTENT_HARM)
|
||||
. = 1
|
||||
if(!is_insertion_ready(user))
|
||||
return
|
||||
if(!O.origin_tech)
|
||||
to_chat(user, "<span class='warning'>This doesn't seem to have a tech origin!</span>")
|
||||
return
|
||||
var/list/temp_tech = ConvertReqString2List(O.origin_tech)
|
||||
if (temp_tech.len == 0)
|
||||
to_chat(user, "<span class='warning'>You cannot deconstruct this item!</span>")
|
||||
return
|
||||
if(!user.transferItemToLoc(O, src))
|
||||
to_chat(user, "<span class='warning'>\The [O] is stuck to your hand, you cannot put it in the [src.name]!</span>")
|
||||
return
|
||||
@@ -52,9 +45,91 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
flick("d_analyzer_la", src)
|
||||
addtimer(CALLBACK(src, .proc/finish_loading), 10)
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/proc/finish_loading()
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/finish_loading()
|
||||
update_icon()
|
||||
busy = FALSE
|
||||
reset_busy()
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/update_icon()
|
||||
icon_state = "d_analyzer_l"
|
||||
/obj/machinery/rnd/destructive_analyzer/update_icon()
|
||||
if(loaded_item)
|
||||
icon_state = "d_analyzer_l"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/reclaim_materials_from(obj/item/thing)
|
||||
. = 0
|
||||
if(linked_console && linked_console.linked_lathe) //Also sends salvaged materials to a linked protolathe, if any.
|
||||
for(var/material in thing.materials)
|
||||
var/can_insert = min((linked_console.linked_lathe.materials.max_amount - linked_console.linked_lathe.materials.total_amount), (max(thing.materials[material]*(decon_mod/10), thing.materials[material])))
|
||||
linked_console.linked_lathe.materials.insert_amount(can_insert, material)
|
||||
. += can_insert
|
||||
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/destroy_item(obj/item/thing, innermode = FALSE)
|
||||
if(QDELETED(thing) || QDELETED(src) || QDELETED(linked_console))
|
||||
return FALSE
|
||||
if(!innermode)
|
||||
flick("d_analyzer_process", src)
|
||||
busy = TRUE
|
||||
addtimer(CALLBACK(src, .proc/reset_busy), 24)
|
||||
use_power(250)
|
||||
if(thing == loaded_item)
|
||||
loaded_item = null
|
||||
update_icon()
|
||||
var/list/food = thing.GetDeconstructableContents()
|
||||
for(var/obj/item/innerthing in food)
|
||||
destroy_item(innerthing, TRUE)
|
||||
reclaim_materials_from(thing)
|
||||
for(var/mob/M in thing)
|
||||
M.death()
|
||||
if(istype(thing, /obj/item/stack/sheet))
|
||||
var/obj/item/stack/sheet/S = thing
|
||||
if(S.amount > 1 && !innermode)
|
||||
S.amount--
|
||||
else
|
||||
qdel(S)
|
||||
else
|
||||
qdel(thing)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/user_try_decon_id(id, mob/user)
|
||||
if(!istype(loaded_item) || !istype(linked_console))
|
||||
return FALSE
|
||||
if(id && !(id == RESEARCH_MATERIAL_RECLAMATION_ID))
|
||||
var/datum/techweb_node/TN = get_techweb_node_by_id(id)
|
||||
if(!istype(TN))
|
||||
return FALSE
|
||||
var/list/pos1 = techweb_item_boost_check(loaded_item)
|
||||
if(isnull(pos1[id]))
|
||||
return FALSE
|
||||
var/dpath = loaded_item.type
|
||||
if(isnull(TN.boost_item_paths[dpath]))
|
||||
return FALSE
|
||||
var/dboost = TN.boost_item_paths[dpath]
|
||||
var/choice = input("Are you sure you want to destroy [loaded_item.name] for a boost of [dboost? 0 : dboost] in node [TN.display_name]") in list("Proceed", "Cancel")
|
||||
if(choice == "Cancel")
|
||||
return FALSE
|
||||
if(QDELETED(loaded_item) || QDELETED(linked_console) || !user.Adjacent(linked_console) || QDELETED(src))
|
||||
return FALSE
|
||||
SSblackbox.record_feedback("nested_tally", "item_deconstructed", 1, list("[TN.id]", "[loaded_item.type]"))
|
||||
if(destroy_item(loaded_item))
|
||||
linked_console.stored_research.boost_with_path(SSresearch.techweb_nodes[TN.id], dpath)
|
||||
else
|
||||
var/point_value = techweb_item_point_check(loaded_item)
|
||||
if(linked_console.stored_research.deconstructed_items[loaded_item.type])
|
||||
point_value = 0
|
||||
var/choice = input("Are you sure you want to destroy [loaded_item.name] for [point_value? "[point_value] points" : "material reclaimation"]?") in list("Proceed", "Cancel")
|
||||
if(choice == "Cancel")
|
||||
return FALSE
|
||||
if(QDELETED(loaded_item) || QDELETED(linked_console) || !user.Adjacent(linked_console) || QDELETED(src))
|
||||
return FALSE
|
||||
var/dtype = loaded_item.type
|
||||
if(destroy_item(loaded_item))
|
||||
linked_console.stored_research.research_points += point_value
|
||||
linked_console.stored_research.deconstructed_items[dtype] = point_value
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/unload_item()
|
||||
if(!loaded_item)
|
||||
return FALSE
|
||||
loaded_item.forceMove(get_turf(src))
|
||||
loaded_item = null
|
||||
return TRUE
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
#define EFFECT_PROB_VERYHIGH 95
|
||||
|
||||
#define FAIL 8
|
||||
/obj/machinery/r_n_d/experimentor
|
||||
/obj/machinery/rnd/experimentor
|
||||
name = "\improper E.X.P.E.R.I-MENTOR"
|
||||
desc = "A \"replacement\" for the deconstructive analyzer with a slight tendency to catastrophically fail."
|
||||
icon = 'icons/obj/machines/heavy_lathe.dmi'
|
||||
@@ -37,13 +37,14 @@
|
||||
var/list/valid_items = list() //valid items for special reactions like transforming
|
||||
var/list/critical_items = list() //items that can cause critical reactions
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/ConvertReqString2List(list/source_list)
|
||||
/obj/machinery/rnd/experimentor/proc/ConvertReqString2List(list/source_list)
|
||||
var/list/temp_list = params2list(source_list)
|
||||
for(var/O in temp_list)
|
||||
temp_list[O] = text2num(temp_list[O])
|
||||
return temp_list
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/SetTypeReactions()
|
||||
|
||||
/obj/machinery/rnd/experimentor/proc/SetTypeReactions()
|
||||
var/probWeight = 0
|
||||
for(var/I in typesof(/obj/item))
|
||||
if(istype(I, /obj/item/relic))
|
||||
@@ -69,14 +70,14 @@
|
||||
critical_items += I
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/Initialize()
|
||||
/obj/machinery/rnd/experimentor/Initialize()
|
||||
. = ..()
|
||||
|
||||
trackedIan = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list
|
||||
trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in GLOB.mob_living_list
|
||||
SetTypeReactions()
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/RefreshParts()
|
||||
/obj/machinery/rnd/experimentor/RefreshParts()
|
||||
for(var/obj/item/stock_parts/manipulator/M in component_parts)
|
||||
if(resetTime > 0 && (resetTime - M.rating) >= 1)
|
||||
resetTime -= M.rating
|
||||
@@ -85,7 +86,7 @@
|
||||
for(var/obj/item/stock_parts/micro_laser/M in component_parts)
|
||||
badThingCoeff += M.rating
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/checkCircumstances(obj/item/O)
|
||||
/obj/machinery/rnd/experimentor/proc/checkCircumstances(obj/item/O)
|
||||
//snowflake check to only take "made" bombs
|
||||
if(istype(O, /obj/item/device/transfer_valve))
|
||||
var/obj/item/device/transfer_valve/T = O
|
||||
@@ -93,65 +94,106 @@
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/Insert_Item(obj/item/O, mob/user)
|
||||
/obj/machinery/rnd/experimentor/Insert_Item(obj/item/O, mob/user)
|
||||
if(user.a_intent != INTENT_HARM)
|
||||
. = 1
|
||||
if(!is_insertion_ready(user))
|
||||
return
|
||||
if(!checkCircumstances(O))
|
||||
to_chat(user, "<span class='warning'>[O] is not yet valid for [src] and must be completed!</span>")
|
||||
return
|
||||
if(!O.origin_tech)
|
||||
to_chat(user, "<span class='warning'>This doesn't seem to have a tech origin!</span>")
|
||||
return
|
||||
var/list/temp_tech = ConvertReqString2List(O.origin_tech)
|
||||
if (temp_tech.len == 0)
|
||||
to_chat(user, "<span class='warning'>You cannot experiment on this item!</span>")
|
||||
return
|
||||
if(!user.transferItemToLoc(O, src))
|
||||
return
|
||||
loaded_item = O
|
||||
to_chat(user, "<span class='notice'>You add [O] to the machine.</span>")
|
||||
flick("h_lathe_load", src)
|
||||
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/default_deconstruction_crowbar(obj/item/O)
|
||||
/obj/machinery/rnd/experimentor/default_deconstruction_crowbar(obj/item/O)
|
||||
ejectItem()
|
||||
..(O)
|
||||
. = ..(O)
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/attack_hand(mob/user)
|
||||
/obj/machinery/rnd/experimentor/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat = "<center>"
|
||||
var/list/dat = list("<center>")
|
||||
if(!linked_console)
|
||||
dat += "<b><a href='byond://?src=[REF(src)];function=search'>Scan for R&D Console</A></b><br>"
|
||||
dat += "<b><a href='byond://?src=[REF(src)];function=search'>Scan for R&D Console</A></b>"
|
||||
if(loaded_item)
|
||||
dat += "<b>Loaded Item:</b> [loaded_item]<br>"
|
||||
dat += "<b>Technology</b>:<br>"
|
||||
var/list/D = ConvertReqString2List(loaded_item.origin_tech)
|
||||
for(var/T in D)
|
||||
dat += "[T]<br>"
|
||||
dat += "<br><br>Available tests:"
|
||||
dat += "<br><b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_POKE]'>Poke</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_IRRADIATE];'>Irradiate</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_GAS]'>Gas</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_HEAT]'>Burn</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_COLD]'>Freeze</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_OBLITERATE]'>Destroy</A></b><br>"
|
||||
if(istype(loaded_item, /obj/item/relic))
|
||||
dat += "<br><b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_DISCOVER]'>Discover</A></b><br>"
|
||||
dat += "<br><b><a href='byond://?src=[REF(src)];function=eject'>Eject</A>"
|
||||
dat += "<b>Loaded Item:</b> [loaded_item]"
|
||||
|
||||
dat += "<div>Available tests:"
|
||||
dat += "<b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_POKE]'>Poke</A></b>"
|
||||
dat += "<b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_IRRADIATE];'>Irradiate</A></b>"
|
||||
dat += "<b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_GAS]'>Gas</A></b>"
|
||||
dat += "<b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_HEAT]'>Burn</A></b>"
|
||||
dat += "<b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_COLD]'>Freeze</A></b>"
|
||||
dat += "<b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_OBLITERATE]'>Destroy</A></b></div>"
|
||||
if(istype(loaded_item,/obj/item/relic))
|
||||
dat += "<b><a href='byond://?src=[REF(src)];item=[REF(loaded_item)];function=[SCANTYPE_DISCOVER]'>Discover</A></b>"
|
||||
dat += "<b><a href='byond://?src=[REF(src)];function=eject'>Eject</A>"
|
||||
var/list/listin = techweb_item_boost_check(src)
|
||||
if(listin)
|
||||
var/list/output = list("<b><font color='purple'>Research Boost Data:</font></b>")
|
||||
var/list/res = list("<b><font color='blue'>Already researched:</font></b>")
|
||||
var/list/boosted = list("<b><font color='red'>Already boosted:</font></b>")
|
||||
for(var/node_id in listin)
|
||||
var/datum/techweb_node/N = get_techweb_node_by_id(node_id)
|
||||
var/str = "<b>[N.display_name]</b>: [listin[N]] points.</b>"
|
||||
if(SSresearch.science_tech.researched_nodes[N])
|
||||
res += str
|
||||
else if(SSresearch.science_tech.boosted_nodes[N])
|
||||
boosted += str
|
||||
if(SSresearch.science_tech.visible_nodes[N]) //JOY OF DISCOVERY!
|
||||
output += str
|
||||
output += boosted + res
|
||||
dat += output
|
||||
else
|
||||
dat += "<b>Nothing loaded.</b>"
|
||||
dat += "<br><a href='byond://?src=[REF(src)];function=refresh'>Refresh</A><br>"
|
||||
dat += "<br><a href='byond://?src=[REF(src)];close=1'>Close</A><br></center>"
|
||||
dat += "<a href='byond://?src=[REF(src)];function=refresh'>Refresh</A>"
|
||||
dat += "<a href='byond://?src=[REF(src)];close=1'>Close</A></center>"
|
||||
var/datum/browser/popup = new(user, "experimentor","Experimentor", 700, 400, src)
|
||||
popup.set_content(dat)
|
||||
popup.set_content(dat.Join("<br>"))
|
||||
popup.open()
|
||||
onclose(user, "experimentor")
|
||||
|
||||
/obj/machinery/rnd/experimentor/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/matchReaction(matching,reaction)
|
||||
var/scantype = href_list["function"]
|
||||
var/obj/item/process = locate(href_list["item"]) in src
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=experimentor")
|
||||
return
|
||||
if(scantype == "search")
|
||||
var/obj/machinery/computer/rdconsole/D = locate(/obj/machinery/computer/rdconsole) in oview(3,src)
|
||||
if(D)
|
||||
linked_console = D
|
||||
else if(scantype == "eject")
|
||||
ejectItem()
|
||||
else if(scantype == "refresh")
|
||||
updateUsrDialog()
|
||||
else
|
||||
if(recentlyExperimented)
|
||||
to_chat(usr, "<span class='warning'>[src] has been used too recently!</span>")
|
||||
else if(!loaded_item)
|
||||
to_chat(usr, "<span class='warning'>[src] is not currently loaded!</span>")
|
||||
else if(!process || process != loaded_item) //Interface exploit protection (such as hrefs or swapping items with interface set to old item)
|
||||
to_chat(usr, "<span class='danger'>Interface failure detected in [src]. Please try again.</span>")
|
||||
else
|
||||
var/dotype
|
||||
if(text2num(scantype) == SCANTYPE_DISCOVER)
|
||||
dotype = SCANTYPE_DISCOVER
|
||||
else
|
||||
dotype = matchReaction(process,scantype)
|
||||
experiment(dotype,process)
|
||||
use_power(750)
|
||||
if(dotype != FAIL)
|
||||
var/list/datum/techweb_node/nodes = techweb_item_boost_check(process)
|
||||
var/picked = pickweight(nodes) //This should work.
|
||||
if(linked_console)
|
||||
linked_console.stored_research.boost_with_path(picked, process.type)
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/rnd/experimentor/proc/matchReaction(matching,reaction)
|
||||
var/obj/item/D = matching
|
||||
if(D)
|
||||
if(item_reactions.Find("[D.type]"))
|
||||
@@ -165,7 +207,7 @@
|
||||
else
|
||||
return FAIL
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/ejectItem(delete=FALSE)
|
||||
/obj/machinery/rnd/experimentor/proc/ejectItem(delete=FALSE)
|
||||
if(loaded_item)
|
||||
if(cloneMode && cloneCount > 0)
|
||||
visible_message("<span class='notice'>A duplicate [loaded_item] pops out!</span>")
|
||||
@@ -183,12 +225,12 @@
|
||||
qdel(loaded_item)
|
||||
loaded_item = null
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/throwSmoke(turf/where)
|
||||
/obj/machinery/rnd/experimentor/proc/throwSmoke(turf/where)
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(0, where)
|
||||
smoke.start()
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/pickWeighted(list/from)
|
||||
/obj/machinery/rnd/experimentor/proc/pickWeighted(list/from)
|
||||
var/result = FALSE
|
||||
var/counter = 1
|
||||
while(!result)
|
||||
@@ -201,7 +243,7 @@
|
||||
else
|
||||
counter = 1
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/experiment(exp,obj/item/exp_on)
|
||||
/obj/machinery/rnd/experimentor/proc/experiment(exp,obj/item/exp_on)
|
||||
recentlyExperimented = 1
|
||||
icon_state = "h_lathe_wloop"
|
||||
var/chosenchem
|
||||
@@ -481,62 +523,15 @@
|
||||
|
||||
addtimer(CALLBACK(src, .proc/reset_exp), resetTime)
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/reset_exp()
|
||||
/obj/machinery/rnd/experimentor/proc/reset_exp()
|
||||
update_icon()
|
||||
recentlyExperimented = FALSE
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/update_icon()
|
||||
/obj/machinery/rnd/experimentor/update_icon()
|
||||
icon_state = "h_lathe"
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
|
||||
var/scantype = href_list["function"]
|
||||
var/obj/item/process = locate(href_list["item"]) in src
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=experimentor")
|
||||
return
|
||||
else if(scantype == "search")
|
||||
var/obj/machinery/computer/rdconsole/D = locate(/obj/machinery/computer/rdconsole) in oview(3,src)
|
||||
if(D)
|
||||
linked_console = D
|
||||
else if(scantype == "eject")
|
||||
ejectItem()
|
||||
else if(scantype == "refresh")
|
||||
updateUsrDialog()
|
||||
else
|
||||
if(recentlyExperimented)
|
||||
to_chat(usr, "<span class='warning'>[src] has been used too recently!</span>")
|
||||
return
|
||||
else if(!loaded_item)
|
||||
updateUsrDialog() //Set the interface to unloaded mode
|
||||
to_chat(usr, "<span class='warning'>[src] is not currently loaded!</span>")
|
||||
return
|
||||
else if(!process || process != loaded_item) //Interface exploit protection (such as hrefs or swapping items with interface set to old item)
|
||||
updateUsrDialog() //Refresh interface to update interface hrefs
|
||||
to_chat(usr, "<span class='danger'>Interface failure detected in [src]. Please try again.</span>")
|
||||
return
|
||||
var/dotype
|
||||
if(text2num(scantype) == SCANTYPE_DISCOVER)
|
||||
dotype = SCANTYPE_DISCOVER
|
||||
else
|
||||
dotype = matchReaction(process,scantype)
|
||||
experiment(dotype,process)
|
||||
use_power(750)
|
||||
if(dotype != FAIL)
|
||||
if(process && process.origin_tech)
|
||||
var/list/temp_tech = ConvertReqString2List(process.origin_tech)
|
||||
for(var/T in temp_tech)
|
||||
linked_console.files.UpdateTech(T, temp_tech[T])
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
//~~~~~~~~Admin logging proc, aka the Powergamer Alarm~~~~~~~~
|
||||
/obj/machinery/r_n_d/experimentor/proc/warn_admins(mob/user, ReactionName)
|
||||
var/turf/T = get_turf(src)
|
||||
/obj/machinery/rnd/experimentor/proc/warn_admins(user, ReactionName)
|
||||
var/turf/T = get_turf(user)
|
||||
message_admins("Experimentor reaction: [ReactionName] generated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_COORDJMP(T)]",0,1)
|
||||
log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in ([T.x],[T.y],[T.z])")
|
||||
|
||||
@@ -563,7 +558,6 @@
|
||||
name = "strange object"
|
||||
desc = "What mysteries could this hold?"
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
origin_tech = "combat=1;plasmatech=1;powerstorage=1;materials=1"
|
||||
var/realName = "defined object"
|
||||
var/revealed = FALSE
|
||||
var/realProc
|
||||
@@ -583,7 +577,6 @@
|
||||
name = realName
|
||||
cooldownMax = rand(60,300)
|
||||
realProc = pick("teleport","explode","rapidDupe","petSpray","flash","clean","corgicannon")
|
||||
origin_tech = pick("engineering=[rand(2,5)]","magnets=[rand(2,5)]","plasmatech=[rand(2,5)]","programming=[rand(2,5)]","powerstorage=[rand(2,5)]")
|
||||
|
||||
/obj/item/relic/attack_self(mob/user)
|
||||
if(revealed)
|
||||
|
||||
@@ -7,7 +7,7 @@ it creates. All the menus and other manipulation commands are in the R&D console
|
||||
Note: Must be placed west/left of and R&D console to function.
|
||||
|
||||
*/
|
||||
/obj/machinery/r_n_d/protolathe
|
||||
/obj/machinery/rnd/protolathe
|
||||
name = "protolathe"
|
||||
desc = "Converts raw materials into useful objects."
|
||||
icon_state = "protolathe"
|
||||
@@ -15,7 +15,8 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
circuit = /obj/item/circuitboard/machine/protolathe
|
||||
|
||||
var/efficiency_coeff
|
||||
|
||||
var/console_link = TRUE //allow console link.
|
||||
var/requires_console = TRUE
|
||||
var/list/categories = list(
|
||||
"Power Designs",
|
||||
"Medical Designs",
|
||||
@@ -32,8 +33,7 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
|
||||
var/datum/component/material_container/materials
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/Initialize()
|
||||
/obj/machinery/rnd/protolathe/Initialize()
|
||||
create_reagents(0)
|
||||
materials = AddComponent(/datum/component/material_container,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0,
|
||||
@@ -41,7 +41,7 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
materials.precise_insertion = TRUE
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/RefreshParts()
|
||||
/obj/machinery/rnd/protolathe/RefreshParts()
|
||||
reagents.maximum_volume = 0
|
||||
for(var/obj/item/reagent_containers/glass/G in component_parts)
|
||||
reagents.maximum_volume += G.volume
|
||||
@@ -57,7 +57,7 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
T -= M.rating/10
|
||||
efficiency_coeff = min(max(0, T), 1)
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
|
||||
/obj/machinery/rnd/protolathe/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
|
||||
var/list/all_materials = being_built.reagents_list + being_built.materials
|
||||
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
@@ -68,14 +68,69 @@ Note: Must be placed west/left of and R&D console to function.
|
||||
return round(A / max(1, (all_materials[M]*efficiency_coeff)))
|
||||
|
||||
//we eject the materials upon deconstruction.
|
||||
/obj/machinery/r_n_d/protolathe/on_deconstruction()
|
||||
/obj/machinery/rnd/protolathe/on_deconstruction()
|
||||
for(var/obj/item/reagent_containers/glass/G in component_parts)
|
||||
reagents.trans_to(G, G.reagents.maximum_volume)
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
materials.retrieve_all()
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/disconnect_console()
|
||||
/obj/machinery/rnd/protolathe/disconnect_console()
|
||||
linked_console.linked_lathe = null
|
||||
..()
|
||||
|
||||
/obj/machinery/rnd/protolathe/proc/user_try_print_id(id, amount)
|
||||
if((!istype(linked_console) && requires_console) || !id)
|
||||
return FALSE
|
||||
if(istext(amount))
|
||||
amount = text2num(amount)
|
||||
if(isnull(amount))
|
||||
amount = 1
|
||||
var/datum/design/D = (linked_console || requires_console)? linked_console.stored_research.researched_designs[id] : get_techweb_design_by_id(id)
|
||||
if(!istype(D))
|
||||
return FALSE
|
||||
if(D.make_reagents.len)
|
||||
return FALSE
|
||||
|
||||
var/power = 1000
|
||||
amount = Clamp(amount, 1, 10)
|
||||
for(var/M in D.materials)
|
||||
power += round(D.materials[M] * amount / 5)
|
||||
power = max(3000, power)
|
||||
use_power(power)
|
||||
|
||||
var/list/efficient_mats = list()
|
||||
for(var/MAT in D.materials)
|
||||
efficient_mats[MAT] = D.materials[MAT]*efficiency_coeff
|
||||
|
||||
if(!materials.has_materials(efficient_mats, amount))
|
||||
say("Not enough materials to complete prototype[amount > 1? "s" : ""].")
|
||||
return FALSE
|
||||
for(var/R in D.reagents_list)
|
||||
if(!reagents.has_reagent(R, D.reagents_list[R]*efficiency_coeff))
|
||||
say("Not enough reagents to complete prototype[amount > 1? "s" : ""].")
|
||||
return FALSE
|
||||
|
||||
materials.use_amount(efficient_mats, amount)
|
||||
for(var/R in D.reagents_list)
|
||||
reagents.remove_reagent(R, D.reagents_list[R]*efficiency_coeff)
|
||||
|
||||
busy = TRUE
|
||||
flick("protolathe_n", src)
|
||||
var/timecoeff = efficiency_coeff * D.lathe_time_factor
|
||||
|
||||
addtimer(CALLBACK(src, .proc/reset_busy), (32 * timecoeff * amount) ** 0.8)
|
||||
addtimer(CALLBACK(src, .proc/do_print, D.build_path, amount, efficient_mats, D.dangerous_construction), (32 * timecoeff * amount) ** 0.8)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/rnd/protolathe/proc/do_print(path, amount, list/matlist, notify_admins)
|
||||
if(notify_admins)
|
||||
if(usr)
|
||||
usr.investigate_log("built [amount] of [path] at a protolathe.", INVESTIGATE_RESEARCH)
|
||||
var/turf/T = get_turf(usr)
|
||||
message_admins("[key_name(usr)][ADMIN_JMP(T)] has built [amount] of [path] at a protolathe at [COORD(usr)]")
|
||||
for(var/i in 1 to amount)
|
||||
var/obj/item/I = new path(get_turf(src))
|
||||
if(!istype(I, /obj/item/stack/sheet) && !istype(I, /obj/item/ore/bluespace_crystal))
|
||||
I.materials = matlist.Copy()
|
||||
SSblackbox.record_feedback("nested_tally", "item_printed", amount, list("[type]", "[path]"))
|
||||
@@ -1,239 +0,0 @@
|
||||
/*
|
||||
Research and Development System. (Designed specifically for the /tg/station 13 (Space Station 13) open source project)
|
||||
|
||||
///////////////Overview///////////////////
|
||||
This system is a "tech tree" research and development system designed for SS13. It allows a "researcher" job (this document assumes
|
||||
the "scientist" job is given this role) the tools necessiary to research new and better technologies. In general, the system works
|
||||
by breaking existing technology and using what you learn from to advance your knowledge of SCIENCE! As your knowledge progresses,
|
||||
you can build newer (and better?) devices (which you can also, eventually, deconstruct to advance your knowledge).
|
||||
|
||||
A brief overview is below. For more details, see the related files.
|
||||
|
||||
////////////Game Use/////////////
|
||||
The major research and development is performed using a combination of four machines:
|
||||
- R&D Console: A computer console that allows you to manipulate the other devices that are linked to it and view/manipulate the
|
||||
technologies you have researched so far.
|
||||
- Protolathe: Used to make new hand-held devices and parts for larger devices. All metals and reagents as raw materials.
|
||||
- Destructive Analyzer: You can put hand-held objects into it and it'll analyze them for technological advancements but it destroys
|
||||
them in the process. Destroyed items will send their raw materials to a linked Protolathe (if any)
|
||||
- Circuit Imprinter: Similar to the Protolathe, it allows for the construction of circuit boards. Uses glass and acid as the raw
|
||||
materials.
|
||||
|
||||
While researching you are dealing with two different types of information: Technology Paths and Device Designs. Technology Paths
|
||||
are the "Tech Trees" of the game. You start out with a number of them at the game start and they are improved by using the
|
||||
Destructive Analyzer. By themselves, they don't do a whole lot. However, they unlock Device Designs. This is the information used
|
||||
by the circuit imprinter and the protolathe to produce objects.
|
||||
|
||||
//EXISTING TECH
|
||||
Each tech path should have at LEAST one item at every level (levels 1 - 20). This is to allow for a more fluid progression of the
|
||||
researching. Existing tech (ie, anything you can find on the station or get from the quartermaster) shouldn't go higher then
|
||||
level 5 or 7. Everything past that should be stuff you research.
|
||||
|
||||
Below is a checklist to make sure every tree is filled. As new items get added to R&D, add them here if there is an empty slot.
|
||||
When thinking about new stuff, check here to see if there are any slots unfilled.
|
||||
|
||||
//MATERIALS
|
||||
1 | Metal
|
||||
2 | Solid Plasma
|
||||
3 | Silver
|
||||
4 | Gold, Super Capacitor
|
||||
5 | Uranium, Nuclear Gun, SUPERPACMAN
|
||||
6 | Diamond, MRSPACMAN
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//PLASMA TECH
|
||||
1 |
|
||||
2 | Solid Plasma
|
||||
3 | Pacman Generator
|
||||
4 |
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//POWER TECH
|
||||
1 | Basic Capacitor, Basic Cell
|
||||
2 | High-Capacity Cell (10,000)
|
||||
3 | Super-Capacity Cell (20,000), Powersink, PACMAN
|
||||
4 | SUPERPACMAN
|
||||
5 | MRSPACMAN, Super Capacitor
|
||||
6 | Hyper-Capacity Cell (30,000)
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//BLUE SPACE
|
||||
1 |
|
||||
2 | Teleporter Console Board
|
||||
3 | Teleport Gun, Hand Tele
|
||||
4 | Teleportation Scroll
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//BIOTECH
|
||||
1 | Bruise Pack, Scalple
|
||||
2 | PANDEMIC Board, Mass Spectrometer
|
||||
3 | AI Core, Brains (MMI)
|
||||
4 | MMI+Radio
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//MAGNETS
|
||||
1 | Basic Sensor
|
||||
2 | Comm Console Board
|
||||
3 | Adv Sensor
|
||||
4 | Adv Mass Spectrometer, Chameleon Projector
|
||||
5 | Phasic Sensor
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//PROGRAMMING
|
||||
1 | Arcade Board
|
||||
2 | Sec Camera
|
||||
3 | Cloning Machine Console Board
|
||||
4 | AI Core, Intellicard
|
||||
5 | Pico-Manipulator, Ultra-Micro-Laser
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//SYNDICATE
|
||||
1 | Sleepypen
|
||||
2 | TYRANT Module, Emag
|
||||
3 | Power Sink
|
||||
4 |
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//COMBAT
|
||||
1 | Flashbang, Mousetrap, Nettle
|
||||
2 | Stun Baton
|
||||
3 | Power Axe, Death Nettle, Nuclear Gun
|
||||
4 |
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
+796
-969
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@
|
||||
//All devices that link into the R&D console fall into thise type for easy identification and some shared procs.
|
||||
|
||||
|
||||
/obj/machinery/r_n_d
|
||||
/obj/machinery/rnd
|
||||
name = "R&D Device"
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
density = TRUE
|
||||
@@ -11,31 +11,34 @@
|
||||
use_power = IDLE_POWER_USE
|
||||
var/busy = FALSE
|
||||
var/hacked = FALSE
|
||||
var/disabled = 0
|
||||
var/disabled = FALSE
|
||||
var/shocked = FALSE
|
||||
var/obj/machinery/computer/rdconsole/linked_console
|
||||
var/obj/item/loaded_item = null //the item loaded inside the machine (currently only used by experimentor and destructive analyzer)
|
||||
|
||||
/obj/machinery/r_n_d/Initialize()
|
||||
. = ..()
|
||||
wires = new /datum/wires/r_n_d(src)
|
||||
/obj/machinery/rnd/proc/reset_busy()
|
||||
busy = FALSE
|
||||
|
||||
/obj/machinery/r_n_d/Destroy()
|
||||
/obj/machinery/rnd/Initialize()
|
||||
. = ..()
|
||||
wires = new /datum/wires/rnd(src)
|
||||
|
||||
/obj/machinery/rnd/Destroy()
|
||||
QDEL_NULL(wires)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/proc/shock(mob/user, prb)
|
||||
/obj/machinery/rnd/proc/shock(mob/user, prb)
|
||||
if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
|
||||
return 0
|
||||
return FALSE
|
||||
if(!prob(prb))
|
||||
return 0
|
||||
return FALSE
|
||||
do_sparks(5, TRUE, src)
|
||||
if (electrocute_mob(user, get_area(src), src, 0.7, TRUE))
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/r_n_d/attack_hand(mob/user)
|
||||
/obj/machinery/rnd/attack_hand(mob/user)
|
||||
if(shocked)
|
||||
if(shock(user,50))
|
||||
return
|
||||
@@ -44,10 +47,10 @@
|
||||
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/attackby(obj/item/O, mob/user, params)
|
||||
/obj/machinery/rnd/attackby(obj/item/O, mob/user, params)
|
||||
if (shocked)
|
||||
if(shock(user,50))
|
||||
return 1
|
||||
return TRUE
|
||||
if (default_deconstruction_screwdriver(user, "[initial(icon_state)]_t", initial(icon_state), O))
|
||||
if(linked_console)
|
||||
disconnect_console()
|
||||
@@ -57,32 +60,28 @@
|
||||
if(default_deconstruction_crowbar(O))
|
||||
return
|
||||
if(is_open_container() && O.is_open_container())
|
||||
return 0 //inserting reagents into the machine
|
||||
return FALSE //inserting reagents into the machine
|
||||
if(Insert_Item(O, user))
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
return ..()
|
||||
|
||||
//to disconnect the machine from the r&d console it's linked to
|
||||
/obj/machinery/r_n_d/proc/disconnect_console()
|
||||
/obj/machinery/rnd/proc/disconnect_console()
|
||||
linked_console = null
|
||||
|
||||
//proc used to handle inserting items or reagents into r_n_d machines
|
||||
/obj/machinery/r_n_d/proc/Insert_Item(obj/item/I, mob/user)
|
||||
//proc used to handle inserting items or reagents into rnd machines
|
||||
/obj/machinery/rnd/proc/Insert_Item(obj/item/I, mob/user)
|
||||
return
|
||||
|
||||
//whether the machine can have an item inserted in its current state.
|
||||
/obj/machinery/r_n_d/proc/is_insertion_ready(mob/user)
|
||||
/obj/machinery/rnd/proc/is_insertion_ready(mob/user)
|
||||
if(panel_open)
|
||||
to_chat(user, "<span class='warning'>You can't load [src] while it's opened!</span>")
|
||||
return
|
||||
if (disabled)
|
||||
return
|
||||
if (!linked_console) // Try to auto-connect to new RnD consoles nearby.
|
||||
for(var/obj/machinery/computer/rdconsole/console in oview(3, src))
|
||||
if(console.first_use)
|
||||
console.SyncRDevices()
|
||||
|
||||
if(!linked_console)
|
||||
to_chat(user, "<span class='warning'>[src] must be linked to an R&D console first!</span>")
|
||||
return
|
||||
@@ -98,16 +97,16 @@
|
||||
if(loaded_item)
|
||||
to_chat(user, "<span class='warning'>[src] is already loaded.</span>")
|
||||
return
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
//we eject the loaded item when deconstructing the machine
|
||||
/obj/machinery/r_n_d/on_deconstruction()
|
||||
/obj/machinery/rnd/on_deconstruction()
|
||||
if(loaded_item)
|
||||
loaded_item.forceMove(loc)
|
||||
..()
|
||||
|
||||
/obj/machinery/r_n_d/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted)
|
||||
/obj/machinery/rnd/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted)
|
||||
var/stack_name
|
||||
if(ispath(type_inserted, /obj/item/ore/bluespace_crystal))
|
||||
stack_name = "bluespace"
|
||||
|
||||
@@ -1,371 +0,0 @@
|
||||
/*
|
||||
General Explination:
|
||||
The research datum is the "folder" where all the research information is stored in a R&D console. It's also a holder for all the
|
||||
various procs used to manipulate it. It has four variables and seven procs:
|
||||
|
||||
Variables:
|
||||
- possible_tech is a list of all the /datum/tech that can potentially be researched by the player. The RefreshResearch() proc
|
||||
(explained later) only goes through those when refreshing what you know. Generally, possible_tech contains ALL of the existing tech
|
||||
but it is possible to add tech to the game that DON'T start in it (example: Xeno tech). Generally speaking, you don't want to mess
|
||||
with these since they should be the default version of the datums. They're actually stored in a list rather then using typesof to
|
||||
refer to them since it makes it a bit easier to search through them for specific information.
|
||||
- know_tech is the companion list to possible_tech. It's the tech you can actually research and improve. Until it's added to this
|
||||
list, it can't be improved. All the tech in this list are visible to the player.
|
||||
- possible_designs is functionally identical to possbile_tech except it's for /datum/design.
|
||||
- known_designs is functionally identical to known_tech except it's for /datum/design
|
||||
|
||||
Procs:
|
||||
- TechHasReqs: Used by other procs (specifically RefreshResearch) to see whether all of a tech's requirements are currently in
|
||||
known_tech and at a high enough level.
|
||||
- DesignHasReqs: Same as TechHasReqs but for /datum/design and known_design.
|
||||
- AddTech2Known: Adds a /datum/tech to known_tech. It checks to see whether it already has that tech (if so, it just replaces it). If
|
||||
it doesn't have it, it adds it. Note: It does NOT check possible_tech at all. So if you want to add something strange to it (like
|
||||
a player made tech?) you can.
|
||||
- AddDesign2Known: Same as AddTech2Known except for /datum/design and known_designs.
|
||||
- RefreshResearch: This is the workhorse of the R&D system. It updates the /datum/research holder and adds any unlocked tech paths
|
||||
and designs you have reached the requirements for. It only checks through possible_tech and possible_designs, however, so it won't
|
||||
accidentally add "secret" tech to it.
|
||||
- UpdateTech is used as part of the actual researching process. It takes an ID and finds techs with that same ID in known_tech. When
|
||||
it finds it, it checks to see whether it can improve it at all. If the known_tech's level is less then or equal to
|
||||
the inputted level, it increases the known tech's level to the inputted level -1 or know tech's level +1 (whichever is higher).
|
||||
|
||||
The tech datums are the actual "tech trees" that you improve through researching. Each one has five variables:
|
||||
- Name: Pretty obvious. This is often viewable to the players.
|
||||
- Desc: Pretty obvious. Also player viewable.
|
||||
- ID: This is the unique ID of the tech that is used by the various procs to find and/or maniuplate it.
|
||||
- Level: This is the current level of the tech. All techs start at 1 and have a max of 20. Devices and some techs require a certain
|
||||
level in specific techs before you can produce them.
|
||||
- Req_tech: This is a list of the techs required to unlock this tech path. If left blank, it'll automatically be loaded into the
|
||||
research holder datum.
|
||||
|
||||
*/
|
||||
/***************************************************************
|
||||
** Master Types **
|
||||
** Includes all the helper procs and basic tech processing. **
|
||||
***************************************************************/
|
||||
|
||||
/datum/research //Holder for all the existing, archived, and known tech. Individual to console.
|
||||
|
||||
//Datum/tech go here.
|
||||
var/list/possible_tech = list() //List of all tech in the game that players have access to (barring special events).
|
||||
var/list/known_tech = list() //List of locally known tech.
|
||||
var/list/possible_designs = list() //List of all designs.
|
||||
var/list/known_designs = list() //List of available designs.
|
||||
|
||||
/datum/research/New() //Insert techs into possible_tech here. Known_tech automatically updated.
|
||||
for(var/T in subtypesof(/datum/tech))
|
||||
possible_tech += new T(src)
|
||||
for(var/D in subtypesof(/datum/design))
|
||||
possible_designs += new D(src)
|
||||
RefreshResearch()
|
||||
|
||||
//Checks to see if tech has all the required pre-reqs.
|
||||
//Input: datum/tech; Output: 0/1 (false/true)
|
||||
/datum/research/proc/TechHasReqs(datum/tech/T)
|
||||
if(T.req_tech.len == 0)
|
||||
return TRUE
|
||||
for(var/req in T.req_tech)
|
||||
var/datum/tech/known = known_tech[req]
|
||||
if(!known || known.level < T.req_tech[req])
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
//Checks to see if design has all the required pre-reqs.
|
||||
//Input: datum/design; Output: 0/1 (false/true)
|
||||
/datum/research/proc/DesignHasReqs(datum/design/D)//Heavily optimized -Sieve
|
||||
if(D.req_tech.len == 0)
|
||||
return TRUE
|
||||
for(var/req in D.req_tech)
|
||||
var/datum/tech/known = known_tech[req]
|
||||
if(!known || known.level < D.req_tech[req])
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
//Adds a tech to known_tech list. Checks to make sure there aren't duplicates and updates existing tech's levels if needed.
|
||||
//Input: datum/tech; Output: Null
|
||||
/datum/research/proc/AddTech2Known(datum/tech/T)
|
||||
if(!T)
|
||||
return
|
||||
if(known_tech[T.id])
|
||||
var/datum/tech/known = known_tech[T.id]
|
||||
if(T.level > known.level)
|
||||
known.level = T.level
|
||||
return
|
||||
known_tech[T.id] = T.copy()
|
||||
|
||||
/datum/research/proc/AddDesign2Known(datum/design/D)
|
||||
if(known_designs[D.id])
|
||||
return
|
||||
known_designs[D.id] = D
|
||||
|
||||
//Refreshes known_tech and known_designs list.
|
||||
//Input/Output: n/a
|
||||
/datum/research/proc/RefreshResearch()
|
||||
for(var/datum/tech/PT in possible_tech)
|
||||
if(TechHasReqs(PT))
|
||||
AddTech2Known(PT)
|
||||
|
||||
for(var/datum/design/PD in possible_designs)
|
||||
if(DesignHasReqs(PD))
|
||||
AddDesign2Known(PD)
|
||||
|
||||
for(var/v in known_tech)
|
||||
var/datum/tech/T = known_tech[v]
|
||||
T.level = Clamp(T.level, 0, 20)
|
||||
return
|
||||
|
||||
//Refreshes the levels of a given tech.
|
||||
//Input: Tech's ID and Level; Output: null
|
||||
/datum/research/proc/UpdateTech(ID, level)
|
||||
var/datum/tech/KT = known_tech[ID]
|
||||
if(KT && KT.level <= level)
|
||||
KT.level = max(KT.level + 1, level)
|
||||
SSblackbox.log_research(KT.name, level)
|
||||
|
||||
//Checks if the origin level can raise current tech levels
|
||||
//Input: Tech's ID and Level; Output: TRUE for yes, FALSE for no
|
||||
/datum/research/proc/IsTechHigher(ID, level)
|
||||
var/datum/tech/KT = known_tech[ID]
|
||||
if(KT)
|
||||
if(KT.level <= level)
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/datum/research/proc/FindDesignByID(id)
|
||||
return known_designs[id]
|
||||
|
||||
/datum/research/proc/LowerTech(tech_id,value)
|
||||
var/datum/tech/T = known_tech[tech_id]
|
||||
T.level = max(initial(T.level),T.level - value)
|
||||
known_designs.Cut()
|
||||
RefreshResearch()
|
||||
|
||||
|
||||
//Autolathe files
|
||||
/datum/research/autolathe/New()
|
||||
for(var/T in (subtypesof(/datum/tech)))
|
||||
possible_tech += new T(src)
|
||||
for(var/path in subtypesof(/datum/design))
|
||||
var/datum/design/D = new path(src)
|
||||
possible_designs += D
|
||||
if((D.build_type & AUTOLATHE) && ("initial" in D.category)) //autolathe starts without hacked designs
|
||||
AddDesign2Known(D)
|
||||
|
||||
//Limb Grower files
|
||||
/datum/research/limbgrower/New()
|
||||
for(var/T in (subtypesof(/datum/tech)))
|
||||
possible_tech += new T(src)
|
||||
for(var/path in subtypesof(/datum/design))
|
||||
var/datum/design/D = new path(src)
|
||||
possible_designs += D
|
||||
if((D.build_type & LIMBGROWER) && ("initial" in D.category))
|
||||
AddDesign2Known(D)
|
||||
|
||||
/datum/research/autolathe/AddDesign2Known(datum/design/D)
|
||||
if(!(D.build_type & AUTOLATHE))
|
||||
return
|
||||
..()
|
||||
|
||||
//Biogenerator files
|
||||
/datum/research/biogenerator/New()
|
||||
for(var/T in (subtypesof(/datum/tech)))
|
||||
possible_tech += new T(src)
|
||||
for(var/path in subtypesof(/datum/design))
|
||||
var/datum/design/D = new path(src)
|
||||
possible_designs += D
|
||||
if((D.build_type & BIOGENERATOR) && ("initial" in D.category))
|
||||
AddDesign2Known(D)
|
||||
|
||||
/datum/research/biogenerator/AddDesign2Known(datum/design/D)
|
||||
if(!(D.build_type & BIOGENERATOR))
|
||||
return
|
||||
..()
|
||||
|
||||
//Smelter files
|
||||
/datum/research/smelter/New()
|
||||
for(var/T in (subtypesof(/datum/tech)))
|
||||
possible_tech += new T(src)
|
||||
for(var/path in subtypesof(/datum/design))
|
||||
var/datum/design/D = new path(src)
|
||||
possible_designs += D
|
||||
if((D.build_type & SMELTER) && ("initial" in D.category))
|
||||
AddDesign2Known(D)
|
||||
|
||||
/datum/research/smelter/AddDesign2Known(datum/design/D)
|
||||
if(!(D.build_type & SMELTER))
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
/***************************************************************
|
||||
** Technology Datums **
|
||||
** Includes all the various technoliges and what they make. **
|
||||
***************************************************************/
|
||||
|
||||
/datum/tech //Datum of individual technologies.
|
||||
var/name = "name" //Name of the technology.
|
||||
var/desc = "description" //General description of what it does and what it makes.
|
||||
var/id = "id" //An easily referenced ID. Must be alphanumeric, lower-case, and no symbols.
|
||||
var/level = 1 //A simple number scale of the research level. Level 0 = Secret tech.
|
||||
var/rare = 1 //How much CentCom wants to get that tech. Used in supply shuttle tech cost calculation.
|
||||
var/list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = #
|
||||
|
||||
|
||||
//Trunk Technologies (don't require any other techs and you start knowning them).
|
||||
|
||||
/datum/tech/materials
|
||||
name = "Materials Research"
|
||||
desc = "Development of new and improved materials."
|
||||
id = "materials"
|
||||
|
||||
/datum/tech/engineering
|
||||
name = "Engineering Research"
|
||||
desc = "Development of new and improved engineering parts and tools."
|
||||
id = "engineering"
|
||||
|
||||
/datum/tech/plasmatech
|
||||
name = "Plasma Research"
|
||||
desc = "Research into the mysterious substance colloquially known as \"plasma\"."
|
||||
id = "plasmatech"
|
||||
rare = 3
|
||||
|
||||
/datum/tech/powerstorage
|
||||
name = "Power Manipulation Technology"
|
||||
desc = "The various technologies behind the storage and generation of electricity."
|
||||
id = "powerstorage"
|
||||
|
||||
/datum/tech/bluespace
|
||||
name = "\"Blue-space\" Research"
|
||||
desc = "Research into the sub-reality known as \"blue-space\"."
|
||||
id = "bluespace"
|
||||
rare = 2
|
||||
|
||||
/datum/tech/biotech
|
||||
name = "Biological Technology"
|
||||
desc = "Research into the deeper mysteries of life and organic substances."
|
||||
id = "biotech"
|
||||
|
||||
/datum/tech/combat
|
||||
name = "Combat Systems Research"
|
||||
desc = "The development of offensive and defensive systems."
|
||||
id = "combat"
|
||||
|
||||
/datum/tech/magnets
|
||||
name = "Electromagnetic Spectrum Research"
|
||||
desc = "Research into the electromagnetic spectrum. No clue how they actually work, though."
|
||||
id = "magnets"
|
||||
|
||||
/datum/tech/programming
|
||||
name = "Data Theory Research"
|
||||
desc = "The development of new computer and artificial intelligence and data storage systems."
|
||||
id = "programming"
|
||||
|
||||
/datum/tech/syndicate
|
||||
name = "Illegal Technologies Research"
|
||||
desc = "The study of technologies that violate Nanotrasen regulations."
|
||||
id = "syndicate"
|
||||
rare = 4
|
||||
|
||||
|
||||
//Secret Technologies (hidden by default, require rare items to reveal)
|
||||
|
||||
/datum/tech/abductor
|
||||
name = "Alien Technologies Research"
|
||||
desc = "The study of technologies used by the advanced alien race known as Abductors."
|
||||
id = "abductor"
|
||||
rare = 5
|
||||
level = 0
|
||||
|
||||
/datum/tech/arcane
|
||||
name = "Arcane Research"
|
||||
desc = "When sufficiently analyzed, any magic becomes indistinguishable from technology."
|
||||
id = "arcane"
|
||||
rare = 5
|
||||
level = 0
|
||||
|
||||
/*
|
||||
//Branch Techs
|
||||
/datum/tech/explosives
|
||||
name = "Explosives Research"
|
||||
desc = "The creation and application of explosive materials."
|
||||
id = "explosives"
|
||||
req_tech = list("materials" = 3)
|
||||
|
||||
/datum/tech/generators
|
||||
name = "Power Generation Technology"
|
||||
desc = "Research into more powerful and more reliable sources."
|
||||
id = "generators"
|
||||
req_tech = list("powerstorage" = 2)
|
||||
|
||||
/datum/tech/robotics
|
||||
name = "Robotics Technology"
|
||||
desc = "The development of advanced automated, autonomous machines."
|
||||
id = "robotics"
|
||||
req_tech = list("materials" = 3, "programming" = 3)
|
||||
*/
|
||||
|
||||
|
||||
/datum/tech/proc/getCost(var/current_level = null)
|
||||
// Calculates tech disk's supply points sell cost
|
||||
if(!current_level)
|
||||
current_level = initial(level)
|
||||
|
||||
if(current_level >= level)
|
||||
return 0
|
||||
|
||||
var/cost = 0
|
||||
for(var/i=current_level+1, i<=level, i++)
|
||||
if(i == initial(level))
|
||||
continue
|
||||
cost += i*rare
|
||||
|
||||
return cost
|
||||
|
||||
/datum/tech/proc/copy()
|
||||
var/datum/tech/T = new type()
|
||||
T.level = level
|
||||
return T
|
||||
|
||||
/obj/item/disk/tech_disk
|
||||
name = "technology disk"
|
||||
desc = "A disk for storing technology data for further research."
|
||||
icon_state = "datadisk0"
|
||||
materials = list(MAT_METAL=300, MAT_GLASS=100)
|
||||
var/list/tech_stored = list()
|
||||
var/max_tech_stored = 1
|
||||
|
||||
/obj/item/disk/tech_disk/Initialize()
|
||||
. = ..()
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
for(var/i in 1 to max_tech_stored)
|
||||
tech_stored += null
|
||||
|
||||
|
||||
/obj/item/disk/tech_disk/adv
|
||||
name = "advanced technology disk"
|
||||
desc = "A disk for storing technology data for further research. This one has extra storage space."
|
||||
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER=50)
|
||||
max_tech_stored = 5
|
||||
|
||||
/obj/item/disk/tech_disk/super_adv
|
||||
name = "quantum technology disk"
|
||||
desc = "A disk for storing technology data for further research. This one has extremely large storage space."
|
||||
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER=100, MAT_GOLD=100)
|
||||
max_tech_stored = 10
|
||||
|
||||
/obj/item/disk/tech_disk/debug
|
||||
name = "\improper CentCom technology disk"
|
||||
desc = "A debug item for research."
|
||||
materials = list()
|
||||
max_tech_stored = 0
|
||||
|
||||
/obj/item/disk/tech_disk/debug/Initialize()
|
||||
. = ..()
|
||||
var/list/techs = subtypesof(/datum/tech)
|
||||
max_tech_stored = techs.len
|
||||
for(var/V in techs)
|
||||
var/datum/tech/T = new V()
|
||||
tech_stored += T
|
||||
T.level = 8
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
/obj/item/disk/tech_disk
|
||||
name = "technology disk"
|
||||
desc = "A disk for storing technology data for further research."
|
||||
icon_state = "datadisk0"
|
||||
materials = list(MAT_METAL=300, MAT_GLASS=100)
|
||||
var/datum/techweb/stored_research
|
||||
|
||||
/obj/item/disk/tech_disk/Initialize()
|
||||
. = ..()
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
stored_research = new /datum/techweb
|
||||
|
||||
/obj/item/disk/tech_disk/debug
|
||||
name = "centcomm technology disk"
|
||||
desc = "A debug item for research"
|
||||
materials = list()
|
||||
|
||||
/obj/item/disk/tech_disk/debug/Initialize()
|
||||
. = ..()
|
||||
stored_research = new /datum/techweb/admin
|
||||
+41
-201
@@ -1,99 +1,65 @@
|
||||
/obj/machinery/r_n_d/server
|
||||
/obj/machinery/rnd/server
|
||||
name = "\improper R&D Server"
|
||||
desc = "A computer system running a deep neural network that processes arbitrary information to produce data useable in the development of new technologies. In layman's terms, it makes research points."
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
icon_state = "server"
|
||||
var/datum/research/files
|
||||
var/datum/techweb/stored_research
|
||||
var/heat_health = 100
|
||||
var/list/id_with_upload = list() //List of R&D consoles with upload to server access.
|
||||
var/list/id_with_download = list() //List of R&D consoles with download from server access.
|
||||
var/id_with_upload_string = "" //String versions for easy editing in map editor.
|
||||
var/id_with_download_string = ""
|
||||
//Code for point mining here.
|
||||
var/working = TRUE //temperature should break it.
|
||||
var/server_id = 0
|
||||
var/base_mining_income = 2
|
||||
var/heat_gen = 100
|
||||
var/heating_power = 40000
|
||||
var/delay = 10
|
||||
var/delay = 5
|
||||
var/temp_tolerance_low = 0
|
||||
var/temp_tolerance_high = T20C
|
||||
var/temp_penalty_coefficient = 0.5 //1 = -1 points per degree above high tolerance. 0.5 = -0.5 points per degree above high tolerance.
|
||||
req_access = list(ACCESS_RD) //ONLY THE R&D CAN CHANGE SERVER SETTINGS.
|
||||
|
||||
/obj/machinery/r_n_d/server/Initialize()
|
||||
/obj/machinery/rnd/server/Initialize()
|
||||
. = ..()
|
||||
SSresearch.servers |= src
|
||||
stored_research = SSresearch.science_tech
|
||||
var/obj/item/circuitboard/machine/B = new /obj/item/circuitboard/machine/rdserver(null)
|
||||
B.apply_default_parts(src)
|
||||
|
||||
/obj/machinery/r_n_d/server/Destroy()
|
||||
griefProtection()
|
||||
/obj/machinery/rnd/server/Destroy()
|
||||
SSresearch.servers -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/server/RefreshParts()
|
||||
/obj/machinery/rnd/server/RefreshParts()
|
||||
var/tot_rating = 0
|
||||
for(var/obj/item/stock_parts/SP in src)
|
||||
tot_rating += SP.rating
|
||||
heat_gen /= max(1, tot_rating)
|
||||
|
||||
/obj/machinery/r_n_d/server/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!files)
|
||||
files = new /datum/research(src)
|
||||
var/list/temp_list
|
||||
if(!id_with_upload.len)
|
||||
temp_list = list()
|
||||
temp_list = splittext(id_with_upload_string, ";")
|
||||
for(var/N in temp_list)
|
||||
id_with_upload += text2num(N)
|
||||
if(!id_with_download.len)
|
||||
temp_list = list()
|
||||
temp_list = splittext(id_with_download_string, ";")
|
||||
for(var/N in temp_list)
|
||||
id_with_download += text2num(N)
|
||||
|
||||
/obj/machinery/r_n_d/server/process()
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
switch(environment.temperature)
|
||||
if(0 to T0C)
|
||||
heat_health = min(100, heat_health + 1)
|
||||
if(T0C to (T20C + 20))
|
||||
heat_health = Clamp(heat_health, 0, 100)
|
||||
if((T20C + 20) to (T0C + 70))
|
||||
heat_health = max(0, heat_health - 1)
|
||||
if(heat_health <= 0)
|
||||
/*griefProtection() This seems to get called twice before running any code that deletes/damages the server or it's files anwyay.
|
||||
refreshParts and the hasReq procs that get called by this are laggy and do not need to be called by every server on the map every tick */
|
||||
var/updateRD = 0
|
||||
files.known_designs = list()
|
||||
for(var/v in files.known_tech)
|
||||
var/datum/tech/T = files.known_tech[v]
|
||||
if(prob(1))
|
||||
updateRD++
|
||||
T.level--
|
||||
if(updateRD)
|
||||
files.RefreshResearch()
|
||||
if(delay)
|
||||
delay--
|
||||
/obj/machinery/rnd/server/proc/refresh_working()
|
||||
if(stat & EMPED)
|
||||
working = FALSE
|
||||
else
|
||||
produce_heat(heat_gen)
|
||||
delay = initial(delay)
|
||||
working = TRUE
|
||||
|
||||
/obj/machinery/rnd/server/emp_act()
|
||||
stat |= EMPED
|
||||
addtimer(CALLBACK(src, .proc/unemp), 600)
|
||||
refresh_working()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/server/emp_act(severity)
|
||||
griefProtection()
|
||||
..()
|
||||
/obj/machinery/rnd/server/proc/unemp()
|
||||
stat &= ~EMPED
|
||||
refresh_working()
|
||||
|
||||
/obj/machinery/r_n_d/server/ex_act(severity, target)
|
||||
griefProtection()
|
||||
..()
|
||||
/obj/machinery/rnd/server/proc/mine()
|
||||
. = base_mining_income
|
||||
var/penalty = max((get_env_temp() - temp_tolerance_low), 0) / temp_penalty_coefficient
|
||||
. = max(. - penalty, 0)
|
||||
|
||||
//Backup files to centcom to help admins recover data after greifer attacks
|
||||
/obj/machinery/r_n_d/server/proc/griefProtection()
|
||||
for(var/obj/machinery/r_n_d/server/centcom/C in GLOB.machines)
|
||||
for(var/v in files.known_tech)
|
||||
var/datum/tech/T = files.known_tech[v]
|
||||
C.files.AddTech2Known(T)
|
||||
for(var/v in files.known_designs)
|
||||
var/datum/design/D = files.known_designs[v]
|
||||
C.files.AddDesign2Known(D)
|
||||
C.files.RefreshResearch()
|
||||
/obj/machinery/rnd/server/proc/get_env_temp()
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
return environment.temperature
|
||||
|
||||
/obj/machinery/r_n_d/server/proc/produce_heat(heat_amt)
|
||||
/obj/machinery/rnd/server/proc/produce_heat(heat_amt)
|
||||
if(!(stat & (NOPOWER|BROKEN))) //Blatently stolen from space heater.
|
||||
var/turf/L = loc
|
||||
if(istype(L))
|
||||
@@ -114,30 +80,17 @@
|
||||
env.merge(removed)
|
||||
air_update_turf()
|
||||
|
||||
//called when the server is deconstructed.
|
||||
/obj/machinery/r_n_d/server/on_deconstruction()
|
||||
griefProtection()
|
||||
..()
|
||||
|
||||
/obj/machinery/r_n_d/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves.
|
||||
/obj/machinery/rnd/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves.
|
||||
if (disabled)
|
||||
return
|
||||
if (shocked)
|
||||
shock(user,50)
|
||||
return
|
||||
|
||||
/obj/machinery/r_n_d/server/centcom
|
||||
name = "CentCom Central R&D Database"
|
||||
server_id = -1
|
||||
|
||||
/obj/machinery/r_n_d/server/centcom/Initialize()
|
||||
. = ..()
|
||||
fix_noid_research_servers()
|
||||
|
||||
/proc/fix_noid_research_servers()
|
||||
var/list/no_id_servers = list()
|
||||
var/list/server_ids = list()
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
for(var/obj/machinery/rnd/server/S in GLOB.machines)
|
||||
switch(S.server_id)
|
||||
if(-1)
|
||||
continue
|
||||
@@ -146,7 +99,7 @@
|
||||
else
|
||||
server_ids += S.server_id
|
||||
|
||||
for(var/obj/machinery/r_n_d/server/S in no_id_servers)
|
||||
for(var/obj/machinery/rnd/server/S in no_id_servers)
|
||||
var/num = 1
|
||||
while(!S.server_id)
|
||||
if(num in server_ids)
|
||||
@@ -156,9 +109,6 @@
|
||||
server_ids += num
|
||||
no_id_servers -= S
|
||||
|
||||
/obj/machinery/r_n_d/server/centcom/process()
|
||||
return PROCESS_KILL //don't need process()
|
||||
|
||||
|
||||
/obj/machinery/computer/rdservercontrol
|
||||
name = "R&D Server Controller"
|
||||
@@ -166,7 +116,7 @@
|
||||
icon_screen = "rdcomp"
|
||||
icon_keyboard = "rd_key"
|
||||
var/screen = 0
|
||||
var/obj/machinery/r_n_d/server/temp_server
|
||||
var/obj/machinery/rnd/server/temp_server
|
||||
var/list/servers = list()
|
||||
var/list/consoles = list()
|
||||
var/badmin = 0
|
||||
@@ -185,58 +135,6 @@
|
||||
if(href_list["main"])
|
||||
screen = 0
|
||||
|
||||
else if(href_list["access"] || href_list["data"] || href_list["transfer"])
|
||||
temp_server = null
|
||||
consoles = list()
|
||||
servers = list()
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"]))
|
||||
temp_server = S
|
||||
break
|
||||
if(href_list["access"])
|
||||
screen = 1
|
||||
for(var/obj/machinery/computer/rdconsole/C in GLOB.machines)
|
||||
if(C.sync)
|
||||
consoles += C
|
||||
else if(href_list["data"])
|
||||
screen = 2
|
||||
else if(href_list["transfer"])
|
||||
screen = 3
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
if(S == src)
|
||||
continue
|
||||
servers += S
|
||||
|
||||
else if(href_list["upload_toggle"])
|
||||
var/num = text2num(href_list["upload_toggle"])
|
||||
if(num in temp_server.id_with_upload)
|
||||
temp_server.id_with_upload -= num
|
||||
else
|
||||
temp_server.id_with_upload += num
|
||||
|
||||
else if(href_list["download_toggle"])
|
||||
var/num = text2num(href_list["download_toggle"])
|
||||
if(num in temp_server.id_with_download)
|
||||
temp_server.id_with_download -= num
|
||||
else
|
||||
temp_server.id_with_download += num
|
||||
|
||||
else if(href_list["reset_tech"])
|
||||
var/choice = alert("Technology Data Reset", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
|
||||
if(choice == "Continue" && usr.canUseTopic(src))
|
||||
var/datum/tech/T = temp_server.files.known_tech[href_list["reset_tech"]]
|
||||
if(T)
|
||||
T.level = 1
|
||||
temp_server.files.RefreshResearch()
|
||||
|
||||
else if(href_list["reset_design"])
|
||||
var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? Data lost cannot be recovered.", "Continue", "Cancel")
|
||||
if(choice == "Continue" && usr.canUseTopic(src))
|
||||
var/datum/design/D = temp_server.files.known_designs[href_list["reset_design"]]
|
||||
if(D)
|
||||
temp_server.files.known_designs -= D.id
|
||||
temp_server.files.RefreshResearch()
|
||||
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
@@ -250,58 +148,12 @@
|
||||
if(0) //Main Menu
|
||||
dat += "Connected Servers:<BR><BR>"
|
||||
|
||||
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
|
||||
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
|
||||
continue
|
||||
for(var/obj/machinery/rnd/server/S in GLOB.machines)
|
||||
dat += "[S.name] || "
|
||||
dat += "<A href='?src=[REF(src)];access=[S.server_id]'>Access Rights</A> | "
|
||||
dat += "<A href='?src=[REF(src)];data=[S.server_id]'>Data Management</A>"
|
||||
if(badmin)
|
||||
dat += " | <A href='?src=[REF(src)];transfer=[S.server_id]'>Server-to-Server Transfer</A>"
|
||||
dat += "<BR>"
|
||||
|
||||
if(1) //Access rights menu
|
||||
dat += "[temp_server.name] Access Rights<BR><BR>"
|
||||
dat += "Consoles with Upload Access<BR>"
|
||||
for(var/obj/machinery/computer/rdconsole/C in consoles)
|
||||
var/turf/console_turf = get_turf(C)
|
||||
dat += "* <A href='?src=[REF(src)];upload_toggle=[C.id]'>[console_turf.loc]" //FYI, these are all numeric ids, eventually.
|
||||
if(C.id in temp_server.id_with_upload)
|
||||
dat += " (Remove)</A><BR>"
|
||||
else
|
||||
dat += " (Add)</A><BR>"
|
||||
dat += "Consoles with Download Access<BR>"
|
||||
for(var/obj/machinery/computer/rdconsole/C in consoles)
|
||||
var/turf/console_turf = get_turf(C)
|
||||
dat += "* <A href='?src=[REF(src)];download_toggle=[C.id]'>[console_turf.loc]"
|
||||
if(C.id in temp_server.id_with_download)
|
||||
dat += " (Remove)</A><BR>"
|
||||
else
|
||||
dat += " (Add)</A><BR>"
|
||||
dat += "<HR><A href='?src=[REF(src)];main=1'>Main Menu</A>"
|
||||
//Mining status here
|
||||
|
||||
if(2) //Data Management menu
|
||||
dat += "[temp_server.name] Data ManagementP<BR><BR>"
|
||||
dat += "Known Technologies<BR>"
|
||||
for(var/v in temp_server.files.known_tech)
|
||||
var/datum/tech/T = temp_server.files.known_tech[v]
|
||||
if(T.level <= 0)
|
||||
continue
|
||||
dat += "* [T.name] "
|
||||
dat += "<A href='?src=[REF(src)];reset_tech=[T.id]'>(Reset)</A><BR>" //FYI, these are all strings.
|
||||
dat += "Known Designs<BR>"
|
||||
for(var/v in temp_server.files.known_designs)
|
||||
var/datum/design/D = temp_server.files.known_designs[v]
|
||||
dat += "* [D.name] "
|
||||
dat += "<A href='?src=[REF(src)];reset_design=[D.id]'>(Delete)</A><BR>"
|
||||
dat += "<HR><A href='?src=[REF(src)];main=1'>Main Menu</A>"
|
||||
|
||||
if(3) //Server Data Transfer
|
||||
dat += "[temp_server.name] Server to Server Transfer<BR><BR>"
|
||||
dat += "Send Data to what server?<BR>"
|
||||
for(var/obj/machinery/r_n_d/server/S in servers)
|
||||
dat += "[S.name] <A href='?src=[REF(src)];send_to=[S.server_id]'>(Transfer)</A><BR>"
|
||||
dat += "<HR><A href='?src=[REF(src)];main=1'>Main Menu</A>"
|
||||
user << browse("<TITLE>R&D Server Control</TITLE><HR>[dat]", "window=server_control;size=575x400")
|
||||
onclose(user, "server_control")
|
||||
return
|
||||
@@ -317,15 +169,3 @@
|
||||
emagged = TRUE
|
||||
to_chat(user, "<span class='notice'>You you disable the security protocols.</span>")
|
||||
|
||||
/obj/machinery/r_n_d/server/robotics
|
||||
name = "Robotics R&D Server"
|
||||
id_with_upload_string = "1;2"
|
||||
id_with_download_string = "1;2"
|
||||
server_id = 2
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/server/core
|
||||
name = "Core R&D Server"
|
||||
id_with_upload_string = "1"
|
||||
id_with_download_string = "1"
|
||||
server_id = 1
|
||||
|
||||
@@ -82,39 +82,35 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
|
||||
//Rating 1
|
||||
|
||||
|
||||
/obj/item/stock_parts/capacitor
|
||||
name = "capacitor"
|
||||
desc = "A basic capacitor used in the construction of a variety of devices."
|
||||
icon_state = "capacitor"
|
||||
origin_tech = "powerstorage=1"
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/stock_parts/scanning_module
|
||||
name = "scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
icon_state = "scan_module"
|
||||
origin_tech = "magnets=1"
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/stock_parts/manipulator
|
||||
name = "micro-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "micro_mani"
|
||||
origin_tech = "materials=1;programming=1"
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/stock_parts/micro_laser
|
||||
name = "micro-laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
icon_state = "micro_laser"
|
||||
origin_tech = "magnets=1"
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/stock_parts/matter_bin
|
||||
name = "matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "matter_bin"
|
||||
origin_tech = "materials=1"
|
||||
materials = list(MAT_METAL=80)
|
||||
|
||||
//Rating 2
|
||||
@@ -123,7 +119,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "advanced capacitor"
|
||||
desc = "An advanced capacitor used in the construction of a variety of devices."
|
||||
icon_state = "adv_capacitor"
|
||||
origin_tech = "powerstorage=3"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
@@ -131,7 +126,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "advanced scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
icon_state = "adv_scan_module"
|
||||
origin_tech = "magnets=3"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
@@ -139,7 +133,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "nano-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "nano_mani"
|
||||
origin_tech = "materials=3;programming=2"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
@@ -147,7 +140,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "high-power micro-laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
icon_state = "high_micro_laser"
|
||||
origin_tech = "magnets=3"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
@@ -155,7 +147,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "advanced matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "advanced_matter_bin"
|
||||
origin_tech = "materials=3"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=80)
|
||||
|
||||
@@ -165,7 +156,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "super capacitor"
|
||||
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
|
||||
icon_state = "super_capacitor"
|
||||
origin_tech = "powerstorage=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
@@ -173,7 +163,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "phasic scanning module"
|
||||
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
|
||||
icon_state = "super_scan_module"
|
||||
origin_tech = "magnets=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
@@ -181,7 +170,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "pico-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "pico_mani"
|
||||
origin_tech = "materials=4;programming=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
@@ -189,7 +177,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "ultra-high-power micro-laser"
|
||||
icon_state = "ultra_high_micro_laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
origin_tech = "magnets=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
@@ -197,7 +184,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "super matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "super_matter_bin"
|
||||
origin_tech = "materials=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=80)
|
||||
|
||||
@@ -207,7 +193,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "quadratic capacitor"
|
||||
desc = "An capacity capacitor used in the construction of a variety of devices."
|
||||
icon_state = "quadratic_capacitor"
|
||||
origin_tech = "powerstorage=5;materials=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
@@ -215,7 +200,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "triphasic scanning module"
|
||||
desc = "A compact, ultra resolution triphasic scanning module used in the construction of certain devices."
|
||||
icon_state = "triphasic_scan_module"
|
||||
origin_tech = "magnets=5;materials=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
@@ -223,7 +207,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "femto-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "femto_mani"
|
||||
origin_tech = "materials=6;programming=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
@@ -231,7 +214,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "quad-ultra micro-laser"
|
||||
icon_state = "quadultra_micro_laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
origin_tech = "magnets=5;materials=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
@@ -239,7 +221,6 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "bluespace matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "bluespace_matter_bin"
|
||||
origin_tech = "materials=6;programming=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=80)
|
||||
|
||||
@@ -249,49 +230,42 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "subspace ansible"
|
||||
icon_state = "subspace_ansible"
|
||||
desc = "A compact module capable of sensing extradimensional activity."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=1"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/filter
|
||||
name = "hyperwave filter"
|
||||
icon_state = "hyperwave_filter"
|
||||
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
||||
origin_tech = "programming=2;magnets=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/amplifier
|
||||
name = "subspace amplifier"
|
||||
icon_state = "subspace_amplifier"
|
||||
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/treatment
|
||||
name = "subspace treatment disk"
|
||||
icon_state = "treatment_disk"
|
||||
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/analyzer
|
||||
name = "subspace wavelength analyzer"
|
||||
icon_state = "wavelength_analyzer"
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/crystal
|
||||
name = "ansible crystal"
|
||||
icon_state = "ansible_crystal"
|
||||
desc = "A crystal made from pure glass used to transmit laser databursts to subspace."
|
||||
origin_tech = "magnets=2;materials=2;bluespace=2;plasmatech=2"
|
||||
materials = list(MAT_GLASS=50)
|
||||
|
||||
/obj/item/stock_parts/subspace/transmitter
|
||||
name = "subspace transmitter"
|
||||
icon_state = "subspace_transmitter"
|
||||
desc = "A large piece of equipment used to open a window into the subspace dimension."
|
||||
origin_tech = "magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=50)
|
||||
|
||||
/obj/item/research//Makes testing much less of a pain -Sieve
|
||||
@@ -299,4 +273,3 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
icon_state = "capacitor"
|
||||
desc = "A debug item for research."
|
||||
origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8;engineering=8;plasmatech=8;abductor=8"
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
|
||||
/proc/initialize_all_techweb_nodes(clearall = FALSE)
|
||||
if(islist(SSresearch.techweb_nodes) && clearall)
|
||||
QDEL_LIST(SSresearch.techweb_nodes)
|
||||
if(islist(SSresearch.techweb_nodes_starting && clearall))
|
||||
QDEL_LIST(SSresearch.techweb_nodes_starting)
|
||||
var/list/returned = list()
|
||||
for(var/path in subtypesof(/datum/techweb_node))
|
||||
var/datum/techweb_node/TN = path
|
||||
if(isnull(initial(TN.id)))
|
||||
continue
|
||||
TN = new path
|
||||
if(returned[initial(TN.id)])
|
||||
stack_trace("WARNING: Techweb node ID clash with ID [initial(TN.id)] detected!")
|
||||
SSresearch.errored_datums[TN] = initial(TN.id)
|
||||
continue
|
||||
returned[initial(TN.id)] = TN
|
||||
if(TN.starting_node)
|
||||
SSresearch.techweb_nodes_starting[TN.id] = TN
|
||||
SSresearch.techweb_nodes = returned
|
||||
verify_techweb_nodes() //Verify all nodes have ids and such.
|
||||
calculate_techweb_nodes()
|
||||
calculate_techweb_boost_list()
|
||||
verify_techweb_nodes() //Verify nodes and designs have been crosslinked properly.
|
||||
|
||||
/proc/initialize_all_techweb_designs(clearall = FALSE)
|
||||
if(islist(SSresearch.techweb_designs) && clearall)
|
||||
QDEL_LIST(SSresearch.techweb_designs)
|
||||
var/list/returned = list()
|
||||
for(var/path in subtypesof(/datum/design))
|
||||
var/datum/design/DN = path
|
||||
if(isnull(initial(DN.id)))
|
||||
stack_trace("WARNING: Design with null ID detected. Build path: [initial(DN.build_path)]")
|
||||
continue
|
||||
else if(initial(DN.id) == DESIGN_ID_IGNORE)
|
||||
continue
|
||||
DN = new path
|
||||
if(returned[initial(DN.id)])
|
||||
stack_trace("WARNING: Design ID clash with ID [initial(DN.id)] detected!")
|
||||
SSresearch.errored_datums[DN] = initial(DN.id)
|
||||
continue
|
||||
returned[initial(DN.id)] = DN
|
||||
SSresearch.techweb_designs = returned
|
||||
verify_techweb_designs()
|
||||
|
||||
/proc/count_unique_techweb_nodes()
|
||||
var/static/list/L = typesof(/datum/techweb_node)
|
||||
return L.len
|
||||
|
||||
/proc/count_unique_techweb_designs()
|
||||
var/static/list/L = typesof(/datum/design)
|
||||
return L.len
|
||||
|
||||
/proc/get_techweb_node_by_id(id)
|
||||
if(SSresearch.techweb_nodes[id])
|
||||
return SSresearch.techweb_nodes[id]
|
||||
|
||||
/proc/get_techweb_design_by_id(id)
|
||||
if(SSresearch.techweb_designs[id])
|
||||
return SSresearch.techweb_designs[id]
|
||||
|
||||
/proc/research_node_id_error(id)
|
||||
if(SSresearch.invalid_node_ids[id])
|
||||
SSresearch.invalid_node_ids[id]++
|
||||
else
|
||||
SSresearch.invalid_node_ids[id] = 1
|
||||
|
||||
/proc/design_id_error(id)
|
||||
if(SSresearch.invalid_design_ids[id])
|
||||
SSresearch.invalid_design_ids[id]++
|
||||
else
|
||||
SSresearch.invalid_design_ids[id] = 1
|
||||
|
||||
/proc/node_boost_error(id, message)
|
||||
SSresearch.invalid_node_boost[id] = message
|
||||
|
||||
/proc/verify_techweb_nodes()
|
||||
for(var/n in SSresearch.techweb_nodes)
|
||||
var/datum/techweb_node/N = SSresearch.techweb_nodes[n]
|
||||
if(!istype(N))
|
||||
stack_trace("WARNING: Invalid research node with ID [n] detected and removed.")
|
||||
SSresearch.techweb_nodes -= n
|
||||
research_node_id_error(n)
|
||||
for(var/p in N.prereq_ids)
|
||||
var/datum/techweb_node/P = SSresearch.techweb_nodes[p]
|
||||
if(!istype(P))
|
||||
stack_trace("WARNING: Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.prereq_ids -= p
|
||||
research_node_id_error(p)
|
||||
for(var/d in N.design_ids)
|
||||
var/datum/design/D = SSresearch.techweb_designs[d]
|
||||
if(!istype(D))
|
||||
stack_trace("WARNING: Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.designs -= d
|
||||
design_id_error(d)
|
||||
for(var/p in N.prerequisites)
|
||||
var/datum/techweb_node/P = N.prerequisites[p]
|
||||
if(!istype(P))
|
||||
stack_trace("WARNING: Invalid research prerequisite node with ID [p] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.prerequisites -= p
|
||||
research_node_id_error(p)
|
||||
for(var/u in N.unlocks)
|
||||
var/datum/techweb_node/U = N.unlocks[u]
|
||||
if(!istype(U))
|
||||
stack_trace("WARNING: Invalid research unlock node with ID [u] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.unlocks -= u
|
||||
research_node_id_error(u)
|
||||
for(var/d in N.designs)
|
||||
var/datum/design/D = N.designs[d]
|
||||
if(!istype(D))
|
||||
stack_trace("WARNING: Invalid research design with ID [d] detected in node [N.display_name]\[[N.id]\] removed.")
|
||||
N.designs -= d
|
||||
design_id_error(d)
|
||||
for(var/p in N.boost_item_paths)
|
||||
if(!ispath(p))
|
||||
N.boost_item_paths -= p
|
||||
node_boost_error(N.id, "[p] is not a valid path.")
|
||||
var/num = N.boost_item_paths[p]
|
||||
if(!isnum(num))
|
||||
N.boost_item_paths -= p
|
||||
node_boost_error(N.id, "[num] is not a valid number.")
|
||||
CHECK_TICK
|
||||
|
||||
/proc/verify_techweb_designs()
|
||||
for(var/d in SSresearch.techweb_designs)
|
||||
var/datum/design/D = SSresearch.techweb_designs[d]
|
||||
if(!istype(D))
|
||||
stack_trace("WARNING: Invalid research design with ID [d] detected and removed.")
|
||||
SSresearch.techweb_designs -= d
|
||||
CHECK_TICK
|
||||
|
||||
/proc/calculate_techweb_nodes()
|
||||
for(var/node_id in SSresearch.techweb_nodes)
|
||||
var/datum/techweb_node/node = SSresearch.techweb_nodes[node_id]
|
||||
node.prerequisites = list()
|
||||
node.unlocks = list()
|
||||
node.designs = list()
|
||||
for(var/i in node.prereq_ids)
|
||||
node.prerequisites[i] = SSresearch.techweb_nodes[i]
|
||||
for(var/i in node.design_ids)
|
||||
node.designs[i] = SSresearch.techweb_designs[i]
|
||||
if(node.hidden)
|
||||
SSresearch.techweb_nodes_hidden[node.id] = node
|
||||
CHECK_TICK
|
||||
generate_techweb_unlock_linking()
|
||||
|
||||
/proc/generate_techweb_unlock_linking()
|
||||
for(var/node_id in SSresearch.techweb_nodes) //Clear all unlock links to avoid duplication.
|
||||
var/datum/techweb_node/node = SSresearch.techweb_nodes[node_id]
|
||||
node.unlocks = list()
|
||||
for(var/node_id in SSresearch.techweb_nodes)
|
||||
var/datum/techweb_node/node = SSresearch.techweb_nodes[node_id]
|
||||
for(var/prereq_id in node.prerequisites)
|
||||
var/datum/techweb_node/prereq_node = node.prerequisites[prereq_id]
|
||||
prereq_node.unlocks[node.id] = node
|
||||
|
||||
/proc/calculate_techweb_boost_list(clearall = FALSE)
|
||||
if(clearall)
|
||||
SSresearch.techweb_boost_items = list()
|
||||
for(var/node_id in SSresearch.techweb_nodes)
|
||||
var/datum/techweb_node/node = SSresearch.techweb_nodes[node_id]
|
||||
for(var/path in node.boost_item_paths)
|
||||
if(!ispath(path))
|
||||
continue
|
||||
if(length(SSresearch.techweb_boost_items[path]))
|
||||
SSresearch.techweb_boost_items[path] += list(node.id = node.boost_item_paths[path])
|
||||
else
|
||||
SSresearch.techweb_boost_items[path] = list(node.id = node.boost_item_paths[path])
|
||||
CHECK_TICK
|
||||
|
||||
/proc/techweb_item_boost_check(obj/item/I) //Returns an associative list of techweb node datums with values of the boost it gives. var/list/returned = list()
|
||||
if(SSresearch.techweb_boost_items[I.type])
|
||||
return SSresearch.techweb_boost_items[I.type] //It should already be formatted in node datum = value.
|
||||
|
||||
/proc/techweb_item_point_check(obj/item/I)
|
||||
if(SSresearch.techweb_point_items[I.type])
|
||||
return SSresearch.techweb_point_items[I.type]
|
||||
return 0
|
||||
@@ -0,0 +1,273 @@
|
||||
|
||||
//Used \n[\s]*origin_tech[\s]*=[\s]*"[\S]+" to delete all origin techs.
|
||||
//Or \n[\s]*origin_tech[\s]*=[\s]list\([A-Z_\s=0-9,]*\)
|
||||
//Used \n[\s]*req_tech[\s]*=[\s]*list\(["a-z\s=0-9,]*\) to delete all req_techs.
|
||||
|
||||
//Techweb datums are meant to store unlocked research, being able to be stored on research consoles, servers, and disks. They are NOT global.
|
||||
/datum/techweb
|
||||
var/list/datum/techweb_node/researched_nodes = list() //Already unlocked and all designs are now available. Assoc list, id = datum
|
||||
var/list/datum/techweb_node/visible_nodes = list() //Visible nodes, doesn't mean it can be researched. Assoc list, id = datum
|
||||
var/list/datum/techweb_node/available_nodes = list() //Nodes that can immediately be researched, all reqs met. assoc list, id = datum
|
||||
var/list/datum/design/researched_designs = list() //Designs that are available for use. Assoc list, id = datum
|
||||
var/list/datum/techweb_node/boosted_nodes = list() //Already boosted nodes that can't be boosted again. node datum = path of boost object.
|
||||
var/list/datum/techweb_node/hidden_nodes = list() //Hidden nodes. id = datum. Used for unhiding nodes when requirements are met by removing the entry of the node.
|
||||
var/list/deconstructed_items = list() //items already deconstructed for a generic point boost
|
||||
var/research_points = 0 //Available research points.
|
||||
var/list/obj/machinery/computer/rdconsole/consoles_accessing = list()
|
||||
var/id = "generic"
|
||||
var/list/research_logs = list() //IC logs.
|
||||
var/max_bomb_value = 0
|
||||
|
||||
/datum/techweb/New()
|
||||
for(var/i in SSresearch.techweb_nodes_starting)
|
||||
var/datum/techweb_node/DN = SSresearch.techweb_nodes_starting[i]
|
||||
research_node(DN, TRUE, FALSE)
|
||||
hidden_nodes = SSresearch.techweb_nodes_hidden
|
||||
return ..()
|
||||
|
||||
/datum/techweb/admin
|
||||
research_points = INFINITY //KEKKLES.
|
||||
id = "ADMIN"
|
||||
|
||||
/datum/techweb/admin/New() //All unlocked.
|
||||
. = ..()
|
||||
for(var/i in SSresearch.techweb_nodes)
|
||||
var/datum/techweb_node/TN = SSresearch.techweb_nodes[i]
|
||||
research_node(TN, TRUE)
|
||||
hidden_nodes = list()
|
||||
|
||||
/datum/techweb/science //Global science techweb for RND consoles.
|
||||
id = "SCIENCE"
|
||||
|
||||
/datum/techweb/Destroy()
|
||||
researched_nodes = null
|
||||
researched_designs = null
|
||||
available_nodes = null
|
||||
visible_nodes = null
|
||||
return ..()
|
||||
|
||||
/datum/techweb/proc/recalculate_nodes(recalculate_designs = FALSE)
|
||||
var/list/datum/techweb_node/processing = list()
|
||||
for(var/i in researched_nodes)
|
||||
processing[i] = researched_nodes[i]
|
||||
for(var/i in visible_nodes)
|
||||
processing[i] = visible_nodes[i]
|
||||
for(var/i in available_nodes)
|
||||
processing[i] = available_nodes[i]
|
||||
for(var/i in processing)
|
||||
update_node_status(processing[i])
|
||||
if(recalculate_designs) //Wipes custom added designs like from design disks or anything like that!
|
||||
researched_designs = list()
|
||||
for(var/i in processing)
|
||||
var/datum/techweb_node/TN = processing[i]
|
||||
update_node_status(TN, FALSE)
|
||||
CHECK_TICK
|
||||
for(var/v in consoles_accessing)
|
||||
var/obj/machinery/computer/rdconsole/V = v
|
||||
V.rescan_views()
|
||||
V.updateUsrDialog()
|
||||
|
||||
/datum/techweb/proc/copy_research_to(datum/techweb/reciever, unlock_hidden = TRUE) //Adds any missing research to theirs.
|
||||
for(var/i in researched_nodes)
|
||||
CHECK_TICK
|
||||
reciever.research_node_id(i, TRUE, FALSE)
|
||||
for(var/i in researched_designs)
|
||||
CHECK_TICK
|
||||
reciever.add_design_by_id(i)
|
||||
if(unlock_hidden)
|
||||
for(var/i in reciever.hidden_nodes)
|
||||
CHECK_TICK
|
||||
if(!hidden_nodes[i])
|
||||
reciever.hidden_nodes -= i //We can see it so let them see it too.
|
||||
reciever.recalculate_nodes()
|
||||
|
||||
/datum/techweb/proc/copy()
|
||||
var/datum/techweb/returned = new()
|
||||
returned.researched_nodes = researched_nodes.Copy()
|
||||
returned.visible_nodes = visible_nodes.Copy()
|
||||
returned.available_nodes = available_nodes.Copy()
|
||||
returned.researched_designs = researched_designs.Copy()
|
||||
returned.hidden_nodes = hidden_nodes.Copy()
|
||||
return returned
|
||||
|
||||
/datum/techweb/proc/get_visible_nodes() //The way this is set up is shit but whatever.
|
||||
return visible_nodes - hidden_nodes
|
||||
|
||||
/datum/techweb/proc/get_available_nodes()
|
||||
return available_nodes - hidden_nodes
|
||||
|
||||
/datum/techweb/proc/get_researched_nodes()
|
||||
return researched_nodes - hidden_nodes
|
||||
|
||||
/datum/techweb/proc/add_design_by_id(id)
|
||||
return add_design(get_techweb_design_by_id(id))
|
||||
|
||||
/datum/techweb/proc/add_design(datum/design/design)
|
||||
if(!istype(design))
|
||||
return FALSE
|
||||
researched_designs[design.id] = design
|
||||
return TRUE
|
||||
|
||||
/datum/techweb/proc/remove_design_by_id(id)
|
||||
return remove_design(get_techweb_design_by_id(id))
|
||||
|
||||
/datum/techweb/proc/remove_design(datum/design/design)
|
||||
if(!istype(design))
|
||||
return FALSE
|
||||
researched_designs -= design.id
|
||||
return TRUE
|
||||
|
||||
/datum/techweb/proc/research_node_id(id, force, auto_update_points)
|
||||
return research_node(get_techweb_node_by_id(id), force, auto_update_points)
|
||||
|
||||
/datum/techweb/proc/research_node(datum/techweb_node/node, force = FALSE, auto_adjust_cost = TRUE)
|
||||
if(!istype(node))
|
||||
return FALSE
|
||||
update_node_status(node)
|
||||
if(!force)
|
||||
if(!available_nodes[node.id] || (auto_adjust_cost && (research_points < node.get_price(src))))
|
||||
return FALSE
|
||||
if(auto_adjust_cost)
|
||||
research_points -= node.get_price(src)
|
||||
researched_nodes[node.id] = node //Add to our researched list
|
||||
for(var/i in node.unlocks)
|
||||
visible_nodes[i] = node.unlocks[i]
|
||||
update_node_status(node.unlocks[i])
|
||||
for(var/i in node.designs)
|
||||
add_design(node.designs[i])
|
||||
update_node_status(node)
|
||||
return TRUE
|
||||
|
||||
/datum/techweb/proc/unresearch_node_id(id)
|
||||
return unresearch_node(get_techweb_node_by_id(id))
|
||||
|
||||
/datum/techweb/proc/unresearch_node(datum/techweb_node/node)
|
||||
if(!istype(node))
|
||||
return FALSE
|
||||
researched_nodes -= node.id
|
||||
recalculate_nodes(TRUE) //Fully rebuild the tree.
|
||||
|
||||
/datum/techweb/proc/boost_with_path(datum/techweb_node/N, itempath)
|
||||
if(!istype(N)||!ispath(itempath))
|
||||
return FALSE
|
||||
var/boost = N.boost_item_paths[itempath]
|
||||
if(!boosted_nodes[N])
|
||||
boosted_nodes[N] = boost
|
||||
if(N.autounlock_by_boost)
|
||||
hidden_nodes -= N.id
|
||||
return TRUE
|
||||
|
||||
/datum/techweb/proc/update_node_status(datum/techweb_node/node, autoupdate_consoles = TRUE)
|
||||
var/researched = FALSE
|
||||
var/available = FALSE
|
||||
var/visible = FALSE
|
||||
if(researched_nodes[node.id])
|
||||
researched = TRUE
|
||||
var/needed = node.prereq_ids.len
|
||||
for(var/i in node.prereq_ids)
|
||||
if(researched_nodes[i])
|
||||
visible = TRUE
|
||||
needed--
|
||||
if(!needed)
|
||||
available = TRUE
|
||||
researched_nodes -= node.id
|
||||
available_nodes -= node.id
|
||||
visible_nodes -= node.id
|
||||
if(hidden_nodes[node.id]) //Hidden.
|
||||
return
|
||||
if(researched)
|
||||
researched_nodes[node.id] = node
|
||||
for(var/i in node.designs)
|
||||
add_design(node.designs[i])
|
||||
else
|
||||
if(available)
|
||||
available_nodes[node.id] = node
|
||||
else
|
||||
if(visible)
|
||||
visible_nodes[node.id] = node
|
||||
if(autoupdate_consoles)
|
||||
for(var/v in consoles_accessing)
|
||||
var/obj/machinery/computer/rdconsole/V = v
|
||||
V.rescan_views()
|
||||
V.updateUsrDialog()
|
||||
|
||||
//Laggy procs to do specific checks, just in case. Don't use them if you can just use the vars that already store all this!
|
||||
/datum/techweb/proc/designHasReqs(datum/design/D)
|
||||
for(var/i in researched_nodes)
|
||||
var/datum/techweb_node/N = researched_nodes[i]
|
||||
for(var/I in N.designs)
|
||||
if(D == N.designs[I])
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/techweb/proc/isDesignResearched(datum/design/D)
|
||||
return isDesignResearchedID(D.id)
|
||||
|
||||
/datum/techweb/proc/isDesignResearchedID(id)
|
||||
return researched_designs[id]
|
||||
|
||||
/datum/techweb/proc/isNodeResearched(datum/techweb_node/N)
|
||||
return isNodeResearchedID(N.id)
|
||||
|
||||
/datum/techweb/proc/isNodeResearchedID(id)
|
||||
return researched_nodes[id]
|
||||
|
||||
/datum/techweb/proc/isNodeVisible(datum/techweb_node/N)
|
||||
return isNodeResearchedID(N.id)
|
||||
|
||||
/datum/techweb/proc/isNodeVisibleID(id)
|
||||
return visible_nodes[id]
|
||||
|
||||
/datum/techweb/proc/isNodeAvailable(datum/techweb_node/N)
|
||||
return isNodeAvailableID(N.id)
|
||||
|
||||
/datum/techweb/proc/isNodeAvailableID(id)
|
||||
return available_nodes[id]
|
||||
|
||||
/datum/techweb/specialized
|
||||
var/allowed_buildtypes = ALL
|
||||
|
||||
/datum/techweb/specialized/add_design(datum/design/D)
|
||||
if(!(D.build_type & allowed_buildtypes))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/techweb/specialized/autounlocking
|
||||
var/design_autounlock_buildtypes = NONE
|
||||
var/design_autounlock_categories = list("initial") //if a design has a buildtype that matches the abovea and either has a category in this or this is null, unlock it.
|
||||
var/node_autounlock_ids = list() //autounlock nodes of this type.
|
||||
|
||||
/datum/techweb/specialized/autounlocking/New()
|
||||
..()
|
||||
autounlock()
|
||||
|
||||
/datum/techweb/specialized/autounlocking/proc/autounlock()
|
||||
for(var/id in node_autounlock_ids)
|
||||
research_node_id(id, TRUE, FALSE)
|
||||
for(var/id in SSresearch.techweb_designs)
|
||||
var/datum/design/D = SSresearch.techweb_designs[id]
|
||||
if(D.build_type & design_autounlock_buildtypes)
|
||||
for(var/i in D.category)
|
||||
if(i in design_autounlock_categories)
|
||||
add_design(D)
|
||||
break
|
||||
|
||||
/datum/techweb/specialized/autounlocking/autolathe
|
||||
design_autounlock_buildtypes = AUTOLATHE
|
||||
allowed_buildtypes = AUTOLATHE
|
||||
|
||||
/datum/techweb/specialized/autounlocking/limbgrower
|
||||
design_autounlock_buildtypes = LIMBGROWER
|
||||
allowed_buildtypes = LIMBGROWER
|
||||
|
||||
/datum/techweb/specialized/autounlocking/biogenerator
|
||||
design_autounlock_buildtypes = BIOGENERATOR
|
||||
allowed_buildtypes = BIOGENERATOR
|
||||
|
||||
/datum/techweb/specialized/autounlocking/smelter
|
||||
design_autounlock_buildtypes = SMELTER
|
||||
allowed_buildtypes = SMELTER
|
||||
|
||||
/datum/techweb/specialized/autounlocking/exofab
|
||||
node_autounlock_ids = list("robotics", "mmi", "cyborg", "mecha_odysseus", "mech_gygax", "mech_durand", "mecha_phazon", "mecha", "mech_tools", "clown")
|
||||
allowed_buildtypes = MECHFAB
|
||||
@@ -0,0 +1,30 @@
|
||||
|
||||
//Techweb nodes are GLOBAL, there should only be one instance of them in the game. Persistant changes should never be made to them in-game.
|
||||
|
||||
/datum/techweb_node
|
||||
var/id
|
||||
var/display_name = "Errored Node"
|
||||
var/description = "Why are you seeing this?"
|
||||
var/hidden = FALSE //Whether it starts off hidden.
|
||||
var/starting_node = FALSE //Whether it's available without any research.
|
||||
var/list/prereq_ids = list()
|
||||
var/list/design_ids = list()
|
||||
var/list/datum/techweb_node/prerequisites = list() //Assoc list id = datum
|
||||
var/list/datum/techweb_node/unlocks = list() //CALCULATED FROM OTHER NODE'S PREREQUISITES. Assoc list id = datum.
|
||||
var/list/datum/design/designs = list() //Assoc list id = datum
|
||||
var/list/boost_item_paths = list() //Associative list, path = point_value.
|
||||
var/autounlock_by_boost = TRUE //boosting this will autounlock this node.
|
||||
var/export_price = 0 //Cargo export price.
|
||||
var/research_cost = 0 //Point cost to research.
|
||||
var/actual_cost = 0
|
||||
var/category = "Misc" //Category
|
||||
|
||||
/datum/techweb_node/New()
|
||||
actual_cost = research_cost
|
||||
|
||||
/datum/techweb_node/proc/get_price(datum/techweb/host)
|
||||
if(!host)
|
||||
return actual_cost
|
||||
var/discount = boost_item_paths[host.boosted_nodes[src]]
|
||||
actual_cost = research_cost - discount
|
||||
return actual_cost
|
||||
@@ -0,0 +1,860 @@
|
||||
|
||||
//Current rate: 132500 research points in 90 minutes
|
||||
//Current cargo price: 250000 points for fullmaxed R&D.
|
||||
|
||||
//Base Node
|
||||
/datum/techweb_node/base
|
||||
id = "base"
|
||||
starting_node = TRUE
|
||||
display_name = "Basic Research Technology"
|
||||
description = "NT default research technologies."
|
||||
design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani",
|
||||
"destructive_analyzer", "protolathe", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab",
|
||||
"space_heater") //Default research tech, prevents bricking
|
||||
|
||||
/////////////////////////Biotech/////////////////////////
|
||||
/datum/techweb_node/biotech
|
||||
id = "biotech"
|
||||
display_name = "Biological Technology"
|
||||
description = "What makes us tick." //the MC, silly!
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("mass_spectrometer", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "pandemic")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_biotech
|
||||
id = "adv_biotech"
|
||||
display_name = "Advanced Biotechnology"
|
||||
description = "Advanced Biotechnology"
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("piercesyringe", "adv_mass_spectrometer", "plasmarefiller", "limbgrower")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/////////////////////////data theory tech/////////////////////////
|
||||
/datum/techweb_node/datatheory //Computer science
|
||||
id = "datatheory"
|
||||
display_name = "Data Theory"
|
||||
description = "Big Data, in space!"
|
||||
prereq_ids = list("base")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_datatheory
|
||||
id = "adv_datatheory"
|
||||
display_name = "Advanced Data Theory"
|
||||
description = "Better insight into programming and data."
|
||||
prereq_ids = list("datatheory")
|
||||
design_ids = list("icprinter", "icupgadv", "icupgclo")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/////////////////////////engineering tech/////////////////////////
|
||||
/datum/techweb_node/engineering
|
||||
id = "engineering"
|
||||
description = "Modern Engineering Technology."
|
||||
display_name = "Industrial Engineering"
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("solarcontrol", "recharger", "powermonitor", "rped", "pacman", "adv_capacitor", "adv_scanning", "emitter", "high_cell", "adv_matter_bin",
|
||||
"atmosalerts", "atmos_control", "recycler", "autolathe", "high_micro_laser", "nano_mani", "weldingmask", "mesons", "thermomachine", "tesla_coil", "grounding_rod", "apc_control")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_engi
|
||||
id = "adv_engi"
|
||||
description = "Advanced Engineering research"
|
||||
display_name = "Advanced Engineering"
|
||||
prereq_ids = list("engineering", "emp_basic")
|
||||
design_ids = list("engine_goggles", "diagnostic_hud", "magboots")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/////////////////////////Bluespace tech/////////////////////////
|
||||
/datum/techweb_node/bluespace_basic //Bluespace-memery
|
||||
id = "bluespace_basic"
|
||||
display_name = "Basic Bluespace Theory"
|
||||
description = "Basic studies into the mysterious alternate dimension known as bluespace."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("beacon", "xenobioconsole")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_bluespace
|
||||
id = "adv_bluespace"
|
||||
display_name = "Advanced Bluespace Research"
|
||||
description = "Deeper understanding of how the Bluespace dimension works"
|
||||
prereq_ids = list("practical_bluespace", "high_efficiency")
|
||||
design_ids = list("bluespace_matter_bin", "femto_mani", "triphasic_scanning", "tele_station", "tele_hub", "quantumpad", "launchpad", "launchpad_console",
|
||||
"teleconsole", "bag_holding", "bluespace_crystal", "wormholeprojector")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/////////////////////////plasma tech/////////////////////////
|
||||
/datum/techweb_node/basic_plasma
|
||||
id = "basic_plasma"
|
||||
display_name = "Basic Plasma Research"
|
||||
description = "Research into the mysterious and dangerous substance, plasma."
|
||||
prereq_ids = list("engineering")
|
||||
design_ids = list("mech_generator")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_plasma
|
||||
id = "adv_plasma"
|
||||
display_name = "Advanced Plasma Research"
|
||||
description = "Research on how to fully exploit the power of plasma."
|
||||
prereq_ids = list("basic_plasma")
|
||||
design_ids = list("mech_plasma_cutter")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/////////////////////////robotics tech/////////////////////////
|
||||
/datum/techweb_node/robotics
|
||||
id = "robotics"
|
||||
display_name = "Basic Robotics Research"
|
||||
description = "Programmable machines that make our lives lazier."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("paicard", "drone_shell")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_robotics
|
||||
id = "adv_robotics"
|
||||
display_name = "Advanced Robotics Research"
|
||||
description = "It can even do the dishes!"
|
||||
prereq_ids = list("robotics")
|
||||
design_ids = list("borg_upgrade_diamonddrill")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/////////////////////////EMP tech/////////////////////////
|
||||
/datum/techweb_node/emp_basic //EMP tech for some reason
|
||||
id = "emp_basic"
|
||||
display_name = "Electromagnetic Theory"
|
||||
description = "Study into usage of frequencies in the electromagnetic spectrum."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("holosign", "inducer", "tray_goggles", "holopad")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/emp_adv
|
||||
id = "emp_adv"
|
||||
display_name = "Advanced Electromagnetic Theory"
|
||||
prereq_ids = list("emp_basic")
|
||||
design_ids = list("ultra_micro_laser")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/emp_super
|
||||
id = "emp_super"
|
||||
display_name = "Quantum Electromagnetic Technology" //bs
|
||||
description = "Even better electromagnetic technology"
|
||||
prereq_ids = list("emp_adv")
|
||||
design_ids = list("quadultra_micro_laser")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/////////////////////////Clown tech/////////////////////////
|
||||
/datum/techweb_node/clown
|
||||
id = "clown"
|
||||
display_name = "Clown Technology"
|
||||
description = "Honk?!"
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("air_horn", "honker_main", "honker_peri", "honker_targ", "honk_chassis", "honk_head", "honk_torso", "honk_left_arm", "honk_right_arm",
|
||||
"honk_left_leg", "honk_right_leg", "mech_banana_mortar", "mech_mousetrap_mortar", "mech_honker", "mech_punching_face", "implant_trombone")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
////////////////////////Computer tech////////////////////////
|
||||
/datum/techweb_node/comptech
|
||||
id = "comptech"
|
||||
display_name = "Computer Consoles"
|
||||
description = "Computers and how they work."
|
||||
prereq_ids = list("datatheory")
|
||||
design_ids = list("cargo", "cargorequest", "stockexchange", "libraryconsole", "aifixer", "mining", "crewconsole", "comconsole", "idcardconsole", "operating", "seccamera")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/computer_hardware_basic //Modular computers are shitty and nearly useless so until someone makes them actually useful this can be easy to get.
|
||||
id = "computer_hardware_basic"
|
||||
display_name = "Computer Hardware"
|
||||
description = "How computer hardware are made."
|
||||
prereq_ids = list("comptech")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
design_ids = list("hdd_basic", "hdd_advanced", "hdd_super", "hdd_cluster", "ssd_small", "ssd_micro", "netcard_basic", "netcard_advanced", "netcard_wired",
|
||||
"portadrive_basic", "portadrive_advanced", "portadrive_super", "cardslot", "aislot", "miniprinter", "APClink", "bat_control", "bat_normal", "bat_advanced",
|
||||
"bat_super", "bat_micro", "bat_nano", "cpu_normal", "pcpu_normal", "cpu_small", "pcpu_small")
|
||||
|
||||
/datum/techweb_node/computer_board_gaming
|
||||
id = "computer_board_gaming"
|
||||
display_name = "Arcade Games"
|
||||
description = "For the slackers on the station."
|
||||
prereq_ids = list("comptech")
|
||||
design_ids = list("arcade_battle", "arcade_orion", "slotmachine")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/comp_recordkeeping
|
||||
id = "comp_recordkeeping"
|
||||
display_name = "Computerized Recordkeeping"
|
||||
description = "Organized record databases and how they're used."
|
||||
prereq_ids = list("comptech")
|
||||
design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/telecomms
|
||||
id = "telecomms"
|
||||
display_name = "Telecommunications Technology"
|
||||
description = "Subspace transmission technology for near-instant communications devices."
|
||||
prereq_ids = list("comptech", "bluespace_basic")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
design_ids = list("s-receiver", "s-bus", "s-broadcaster", "s-processor", "s-hub", "s-server", "s-relay", "comm_monitor", "comm_server",
|
||||
"s-ansible", "s-filter", "s-amplifier", "ntnet_relay", "s-treatment", "s-analyzer", "s-crystal", "s-transmitter")
|
||||
|
||||
/datum/techweb_node/integrated_HUDs
|
||||
id = "integrated_HUDs"
|
||||
display_name = "Integrated HUDs"
|
||||
description = "The usefulness of computerized records, projected straight onto your eyepiece!"
|
||||
prereq_ids = list("comp_recordkeeping", "emp_basic")
|
||||
design_ids = list("health_hud", "security_hud", "diagnostic_hud", "scigoggles")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/NVGtech
|
||||
id = "NVGtech"
|
||||
display_name = "Night Vision Technology"
|
||||
description = "Allows seeing in the dark without actual light!"
|
||||
prereq_ids = list("integrated_HUDs", "adv_engi", "emp_adv")
|
||||
design_ids = list("health_hud_night", "security_hud_night", "diagnostic_hud_night", "night_visision_goggles", "nvgmesons")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
////////////////////////AI & Cyborg tech////////////////////////
|
||||
/datum/techweb_node/neural_programming
|
||||
id = "neural_programming"
|
||||
display_name = "Neural Programming"
|
||||
description = "Study into networks of processing units that mimic our brains."
|
||||
prereq_ids = list("biotech", "datatheory")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mmi
|
||||
id = "mmi"
|
||||
display_name = "Man Machine Interface"
|
||||
description = "A slightly Frankensteinian device that allows human brains to interface natively with software APIs."
|
||||
prereq_ids = list("biotech", "neural_programming")
|
||||
design_ids = list("mmi")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/posibrain
|
||||
id = "posibrain"
|
||||
display_name = "Positronic Brain"
|
||||
description = "Applied usage of neural technology allowing for autonomous AI units based on special metallic cubes with conductive and processing circuits."
|
||||
prereq_ids = list("mmi", "neural_programming")
|
||||
design_ids = list("mmi_posi")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/cyborg
|
||||
id = "cyborg"
|
||||
display_name = "Cyborg Construction"
|
||||
description = "Sapient robots with preloaded tool modules and programmable laws."
|
||||
prereq_ids = list("mmi", "robotics")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
design_ids = list("robocontrol", "sflash", "borg_suit", "borg_head", "borg_chest", "borg_r_arm", "borg_l_arm", "borg_r_leg", "borg_l_leg", "borgupload",
|
||||
"cyborgrecharger", "borg_upgrade_restart", "borg_upgrade_rename")
|
||||
|
||||
/datum/techweb_node/cyborg_upg_util
|
||||
id = "cyborg_upg_util"
|
||||
display_name = "Cyborg Upgrades: Utility"
|
||||
description = "Utility upgrades for cybogs."
|
||||
prereq_ids = list("engineering", "cyborg")
|
||||
design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/cyborg_upg_med
|
||||
id = "cyborg_upg_med"
|
||||
display_name = "Cyborg Upgrades: Medical"
|
||||
description = "Medical upgrades for cyborgs"
|
||||
prereq_ids = list("adv_biotech", "cyborg")
|
||||
design_ids = list("borg_upgrade_defibrillator", "borg_upgrade_piercinghypospray", "borg_upgrade_highstrengthsynthesiser", "borg_upgrade_expandedsynthesiser")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/cyborg_upg_combat
|
||||
id = "cyborg_upg_combat"
|
||||
display_name = "Cyborg Upgrades: Combat"
|
||||
description = "Military grade upgrades for cyborgs."
|
||||
prereq_ids = list("adv_robotics", "adv_engi")
|
||||
design_ids = list("borg_upgrade_vtec", "borg_upgrade_disablercooler")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/ai
|
||||
id = "ai"
|
||||
display_name = "Artificial Intelligence"
|
||||
description = "AI unit research."
|
||||
prereq_ids = list("robotics", "neural_programming")
|
||||
design_ids = list("aicore", "safeguard_module", "onehuman_module", "protectstation_module", "quarantine_module", "oxygen_module", "freeform_module",
|
||||
"reset_module", "purge_module", "remove_module", "freeformcore_module", "asimov_module", "paladin_module", "tyrant_module", "corporate_module",
|
||||
"default_module", "borg_ai_control", "mecha_tracking_ai_control", "aiupload", "intellicard")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
////////////////////////Medical////////////////////////
|
||||
/datum/techweb_node/cloning
|
||||
id = "cloning"
|
||||
display_name = "Genetic Engineering"
|
||||
description = "We have the technology to make him."
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("clonecontrol", "clonepod", "clonescanner", "scan_console")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/cryotech
|
||||
id = "cryotech"
|
||||
display_name = "Cryostasis Technology"
|
||||
description = "Smart freezing of objects to preserve them!"
|
||||
prereq_ids = list("adv_engi", "emp_basic", "biotech")
|
||||
design_ids = list("splitbeaker", "noreactsyringe", "cryotube", "cryo_Grenade")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/subdermal_implants
|
||||
id = "subdermal_implants"
|
||||
display_name = "Subdermal Implants"
|
||||
description = "Electronic implants buried beneath the skin."
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("implanter", "implantcase", "implant_chem", "implant_tracking")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/cyber_organs
|
||||
id = "cyber_organs"
|
||||
display_name = "Cybernetic Organs"
|
||||
description = "We have the technology to rebuild him."
|
||||
prereq_ids = list("adv_biotech", "cyborg")
|
||||
design_ids = list("cybernetic_heart", "cybernetic_liver", "cybernetic_liver_u")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/cyber_implants
|
||||
id = "cyber_implants"
|
||||
display_name = "Cybernetic Implants"
|
||||
description = "Electronic implants that improve humans."
|
||||
prereq_ids = list("adv_biotech", "cyborg", "adv_datatheory")
|
||||
design_ids = list("ci-nutriment", "ci-nutrimentplus", "ci-breather", "ci-gloweyes", "ci-welding", "ci-medhud", "ci-sechud")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_cyber_implants
|
||||
id = "adv_cyber_implants"
|
||||
display_name = "Advanced Cybernetic Implants"
|
||||
description = "Upgraded and more powerful cybernetic implants."
|
||||
prereq_ids = list("neural_programming", "cyber_implants")
|
||||
design_ids = list("ci-toolset", "ci-surgery", "ci-reviver")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/combat_cyber_implants
|
||||
id = "combat_cyber_implants"
|
||||
display_name = "Combat Cybernetic Implants"
|
||||
description = "Military grade combat implants to improve performance."
|
||||
prereq_ids = list("adv_cyber_implants") //Needs way more reqs.
|
||||
design_ids = list("ci-xray", "ci-thermals", "ci-antidrop", "ci-antistun", "ci-thrusters")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
////////////////////////generic biotech////////////////////////
|
||||
/datum/techweb_node/bio_process
|
||||
id = "bio_process"
|
||||
display_name = "Biological Processing"
|
||||
description = "From slimes to kitchens."
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("smartfridge", "gibber", "deepfryer", "monkey_recycler", "processor", "gibber", "microwave")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
////////////////////////generic engineering////////////////////////
|
||||
/datum/techweb_node/high_efficiency
|
||||
id = "high_efficiency"
|
||||
display_name = "High Efficiency Parts"
|
||||
description = "High Efficiency Parts"
|
||||
prereq_ids = list("engineering", "datatheory")
|
||||
design_ids = list("pico_mani", "super_matter_bin")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_power
|
||||
id = "adv_power"
|
||||
display_name = "Advanced Power Manipulation"
|
||||
description = "How to get more zap."
|
||||
prereq_ids = list("engineering")
|
||||
design_ids = list("smes", "super_cell", "hyper_cell", "super_capacitor", "superpacman", "mrspacman", "power_turbine", "power_turbine_console", "power_compressor")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
////////////////////////Tools////////////////////////
|
||||
/datum/techweb_node/basic_mining
|
||||
id = "basic_mining"
|
||||
display_name = "Mining Technology"
|
||||
description = "Better than Efficiency V."
|
||||
prereq_ids = list("engineering")
|
||||
design_ids = list("drill", "superresonator", "triggermod", "damagemod", "cooldownmod", "rangemod", "ore_redemption", "mining_equipment_vendor")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_mining
|
||||
id = "adv_mining"
|
||||
display_name = "Advanced Mining Technology"
|
||||
description = "Efficiency Level 127" //dumb mc references
|
||||
prereq_ids = list("basic_mining", "adv_engi", "adv_power", "adv_plasma")
|
||||
design_ids = list("drill_diamond", "jackhammer", "hypermod", "plasmacutter", "plasmacutter_adv")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/practical_bluespace
|
||||
id = "practical_bluespace"
|
||||
display_name = "Applied Bluespace Research"
|
||||
description = "Using bluespace to make things faster and better."
|
||||
prereq_ids = list("bluespace_basic", "engineering")
|
||||
design_ids = list("bs_rped","minerbag_holding", "telesci_gps", "bluespacebeaker", "bluespacesyringe", "bluespacebodybag", "phasic_scanning")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/janitor
|
||||
id = "janitor"
|
||||
display_name = "Advanced Sanitation Technology"
|
||||
description = "Clean things better, faster, stronger, and harder!"
|
||||
prereq_ids = list("adv_engi")
|
||||
design_ids = list("advmop", "buffer", "blutrash", "light_replacer")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/botany
|
||||
id = "botany"
|
||||
display_name = "Botanical Engineering"
|
||||
description = "Botanical tools"
|
||||
prereq_ids = list("adv_engi", "biotech")
|
||||
design_ids = list("diskplantgene", "portaseeder", "plantgenes", "flora_gun", "hydro_tray", "biogenerator", "seed_extractor")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/exp_tools
|
||||
id = "exp_tools"
|
||||
display_name = "Experimental Tools"
|
||||
description = "Highly advanced construction tools."
|
||||
design_ids = list("exwelder", "jawsoflife", "handdrill")
|
||||
prereq_ids = list("adv_engi")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/exp_equipment
|
||||
id = "exp_equipment"
|
||||
display_name = "Experimental Flight Equipment"
|
||||
description = "Highly advanced construction tools."
|
||||
design_ids = list("flightshoes", "flightpack", "flightsuit")
|
||||
prereq_ids = list("adv_engi")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/bluespace_power
|
||||
id = "bluespace_power"
|
||||
display_name = "Bluespace Power Technology"
|
||||
description = "Even more powerful.. power!"
|
||||
prereq_ids = list("adv_power", "adv_bluespace")
|
||||
design_ids = list("bluespace_cell", "quadratic_capacitor")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/////////////////////////weaponry tech/////////////////////////
|
||||
/datum/techweb_node/weaponry
|
||||
id = "weaponry"
|
||||
display_name = "Weapon Development Technology"
|
||||
description = "Our researchers have found new to weaponize just about everything now."
|
||||
prereq_ids = list("engineering")
|
||||
design_ids = list("pin_testing")
|
||||
research_cost = 10000
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_weaponry
|
||||
id = "adv_weaponry"
|
||||
display_name = "Advanced Weapon Development Technology"
|
||||
description = "Our weapons are breaking the rules of reality by now."
|
||||
prereq_ids = list("adv_engi", "weaponry")
|
||||
design_ids = list("pin_loyalty")
|
||||
research_cost = 10000
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/electric_weapons
|
||||
id = "electronic_weapons"
|
||||
display_name = "Electric Weapons"
|
||||
description = "Weapons using electric technology"
|
||||
prereq_ids = list("weaponry", "adv_power")
|
||||
design_ids = list("stunrevolver", "stunshell", "tele_shield")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/radioactive_weapons
|
||||
id = "radioactive_weapons"
|
||||
display_name = "Radioactive Weaponry"
|
||||
description = "Weapons using radioactive technology."
|
||||
prereq_ids = list("adv_engi", "adv_weaponry")
|
||||
design_ids = list("nuclear_gun", "decloner")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/medical_weapons
|
||||
id = "medical_weapons"
|
||||
display_name = "Medical Weaponry"
|
||||
description = "Weapons using medical technology."
|
||||
prereq_ids = list("adv_biotech", "adv_weaponry")
|
||||
design_ids = list("rapidsyringe")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/beam_weapons
|
||||
id = "beam_weapons"
|
||||
display_name = "Beam Weaponry"
|
||||
description = "Various basic beam weapons"
|
||||
prereq_ids = list("adv_weaponry")
|
||||
design_ids = list("beamrifle", "ioncarbine")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_beam_weapons
|
||||
id = "adv_beam_weapons"
|
||||
display_name = "Advanced Beam Weaponry"
|
||||
description = "Various advanced beam weapons"
|
||||
prereq_ids = list("beam_weapons")
|
||||
design_ids = list("xray_laser")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/explosive_weapons
|
||||
id = "explosive_weapons"
|
||||
display_name = "Explosive & Pyrotechnical Weaponry"
|
||||
description = "If the light stuff just won't do it."
|
||||
prereq_ids = list("adv_weaponry")
|
||||
design_ids = list("temp_gun", "large_Grenade", "pyro_Grenade", "adv_Grenade")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/ballistic_weapons
|
||||
id = "ballistic_weapons"
|
||||
display_name = "Ballistic Weaponry"
|
||||
description = "This isn't research.. This is reverse-engineering!"
|
||||
prereq_ids = list("weaponry")
|
||||
design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/tech_shell
|
||||
id = "tech_shell"
|
||||
display_name = "Technological Shells"
|
||||
description = "They're more technological than regular shot."
|
||||
prereq_ids = list("adv_weaponry")
|
||||
design_ids = list("techshotshell")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/gravity_gun
|
||||
id = "gravity_gun"
|
||||
display_name = "One-point Bluespace-gravitational Manipulator"
|
||||
description = "Fancy wording for gravity gun"
|
||||
prereq_ids = list("adv_weaponry", "adv_bluespace")
|
||||
design_ids = list("gravitygun")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
////////////////////////mech technology////////////////////////
|
||||
/datum/techweb_node/mech
|
||||
id = "mecha"
|
||||
display_name = "Mechanical Exosuits"
|
||||
description = "Mechanized exosuits that are several magnitudes stronger and more powerful than the average human."
|
||||
prereq_ids = list("robotics", "adv_engi")
|
||||
design_ids = list("mecha_tracking", "mechacontrol", "mechapower", "mech_recharger", "ripley_chassis", "firefighter_chassis", "ripley_torso", "ripley_left_arm", "ripley_right_arm", "ripley_left_leg", "ripley_right_leg",
|
||||
"ripley_main", "ripley_peri", "mech_hydraulic_clamp")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_mecha
|
||||
id = "adv_mecha"
|
||||
display_name = "Mechanical Exosuits"
|
||||
description = "Mechanized exosuits that are several magnitudes stronger and more powerful than the average human."
|
||||
prereq_ids = list("adv_robotics", "mecha")
|
||||
design_ids = list("mech_repair_droid")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/odysseus
|
||||
id = "mecha_odysseus"
|
||||
display_name = "EXOSUIT: Odysseus"
|
||||
description = "Odysseus exosuit designs"
|
||||
prereq_ids = list("mecha")
|
||||
design_ids = list("odysseus_chassis", "odysseus_torso", "odysseus_head", "odysseus_left_arm", "odysseus_right_arm" ,"odysseus_left_leg", "odysseus_right_leg",
|
||||
"odysseus_main", "odysseus_peri")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/gygax
|
||||
id = "mech_gygax"
|
||||
display_name = "EXOSUIT: Gygax"
|
||||
description = "Gygax exosuit designs"
|
||||
prereq_ids = list("adv_mecha", "weaponry")
|
||||
design_ids = list("gygax_chassis", "gygax_torso", "gygax_head", "gygax_left_arm", "gygax_right_arm", "gygax_left_leg", "gygax_right_leg", "gygax_main",
|
||||
"gygax_peri", "gygax_targ", "gygax_armor")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/durand
|
||||
id = "mech_durand"
|
||||
display_name = "EXOSUIT: Durand"
|
||||
description = "Durand exosuit designs"
|
||||
prereq_ids = list("adv_mecha", "adv_weaponry")
|
||||
design_ids = list("durand_chassis", "durand_torso", "durand_head", "durand_left_arm", "durand_right_arm", "durand_left_leg", "durand_right_leg", "durand_main",
|
||||
"durand_peri", "durand_targ", "durand_armor")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/phazon
|
||||
id = "mecha_phazon"
|
||||
display_name = "EXOSUIT: Phazon"
|
||||
description = "Phazon exosuit designs"
|
||||
prereq_ids = list("adv_mecha", "weaponry")
|
||||
design_ids = list("phazon_chassis", "phazon_torso", "phazon_head", "phazon_left_arm", "phazon_right_arm", "phazon_left_leg", "phazon_right_leg", "phazon_main",
|
||||
"phazon_peri", "phazon_targ", "phazon_armor")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_tools
|
||||
id = "mech_tools"
|
||||
display_name = "Basic Exosuit Equipment"
|
||||
description = "Various tools fit for basic mech units"
|
||||
prereq_ids = list("mecha", "engineering")
|
||||
design_ids = list("mech_drill", "mech_mscanner", "mech_extinguisher", "mech_cable_layer")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/adv_mecha_tools
|
||||
id = "adv_mecha_tools"
|
||||
display_name = "Advanced Exosuit Equipment"
|
||||
description = "Tools for high level mech suits"
|
||||
prereq_ids = list("adv_mecha", "mech_tools", "adv_engi")
|
||||
design_ids = list("mech_rcd")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/med_mech_tools
|
||||
id = "med_mech_tools"
|
||||
display_name = "Medical Exosuit Equipment"
|
||||
description = "Tools for high level mech suits"
|
||||
prereq_ids = list("mecha", "adv_biotech", "mech_tools")
|
||||
design_ids = list("mech_sleeper", "mech_syringe_gun", "mech_medi_beam")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_modules
|
||||
id = "adv_mecha_modules"
|
||||
display_name = "Basic Exosuit Modules"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("adv_mecha", "adv_power")
|
||||
design_ids = list("mech_energy_relay", "mech_ccw_armor", "mech_proj_armor", "mech_generator_nuclear")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_scattershot
|
||||
id = "mecha_tools"
|
||||
display_name = "Exosuit Weapon (LBX AC 10 \"Scattershot\")"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "adv_weaponry", "ballistic_weapons")
|
||||
design_ids = list("mech_scattershot")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_carbine
|
||||
id = "mech_carbine"
|
||||
display_name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "adv_weaponry", "ballistic_weapons")
|
||||
design_ids = list("mech_carbine")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_ion
|
||||
id = "mmech_ion"
|
||||
display_name = "Exosuit Weapon (MKIV Ion Heavy Cannon)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "adv_weaponry", "emp_adv")
|
||||
design_ids = list("mech_ion")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_tesla
|
||||
id = "mech_tesla"
|
||||
display_name = "Exosuit Weapon (MKI Tesla Cannon)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "weaponry", "adv_power")
|
||||
design_ids = list("mech_tesla")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_laser
|
||||
id = "mech_laser"
|
||||
display_name = "Exosuit Weapon (CH-PS \"Immolator\" Laser)"
|
||||
description = "A basic piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "beam_weapons")
|
||||
design_ids = list("mech_laser")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_laser_heavy
|
||||
id = "mech_laser_heavy"
|
||||
display_name = "Exosuit Weapon (CH-LC \"Solaris\" Laser Cannon)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "adv_weaponry", "adv_beam_weapons")
|
||||
design_ids = list("mech_laser_heavy")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_grenade_launcher
|
||||
id = "mech_grenade_launcher"
|
||||
display_name = "Exosuit Weapon (SGL-6 Grenade Launcher)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "explosive_weapons")
|
||||
design_ids = list("mech_grenade_launcher")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_missile_rack
|
||||
id = "mech_missile_rack"
|
||||
display_name = "Exosuit Weapon (SRM-8 Missile Rack)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "explosive_weapons")
|
||||
design_ids = list("mech_missile_rack")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/clusterbang_launcher
|
||||
id = "clusterbang_launcher"
|
||||
display_name = "Exosuit Module (SOB-3 Clusterbang Launcher)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "weaponry")
|
||||
design_ids = list("clusterbang_launcher")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_teleporter
|
||||
id = "mech_teleporter"
|
||||
display_name = "Exosuit Module (Teleporter Module)"
|
||||
description = "An advanced piece of mech Equipment"
|
||||
prereq_ids = list("mecha", "mech_tools", "adv_bluespace")
|
||||
design_ids = list("mech_teleporter")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_wormhole_gen
|
||||
id = "mech_wormhole_gen"
|
||||
display_name = "Exosuit Module (Localized Wormhole Generator)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "mech_tools", "adv_bluespace")
|
||||
design_ids = list("mech_wormhole_gen")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_taser
|
||||
id = "mech_taser"
|
||||
display_name = "Exosuit Weapon (PBT \"Pacifier\" Mounted Taser)"
|
||||
description = "A basic piece of mech weaponry"
|
||||
prereq_ids = list("mecha", "adv_weaponry")
|
||||
design_ids = list("mech_taser")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_lmg
|
||||
id = "mech_lmg"
|
||||
display_name = "Exosuit Weapon (PBT \"Pacifier\" Mounted Taser)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("adv_mecha", "adv_weaponry", "ballistic_weapons")
|
||||
design_ids = list("mech_lmg")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
/datum/techweb_node/mech_diamond_drill
|
||||
id = "mech_diamond_drill"
|
||||
display_name = "Exosuit Diamond Drill"
|
||||
description = "A diamond drill fit for a large exosuit"
|
||||
prereq_ids = list("mecha", "adv_mining")
|
||||
design_ids = list("mech_diamond_drill")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
|
||||
////////////////////////Alien technology////////////////////////
|
||||
/datum/techweb_node/alientech //AYYYYYYYYLMAOO tech
|
||||
id = "alientech"
|
||||
display_name = "Alien Technology"
|
||||
description = "Things used by the greys."
|
||||
prereq_ids = list("base")
|
||||
boost_item_paths = list(/obj/item/gun/energy/alien = 0, /obj/item/scalpel/alien = 0, /obj/item/hemostat/alien = 0, /obj/item/retractor/alien = 0, /obj/item/circular_saw/alien = 0,
|
||||
/obj/item/cautery/alien = 0, /obj/item/surgicaldrill/alien = 0, /obj/item/screwdriver/abductor = 0, /obj/item/wrench/abductor = 0, /obj/item/crowbar/abductor = 0, /obj/item/device/multitool/abductor = 0,
|
||||
/obj/item/weldingtool/abductor = 0, /obj/item/wirecutters/abductor = 0, /obj/item/circuitboard/machine/abductor = 0, /obj/item/abductor_baton = 0, /obj/item/device/abductor = 0)
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
hidden = TRUE
|
||||
design_ids = list("alienalloy")
|
||||
|
||||
/datum/techweb_node/alien_bio
|
||||
id = "alien_bio"
|
||||
display_name = "Alien Biological Tools"
|
||||
description = "Advanced biological tools."
|
||||
prereq_ids = list("alientech", "biotech")
|
||||
design_ids = list("alien_scalpel", "alien_hemostat", "alien_retractor", "alien_saw", "alien_drill", "alien_cautery")
|
||||
boost_item_paths = list(/obj/item/gun/energy/alien = 0, /obj/item/scalpel/alien = 0, /obj/item/hemostat/alien = 0, /obj/item/retractor/alien = 0, /obj/item/circular_saw/alien = 0,
|
||||
/obj/item/cautery/alien = 0, /obj/item/surgicaldrill/alien = 0, /obj/item/screwdriver/abductor = 0, /obj/item/wrench/abductor = 0, /obj/item/crowbar/abductor = 0, /obj/item/device/multitool/abductor = 0,
|
||||
/obj/item/weldingtool/abductor = 0, /obj/item/wirecutters/abductor = 0, /obj/item/circuitboard/machine/abductor = 0, /obj/item/abductor_baton = 0, /obj/item/device/abductor = 0)
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
hidden = TRUE
|
||||
|
||||
/datum/techweb_node/alien_engi
|
||||
id = "alien_engi"
|
||||
display_name = "Alien Engineering"
|
||||
description = "Alien engineering tools"
|
||||
prereq_ids = list("alientech", "adv_engi")
|
||||
boost_item_paths = list(/obj/item/screwdriver/abductor = 0, /obj/item/wrench/abductor = 0, /obj/item/crowbar/abductor = 0, /obj/item/device/multitool/abductor = 0,
|
||||
/obj/item/weldingtool/abductor = 0, /obj/item/wirecutters/abductor = 0, /obj/item/circuitboard/machine/abductor = 0, /obj/item/abductor_baton = 0, /obj/item/device/abductor = 0)
|
||||
design_ids = list("alien_wrench", "alien_wirecutters", "alien_screwdriver", "alien_crowbar", "alien_welder", "alien_multitool")
|
||||
research_cost = 2500
|
||||
export_price = 10000
|
||||
hidden = TRUE
|
||||
|
||||
/proc/total_techweb_points()
|
||||
var/list/datum/techweb_node/processing = list()
|
||||
for(var/i in subtypesof(/datum/techweb_node))
|
||||
processing += new i
|
||||
. = 0
|
||||
for(var/i in processing)
|
||||
var/datum/techweb_node/TN = i
|
||||
. += TN.research_cost
|
||||
|
||||
/*
|
||||
/datum/design/borg_syndicate_module
|
||||
name = "Cyborg Upgrade (Illegal Modules)"
|
||||
id = "borg_syndicate_module"
|
||||
construction_time = 120
|
||||
|
||||
/datum/design/suppressor
|
||||
name = "Universal Suppressor"
|
||||
id = "suppressor"
|
||||
|
||||
/datum/design/largecrossbow
|
||||
name = "Energy Crossbow"
|
||||
id = "largecrossbow"
|
||||
build_path = /obj/item/gun/energy/kinetic_accelerator/crossbow/large
|
||||
*/
|
||||
@@ -11,7 +11,6 @@
|
||||
throwforce = 0
|
||||
throw_speed = 3
|
||||
throw_range = 6
|
||||
origin_tech = "biotech=3"
|
||||
container_type = INJECTABLE_1
|
||||
var/Uses = 1 // uses before it goes inert
|
||||
var/qdel_timer = null // deletion timer, for delayed reactions
|
||||
@@ -124,7 +123,6 @@
|
||||
name = "slime potion"
|
||||
desc = "A hard yet gelatinous capsule excreted by a slime, containing mysterious substances."
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
origin_tech = "biotech=4"
|
||||
|
||||
/obj/item/slimepotion/afterattack(obj/item/reagent_containers/target, mob/user , proximity)
|
||||
if (istype(target))
|
||||
@@ -162,7 +160,6 @@
|
||||
desc = "A miraculous chemical mix that grants human like intelligence to living beings."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "potpink"
|
||||
origin_tech = "biotech=6"
|
||||
var/list/not_interested = list()
|
||||
var/being_used = 0
|
||||
var/sentience_type = SENTIENCE_ORGANIC
|
||||
@@ -208,7 +205,6 @@
|
||||
desc = "A strange slime-based chemical that, when used, allows the user to transfer their consciousness to a lesser being."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "potorange"
|
||||
origin_tech = "biotech=6"
|
||||
var/prompted = 0
|
||||
var/animal_type = SENTIENCE_ORGANIC
|
||||
|
||||
@@ -327,7 +323,6 @@
|
||||
desc = "A potent chemical mix that will remove the slowdown from any item."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "potyellow"
|
||||
origin_tech = "biotech=5"
|
||||
|
||||
/obj/item/slimepotion/speed/afterattack(obj/C, mob/user)
|
||||
..()
|
||||
@@ -360,7 +355,6 @@
|
||||
desc = "A potent chemical mix that will fireproof any article of clothing. Has three uses."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "potblue"
|
||||
origin_tech = "biotech=5"
|
||||
var/uses = 3
|
||||
|
||||
/obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user)
|
||||
|
||||
Reference in New Issue
Block a user