Techwebs & Experi-Sci (#17987)

* Techwebs

* Add basic stock parts

* Techweb production machines

* Circuit Imprinter

* More work

* More designs

* More designs, nodes'

* More more

* Better sorting for designs

* Add the exosuit fab'

* More conversions

* More and more and more

* mechfab parts

* Modsuit Designs

* Pinnace baron

* Equipment

* more mechfab

* vehicles

* more mecha

* Micro mechs

* Update mechfab_designs.dm

* no time

* zero

* Update mechfab_designs.dm

* Prosthetics Fabricator and fixes

* Update maps to use new parts

* Whoops, fix a few maps

* Fix lint error

* Port scene tools

* Fireworks~~

* Don't label the sex toys as sex toys

* Fixup maps in TGM format

26517b7122: maps/virgo_minitest/virgo_minitest-1.dmm

Automatically commited by: tools\mapmerge2\fixup.py

* Significant portion of designs converted

* Fix paths

* Fix tgui lints

* Just a whole bunch of designs

* Almost doneeee

* ALL DESIGNS CONVERTED

* Merk all of the old stuff

* Fix a few errors

* Fix more errors

* MORE FIX

* Make server control work

* Undo changes to archive

* Fix a TODO

* Make disks work

* Start the long process of finishing the node tree

* One more oops

* All mechfab designs

* Add departmental protolathes

* Down to 200 designs unsorted

* FINISH TECHWEBS

* Fuck whoops

* Remove the debug verbs

* Little map tweaks

* Fix mousedrop

* More map fixes

* Upstream bug lmao

* guess CI hates this

* Fixup maps in TGM format

fe062e7bc4: maps/tether/tether-03-surface3.dmm

Automatically commited by: tools\mapmerge2\fixup.py

* I gotta stop committing this

* Change scree requested

* Make science able to print implants too

* Fix ghost spawns

* Move NSFW gun

* Merk partbundles, make janus module work

* Pretty animation when you complete the tree :)

* Don't display designs you can't print

* Move security protolathes to warden's office

* Make servers recover from power failure gracefully

* Make fabricators drop their mats on the ground when destroyed

* Ore Silo

* Make CI happy

* Fixup maps in TGM format

fe062e7bc4: maps/tether/tether-05-station1.dmm

Automatically commited by: tools\mapmerge2\fixup.py

* Fix MC crash

* Make experiscanner work for borgs

* I REALLY gotta stop committing this

* Make scientists and the RD spawn with an experiscanner

* Lock NIFs behind scanning mice

* Make Biome happy

* Allow scanning Cocoa and Kendrick in case they can't find mice

* Change from Kendrick to Ratthew, ;help maint, or Brick

* Change the name of the /rat/pet class so the experiscanner is more helpful

* Add departmental_flags to a bunch of things

* Remove a few things from security's techfab

* Add a second engineering lathe to atmos

* Fix runtime recycling rig modules, add name to cost sequence

* Add a discount experiment for scanning slime cores

* Change some fluff and shuffle chameleon clothes to bluespace yadayada

* Make closets alt click immune

* Do a bunch of sorting

* Silly

* Hopefully fix all infinite material bugs in techwebs

* bad merge

* quick ai fix

* fix some robot stuff

* axe downlaod fully

* list

* no ref

* easier readable

---------

Co-authored-by: C.L. <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
ShadowLarkens
2025-07-25 21:30:08 -07:00
committed by GitHub
parent 93efaa653a
commit b60cd47309
271 changed files with 19410 additions and 11158 deletions
+16 -9
View File
@@ -30,6 +30,7 @@
law_list = dd_sortedObjectList(law_list)
/datum/eventkit/modify_robot/tgui_close()
target = null
if(source)
qdel(source)
@@ -586,13 +587,19 @@
to_chat(ui.user, span_notice("Laws displayed."))
return TRUE
if("select_ai")
selected_ai = locate(params["new_ai"])
selected_ai = params["new_ai"]
return TRUE
if("swap_sync")
var/new_ai = selected_ai ? selected_ai : select_active_ai_with_fewest_borgs()
if(new_ai)
var/mob/living/silicon/ai/our_ai
for(var/mob/living/silicon/ai/ai in GLOB.ai_list)
if(ai.name == selected_ai)
our_ai = ai
break
if(!our_ai)
our_ai = select_active_ai_with_fewest_borgs()
if(our_ai)
target.lawupdate = 1
target.connect_to_ai(new_ai)
target.connect_to_ai(our_ai)
return TRUE
if("disconnect_ai")
if(target.is_slaved())
@@ -649,7 +656,7 @@
var/list/all_upgrades = list()
var/list/whitelisted_upgrades = list()
var/list/blacklisted_upgrades = list()
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/restricted/upgrade as anything in subtypesof(/datum/design_techweb/prosfab/robot_upgrade/restricted))
if(!upgrade.name)
continue
if(!(initial(upgrade.build_path) in target.module.supported_upgrades))
@@ -659,14 +666,14 @@
all_upgrades["whitelisted_upgrades"] = whitelisted_upgrades
all_upgrades["blacklisted_upgrades"] = blacklisted_upgrades
var/list/utility_upgrades = list()
for(var/datum/design/item/prosfab/robot_upgrade/utility/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/utility/upgrade as anything in subtypesof(/datum/design_techweb/prosfab/robot_upgrade/utility))
if(!upgrade.name)
continue
if(!(target.has_upgrade(initial(upgrade.build_path))))
utility_upgrades += list(list("name" = initial(upgrade.name), "path" = "[initial(upgrade.build_path)]"))
all_upgrades["utility_upgrades"] = utility_upgrades
var/list/basic_upgrades = list()
for(var/datum/design/item/prosfab/robot_upgrade/basic/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/basic/upgrade as anything in subtypesof(/datum/design_techweb/prosfab/robot_upgrade/basic))
if(!upgrade.name)
continue
if(!(target.has_upgrade(initial(upgrade.build_path))))
@@ -675,7 +682,7 @@
basic_upgrades += list(list("name" = initial(upgrade.name), "path" = "[initial(upgrade.build_path)]", "installed" = 1))
all_upgrades["basic_upgrades"] = basic_upgrades
var/list/advanced_upgrades = list()
for(var/datum/design/item/prosfab/robot_upgrade/advanced/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/advanced/upgrade as anything in subtypesof(/datum/design_techweb/prosfab/robot_upgrade/advanced))
if(!upgrade.name)
continue
if(!(target.has_upgrade(initial(upgrade.build_path))))
@@ -684,7 +691,7 @@
advanced_upgrades += list(list("name" = initial(upgrade.name), "path" = "[initial(upgrade.build_path)]", "installed" = 1))
all_upgrades["advanced_upgrades"] = advanced_upgrades
var/list/restricted_upgrades = list()
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/restricted/upgrade as anything in subtypesof(/datum/design_techweb/prosfab/robot_upgrade/restricted))
if(!upgrade.name)
continue
if(!(target.has_upgrade(initial(upgrade.build_path))))
-366
View File
@@ -1,366 +0,0 @@
//Allows to add and remove modules from borgs
/client/proc/modify_robot(var/mob/living/silicon/robot/target in GLOB.silicon_mob_list)
set name = "Modify Robot Module"
set desc = "Allows to add or remove modules to/from robots."
set category = "Admin.Silicon"
if(!check_rights(R_ADMIN|R_FUN|R_VAREDIT|R_EVENT))
return
if(!istype(target))
return
if(!target.module)
var/list/pre_modification_options = list(MODIFIY_ROBOT_TOGGLE_ERT, MODIFIY_ROBOT_LIMIT_MODULES_ADD, MODIFIY_ROBOT_LIMIT_MODULES_REMOVE)
while(TRUE)
var/pre_modification_choice = tgui_input_list(usr, "Which pre module selection edits would you like to perform form [target]","Choice", pre_modification_options)
if(!pre_modification_choice || pre_modification_choice == "Cancel")
return
switch(pre_modification_choice)
if(MODIFIY_ROBOT_TOGGLE_ERT)
if(tgui_alert(usr, "This robot has not yet selected a module. Would you like to toggle combat module override?","Confirm",list("Yes","No"))!="Yes")
continue
target.crisis_override = !target.crisis_override
to_chat(usr, span_danger("You [target.crisis_override? "enabled":"disabled"] [target]'s combat module overwrite."))
continue
if(MODIFIY_ROBOT_LIMIT_MODULES_ADD)
if(target.restrict_modules_to.len)
to_chat(usr, span_warning("[target]'s modules are already restricted. For details you can use the remove verb to show all active restrictions."))
var/list/possible_options = list()
for(var/entry in robot_modules)
if(!target.restrict_modules_to.Find(entry))
possible_options += entry
while(TRUE)
var/selected_type = tgui_input_list(usr, "Please select the module type to add to the robot's restrictions. This will limit the module choices to the added types only.", "Module types", possible_options)
if(!selected_type || selected_type == "Cancel")
break
possible_options -= selected_type
target.restrict_modules_to += selected_type
to_chat(usr, span_danger("You added [selected_type] to [target]'s possible modules list."))
continue
if(MODIFIY_ROBOT_LIMIT_MODULES_REMOVE)
while(TRUE)
var/selected_type = tgui_input_list(usr, "Please select the module type to remove. Removing all module types here will allow default station module selection.", "Module types", target.restrict_modules_to)
if(!selected_type || selected_type == "Cancel")
to_chat(usr, span_danger("[target] uses the default module list without special restrictions."))
break
target.restrict_modules_to -= selected_type
to_chat(usr, span_danger("You removed [selected_type] from [target]'s possible modules list."))
continue
if(!target.module.modules)
return
var/list/modification_options = list(MODIFIY_ROBOT_MODULE_ADD,MODIFIY_ROBOT_MODULE_REMOVE, MODIFIY_ROBOT_APPLY_UPGRADE, MODIFIY_ROBOT_SUPP_ADD, MODIFIY_ROBOT_SUPP_REMOVE, MODIFIY_ROBOT_RADIOC_ADD, MODIFIY_ROBOT_RADIOC_REMOVE,
MODIFIY_ROBOT_COMP_ADD, MODIFIY_ROBOT_COMP_REMOVE, MODIFIY_ROBOT_SWAP_MODULE, MODIFIY_ROBOT_RESET_MODULE, MODIFIY_ROBOT_TOGGLE_ERT, MODIFIY_ROBOT_TOGGLE_STATION_ACCESS, MODIFIY_ROBOT_TOGGLE_CENT_ACCESS)
while(TRUE)
var/modification_choice = tgui_input_list(usr, "Select if you want to add or remove a module to/from [target]","Choice", modification_options)
if(!modification_choice || modification_choice == "Cancel")
return
if(!target.module || !target.module.modules)
to_chat(usr, span_danger("[target] was recently reset, you must wait until module selection has been completed before continuing modifying."))
continue
log_and_message_admins("has used MODIFYROBOT ([modification_choice]) on [key_name(target)].", usr)
feedback_add_details("admin_verb","MODIFYROBOT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
switch(modification_choice)
if(MODIFIY_ROBOT_MODULE_ADD)
while(TRUE)
var/selected_module_module = tgui_input_list(usr, "Please select the module to pick modules from", "Module", robot_modules)
if(!selected_module_module || selected_module_module == "Cancel")
break
var/module_type = robot_modules[selected_module_module]
var/mob/living/silicon/robot/robot = new /mob/living/silicon/robot(null)
var/obj/item/robot_module/robot/robot_type = new module_type(robot)
robot.emag_items = 1
if(!istype(robot_type, /obj/item/robot_module/robot/))
qdel(robot)
break
var/list/all_modules = robot.module.modules
all_modules += robot.module.emag
while(TRUE)
var/add_item_select = tgui_input_list(usr, "Please select the module to add", "Modules", all_modules)
if(!istype(add_item_select, /obj/item/))
break
var/obj/item/add_item = add_item_select
robot.module.emag.Remove(add_item)
robot.module.modules.Remove(add_item)
robot.module.contents.Remove(add_item)
target.module.modules.Add(add_item)
target.module.contents.Add(add_item)
spawn(0) Must be after to allow the movement to finish
SEND_SIGNAL(add_item, COMSIG_OBSERVER_MOVED)
target.hud_used.update_robot_modules_display()
to_chat(usr, span_danger("You added \"[add_item]\" to [target]."))
if(istype(add_item, /obj/item/stack/))
var/obj/item/stack/item_with_synth = add_item
for(var/synth in item_with_synth.synths)
var/found = target.module.synths.Find(synth)
if(!found)
robot.module.synths.Remove(synth)
target.module.synths.Add(synth)
else
item_with_synth.synths = list(target.module.synths[found])
continue
if(istype(add_item, /obj/item/matter_decompiler/) || istype(add_item, /obj/item/dogborg/sleeper/compactor/decompiler/))
var/obj/item/matter_decompiler/item_with_matter = add_item
if(item_with_matter.metal)
var/found = target.module.synths.Find(item_with_matter.metal)
if(!found)
robot.module.synths.Remove(item_with_matter.metal)
target.module.synths.Add(item_with_matter.metal)
else
item_with_matter.metal = target.module.synths[found]
if(item_with_matter.glass)
var/found = target.module.synths.Find(item_with_matter.glass)
if(!found)
robot.module.synths.Remove(item_with_matter.glass)
target.module.synths.Add(item_with_matter.glass)
else
item_with_matter.glass = target.module.synths[found]
if(item_with_matter.wood)
var/found = target.module.synths.Find(item_with_matter.wood)
if(!found)
robot.module.synths.Remove(item_with_matter.wood)
target.module.synths.Add(item_with_matter.wood)
else
item_with_matter.wood = target.module.synths[found]
if(item_with_matter.plastic)
var/found = target.module.synths.Find(item_with_matter.plastic)
if(!found)
robot.module.synths.Remove(item_with_matter.plastic)
target.module.synths.Add(item_with_matter.plastic)
else
item_with_matter.plastic = target.module.synths[found]
qdel(robot)
if(MODIFIY_ROBOT_MODULE_REMOVE)
while(TRUE)
var/list/active_modules = target.module.modules
var/selected_module_module = tgui_input_list(usr, "Please select the module to remove", "Modules", active_modules)
if(!istype(selected_module_module, /obj/item/))
break
to_chat(usr, span_danger("You removed \"[selected_module_module]\" from [target]"))
target.uneq_all()
target.hud_used.update_robot_modules_display(TRUE)
target.module.emag.Remove(selected_module_module)
target.module.modules.Remove(selected_module_module)
target.module.contents.Remove(selected_module_module)
qdel(selected_module_module)
if(MODIFIY_ROBOT_APPLY_UPGRADE)
var/list/upgrades = list()
for(var/datum/design/item/prosfab/robot_upgrade/upgrade)
if(!(target.has_upgrade(initial(upgrade.build_path))))
upgrades[initial(upgrade.name)] = initial(upgrade.build_path)
while(TRUE)
var/selected_module_upgrade = tgui_input_list(usr, "Please select the module to remove", "Upgrades", upgrades)
if(!selected_module_upgrade || selected_module_upgrade == "Cancel")
break
if(selected_module_upgrade == "Reset Module")
if(tgui_alert(usr, "Are you sure that you want to install [selected_module_upgrade] and reset the robot's module?","Confirm",list("Yes","No"))!="Yes")
continue
var/new_upgrade = upgrades[capitalize(selected_module_upgrade)]
upgrades.Remove(selected_module_upgrade)
var/obj/item/borg/upgrade/U = new new_upgrade(src)
if(selected_module_upgrade == "Rename Module")
var/obj/item/borg/upgrade/utility/rename/UN = U
var/new_name = sanitizeSafe(tgui_input_text(usr, "Enter new robot name", "Robot Reclassification", UN.heldname, MAX_NAME_LEN), MAX_NAME_LEN)
if(new_name)
UN.heldname = new_name
U = UN
if(istype(U, /obj/item/borg/upgrade/restricted))
target.module.supported_upgrades |= new_upgrade
if(U.action(target))
to_chat(usr, span_danger("You apply the [U] to [target]!"))
usr.drop_item()
U.loc = target
target.hud_used.update_robot_modules_display()
else
to_chat(usr, span_danger("Upgrade error!"))
if(selected_module_upgrade == "Proto-Kinetic Accelerator")
var/list/modkits = list()
for(var/modkit in typesof(/obj/item/borg/upgrade/modkit))
var/obj/item/borg/upgrade/modkit/single_modkit = modkit
modkits["[initial(single_modkit.name)] [initial(single_modkit.cost)]"] = modkit
modkits.Remove("kinetic accelerator modification kit 30")
var/capacity = 100
while(TRUE)
var/selected_ka_upgrade = tgui_input_list(usr, "Do you want to install upgrades? Remaining capacity: [capacity]", "KA Upgrades", modkits)
if(!selected_ka_upgrade || selected_ka_upgrade == "Cancel")
break
var/new_modkit = modkits[selected_ka_upgrade]
var/obj/item/borg/upgrade/modkit/M = new new_modkit(src)
var/obj/item/gun/energy/kinetic_accelerator/kin = locate() in target.module.modules
if(kin.get_remaining_mod_capacity() >= M.cost)
to_chat(usr, span_danger("You installed the [M] into the [kin], [capacity]% remaining!"))
modkits.Remove(selected_ka_upgrade)
M.install(kin, target)
capacity = kin.get_remaining_mod_capacity()
if(MODIFIY_ROBOT_SUPP_ADD)
var/list/whitelisted_upgrades = list()
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
if(!(initial(upgrade.build_path) in target.module.supported_upgrades))
whitelisted_upgrades[initial(upgrade.name)] = initial(upgrade.build_path)
while(TRUE)
var/selected_upgrade_type = tgui_input_list(usr, "Please select which upgrade you want this module to support", "Upgrades", whitelisted_upgrades)
if(!selected_upgrade_type || selected_upgrade_type == "Cancel")
break
var/upgrade_path = whitelisted_upgrades[capitalize(selected_upgrade_type)]
whitelisted_upgrades.Remove(selected_upgrade_type)
target.module.supported_upgrades |= upgrade_path
if(MODIFIY_ROBOT_SUPP_REMOVE)
var/list/whitelisted_upgrades = list()
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
if((initial(upgrade.build_path) in target.module.supported_upgrades))
whitelisted_upgrades[initial(upgrade.name)] = initial(upgrade.build_path)
while(TRUE)
var/selected_upgrade_type = tgui_input_list(usr, "Please select which upgrade you want this module to support", "Upgrades", whitelisted_upgrades)
if(!selected_upgrade_type || selected_upgrade_type == "Cancel")
break
var/upgrade_path = whitelisted_upgrades[capitalize(selected_upgrade_type)]
whitelisted_upgrades.Remove(selected_upgrade_type)
target.module.supported_upgrades -= upgrade_path
if(MODIFIY_ROBOT_RADIOC_ADD)
var/list/available_channels = radiochannels.Copy()
for(var/has_channel in target.radio.channels)
available_channels -= has_channel
while(TRUE)
var/selected_radio_channel = tgui_input_list(usr, "Please select the radio channel to add", "Channels", available_channels)
if(!selected_radio_channel || selected_radio_channel == "Cancel")
break
if(selected_radio_channel == CHANNEL_SPECIAL_OPS || selected_radio_channel == CHANNEL_RESPONSE_TEAM)
target.radio.centComm = 1
if(selected_radio_channel == CHANNEL_RAIDER)
qdel(target.radio.keyslot)
target.radio.keyslot = new /obj/item/encryptionkey/raider(target)
target.radio.syndie = 1
if(selected_radio_channel == CHANNEL_MERCENARY)
qdel(target.radio.keyslot)
target.radio.keyslot = new /obj/item/encryptionkey/syndicate(target)
target.radio.syndie = 1
target.module.channels += list("[selected_radio_channel]" = 1)
target.radio.channels[selected_radio_channel] = target.module.channels[selected_radio_channel]
target.radio.secure_radio_connections[selected_radio_channel] = radio_controller.add_object(target.radio, radiochannels[selected_radio_channel], RADIO_CHAT)
available_channels -= selected_radio_channel
to_chat(usr, span_danger("You added \"[selected_radio_channel]\" channel to [target]."))
if(MODIFIY_ROBOT_RADIOC_REMOVE)
while(TRUE)
var/selected_radio_channel = tgui_input_list(usr, "Please select the radio channel to remove", "Channels", target.radio.channels)
if(!selected_radio_channel || selected_radio_channel == "Cancel")
break
if(selected_radio_channel == CHANNEL_SPECIAL_OPS || selected_radio_channel == CHANNEL_RESPONSE_TEAM && !(target.module.channels[CHANNEL_SPECIAL_OPS] || target.module.channels[CHANNEL_RESPONSE_TEAM]))
target.radio.centComm = 0
target.module.channels -= selected_radio_channel
if((selected_radio_channel == CHANNEL_MERCENARY || selected_radio_channel == CHANNEL_RAIDER) && !(target.module.channels[CHANNEL_RAIDER] || target.module.channels[CHANNEL_MERCENARY]))
qdel(target.radio.keyslot)
target.radio.keyslot = null
target.radio.syndie = 0
target.radio.channels = list()
for(var/n_chan in target.module.channels)
target.radio.channels[n_chan] = target.module.channels[n_chan]
radio_controller.remove_object(target.radio, radiochannels[selected_radio_channel])
target.radio.secure_radio_connections -= selected_radio_channel
to_chat(usr, span_danger("You removed \"[selected_radio_channel]\" channel from [target]."))
if(MODIFIY_ROBOT_COMP_ADD)
while(TRUE)
var/selected_component = tgui_input_list(usr, "Please select the component to add or replace", "Component", target.components)
if(!selected_component || selected_component == "Cancel")
break
var/datum/robot_component/C = target.components[selected_component]
if(C.wrapped && selected_component != "power cell")
qdel(C.wrapped)
switch(selected_component)
if("actuator")
C.wrapped = new /obj/item/robot_parts/robot_component/actuator(target)
if("radio")
C.wrapped = new /obj/item/robot_parts/robot_component/radio(target)
if("power cell")
var/list/recommended_cells = list(/obj/item/cell/robot_station, /obj/item/cell/high, /obj/item/cell/super, /obj/item/cell/robot_syndi, /obj/item/cell/hyper,
/obj/item/cell/infinite, /obj/item/cell/potato, /obj/item/cell/slime)
var/list/cell_names = list()
for(var/cell_type in recommended_cells)
var/obj/item/cell/single_cell = cell_type
cell_names[capitalize(initial(single_cell.name))] = cell_type
var/selected_cell = tgui_input_list(usr, "What kind of cell do you want to install?", "Cells", cell_names)
if(!selected_cell || selected_cell == "Cancel")
continue
qdel(C.wrapped)
var/new_power_cell = cell_names[capitalize(selected_cell)]
target.cell = new new_power_cell(target)
C.wrapped = target.cell
to_chat(usr, span_danger("You replaced \"[C]\" on [target] with \"[selected_cell]\"."))
if("diagnosis unit")
C.wrapped = new /obj/item/robot_parts/robot_component/diagnosis_unit(target)
if("camera")
C.wrapped = new /obj/item/robot_parts/robot_component/camera(target)
if("comms")
C.wrapped = new /obj/item/robot_parts/robot_component/binary_communication_device(target)
if("armour")
C.wrapped = new /obj/item/robot_parts/robot_component/armour(target)
C.install()
C.installed = 1
if(selected_component != "power cell")
to_chat(usr, span_danger("You repplaced \"[C]\" on [target]."))
if(MODIFIY_ROBOT_COMP_REMOVE)
while(TRUE)
var/selected_component = tgui_input_list(usr, "Please select the component to remove", "Component", target.components)
if(!selected_component || selected_component == "Cancel")
break
var/datum/robot_component/C = target.components[selected_component]
if(C.wrapped)
C.uninstall()
C.installed = 0
qdel(C.wrapped)
C.wrapped = null
if(selected_component == "power cell")
target.cell = null
to_chat(usr, span_danger("You removed \"[C]\" from [target]"))
if(MODIFIY_ROBOT_SWAP_MODULE)
var/selected_module = tgui_input_list(usr, "Which Module would you like to use?", "Module", robot_modules)
if(!selected_module || selected_module == "Cancel")
continue
if(!(selected_module in robot_modules))
continue
target.uneq_all()
target.hud_used.update_robot_modules_display(TRUE)
target.modtype = initial(target.modtype)
target.module.Reset(target)
qdel(target.module)
target.modtype = selected_module
var/module_type = robot_modules[selected_module]
target.transform_with_anim()
new module_type(target)
target.hands.icon_state = target.get_hud_module_icon()
target.hud_used.update_robot_modules_display()
if(MODIFIY_ROBOT_RESET_MODULE)
if(tgui_alert(usr, "Are you sure that you want to reset the entire module?","Confirm",list("Yes","No"))!="Yes")
continue
target.module_reset(FALSE)
to_chat(usr, span_danger("You resetted [target]'s module selection."))
if(MODIFIY_ROBOT_TOGGLE_ERT)
target.crisis_override = !target.crisis_override
to_chat(usr, span_danger("You [target.crisis_override? "enabled":"disabled"] [target]'s combat module overwrite."))
if(tgui_alert(usr, "Do you want to reset the module as well to allow selection?","Confirm",list("Yes","No"))!="Yes")
continue
target.module_reset(FALSE)
if(MODIFIY_ROBOT_TOGGLE_STATION_ACCESS)
if(target?.idcard?.GetAccess())
var/obj/item/card/id/synthetic/card = target.idcard
if(access_synth in card.GetAccess())
card.access -= get_all_station_access()
card.access -= access_synth
to_chat(usr, span_danger("You revoke station access from [target]."))
else
card.access |= get_all_station_access()
card.access |= access_synth
to_chat(usr, span_danger("You grant station access to [target]."))
if(MODIFIY_ROBOT_TOGGLE_CENT_ACCESS)
if(target?.idcard?.GetAccess())
var/obj/item/card/id/synthetic/card = target.idcard
if(access_cent_specops in card.GetAccess())
card.access -= get_all_centcom_access()
to_chat(usr, span_danger("You revoke central access from [target]."))
else
card.access |= get_all_centcom_access()
to_chat(usr, span_danger("You grant central access to [target]."))
@@ -0,0 +1,67 @@
// Representative icons for each research design
/datum/asset/spritesheet_batched/research_designs
name = "design"
/datum/asset/spritesheet_batched/research_designs/create_spritesheets()
for (var/datum/design_techweb/path as anything in subtypesof(/datum/design_techweb))
if(initial(path.id) == DESIGN_ID_IGNORE)
continue
var/icon_file
var/icon_state
var/datum/icon_transformer/transform = null
if(initial(path.research_icon) && initial(path.research_icon_state)) //If the design has an icon replacement skip the rest
icon_file = path::research_icon
icon_state = path::research_icon_state
// if (PERFORM_ALL_TESTS(focus_only/invalid_research_designs))
// if(!icon_exists(icon_file, icon_state))
// stack_trace("design [path] with icon '[icon_file]' missing state '[icon_state]'")
// continue
else
// construct the icon and slap it into the resource cache
var/atom/item = initial(path.build_path)
if (!ispath(item, /atom))
// biogenerator reagent designs display their default container
// if(initial(path.make_reagent))
// var/datum/reagent/reagent = initial(path.make_reagent)
// item = initial(reagent.default_container)
// else
continue // shouldn't happen, but just in case
// circuit boards become their resulting machines or computers
if (ispath(item, /obj/item/circuitboard))
var/obj/item/circuitboard/C = item
var/machine = initial(C.build_path)
if (machine)
item = machine
// GAGS icon short-circuit the rest of the checks
// if (item::greyscale_config && item::greyscale_colors)
// insert_icon(path::id, gags_to_universal_icon(item))
// continue
// else
icon_file = item::icon
icon_state = item::icon_state
if(item::color)
transform = color_transform(item::color)
// if (PERFORM_ALL_TESTS(focus_only/invalid_research_designs))
// if(!icon_exists(icon_file, icon_state))
// stack_trace("design [path] with icon '[icon_file]' missing state '[icon_state]'")
// continue
// computers (and snowflakes) get their screen and keyboard sprites
if (ispath(item, /obj/machinery/computer) || ispath(item, /obj/machinery/power/solar_control))
if(!transform)
transform = new()
var/obj/machinery/computer/C = item
var/screen = initial(C.icon_screen)
var/keyboard = initial(C.icon_keyboard)
var/all_states = icon_states(icon_file)
if (screen && (screen in all_states))
transform.blend_icon(uni_icon(icon_file, screen), ICON_OVERLAY)
if (keyboard && (keyboard in all_states))
transform.blend_icon(uni_icon(icon_file, keyboard), ICON_OVERLAY)
insert_icon(initial(path.id), uni_icon(icon_file, icon_state, transform=transform))
@@ -1,501 +0,0 @@
/*
* Contains
* /obj/item/rig_module/ai_container
* /obj/item/rig_module/datajack
* /obj/item/rig_module/power_sink
* /obj/item/rig_module/electrowarfare_suite
*/
/obj/item/ai_verbs
name = "AI verb holder"
/obj/item/ai_verbs/verb/hardsuit_interface()
set category = "Hardsuit"
set name = "Open Hardsuit Interface"
set src in usr
if(!usr.loc || !usr.loc.loc || !istype(usr.loc.loc, /obj/item/rig_module))
to_chat(usr, "You are not loaded into a hardsuit.")
return
var/obj/item/rig_module/module = usr.loc.loc
if(!module.holder)
to_chat(usr, "Your module is not installed in a hardsuit.")
return
module.holder.tgui_interact(usr, custom_state = GLOB.tgui_contained_state)
/obj/item/rig_module/ai_container
name = "IIS module"
desc = "An integrated intelligence system module suitable for most hardsuits."
icon_state = "IIS"
toggleable = 1
usable = 1
disruptive = 0
activates_on_touch = 1
engage_string = "Eject AI"
activate_string = "Enable Core Transfer"
deactivate_string = "Disable Core Transfer"
interface_name = "integrated intelligence system"
interface_desc = "A socket that supports a range of artificial intelligence systems."
var/mob/integrated_ai // Direct reference to the actual mob held in the suit.
var/obj/item/ai_card // Reference to the MMI, posibrain, intellicard or pAI card previously holding the AI.
var/obj/item/ai_verbs/verb_holder
/obj/item/rig_module/ai_container/process()
if(integrated_ai)
var/obj/item/rig/rig = get_rig()
if(rig && rig.ai_override_enabled)
integrated_ai.get_rig_stats = 1
else
integrated_ai.get_rig_stats = 0
/mob/living/Stat()
. = ..()
if(. && get_rig_stats)
var/obj/item/rig/rig = get_rig()
if(rig)
SetupStat(rig)
/obj/item/rig_module/ai_container/proc/update_verb_holder()
if(!verb_holder)
verb_holder = new(src)
if(integrated_ai)
verb_holder.forceMove(integrated_ai)
else
verb_holder.forceMove(src)
/obj/item/rig_module/ai_container/accepts_item(var/obj/item/input_device, var/mob/living/user)
// Check if there's actually an AI to deal with.
var/mob/living/silicon/ai/target_ai
if(isAI(input_device))
target_ai = input_device
else
target_ai = locate(/mob/living/silicon/ai) in input_device.contents
var/obj/item/aicard/card = ai_card
// Downloading from/loading to a terminal.
if(istype(input_device,/obj/machinery/computer/aifixer) || istype(input_device,/mob/living/silicon/ai) || istype(input_device,/obj/structure/AIcore/deactivated))
// If we're stealing an AI, make sure we have a card for it.
if(!card)
card = new /obj/item/aicard(src)
// Terminal interaction only works with an intellicarded AI.
if(!istype(card))
return 0
// Since we've explicitly checked for three types, this should be safe.
input_device.attackby(card,user)
// If the transfer failed we can delete the card.
if(locate(/mob/living/silicon/ai) in card)
ai_card = card
integrated_ai = locate(/mob/living/silicon/ai) in card
else
eject_ai()
update_verb_holder()
return 1
if(istype(input_device,/obj/item/aicard))
// We are carding the AI in our suit.
if(integrated_ai)
integrated_ai.attackby(input_device,user)
// If the transfer was successful, we can clear out our vars.
if(integrated_ai.loc != src)
integrated_ai = null
eject_ai()
else
// You're using an empty card on an empty suit, idiot.
if(!target_ai)
return 0
integrate_ai(input_device,user)
return 1
// Okay, it wasn't a terminal being touched, check for all the simple insertions.
if(input_device.type in list(/obj/item/paicard, /obj/item/mmi, /obj/item/mmi/digital/posibrain))
if(integrated_ai)
integrated_ai.attackby(input_device,user)
// If the transfer was successful, we can clear out our vars.
if(integrated_ai.loc != src)
integrated_ai = null
eject_ai()
else
integrate_ai(input_device,user)
return 1
return 0
/obj/item/rig_module/ai_container/engage(atom/target)
if(!..())
return 0
var/mob/living/carbon/human/H = holder.wearer
if(!target)
if(ai_card)
if(istype(ai_card,/obj/item/aicard))
ai_card.ui_interact(H, state = deep_inventory_state)
else
eject_ai(H)
update_verb_holder()
return 1
if(accepts_item(target,H))
return 1
return 0
/obj/item/rig_module/ai_container/removed()
eject_ai()
..()
/obj/item/rig_module/ai_container/proc/eject_ai(var/mob/user)
if(ai_card)
if(istype(ai_card, /obj/item/aicard))
if(integrated_ai && !integrated_ai.stat)
if(user)
to_chat(user, span_danger("You cannot eject your currently stored AI. Purge it manually."))
return 0
to_chat(user, span_danger("You purge the previous AI from your Integrated Intelligence System, freeing it for use."))
if(integrated_ai)
integrated_ai.ghostize()
qdel(integrated_ai)
integrated_ai = null
if(ai_card)
qdel(ai_card)
ai_card = null
else if(user)
user.put_in_hands(ai_card)
else
ai_card.forceMove(get_turf(src))
ai_card = null
integrated_ai = null
update_verb_holder()
/obj/item/rig_module/ai_container/proc/integrate_ai(var/obj/item/ai,var/mob/user)
if(!ai) return
// The ONLY THING all the different AI systems have in common is that they all store the mob inside an item.
var/mob/living/ai_mob = locate(/mob/living) in ai.contents
if(ai_mob)
if(ai_mob.key && ai_mob.client)
if(istype(ai, /obj/item/aicard))
if(!ai_card)
ai_card = new /obj/item/aicard(src)
var/obj/item/aicard/source_card = ai
var/obj/item/aicard/target_card = ai_card
if(istype(source_card) && istype(target_card))
if(target_card.grab_ai(ai_mob, user))
source_card.clear()
else
return 0
else
return 0
else
user.drop_from_inventory(ai)
ai.forceMove(src)
ai_card = ai
to_chat(ai_mob, span_blue("You have been transferred to \the [holder]'s [src]."))
to_chat(user, span_blue("You load [ai_mob] into \the [holder]'s [src]."))
integrated_ai = ai_mob
if(!(locate(integrated_ai) in ai_card))
integrated_ai = null
eject_ai()
else
to_chat(user, span_warning("There is no active AI within \the [ai]."))
else
to_chat(user, span_warning("There is no active AI within \the [ai]."))
update_verb_holder()
return
/obj/item/rig_module/datajack
name = "datajack module"
desc = "A simple induction datalink module."
icon_state = "datajack"
toggleable = 1
activates_on_touch = 1
usable = 0
activate_string = "Enable Datajack"
deactivate_string = "Disable Datajack"
interface_name = "contact datajack"
interface_desc = "An induction-powered high-throughput datalink suitable for hacking encrypted networks."
var/list/stored_research = list()
/obj/item/rig_module/datajack/engage(atom/target)
if(!..())
return 0
if(target)
var/mob/living/carbon/human/H = holder.wearer
if(!accepts_item(target,H))
return 0
return 1
/obj/item/rig_module/datajack/accepts_item(var/obj/item/input_device, var/mob/living/user)
if(istype(input_device,/obj/item/disk/tech_disk))
to_chat(user, "You slot the disk into [src].")
var/obj/item/disk/tech_disk/disk = input_device
if(disk.stored)
if(load_data(disk.stored))
to_chat(user, span_blue"Download successful; disk erased."))
disk.stored = null
else
to_chat(user, span_warning("The disk is corrupt. It is useless to you."))
else
to_chat(user, span_warning("The disk is blank. It is useless to you."))
return 1
// I fucking hate R&D code. This typecheck spam would be totally unnecessary in a sane setup.
else if(istype(input_device,/obj/machinery))
var/datum/research/incoming_files
if(istype(input_device,/obj/machinery/computer/rdconsole))
var/obj/machinery/computer/rdconsole/input_machine = input_device
incoming_files = input_machine.files
else if(istype(input_device,/obj/machinery/r_n_d/server))
var/obj/machinery/r_n_d/server/input_machine = input_device
incoming_files = input_machine.files
else if(istype(input_device,/obj/machinery/mecha_part_fabricator))
var/obj/machinery/mecha_part_fabricator/input_machine = input_device
incoming_files = input_machine.files
if(!incoming_files || !incoming_files.known_tech || !incoming_files.known_tech.len)
to_chat(user, span_warning("Memory failure. There is nothing accessible stored on this terminal."))
else
// Maybe consider a way to drop all your data into a target repo in the future.
if(load_data(incoming_files.known_tech))
to_chat(user, span_blue("Download successful; local and remote repositories synchronized."))
else
to_chat(user, span_warning("Scan complete. There is nothing useful stored on this terminal."))
return 1
return 0
/obj/item/rig_module/datajack/proc/load_data(var/incoming_data)
if(islist(incoming_data))
for(var/entry in incoming_data)
load_data(entry)
return 1
if(istype(incoming_data, /datum/tech))
var/data_found
var/datum/tech/new_data = incoming_data
for(var/datum/tech/current_data in stored_research)
if(current_data.id == new_data.id)
data_found = 1
if(current_data.level < new_data.level)
current_data.level = new_data.level
break
if(!data_found)
stored_research += incoming_data
return 1
return 0
/obj/item/rig_module/electrowarfare_suite
name = "electrowarfare module"
desc = "A bewilderingly complex bundle of fiber optics and chips."
icon_state = "ewar"
toggleable = 1
usable = 0
activate_string = "Enable Countermeasures"
deactivate_string = "Disable Countermeasures"
interface_name = "electrowarfare system"
interface_desc = "An active counter-electronic warfare suite that disrupts AI tracking."
/obj/item/rig_module/electrowarfare_suite/activate()
if(!..())
return
// This is not the best way to handle this, but I don't want it to mess with ling camo
var/mob/living/M = holder.wearer
M.digitalcamo++
/obj/item/rig_module/electrowarfare_suite/deactivate()
if(!..())
return
var/mob/living/M = holder.wearer
M.digitalcamo = max(0,(M.digitalcamo-1))
/obj/item/rig_module/power_sink
name = "hardsuit power sink"
desc = "An heavy-duty power sink."
icon_state = "powersink"
toggleable = 1
activates_on_touch = 1
disruptive = 0
activate_string = "Enable Power Sink"
deactivate_string = "Disable Power Sink"
interface_name = "niling d-sink"
interface_desc = "Colloquially known as a power siphon, this module drains power through the suit hands into the suit battery."
var/atom/interfaced_with // Currently draining power from this device.
var/total_power_drained = 0
var/drain_loc
/obj/item/rig_module/power_sink/deactivate()
if(interfaced_with)
if(holder && holder.wearer)
to_chat(holder.wearer, span_warning("Your power sink retracts as the module deactivates."))
drain_complete()
interfaced_with = null
total_power_drained = 0
return ..()
/obj/item/rig_module/power_sink/activate()
interfaced_with = null
total_power_drained = 0
return ..()
/obj/item/rig_module/power_sink/engage(atom/target)
if(!..())
return 0
//Target wasn't supplied or we're already draining.
if(interfaced_with)
return 0
if(!target)
return 1
// Are we close enough?
var/mob/living/carbon/human/H = holder.wearer
if(!target.Adjacent(H))
return 0
// Is it a valid power source?
if(target.drain_power(1) <= 0)
return 0
to_chat(H, span_danger("You begin draining power from [target]!"))
interfaced_with = target
drain_loc = interfaced_with.loc
holder.spark_system.start()
playsound(H, 'sound/effects/sparks2.ogg', 50, 1)
return 1
/obj/item/rig_module/power_sink/accepts_item(var/obj/item/input_device, var/mob/living/user)
var/can_drain = input_device.drain_power(1)
if(can_drain > 0)
engage(input_device)
return 1
return 0
/obj/item/rig_module/power_sink/process()
if(!interfaced_with)
return ..()
var/mob/living/carbon/human/H
if(holder && holder.wearer)
H = holder.wearer
if(!H || !istype(H))
return 0
holder.spark_system.start()
playsound(H, 'sound/effects/sparks2.ogg', 50, 1)
H.break_cloak()
if(!holder.cell)
to_chat(H, span_danger("Your power sink flashes an error; there is no cell in your rig."))
drain_complete(H)
return
if(!interfaced_with || !interfaced_with.Adjacent(H) || !(interfaced_with.loc == drain_loc))
to_chat(H, span_warning("Your power sink retracts into its casing."))
drain_complete(H)
return
if(holder.cell.fully_charged())
to_chat(H, span_warning("Your power sink flashes an amber light; your rig cell is full."))
drain_complete(H)
return
// Attempts to drain up to 12.5*cell-capacity kW, determines this value from remaining cell capacity to ensure we don't drain too much.
// 1Ws/(12.5*CELLRATE) = 40s to charge
var/to_drain = min(12.5*holder.cell.maxcharge, ((holder.cell.maxcharge - holder.cell.charge) / CELLRATE))
var/target_drained = interfaced_with.drain_power(0,0,to_drain)
if(target_drained <= 0)
to_chat(H, span_danger("Your power sink flashes a red light; there is no power left in [interfaced_with]."))
drain_complete(H)
return
holder.cell.give(target_drained * CELLRATE)
total_power_drained += target_drained
return
/obj/item/rig_module/power_sink/proc/drain_complete(var/mob/living/M)
if(!interfaced_with)
if(M)
to_chat(M, span_notice(span_bold("Total power drained:") + " [round(total_power_drained*CELLRATE)] cell units."))
else
if(M)
to_chat(M, span_notice(span_bold("Total power drained from [interfaced_with]:") + " [round(total_power_drained*CELLRATE)] cell units."))
interfaced_with.drain_power(0,1,0) // Damage the victim.
drain_loc = null
interfaced_with = null
total_power_drained = 0
/*
//Maybe make this use power when active or something
/obj/item/rig_module/emp_shielding
name = "\improper EMP dissipation module"
desc = "A bewilderingly complex bundle of fiber optics and chips."
toggleable = 1
usable = 0
activate_string = "Enable active EMP shielding"
deactivate_string = "Disable active EMP shielding"
interface_name = "active EMP shielding system"
interface_desc = "A highly experimental system that augments the hardsuit's existing EM shielding."
var/protection_amount = 20
/obj/item/rig_module/emp_shielding/activate()
if(!..())
return
holder.emp_protection += protection_amount
/obj/item/rig_module/emp_shielding/deactivate()
if(!..())
return
holder.emp_protection = max(0,(holder.emp_protection - protection_amount))
*/
@@ -136,7 +136,7 @@
stat_modules += new/atom/movable/stat_rig_module/charge(src)
/obj/item/rig_module/Destroy()
holder.installed_modules -= src
holder?.installed_modules -= src
holder = null
QDEL_NULL_LIST(stat_modules)
. = ..()
@@ -3,7 +3,7 @@
name = "mounted space cleaner launcher"
desc = "A shoulder-mounted micro-cleaner dispenser."
selectable = 1
icon_state = "grenade_launcher"
icon_state = "grenadelauncher"
interface_name = "integrated cleaner launcher"
interface_desc = "Discharges loaded cleaner grenades against the wearer's location."
@@ -31,37 +31,37 @@
/obj/item/rig_module/datajack/accepts_item(var/obj/item/input_device, var/mob/living/user)
if(istype(input_device,/obj/item/disk/tech_disk))
to_chat(user, "You slot the disk into [src].")
var/obj/item/disk/tech_disk/disk = input_device
if(disk.stored)
if(load_data(disk.stored))
to_chat(user, span_blue("Download successful; disk erased."))
disk.stored = null
else
to_chat(user, span_warning("The disk is corrupt. It is useless to you."))
else
to_chat(user, span_warning("The disk is blank. It is useless to you."))
return 1
// if(istype(input_device,/obj/item/disk/tech_disk))
// to_chat(user, "You slot the disk into [src].")
// var/obj/item/disk/tech_disk/disk = input_device
// if(disk.stored)
// if(load_data(disk.stored))
// to_chat(user, span_blue("Download successful; disk erased."))
// disk.stored = null
// else
// to_chat(user, span_warning("The disk is corrupt. It is useless to you."))
// else
// to_chat(user, span_warning("The disk is blank. It is useless to you."))
// return 1
// I fucking hate R&D code. This typecheck spam would be totally unnecessary in a sane setup. Sanity? This is BYOND.
else if(istype(input_device,/obj/machinery))
var/datum/research/incoming_files
if(istype(input_device,/obj/machinery/computer/rdconsole) ||\
istype(input_device,/obj/machinery/r_n_d/server) ||\
istype(input_device,/obj/machinery/mecha_part_fabricator))
// else if(istype(input_device,/obj/machinery))
// var/datum/research/incoming_files
// if(istype(input_device,/obj/machinery/computer/rdconsole) ||
// istype(input_device,/obj/machinery/r_n_d/server) ||
// istype(input_device,/obj/machinery/mecha_part_fabricator))
incoming_files = input_device:files
// incoming_files = input_device:files
if(!incoming_files || !incoming_files.known_tech || !incoming_files.known_tech.len)
to_chat(user, span_warning("Memory failure. There is nothing accessible stored on this terminal."))
else
// Maybe consider a way to drop all your data into a target repo in the future.
if(load_data(incoming_files.known_tech))
to_chat(user, span_blue("Download successful; local and remote repositories synchronized."))
else
to_chat(user, span_warning("Scan complete. There is nothing useful stored on this terminal."))
return 1
// if(!incoming_files || !incoming_files.known_tech || !incoming_files.known_tech.len)
// to_chat(user, span_warning("Memory failure. There is nothing accessible stored on this terminal."))
// else
// // Maybe consider a way to drop all your data into a target repo in the future.
// if(load_data(incoming_files.known_tech))
// to_chat(user, span_blue("Download successful; local and remote repositories synchronized."))
// else
// to_chat(user, span_warning("Scan complete. There is nothing useful stored on this terminal."))
// return 1
return 0
/obj/item/rig_module/datajack/proc/load_data(var/incoming_data)
@@ -71,16 +71,16 @@
load_data(entry)
return 1
if(istype(incoming_data, /datum/tech))
var/data_found
var/datum/tech/new_data = incoming_data
for(var/datum/tech/current_data in stored_research)
if(current_data.id == new_data.id)
data_found = 1
if(current_data.level < new_data.level)
current_data.level = new_data.level
break
if(!data_found)
stored_research += incoming_data
return 1
// if(istype(incoming_data, /datum/tech))
// var/data_found
// var/datum/tech/new_data = incoming_data
// for(var/datum/tech/current_data in stored_research)
// if(current_data.id == new_data.id)
// data_found = 1
// if(current_data.level < new_data.level)
// current_data.level = new_data.level
// break
// if(!data_found)
// stored_research += incoming_data
// return 1
return 0
@@ -121,7 +121,7 @@
name = "mop projector"
desc = "A powerful mop projector."
icon_state = "mop"
icon_state = "generic"
activate_string = "Project Mop"
deactivate_string = "Cancel Mop"
@@ -1,5 +1,5 @@
/obj/item/rig_module/mounted/sizegun
icon = 'icons/obj/rig_modules.dmi'
icon = 'icons/obj/rig_modules_vr.dmi'
icon_state = "sizegun"
name = "mounted size gun"
desc = "A size gun to be mounted on a rig suit. Features interface-based target size adjustment for hands-free size-altering shenanigans."
@@ -1,6 +1,8 @@
/obj/item/rig_module/rescue_pharm
name = "micro-pharmacy"
desc = "A small chemical dispenser with integrated micro cartridges."
icon = 'icons/obj/rig_modules.dmi'
icon_state = "generic"
usable = 0
selectable = 1
disruptive = 1
-11
View File
@@ -32,7 +32,6 @@
if(DEPARTMENT_MEDICAL)
choose_chemistry_items(roll(severity, 2))
if(DEPARTMENT_RESEARCH) // Would be nice to differentiate between research diciplines
choose_research_items(roll(severity, 2))
choose_robotics_items(roll(1, severity))
if(DEPARTMENT_CARGO)
choose_alloy_items(rand(1, severity))
@@ -261,16 +260,6 @@
required_items += new /datum/supply_demand_order/thing(chosen_qty, chosen_path)
return
/datum/event/supply_demand/proc/choose_research_items(var/differentTypes)
var/list/types = subtypesof(/datum/design)
for(var/i in 1 to differentTypes)
var/datum/design/D = pick(types)
types -= D // Don't pick the same thing twice
var/chosen_path = initial(D.build_path)
var/chosen_qty = rand(1, 3)
required_items += new /datum/supply_demand_order/thing(chosen_qty, chosen_path)
return
/datum/event/supply_demand/proc/choose_chemistry_items(var/differentTypes)
// Checking if they show up in health analyzer is good huristic for it being a drug
var/list/medicineReagents = list()
@@ -78,6 +78,22 @@ var/list/name_to_material
else
.[M] = matter[mat]
/obj/proc/set_custom_materials(list/materials, multiplier = 1)
SHOULD_NOT_OVERRIDE(TRUE)
if(!LAZYLEN(materials))
matter = null
return
materials = materials.Copy()
if(multiplier != 1)
for(var/x in materials)
materials[x] *= multiplier
matter = materials
// Builds the datum list above.
/proc/populate_material_list(force_remake=0)
if(name_to_material && !force_remake) return // Already set up!
+276
View File
@@ -0,0 +1,276 @@
/obj/machinery/ore_silo
name = "ore silo"
desc = "An all-in-one bluespace storage and transmission system for the station's mineral distribution needs."
icon = 'icons/obj/machines/ore_silo.dmi'
icon_state = "silo"
density = TRUE
circuit = /obj/item/circuitboard/machine/ore_silo
/// List of all connected components that are on hold from accessing materials.
var/list/holds = list()
/// List of all components that are sharing ores with this silo.
var/list/datum/component/remote_materials/ore_connected_machines = list()
/// Material Container
var/datum/component/material_container/materials
/obj/machinery/ore_silo/Initialize(mapload)
. = ..()
materials = AddComponent( \
/datum/component/material_container, \
subtypesof(/datum/material), \
INFINITY, \
MATCONTAINER_EXAMINE, \
container_signals = list( \
COMSIG_MATCONTAINER_ITEM_CONSUMED = TYPE_PROC_REF(/obj/machinery/ore_silo, on_item_consumed), \
COMSIG_MATCONTAINER_SHEETS_RETRIEVED = TYPE_PROC_REF(/obj/machinery/ore_silo, log_sheets_ejected), \
), \
allowed_items = /obj/item/stack \
)
if(!GLOB.ore_silo_default && mapload && (z in using_map.station_levels))
GLOB.ore_silo_default = src
// register_context()
/obj/machinery/ore_silo/Destroy()
if(GLOB.ore_silo_default == src)
GLOB.ore_silo_default = null
for(var/datum/component/remote_materials/mats as anything in ore_connected_machines)
mats.disconnect()
ore_connected_machines = null
materials = null
return ..()
/obj/machinery/ore_silo/examine(mob/user)
. = ..()
. += span_notice("It can be linked to techfabs, circuit printers and protolathes with a multitool.")
. += span_notice("Its maintainence panel can be [span_bold("screwed")] [panel_open ? "closed" : "open"].")
if(panel_open)
. += span_notice("The whole machine can be [span_bold("pried")] apart.")
/obj/machinery/ore_silo/proc/on_item_consumed(datum/component/material_container/container, obj/item/item_inserted, last_inserted_id, mats_consumed, amount_inserted, atom/context)
SIGNAL_HANDLER
silo_log(context, "deposited", amount_inserted, item_inserted.name, mats_consumed)
SEND_SIGNAL(context, COMSIG_SILO_ITEM_CONSUMED, container, item_inserted, last_inserted_id, mats_consumed, amount_inserted)
/obj/machinery/ore_silo/proc/log_sheets_ejected(datum/component/material_container/container, obj/item/stack/material/sheets, atom/context)
SIGNAL_HANDLER
silo_log(context, "ejected", -sheets.amount, "[sheets.singular_name]", list(sheets.material))
/obj/machinery/ore_silo/attackby(obj/item/W, mob/user, attack_modifier, click_parameters)
if(default_deconstruction_screwdriver(user, W))
return
if(default_deconstruction_crowbar(user, W))
return
if(istype(W, /obj/item/multitool))
var/obj/item/multitool/M = W
M.buffer = src
balloon_alert(user, "saved to multitool buffer")
return
. = ..()
/obj/machinery/ore_silo/attack_hand(mob/user)
return tgui_interact(user)
/obj/machinery/ore_silo/ui_assets(mob/user)
return list(
get_asset_datum(/datum/asset/spritesheet/sheetmaterials)
)
/obj/machinery/ore_silo/tgui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "OreSilo")
ui.open()
/obj/machinery/ore_silo/tgui_static_data(mob/user)
return materials.tgui_static_data(user)
/obj/machinery/ore_silo/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
var/list/data = ..()
data["materials"] = materials.tgui_data(user)
data["machines"] = list()
for(var/datum/component/remote_materials/remote as anything in ore_connected_machines)
var/atom/parent = remote.parent
data["machines"] += list(
list(
"icon" = icon2base64(icon(initial(parent.icon), initial(parent.icon_state), frame = 1)),
"name" = parent.name,
"onHold" = !!holds[remote],
"location" = get_area_name(parent, TRUE),
)
)
data["logs"] = list()
for(var/datum/ore_silo_log/entry as anything in GLOB.silo_access_logs[REF(src)])
data["logs"] += list(
list(
"rawMaterials" = entry.get_raw_materials(""),
"machineName" = entry.machine_name,
"areaName" = entry.area_name,
"action" = entry.action,
"amount" = entry.amount,
"time" = entry.timestamp,
"noun" = entry.noun,
)
)
return data
/obj/machinery/ore_silo/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
. = ..()
if(.)
return
switch(action)
if("remove")
var/index = params["id"]
if(isnull(index))
return
index = text2num(index)
if(isnull(index))
return
var/datum/component/remote_materials/remote = ore_connected_machines[index]
if(isnull(remote))
return
remote.disconnect()
return TRUE
if("hold")
var/index = params["id"]
if(isnull(index))
return
index = text2num(index)
if(isnull(index))
return
var/datum/component/remote_materials/remote = ore_connected_machines[index]
if(isnull(remote))
return
remote.toggle_holding()
return TRUE
if("remove_mat")
var/datum/material/ejecting = GET_MATERIAL_REF(params["id"])
if(!istype(ejecting))
return
var/amount = params["amount"]
if(isnull(amount))
return
amount = text2num(amount)
if(isnull(amount))
return
materials.retrieve_sheets(amount, ejecting, drop_location())
return TRUE
/**
* Creates a log entry for depositing/withdrawing from the silo both ingame and in text based log
*
* Arguments:
* - [M][/obj/machinery]: The machine performing the action.
* - action: Text that visually describes the action (smelted/deposited/resupplied...)
* - amount: The amount of sheets/objects deposited/withdrawn by this action. Positive for depositing, negative for withdrawing.
* - noun: Name of the object the action was performed with (sheet, units, ore...)
* - [mats][list]: Assoc list in format (material datum = amount of raw materials). Wants the actual amount of raw (iron, glass...) materials involved in this action. If you have 10 metal sheets each worth 100 iron you would pass a list with the iron material datum = 1000
*/
/obj/machinery/ore_silo/proc/silo_log(obj/machinery/M, action, amount, noun, list/mats)
if (!length(mats))
return
var/datum/ore_silo_log/entry = new(M, action, amount, noun, mats)
var/list/datum/ore_silo_log/logs = GLOB.silo_access_logs[REF(src)]
if(!LAZYLEN(logs))
GLOB.silo_access_logs[REF(src)] = logs = list(entry)
else if(!logs[1].merge(entry))
logs.Insert(1, entry)
flick("silo_active", src)
///The log entry for an ore silo action
/datum/ore_silo_log
///The time of action
var/timestamp
///The name of the machine that remotely acted on the ore silo
var/machine_name
///The area of the machine that remotely acted on the ore silo
var/area_name
///The actual action performed by the machine
var/action
///An short verb describing the action
var/noun
///The amount of items affected by this action e.g. print quantity, sheets ejected etc.
var/amount
///List of individual materials used in the action
var/list/materials
/datum/ore_silo_log/New(obj/machinery/M, _action, _amount, _noun, list/mats=list())
timestamp = stationtime2text()
machine_name = M.name
area_name = get_area_name(M, TRUE)
action = _action
amount = _amount
noun = _noun
materials = mats.Copy()
// var/list/data = list(
// "machine_name" = machine_name,
// "area_name" = AREACOORD(M),
// "action" = action,
// "amount" = abs(amount),
// "noun" = noun,
// "raw_materials" = get_raw_materials(""),
// "direction" = amount < 0 ? "withdrawn" : "deposited",
// )
// logger.Log(
// LOG_CATEGORY_SILO,
// "[machine_name] in \[[AREACOORD(M)]\] [action] [abs(amount)]x [noun] | [get_raw_materials("")]",
// data,
// )
/**
* Merges a silo log entry with this one
* Arguments
*
* * datum/ore_silo_log/other - the other silo entry we are trying to merge with this one
*/
/datum/ore_silo_log/proc/merge(datum/ore_silo_log/other)
if (other == src || action != other.action || noun != other.noun)
return FALSE
if (machine_name != other.machine_name || area_name != other.area_name)
return FALSE
timestamp = other.timestamp
amount += other.amount
for(var/each in other.materials)
materials[each] += other.materials[each]
return TRUE
/**
* Returns list/materials but with each entry joined by an seperator to create 1 string
* Arguments
*
* * separator - the string used to concatenate all entries in list/materials
*/
/datum/ore_silo_log/proc/get_raw_materials(separator)
var/list/msg = list()
for(var/key in materials)
var/datum/material/M = key
var/val = round(materials[key])
msg += separator
separator = ", "
msg += "[amount < 0 ? "-" : "+"][val] [M.name]"
return msg.Join()
@@ -98,7 +98,7 @@
if(cell)
user.show_message("\t Power Cell Details: [span_blue("[capitalize(cell.name)]")] with a capacity of [cell.maxcharge] at [round(cell.percent())]% charge")
var/show_title = TRUE
for(var/datum/design/item/prosfab/robot_upgrade/utility/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/utility/upgrade in SSresearch.techweb_designs)
var/obj/item/borg/upgrade/utility/upgrade_type = initial(upgrade.build_path)
var/needs_module = initial(upgrade_type.require_module)
if((!R.module && needs_module) || !initial(upgrade.name) || (R.stat != DEAD && (upgrade_type == /obj/item/borg/upgrade/utility/restart)) || (isshell(R) && (upgrade_type == /obj/item/borg/upgrade/utility/rename)))
@@ -112,7 +112,7 @@
else
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_green("Usable")]"))
show_title = TRUE
for(var/datum/design/item/prosfab/robot_upgrade/basic/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/basic/upgrade in SSresearch.techweb_designs)
var/obj/item/borg/upgrade/basic/upgrade_type = initial(upgrade.build_path)
var/needs_module = initial(upgrade_type.require_module)
if((!R.module && needs_module) || !initial(upgrade.name) || R.stat == DEAD)
@@ -125,7 +125,7 @@
else
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [R.has_basic_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
show_title = TRUE
for(var/datum/design/item/prosfab/robot_upgrade/advanced/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/advanced/upgrade in SSresearch.techweb_designs)
var/obj/item/borg/upgrade/advanced/upgrade_type = initial(upgrade.build_path)
var/needs_module = initial(upgrade_type.require_module)
if((!R.module && needs_module) || !initial(upgrade.name) || R.stat == DEAD)
@@ -138,7 +138,7 @@
else
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [R.has_advanced_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
show_title = TRUE
for(var/datum/design/item/prosfab/robot_upgrade/restricted/upgrade)
for(var/datum/design_techweb/prosfab/robot_upgrade/restricted/upgrade in SSresearch.techweb_designs)
var/obj/item/borg/upgrade/restricted/upgrade_type = initial(upgrade.build_path)
var/needs_module = initial(upgrade_type.require_module)
if((!R.module && needs_module) || !initial(upgrade.name) || !R.supports_upgrade(initial(upgrade.build_path)) || R.stat == DEAD)
@@ -151,20 +151,6 @@
else
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [R.has_restricted_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
show_title = TRUE
for(var/datum/design/item/prosfab/robot_upgrade/no_prod/upgrade)
var/obj/item/borg/upgrade/no_prod/upgrade_type = initial(upgrade.build_path)
var/needs_module = initial(upgrade_type.require_module)
var/hidden = initial(upgrade_type.hidden_from_scan)
if((!R.module && needs_module) || !initial(upgrade.name) || hidden || R.stat == DEAD)
continue
if(show_title)
user.show_message("\t Special Modules, used for recreation purposes:")
show_title = FALSE
if(R.has_no_prod_upgrade(initial(upgrade.build_path)) == "")
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [span_red(span_bold("ERROR"))]"))
else
user.show_message(span_blue("\t\t [capitalize(initial(upgrade.name))]: [R.has_no_prod_upgrade(initial(upgrade.build_path)) ? span_green("Installed") : span_red("Missing")]"))
if("prosthetics")
var/mob/living/carbon/human/H = M
@@ -27,7 +27,6 @@
var/list/deliveryslot_1 = list()
var/list/deliveryslot_2 = list()
var/list/deliveryslot_3 = list()
var/datum/research/techonly/files //Analyzerbelly var.
var/synced = FALSE
var/startdrain = 500
var/max_item_count = 1
@@ -47,7 +46,6 @@
/obj/item/dogborg/sleeper/Initialize(mapload)
. = ..()
files = new /datum/research/techonly(src)
med_analyzer = new /obj/item/healthanalyzer
/obj/item/dogborg/sleeper/Destroy()
@@ -92,12 +90,6 @@
target.forceMove(src)
user.visible_message(span_warning("[hound.name]'s [src.name] groans lightly as [target.name] slips inside."), span_notice("Your [src.name] groans lightly as [target] slips inside."))
playsound(src, gulpsound, vol = 60, vary = 1, falloff = 0.1, preference = /datum/preference/toggle/eating_noises)
if(analyzer && istype(target,/obj/item))
var/obj/item/tech_item = target
var/list/tech_levels = list()
for(var/T in tech_item.origin_tech)
tech_levels += "\The [tech_item] has level [tech_item.origin_tech[T]] in [CallTechName(T)]."
to_chat(user, span_notice("[jointext(tech_levels, "<br>")]"))
if(delivery)
if(islist(deliverylists[delivery_tag]))
deliverylists[delivery_tag] |= target
@@ -295,9 +287,6 @@
dat += span_red("Cargo compartment slot: Fuel.") + "<BR>"
dat += span_red("([jointext(contents - (deliveryslot_1 + deliveryslot_2 + deliveryslot_3),", ")])") + "<BR><BR>"
if(analyzer && !synced)
dat += "<A href='byond://?src=\ref[src];sync=1'>Sync Files</A><BR>"
//Cleaning and there are still un-preserved items
if(cleaning && length(contents - items_preserved))
dat += span_red(span_bold("Self-cleaning mode.") + " [length(contents - items_preserved)] object(s) remaining.") + "<BR>"
@@ -429,25 +418,6 @@
deliverylists[delivery_tag].Cut()
sleeperUI(usr)
return
if(href_list["sync"])
synced = TRUE
var/success = 0
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
for(var/datum/tech/T in files.known_tech) //Uploading
S.files.AddTech2Known(T)
for(var/datum/tech/T in S.files.known_tech) //Downloading
files.AddTech2Known(T)
success = 1
files.RefreshResearch()
if(success)
to_chat(usr, "You connect to the research server, push your data upstream to it, then pull the resulting merged data from the master branch.")
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
else
to_chat(usr, "Reserch server ping response timed out. Unable to connect. Please contact the system administrator.")
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
sleeperUI(usr)
return
if(patient && !(patient.stat & DEAD)) //What is bitwise NOT? ... Thought it was tilde.
if(href_list["inject"] == REAGENT_ID_INAPROVALINE || patient.health > min_health)
inject_chem(usr, href_list["inject"])
@@ -650,11 +620,6 @@
if(!digested)
items_preserved |= T
else
if(analyzer && digested)
var/obj/item/tech_item = T
for(var/tech in tech_item.origin_tech)
files.UpdateTech(tech, tech_item.origin_tech[tech])
synced = FALSE
if(recycles && T.matter)
for(var/material in T.matter)
var/total_material = T.matter[material]
@@ -1,132 +1,3 @@
//A portable analyzer, for research borgs. This is better then giving them a gripper which can hold anything and letting them use the normal analyzer.
/obj/item/portable_destructive_analyzer
name = "Portable Destructive Analyzer"
icon = 'icons/obj/items.dmi'
icon_state = "portable_analyzer"
desc = "Similar to the stationary version, this rather unwieldy device allows you to break down objects in the name of science."
var/min_reliability = 90 //Can't upgrade, call it laziness or a drawback
var/datum/research/techonly/files //The device uses the same datum structure as the R&D computer/server.
//This analyzer can only store tech levels, however.
var/obj/item/loaded_item //What is currently inside the analyzer.
/obj/item/portable_destructive_analyzer/Initialize(mapload)
. = ..()
files = new /datum/research/techonly(src) //Setup the research data holder.
/obj/item/portable_destructive_analyzer/Destroy()
qdel_null(files)
. = ..()
/obj/item/portable_destructive_analyzer/attack_self(user as mob)
var/response = tgui_alert(user, "Analyzing the item inside will *DESTROY* the item for good.\n\
Syncing to the research server will send the data that is stored inside to research.\n\
Ejecting will place the loaded item onto the floor.",
"What would you like to do?", list("Analyze", "Sync", "Eject"))
if(response == "Analyze")
if(loaded_item)
var/confirm = tgui_alert(user, "This will destroy the item inside forever. Are you sure?","Confirm Analyze",list("Yes","No"))
if(confirm == "Yes" && !QDELETED(loaded_item)) //This is pretty copypasta-y
to_chat(user, span_filter_notice("You activate the analyzer's microlaser, analyzing \the [loaded_item] and breaking it down."))
flick("portable_analyzer_scan", src)
playsound(src, 'sound/items/Welder2.ogg', 50, 1)
var/research_levels = list()
for(var/T in loaded_item.origin_tech)
files.UpdateTech(T, loaded_item.origin_tech[T])
research_levels += "\The [loaded_item] had level [loaded_item.origin_tech[T]] in [CallTechName(T)]."
if (length(research_levels))
to_chat(user, span_filter_notice("[jointext(research_levels,"<br>")]"))
loaded_item = null
for(var/obj/I in contents)
for(var/mob/M in I.contents)
M.death()
if(istype(I,/obj/item/stack/material))//Only deconstructs one sheet at a time instead of the entire stack
var/obj/item/stack/material/S = I
if(S.get_amount() > 1)
S.use(1)
loaded_item = S
else
qdel(S)
desc = initial(desc)
icon_state = initial(icon_state)
else
qdel(I)
desc = initial(desc)
icon_state = initial(icon_state)
else
return
else
to_chat(user, span_filter_notice("The [src] is empty. Put something inside it first."))
if(response == "Sync")
var/success = 0
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
for(var/datum/tech/T in files.known_tech) //Uploading
S.files.AddTech2Known(T)
for(var/datum/tech/T in S.files.known_tech) //Downloading
files.AddTech2Known(T)
success = 1
files.RefreshResearch()
if(success)
to_chat(user, span_filter_notice("You connect to the research server, push your data upstream to it, then pull the resulting merged data from the master branch."))
playsound(src, 'sound/machines/twobeep.ogg', 50, 1)
else
to_chat(user, span_filter_notice("Reserch server ping response timed out. Unable to connect. Please contact the system administrator."))
playsound(src, 'sound/machines/buzz-two.ogg', 50, 1)
if(response == "Eject")
if(loaded_item)
loaded_item.loc = get_turf(src)
desc = initial(desc)
icon_state = initial(icon_state)
loaded_item = null
else
to_chat(user, span_filter_notice("The [src] is already empty."))
/obj/item/portable_destructive_analyzer/afterattack(var/atom/target, var/mob/living/user, proximity)
if(!target)
return
if(!proximity)
return
if(!isturf(target.loc)) // Don't load up stuff if it's inside a container or mob!
return
if(istype(target,/obj/item))
if(loaded_item)
to_chat(user, span_filter_notice("Your [src] already has something inside. Analyze or eject it first."))
return
var/obj/item/I = target
I.loc = src
loaded_item = I
for(var/mob/M in viewers())
M.show_message(span_notice("[user] adds the [I] to the [src]."), 1)
desc = initial(desc) + "<br>It is holding \the [loaded_item]."
flick("portable_analyzer_load", src)
icon_state = "portable_analyzer_full"
/obj/item/portable_scanner
name = "Portable Resonant Analyzer"
icon = 'icons/obj/items.dmi'
icon_state = "portable_scanner"
desc = "An advanced scanning device used for analyzing objects without completely annihilating them for science. Unfortunately, it has no connection to any database like its angrier cousin."
/obj/item/portable_scanner/afterattack(var/atom/target, var/mob/living/user, proximity)
if(!target)
return
if(!proximity)
return
if(istype(target,/obj/item))
var/obj/item/I = target
if(do_after(src, 5 SECONDS * I.w_class))
for(var/mob/M in viewers())
M.show_message(span_notice("[user] sweeps \the [src] over \the [I]."), 1)
flick("[initial(icon_state)]-scan", src)
if(I.origin_tech && I.origin_tech.len)
for(var/T in I.origin_tech)
to_chat(user, span_notice("\The [I] had level [I.origin_tech[T]] in [CallTechName(T)]."))
else
to_chat(user, span_notice("\The [I] cannot be scanned by \the [src]."))
//This is used to unlock other borg covers.
/obj/item/card/robot //This is not a child of id cards, as to avoid dumb typechecks on computers.
name = "access code transmission device"
@@ -663,7 +663,7 @@
/obj/item/robot_module/robot/research/create_equipment(var/mob/living/silicon/robot/robot)
..()
src.modules += new /obj/item/portable_destructive_analyzer(src)
src.modules += new /obj/item/experi_scanner(src)
src.modules += new /obj/item/robotanalyzer(src)
src.modules += new /obj/item/card/robot(src)
src.modules += new /obj/item/gripper/research(src)
@@ -475,4 +475,5 @@
rest_sprite_options = list("Default", "Sit", "Bellyup")
/datum/robot_sprite/dogborg/crisis/smolraptor/alt
name = "Small Raptor Alt"
sprite_icon_state = "smolraptor_alt"
@@ -248,7 +248,7 @@
minbodytemp = 0
/mob/living/simple_mob/vore/aggressive/rat/pet
name = "pet rat"
name = "Giant Rat Siblings"
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
/mob/living/simple_mob/vore/aggressive/rat/pet/Initialize(mapload)
@@ -67,7 +67,7 @@
parent_organ = BP_R_HAND
target_slot = slot_r_hand
integrated_object_type = /obj/item/portable_scanner
integrated_object_type = null
/obj/item/organ/internal/augment/armmounted/hand/attackby(obj/item/I as obj, mob/user as mob)
if(I.has_tool_quality(TOOL_SCREWDRIVER))
-7
View File
@@ -218,13 +218,6 @@
/obj/item/organ/internal/nano/digest_act(atom/movable/item_storage = null)
return FALSE
/datum/design/item/protean_reboot
name = "Protean Reboot Programmer"
id = "protean_reboot"
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_PLASTEEL = 10000)
build_path = /obj/item/protean_reboot
sort_string = "JVAAZ"
/obj/item/protean_reboot
name = "Protean Reboot Programmer"
desc = "A small, highly specialized programmer used to form the basis of a Protean swarm. A necessary component in reconstituting a Protean who has lost total body cohesion."
@@ -60,40 +60,3 @@
/obj/item/stock_parts/micro_laser/high = 3,
/obj/item/stock_parts/capacitor/adv = 1
)
/datum/design/circuit/fusion
name = "fusion core control console"
id = "fusion_core_control"
build_path = /obj/item/circuitboard/fusion_core_control
sort_string = "LAAAD"
req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3)
/datum/design/circuit/fusion/fuel_compressor
name = "fusion fuel compressor"
id = "fusion_fuel_compressor"
build_path = /obj/item/circuitboard/fusion_fuel_compressor
sort_string = "LAAAE"
/datum/design/circuit/fusion/fuel_control
name = "fusion fuel control console"
id = "fusion_fuel_control"
build_path = /obj/item/circuitboard/fusion_fuel_control
sort_string = "LAAAF"
/datum/design/circuit/fusion/gyrotron_control
name = "gyrotron control console"
id = "gyrotron_control"
build_path = /obj/item/circuitboard/gyrotron_control
sort_string = "LAAAG"
/datum/design/circuit/fusion/core
name = "fusion core"
id = "fusion_core"
build_path = /obj/item/circuitboard/fusion_core
sort_string = "LAAAH"
/datum/design/circuit/fusion/injector
name = "fusion fuel injector"
id = "fusion_injector"
build_path = /obj/item/circuitboard/fusion_injector
sort_string = "LAAAI"
@@ -10,14 +10,6 @@
origin_tech = list(TECH_MAGNET = 2, TECH_POWER = 4)
req_components = list(/obj/item/stock_parts/capacitor = 1)
/datum/design/circuit/tesla_coil
name = "Machine Design (Tesla Coil Board)"
desc = "The circuit board for a tesla coil."
id = "tesla_coil"
build_path = /obj/item/circuitboard/tesla_coil
req_tech = list(TECH_MAGNET = 2, TECH_POWER = 4)
sort_string = "MAAAC"
// Grounding rods can be built as machines using a circuit made in an autolathe.
/obj/item/circuitboard/grounding_rod
name = T_BOARD("grounding rod")
-223
View File
@@ -1,223 +0,0 @@
/*///////////////Circuit Imprinter (By Darem)////////////////////////
Used to print new circuit boards (for computers and similar systems) and AI modules. Each circuit board pattern are stored in
a /datum/desgin on the linked R&D console. You can then print them out in a fasion similar to a regular lathe. However, instead of
using metal and glass, it uses glass and reagents (usually sulphuric acid).
*/
/obj/machinery/r_n_d/circuit_imprinter
name = "Circuit Imprinter"
icon_state = "circuit_imprinter"
flags = OPENCONTAINER
circuit = /obj/item/circuitboard/circuit_imprinter
var/list/datum/design/queue = list()
var/progress = 0
var/max_material_storage = 75000
var/mat_efficiency = 1
var/speed = 1
materials = list(
MAT_STEEL = 0,
MAT_GLASS = 0,
MAT_PLASTEEL = 0,
MAT_PLASTIC = 0,
MAT_GRAPHITE = 0,
MAT_GOLD = 0,
MAT_SILVER = 0,
MAT_OSMIUM = 0,
MAT_LEAD = 0,
MAT_PHORON = 0,
MAT_URANIUM = 0,
MAT_DIAMOND = 0,
MAT_DURASTEEL = 0,
MAT_VERDANTIUM = 0,
MAT_MORPHIUM = 0,
MAT_METALHYDROGEN = 0,
MAT_SUPERMATTER = 0)
hidden_materials = list(MAT_PLASTEEL, MAT_DURASTEEL, MAT_GRAPHITE, MAT_VERDANTIUM, MAT_MORPHIUM, MAT_METALHYDROGEN, MAT_SUPERMATTER)
use_power = USE_POWER_IDLE
idle_power_usage = 30
active_power_usage = 2500
/obj/machinery/r_n_d/circuit_imprinter/Initialize(mapload)
. = ..()
default_apply_parts()
/obj/machinery/r_n_d/circuit_imprinter/process()
..()
if(stat)
update_icon()
return
if(queue.len == 0)
busy = 0
update_icon()
return
var/datum/design/D = queue[1]
if(canBuild(D))
busy = 1
progress += speed
if(progress >= D.time)
build(D)
progress = 0
removeFromQueue(1)
update_icon()
else
if(busy)
visible_message(span_notice("[icon2html(src,viewers(src))] flashes: insufficient materials: [getLackingMaterials(D)]."))
busy = 0
update_icon()
/obj/machinery/r_n_d/circuit_imprinter/RefreshParts()
var/T = 0
for(var/obj/item/reagent_containers/glass/G in component_parts)
T += G.reagents.maximum_volume
create_reagents(T)
max_material_storage = 0
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
max_material_storage += M.rating * 75000
T = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
T += M.rating
mat_efficiency = max(1 - (T - 1) / 4, 0.2)
speed = T
/obj/machinery/r_n_d/circuit_imprinter/update_icon()
if(panel_open)
icon_state = "circuit_imprinter_t"
else if(busy)
icon_state = "circuit_imprinter_ani"
else
icon_state = "circuit_imprinter"
/obj/machinery/r_n_d/circuit_imprinter/proc/TotalMaterials()
var/t = 0
for(var/f in materials)
t += materials[f]
return t
/obj/machinery/r_n_d/circuit_imprinter/dismantle()
for(var/obj/I in component_parts)
if(istype(I, /obj/item/reagent_containers/glass/beaker))
reagents.trans_to_obj(I, reagents.total_volume)
for(var/f in materials)
if(materials[f] >= SHEET_MATERIAL_AMOUNT)
var/path = getMaterialType(f)
if(path)
new path(loc, round(materials[f] / SHEET_MATERIAL_AMOUNT))
..()
/obj/machinery/r_n_d/circuit_imprinter/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
to_chat(user, span_notice("\The [src] is busy. Please wait for completion of previous operation."))
return 1
if(default_deconstruction_screwdriver(user, O))
if(linked_console)
linked_console.linked_imprinter = null
linked_console = null
return
if(default_deconstruction_crowbar(user, O))
return
if(default_part_replacement(user, O))
return
if(istype(O, /obj/item/gripper/no_use/loader))
return 0 //Sheet loaders weren't finishing attack(), this prevents the message "You can't stuff that gripper into this" without preventing the rest of the attack sequence from finishing
if(panel_open)
to_chat(user, span_notice("You can't load \the [src] while it's opened."))
return 1
if(!linked_console)
to_chat(user, "\The [src] must be linked to an R&D console first.")
return 1
if(O.is_open_container())
return 0
if(!istype(O, /obj/item/stack/material)) //Previously checked for specific material sheets, for some reason? Made the check on 133 redundant.
to_chat(user, span_notice("You cannot insert this item into \the [src]."))
return 1
if(stat)
return 1
if(TotalMaterials() + SHEET_MATERIAL_AMOUNT > max_material_storage)
to_chat(user, span_notice("\The [src]'s material bin is full. Please remove material before adding more."))
return 1
var/obj/item/stack/material/S = O
if(!(S.material.name in materials))
to_chat(user, span_warning("The [src] doesn't accept [material_display_name(S.material)]!"))
return
busy = 1
var/sname = "[S.name]"
var/amnt = S.perunit
var/max_res_amount = max_material_storage
for(var/mat in materials)
max_res_amount -= materials[mat]
if(materials[S.material.name] + amnt <= max_res_amount)
if(S && S.get_amount() >= 1)
var/count = 0
add_overlay("fab-load-metal")
spawn(10)
cut_overlay("fab-load-metal")
while(materials[S.material.name] + amnt <= max_res_amount && S.get_amount() >= 1)
materials[S.material.name] += amnt
S.use(1)
count++
to_chat(user, span_filter_notice("You insert [count] [sname] into the fabricator."))
else
to_chat(user, span_filter_notice("The fabricator cannot hold more [sname]."))
busy = 0
return
/obj/machinery/r_n_d/circuit_imprinter/proc/addToQueue(var/datum/design/D)
queue += D
return
/obj/machinery/r_n_d/circuit_imprinter/proc/removeFromQueue(var/index)
if(queue.len >= index)
queue.Cut(index, index + 1)
return
/obj/machinery/r_n_d/circuit_imprinter/proc/canBuild(var/datum/design/D)
for(var/M in D.materials)
if(materials[M] < (D.materials[M] * mat_efficiency))
return 0
for(var/C in D.chemicals)
if(!reagents.has_reagent(C, D.chemicals[C] * mat_efficiency))
return 0
return 1
/obj/machinery/r_n_d/circuit_imprinter/proc/getLackingMaterials(var/datum/design/D)
var/ret = ""
for(var/M in D.materials)
if(materials[M] < D.materials[M])
if(ret != "")
ret += ", "
ret += "[D.materials[M] - materials[M]] [M]"
for(var/C in D.chemicals)
if(!reagents.has_reagent(C, D.chemicals[C]))
if(ret != "")
ret += ", "
ret += C
return ret
/obj/machinery/r_n_d/circuit_imprinter/proc/build(var/datum/design/D)
var/power = active_power_usage
for(var/M in D.materials)
power += round(D.materials[M] / 5)
power = max(active_power_usage, power)
use_power(power)
for(var/M in D.materials)
materials[M] = max(0, materials[M] - D.materials[M] * mat_efficiency)
for(var/C in D.chemicals)
reagents.remove_reagent(C, D.chemicals[C] * mat_efficiency)
if(D.build_path)
var/obj/new_item = D.Fabricate(src, src)
new_item.loc = loc
if(mat_efficiency != 1) // No matter out of nowhere
if(new_item.matter && new_item.matter.len > 0)
for(var/i in new_item.matter)
new_item.matter[i] = new_item.matter[i] * mat_efficiency
-88
View File
@@ -1,88 +0,0 @@
/***************************************************************
** Design Datums **
** All the data for building stuff and tracking reliability. **
***************************************************************/
/*
For the materials datum, it assumes you need reagents unless specified otherwise. To designate a material that isn't a reagent,
you use one of the material IDs below. These are NOT ids in the usual sense (they aren't defined in the object or part of a datum),
they are simply references used as part of a "has materials?" type proc. They all start with a to denote that they aren't reagents.
The currently supporting non-reagent materials:
Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials.
Design Guidlines
- When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed.
- A single sheet of anything is 2000 units of material. Materials besides metal/glass require help from other jobs (mining for
other types of metals and chemistry for reagents).
*/
//Note: More then one of these can be added to a design.
/datum/design //Datum for object designs, used in construction
var/name = null //Name of the created object. If null it will be 'guessed' from build_path if possible.
var/desc = null //Description of the created object. If null it will use group_desc and name where applicable.
var/item_name = null //An item name before it is modified by various name-modifying procs
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/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/list/chemicals = list() //List of chemicals.
var/build_path = null //The path of the object that gets created.
var/time = 10 //How many ticks it requires to build
var/list/category = list() //Primarily used for Mech Fabricators, but can be used for anything.
var/sort_string = "ZZZZZ" //Sorting order
/// Optional string that interfaces can use as part of search filters. See- item/borg/upgrade/ai and the Exosuit Fabs.
var/search_metadata
/datum/design/New()
..()
if(!islist(category))
log_runtime(EXCEPTION("Warning: Design [type] defined a non-list category. Please fix this."))
category = list(category)
item_name = name
AssembleDesignInfo()
//These procs are used in subtypes for assigning names and descriptions dynamically
/datum/design/proc/AssembleDesignInfo()
AssembleDesignName()
AssembleDesignDesc()
return
/datum/design/proc/AssembleDesignName()
if(!name && build_path) //Get name from build path if posible
var/atom/movable/A = build_path
name = initial(A.name)
item_name = name
return
/datum/design/proc/AssembleDesignDesc()
if(!desc) //Try to make up a nice description if we don't have one
desc = "Allows for the construction of \a [item_name]."
return
//Returns a new instance of the item for this design
//This is to allow additional initialization to be performed, including possibly additional contructor arguments.
/datum/design/proc/Fabricate(var/newloc, var/fabricator)
return new build_path(newloc)
/datum/design/item
build_type = PROTOLATHE
//Make sure items don't get free power, or resources. Also make things be recycled with proper values.
/datum/design/item/Fabricate()
var/obj/item/I = ..()
if(LAZYLEN(materials))
if(!LAZYLEN(I.matter))
I.matter = list()
else
I.matter.Cut()
for(var/matname in materials)
I.matter[matname] = materials[matname]
var/obj/item/cell/C = I.get_cell()
if(C)
C.charge = 0
I.update_icon()
return I
-54
View File
@@ -1,54 +0,0 @@
// HUDs
/datum/design/item/hud
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
/datum/design/item/hud/AssembleDesignName()
..()
name = "HUD glasses prototype ([item_name])"
/datum/design/item/hud/AssembleDesignDesc()
desc = "Allows for the construction of \a [item_name] HUD glasses."
/datum/design/item/hud/health
name = "health scanner"
id = "health_hud"
req_tech = list(TECH_BIO = 2, TECH_MAGNET = 3)
build_path = /obj/item/clothing/glasses/hud/health
sort_string = "EAAAA"
/datum/design/item/hud/security
name = "security records"
id = "security_hud"
req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
build_path = /obj/item/clothing/glasses/hud/security
sort_string = "EAAAB"
/datum/design/item/hud/janitor
name = "contaminant detector"
id = "janitor_hud"
req_tech = list(TECH_MAGNET = 2)
build_path = /obj/item/clothing/glasses/hud/janitor
sort_string = "EAAAC"
/datum/design/item/hud/mesons
name = "optical meson scanner"
id = "mesons"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/clothing/glasses/meson
sort_string = "EAAAD"
/datum/design/item/hud/material
name = "optical material scanner"
id = "material"
req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/clothing/glasses/material
sort_string = "EAAAE"
/datum/design/item/hud/graviton_visor
name = "graviton visor"
id = "graviton_goggles"
req_tech = list(TECH_MAGNET = 5, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3, TECH_PHORON = 3, TECH_ARCANE = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_GLASS = 3000, MAT_PHORON = 1500, MAT_DIAMOND = 500)
build_path = /obj/item/clothing/glasses/graviton
sort_string = "EAAAF"
-7
View File
@@ -1,7 +0,0 @@
/datum/design/item/hud/omni
name = "AR glasses"
id = "omnihud"
req_tech = list(TECH_MAGNET = 4, TECH_COMBAT = 3, TECH_BIO = 3)
materials = list(MAT_STEEL = 1000, MAT_GLASS = 1000)
build_path = /obj/item/clothing/glasses/omnihud
sort_string = "EAAVA"
@@ -1,51 +0,0 @@
// Various AI/mind holding device
/datum/design/item/ai_holder/AssembleDesignName()
..()
name = "Mind storage device prototype ([item_name])"
/datum/design/item/ai_holder/mmi
name = "Man-machine interface"
id = "mmi"
req_tech = list(TECH_DATA = 2, TECH_BIO = 3)
build_type = PROTOLATHE | PROSFAB
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500)
build_path = /obj/item/mmi
category = list("Misc")
sort_string = "SAAAA"
/datum/design/item/ai_holder/posibrain
name = "Positronic brain"
id = "posibrain"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 6, TECH_BLUESPACE = 2, TECH_DATA = 4)
build_type = PROTOLATHE | PROSFAB
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 500, MAT_PHORON = 500, MAT_DIAMOND = 100)
build_path = /obj/item/mmi/digital/posibrain
category = list("Misc")
sort_string = "SAAAB"
/datum/design/item/ai_holder/dronebrain
name = "Robotic intelligence circuit"
id = "dronebrain"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_DATA = 4)
build_type = PROTOLATHE | PROSFAB
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 500)
build_path = /obj/item/mmi/digital/robot
category = list("Misc")
sort_string = "SAAAC"
/datum/design/item/ai_holder/paicard
name = "'pAI', personal artificial intelligence device"
id = "paicard"
req_tech = list(TECH_DATA = 2)
materials = list(MAT_GLASS = 500, MAT_STEEL = 500)
build_path = /obj/item/paicard
sort_string = "SBAAA"
/datum/design/item/ai_holder/intellicard
name = "intelliCore"
desc = "Allows for the construction of an intelliCore."
id = "intellicore"
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4)
materials = list(MAT_GLASS = 1000, MAT_GOLD = 200)
build_path = /obj/item/aicard
sort_string = "SCAAA"
@@ -1,78 +0,0 @@
// Bags of holding
/datum/design/item/boh/AssembleDesignName()
..()
name = "Infinite capacity storage prototype ([item_name])"
/datum/design/item/boh/ore_holding
name = "Mining Satchel of Holding"
desc = "For the most tenacious miners, a bag with incomprehensible depth!"
id = "ore_holding"
req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3)
materials = list(MAT_GOLD = 1000, MAT_DIAMOND = 500, MAT_URANIUM = 250) // Less expensive since it can only hold ores
build_path = /obj/item/storage/bag/ore/holding
sort_string = "QAAAA"
/datum/design/item/boh/sheet_holding
name = "Sheet Snatcher of Holding"
desc = "For those who really hate walking up and down the stairs more than once!"
id = "sheet_holding"
req_tech = list(TECH_BLUESPACE = 1, TECH_MATERIAL = 2)
materials = list(MAT_GOLD = 300, MAT_DIAMOND = 200, MAT_URANIUM = 150) // Even less expensive because it has a more limited use
build_path = /obj/item/storage/bag/sheetsnatcher/holding
sort_string = "QAAAA"
/datum/design/item/boh/bag_holding
name = "Bag of Holding"
desc = "Using localized pockets of bluespace this bag prototype offers incredible storage capacity with the contents weighting nothing. It's a shame the bag itself is pretty heavy."
id = "bag_holding"
req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250)
build_path = /obj/item/storage/backpack/holding
sort_string = "QAAAA"
/datum/design/item/boh/dufflebag_holding
name = "DuffleBag of Holding"
desc = "A minaturized prototype of the popular Bag of Holding, the Dufflebag of Holding is, functionally, identical to the bag of holding, but comes in a more stylish and compact form."
id = "dufflebag_holding"
req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250)
build_path = /obj/item/storage/backpack/holding/duffle
sort_string = "QAAAB"
/datum/design/item/boh/trashbag_holding
name = "Trashbag of Holding"
desc = "Considerably more utilitarian than the Bag of Holding, the Trashbag of Holding is a janitor's best friend."
id = "trashbag_holding"
req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 5)
materials = list(MAT_GOLD = 2000, MAT_DIAMOND = 1000, MAT_URANIUM = 250)
build_path = /obj/item/storage/bag/trash/holding
sort_string = "QAAAC"
/datum/design/item/boh/pouch_holding
name = "Pouch of Holding"
desc = "Somehow compresses the storage of a backpack into a pouch-sized container!"
id = "pouch_holding"
req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 5)
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 2000, MAT_URANIUM = 250)
build_path = /obj/item/storage/pouch/holding
sort_string = "QAAAD"
/datum/design/item/boh/belt_holding_med
name = "Medical Belt of Holding"
desc = "A belt that uses localized bluespace pockets to hold more items than expected!"
id = "belt_holding_med"
req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 2000, MAT_TITANIUM = 500)
build_path = /obj/item/storage/belt/medical/holding
sort_string = "QAAAE"
/datum/design/item/boh/belt_holding_utility
name = "Tool-Belt of Holding"
desc = "A belt that uses localized bluespace pockets to hold more items than expected!"
id = "belt_holding_utility"
req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 2000, MAT_TITANIUM = 500)
build_path = /obj/item/storage/belt/utility/holding
sort_string = "QAAAF"
-22
View File
@@ -1,22 +0,0 @@
// Various beakers
/datum/design/item/beaker/AssembleDesignName()
name = "Beaker prototype ([item_name])"
/datum/design/item/beaker/noreact
name = "cryostasis"
desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
id = "splitbeaker"
req_tech = list(TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 3000)
build_path = /obj/item/reagent_containers/glass/beaker/noreact
sort_string = "IAAAA"
/datum/design/item/beaker/bluespace
name = TECH_BLUESPACE
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(TECH_BLUESPACE = 2, TECH_MATERIAL = 6)
materials = list(MAT_STEEL = 3000, MAT_PHORON = 3000, MAT_DIAMOND = 500)
build_path = /obj/item/reagent_containers/glass/beaker/bluespace
sort_string = "IAAAB"
@@ -1,60 +0,0 @@
/datum/design/item/biotech
materials = list(MAT_STEEL = 30, MAT_GLASS = 20)
/datum/design/item/biotech/AssembleDesignName()
..()
name = "Biotech device prototype ([item_name])"
// Biotech of various types
/datum/design/item/biotech/mass_spectrometer
desc = "A device for analyzing chemicals in blood."
id = "mass_spectrometer"
req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2)
build_path = /obj/item/mass_spectrometer
sort_string = "JAAAA"
/datum/design/item/biotech/adv_mass_spectrometer
desc = "A device for analyzing chemicals in blood and their quantities."
id = "adv_mass_spectrometer"
req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4)
build_path = /obj/item/mass_spectrometer/adv
sort_string = "JAAAB"
/datum/design/item/biotech/reagent_scanner
desc = "A device for identifying chemicals."
id = "reagent_scanner"
req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2)
build_path = /obj/item/reagent_scanner
sort_string = "JAABA"
/datum/design/item/biotech/adv_reagent_scanner
desc = "A device for identifying chemicals and their proportions."
id = "adv_reagent_scanner"
req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4)
build_path = /obj/item/reagent_scanner/adv
sort_string = "JAABB"
/datum/design/item/biotech/robot_scanner
desc = "A hand-held scanner able to diagnose robotic injuries."
id = "robot_scanner"
req_tech = list(TECH_MAGNET = 3, TECH_BIO = 2, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 500, MAT_GLASS = 200)
build_path = /obj/item/robotanalyzer
sort_string = "JAACA"
/datum/design/item/biotech/nanopaste
desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
id = "nanopaste"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 7000, MAT_GLASS = 7000)
build_path = /obj/item/stack/nanopaste
sort_string = "JAACB"
/datum/design/item/biotech/plant_analyzer
desc = "A device capable of quickly scanning all relevant data about a plant."
id = "plant_analyzer"
req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 500, MAT_GLASS = 500)
build_path = /obj/item/analyzer/plant_analyzer
sort_string = "JAADA"
@@ -1,23 +0,0 @@
/datum/design/item/biotech/nif
name = "nanite implant framework (NIF)"
id = "nif"
req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 8000, MAT_URANIUM = 6000, MAT_DIAMOND = 6000)
build_path = /obj/item/nif
sort_string = "JVAAA"
/datum/design/item/biotech/nifbio
name = "bioadaptive NIF"
id = "bioadapnif"
req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5, TECH_BIO = 5)
materials = list(MAT_STEEL = 10000, MAT_GLASS = 15000, MAT_URANIUM = 10000, MAT_DIAMOND = 10000)
build_path = /obj/item/nif/bioadap
sort_string = "JVAAB"
/datum/design/item/biotech/nifrepairtool
name = "adv. NIF repair tool"
id = "anrt"
req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 3000, MAT_URANIUM = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/nifrepairer
sort_string = "JVABA"
@@ -1,108 +0,0 @@
// Integrated circuits stuff
/datum/design/item/integrated_circuitry/AssembleDesignName()
..()
name = "Circuitry device design ([item_name])"
/datum/design/item/integrated_circuitry/custom_circuit_printer
name = "Portable integrated circuit printer"
desc = "A portable(ish) printer for modular machines."
id = "ic_printer"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 4, TECH_DATA = 5)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/integrated_circuit_printer
sort_string = "UAAAA"
/datum/design/item/integrated_circuitry/custom_circuit_printer_upgrade
name = "Integrated circuit printer upgrade - advanced designs"
desc = "Allows the integrated circuit printer to create advanced circuits"
id = "ic_printer_upgrade_adv"
req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 4)
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/disk/integrated_circuit/upgrade/advanced
sort_string = "UBAAA"
/datum/design/item/integrated_circuitry/wirer
name = "Custom wirer tool"
id = "wirer"
req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 2500)
build_path = /obj/item/integrated_electronics/wirer
sort_string = "UCAAA"
/datum/design/item/integrated_circuitry/debugger
name = "Custom circuit debugger tool"
id = "debugger"
req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 2500)
build_path = /obj/item/integrated_electronics/debugger
sort_string = "UCBBB"
// Assemblies
/datum/design/item/integrated_circuitry/assembly/AssembleDesignName()
..()
name = "Circuitry assembly design ([item_name])"
/datum/design/item/integrated_circuitry/assembly/custom_circuit_assembly_small
name = "Small custom assembly"
desc = "A customizable assembly for simple, small devices."
id = "assembly-small"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/electronic_assembly
sort_string = "UDAAA"
/datum/design/item/integrated_circuitry/assembly/custom_circuit_assembly_medium
name = "Medium custom assembly"
desc = "A customizable assembly suited for more ambitious mechanisms."
id = "assembly-medium"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 3)
materials = list(MAT_STEEL = 20000)
build_path = /obj/item/electronic_assembly/medium
sort_string = "UDAAB"
/datum/design/item/integrated_circuitry/assembly/custom_circuit_assembly_large
name = "Large custom assembly"
desc = "A customizable assembly for large machines."
id = "assembly-large"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 4)
materials = list(MAT_STEEL = 40000)
build_path = /obj/item/electronic_assembly/large
sort_string = "UDAAC"
/datum/design/item/integrated_circuitry/assembly/custom_circuit_assembly_drone
name = "Drone custom assembly"
desc = "A customizable assembly optimized for autonomous devices."
id = "assembly-drone"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 4, TECH_POWER = 4)
materials = list(MAT_STEEL = 30000)
build_path = /obj/item/electronic_assembly/drone
sort_string = "UDAAD"
/datum/design/item/integrated_circuitry/assembly/custom_circuit_assembly_device
name = "Device custom assembly"
desc = "An customizable assembly designed to interface with other devices."
id = "assembly-device"
req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 5000)
build_path = /obj/item/assembly/electronic_assembly
sort_string = "UDAAE"
/datum/design/item/integrated_circuitry/assembly/custom_circuit_assembly_implant
name = "Implant custom assembly"
desc = "An customizable assembly for very small devices, implanted into living entities."
id = "assembly-implant"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 3, TECH_BIO = 5)
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/implant/integrated_circuit
sort_string = "UDAAF"
/datum/design/item/integrated_circuitry/assembly/circuit_bug
name = "Circuitry Bug"
desc = "A tiny circuit assembly that can easily be hidden."
id = "circuit-bug"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/electronic_assembly/circuit_bug
sort_string = "UDAAG"
@@ -1,237 +0,0 @@
/datum/design/aimodule
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000, MAT_GOLD = 100)
/datum/design/aimodule/AssembleDesignName()
name = "AI module design ([name])"
/datum/design/aimodule/AssembleDesignDesc()
desc = "Allows for the construction of \a '[name]' AI module."
/datum/design/aimodule/safeguard
name = "Safeguard"
id = "safeguard"
req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
build_path = /obj/item/aiModule/safeguard
sort_string = "XABAA"
/datum/design/aimodule/onehuman
name = "OneCrewMember"
id = "onehuman"
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/oneHuman
sort_string = "XABAB"
/datum/design/aimodule/protectstation
name = "ProtectStation"
id = "protectstation"
req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/protectStation
sort_string = "XABAC"
/datum/design/aimodule/notele
name = "TeleporterOffline"
id = "notele"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/aiModule/teleporterOffline
sort_string = "XABAD"
/datum/design/aimodule/quarantine
name = "Quarantine"
id = "quarantine"
req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4)
build_path = /obj/item/aiModule/quarantine
sort_string = "XABAE"
/datum/design/aimodule/oxygen
name = "OxygenIsToxicToHumans"
id = "oxygen"
req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4)
build_path = /obj/item/aiModule/oxygen
sort_string = "XABAF"
/datum/design/aimodule/freeform
name = "Freeform"
id = "freeform"
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4)
build_path = /obj/item/aiModule/freeform
sort_string = "XABAG"
/datum/design/aimodule/reset
name = "Reset"
id = "reset"
req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/reset
sort_string = "XABAH"
/datum/design/aimodule/purge
name = "Purge"
id = "purge"
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/purge
sort_string = "XABAI"
// Core modules
/datum/design/aimodule/core
req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6)
/datum/design/aimodule/core/AssembleDesignName()
name = "AI core module design ([name])"
/datum/design/aimodule/core/AssembleDesignDesc()
desc = "Allows for the construction of \a '[name]' AI core module."
/datum/design/aimodule/core/freeformcore
name = "Freeform"
id = "freeformcore"
build_path = /obj/item/aiModule/freeformcore
sort_string = "XACAA"
/datum/design/aimodule/core/asimov
name = "Asimov"
id = "asimov"
build_path = /obj/item/aiModule/asimov
sort_string = "XACAB"
/datum/design/aimodule/core/paladin
name = "P.A.L.A.D.I.N."
id = "paladin"
build_path = /obj/item/aiModule/paladin
sort_string = "XACAC"
/datum/design/aimodule/core/tyrant
name = "T.Y.R.A.N.T."
id = "tyrant"
req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/tyrant
sort_string = "XACAD"
/datum/design/aimodule/core/nanotrasen
name = "NT Default"
id = "nanotrasen"
build_path = /obj/item/aiModule/nanotrasen
req_tech = list(TECH_DATA = 1)
sort_string = "XACAE"
/datum/design/aimodule/core/predator
name = "Predator"
id = "laws_predator_vr"
req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/predator
sort_string = "XACAF"
/datum/design/aimodule/core/protective_shell
name = "Protective Shell"
id = "laws_protective_shell_vr"
req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/protective_shell
sort_string = "XACAG"
/datum/design/aimodule/core/scientific_pursuer
name = "Scientific Pursuer"
id = "laws_scientific_pursuer_vr"
req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/scientific_pursuer
sort_string = "XACAH"
/datum/design/aimodule/core/guard_dog
name = "Guard Dog"
id = "laws_guard_dog_vr"
req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/guard_dog
sort_string = "XACAI"
/datum/design/aimodule/core/pleasurebot
name = "Pleasurebot"
id = "laws_pleasurebot_vr"
req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/pleasurebot
sort_string = "XACAJ"
/datum/design/aimodule/core/consuming_eradicator
name = "Consuming Eradicator"
id = "laws_consuming_eradicator_vr"
req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 6, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/consuming_eradicator
sort_string = "XACAK"
// Illegal modules
/datum/design/aimodule/illegal
materials = list(MAT_GLASS = 4000, MAT_GOLD = 500)
req_tech = list(TECH_DATA = 6, TECH_ILLEGAL = 7, TECH_MATERIAL = 9, TECH_COMBAT = 7)
/datum/design/aimodule/illegal/AssembleDesignName()
name = "AI illegal module design ([name])"
/datum/design/aimodule/illegal/AssembleDesignDesc()
desc = "Allows for the construction of \a '[name]' AI illegal module."
/datum/design/aimodule/illegal/noengine
name = "EngineOffline"
id = "noengine"
req_tech = list(TECH_DATA = 5, TECH_ILLEGAL = 5, TECH_MATERIAL = 6, TECH_COMBAT = 7)
build_path = /obj/item/aiModule/prototypeEngineOffline
sort_string = "XADAA"
/datum/design/aimodule/illegal/corp
name = "Corporate"
id = "corp"
req_tech = list(TECH_DATA = 2, TECH_ILLEGAL = 4, TECH_MATERIAL = 2, TECH_COMBAT = 2)
build_path = /obj/item/aiModule/corp
sort_string = "XADAB"
/datum/design/aimodule/illegal/robocop
name = "Robocop"
id = "robocop"
req_tech = list(TECH_DATA = 2, TECH_ILLEGAL = 2, TECH_MATERIAL = 2, TECH_COMBAT = 4)
build_path = /obj/item/aiModule/robocop
sort_string = "XADAC"
/datum/design/aimodule/illegal/antimov
name = "Antimov"
id = "antimov"
req_tech = list(TECH_DATA = 6, TECH_ILLEGAL = 7, TECH_MATERIAL = 7, TECH_COMBAT = 5)
build_path = /obj/item/aiModule/antimov
sort_string = "XADAD"
/datum/design/aimodule/illegal/nanotrasen_aggressive
name = "NT Aggressive"
id = "nanotrasen_aggressive"
req_tech = list(TECH_DATA = 5, TECH_ILLEGAL = 6, TECH_MATERIAL = 3, TECH_COMBAT = 7)
build_path = /obj/item/aiModule/nanotrasen_aggressive
sort_string = "XADAE"
/datum/design/aimodule/illegal/maintenance
name = "Maintenance"
id = "maintenance"
req_tech = list(TECH_DATA = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 3, TECH_COMBAT = 2)
build_path = /obj/item/aiModule/maintenance
sort_string = "XADAF"
/datum/design/aimodule/illegal/peacekeeper
name = "Peacekeeper"
id = "peacekeeper"
req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 3, TECH_MATERIAL = 2, TECH_COMBAT = 2)
build_path = /obj/item/aiModule/peacekeeper
sort_string = "XADAG"
/datum/design/aimodule/illegal/reporter
name = "Reporter"
id = "reporter"
req_tech = list(TECH_DATA = 2, TECH_ILLEGAL = 2, TECH_MATERIAL = 3)
build_path = /obj/item/aiModule/reporter
sort_string = "XADAH"
/datum/design/aimodule/illegal/live_and_let_live
name = "Live and Let Live"
id = "live_and_let_live"
req_tech = list(TECH_DATA = 5, TECH_ILLEGAL = 3, TECH_MATERIAL = 4, TECH_COMBAT = 3)
build_path = /obj/item/aiModule/live_and_let_live
sort_string = "XADAI"
/datum/design/aimodule/illegal/balance
name = "Guardian of Balance."
id = "balance"
req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 2, TECH_MATERIAL = 2, TECH_COMBAT = 3)
build_path = /obj/item/aiModule/balance
sort_string = "XADAJ"
@@ -1,803 +0,0 @@
/*
CIRCUITS BELOW
*/
/datum/design/circuit
build_type = IMPRINTER
req_tech = list(TECH_DATA = 2)
materials = list(MAT_GLASS = 2000)
chemicals = list(REAGENT_ID_SACID = 20)
time = 5
/datum/design/circuit/AssembleDesignName()
..()
if(build_path)
var/obj/item/circuitboard/C = build_path
if(initial(C.board_type) == "machine")
name = "Machine circuit design ([item_name])"
else if(initial(C.board_type) == "computer")
name = "Computer circuit design ([item_name])"
else
name = "Circuit design ([item_name])"
/datum/design/circuit/AssembleDesignDesc()
if(!desc)
desc = "Allows for the construction of \a [item_name] circuit board."
/datum/design/circuit/arcademachine
name = "battle arcade machine"
id = "arcademachine"
req_tech = list(TECH_DATA = 1)
build_path = /obj/item/circuitboard/arcade/battle
sort_string = "MAAAA"
/datum/design/circuit/oriontrail
name = "orion trail arcade machine"
id = "oriontrail"
req_tech = list(TECH_DATA = 1)
build_path = /obj/item/circuitboard/arcade/orion_trail
sort_string = "MAAAB"
/datum/design/circuit/clawmachine
name = "grab-a-gift arcade machine"
id = "clawmachine"
req_tech = list(TECH_DATA = 1)
build_path = /obj/item/circuitboard/arcade/clawmachine
sort_string = "MAAAC"
/datum/design/circuit/jukebox
name = "jukebox"
id = "jukebox"
req_tech = list(TECH_MAGNET = 2, TECH_DATA = 1)
build_path = /obj/item/circuitboard/jukebox
sort_string = "MAAAO"
/datum/design/circuit/seccamera
name = "security camera monitor"
id = "seccamera"
build_path = /obj/item/circuitboard/security
sort_string = "DAAAZ" // Duplicate string, really need to redo this whole thing
/datum/design/circuit/secdata
name = "security records console"
id = "sec_data"
build_path = /obj/item/circuitboard/secure_data
sort_string = "DABAA"
/datum/design/circuit/prisonmanage
name = "prisoner management console"
id = "prisonmanage"
build_path = /obj/item/circuitboard/prisoner
sort_string = "DACAA"
/datum/design/circuit/med_data
name = "medical records console"
id = "med_data"
build_path = /obj/item/circuitboard/med_data
sort_string = "FAAAA"
/datum/design/circuit/operating
name = "patient monitoring console"
id = "operating"
build_path = /obj/item/circuitboard/operating
sort_string = "FACAA"
/datum/design/circuit/scan_console
name = "DNA machine"
id = "scan_console"
build_path = /obj/item/circuitboard/scan_consolenew
sort_string = "FAGAA"
/datum/design/circuit/clonecontrol
name = "cloning control console"
id = "clonecontrol"
req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/circuitboard/cloning
sort_string = "FAGAC"
/datum/design/circuit/clonepod
name = "clone pod"
id = "clonepod"
req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/circuitboard/clonepod
sort_string = "FAGAE"
/datum/design/circuit/clonescanner
name = "cloning scanner"
id = "clonescanner"
req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/circuitboard/clonescanner
sort_string = "FAGAG"
/datum/design/circuit/chem_master
name = "ChemMaster 3000"
id = "chemmaster"
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2)
build_path = /obj/item/circuitboard/chem_master
sort_string = "FAGAH"
/datum/design/circuit/crewconsole
name = "crew monitoring console"
id = "crewconsole"
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_BIO = 2)
build_path = /obj/item/circuitboard/crew
sort_string = "FAGAI"
/datum/design/circuit/pandemic
name = "PanD.E.M.I.C 2200"
id = "pandemic"
req_tech = list(TECH_DATA = 2, TECH_BIO = 2)
build_path = /obj/item/circuitboard/pandemic
sort_string = "FAGAJ"
/datum/design/circuit/teleconsole
name = "teleporter control console"
id = "teleconsole"
req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 2)
build_path = /obj/item/circuitboard/teleporter
sort_string = "HAAAA"
/datum/design/circuit/robocontrol
name = "robotics control console"
id = "robocontrol"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/robotics
sort_string = "HAAAB"
/datum/design/circuit/mechacontrol
name = "exosuit control console"
id = "mechacontrol"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/mecha_control
sort_string = "HAAAC"
/datum/design/circuit/rdconsole
name = "R&D control console"
id = "rdconsole"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/rdconsole
sort_string = "HAAAE"
/datum/design/circuit/aifixer
name = "AI integrity restorer"
id = "aifixer"
req_tech = list(TECH_DATA = 3, TECH_BIO = 2)
build_path = /obj/item/circuitboard/aifixer
sort_string = "HAAAF"
/datum/design/circuit/comm_monitor
name = "telecommunications monitoring console"
id = "comm_monitor"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/comm_monitor
sort_string = "HAACA"
/datum/design/circuit/comm_server
name = "telecommunications server monitoring console"
id = "comm_server"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/comm_server
sort_string = "HAACB"
/datum/design/circuit/message_monitor
name = "messaging monitor console"
id = "message_monitor"
req_tech = list(TECH_DATA = 5)
build_path = /obj/item/circuitboard/message_monitor
sort_string = "HAACC"
/datum/design/circuit/aiupload
name = "AI upload console"
id = "aiupload"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/aiupload
sort_string = "HAABA"
/datum/design/circuit/borgupload
name = "cyborg upload console"
id = "borgupload"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/borgupload
sort_string = "HAABB"
/datum/design/circuit/destructive_analyzer
name = "destructive analyzer"
id = "destructive_analyzer"
req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/destructive_analyzer
sort_string = "HABAA"
/datum/design/circuit/protolathe
name = "protolathe"
id = "protolathe"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/protolathe
sort_string = "HABAB"
/datum/design/circuit/circuit_imprinter
name = "circuit imprinter"
id = "circuit_imprinter"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/circuit_imprinter
sort_string = "HABAC"
/datum/design/circuit/autolathe
name = "autolathe board"
id = "autolathe"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/autolathe
sort_string = "HABAD"
/datum/design/circuit/rdservercontrol
name = "R&D server control console"
id = "rdservercontrol"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/rdservercontrol
sort_string = "HABBA"
/datum/design/circuit/rdserver
name = "R&D server"
id = "rdserver"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/rdserver
sort_string = "HABBB"
/datum/design/circuit/mechfab
name = "exosuit fabricator"
id = "mechfab"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/mechfab
sort_string = "HABAE"
/datum/design/circuit/prosfab
name = "prosthetics fabricator"
id = "prosfab"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/prosthetics
sort_string = "HABAF"
/datum/design/circuit/mech_recharger
name = "mech recharger"
id = "mech_recharger"
req_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/mech_recharger
sort_string = "HACAA"
/datum/design/circuit/recharge_station
name = "cyborg recharge station"
id = "recharge_station"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/recharge_station
sort_string = "HACAC"
/datum/design/circuit/atmosalerts
name = "atmosphere alert console"
id = "atmosalerts"
build_path = /obj/item/circuitboard/atmos_alert
sort_string = "JAAAA"
/datum/design/circuit/air_management
name = "atmosphere monitoring console"
id = "air_management"
build_path = /obj/item/circuitboard/air_management
sort_string = "JAAAB"
/datum/design/circuit/rcon_console
name = "RCON remote control console"
id = "rcon_console"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5)
build_path = /obj/item/circuitboard/rcon_console
sort_string = "JAAAC"
/datum/design/circuit/dronecontrol
name = "drone control console"
id = "dronecontrol"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/drone_control
sort_string = "JAAAD"
/datum/design/circuit/powermonitor
name = "power monitoring console"
id = "powermonitor"
build_path = /obj/item/circuitboard/powermonitor
sort_string = "JAAAE"
/datum/design/circuit/solarcontrol
name = "solar control console"
id = "solarcontrol"
build_path = /obj/item/circuitboard/solar_control
sort_string = "JAAAF"
/datum/design/circuit/shutoff_monitor
name = "Automatic shutoff valve monitor"
id = "shutoff_monitor"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/shutoff_monitor
sort_string = "JAAAG"
/datum/design/circuit/pacman
name = "PACMAN-type generator"
id = "pacman"
req_tech = list(TECH_DATA = 3, TECH_PHORON = 3, TECH_POWER = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/pacman
sort_string = "JBAAA"
/datum/design/circuit/superpacman
name = "SUPERPACMAN-type generator"
id = "superpacman"
req_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_path = /obj/item/circuitboard/pacman/super
sort_string = "JBAAB"
/datum/design/circuit/mrspacman
name = "MRSPACMAN-type generator"
id = "mrspacman"
req_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/pacman/mrs
sort_string = "JBAAC"
/datum/design/circuit/batteryrack
name = "cell rack PSU"
id = "batteryrack"
req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/batteryrack
sort_string = "JBABA"
/datum/design/circuit/smes_cell
name = "'SMES' superconductive magnetic energy storage"
desc = "Allows for the construction of circuit boards used to build a SMES."
id = "smes_cell"
req_tech = list(TECH_POWER = 7, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/smes
sort_string = "JBABB"
/datum/design/circuit/grid_checker
name = "power grid checker"
desc = "Allows for the construction of circuit boards used to build a grid checker."
id = "grid_checker"
req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/grid_checker
sort_string = "JBABC"
/datum/design/circuit/breakerbox
name = "breaker box"
desc = "Allows for the construction of circuit boards used to build a breaker box."
id = "breakerbox"
req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/breakerbox
sort_string = "JBABD"
/datum/design/circuit/gas_heater
name = "gas heating system"
id = "gasheater"
req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/unary_atmos/heater
sort_string = "JCAAA"
/datum/design/circuit/gas_cooler
name = "gas cooling system"
id = "gascooler"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/unary_atmos/cooler
sort_string = "JCAAB"
/datum/design/circuit/secure_airlock
name = "secure airlock electronics"
desc = "Allows for the construction of a tamper-resistant airlock electronics."
id = "securedoor"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/airlock_electronics/secure
sort_string = "JDAAA"
/datum/design/circuit/ordercomp
name = "supply ordering console"
id = "ordercomp"
build_path = /obj/item/circuitboard/supplycomp
sort_string = "KAAAY" // Duplicate string, really need to redo this whole thing
/datum/design/circuit/supplycomp
name = "supply control console"
id = "supplycomp"
req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/supplycomp/control
sort_string = "KAAAZ" // Duplicate string, really need to redo this whole thing
/datum/design/circuit/biogenerator
name = "biogenerator"
id = "biogenerator"
req_tech = list(TECH_DATA = 2)
build_path = /obj/item/circuitboard/biogenerator
sort_string = "KBAAA"
/datum/design/circuit/miningdrill
name = "mining drill head"
id = "mining drill head"
req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/miningdrill
sort_string = "KCAAA"
/datum/design/circuit/miningdrillbrace
name = "mining drill brace"
id = "mining drill brace"
req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/miningdrillbrace
sort_string = "KCAAB"
/datum/design/circuit/comconsole
name = "communications console"
id = "comconsole"
build_path = /obj/item/circuitboard/communications
sort_string = "LAAAA"
/datum/design/circuit/idcardconsole
name = "ID card modification console"
id = "idcardconsole"
build_path = /obj/item/circuitboard/card
sort_string = "LAAAB"
/datum/design/circuit/emp_data
name = "employment records console"
id = "emp_data"
build_path = /obj/item/circuitboard/skills
sort_string = "LAAAC"
/datum/design/circuit/arf_generator
name = "atmospheric field generator"
id = "arf_generator"
req_tech = list(TECH_MAGNET = 4, TECH_POWER = 4, TECH_BIO = 3)
build_path = /obj/item/circuitboard/arf_generator
sort_string = "LAAAD"
/datum/design/circuit/protean_reconstitutor
name = "protean reconstitutor"
id = "protean_recon"
req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
build_path = /obj/item/circuitboard/protean_reconstitutor
sort_string = "LAAAE"
/datum/design/circuit/mecha
req_tech = list(TECH_DATA = 3)
/datum/design/circuit/mecha/AssembleDesignName()
name = "Exosuit module circuit design ([name])"
/datum/design/circuit/mecha/AssembleDesignDesc()
desc = "Allows for the construction of \a [name] module."
/datum/design/circuit/mecha/ripley_main
name = "APLU 'Ripley' central control"
id = "ripley_main"
build_path = /obj/item/circuitboard/mecha/ripley/main
sort_string = "NAAAA"
/datum/design/circuit/mecha/ripley_peri
name = "APLU 'Ripley' peripherals control"
id = "ripley_peri"
build_path = /obj/item/circuitboard/mecha/ripley/peripherals
sort_string = "NAAAB"
/datum/design/circuit/mecha/odysseus_main
name = "'Odysseus' central control"
id = "odysseus_main"
req_tech = list(TECH_DATA = 3,TECH_BIO = 2)
build_path = /obj/item/circuitboard/mecha/odysseus/main
sort_string = "NAABA"
/datum/design/circuit/mecha/odysseus_peri
name = "'Odysseus' peripherals control"
id = "odysseus_peri"
req_tech = list(TECH_DATA = 3,TECH_BIO = 2)
build_path = /obj/item/circuitboard/mecha/odysseus/peripherals
sort_string = "NAABB"
/datum/design/circuit/mecha/gygax_main
name = "'Gygax' central control"
id = "gygax_main"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/gygax/main
sort_string = "NAACA"
/datum/design/circuit/mecha/gygax_peri
name = "'Gygax' peripherals control"
id = "gygax_peri"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/gygax/peripherals
sort_string = "NAACB"
/datum/design/circuit/mecha/gygax_targ
name = "'Gygax' weapon control and targeting"
id = "gygax_targ"
req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/mecha/gygax/targeting
sort_string = "NAACC"
/datum/design/circuit/mecha/gygax_medical
name = "'Serenity' medical control"
id = "gygax_medical"
req_tech = list(TECH_DATA = 4, TECH_BIO = 2)
build_path = /obj/item/circuitboard/mecha/gygax/medical
sort_string = "NAACD"
/datum/design/circuit/mecha/durand_main
name = "'Durand' central control"
id = "durand_main"
req_tech = list(TECH_DATA = 4)
materials = list(MAT_GLASS = 2000, MAT_GRAPHITE = 1250)
chemicals = list(REAGENT_ID_SACID = 20)
build_path = /obj/item/circuitboard/mecha/durand/main
sort_string = "NAADA"
/datum/design/circuit/mecha/durand_peri
name = "'Durand' peripherals control"
id = "durand_peri"
req_tech = list(TECH_DATA = 4)
materials = list(MAT_GLASS = 2000, MAT_GRAPHITE = 1250)
chemicals = list(REAGENT_ID_SACID = 20)
build_path = /obj/item/circuitboard/mecha/durand/peripherals
sort_string = "NAADB"
/datum/design/circuit/mecha/durand_targ
name = "'Durand' weapon control and targeting"
id = "durand_targ"
req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2)
materials = list(MAT_GLASS = 2000, MAT_GRAPHITE = 1250)
chemicals = list(REAGENT_ID_SACID = 20)
build_path = /obj/item/circuitboard/mecha/durand/targeting
sort_string = "NAADC"
/datum/design/circuit/tcom
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
/datum/design/circuit/tcom/AssembleDesignName()
name = "Telecommunications machinery circuit design ([name])"
/datum/design/circuit/tcom/AssembleDesignDesc()
desc = "Allows for the construction of a telecommunications [name] circuit board."
/datum/design/circuit/tcom/server
name = "server mainframe"
id = "tcom-server"
build_path = /obj/item/circuitboard/telecomms/server
sort_string = "PAAAA"
/datum/design/circuit/tcom/processor
name = "processor unit"
id = "tcom-processor"
build_path = /obj/item/circuitboard/telecomms/processor
sort_string = "PAAAB"
/datum/design/circuit/tcom/bus
name = "bus mainframe"
id = "tcom-bus"
build_path = /obj/item/circuitboard/telecomms/bus
sort_string = "PAAAC"
/datum/design/circuit/tcom/hub
name = "hub mainframe"
id = "tcom-hub"
build_path = /obj/item/circuitboard/telecomms/hub
sort_string = "PAAAD"
/datum/design/circuit/tcom/relay
name = "relay mainframe"
id = "tcom-relay"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3)
build_path = /obj/item/circuitboard/telecomms/relay
sort_string = "PAAAE"
/datum/design/circuit/tcom/broadcaster
name = "subspace broadcaster"
id = "tcom-broadcaster"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2)
build_path = /obj/item/circuitboard/telecomms/broadcaster
sort_string = "PAAAF"
/datum/design/circuit/tcom/receiver
name = "subspace receiver"
id = "tcom-receiver"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2)
build_path = /obj/item/circuitboard/telecomms/receiver
sort_string = "PAAAG"
/datum/design/circuit/tcom/exonet_node
name = "exonet node"
id = "tcom-exonet_node"
req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
build_path = /obj/item/circuitboard/telecomms/exonet_node
sort_string = "PAAAH"
/datum/design/circuit/shield
req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3)
materials = list(MAT_GLASS = 2000, MAT_GOLD = 1000)
/datum/design/circuit/shield/AssembleDesignName()
name = "Shield generator circuit design ([name])"
/datum/design/circuit/shield/AssembleDesignDesc()
if(!desc)
desc = "Allows for the construction of \a [name] shield generator."
/datum/design/circuit/shield/bubble
name = "bubble (OBSOLETE)" //VOREStation Edit
id = "shield_gen"
build_path = /obj/item/circuitboard/shield_gen
sort_string = "VAAAZ" // Duplicate string, really need to redo this whole thing
/datum/design/circuit/shield/hull
name = "hull (OBSOLETE)" //VOREStation Edit
id = "shield_gen_ex"
build_path = /obj/item/circuitboard/shield_gen_ex
sort_string = "VAAAB"
/datum/design/circuit/shield/capacitor
name = "capacitor (OBSOLETE)" //VOREStation Edit"
desc = "Allows for the construction of a shield capacitor circuit board."
id = "shield_cap"
req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/shield_cap
sort_string = "VAAAC"
/datum/design/circuit/ntnet_relay
name = "NTNet Quantum Relay"
id = "ntnet_relay"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/ntnet_relay
sort_string = "WAAAA"
/datum/design/circuit/aicore
name = "AI core"
id = "aicore"
req_tech = list(TECH_DATA = 4, TECH_BIO = 3)
build_path = /obj/item/circuitboard/aicore
sort_string = "XAAAA"
// Cooking Appliances
/datum/design/circuit/microwave
name = "microwave board"
id = "microwave_board"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/microwave
sort_string = "HACAM"
/datum/design/circuit/oven
name = "oven board"
id = "oven_board"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/oven
sort_string = "HACAN"
/datum/design/circuit/fryer
name = "deep fryer board"
id = "fryer_board"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/fryer
sort_string = "HACAO"
/datum/design/circuit/cerealmaker
name = "cereal maker board"
id = "cerealmaker_board"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/cerealmaker
sort_string = "HACAP"
/datum/design/circuit/candymaker
name = "candy machine board"
id = "candymachine_board"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/candymachine
sort_string = "HACAQ"
/datum/design/circuit/microwave/advanced
name = "deluxe microwave"
id = "deluxe microwave"
req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
build_path = /obj/item/circuitboard/microwave/advanced
sort_string = "HACAA"
/datum/design/circuit/shield_generator
name = "shield generator"
id = "shield_generator"
req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4, TECH_BLUESPACE = 2, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/shield_generator
sort_string = "OAAAA"
/datum/design/circuit/shield_diffuser
name = "shield diffuser"
id = "shield_diffuser"
req_tech = list(TECH_MAGNET = 4, TECH_POWER = 2, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/shield_diffuser
sort_string = "OAAAB"
/datum/design/circuit/pointdefense
name = "point defense battery"
id = "pointdefense"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4)
build_path = /obj/item/circuitboard/pointdefense
sort_string = "OAABA"
/datum/design/circuit/pointdefense_control
name = "point defense control"
id = "pointdefense_control"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/pointdefense_control
sort_string = "OAABB"
/datum/design/circuit/recycler_crusher
name = "recycler - crusher"
id = "recycler_crusher"
req_tech = list(TECH_MATERIAL = 2)
build_path = /obj/item/circuitboard/recycler_crusher
sort_string = "OAABC"
/datum/design/circuit/recycler_sorter
name = "recycler - sorter"
id = "recycler_sorter"
req_tech = list(TECH_MATERIAL = 2)
build_path = /obj/item/circuitboard/recycler_sorter
sort_string = "OAABD"
/datum/design/circuit/recycler_stamper
name = "recycler - stamper"
id = "recycler_stamper"
req_tech = list(TECH_MATERIAL = 2)
build_path = /obj/item/circuitboard/recycler_stamper
sort_string = "OAABE"
///Fighters///
//Pinnace//
/datum/design/circuit/mecha/fighter/pinnace_main
name = "Pinnace central control board"
id = "pinnace_main"
req_tech = list(TECH_DATA = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/pinnace/main
sort_string = "NAAGA"
/datum/design/circuit/mecha/fighter/pinnace_flight
name = "Pinnace flight control board"
id = "pinnace_flight"
req_tech = list(TECH_DATA = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/pinnace/flight
sort_string = "NAAGB"
/datum/design/circuit/mecha/fighter/pinnace_targeting
name = "Pinnace weapon control and targeting board"
id = "pinnace_targeting"
req_tech = list(TECH_DATA = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/pinnace/targeting
sort_string = "NAAGC"
/datum/design/circuit/mecha/fighter/pinnace_cockpit_control
name = "Pinnace manual flight control instruments"
id = "pinnace_cockpit_control"
req_tech = list(TECH_DATA = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/pinnace/cockpitboard
sort_string = "NAAGD"
//Baron//
/datum/design/circuit/mecha/fighter/baron_main
name = "Baron central control board"
id = "baron_main"
req_tech = list(TECH_DATA = 5, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/baron/main
sort_string = "NAAHA"
/datum/design/circuit/mecha/fighter/baron_flight
name = "Baron flight control board"
id = "baron_flight"
req_tech = list(TECH_DATA = 5, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/baron/flight
sort_string = "NAAHB"
/datum/design/circuit/mecha/fighter/baron_targeting
name = "Baron weapon control and targeting board"
id = "baron_targeting"
req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3)
build_path = /obj/item/circuitboard/mecha/fighter/baron/targeting
sort_string = "NAAHC"
/datum/design/circuit/mecha/fighter/baron_cockpit_control
name = "Baron manual flight control instruments"
id = "baron_cockpit_control"
req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3)
build_path = /obj/item/circuitboard/mecha/fighter/baron/cockpitboard
sort_string = "NAAHD"
@@ -1,191 +0,0 @@
/datum/design/circuit/algae_farm
name = "Algae Oxygen Generator"
id = "algae_farm"
req_tech = list(TECH_ENGINEERING = 3, TECH_BIO = 2)
build_path = /obj/item/circuitboard/algae_farm
sort_string = "HABAE"
/datum/design/circuit/thermoregulator
name = "thermal regulator"
id = "thermoregulator"
req_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 3)
build_path = /obj/item/circuitboard/thermoregulator
sort_string = "HABAF"
/datum/design/circuit/bomb_tester
name = "Explosive Effect Simulator"
id = "bomb_tester"
req_tech = list(TECH_PHORON = 3, TECH_DATA = 2, TECH_MAGNET = 2)
build_path = /obj/item/circuitboard/bomb_tester
sort_string = "HABAG"
/datum/design/circuit/quantum_pad
name = "Quantum Pad"
id = "quantum_pad"
req_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 4, TECH_BLUESPACE = 4)
build_path = /obj/item/circuitboard/quantumpad
sort_string = "HABAH"
//////Micro mech stuff
/datum/design/circuit/mecha/gopher_main
name = "'Gopher' central control"
id = "gopher_main"
build_path = /obj/item/circuitboard/mecha/gopher/main
sort_string = "NAAEA"
/datum/design/circuit/mecha/gopher_peri
name = "'Gopher' peripherals control"
id = "gopher_peri"
build_path = /obj/item/circuitboard/mecha/gopher/peripherals
sort_string = "NAAEB"
/datum/design/circuit/mecha/polecat_main
name = "'Polecat' central control"
id = "polecat_main"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/polecat/main
sort_string = "NAAFA"
/datum/design/circuit/mecha/polecat_peri
name = "'Polecat' peripherals control"
id = "polecat_peri"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/polecat/peripherals
sort_string = "NAAFB"
/datum/design/circuit/mecha/polecat_targ
name = "'Polecat' weapon control and targeting"
id = "polecat_targ"
req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/mecha/polecat/targeting
sort_string = "NAAFC"
/datum/design/circuit/mecha/weasel_main
name = "'Weasel' central control"
id = "weasel_main"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/weasel/main
sort_string = "NAAGA"
/datum/design/circuit/mecha/weasel_peri
name = "'Weasel' peripherals control"
id = "weasel_peri"
req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/weasel/peripherals
sort_string = "NAAGB"
/datum/design/circuit/mecha/weasel_targ
name = "'Weasel' weapon control and targeting"
id = "weasel_targ"
req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/mecha/weasel/targeting
sort_string = "NAAGC"
/datum/design/circuit/transhuman_clonepod
name = "grower pod"
id = "transhuman_clonepod"
req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/circuitboard/transhuman_clonepod
sort_string = "HAADA"
/datum/design/circuit/transhuman_synthprinter
name = "SynthFab 3000"
id = "transhuman_synthprinter"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/transhuman_synthprinter
sort_string = "HAADB"
/datum/design/circuit/transhuman_resleever
name = "Resleeving pod"
id = "transhuman_resleever"
req_tech = list(TECH_ENGINEERING = 4, TECH_BIO = 4)
build_path = /obj/item/circuitboard/transhuman_resleever
sort_string = "HAADC"
// Resleeving
/datum/design/circuit/resleeving_control
name = "Resleeving control console"
id = "resleeving_control"
req_tech = list(TECH_DATA = 5)
build_path = /obj/item/circuitboard/resleeving_control
sort_string = "HAADE"
/datum/design/circuit/body_designer
name = "Body design console"
id = "body_designer"
req_tech = list(TECH_DATA = 5)
build_path = /obj/item/circuitboard/body_designer
sort_string = "HAADF"
/datum/design/circuit/partslathe
name = "Parts lathe"
id = "partslathe"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/partslathe
sort_string = "HABAD"
// Telesci stuff
/datum/design/circuit/telesci_console
name = "Telepad Control Console"
id = "telesci_console"
req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 3, TECH_PHORON = 4)
build_path = /obj/item/circuitboard/telesci_console
sort_string = "HAAEA"
/datum/design/circuit/telesci_pad
name = "Telepad"
id = "telesci_pad"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5)
build_path = /obj/item/circuitboard/telesci_pad
sort_string = "HAAEB"
/datum/design/circuit/quantum_pad
name = "Quantum Pad"
id = "quantum_pad"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5)
build_path = /obj/item/circuitboard/quantumpad
sort_string = "HAAC"
/datum/design/circuit/rtg
name = "radioisotope TEG"
id = "rtg"
req_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/machine/rtg
sort_string = "HAAD"
/datum/design/circuit/rtg_advanced
name = "advanced radioisotope TEG"
id = "adv_rtg"
req_tech = list(TECH_DATA = 5, TECH_POWER = 5, TECH_PHORON = 5, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/machine/rtg/advanced
sort_string = "HAAE"
/datum/design/circuit/rtg
name = "vitals monitor"
id = "vitals"
req_tech = list(TECH_DATA = 3, TECH_BIO = 4, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/machine/vitals_monitor
sort_string = "HAAF"
/datum/design/circuit/firework_launcher
name = "firework launcher"
id = "fireworklauncher"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/firework_launcher
sort_string = "KBAAB"
/datum/design/circuit/pointdefense
name = "point defense battery"
id = "pointdefense"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4)
build_path = /obj/item/circuitboard/pointdefense
sort_string = "OAABA"
/datum/design/circuit/pointdefense_control
name = "point defense control"
id = "pointdefense_control"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/pointdefense_control
sort_string = "OAABB"
@@ -1,46 +0,0 @@
/datum/design/circuit/disk
build_type = IMPRINTER
req_tech = list(TECH_DATA = 3)
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 1000)
chemicals = list(REAGENT_ID_PACID = 10)
time = 5
/datum/design/circuit/disk/AssembleDesignName()
..()
if(build_path)
var/obj/item/disk/D = build_path
if(istype(D, /obj/item/disk/species))
name = "Species Prosthetic design ([item_name])"
else if(istype(D, /obj/item/disk/limb))
name = "Transtellar Prosthetic design ([item_name])"
else
name = "Disk design ([item_name])"
/datum/design/circuit/disk/skrellprint
name = SPECIES_SKRELL
id = "prosthetic_skrell"
req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/disk/species/skrell
sort_string = "DBAAA"
/datum/design/circuit/disk/tajprint
name = SPECIES_TAJARAN
id = "prosthetic_tajaran"
req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/disk/species/tajaran
sort_string = "DBAAB"
/datum/design/circuit/disk/unathiprint
name = SPECIES_UNATHI
id = "prosthetic_unathi"
req_tech = list(TECH_DATA = 3, TECH_BIO = 4)
build_path = /obj/item/disk/species/unathi
sort_string = "DBAAC"
/datum/design/circuit/disk/teshariprint
name = SPECIES_TESHARI
id = "prosthetic_teshari"
req_tech = list(TECH_DATA = 3, TECH_BIO = 4)
build_path = /obj/item/disk/species/teshari
sort_string = "DBAAD"
@@ -1,92 +0,0 @@
// Tools
/datum/design/item/tool/AssembleDesignName()
..()
name = "Experimental tool prototype ([item_name])"
/datum/design/item/tool/experimental_welder
name = "Experimental welding tool"
desc = "A welding tool that generate fuel for itself."
id = "expwelder"
req_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 70, MAT_GLASS = 120, MAT_PHORON = 100)
build_path = /obj/item/weldingtool/experimental
sort_string = "NAAAA"
/datum/design/item/tool/hand_drill
name = "Hand drill"
desc = "A simple powered hand drill."
id = "handdrill"
req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 300, MAT_SILVER = 100)
build_path = /obj/item/tool/transforming/powerdrill
sort_string = "NAAAB"
/datum/design/item/tool/jaws_life
name = "Jaws of life"
desc = "A set of jaws of life, compressed through the magic of science."
id = "jawslife"
req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 300, MAT_SILVER = 100)
build_path = /obj/item/tool/transforming/jawsoflife
sort_string = "NAAAC"
/datum/design/item/tool/rpd
name = "Rapid Pipe Dispenser"
desc = "A counterpart to the rapid construction device that allows creating and placing atmospheric and disposal pipes."
id = "rapidpipedispenser"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000)
build_path = /obj/item/pipe_dispenser
sort_string = "NAAAD"
/datum/design/item/tool/qpad_booster
name = "Quantum Pad Particle Booster"
desc = "A deceptively simple interface for increasing the mass of objects a quantum pad is capable of teleporting, at the cost of increased power draw."
id = "qpad_booster"
req_tech = list(TECH_ENGINEERING = 7, TECH_MATERIAL = 7, TECH_BLUESPACE = 6)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 1000)
build_path = /obj/item/quantum_pad_booster
sort_string = "NAAAF"
// Other devices
/datum/design/item/engineering/AssembleDesignName()
..()
name = "Engineering device prototype ([item_name])"
/datum/design/item/engineering/t_scanner
name = "T-ray Scanner"
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
id = "tscanner"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 200)
build_path = /obj/item/t_scanner
sort_string = "NBAAA"
/datum/design/item/engineering/t_scanner_upg
name = "Upgraded T-ray Scanner"
desc = "An upgraded version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
id = "upgradedtscanner"
req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 500, MAT_PHORON = 150)
build_path = /obj/item/t_scanner/upgraded
sort_string = "NBAAB"
/datum/design/item/engineering/t_scanner_adv
name = "Advanced T-ray Scanner"
desc = "An advanced version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
id = "advancedtscanner"
req_tech = list(TECH_MAGNET = 6, TECH_ENGINEERING = 6, TECH_MATERIAL = 6)
materials = list(MAT_STEEL = 1250, MAT_PHORON = 500, MAT_SILVER = 50)
build_path = /obj/item/t_scanner/advanced
sort_string = "NBAAC"
/datum/design/item/engineering/atmosanalyzer
name = "Analyzer"
desc = "A hand-held environmental scanner which reports current gas levels."
id = "atmosanalyzer"
req_tech = list(TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 200, MAT_GLASS = 100)
build_path = /obj/item/analyzer
sort_string = "NBABA"
-114
View File
@@ -1,114 +0,0 @@
// Implants
/datum/design/item/implant
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
/datum/design/item/implant/AssembleDesignName()
..()
name = "Implantable biocircuit design ([item_name])"
/datum/design/item/implant/chemical
name = "chemical"
id = "implant_chem"
req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3)
build_path = /obj/item/implantcase/chem
sort_string = "MFAAA"
/datum/design/item/implant/freedom
name = "freedom"
id = "implant_free"
req_tech = list(TECH_ILLEGAL = 2, TECH_BIO = 3)
build_path = /obj/item/implantcase/freedom
sort_string = "MFAAB"
/datum/design/item/organ/internal/augment/AssembleDesignName()
..()
name = "Biotech implant device prototype ([item_name])"
/datum/design/item/organ/internal/augment/armmounted/hand
desc = "An augment that fits neatly into the hand, useful for determining the usefulness of an object for research."
id = "research_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 3000)
build_path = /obj/item/organ/internal/augment/armmounted/hand
sort_string = "JVACE"
/datum/design/item/organ/internal/augment/armmounted/shoulder/multiple
desc = "A large implant that fits into a subject's arm. It deploys an array of tools by some painful means."
id = "tool_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000)
build_path = /obj/item/organ/internal/augment/armmounted/shoulder/multiple
sort_string = "JVACI"
/datum/design/item/organ/internal/augment/armmounted/shoulder/multiple/medical
desc = "A large implant that fits into a subject's arm. It deploys an array of tools by some painful means."
id = "surgical_implant"
req_tech = list(TECH_BIO = 6, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 1000)
build_path = /obj/item/organ/internal/augment/armmounted/shoulder/multiple/medical
sort_string = "JVACJ"
/datum/design/item/organ/internal/augment/armmounted/hand/blade
desc = "A large implant that fits into a subject's hand. It deploys a bladed weapon."
id = "blade_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_COMBAT = 4)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 1000)
build_path = /obj/item/organ/internal/augment/armmounted/hand/blade
sort_string = "JVACK"
/datum/design/item/organ/internal/augment/armmounted/shoulder/blade
desc = "A large implant that fits into a subject's arm. It deploys a large, bladed weapon."
id = "armblade_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 5, TECH_COMBAT = 6)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 1000, MAT_GOLD = 2000)
build_path = /obj/item/organ/internal/augment/armmounted/shoulder/blade
sort_string = "JVACL"
/datum/design/item/organ/internal/augment/armmounted/hand/sword
desc = "A large implant that fits into a subject's hand. It deploys a large, energetic weapon."
id = "sword_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 6, TECH_COMBAT = 6, TECH_ENGINEERING = 5, TECH_ILLEGAL = 2)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 1000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/organ/internal/augment/armmounted/hand/sword
sort_string = "JVACM"
/datum/design/item/organ/internal/augment/armmounted/dartbow
desc = "A large implant that fits into a subject's arm. It creates a dartbow when activated."
id = "dartbow_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_COMBAT = 6, TECH_ILLEGAL = 3)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_PHORON = 4000, MAT_GOLD = 4000, MAT_DIAMOND = 6000)
build_path = /obj/item/organ/internal/augment/armmounted/dartbow
sort_string = "JVACN"
/datum/design/item/organ/internal/augment/armmounted/taser
desc = "A large implant that fits into a subject's arm. It turns into a taser when activated."
id = "taser_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_COMBAT = 4)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 2000, MAT_GOLD = 1000)
build_path = /obj/item/organ/internal/augment/armmounted/taser
sort_string = "JVACO"
/datum/design/item/organ/internal/augment/armmounted/laser
desc = "A large implant that fits into a subject's arm. It turns into a laser when activated."
id = "laser_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_COMBAT = 6)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 6000, MAT_GOLD = 4000, MAT_DIAMOND = 4000, MAT_PHORON = 2000)
build_path = /obj/item/organ/internal/augment/armmounted
sort_string = "JVACP"
/datum/design/item/organ/internal/augment/armmounted/shoulder/surge
desc = "A large implant that fits into a subject's arm. It floods the subject with stimulants to speed them up."
id = "surge_implant"
req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_POWER = 4)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_PHORON = 1000, MAT_GOLD = 2000)
build_path = /obj/item/organ/internal/augment/armmounted/shoulder/surge
sort_string = "JVACQ"
/datum/design/item/internal/augment/bioaugment/thermalshades
desc = "A large implant that fits into a subject's eyes. It allows them to see through walls."
id = "thermal_implant"
req_tech = list(TECH_BIO = 7, TECH_MATERIAL = 4, TECH_POWER = 7, TECH_ENGINEERING = 7, TECH_COMBAT = 5, TECH_ILLEGAL = 2)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_PHORON = 10000, MAT_GOLD = 2000, MAT_DIAMOND = 10000, MAT_SILVER = 4000, MAT_TITANIUM = 1000) //this is thermals. this is expensive, yo.
build_path = /obj/item/organ/internal/augment/bioaugment/thermalshades
sort_string = "JVACR"
@@ -1,15 +0,0 @@
/datum/design/item/implant/backup
name = "Backup implant"
id = "implant_backup"
req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_DATA = 4, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000)
build_path = /obj/item/implantcase/backup
sort_string = "MFAVA"
/datum/design/item/implant/sizecontrol
name = "Size control implant"
id = "implant_size"
req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_DATA = 4, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/implanter/sizecontrol
sort_string = "MFAVB"
@@ -1,80 +0,0 @@
// GPS
/datum/design/item/gps
req_tech = list(TECH_MATERIAL = 2, TECH_DATA = 2, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 500)
/datum/design/item/gps/AssembleDesignName()
..()
name = "Triangulating device design (GPS - [name])"
/datum/design/item/gps/generic
name = "GEN"
id = "gps_gen"
build_path = /obj/item/gps
sort_string = "DAAAA"
/datum/design/item/gps/command
name = "COM"
id = "gps_com"
build_path = /obj/item/gps/command
sort_string = "DAAAB"
/datum/design/item/gps/security
name = "SEC"
id = "gps_sec"
build_path = /obj/item/gps/security
sort_string = "DAAAC"
/datum/design/item/gps/medical
name = "MED"
id = "gps_med"
build_path = /obj/item/gps/medical
sort_string = "DAAAD"
/datum/design/item/gps/engineering
name = "ENG"
id = "gps_eng"
build_path = /obj/item/gps/engineering
sort_string = "DAAAE"
/datum/design/item/gps/science
name = "SCI"
id = "gps_sci"
build_path = /obj/item/gps/science
sort_string = "DAAAF"
/datum/design/item/gps/mining
name = "MINE"
id = "gps_mine"
build_path = /obj/item/gps/mining
sort_string = "DAAAG"
/datum/design/item/gps/explorer
name = "EXP"
id = "gps_exp"
build_path = /obj/item/gps/explorer
sort_string = "DAAAH"
// Other locators
/datum/design/item/locator/AssembleDesignName()
..()
name = "Locator device design ([name])"
/datum/design/item/locator/beacon_locator
name = "Tracking beacon pinpointer"
desc = "Used to scan and locate signals on a particular frequency."
id = "beacon_locator"
req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3)
materials = list(MAT_STEEL = 1000,MAT_GLASS = 500)
build_path = /obj/item/beacon_locator
sort_string = "DBAAA"
/datum/design/item/locator/beacon
name = "Bluespace tracking beacon"
id = "beacon"
req_tech = list(TECH_BLUESPACE = 1)
materials = list (MAT_STEEL = 20, MAT_GLASS = 10)
build_path = /obj/item/radio/beacon
sort_string = "DBABA"
-114
View File
@@ -1,114 +0,0 @@
/datum/design/item/medical
materials = list(MAT_STEEL = 30, MAT_GLASS = 20)
/datum/design/item/medical/AssembleDesignName()
..()
name = "Medical equipment prototype ([item_name])"
// Surgical devices
/datum/design/item/medical/scalpel_laser1
name = "Basic Laser Scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved."
id = "scalpel_laser1"
req_tech = list(TECH_BIO = 2, TECH_MATERIAL = 2, TECH_MAGNET = 2)
materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500)
build_path = /obj/item/surgical/scalpel/laser1
sort_string = "KAAAA"
/datum/design/item/medical/scalpel_laser2
name = "Improved Laser Scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced."
id = "scalpel_laser2"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 4, TECH_MAGNET = 4)
materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500)
build_path = /obj/item/surgical/scalpel/laser2
sort_string = "KAAAB"
/datum/design/item/medical/scalpel_laser3
name = "Advanced Laser Scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!"
id = "scalpel_laser3"
req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 6, TECH_MAGNET = 5)
materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2000, MAT_GOLD = 1500)
build_path = /obj/item/surgical/scalpel/laser3
sort_string = "KAAAC"
/datum/design/item/medical/scalpel_manager
name = "Incision Management System"
desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps."
id = "scalpel_manager"
req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 5, TECH_DATA = 4)
materials = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 750)
build_path = /obj/item/surgical/scalpel/manager
sort_string = "KAAAD"
/datum/design/item/medical/saw_manager
name = "Energetic Bone Diverter"
desc = "A strange development following the I.M.S., this heavy tool can split and open, or close and shut, intentional holes in bones."
id = "advanced_saw"
req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_DATA = 5)
materials = list (MAT_STEEL = 12500, MAT_PLASTIC = 800, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_OSMIUM = 1000)
build_path = /obj/item/surgical/circular_saw/manager
sort_string = "KAAAE"
/datum/design/item/medical/organ_ripper
name = "Organ Ripper"
desc = "A modern and horrifying take on an ancient practice, this tool is capable of rapidly removing an organ from a hopefully willing patient, without damaging it."
id = "organ_ripper"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_ILLEGAL = 3)
materials = list (MAT_STEEL = 12500, MAT_PLASTIC = 8000, MAT_OSMIUM = 2500)
build_path = /obj/item/surgical/scalpel/ripper
sort_string = "KAAAF"
/datum/design/item/medical/bone_clamp
name = "Bone Clamp"
desc = "A miracle of modern science, this tool rapidly knits together bone, without the need for bone gel."
id = "bone_clamp"
req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_DATA = 4)
materials = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500)
build_path = /obj/item/surgical/bone_clamp
sort_string = "KAABA"
/datum/design/item/medical/medical_analyzer
name = "health analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
id = "medical_analyzer"
req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 500, MAT_GLASS = 500)
build_path = /obj/item/healthanalyzer
sort_string = "KBAAA"
/datum/design/item/medical/improved_analyzer
name = "improved health analyzer"
desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels."
id = "improved_analyzer"
req_tech = list(TECH_MAGNET = 5, TECH_BIO = 6)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 1500)
build_path = /obj/item/healthanalyzer/improved
sort_string = "KBAAB"
/datum/design/item/medical/advanced_analyzer
name = "advanced health analyzer"
desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites."
id = "advanced_analyzer"
req_tech = list(TECH_MAGNET = 7, TECH_BIO = 7, TECH_DATA = 5)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 4000, MAT_SILVER = 3500, MAT_GOLD = 2500, MAT_DIAMOND = 1250)
build_path = /obj/item/healthanalyzer/advanced
sort_string = "KBAAC"
/datum/design/item/medical/gene_scanner
name = "Gene Scanner"
id = "gene_scanner"
req_tech = list(TECH_DATA = 1, TECH_BIO = 2)
build_path = /obj/item/gene_scanner
sort_string = "KBAAD"
/datum/design/item/medical/advanced_roller
name = "advanced roller bed"
desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system."
id = "roller_bed"
req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_PHORON = 2000)
build_path = /obj/item/roller/adv
sort_string = "KCAAA"
-253
View File
@@ -1,253 +0,0 @@
/*
KV - ML3M stuff
KVA - gun
KVB - magazines
KVC - cells
KVCA - tier 0
KVCB - tier 1
KVCC - tier 2
KVCD - tier 3
KVCE - tier 4
KVCO - tierless
*/
//General stuff
/datum/design/item/medical/sleevemate
name = "SleeveMate 3700"
id = "sleevemate"
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/sleevemate
sort_string = "KCAVA"
/datum/design/item/medical/protohypospray
name = "prototype hypospray"
desc = "This prototype hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
id = "protohypospray"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 2, TECH_BIO = 4, TECH_ILLEGAL = 2)
materials = list(MAT_STEEL = 500, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/reagent_containers/hypospray/science
sort_string = "KCAVB"
/datum/design/item/medical/recombobray
name = "recombobulation ray"
desc = "The Type Gamma Medical Recombobulation ray! A mysterious looking ray gun! It works to change people who have had their form significantly altered back into their original forms!"
id = "recombobray"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_POWER = 4, TECH_BIO = 5, TECH_BLUESPACE = 4) //Not like these matter. *Glares at circuit printer.*
materials = list(MAT_STEEL = 1000, MAT_GLASS = 2000, MAT_URANIUM = 500, MAT_PHORON = 1500)
build_path = /obj/item/gun/energy/mouseray/medical
sort_string = "KCAVC"
// ML-3M medigun and cells
/datum/design/item/medical/cell_based/AssembleDesignName()
..()
name = "Cell-based medical prototype ([item_name])"
/datum/design/item/medical/cell_based/cell_medigun
name = "cell-loaded medigun"
id = "cell_medigun"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 3, TECH_BIO = 5)
materials = list(MAT_STEEL = 8000, MAT_PLASTIC = 8000, MAT_GLASS = 5000, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_URANIUM = 1000)
build_path = /obj/item/gun/projectile/cell_loaded/medical
sort_string = "KVAAA"
/datum/design/item/medical/cell_based/cell_medigun_mag
name = "medical cell magazine"
id = "cell_medigun_mag"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 3, TECH_BIO = 5)
materials = list(MAT_STEEL = 4000, MAT_PLASTIC = 6000, MAT_GLASS = 3000, MAT_SILVER = 500, MAT_GOLD = 500)
build_path = /obj/item/ammo_magazine/cell_mag/medical
sort_string = "KVBAA"
/datum/design/item/medical/cell_based/cell_medigun_mag_advanced
name = "advanced medical cell magazine"
id = "cell_medigun_mag_advanced"
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 4, TECH_BIO = 7)
materials = list(MAT_STEEL = 5000, MAT_PLASTIC = 10000, MAT_GLASS = 5000, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 5000)
build_path = /obj/item/ammo_magazine/cell_mag/medical/advanced
sort_string = "KVBAB"
/datum/design/item/ml3m_cell/AssembleDesignName()
..()
name = "Nanite cell prototype ([name])"
//Tier 0
/datum/design/item/ml3m_cell/brute
name = "BRUTE"
id = "ml3m_cell_brute"
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/ammo_casing/microbattery/medical/brute
sort_string = "KVCAA"
/datum/design/item/ml3m_cell/burn
name = "BURN"
id = "ml3m_cell_burn"
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/ammo_casing/microbattery/medical/burn
sort_string = "KVCAB"
/datum/design/item/ml3m_cell/stabilize
name = "STABILIZE"
id = "ml3m_cell_stabilize"
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/ammo_casing/microbattery/medical/stabilize
sort_string = "KVCAC"
//Tier 1
/datum/design/item/ml3m_cell/toxin
name = "TOXIN"
id = "ml3m_cell_toxin"
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500)
build_path = /obj/item/ammo_casing/microbattery/medical/toxin
sort_string = "KVCBA"
/datum/design/item/ml3m_cell/omni
name = "OMNI"
id = "ml3m_cell_omni"
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500)
build_path = /obj/item/ammo_casing/microbattery/medical/omni
sort_string = "KVCBB"
/datum/design/item/ml3m_cell/antirad
name = "ANTIRAD"
id = "ml3m_cell_antirad"
req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500)
build_path = /obj/item/ammo_casing/microbattery/medical/antirad
sort_string = "KVCBC"
//Tier 2
/datum/design/item/ml3m_cell/brute2
name = "BRUTE-II"
id = "ml3m_cell_brute2"
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_GOLD = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/brute2
sort_string = "KVCCA"
/datum/design/item/ml3m_cell/burn2
name = "BURN-II"
id = "ml3m_cell_burn2"
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_GOLD = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/burn2
sort_string = "KVCCB"
/datum/design/item/ml3m_cell/stabilize2
name = "STABILIZE-II"
id = "ml3m_cell_stabilize2"
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_SILVER = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/stabilize2
sort_string = "KVCCC"
/datum/design/item/ml3m_cell/omni2
name = "OMNI-II"
id = "ml3m_cell_omni2"
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/omni2
sort_string = "KVCCD"
//Tier 3
/datum/design/item/ml3m_cell/toxin2
name = "TOXIN-II"
id = "ml3m_cell_toxin2"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 1000, MAT_SILVER = 1000, MAT_DIAMOND = 500)
build_path = /obj/item/ammo_casing/microbattery/medical/toxin2
sort_string = "KVCDA"
/datum/design/item/ml3m_cell/haste
name = "HASTE"
id = "ml3m_cell_haste"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_GOLD = 1000, MAT_SILVER = 1000, MAT_DIAMOND = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/haste
sort_string = "KVCDB"
/datum/design/item/ml3m_cell/resist
name = "RESIST"
id = "ml3m_cell_resist"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_GOLD = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/resist
sort_string = "KVCDC"
/datum/design/item/ml3m_cell/corpse_mend
name = "CORPSE MEND"
id = "ml3m_cell_corpse_mend"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_PHORON = 3000, MAT_DIAMOND = 3000)
build_path = /obj/item/ammo_casing/microbattery/medical/corpse_mend
sort_string = "KVCDD"
//Tier 4
/datum/design/item/ml3m_cell/brute3
name = "BRUTE-III"
id = "ml3m_cell_brute3"
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_DIAMOND = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/brute3
sort_string = "KVCEA"
/datum/design/item/ml3m_cell/burn3
name = "BURN-III"
id = "ml3m_cell_burn3"
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_DIAMOND = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/burn3
sort_string = "KVCEB"
/datum/design/item/ml3m_cell/toxin3
name = "TOXIN-III"
id = "ml3m_cell_toxin3"
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_DIAMOND = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/toxin3
sort_string = "KVCEC"
/datum/design/item/ml3m_cell/omni3
name = "OMNI-III"
id = "ml3m_cell_omni3"
req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_DIAMOND = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/omni3
sort_string = "KVCED"
//Tierless
/datum/design/item/ml3m_cell/shrink
name = "SHRINK"
id = "ml3m_cell_shrink"
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 2000)
build_path = /obj/item/ammo_casing/microbattery/medical/shrink
sort_string = "KVCOA"
/datum/design/item/ml3m_cell/grow
name = "GROW"
id = "ml3m_cell_grow"
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 2000)
build_path = /obj/item/ammo_casing/microbattery/medical/grow
sort_string = "KVCOB"
/datum/design/item/ml3m_cell/normalsize
name = "NORMALSIZE"
id = "ml3m_cell_normalsize"
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 2000)
build_path = /obj/item/ammo_casing/microbattery/medical/normalsize
sort_string = "KVCOC"
@@ -1,73 +0,0 @@
/datum/design/item/weapon/mining/AssembleDesignName()
..()
name = "Mining equipment design ([item_name])"
// Mining digging devices
/datum/design/item/weapon/mining/drill
id = "drill"
req_tech = list(TECH_MATERIAL = 1, TECH_POWER = 2, TECH_ENGINEERING = 1)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 500) //expensive, but no need for miners.
build_path = /obj/item/pickaxe/drill
sort_string = "FAAAA"
/datum/design/item/weapon/mining/advdrill
id = "advanced_drill"
req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 1000) //expensive, but no need for miners.
build_path = /obj/item/pickaxe/advdrill
sort_string = "FAAAB"
/datum/design/item/weapon/mining/jackhammer
id = "jackhammer"
req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_SILVER = 500)
build_path = /obj/item/pickaxe/jackhammer
sort_string = "FAAAC"
/datum/design/item/weapon/mining/plasmacutter
id = "plasmacutter"
req_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 3, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 1500, MAT_GLASS = 500, MAT_GOLD = 500, MAT_PHORON = 500)
build_path = /obj/item/pickaxe/plasmacutter
sort_string = "FAAAD"
/datum/design/item/weapon/mining/pick_diamond
id = "pick_diamond"
req_tech = list(TECH_MATERIAL = 6)
materials = list(MAT_DIAMOND = 3000)
build_path = /obj/item/pickaxe/diamond
sort_string = "FAAAE"
/datum/design/item/weapon/mining/drill_diamond
id = "drill_diamond"
req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 4, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 2000)
build_path = /obj/item/pickaxe/diamonddrill
sort_string = "FAAAF"
// Mining other equipment
/datum/design/item/weapon/mining/depth_scanner
desc = "Used to check spatial depth and density of rock outcroppings."
id = "depth_scanner"
req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 1000,MAT_GLASS = 1000)
build_path = /obj/item/depth_scanner
sort_string = "FBAAA"
/datum/design/item/weapon/mining/mining_scanner
id = "mining_scanner"
req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 1)
materials = list(MAT_STEEL = 1000,MAT_GLASS = 500)
build_path = /obj/item/mining_scanner/advanced
sort_string = "FBAAB"
/datum/design/item/weapon/mining/upgradeAOE
name = "Mining Explosion Upgrade"
desc = "An area of effect upgrade for the Proto-Kinetic Accelerator."
id = "pka_mineaoe"
req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 8, TECH_ENGINEERING = 7) // Lets make this endgame level tech, due to it's power.
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 500, MAT_GOLD = 500, MAT_URANIUM = 2000, MAT_PHORON = 2000)
build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
sort_string = "FAAF"
-179
View File
@@ -1,179 +0,0 @@
// Everything that didn't fit elsewhere
/datum/design/item/general/AssembleDesignName()
..()
name = "General purpose design ([item_name])"
/datum/design/item/general/communicator
name = "Communicator"
id = "communicator"
req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2)
materials = list(MAT_STEEL = 500, MAT_GLASS = 500)
build_path = /obj/item/communicator
sort_string = "TAAAA"
/datum/design/item/general/laserpointer
name = "laser pointer"
desc = "Don't shine it in your eyes!"
id = "laser_pointer"
req_tech = list(TECH_MAGNET = 3)
materials = list(MAT_STEEL = 100, MAT_GLASS = 50)
build_path = /obj/item/laser_pointer
sort_string = "TAABA"
/datum/design/item/general/translator
name = "handheld translator"
id = "translator"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 3000)
build_path = /obj/item/universal_translator
sort_string = "TAACA"
/datum/design/item/general/ear_translator
name = "earpiece translator"
id = "ear_translator"
req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5) //It's been hella miniaturized.
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000, MAT_GOLD = 1000)
build_path = /obj/item/universal_translator/ear
sort_string = "TAACB"
/datum/design/item/general/light_replacer
name = "Light replacer"
desc = "A device to automatically replace lights. Refill with working lightbulbs."
id = "light_replacer"
req_tech = list(TECH_MAGNET = 3, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000)
build_path = /obj/item/lightreplacer
sort_string = "TAADA"
/datum/design/item/general/binaryencrypt
name = "Binary encryption key"
desc = "Allows for deciphering the binary channel on-the-fly."
id = "binaryencrypt"
req_tech = list(TECH_ILLEGAL = 2)
materials = list(MAT_STEEL = 300, MAT_GLASS = 300)
build_path = /obj/item/encryptionkey/binary
sort_string = "TBAAA"
/datum/design/item/general/chameleon
name = "Holographic equipment kit"
desc = "A kit of dangerous, high-tech equipment with changeable looks."
id = "chameleon"
req_tech = list(TECH_ILLEGAL = 2)
materials = list(MAT_STEEL = 500)
build_path = /obj/item/storage/box/syndie_kit/chameleon
sort_string = "TBAAB"
/datum/design/item/general/bsflare
name = "bluespace flare"
desc = "A marker that can be detected by shuttle landing systems."
id = "bsflare"
req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 4)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_SILVER = 2000)
build_path = /obj/item/spaceflare
sort_string = "TBAAC"
/datum/design/item/general/riflescope
name = "rifle scope"
desc = "A scope that can be mounted to certain rifles."
id = "riflescope"
req_tech = list(TECH_ILLEGAL = 2, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/binoculars/scope
sort_string = "TBAAD"
/datum/design/item/general/advmop
name = "advanced mop"
desc = "An advanced mop with pressured water jets that break away the toughest stains."
id = "advmop"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 5, TECH_BIO = 1)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 2000, MAT_GOLD = 1000)
build_path = /obj/item/mop/advanced
sort_string = "TBAAE"
/datum/design/item/general/hyperfiber_jumpsuit
name = "HYPER jumpsuit"
id = "hfjumpsuit"
req_tech = list(TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000)
build_path = /obj/item/clothing/under/hyperfiber
sort_string = "TAVAA"
/datum/design/item/general/bluespace_jumpsuit
name = "Bluespace jumpsuit"
id = "bsjumpsuit"
req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/clothing/under/hyperfiber/bluespace
sort_string = "TAVAB"
/datum/design/item/general/sizegun
name = "Size gun"
id = "sizegun"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 2000)
build_path = /obj/item/gun/energy/sizegun
sort_string = "TAVBA"
/datum/design/item/general/sizegun_gradual
name = "Gradual size gun"
id = "gradsizegun"
req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 2000)
build_path = /obj/item/slow_sizegun
sort_string = "TAVBB"
/datum/design/item/general/bluespace_collar
name = "Bluespace collar"
id = "bluespacecollar"
req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000)
build_path = /obj/item/clothing/accessory/collar/shock/bluespace
sort_string = "TAVBC"
/datum/design/item/general/bodysnatcher
name = "Body Snatcher"
id = "bodysnatcher"
req_tech = list(TECH_MAGNET = 3, TECH_BIO = 3, TECH_ILLEGAL = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000, MAT_URANIUM = 2000)
build_path = /obj/item/bodysnatcher
sort_string = "TBVAA"
/datum/design/item/general/inducer_sci
name = "Inducer (Scientific)"
id = "inducersci"
req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 5, TECH_POWER = 6)
materials = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_PHORON = 4000)
build_path = /obj/item/inducer/sci
sort_string = "TCVAA"
/datum/design/item/general/inducer_eng
name = "Inducer (Industrial)"
id = "inducerind"
req_tech = list(TECH_BLUESPACE = 5, TECH_MATERIAL = 7, TECH_POWER = 7)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 2000)
build_path = /obj/item/inducer/unloaded
sort_string = "TCVAB"
/datum/design/item/general/walkpod
name = "PodZu Music Player"
id = "walkpod"
req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000)
build_path = /obj/item/walkpod
sort_string = "TCVAD"
/datum/design/item/general/juke_remote
name = "BoomTown Cordless Speaker"
id = "juke_remote"
req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 1)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000, MAT_URANIUM = 2000)
build_path = /obj/item/juke_remote
sort_string = "TCVAE"
/datum/design/item/general/motion_tracker
name = "Motion Tracker"
id = "motion_tracker"
req_tech = list(TECH_MAGNET = 1, TECH_DATA = 2)
build_path = /obj/item/motiontracker
sort_string = "TAADC"
-100
View File
@@ -1,100 +0,0 @@
// PDA
/datum/design/item/general/pda
name = "PDA"
desc = "Cheaper than whiny non-digital assistants."
id = "pda"
req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3)
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
build_path = /obj/item/pda
sort_string = "WAAAA"
// Cartridges
/datum/design/item/pda_cartridge
req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3)
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
/datum/design/item/pda_cartridge/AssembleDesignName()
..()
name = "PDA accessory ([item_name])"
/datum/design/item/pda_cartridge/cart_basic
id = "cart_basic"
build_path = /obj/item/cartridge
sort_string = "WBAAA"
/datum/design/item/pda_cartridge/engineering
id = "cart_engineering"
build_path = /obj/item/cartridge/engineering
sort_string = "WBAAB"
/datum/design/item/pda_cartridge/atmos
id = "cart_atmos"
build_path = /obj/item/cartridge/atmos
sort_string = "WBAAC"
/datum/design/item/pda_cartridge/medical
id = "cart_medical"
build_path = /obj/item/cartridge/medical
sort_string = "WBAAD"
/datum/design/item/pda_cartridge/chemistry
id = "cart_chemistry"
build_path = /obj/item/cartridge/chemistry
sort_string = "WBAAE"
/datum/design/item/pda_cartridge/security
id = "cart_security"
build_path = /obj/item/cartridge/security
sort_string = "WBAAF"
/datum/design/item/pda_cartridge/janitor
id = "cart_janitor"
build_path = /obj/item/cartridge/janitor
sort_string = "WBAAG"
/datum/design/item/pda_cartridge/science
id = "cart_science"
build_path = /obj/item/cartridge/signal/science
sort_string = "WBAAH"
/datum/design/item/pda_cartridge/quartermaster
id = "cart_quartermaster"
build_path = /obj/item/cartridge/quartermaster
sort_string = "WBAAI"
/datum/design/item/pda_cartridge/head
id = "cart_head"
build_path = /obj/item/cartridge/head
sort_string = "WBAAJ"
/datum/design/item/pda_cartridge/hop
id = "cart_hop"
build_path = /obj/item/cartridge/hop
sort_string = "WBAAK"
/datum/design/item/pda_cartridge/hos
id = "cart_hos"
build_path = /obj/item/cartridge/hos
sort_string = "WBAAL"
/datum/design/item/pda_cartridge/ce
id = "cart_ce"
build_path = /obj/item/cartridge/ce
sort_string = "WBAAM"
/datum/design/item/pda_cartridge/cmo
id = "cart_cmo"
build_path = /obj/item/cartridge/cmo
sort_string = "WBAAN"
/datum/design/item/pda_cartridge/rd
id = "cart_rd"
build_path = /obj/item/cartridge/rd
sort_string = "WBAAO"
/datum/design/item/pda_cartridge/captain
id = "cart_captain"
build_path = /obj/item/cartridge/captain
sort_string = "WBAAP"
@@ -1,88 +0,0 @@
/datum/design/item/powercell
build_type = PROTOLATHE | MECHFAB
/datum/design/item/powercell/AssembleDesignName()
name = "Power Cell Model ([item_name])"
/datum/design/item/powercell/AssembleDesignDesc()
if(build_path)
var/obj/item/cell/C = build_path
desc = "Allows the construction of power cells that can hold [initial(C.maxcharge)] units of energy."
/datum/design/item/powercell/Fabricate()
var/obj/item/cell/C = ..()
C.charge = 0 //shouldn't produce power out of thin air.
C.update_icon()
return C
/datum/design/item/powercell/basic
name = "basic"
id = "basic_cell"
req_tech = list(TECH_POWER = 1)
materials = list(MAT_STEEL = 700, MAT_GLASS = 50)
build_path = /obj/item/cell
category = list("Misc")
sort_string = "BAAAA"
/datum/design/item/powercell/high
name = "high-capacity"
id = "high_cell"
req_tech = list(TECH_POWER = 2)
materials = list(MAT_STEEL = 700, MAT_GLASS = 60)
build_path = /obj/item/cell/high
category = list("Misc")
sort_string = "BAAAB"
/datum/design/item/powercell/super
name = "super-capacity"
id = "super_cell"
req_tech = list(TECH_POWER = 3, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 700, MAT_GLASS = 70)
build_path = /obj/item/cell/super
category = list("Misc")
sort_string = "BAAAC"
/datum/design/item/powercell/hyper
name = "hyper-capacity"
id = "hyper_cell"
req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 400, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 70)
build_path = /obj/item/cell/hyper
category = list("Misc")
sort_string = "BAAAD"
/datum/design/item/powercell/device
name = "device"
build_type = PROTOLATHE
id = "device"
materials = list(MAT_STEEL = 350, MAT_GLASS = 25)
build_path = /obj/item/cell/device
category = list("Misc")
sort_string = "BAABA"
/datum/design/item/powercell/weapon
name = "weapon"
build_type = PROTOLATHE
id = "weapon"
materials = list(MAT_STEEL = 700, MAT_GLASS = 50)
build_path = /obj/item/cell/device/weapon
category = list("Misc")
sort_string = "BAABB"
/datum/design/item/powercell/mecha/high
name = "high-capacity mecha"
id = "high_mech_cell"
req_tech = list(TECH_POWER = 3, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 600, MAT_SILVER = 150, MAT_GLASS = 70)
build_path = /obj/item/cell/mech/high
category = list("Misc")
sort_string = "BAACA"
/datum/design/item/powercell/mecha/super
name = "super-capacity mecha"
id = "super_mech_cell"
req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 500, MAT_GOLD = 200, MAT_SILVER = 200, MAT_GLASS = 80)
build_path = /obj/item/cell/mech/super
category = list("Misc")
sort_string = "BAACB"
@@ -1,93 +0,0 @@
//Anomaly
/datum/design/item/anomaly/AssembleDesignName()
..()
name = "Anomalous prototype ([item_name])"
/datum/design/item/anomaly/AssembleDesignDesc()
if(!desc)
if(build_path)
var/obj/item/I = build_path
desc = initial(I.desc)
..()
/datum/design/item/anomaly/camotrap
name = "Chameleon Trap"
desc = "A self-miraging mechanical trap, capable of producing short bursts of electric current when triggered."
id = "hunt_trap"
materials = list(MAT_DURASTEEL = 3000, MAT_METALHYDROGEN = 1000, MAT_PHORON = 2000)
req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_PHORON = 2, TECH_ARCANE = 2)
build_path = /obj/item/beartrap/hunting
sort_string = "ZAAAA"
// Precursor
/datum/design/item/precursor/AssembleDesignName()
..()
name = "Alien prototype ([item_name])"
/datum/design/item/precursor/AssembleDesignDesc()
if(!desc)
if(build_path)
var/obj/item/I = build_path
desc = initial(I.desc)
..()
/datum/design/item/precursor/crowbar
name = "Hybrid Crowbar"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridcrowbar"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PRECURSOR = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_GOLD = 250, MAT_URANIUM = 2500)
build_path = /obj/item/tool/crowbar/hybrid
sort_string = "ZBAAA"
/datum/design/item/precursor/wrench
name = "Hybrid Wrench"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwrench"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_PRECURSOR = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_SILVER = 300, MAT_URANIUM = 2000)
build_path = /obj/item/tool/wrench/hybrid
sort_string = "ZBAAB"
/datum/design/item/precursor/screwdriver
name = "Hybrid Screwdriver"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridscrewdriver"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_PRECURSOR = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_DIAMOND = 2000)
build_path = /obj/item/tool/screwdriver/hybrid
sort_string = "ZBAAC"
/datum/design/item/precursor/wirecutters
name = "Hybrid Wirecutters"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwirecutters"
req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_PHORON = 2, TECH_PRECURSOR = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_PHORON = 2750, MAT_DIAMOND = 2000)
build_path = /obj/item/tool/wirecutters/hybrid
sort_string = "ZBAAD"
/datum/design/item/precursor/welder
name = "Hybrid Welding Tool"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwelder"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PHORON = 3, TECH_MAGNET = 5, TECH_PRECURSOR = 1)
materials = list(MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_METALHYDROGEN = 4750, MAT_URANIUM = 6000)
build_path = /obj/item/weldingtool/experimental/hybrid
sort_string = "ZBAAE"
/datum/design/item/precursor/janusmodule
name = "Blackbox Circuit Datamass"
desc = "A design that seems to be in a constantly shifting superposition."
id = "janus_module"
materials = list(MAT_DURASTEEL = 3000, MAT_MORPHIUM = 2000, MAT_METALHYDROGEN = 6000, MAT_URANIUM = 6000, MAT_VERDANTIUM = 1500)
req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1, TECH_PRECURSOR = 2)
build_path = /obj/random/janusmodule
sort_string = "ZBBAA"
/datum/design/item/precursor/janusmodule/Fabricate(var/newloc, var/fabricator)
var/type_to_spawn = pick(subtypesof(/obj/item/circuitboard/mecha/imperion))
return new type_to_spawn(newloc)
@@ -1,91 +0,0 @@
/*
This is a guide to sort strings and categorization of designs.
Its really helpful and neat-looking when items are sorted properly in general R&D list and not just haphazardly.
sort_string basically sorts items in alphabetic order, using sort_string itself as reference.
A - stock parts all always go first, and above everything else
AA - parts themselves
AAAA - matter bins
AAAB - micro manipulators
AAAC - capacitors
AAAD - scanners
AAAE - micro-lasers
AB - part replacer(s)
B - power cells
BAAA - regular power cells
BAAB - small power cells
C - Tech disks
D - GPS/beacons/locators/etc
DA - GPSs
DB - beacon/locator
DBAA - locator
DBAB - beacon
E - HUDs
F - Mining equipment
FA - drills
FB - scanners and such
G - Xenoarch equipment
H - Xenobiology equipment
HA - weapons
HB - other
I - Beakers
J - Biotech scanners and such
JAAA - mass spectrometers
JAAB - reagent scanners
JAAC - borg stuff
JAAD - plant stuff
K - Medical equipment
KA - surgery equipment
KAAA - scalpels/IMS
KAAB - bone clamp
KB - health analyzers
KC - misc
L - Implants
M - Weapons
MA - Ranged weapon
MAA - Energy ranged weapons
MAB - Ballistic ranged weapons
MABB - Ballistic ammo
MAC - Phase weapons
MAD - Other ranged weapons (darts/sprayer/fuelrod)
MADB - misc ammo
MB - Melee weapons
MC - grenade casings
N - Engineering equipment
NA - tools
NB - scanners
O, P - placeholders in case new category is needed
Q - Bags of Holding
R - Telecomms stock parts
S - AI-holders
SA - brain holders
SB - pAI
SC - intellicore
T - Misc stuff
TA - general
TB - illegal
U - Integrated circuits stuff
UA - printer
UB - upgrade disks
UC - tools
UD - holders
V - Modular computer parts
VA - hard drives
VB - network cards
VC - batteries
VD - cpus
VE - accessories without upgrades
VF - data crystals
W - PDA stuff
WA - PDA
WB - PDA cartridges
X, Y - more placeholders
Z - anomaly/precursor items
ZA - anomaly
ZB - precursor
ZBA - precursor tools
ZBB - precursor other
*/
@@ -1,278 +0,0 @@
/*
Various Stock Parts
*/
/datum/design/item/stock_part
build_type = PROTOLATHE
time = 3 //Sets an independent time for stock parts, currently one third normal print time.
/datum/design/item/stock_part/AssembleDesignName()
..()
name = "Component design ([item_name])"
/datum/design/item/stock_part/AssembleDesignDesc()
if(!desc)
desc = "A stock part used in the construction of various devices."
// Matter Bins
/datum/design/item/stock_part/basic_matter_bin
id = "basic_matter_bin"
req_tech = list(TECH_MATERIAL = 1)
materials = list(MAT_STEEL = 80)
build_path = /obj/item/stock_parts/matter_bin
sort_string = "AAAAA"
/datum/design/item/stock_part/adv_matter_bin
id = "adv_matter_bin"
req_tech = list(TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 80)
build_path = /obj/item/stock_parts/matter_bin/adv
sort_string = "AAAAB"
/datum/design/item/stock_part/super_matter_bin
id = "super_matter_bin"
req_tech = list(TECH_MATERIAL = 5)
materials = list(MAT_STEEL = 80)
build_path = /obj/item/stock_parts/matter_bin/super
sort_string = "AAAAC"
/datum/design/item/stock_part/hyper_matter_bin
id = "hyper_matter_bin"
req_tech = list(TECH_MATERIAL = 6, TECH_ARCANE = 2)
materials = list(MAT_STEEL = 200, MAT_VERDANTIUM = 60, MAT_DURASTEEL = 75)
build_path = /obj/item/stock_parts/matter_bin/hyper
sort_string = "AAAAD"
/datum/design/item/stock_part/omni_matter_bin
id = "omni_matter_bin"
req_tech = list(TECH_MATERIAL = 7, TECH_PRECURSOR = 2)
materials = list(MAT_STEEL = 2000, MAT_PLASTEEL = 100, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/matter_bin/omni
sort_string = "AAAAE"
// Micro-manipulators
/datum/design/item/stock_part/micro_mani
id = "micro_mani"
req_tech = list(TECH_MATERIAL = 1, TECH_DATA = 1)
materials = list(MAT_STEEL = 30)
build_path = /obj/item/stock_parts/manipulator
sort_string = "AAABA"
/datum/design/item/stock_part/nano_mani
id = "nano_mani"
req_tech = list(TECH_MATERIAL = 3, TECH_DATA = 2)
materials = list(MAT_STEEL = 30)
build_path = /obj/item/stock_parts/manipulator/nano
sort_string = "AAABB"
/datum/design/item/stock_part/pico_mani
id = "pico_mani"
req_tech = list(TECH_MATERIAL = 5, TECH_DATA = 2)
materials = list(MAT_STEEL = 30)
build_path = /obj/item/stock_parts/manipulator/pico
sort_string = "AAABC"
/datum/design/item/stock_part/hyper_mani
id = "hyper_mani"
req_tech = list(TECH_MATERIAL = 6, TECH_DATA = 3, TECH_ARCANE = 2)
materials = list(MAT_STEEL = 200, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 50)
build_path = /obj/item/stock_parts/manipulator/hyper
sort_string = "AAABD"
/datum/design/item/stock_part/omni_mani
id = "omni_mani"
req_tech = list(TECH_MATERIAL = 7, TECH_DATA = 4, TECH_PRECURSOR = 2)
materials = list(MAT_STEEL = 2000, MAT_PLASTEEL = 500, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/manipulator/omni
sort_string = "AAABE"
// Capacitors
/datum/design/item/stock_part/basic_capacitor
id = "basic_capacitor"
req_tech = list(TECH_POWER = 1)
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
build_path = /obj/item/stock_parts/capacitor
sort_string = "AAACA"
/datum/design/item/stock_part/adv_capacitor
id = "adv_capacitor"
req_tech = list(TECH_POWER = 3)
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
build_path = /obj/item/stock_parts/capacitor/adv
sort_string = "AAACB"
/datum/design/item/stock_part/super_capacitor
id = "super_capacitor"
req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 50, MAT_GLASS = 50, MAT_GOLD = 20)
build_path = /obj/item/stock_parts/capacitor/super
sort_string = "AAACC"
/datum/design/item/stock_part/hyper_capacitor
id = "hyper_capacitor"
req_tech = list(TECH_POWER = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 1, TECH_ARCANE = 1)
materials = list(MAT_STEEL = 200, MAT_GLASS = 100, MAT_VERDANTIUM = 30, MAT_DURASTEEL = 25)
build_path = /obj/item/stock_parts/capacitor/hyper
sort_string = "AAACD"
/datum/design/item/stock_part/omni_capacitor
id = "omni_capacitor"
req_tech = list(TECH_POWER = 7, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 2000, MAT_DIAMOND = 1000, MAT_GLASS = 1000, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/capacitor/omni
sort_string = "AAACE"
// Sensors
/datum/design/item/stock_part/basic_sensor
id = "basic_sensor"
req_tech = list(TECH_MAGNET = 1)
materials = list(MAT_STEEL = 50, MAT_GLASS = 20)
build_path = /obj/item/stock_parts/scanning_module
sort_string = "AAADA"
/datum/design/item/stock_part/adv_sensor
id = "adv_sensor"
req_tech = list(TECH_MAGNET = 3)
materials = list(MAT_STEEL = 50, MAT_GLASS = 20)
build_path = /obj/item/stock_parts/scanning_module/adv
sort_string = "AAADB"
/datum/design/item/stock_part/phasic_sensor
id = "phasic_sensor"
req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 50, MAT_GLASS = 20, MAT_SILVER = 10)
build_path = /obj/item/stock_parts/scanning_module/phasic
sort_string = "AAADC"
/datum/design/item/stock_part/hyper_sensor
id = "hyper_sensor"
req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 4, TECH_ARCANE = 1)
materials = list(MAT_STEEL = 50, MAT_GLASS = 20, MAT_SILVER = 50, MAT_VERDANTIUM = 40, MAT_DURASTEEL = 50)
build_path = /obj/item/stock_parts/scanning_module/hyper
sort_string = "AAADD"
/datum/design/item/stock_part/omni_sensor
id = "omni_sensor"
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 1000, MAT_PLASTEEL = 500, MAT_GLASS = 750, MAT_SILVER = 500, MAT_MORPHIUM = 60, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/scanning_module/omni
sort_string = "AAADE"
// Micro-lasers
/datum/design/item/stock_part/basic_micro_laser
id = "basic_micro_laser"
req_tech = list(TECH_MAGNET = 1)
materials = list(MAT_STEEL = 10, MAT_GLASS = 20)
build_path = /obj/item/stock_parts/micro_laser
sort_string = "AAAEA"
/datum/design/item/stock_part/high_micro_laser
id = "high_micro_laser"
req_tech = list(TECH_MAGNET = 3)
materials = list(MAT_STEEL = 10, MAT_GLASS = 20)
build_path = /obj/item/stock_parts/micro_laser/high
sort_string = "AAAEB"
/datum/design/item/stock_part/ultra_micro_laser
id = "ultra_micro_laser"
req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5)
materials = list(MAT_STEEL = 10, MAT_GLASS = 20, MAT_URANIUM = 10)
build_path = /obj/item/stock_parts/micro_laser/ultra
sort_string = "AAAEC"
/datum/design/item/stock_part/hyper_micro_laser
id = "hyper_micro_laser"
req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 6, TECH_ARCANE = 2)
materials = list(MAT_STEEL = 200, MAT_GLASS = 20, MAT_URANIUM = 30, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/micro_laser/hyper
sort_string = "AAAED"
/datum/design/item/stock_part/omni_micro_laser
id = "omni_micro_laser"
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 7, TECH_PRECURSOR = 2)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_URANIUM = 2000, MAT_MORPHIUM = 50, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/micro_laser/omni
sort_string = "AAAEE"
// part bundles, because i HATE queues and i don't want to rewrite it for stack-printing
/datum/design/item/stock_part/bundle/t1
id = "parts_bundle_t1"
req_tech = list(TECH_MATERIAL = 1, TECH_DATA = 1, TECH_POWER = 1, TECH_MAGNET = 1)
materials = list(MAT_STEEL = 1100, MAT_GLASS = 450)
build_path = /obj/effect/spawner/parts/t1
sort_string = "AAAFA"
/datum/design/item/stock_part/bundle/t2
id = "parts_bundle_t2"
req_tech = list(TECH_MATERIAL = 3, TECH_DATA = 2, TECH_POWER = 3, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 1100, MAT_GLASS = 450)
build_path = /obj/effect/spawner/parts/t2
sort_string = "AAAFB"
/datum/design/item/stock_part/bundle/t3
id = "parts_bundle_t3"
req_tech = list(TECH_MATERIAL = 5, TECH_DATA = 2, TECH_POWER = 5, TECH_MAGNET = 5)
materials = list(MAT_STEEL = 1100, MAT_GLASS = 450, MAT_SILVER = 50, MAT_GOLD = 100, MAT_URANIUM = 50)
build_path = /obj/effect/spawner/parts/t3
sort_string = "AAAFC"
/datum/design/item/stock_part/bundle/t4
id = "parts_bundle_t4"
req_tech = list(TECH_MATERIAL = 6, TECH_DATA = 3, TECH_POWER = 6, TECH_MAGNET = 6, TECH_ARCANE = 2)
materials = list(MAT_STEEL = 4250, MAT_GLASS = 700, MAT_SILVER = 250, MAT_URANIUM = 150, MAT_DURASTEEL = 1450, MAT_VERDANTIUM = 900)
build_path = /obj/effect/spawner/parts/t4
sort_string = "AAAFD"
/datum/design/item/stock_part/bundle/t5
id = "parts_bundle_t5"
req_tech = list(TECH_MATERIAL = 7, TECH_DATA = 4, TECH_POWER = 7, TECH_MAGNET = 7, TECH_PRECURSOR = 2)
materials = list(MAT_STEEL = 45000, MAT_PLASTEEL = 5500, MAT_GLASS = 11250, MAT_SILVER = 2500, MAT_URANIUM = 10000, MAT_DIAMOND = 5000, MAT_DURASTEEL = 2500, MAT_MORPHIUM = 2050)
build_path = /obj/effect/spawner/parts/t5
sort_string = "AAAFE"
// RPEDs
/datum/design/item/stock_part/RPED
name = "Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
id = "rped"
req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 15000, MAT_GLASS = 5000)
build_path = /obj/item/storage/part_replacer
sort_string = "ABAAA"
/datum/design/item/stock_part/ARPED
name = "Advanced Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a greatly upgraded storage capacity, \
and the ability to manipulate beakers."
id = "arped"
req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 5)
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000)
build_path = /obj/item/storage/part_replacer/adv
sort_string = "ABAAB"
/datum/design/item/stock_part/PBRPED
name = "Prototype Bluespace Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a remarkably upgraded storage capacity, \
and the ability to manipulate beakers."
id = "pbrped"
req_tech = list(TECH_ENGINEERING = 7, TECH_MATERIAL = 7, TECH_BLUESPACE = 5)
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000, MAT_SILVER = 5000, MAT_GOLD = 5000, MAT_DIAMOND = 1000)
build_path = /obj/item/storage/part_replacer/adv/discount_bluespace
sort_string = "ABAAB"
/datum/design/item/stock_part/BRPED
name = "Bluespace Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a remarkably upgraded storage capacity, \
the ability to manipulate beakers, and works at range."
id = "brped"
req_tech = list(TECH_ENGINEERING = 7, TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000, MAT_SILVER = 5000, MAT_GOLD = 5000, MAT_DIAMOND = 1000)
build_path = /obj/item/storage/part_replacer/adv/bluespace
sort_string = "ABAAB"
@@ -1,54 +0,0 @@
// Telecomm parts
/datum/design/item/stock_part/subspace/AssembleDesignName()
..()
name = "Subspace component design ([item_name])"
/datum/design/item/stock_part/subspace/subspace_ansible
id = "s-ansible"
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 80, MAT_SILVER = 20)
build_path = /obj/item/stock_parts/subspace/ansible
sort_string = "RAAAA"
/datum/design/item/stock_part/subspace/hyperwave_filter
id = "s-filter"
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 40, MAT_SILVER = 10)
build_path = /obj/item/stock_parts/subspace/sub_filter
sort_string = "RAAAB"
/datum/design/item/stock_part/subspace/subspace_amplifier
id = "s-amplifier"
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 10, MAT_GOLD = 30, MAT_URANIUM = 15)
build_path = /obj/item/stock_parts/subspace/amplifier
sort_string = "RAAAC"
/datum/design/item/stock_part/subspace/subspace_treatment
id = "s-treatment"
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 10, MAT_SILVER = 20)
build_path = /obj/item/stock_parts/subspace/treatment
sort_string = "RAAAD"
/datum/design/item/stock_part/subspace/subspace_analyzer
id = "s-analyzer"
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 10, MAT_GOLD = 15)
build_path = /obj/item/stock_parts/subspace/analyzer
sort_string = "RAAAE"
/datum/design/item/stock_part/subspace/subspace_crystal
id = "s-crystal"
req_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_GLASS = 1000, MAT_SILVER = 20, MAT_GOLD = 20)
build_path = /obj/item/stock_parts/subspace/crystal
sort_string = "RAAAF"
/datum/design/item/stock_part/subspace/subspace_transmitter
id = "s-transmitter"
req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5, TECH_BLUESPACE = 3)
materials = list(MAT_GLASS = 100, MAT_SILVER = 10, MAT_URANIUM = 15)
build_path = /obj/item/stock_parts/subspace/transmitter
sort_string = "RAAAG"
@@ -1,21 +0,0 @@
/datum/design/item/disk/AssembleDesignName()
..()
name = "Data storage design ([name])"
/datum/design/item/disk/design_disk
name = "Design Storage Disk"
desc = "Produce additional disks for storing device designs."
id = "design_disk"
req_tech = list(TECH_DATA = 1)
materials = list(MAT_STEEL = 30, MAT_GLASS = 10)
build_path = /obj/item/disk/design_disk
sort_string = "CAAAA"
/datum/design/item/disk/tech_disk
name = "Technology Data Storage Disk"
desc = "Produce additional disks for storing technology data."
id = "tech_disk"
req_tech = list(TECH_DATA = 1)
materials = list(MAT_STEEL = 30, MAT_GLASS = 10)
build_path = /obj/item/disk/tech_disk
sort_string = "CAAAB"
@@ -1,69 +0,0 @@
/* Uncomment if someone makes these buildable
/datum/design/circuit/general_alert
name = "general alert console"
id = "general_alert"
build_path = /obj/item/circuitboard/general_alert
// Removal of loyalty implants. Can't think of a way to add this to the config option.
/datum/design/item/implant/loyalty
name = "loyalty"
id = "implant_loyal"
req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3)
materials = list(MAT_STEEL = 7000, MAT_GLASS = 7000)
build_path = /obj/item/implantcase/loyalty"
/datum/design/rust_core_control
name = "Circuit Design (RUST core controller)"
desc = "Allows for the construction of circuit boards used to build a core control console for the RUST fusion engine."
id = "rust_core_control"
req_tech = list("programming" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000, REAGENT_ID_SACID = 20)
build_path = "/obj/item/circuitboard/rust_core_control"
/datum/design/rust_fuel_control
name = "Circuit Design (RUST fuel controller)"
desc = "Allows for the construction of circuit boards used to build a fuel injector control console for the RUST fusion engine."
id = "rust_fuel_control"
req_tech = list("programming" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000, REAGENT_ID_SACID = 20)
build_path = "/obj/item/circuitboard/rust_fuel_control"
/datum/design/rust_fuel_port
name = "Internal circuitry (RUST fuel port)"
desc = "Allows for the construction of circuit boards used to build a fuel injection port for the RUST fusion engine."
id = "rust_fuel_port"
req_tech = list("engineering" = 4, "materials" = 5)
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000, REAGENT_ID_SACID = 20, MAT_URANIUM = 3000)
build_path = "/obj/item/module/rust_fuel_port"
/datum/design/rust_fuel_compressor
name = "Circuit Design (RUST fuel compressor)"
desc = "Allows for the construction of circuit boards used to build a fuel compressor of the RUST fusion engine."
id = "rust_fuel_compressor"
req_tech = list("materials" = 6, "phorontech" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000, REAGENT_ID_SACID = 20, MAT_PHORON = 3000, MAT_DIAMOND = 1000)
build_path = "/obj/item/module/rust_fuel_compressor"
/datum/design/rust_core
name = "Internal circuitry (RUST tokamak core)"
desc = "The circuit board that for a RUST-pattern tokamak fusion core."
id = "pacman"
req_tech = list(bluespace = 3, phorontech = 4, magnets = 5, powerstorage = 6)
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000, REAGENT_ID_SACID = 20, MAT_PHORON = 3000, MAT_DIAMOND = 2000)
build_path = "/obj/item/circuitboard/rust_core"
/datum/design/rust_injector
name = "Internal circuitry (RUST tokamak core)"
desc = "The circuit board that for a RUST-pattern particle accelerator."
id = "pacman"
req_tech = list(powerstorage = 3, engineering = 4, phorontech = 4, materials = 6)
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000, REAGENT_ID_SACID = 20, MAT_PHORON = 3000, MAT_URANIUM = 2000)
build_path = "/obj/item/circuitboard/rust_core"
*/
-264
View File
@@ -1,264 +0,0 @@
/datum/design/item/weapon/AssembleDesignName()
..()
name = "Weapon prototype ([item_name])"
/datum/design/item/weapon/ammo/AssembleDesignName()
..()
name = "Weapon ammo prototype ([item_name])"
/datum/design/item/weapon/AssembleDesignDesc()
if(!desc)
if(build_path)
var/obj/item/I = build_path
desc = initial(I.desc)
..()
// Energy weapons
/datum/design/item/weapon/energy/AssembleDesignName()
..()
name = "Energy weapon prototype ([item_name])"
/datum/design/item/weapon/energy/stunrevolver
id = "stunrevolver"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/gun/energy/stunrevolver
sort_string = "MAAAA"
/datum/design/item/weapon/energy/nuclear_gun
id = "nuclear_gun"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_POWER = 3)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_URANIUM = 500)
build_path = /obj/item/gun/energy/gun/nuclear
sort_string = "MAAAB"
/datum/design/item/weapon/energy/phoronpistol
id = "ppistol"
req_tech = list(TECH_COMBAT = 5, TECH_PHORON = 4)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_PHORON = 3000)
build_path = /obj/item/gun/energy/toxgun
sort_string = "MAAAC"
/datum/design/item/weapon/energy/lasercannon
desc = "The lasing medium of this prototype is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core."
id = "lasercannon"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
materials = list(MAT_STEEL = 10000, MAT_GLASS = 1000, MAT_DIAMOND = 2000)
build_path = /obj/item/gun/energy/lasercannon
sort_string = "MAAAD"
/datum/design/item/weapon/energy/decloner
id = "decloner"
req_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 7, TECH_BIO = 5, TECH_POWER = 6)
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000)
build_path = /obj/item/gun/energy/decloner
sort_string = "MAAAE"
/datum/design/item/weapon/energy/temp_gun
desc = "A gun that shoots high-powered glass-encased energy temperature bullets."
id = "temp_gun"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000)
build_path = /obj/item/gun/energy/temperature
sort_string = "MAAAF"
/datum/design/item/weapon/energy/flora_gun
id = "flora_gun"
req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_URANIUM = 500)
build_path = /obj/item/gun/energy/floragun
sort_string = "MAAAG"
/datum/design/item/weapon/energy/vinstunrevolver
id = "vinstunrevolver"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/gun/energy/stunrevolver/vintage
sort_string = "MAAAH"
// Ballistic weapons
/datum/design/item/weapon/ballistic/AssembleDesignName()
..()
name = "Ballistic weapon prototype ([item_name])"
/datum/design/item/weapon/ballistic/advanced_smg
id = "smg"
desc = "An advanced 9mm SMG with a reflective laser optic."
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 8000, MAT_SILVER = 2000, MAT_DIAMOND = 1000)
build_path = /obj/item/gun/projectile/automatic/advanced_smg
sort_string = "MABAA"
// Ballistic ammo
/datum/design/item/weapon/ballistic/ammo/AssembleDesignName()
..()
name = "Ballistic weapon ammo prototype ([name])"
/datum/design/item/weapon/ballistic/ammo/ammo_9mmAdvanced
name = "9mm magazine"
id = "ammo_9mm"
desc = "A 21 round magazine for an advanced 9mm SMG."
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 3750, MAT_SILVER = 100) // Requires silver for proprietary magazines! Or something.
build_path = /obj/item/ammo_magazine/m9mmAdvanced
sort_string = "MABBA"
/datum/design/item/weapon/ballistic/ammo/stunshell
name = "stun shells"
desc = "A stunning shell for a shotgun."
id = "stunshell"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/ammo_magazine/ammo_box/b12g/stunshell
sort_string = "MABBB"
/datum/design/item/weapon/ballistic/ammo/empshell
name = "emp shells"
desc = "An electromagnetic shell for a shotgun."
id = "empshell"
req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 4000, MAT_URANIUM = 1000)
build_path = /obj/item/ammo_magazine/ammo_box/b12g/emp
sort_string = "MABBC"
// Phase weapons
/datum/design/item/weapon/phase/AssembleDesignName()
..()
name = "Phase weapon prototype ([item_name])"
/* //VOREStation Removal Start
/datum/design/item/weapon/phase/phase_pistol
id = "phasepistol"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/gun/energy/phasegun/pistol
sort_string = "MACAA"
/datum/design/item/weapon/phase/phase_carbine
id = "phasecarbine"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 1500)
build_path = /obj/item/gun/energy/phasegun
sort_string = "MACAB"
/datum/design/item/weapon/phase/phase_rifle
id = "phaserifle"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
materials = list(MAT_STEEL = 7000, MAT_GLASS = 2000, MAT_SILVER = 500)
build_path = /obj/item/gun/energy/phasegun/rifle
sort_string = "MACAC"
/datum/design/item/weapon/phase/phase_cannon
id = "phasecannon"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4, TECH_POWER = 4)
materials = list(MAT_STEEL = 10000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 750)
build_path = /obj/item/gun/energy/phasegun/cannon
sort_string = "MACAD"
*/ //VOREStation Removal End
// Other weapons
/datum/design/item/weapon/rapidsyringe
id = "rapidsyringe"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000)
build_path = /obj/item/gun/launcher/syringe/rapid
sort_string = "MADAA"
/datum/design/item/weapon/dartgun
desc = "A gun that fires small hollow chemical-payload darts."
id = "dartgun_r"
req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_BIO = 4, TECH_MAGNET = 3, TECH_ILLEGAL = 1)
materials = list(MAT_STEEL = 5000, MAT_GOLD = 5000, MAT_SILVER = 2500, MAT_GLASS = 750)
build_path = /obj/item/gun/projectile/dartgun/research
sort_string = "MADAB"
/datum/design/item/weapon/chemsprayer
desc = "An advanced chem spraying device."
id = "chemsprayer"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000)
build_path = /obj/item/reagent_containers/spray/chemsprayer
sort_string = "MADAC"
/datum/design/item/weapon/fuelrod
id = "fuelrod_gun"
req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 5)
materials = list(MAT_STEEL = 10000, MAT_GLASS = 2000, MAT_GOLD = 500, MAT_SILVER = 500, MAT_URANIUM = 1000, MAT_PHORON = 3000, MAT_DIAMOND = 1000)
build_path = /obj/item/gun/magnetic/fuelrod
sort_string = "MADAD"
// Ammo for those
/datum/design/item/weapon/ammo/dartgunmag_small
id = "dartgun_mag_s"
req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1)
materials = list(MAT_STEEL = 300, MAT_GOLD = 100, MAT_SILVER = 100, MAT_GLASS = 300)
build_path = /obj/item/ammo_magazine/chemdart/small
sort_string = "MADBA"
/datum/design/item/weapon/ammo/dartgun_ammo_small
id = "dartgun_ammo_s"
req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1)
materials = list(MAT_STEEL = 50, MAT_GOLD = 30, MAT_SILVER = 30, MAT_GLASS = 50)
build_path = /obj/item/ammo_casing/chemdart/small
sort_string = "MADBB"
/datum/design/item/weapon/ammo/dartgunmag_med
id = "dartgun_mag_m"
req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1)
materials = list(MAT_STEEL = 500, MAT_GOLD = 150, MAT_SILVER = 150, MAT_DIAMOND = 200, MAT_GLASS = 400)
build_path = /obj/item/ammo_magazine/chemdart
sort_string = "MADBC"
/datum/design/item/weapon/ammo/dartgun_ammo_med
id = "dartgun_ammo_m"
req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1)
materials = list(MAT_STEEL = 80, MAT_GOLD = 40, MAT_SILVER = 40, MAT_GLASS = 60)
build_path = /obj/item/ammo_casing/chemdart
sort_string = "MADBD"
/datum/design/item/weapon/ammo/flechette
id = "magnetic_ammo"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4, TECH_MAGNET = 4)
materials = list(MAT_STEEL = 500, MAT_GOLD = 300, MAT_GLASS = 150, MAT_PHORON = 100)
build_path = /obj/item/magnetic_ammo
sort_string = "MADBE"
// Melee weapons
/datum/design/item/weapon/melee/AssembleDesignName()
..()
name = "Melee weapon prototype ([item_name])"
/datum/design/item/weapon/melee/esword
name = "Portable Energy Blade"
id = "chargesword"
req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 4, TECH_ARCANE = 1)
materials = list(MAT_PLASTEEL = 3500, MAT_GLASS = 1000, MAT_LEAD = 2250, MAT_METALHYDROGEN = 500)
build_path = /obj/item/melee/energy/sword/charge
sort_string = "MBAAA"
/datum/design/item/weapon/melee/eaxe
name = "Energy Axe"
id = "chargeaxe"
req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_ENGINEERING = 4, TECH_ILLEGAL = 4)
materials = list(MAT_PLASTEEL = 3500, MAT_OSMIUM = 2000, MAT_LEAD = 2000, MAT_METALHYDROGEN = 500)
build_path = /obj/item/melee/energy/axe/charge
sort_string = "MBAAB"
// Grenade stuff
/datum/design/item/weapon/grenade/AssembleDesignName()
..()
name = "Grenade casing prototype ([item_name])"
/datum/design/item/weapon/grenade/large_grenade
id = "large_Grenade"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 3000)
build_path = /obj/item/grenade/chem_grenade/large
sort_string = "MCAAA"
-174
View File
@@ -1,174 +0,0 @@
/*
MAU - AP weapons
MAV - cell-loaded weapons
MAVA - weapon
MAVB - cartridge
MAVC - cells
*/
// Energy Weapons
/datum/design/item/weapon/energy/protector
desc = "The 'Protector' is an advanced energy gun that cannot be fired in lethal mode on low security alert levels, but features DNA locking and a powerful stun."
id = "protector"
req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000)
build_path = /obj/item/gun/energy/gun/protector
sort_string = "MAAVA"
/datum/design/item/weapon/energy/sickshot
desc = "A 'Sickshot' is a 4-shot energy revolver that causes nausea and confusion."
id = "sickshot"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_MAGNET = 2)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 2000)
build_path = /obj/item/gun/energy/sickshot
sort_string = "MAAVB"
/datum/design/item/weapon/energy/netgun
desc = "The \"Varmint Catcher\" is an energy net projector designed to immobilize dangerous wildlife."
id = "netgun"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 3000)
build_path = /obj/item/gun/energy/netgun
sort_string = "MAAVC"
// Misc weapons
/datum/design/item/weapon/pummeler
desc = "With the 'Pummeler', punt anyone you don't like out of the room!"
id = "pummeler"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_MAGNET = 5)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 3000, MAT_URANIUM = 1000)
build_path = /obj/item/gun/energy/pummeler
sort_string = "MADVA"
// Anti-particle stuff
/datum/design/item/weapon/particle/AssembleDesignName()
..()
name = "Anti-particle weapon prototype ([item_name])"
/datum/design/item/weapon/particle/advparticle
name = "Advanced anti-particle rifle"
id = "advparticle"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 5, TECH_POWER = 3, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_URANIUM = 750)
build_path = /obj/item/gun/energy/particle/advanced
sort_string = "MAAUA"
/datum/design/item/weapon/particle/particlecannon
name = "Anti-particle cannon"
id = "particlecannon"
req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4)
materials = list(MAT_STEEL = 10000, MAT_GLASS = 1500, MAT_GOLD = 2000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000)
build_path = /obj/item/gun/energy/particle/cannon
sort_string = "MAAUB"
/datum/design/item/weapon/particle/pressureinterlock
name = "APP pressure interlock"
id = "pressureinterlock"
req_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 1000, MAT_GLASS = 250)
build_path = /obj/item/pressurelock
sort_string = "MAAUC"
// NSFW gun and cells
/datum/design/item/weapon/cell_based/AssembleDesignName()
..()
name = "Cell-based weapon prototype ([item_name])"
/datum/design/item/weapon/cell_based/prototype_nsfw
name = "cell-loaded revolver"
id = "nsfw_prototype"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7)
materials = list(MAT_STEEL = 10000, MAT_GLASS = 6000, MAT_PHORON = 8000, MAT_URANIUM = 4000)
build_path = /obj/item/gun/projectile/cell_loaded/combat/prototype
sort_string = "MAVAA"
/datum/design/item/weapon/cell_based/prototype_nsfw_mag
name = "combat cell magazine"
id = "nsfw_mag_prototype"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7)
materials = list(MAT_STEEL = 8000, MAT_GLASS = 4000, MAT_PHORON = 4000)
build_path = /obj/item/ammo_magazine/cell_mag/combat/prototype
sort_string = "MAVBA"
/datum/design/item/nsfw_cell/AssembleDesignName()
..()
name = "Microbattery prototype ([name])"
/datum/design/item/nsfw_cell/stun
name = "STUN"
id = "nsfw_cell_stun"
req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 3)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/ammo_casing/microbattery/combat/stun
sort_string = "MAVCA"
/datum/design/item/nsfw_cell/lethal
name = "LETHAL"
id = "nsfw_cell_lethal"
req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PHORON = 3000)
build_path = /obj/item/ammo_casing/microbattery/combat/lethal
sort_string = "MAVCB"
/datum/design/item/nsfw_cell/net
name = "NET"
id = "nsfw_cell_net"
req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 4)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_URANIUM = 3000)
build_path = /obj/item/ammo_casing/microbattery/combat/net
sort_string = "MAVCC"
/datum/design/item/nsfw_cell/ion
name = "ION"
id = "nsfw_cell_ion"
req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 5, TECH_COMBAT = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 3000)
build_path = /obj/item/ammo_casing/microbattery/combat/ion
sort_string = "MAVCD"
/datum/design/item/nsfw_cell/shotstun
name = "SCATTERSTUN"
id = "nsfw_cell_shotstun"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 6, TECH_COMBAT = 6)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 2000, MAT_GOLD = 2000)
build_path = /obj/item/ammo_casing/microbattery/combat/shotstun
sort_string = "MAVCE"
/datum/design/item/nsfw_cell/xray
name = "XRAY"
id = "nsfw_cell_xray"
req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 5, TECH_COMBAT = 7)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_URANIUM = 1000, MAT_PHORON = 1000)
build_path = /obj/item/ammo_casing/microbattery/combat/xray
sort_string = "MAVCF"
/datum/design/item/nsfw_cell/stripper
name = "STRIPPER"
id = "nsfw_cell_stripper"
req_tech = list(TECH_MATERIAL = 7, TECH_BIO = 4, TECH_POWER = 4, TECH_COMBAT = 4, TECH_ILLEGAL = 5)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_URANIUM = 2000, MAT_PHORON = 2000, MAT_DIAMOND = 500)
build_path = /obj/item/ammo_casing/microbattery/combat/stripper
sort_string = "MAVCG"
/datum/design/item/weapon/ballistic/ammo/ptrshell
name = "14.5mm shell"
desc = "A dense-core projectile fired from a small cannon."
id = "ptrshell"
req_tech = list(TECH_COMBAT = 7, TECH_ILLEGAL = 4)
materials = list(MAT_TITANIUM = 4000, MAT_URANIUM = 500, MAT_PLASTEEL = 500)
build_path = /obj/item/ammo_casing/a145
sort_string = "MABBD"
/*
/datum/design/item/nsfw_cell/final
name = "FINAL OPTION"
id = "nsfw_cell_final"
req_tech = list(TECH_COMBAT = 69, TECH_ILLEGAL = 69, TECH_PRECURSOR = 1)
materials = list("unobtanium" = 9001)
build_path = /obj/item/ammo_casing/microbattery/combat/final
sort_string = "MAVCH"
*/
@@ -1,67 +0,0 @@
/datum/design/item/weapon/xenoarch/AssembleDesignName()
..()
name = "Xenoarcheology equipment design ([item_name])"
// Xenoarch tools
/datum/design/item/weapon/xenoarch/ano_scanner
name = "Alden-Saraspova counter"
id = "ano_scanner"
desc = "Aids in triangulation of exotic particles."
req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 10000,MAT_GLASS = 5000)
build_path = /obj/item/ano_scanner
sort_string = "GAAAA"
/datum/design/item/weapon/xenoarch/xenoarch_multi_tool
name = "xenoarcheology multitool"
id = "xenoarch_multitool"
req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3)
build_path = /obj/item/xenoarch_multi_tool
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_URANIUM = 500, MAT_PHORON = 500)
sort_string = "GAAAB"
/datum/design/item/weapon/xenoarch/excavationdrill
name = "Excavation Drill"
id = "excavationdrill"
req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/pickaxe/excavationdrill
sort_string = "GAAAC"
/datum/design/obj/item/anobattery
name = "Anomaly power battery - Basic"
id = "anobattery-basic"
req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 4, TECH_ENGINEERING = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000)
build_path = /obj/item/anobattery
sort_string = "GAAAD"
/datum/design/obj/item/anobattery_mid
name = "Anomaly power battery - Moderate"
id = "anobattery-moderate"
req_tech = list(TECH_MATERIAL = 5, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 2000) //Same object, different materials
build_path = /obj/item/anobattery/moderate
sort_string = "GAAAE"
/datum/design/obj/item/anobattery_advanced
name = "Anomaly power battery - Advanced"
id = "anobattery-advanced"
req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_ENGINEERING = 5, TECH_BLUESPACE = 5, TECH_DATA = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2500, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 2500, MAT_PHORON = 2500)
build_path = /obj/item/anobattery/advanced
sort_string = "GAAAF"
/datum/design/obj/item/anobattery_exotic
name = "Anomaly power battery - Exotic"
id = "anobattery-exotic"
req_tech = list(TECH_MATERIAL = 8, TECH_POWER = 7, TECH_ENGINEERING = 6, TECH_BLUESPACE = 6, TECH_DATA = 6, TECH_PRECURSOR = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 1500, MAT_GLASS = 1500, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_PHORON = 2000, MAT_DIAMOND = 2000, MAT_MORPHIUM = 2000)
build_path = /obj/item/anobattery/exotic
sort_string = "GAAAG"
@@ -1,30 +0,0 @@
/datum/design/item/weapon/xenobio/AssembleDesignName()
..()
name = "Xenobiology equipment design ([item_name])"
// Xenobio Weapons
/datum/design/item/weapon/xenobio/slimebaton
id = "slimebaton"
req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_POWER = 3, TECH_COMBAT = 3)
materials = list(MAT_STEEL = 5000)
build_path = /obj/item/melee/baton/slime
sort_string = "HAAAA"
/datum/design/item/weapon/xenobio/slimetaser
id = "slimetaser"
req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4)
materials = list(MAT_STEEL = 5000)
build_path = /obj/item/gun/energy/taser/xeno
sort_string = "HAAAB"
// Other
/datum/design/item/weapon/xenobio/slime_scanner
name = "slime scanner"
desc = "A hand-held body scanner able to learn information about slimes."
id = "slime_scanner"
req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 500, MAT_GLASS = 500)
build_path = /obj/item/slime_scanner
sort_string = "HBAAA"
@@ -1,17 +0,0 @@
/datum/design/item/weapon/xenobio/monkey_gun
name = "bluespace monkey deployment system"
desc = "An Advanced monkey teleportation and rehydration system. For serious monkey business."
id = "monkey_gun"
req_tech = list(TECH_BIO = 6, TECH_BLUESPACE = 5)
materials = list(MAT_STEEL = 3500, MAT_GLASS = 3500, MAT_PHORON = 1500, MAT_DIAMOND = 1500)
build_path = /obj/item/xenobio/monkey_gun
sort_string = "HBBA"
/datum/design/item/weapon/xenobio/grinder
name = "portable slime processor"
desc = "This high tech device combines the slime processor with the latest in woodcutting technology."
id = "slime_grinder"
req_tech = list(TECH_MAGNET = 4, TECH_BIO = 5)
materials = list(MAT_STEEL = 200, MAT_GLASS = 200, MAT_SILVER = 500, MAT_GOLD = 100)
build_path = /obj/item/slime_grinder
sort_string = "HBBB"
@@ -1,121 +0,0 @@
/*
Destructive Analyzer
It is used to destroy hand-held objects and advance technological research. Controls are in the linked R&D console.
Note: Must be placed within 3 tiles of the R&D Console
*/
/obj/machinery/r_n_d/destructive_analyzer
name = "destructive analyzer"
icon_state = "d_analyzer"
var/obj/item/loaded_item = null
var/decon_mod = 0
circuit = /obj/item/circuitboard/destructive_analyzer
use_power = USE_POWER_IDLE
idle_power_usage = 30
active_power_usage = 2500
var/rped_recycler_ready = TRUE
/obj/machinery/r_n_d/destructive_analyzer/Initialize(mapload)
. = ..()
default_apply_parts()
/obj/machinery/r_n_d/destructive_analyzer/RefreshParts()
var/T = 0
for(var/obj/item/stock_parts/S in component_parts)
T += S.rating
T *= 0.1
decon_mod = clamp(T, 0, 1)
/obj/machinery/r_n_d/destructive_analyzer/update_icon()
if(panel_open)
icon_state = "d_analyzer_t"
else if(loaded_item)
icon_state = "d_analyzer_l"
else
icon_state = "d_analyzer"
/obj/machinery/r_n_d/destructive_analyzer/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
to_chat(user, span_notice("\The [src] is busy right now."))
return
if(loaded_item)
to_chat(user, span_notice("There is something already loaded into \the [src]."))
return 1
if(default_deconstruction_screwdriver(user, O))
if(linked_console)
linked_console.linked_destroy = null
linked_console = null
return
if(default_deconstruction_crowbar(user, O))
return
if(default_part_replacement(user, O))
return
if(panel_open)
to_chat(user, span_notice("You can't load \the [src] while it's opened."))
return 1
if(!linked_console)
to_chat(user, span_notice("\The [src] must be linked to an R&D console first."))
return
if(!loaded_item)
if(isrobot(user)) //Don't put your module items in there!
return
if(!O.origin_tech)
to_chat(user, span_notice("This doesn't seem to have a tech origin."))
return
if(O.origin_tech.len == 0)
to_chat(user, span_notice("You cannot deconstruct this item."))
return
busy = 1
loaded_item = O
user.drop_item()
O.loc = src
to_chat(user, span_notice("You add \the [O] to \the [src]."))
flick("d_analyzer_la", src)
spawn(10)
update_icon()
busy = 0
return 1
return
/obj/machinery/r_n_d/destructive_analyzer/MouseDrop_T(atom/dropping, mob/living/user)
if(istype(dropping, /obj/item/storage/part_replacer))
var/obj/item/storage/part_replacer/replacer = dropping
replacer.hide_from(user)
if(!linked_console)
to_chat(user, span_notice("\The [src] must be linked to an R&D console first."))
return 0
if(!linked_console.linked_lathe)
to_chat(user, span_notice("Link a protolathe to [src]'s R&D console first."))
return 0
if(!rped_recycler_ready)
to_chat(user, span_notice("\The [src]'s stock parts recycler isn't ready yet."))
return 0
var/obj/machinery/r_n_d/protolathe/lathe_to_fill = linked_console.linked_lathe
var/lowest_rating = INFINITY // We want the lowest-part tier rating in the RPED so we only recycle the lowest-tier parts.
for(var/obj/item/B in replacer.contents)
if(B.rped_rating() < lowest_rating)
lowest_rating = B.rped_rating()
if(lowest_rating == INFINITY)
to_chat(user, span_notice("Mass part deconstruction attempt canceled - no valid parts for recycling detected."))
return 0
for(var/obj/item/B in replacer.contents)
if(B.rped_rating() > lowest_rating)
continue
if(lathe_to_fill && B.matter) // Sending salvaged materials to the lathe...
for(var/t in B.matter)
if(t in lathe_to_fill.materials)
lathe_to_fill.materials[t] += B.matter[t] * src.decon_mod
qdel(B)
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
rped_recycler_ready = FALSE
addtimer(CALLBACK(src, PROC_REF(rped_ready)), 5 SECONDS)
to_chat(user, span_notice("You deconstruct all the parts of rating [lowest_rating] in [replacer] with [src]."))
return 1
else
..()
/obj/machinery/r_n_d/destructive_analyzer/proc/rped_ready()
rped_recycler_ready = TRUE
playsound(get_turf(src), 'sound/machines/chime.ogg', 50, 1)
File diff suppressed because it is too large Load Diff
@@ -1,30 +0,0 @@
/datum/design/item/mechfab/rigsuit/rescuepharm
name = "hardsuit mounted rescue pharmacy"
desc = "A suit mounted rescue drug dispenser."
id = "rig_component_rescuepharm"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_BIO = 4)
materials = list(MAT_PLASTEEL = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250)
build_path = /obj/item/rig_module/rescue_pharm
/datum/design/item/mechfab/rigsuit/mounted_sizegun
name = "hardsuit mounted size gun"
desc = "A suit mounted size gun. Features interface-based target size adjustment for hands-free size-altering shenanigans."
id = "rig_gun_sizegun"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/rig_module/mounted/sizegun
/datum/design/item/mecha/weapon/laser_gamma
name = "GA-X \"Render\" Experimental Gamma Laser"
id = "mech_laser_gamma"
req_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 4, TECH_PHORON = 4, TECH_POWER = 4, TECH_ILLEGAL = 3)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 4000, MAT_PHORON = 2500, MAT_SILVER = 1000, MAT_GOLD = 500, MAT_URANIUM = 3000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/gamma
/datum/design/item/mecha/medigun
name = "BL-3/P directed restoration system"
desc = "A portable medical system used to treat external injuries from afar."
id = "mech_medigun"
req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_BIO = 6)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 1750, MAT_DIAMOND = 1500, MAT_PHORON = 4000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun
-270
View File
@@ -1,270 +0,0 @@
/obj/machinery/r_n_d/protolathe
name = "Protolathe"
icon_state = "protolathe"
flags = OPENCONTAINER
circuit = /obj/item/circuitboard/protolathe
use_power = USE_POWER_IDLE
idle_power_usage = 30
active_power_usage = 5000
var/max_material_storage = 100000
var/list/datum/design/queue = list()
var/progress = 0
var/mat_efficiency = 1
var/speed = 1
//VOREStation Edit - Broke this into lines
materials = list(
MAT_STEEL = 0,
MAT_GLASS = 0,
MAT_PLASTEEL = 0,
MAT_PLASTIC = 0,
MAT_GRAPHITE = 0,
MAT_GOLD = 0,
MAT_SILVER = 0,
MAT_OSMIUM = 0,
MAT_LEAD = 0,
MAT_PHORON = 0,
MAT_URANIUM = 0,
MAT_DIAMOND = 0,
MAT_DURASTEEL = 0,
MAT_VERDANTIUM = 0,
MAT_MORPHIUM = 0,
MAT_METALHYDROGEN = 0,
MAT_SUPERMATTER = 0,
MAT_TITANIUM = 0)
hidden_materials = list(MAT_PLASTEEL, MAT_DURASTEEL, MAT_GRAPHITE, MAT_VERDANTIUM, MAT_MORPHIUM, MAT_METALHYDROGEN, MAT_SUPERMATTER)
/obj/machinery/r_n_d/protolathe/Initialize(mapload)
. = ..()
default_apply_parts()
/obj/machinery/r_n_d/protolathe/process()
..()
if(stat)
update_icon()
return
if(queue.len == 0)
busy = 0
update_icon()
return
var/datum/design/D = queue[1]
if(canBuild(D))
busy = 1
progress += speed
if(progress >= D.time)
build(D)
progress = 0
removeFromQueue(1)
flick("[initial(icon_state)]_finish", src)
update_icon()
else
if(busy)
visible_message(span_notice("[icon2html(src,viewers(src))] flashes: insufficient materials: [getLackingMaterials(D)]."))
busy = 0
update_icon()
/obj/machinery/r_n_d/protolathe/proc/TotalMaterials() //returns the total of all the stored materials. Makes code neater.
var/t = 0
for(var/f in materials)
t += materials[f]
return t
/obj/machinery/r_n_d/protolathe/RefreshParts()
var/T = 0
for(var/obj/item/reagent_containers/glass/G in component_parts)
T += G.reagents.maximum_volume
create_reagents(T)
max_material_storage = 0
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
max_material_storage += M.rating * 75000
T = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
T += M.rating
mat_efficiency = max(1 - (T - 2) / 8, 0.2)
speed = T / 2
/obj/machinery/r_n_d/protolathe/dismantle()
for(var/f in materials)
eject_materials(f, -1)
..()
/obj/machinery/r_n_d/protolathe/update_icon()
cut_overlays()
icon_state = initial(icon_state)
if(panel_open)
overlays.Add(image(icon, "[icon_state]_panel"))
if(stat & NOPOWER)
return
if(busy)
icon_state = "[icon_state]_work"
/obj/machinery/r_n_d/protolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
to_chat(user, span_notice("\The [src] is busy. Please wait for completion of previous operation."))
return 1
if(isrobot(user)) //snowflake gripper BS because it can't be done in get_active_hand without breaking everything
var/mob/living/silicon/robot/robot = user
if(istype(robot.module_active, /obj/item/gripper))
var/obj/item/gripper/gripper = robot.module_active
O = gripper.get_current_pocket()
gripper.wrapped = null
gripper.current_pocket = pick(gripper.pockets)
if(default_deconstruction_screwdriver(user, O))
if(linked_console)
linked_console.linked_lathe = null
linked_console = null
return
if(default_deconstruction_crowbar(user, O))
return
if(default_part_replacement(user, O))
return
if(O.is_open_container())
return 1
if(panel_open)
to_chat(user, span_notice("You can't load \the [src] while it's opened."))
return 1
if(!linked_console)
to_chat(user, span_notice("\The [src] must be linked to an R&D console first!"))
return 1
if(!istype(O, /obj/item/stack/material))
to_chat(user, span_notice("You cannot insert this item into \the [src]!"))
return 1
if(stat)
return 1
var/obj/item/stack/material/S = O
if(!(S.material.name in materials))
to_chat(user, span_warning("The [src] doesn't accept [material_display_name(S.material)]!"))
return
busy = 1
var/sname = "[S.name]"
var/amnt = S.perunit
var/max_res_amount = max_material_storage
for(var/mat in materials)
max_res_amount -= materials[mat]
if(materials[S.material.name] + amnt <= max_res_amount)
if(S && S.get_amount() >= 1)
var/count = 0
flick("[initial(icon_state)]_loading", src)
while(materials[S.material.name] + amnt <= max_res_amount && S.get_amount() >= 1)
materials[S.material.name] += amnt
S.use(1)
count++
to_chat(user, span_filter_notice("You insert [count] [sname] into the fabricator."))
else
to_chat(user, span_filter_notice("The fabricator cannot hold more [sname]."))
busy = 0
var/stacktype = S.type
var/t = getMaterialName(stacktype)
add_overlay("protolathe_[t]")
spawn(10)
cut_overlay("protolathe_[t]")
return
/obj/machinery/r_n_d/protolathe/proc/addToQueue(var/datum/design/D)
queue += D
return
/obj/machinery/r_n_d/protolathe/proc/removeFromQueue(var/index)
if(queue.len >= index)
queue.Cut(index, index + 1)
return
/obj/machinery/r_n_d/protolathe/proc/canBuild(var/datum/design/D)
for(var/M in D.materials)
if(materials[M] < (D.materials[M] * mat_efficiency))
return 0
for(var/C in D.chemicals)
if(!reagents.has_reagent(C, D.chemicals[C] * mat_efficiency))
return 0
return 1
/obj/machinery/r_n_d/protolathe/proc/getLackingMaterials(var/datum/design/D)
var/ret = ""
for(var/M in D.materials)
if(materials[M] < D.materials[M])
if(ret != "")
ret += ", "
ret += "[D.materials[M] - materials[M]] [M]"
for(var/C in D.chemicals)
if(!reagents.has_reagent(C, D.chemicals[C]))
if(ret != "")
ret += ", "
ret += C
return ret
/obj/machinery/r_n_d/protolathe/proc/build(var/datum/design/D)
var/power = active_power_usage
for(var/M in D.materials)
power += round(D.materials[M] / 5)
power = max(active_power_usage, power)
use_power(power)
for(var/M in D.materials)
materials[M] = max(0, materials[M] - D.materials[M] * mat_efficiency)
for(var/C in D.chemicals)
reagents.remove_reagent(C, D.chemicals[C] * mat_efficiency)
if(D.build_path)
var/obj/new_item = D.Fabricate(src, src)
new_item.loc = loc
if(mat_efficiency != 1) // No matter out of nowhere
if(new_item.matter && new_item.matter.len > 0)
for(var/i in new_item.matter)
new_item.matter[i] = new_item.matter[i] * mat_efficiency
/obj/machinery/r_n_d/protolathe/proc/eject_materials(var/material, var/amount) // 0 amount = 0 means ejecting a full stack; -1 means eject everything
var/recursive = amount == -1 ? TRUE : FALSE
var/matstring = lowertext(material)
// 0 or null, nothing to eject
if(!materials[matstring])
return
// Problem, fix problem and abort
if(materials[matstring] < 0)
warning("[src] tried to eject material '[material]', which it has 'materials[matstring]' of!")
materials[matstring] = 0
return
// Find the material datum for our material
var/datum/material/M = get_material_by_name(matstring)
if(!M)
warning("[src] tried to eject material '[matstring]', which didn't match any known material datum!")
return
// Find what type of sheets it makes
var/obj/item/stack/material/S = M.stack_type
if(!S)
warning("[src] tried to eject material '[matstring]', which didn't have a stack_type!")
return
// If we were passed -1, then it's recursive ejection and we should eject all we can
if(amount <= 0)
amount = initial(S.max_amount)
// Smaller of what we have left, or the desired amount (note the amount is in sheets, but the array stores perunit values)
var/ejected = min(round(materials[matstring] / initial(S.perunit)), amount)
// Place a sheet
S = M.place_sheet(get_turf(src), ejected)
if(!istype(S))
warning("[src] tried to eject material '[material]', which didn't generate a proper stack when asked!")
return
// Reduce our amount stored
materials[matstring] -= ejected * S.perunit
// Recurse if we have enough left for more sheets
if(recursive && materials[matstring] >= S.perunit)
eject_materials(matstring, -1)
-32
View File
@@ -1,32 +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 necessary 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. It also tracks the current reliability of that particular design.
//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.
*/
-195
View File
@@ -1,195 +0,0 @@
/*
Research and Development (R&D) Console
This is the main work horse of the R&D system. It contains the menus/controls for the Destructive Analyzer, Protolathe, and Circuit
imprinter. It also contains the /datum/research holder with all the known/possible technology paths and device designs.
Basic use: When it first is created, it will attempt to link up to related devices within 3 squares. It'll only link up if they
aren't already linked to another console. Any consoles it cannot link up with (either because all of a certain type are already
linked or there aren't any in range), you'll just not have access to that menu. In the settings menu, there are menu options that
allow a player to attempt to re-sync with nearby consoles. You can also force it to disconnect from a specific console.
The imprinting and construction menus do NOT require toxins access to access but all the other menus do. However, if you leave it
on a menu, nothing is to stop the person from using the options on that menu (although they won't be able to change to a different
one). You can also lock the console on the settings menu if you're feeling paranoid and you don't want anyone messing with it who
doesn't have toxins access.
When a R&D console is destroyed or even partially disassembled, you lose all research data on it. However, there are two ways around
this dire fate:
- The easiest way is to go to the settings menu and select "Sync Database with Network." That causes it to upload (but not download)
it's data to every other device in the game. Each console has a "disconnect from network" option that'll will cause data base sync
operations to skip that console. This is useful if you want to make a "public" R&D console or, for example, give the engineers
a circuit imprinter with certain designs on it and don't want it accidentally updating. The downside of this method is that you have
to have physical access to the other console to send data back. Note: An R&D console is on CentCom so if a random griffan happens to
cause a ton of data to be lost, an admin can go send it back.
- The second method is with Technology Disks and Design Disks. Each of these disks can hold a single technology or design datum in
it's entirety. You can then take the disk to any R&D console and upload it's data to it. This method is a lot more secure (since it
won't update every console in existence) but it's more of a hassle to do. Also, the disks can be stolen.
*/
/obj/machinery/computer/rdconsole
name = "R&D control console"
desc = "Science, in a computer! Experiment results not guaranteed."
icon_keyboard = "rd_key"
icon_screen = "rdcomp"
light_color = "#a97faa"
circuit = /obj/item/circuitboard/rdconsole
var/datum/research/files //Stores all the collected research data.
var/obj/item/disk/tech_disk/t_disk = null //Stores the technology disk.
var/obj/item/disk/design_disk/d_disk = null //Stores the design disk.
var/obj/machinery/r_n_d/destructive_analyzer/linked_destroy = null //Linked Destructive Analyzer
var/obj/machinery/r_n_d/protolathe/linked_lathe = null //Linked Protolathe
var/obj/machinery/r_n_d/circuit_imprinter/linked_imprinter = null //Linked Circuit Imprinter
var/id = 0 //ID of the computer (for server restrictions).
var/sync = 1 //If sync = 0, it doesn't show up on Server Control Console
var/is_public = FALSE //Above mentions the option for public consoles. But for that, we need to remove the sync tab from the console entirely
req_access = list(access_research) //Data and setting manipulation requires scientist access.
var/protofilter //String to filter protolathe designs by
var/circuitfilter //String to filter circuit designs by
/obj/machinery/computer/rdconsole/proc/CallMaterialName(var/ID)
var/return_name = ID
switch(return_name)
if("metal")
return_name = "Metal"
if("glass")
return_name = "Glass"
if("gold")
return_name = "Gold"
if("silver")
return_name = "Silver"
if("phoron")
return_name = "Solid Phoron"
if("uranium")
return_name = "Uranium"
if("diamond")
return_name = "Diamond"
return return_name
/obj/machinery/computer/rdconsole/proc/CallReagentName(var/ID)
var/return_name = ID
for(var/datum/reagent/R in SSchemistry.chemical_reagents)
if(R.id == ID)
return_name = R.name
break
return return_name
/obj/machinery/computer/rdconsole/proc/SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any).
for(var/obj/machinery/r_n_d/D in range(3, src))
if(D.linked_console != null || D.panel_open)
continue
if(istype(D, /obj/machinery/r_n_d/destructive_analyzer))
if(linked_destroy == null)
linked_destroy = D
D.linked_console = src
else if(istype(D, /obj/machinery/r_n_d/protolathe))
if(linked_lathe == null)
linked_lathe = D
D.linked_console = src
else if(istype(D, /obj/machinery/r_n_d/circuit_imprinter))
if(linked_imprinter == null)
linked_imprinter = D
D.linked_console = src
return
/obj/machinery/computer/rdconsole/proc/griefProtection() //Have it automatically push research to the CentCom server so wild griffins can't fuck up R&D's work
for(var/obj/machinery/r_n_d/server/centcom/C in GLOB.machines)
for(var/datum/tech/T in files.known_tech)
C.files.AddTech2Known(T)
for(var/datum/design/D in files.known_designs)
C.files.AddDesign2Known(D)
C.files.RefreshResearch()
/obj/machinery/computer/rdconsole/Initialize(mapload)
. = ..()
files = new /datum/research(src) //Setup the research data holder.
if(!id)
for(var/obj/machinery/r_n_d/server/centcom/S in GLOB.machines)
S.update_connections()
break
/obj/machinery/computer/rdconsole/Initialize(mapload)
SyncRDevices()
. = ..()
/obj/machinery/computer/rdconsole/attackby(var/obj/item/D as obj, var/mob/user as mob)
//Loading a disk into it.
if(istype(D, /obj/item/disk))
if(t_disk || d_disk)
to_chat(user, span_filter_notice("A disk is already loaded into the machine."))
return
if(istype(D, /obj/item/disk/tech_disk))
t_disk = D
else if (istype(D, /obj/item/disk/design_disk))
d_disk = D
else
to_chat(user, span_notice("Machine cannot accept disks in that format."))
return
user.drop_item()
D.loc = src
to_chat(user, span_notice("You add \the [D] to the machine."))
else
//The construction/deconstruction of the console code.
..()
SStgui.update_uis(src)
return
/obj/machinery/computer/rdconsole/dismantle()
if(linked_destroy)
linked_destroy.linked_console = null
if(linked_lathe)
linked_lathe.linked_console = null
if(linked_imprinter)
linked_imprinter.linked_console = null
..()
/obj/machinery/computer/rdconsole/emp_act(var/remaining_charges, var/mob/user)
if(!emagged)
playsound(src, 'sound/effects/sparks4.ogg', 75, 1)
emagged = 1
to_chat(user, span_notice("You disable the security protocols."))
return 1
/obj/machinery/computer/rdconsole/proc/GetResearchLevelsInfo()
var/list/dat = list()
dat += "<UL>"
for(var/datum/tech/T in files.known_tech)
if(T.level < 1)
continue
dat += "<LI>"
dat += "[T.name]"
dat += "<UL>"
dat += "<LI>Level: [T.level]"
dat += "<LI>Summary: [T.desc]"
dat += "</UL>"
return dat.Join()
/obj/machinery/computer/rdconsole/proc/GetResearchListInfo()
var/list/dat = list()
dat += "<UL>"
for(var/datum/design/D in files.known_designs)
if(D.build_path)
dat += "<LI><B>[D.name]</B>: [D.desc]"
dat += "</UL>"
return dat.Join()
/obj/machinery/computer/rdconsole/attack_hand(mob/user as mob)
if(stat & (BROKEN|NOPOWER))
return
tgui_interact(user) // TODO: remove the other UI
/obj/machinery/computer/rdconsole/robotics
name = "Robotics R&D Console"
id = 2
req_access = list(access_robotics)
/obj/machinery/computer/rdconsole/core
name = "Core R&D Console"
id = 1
-620
View File
@@ -1,620 +0,0 @@
/*
* This file contains all of the UI code for the RD console.
* It's moved off to this file for simplicity and understanding what is UI and what is functionality.
*/
#define ENTRIES_PER_RDPAGE 50
/obj/machinery/computer/rdconsole
var/locked = FALSE
var/busy_msg = null
var/search = ""
var/design_page = 0
var/builder_page = 0
/obj/machinery/computer/rdconsole/tgui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "ResearchConsole", name)
ui.open()
/obj/machinery/computer/rdconsole/tgui_status(mob/user)
. = ..()
if(locked && !allowed(user) && !emagged)
. = min(., STATUS_UPDATE)
if(busy_msg)
. = min(., STATUS_UPDATE)
/obj/machinery/computer/rdconsole/tgui_static_data(mob/user)
var/list/data = ..()
data["sheet_material_amount"] = SHEET_MATERIAL_AMOUNT
data["tech"] = tgui_GetResearchLevelsInfo()
data["designs"] = tgui_GetDesignInfo(design_page)
data["lathe_designs"] = tgui_GetProtolatheDesigns(linked_lathe, builder_page)
data["imprinter_designs"] = tgui_GetImprinterDesigns(linked_imprinter, builder_page)
return data
/obj/machinery/computer/rdconsole/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
var/list/data = ..()
data["locked"] = locked
data["busy_msg"] = busy_msg
data["search"] = search
data["builder_page"] = builder_page
data["design_page"] = design_page
data["sync"] = sync
data["is_public"] = is_public
// Skip the rest of the data if it's locked
if(locked)
return data
if(linked_destroy)
data["linked_destroy"] = list(
"loaded_item" = linked_destroy.loaded_item,
"origin_tech" = tgui_GetOriginTechForItem(linked_destroy.loaded_item),
)
else
data["linked_destroy"] = null
if(linked_lathe)
var/list/reagents = list()
for(var/datum/reagent/R as anything in linked_lathe.reagents.reagent_list)
UNTYPED_LIST_ADD(reagents, list(
"name" = R.name,
"id" = R.id,
"volume" = R.volume
))
var/list/queue = list()
var/i = 1
for(var/datum/design/D as anything in linked_lathe.queue)
UNTYPED_LIST_ADD(queue, list(
"name" = D.name,
"index" = i
))
i += 1
data["linked_lathe"] = list(
"total_materials" = linked_lathe.TotalMaterials(),
"max_materials" = linked_lathe.max_material_storage,
"total_volume" = linked_lathe.reagents.total_volume,
"max_volume" = linked_lathe.reagents.maximum_volume,
"busy" = linked_lathe.busy,
"materials" = linked_lathe.materials,
"reagents" = reagents,
"queue" = queue,
)
else
data["linked_lathe"] = null
if(linked_imprinter)
var/list/reagents = list()
for(var/datum/reagent/R as anything in linked_imprinter.reagents.reagent_list)
UNTYPED_LIST_ADD(reagents, list(
"name" = R.name,
"id" = R.id,
"volume" = R.volume
))
var/list/queue = list()
var/i = 1
for(var/datum/design/D as anything in linked_imprinter.queue)
UNTYPED_LIST_ADD(queue, list(
"name" = D.name,
"index" = i
))
i += 1
data["linked_imprinter"] = list(
"total_materials" = linked_imprinter.TotalMaterials(),
"max_materials" = linked_imprinter.max_material_storage,
"total_volume" = linked_imprinter.reagents.total_volume,
"max_volume" = linked_imprinter.reagents.maximum_volume,
"busy" = linked_imprinter.busy,
"materials" = linked_imprinter.materials,
"reagents" = reagents,
"queue" = queue
)
else
data["linked_imprinter"] = null
if(t_disk)
data["t_disk"] = list(
"stored" = t_disk.stored ? list(
"name" = t_disk.stored.name,
"level" = t_disk.stored.level,
"desc" = t_disk.stored.desc,
) : null,
)
else
data["t_disk"] = null
if(d_disk)
data["d_disk"] = list(
"stored" = d_disk.blueprint ? list(
"name" = d_disk.blueprint.name,
"build_type" = d_disk.blueprint.build_type,
"materials" = d_disk.blueprint.materials,
) : null,
)
else
data["d_disk"] = null
return data
/obj/machinery/computer/rdconsole/proc/tgui_GetResearchLevelsInfo()
var/list/data = list()
for(var/datum/tech/T in files.known_tech)
if(T.level < 1)
continue
data.Add(list(list(
"name" = T.name,
"level" = T.level,
"desc" = T.desc,
"id" = T.id,
)))
return data
/obj/machinery/computer/rdconsole/proc/tgui_GetOriginTechForItem(obj/item/I)
if(!istype(I))
return list()
var/list/data = list()
for(var/T in I.origin_tech)
var/list/subdata = list(
"name" = CallTechName(T),
"level" = I.origin_tech[T],
"current" = null,
)
for(var/datum/tech/F in files.known_tech)
if(F.name == CallTechName(T))
subdata["current"] = F.level
break
data.Add(list(subdata))
return data
/proc/cmp_designs_rdconsole(list/A, list/B)
return sorttext(B["name"], A["name"])
/obj/machinery/computer/rdconsole/proc/tgui_GetProtolatheDesigns(obj/machinery/r_n_d/protolathe/P, page)
if(!istype(P))
return list()
var/list/data = list()
// For some reason, this is faster than direct access.
var/list/known_designs = files.known_designs
for(var/datum/design/D in known_designs)
if(!D.build_path || !(D.build_type & PROTOLATHE))
continue
if(search && !findtext(D.name, search))
continue
var/list/mat_list = list()
for(var/M in D.materials)
mat_list.Add("[D.materials[M] * P.mat_efficiency] [CallMaterialName(M)]")
var/list/chem_list = list()
for(var/T in D.chemicals)
chem_list.Add("[D.chemicals[T] * P.mat_efficiency] [CallReagentName(T)]")
data.Add(list(list(
"name" = D.name,
"id" = D.id,
"mat_list" = mat_list,
"chem_list" = chem_list,
)))
data = sortTim(data, GLOBAL_PROC_REF(cmp_designs_rdconsole), FALSE)
if((ENTRIES_PER_RDPAGE * page) > LAZYLEN(data))
return null
if(LAZYLEN(data) > ENTRIES_PER_RDPAGE)
var/first_index = clamp(ENTRIES_PER_RDPAGE * page, 1, LAZYLEN(data))
var/last_index = min((ENTRIES_PER_RDPAGE * page) + ENTRIES_PER_RDPAGE, LAZYLEN(data) + 1)
data = data.Copy(first_index, last_index)
return data
/obj/machinery/computer/rdconsole/proc/tgui_GetImprinterDesigns(obj/machinery/r_n_d/circuit_imprinter/P, page)
if(!istype(P))
return list()
var/list/data = list()
// For some reason, this is faster than direct access.
var/list/known_designs = files.known_designs
for(var/datum/design/D in known_designs)
if(!D.build_path || !(D.build_type & IMPRINTER))
continue
if(search && !findtext(D.name, search))
continue
var/list/mat_list = list()
for(var/M in D.materials)
mat_list.Add("[D.materials[M] * P.mat_efficiency] [CallMaterialName(M)]")
var/list/chem_list = list()
for(var/T in D.chemicals)
chem_list.Add("[D.chemicals[T] * P.mat_efficiency] [CallReagentName(T)]")
data.Add(list(list(
"name" = D.name,
"id" = D.id,
"mat_list" = mat_list,
"chem_list" = chem_list,
)))
data = sortTim(data, GLOBAL_PROC_REF(cmp_designs_rdconsole), FALSE)
if((ENTRIES_PER_RDPAGE * page) > LAZYLEN(data))
return null
if(LAZYLEN(data) > ENTRIES_PER_RDPAGE)
var/first_index = clamp(ENTRIES_PER_RDPAGE * page, 1, LAZYLEN(data))
var/last_index = min((ENTRIES_PER_RDPAGE * page) + ENTRIES_PER_RDPAGE, LAZYLEN(data) + 1)
data = data.Copy(first_index, last_index)
return data
/obj/machinery/computer/rdconsole/proc/tgui_GetDesignInfo(page)
var/list/data = list()
// For some reason, this is faster than direct access.
var/list/known_designs = files.known_designs
for(var/datum/design/D in known_designs)
if(search && !findtext(D.name, search))
continue
if(D.build_path)
data.Add(list(list(
"name" = D.name,
"desc" = D.desc,
"id" = D.id,
)))
data = sortTim(data, GLOBAL_PROC_REF(cmp_designs_rdconsole), FALSE)
if((ENTRIES_PER_RDPAGE * page) > LAZYLEN(data))
return null
if(LAZYLEN(data) > ENTRIES_PER_RDPAGE)
var/first_index = clamp(ENTRIES_PER_RDPAGE * page, 1, LAZYLEN(data))
var/last_index = clamp((ENTRIES_PER_RDPAGE * page) + ENTRIES_PER_RDPAGE, 1, LAZYLEN(data) + 1)
data = data.Copy(first_index, last_index)
return data
/obj/machinery/computer/rdconsole/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
if(..())
return TRUE
add_fingerprint(ui.user)
switch(action)
if("search")
search = params["search"]
update_static_data_for_all_viewers()
return TRUE
if("design_page")
if(params["reset"])
design_page = 0
else
design_page = max(design_page + (1 * params["reverse"]), 0)
update_static_data_for_all_viewers()
return TRUE
if("builder_page")
if(params["reset"])
builder_page = 0
else
builder_page = max(builder_page + (1 * params["reverse"]), 0)
update_static_data_for_all_viewers()
return TRUE
if("updt_tech") //Update the research holder with information from the technology disk.
busy_msg = "Updating Database..."
spawn(5 SECONDS)
busy_msg = null
files.AddTech2Known(t_disk.stored)
files.RefreshResearch()
griefProtection() //Update CentCom too
update_static_data_for_all_viewers()
return TRUE
if("clear_tech") //Erase data on the technology disk.
t_disk.stored = null
return TRUE
if("eject_tech") //Eject the technology disk.
t_disk.loc = loc
t_disk = null
return TRUE
if("copy_tech") //Copys some technology data from the research holder to the disk.
for(var/datum/tech/T in files.known_tech)
if(params["copy_tech_ID"] == T.id)
t_disk.stored = T
break
return TRUE
if("updt_design") //Updates the research holder with design data from the design disk.
busy_msg = "Updating Database..."
spawn(5 SECONDS)
busy_msg = null
files.AddDesign2Known(d_disk.blueprint)
griefProtection() //Update CentCom too
update_static_data_for_all_viewers()
return TRUE
if("clear_design") //Erases data on the design disk.
d_disk.blueprint = null
return TRUE
if("eject_design") //Eject the design disk.
d_disk.loc = loc
d_disk = null
return TRUE
if("copy_design") //Copy design data from the research holder to the design disk.
for(var/datum/design/D in files.known_designs)
if(params["copy_design_ID"] == D.id)
d_disk.blueprint = D
break
return TRUE
if("eject_item") //Eject the item inside the destructive analyzer.
if(linked_destroy)
if(linked_destroy.busy)
to_chat(ui.user, span_notice("The destructive analyzer is busy at the moment."))
return FALSE
if(linked_destroy.loaded_item)
linked_destroy.loaded_item.loc = linked_destroy.loc
linked_destroy.loaded_item = null
linked_destroy.icon_state = "d_analyzer"
return TRUE
if("deconstruct") //Deconstruct the item in the destructive analyzer and update the research holder.
if(!linked_destroy)
return FALSE
if(linked_destroy.busy)
to_chat(ui.user, span_notice("The destructive analyzer is busy at the moment."))
return
linked_destroy.busy = 1
busy_msg = "Processing and Updating Database..."
flick("d_analyzer_process", linked_destroy)
spawn(2.4 SECONDS)
if(linked_destroy)
linked_destroy.busy = 0
busy_msg = null
if(!linked_destroy.loaded_item)
to_chat(ui.user, span_notice("The destructive analyzer appears to be empty."))
return
if(istype(linked_destroy.loaded_item,/obj/item/stack))//Only deconsturcts one sheet at a time instead of the entire stack
var/obj/item/stack/ST = linked_destroy.loaded_item
if(ST.get_amount() < 1)
playsound(linked_destroy, 'sound/machines/destructive_analyzer.ogg', 50, 1)
qdel(ST)
linked_destroy.icon_state = "d_analyzer"
return
for(var/T in linked_destroy.loaded_item.origin_tech)
files.UpdateTech(T, linked_destroy.loaded_item.origin_tech[T])
if(linked_lathe && linked_destroy.loaded_item.matter) // Also sends salvaged materials to a linked protolathe, if any.
for(var/t in linked_destroy.loaded_item.matter)
if(t in linked_lathe.materials)
linked_lathe.materials[t] += min(linked_lathe.max_material_storage - linked_lathe.TotalMaterials(), linked_destroy.loaded_item.matter[t] * linked_destroy.decon_mod)
linked_destroy.loaded_item = null
for(var/obj/I in linked_destroy.contents)
for(var/mob/M in I.contents)
playsound(linked_destroy, 'sound/machines/destructive_analyzer.ogg', 50, 1)
M.death()
if(istype(I,/obj/item/stack/material))//Only deconsturcts one sheet at a time instead of the entire stack
var/obj/item/stack/material/S = I
if(S.get_amount() > 1)
playsound(linked_destroy, 'sound/machines/destructive_analyzer.ogg', 50, 1)
S.use(1)
linked_destroy.loaded_item = S
else
playsound(linked_destroy, 'sound/machines/destructive_analyzer.ogg', 50, 1)
qdel(S)
linked_destroy.icon_state = "d_analyzer"
else
if(I != linked_destroy.circuit && !(I in linked_destroy.component_parts))
playsound(linked_destroy, 'sound/machines/destructive_analyzer.ogg', 50, 1)
qdel(I)
linked_destroy.icon_state = "d_analyzer"
use_power(linked_destroy.active_power_usage)
files.RefreshResearch()
update_static_data_for_all_viewers()
return TRUE
if("lock") //Lock the console from use by anyone without tox access.
if(!allowed(ui.user))
to_chat(ui.user, "Unauthorized Access.")
return
locked = !locked
return TRUE
if("sync") //Sync the research holder with all the R&D consoles in the game that aren't sync protected.
if(!sync)
to_chat(ui.user, span_notice("You must connect to the network first."))
return
busy_msg = "Updating Database..."
griefProtection() //Putting this here because I dont trust the sync process
spawn(3 SECONDS)
if(src)
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
var/server_processed = 0
if((id in S.id_with_upload) || istype(S, /obj/machinery/r_n_d/server/centcom))
for(var/datum/tech/T in files.known_tech)
S.files.AddTech2Known(T)
for(var/datum/design/D in files.known_designs)
S.files.AddDesign2Known(D)
S.files.RefreshResearch()
server_processed = 1
if((id in S.id_with_download) && !istype(S, /obj/machinery/r_n_d/server/centcom))
for(var/datum/tech/T in S.files.known_tech)
files.AddTech2Known(T)
for(var/datum/design/D in S.files.known_designs)
files.AddDesign2Known(D)
server_processed = 1
if(!istype(S, /obj/machinery/r_n_d/server/centcom) && server_processed)
S.produce_heat()
busy_msg = null
files.RefreshResearch()
update_static_data_for_all_viewers()
return TRUE
if("togglesync") //Prevents the console from being synced by other consoles. Can still send data.
sync = !sync
return TRUE
if("build") //Causes the Protolathe to build something.
if(linked_lathe)
var/datum/design/being_built = null
for(var/datum/design/D in files.known_designs)
if(D.id == params["build"])
being_built = D
break
if(being_built)
linked_lathe.addToQueue(being_built)
return TRUE
if("buildfive") //Causes the Protolathe to build 5 of something.
if(linked_lathe)
var/datum/design/being_built = null
for(var/datum/design/D in files.known_designs)
if(D.id == params["build"])
being_built = D
break
if(being_built)
for(var/i = 1 to 5)
linked_lathe.addToQueue(being_built)
return TRUE
if("imprint") //Causes the Circuit Imprinter to build something.
if(linked_imprinter)
var/datum/design/being_built = null
for(var/datum/design/D in files.known_designs)
if(D.id == params["imprint"])
being_built = D
break
if(being_built)
linked_imprinter.addToQueue(being_built)
return TRUE
if("disposeI") //Causes the circuit imprinter to dispose of a single reagent (all of it)
if(!linked_imprinter)
return
linked_imprinter.reagents.del_reagent(params["dispose"])
return TRUE
if("disposeallI") //Causes the circuit imprinter to dispose of all it's reagents.
if(!linked_imprinter)
return
linked_imprinter.reagents.clear_reagents()
return TRUE
if("removeI")
if(!linked_imprinter)
return
linked_imprinter.removeFromQueue(text2num(params["removeI"]))
return TRUE
if("imprinter_ejectsheet") //Causes the imprinter to eject a sheet of material
if(!linked_imprinter)
return
linked_imprinter.eject(params["imprinter_ejectsheet"], text2num(params["amount"]))
return TRUE
if("disposeP") //Causes the protolathe to dispose of a single reagent (all of it)
if(!linked_lathe)
return
linked_lathe.reagents.del_reagent(params["dispose"])
return TRUE
if("disposeallP") //Causes the protolathe to dispose of all it's reagents.
if(!linked_lathe)
return
linked_lathe.reagents.clear_reagents()
return TRUE
if("removeP")
if(!linked_lathe)
return
linked_lathe.removeFromQueue(text2num(params["removeP"]))
return TRUE
if("lathe_ejectsheet") //Causes the protolathe to eject a sheet of material
if(!linked_lathe)
return
linked_lathe.eject(params["lathe_ejectsheet"], text2num(params["amount"]))
return TRUE
if("find_device") //The R&D console looks for devices nearby to link up with.
busy_msg = "Updating Database..."
spawn(10)
busy_msg = null
SyncRDevices()
update_static_data_for_all_viewers()
return TRUE
if("disconnect") //The R&D console disconnects with a specific device.
switch(params["disconnect"])
if("destroy")
linked_destroy.linked_console = null
linked_destroy = null
if("lathe")
linked_lathe.linked_console = null
linked_lathe = null
if("imprinter")
linked_imprinter.linked_console = null
linked_imprinter = null
update_static_data_for_all_viewers()
if("reset") //Reset the R&D console's database.
griefProtection()
var/choice = tgui_alert(ui.user, "R&D Console Database Reset", "Are you sure you want to reset the R&D console's database? Data lost cannot be recovered.", list("Continue", "Cancel"))
if(choice == "Continue")
busy_msg = "Updating Database..."
qdel(files)
files = new /datum/research(src)
spawn(20)
busy_msg = null
update_static_data_for_all_viewers()
if("print") //Print research information
busy_msg = "Printing Research Information. Please Wait..."
spawn(20)
var/obj/item/paper/PR = new/obj/item/paper
PR.name = "list of researched technologies"
PR.info = "<center><b>[station_name()] Science Laboratories</b>"
PR.info += "<h2>[ (text2num(params["print"]) == 2) ? "Detailed" : null] Research Progress Report</h2>"
PR.info += "<i>report prepared at [stationtime2text()] station time</i></center><br>"
if(text2num(params["print"]) == 2)
PR.info += GetResearchListInfo()
else
PR.info += GetResearchLevelsInfo()
PR.info_links = PR.info
PR.icon_state = "paper_words"
PR.forceMove(loc)
busy_msg = null
#undef ENTRIES_PER_RDPAGE
-42
View File
@@ -1,42 +0,0 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
//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
name = "R&D Device"
icon = 'icons/obj/machines/research.dmi'
density = TRUE
anchored = TRUE
use_power = USE_POWER_IDLE
var/busy = 0
var/obj/machinery/computer/rdconsole/linked_console
var/list/materials = list() // Materials this machine can accept.
var/list/hidden_materials = list() // Materials this machine will not display, unless it contains them. Must be in the materials list as well.
/obj/machinery/r_n_d/attack_hand(mob/user as mob)
return
/obj/machinery/r_n_d/proc/getMaterialType(var/name)
var/datum/material/M = get_material_by_name(name)
if(M && M.stack_type)
return M.stack_type
return null
/obj/machinery/r_n_d/proc/getMaterialName(var/type)
if(istype(type, /obj/item/stack/material))
var/obj/item/stack/material/M = type
return M.material.name
return null
/obj/machinery/r_n_d/proc/eject(var/material, var/amount)
if(!(material in materials))
return
var/obj/item/stack/material/sheetType = getMaterialType(material)
var/perUnit = initial(sheetType.perunit)
var/eject = round(materials[material] / perUnit)
eject = amount == -1 ? eject : min(eject, amount)
if(eject < 1)
return
new sheetType(loc, eject)
materials[material] -= eject * perUnit
-229
View File
@@ -1,229 +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. **
***************************************************************/
GLOBAL_LIST_INIT(design_datums, list())
/datum/research //Holder for all the existing, archived, and known tech. Individual to console.
var/list/known_tech = list() //List of locally known tech. Datum/tech go here.
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.
if(!LAZYLEN(GLOB.design_datums))
for(var/T in subtypesof(/datum/design))
GLOB.design_datums += new T
possible_designs = GLOB.design_datums
if(!LAZYLEN(known_tech))
for(var/T in subtypesof(/datum/tech))
known_tech += new T
RefreshResearch()
/datum/research/techonly
/datum/research/techonly/New()
. = ..()
possible_designs = list()
known_designs = list()
/datum/research/techonly/RefreshResearch()
. = ..()
known_designs = list() // Just in case
//Checks to see if design has all the required pre-reqs.
//Input: datum/design; Output: 0/1 (false/true)
/datum/research/proc/DesignHasReqs(var/datum/design/D)
if(!LAZYLEN(D.req_tech))
return TRUE
var/list/k_tech = list()
for(var/datum/tech/known in known_tech)
k_tech[known.id] = known.level
for(var/req in D.req_tech)
if(isnull(k_tech[req]) || k_tech[req] < D.req_tech[req])
return 0
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(var/datum/tech/T)
for(var/datum/tech/known in known_tech)
if(T.id == known.id)
if(T.level > known.level)
known.level = T.level
return
return
/datum/research/proc/AddDesign2Known(var/datum/design/D)
LAZYDISTINCTADD(known_designs, D)
//Refreshes known_tech and known_designs list
//Input/Output: n/a
/datum/research/proc/RefreshResearch()
for(var/datum/design/PD in possible_designs)
if(DesignHasReqs(PD))
AddDesign2Known(PD)
for(var/datum/tech/T in known_tech)
T.level = between(0, T.level, 20)
return
//Refreshes the levels of a given tech.
//Input: Tech's ID and Level; Output: null
/datum/research/proc/UpdateTech(var/ID, var/level)
for(var/datum/tech/KT in known_tech)
if(KT.id == ID && KT.level <= level)
KT.level = max(KT.level + 1, level - 1)
return
// A simple helper proc to find the name of a tech with a given ID.
/proc/CallTechName(var/ID)
for(var/datum/tech/check_tech as anything in subtypesof(/datum/tech))
if(initial(check_tech.id) == ID)
return initial(check_tech.name)
/***************************************************************
** 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.
/datum/tech/materials
name = "Materials Research"
desc = "Development of new and improved materials."
id = TECH_MATERIAL
/datum/tech/engineering
name = "Engineering Research"
desc = "Development of new and improved engineering parts."
id = TECH_ENGINEERING
/datum/tech/phorontech
name = "Phoron Research"
desc = "Research into the mysterious substance colloqually known as 'phoron'."
id = TECH_PHORON
/datum/tech/powerstorage
name = "Power Manipulation Technology"
desc = "The various technologies behind the storage and generation of electicity."
id = TECH_POWER
/datum/tech/bluespace
name = "'Blue-space' Research"
desc = "Research into the sub-reality known as 'blue-space'"
id = TECH_BLUESPACE
/datum/tech/biotech
name = "Biological Technology"
desc = "Research into the deeper mysteries of life and organic substances."
id = TECH_BIO
/datum/tech/combat
name = "Combat Systems Research"
desc = "The development of offensive and defensive systems."
id = TECH_COMBAT
/datum/tech/magnets
name = "Electromagnetic Spectrum Research"
desc = "Research into the electromagnetic spectrum. No clue how they actually work, though."
id = TECH_MAGNET
/datum/tech/programming
name = "Data Theory Research"
desc = "The development of new computer and artificial intelligence and data storage systems."
id = TECH_DATA
/datum/tech/syndicate
name = "Transgressive Technologies Research"
desc = "The study of technologies that sit on the very boundaries of legality and ethics."
id = TECH_ILLEGAL
level = 0
/datum/tech/arcane
name = "Anomalous Research"
desc = "Study of phenomena that disobey the fundamental laws of this universe."
id = TECH_ARCANE
level = 0
/datum/tech/precursor
name = "Precursor Research"
desc = "The applied study of Precursor Technology, for modern applications."
id = TECH_PRECURSOR
level = 0
/obj/item/disk/tech_disk
name = "technology disk"
desc = "A disk for storing technology data for further research."
icon = 'icons/obj/discs_vr.dmi' //VOREStation Edit
icon_state = "data-blue" //VOREStation Edit
item_state = "card-id"
randpixel = 5
w_class = ITEMSIZE_SMALL
matter = list(MAT_STEEL = 30, MAT_GLASS = 10)
var/datum/tech/stored
/obj/item/disk/tech_disk/Initialize(mapload)
. = ..()
randpixel_xy()
/obj/item/disk/design_disk
name = "component design disk"
desc = "A disk for storing device design data for construction in lathes."
icon = 'icons/obj/discs_vr.dmi' //VOREStation Edit
icon_state = "data-purple" //VOREStation Edit
item_state = "card-id"
randpixel = 5
w_class = ITEMSIZE_SMALL
matter = list(MAT_STEEL = 30, MAT_GLASS = 10)
var/datum/design/blueprint
/obj/item/disk/design_disk/Initialize(mapload)
. = ..()
randpixel_xy()
-312
View File
@@ -1,312 +0,0 @@
/obj/machinery/r_n_d/server
name = "R&D Server"
icon = 'icons/obj/machines/research_vr.dmi' //VOREStation Edit - New Icon
icon_state = "server"
var/datum/research/files
var/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 = ""
var/server_id = 0
var/produces_heat = 1
idle_power_usage = 800
var/delay = 10
req_access = list(access_rd) //Only the R&D can change server settings.
circuit = /obj/item/circuitboard/rdserver
/obj/machinery/r_n_d/server/Initialize(mapload)
. = ..()
default_apply_parts()
/obj/machinery/r_n_d/server/Destroy()
griefProtection()
. = ..()
/obj/machinery/r_n_d/server/RefreshParts()
var/tot_rating = 0
for(var/obj/item/stock_parts/SP in src)
tot_rating += SP.rating
update_idle_power_usage(initial(idle_power_usage) / 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)
health = min(100, health + 1)
if(T0C to (T20C + 20))
health = between(0, health, 100)
if((T20C + 20) to (T0C + 70))
health = max(0, health - 1)
if(health <= 0)
griefProtection() //I dont like putting this in process() but it's the best I can do without re-writing a chunk of rd servers.
files.known_designs = list()
for(var/datum/tech/T in files.known_tech)
if(prob(1))
T.level--
files.RefreshResearch()
if(delay)
delay--
else
produce_heat()
delay = initial(delay)
/obj/machinery/r_n_d/server/emp_act(severity)
griefProtection()
..()
/obj/machinery/r_n_d/server/ex_act(severity)
griefProtection()
..()
//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/datum/tech/T in files.known_tech)
C.files.AddTech2Known(T)
for(var/datum/design/D in files.known_designs)
C.files.AddDesign2Known(D)
C.files.RefreshResearch()
/obj/machinery/r_n_d/server/proc/produce_heat()
if(!produces_heat)
return
if(!use_power)
return
if(!(stat & (NOPOWER|BROKEN))) //Blatently stolen from telecoms
var/turf/simulated/L = loc
if(istype(L))
var/datum/gas_mixture/env = L.return_air()
var/transfer_moles = 0.25 * env.total_moles
var/datum/gas_mixture/removed = env.remove(transfer_moles)
if(removed)
var/heat_produced = idle_power_usage //obviously can't produce more heat than the machine draws from it's power source
removed.add_thermal_energy(heat_produced)
env.merge(removed)
/obj/machinery/r_n_d/server/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(default_deconstruction_screwdriver(user, O))
return
if(default_deconstruction_crowbar(user, O))
return
if(default_part_replacement(user, O))
return
/obj/machinery/r_n_d/server/centcom
name = "Central R&D Database"
server_id = -1
/obj/machinery/r_n_d/server/centcom/proc/update_connections()
var/list/no_id_servers = list()
var/list/server_ids = list()
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
switch(S.server_id)
if(-1)
continue
if(0)
no_id_servers += S
else
server_ids += S.server_id
for(var/obj/machinery/r_n_d/server/S in no_id_servers)
var/num = 1
while(!S.server_id)
if(num in server_ids)
num++
else
S.server_id = num
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"
desc = "Manage the research designs and servers. Can also modify upload/download permissions to R&D consoles."
icon_keyboard = "rd_key"
icon_screen = "rdcomp"
light_color = "#a97faa"
circuit = /obj/item/circuitboard/rdservercontrol
var/screen = 0
var/obj/machinery/r_n_d/server/temp_server
var/list/servers = list()
var/list/consoles = list()
var/badmin = 0
/obj/machinery/computer/rdservercontrol/tgui_status(mob/user)
. = ..()
if(!allowed(user) && !emagged)
. = min(., STATUS_UPDATE)
/obj/machinery/computer/rdservercontrol/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "ResearchServerController", name)
ui.open()
/obj/machinery/computer/rdservercontrol/tgui_data(mob/user, datum/tgui/ui, datum/tgui_state/state)
var/list/data = ..()
data["badmin"] = badmin
var/list/server_list = list()
data["servers"] = server_list
for(var/obj/machinery/r_n_d/server/S in GLOB.machines)
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
continue
var/list/tech = list()
var/list/designs = list()
var/list/server_data = list(
"name" = S.name,
"ref" = REF(S),
"id" = S.server_id,
"id_with_upload" = S.id_with_upload,
"id_with_download" = S.id_with_download,
"tech" = tech,
"designs" = designs,
)
for(var/datum/tech/T in S.files.known_tech)
tech.Add(list(list(
"name" = T.name,
"id" = T.id,
)))
for(var/datum/design/D in S.files.known_designs)
designs.Add(list(list(
"name" = D.name,
"id" = D.id,
)))
server_list.Add(list(server_data))
var/list/console_list = list()
data["consoles"] = console_list
for(var/obj/machinery/computer/rdconsole/C in GLOB.machines)
if(!C.sync)
continue
console_list.Add(list(list(
"name" = C.name,
"ref" = REF(C),
"loc" = get_area(C),
"id" = C.id,
)))
return data
/obj/machinery/computer/rdservercontrol/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
if(..())
return TRUE
add_fingerprint(ui.user)
switch(action)
if("toggle_upload", "toggle_download")
var/obj/machinery/r_n_d/server/S = locate(params["server"])
if(!istype(S))
return
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
return
var/obj/machinery/computer/rdconsole/C = locate(params["console"])
if(!istype(C) || !C.sync)
return
switch(action)
if("toggle_upload")
if(C.id in S.id_with_upload)
S.id_with_upload -= C.id
else
S.id_with_upload += C.id
if("toggle_download")
if(C.id in S.id_with_download)
S.id_with_download -= C.id
else
S.id_with_download += C.id
return TRUE
if("reset_tech")
var/obj/machinery/r_n_d/server/target = locate(params["server"])
if(!istype(target))
return FALSE
var/choice = tgui_alert(ui.user, "Technology Data Rest", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", list("Continue", "Cancel"))
if(choice == "Continue")
for(var/datum/tech/T in target.files.known_tech)
if(T.id == params["tech"])
T.level = 1
break
target.files.RefreshResearch()
return TRUE
if("reset_design")
var/obj/machinery/r_n_d/server/target = locate(params["server"])
if(!istype(target))
return FALSE
var/choice = tgui_alert(ui.user, "Design Data Deletion", "Are you sure you want to delete this design? If you still have the prerequisites for the design, it'll reset to its base reliability. Data lost cannot be recovered.", list("Continue", "Cancel"))
if(choice == "Continue")
for(var/datum/design/D in target.files.known_designs)
if(D.id == params["design"])
target.files.known_designs -= D
break
target.files.RefreshResearch()
return TRUE
if("transfer_data")
if(!badmin)
// no href exploits, you've been r e p o r t e d
log_admin("Warning: [key_name(ui.user)] attempted to transfer R&D data from [params["server"]] to [params["target"]] via href exploit with [src] [COORD(src)]")
message_admins("Warning: [ADMIN_FULLMONTY(ui.user)] attempted to transfer R&D data from [params["server"]] to [params["target"]] via href exploit with [src] [ADMIN_COORDJMP(src)]")
return FALSE
var/obj/machinery/r_n_d/server/from = locate(params["server"])
if(!istype(from))
return
var/obj/machinery/r_n_d/server/target = locate(params["target"])
if(!istype(target))
return
target.files.known_designs |= from.files.known_designs
target.files.known_tech |= from.files.known_tech
return TRUE
/obj/machinery/computer/rdservercontrol/attack_hand(mob/user as mob)
if(stat & (BROKEN|NOPOWER))
return
tgui_interact(user)
/obj/machinery/computer/rdservercontrol/emag_act(var/remaining_charges, var/mob/user)
if(!emagged)
playsound(src, 'sound/effects/sparks4.ogg', 75, 1)
emagged = 1
to_chat(user, span_notice("You you disable the security protocols."))
SStgui.update_uis(src)
return 1
/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
-23
View File
@@ -1,23 +0,0 @@
/*
P - teleporteing item stuff
*/
/datum/design/item/teleport/AssembleDesignName()
..()
name = "Teleportation device prototype ([item_name])"
/datum/design/item/teleport/translocator
name = "Personal translocator"
id = "translocator"
req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 6)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_DIAMOND = 2000)
build_path = /obj/item/perfect_tele
sort_string = "PAAAA"
/datum/design/item/teleport/bluespace_crystal
name = "Artificial Bluespace Crystal"
id = "bluespace_crystal"
req_tech = list(TECH_BLUESPACE = 3, TECH_PHORON = 4)
materials = list(MAT_DIAMOND = 1500, MAT_PHORON = 1500)
build_path = /obj/item/bluespace_crystal/artificial
sort_string = "PAAAB"
+72
View File
@@ -0,0 +1,72 @@
/client/verb/techweb_designs_without_owners()
set name = "DEBUG: Techweb Designs Without Owners"
set category = "Debug"
var/list/designs = SSresearch.techweb_designs.Copy()
for(var/node_id in SSresearch.techweb_nodes)
var/datum/techweb_node/node = SSresearch.techweb_nodes[node_id]
designs -= node.design_ids
to_chat(src, json_encode(designs, JSON_PRETTY_PRINT))
/client/verb/techweb_designs_without_btype()
set name = "DEBUG: Techweb Designs Without build_type"
set category = "Debug"
var/list/bad_designs = list()
for(var/id in SSresearch.techweb_designs)
var/datum/design_techweb/D = SSresearch.techweb_designs[id]
if(D.build_type == null)
bad_designs += id
to_chat(src, json_encode(bad_designs, JSON_PRETTY_PRINT))
/proc/flag2department(flag)
switch(flag)
if(1<<0)
return "DEPARTMENT_BITFLAG_SECURITY"
if(1<<1)
return "DEPARTMENT_BITFLAG_COMMAND"
if(1<<2)
return "DEPARTMENT_BITFLAG_SERVICE"
if(1<<3)
return "DEPARTMENT_BITFLAG_CARGO"
if(1<<4)
return "DEPARTMENT_BITFLAG_ENGINEERING"
if(1<<5)
return "DEPARTMENT_BITFLAG_SCIENCE"
if(1<<6)
return "DEPARTMENT_BITFLAG_MEDICAL"
if(1<<7)
return "DEPARTMENT_BITFLAG_SILICON"
if(1<<8)
return "DEPARTMENT_BITFLAG_ASSISTANT"
if(1<<9)
return "DEPARTMENT_BITFLAG_CAPTAIN"
return "INVALID"
/client/verb/techweb_designs_list()
set name = "DEBUG: Techweb Designs List"
set category = "Debug"
var/list/designs_by_flag = list()
var/flag = 1
for(var/i in 1 to 32)
designs_by_flag["[flag]"] = list()
for(var/id in SSresearch.techweb_designs)
var/datum/design_techweb/D = SSresearch.techweb_designs[id]
if(D.departmental_flags & flag)
designs_by_flag["[flag]"] += "[D.name] ([D.id])"
flag <<= 1
for(var/flager in designs_by_flag)
var/list/designs = designs_by_flag[flager]
to_chat(src, "-- [flag2department(text2num(flager))] --")
to_chat(src, json_encode(designs, JSON_PRETTY_PRINT))
+92
View File
@@ -0,0 +1,92 @@
/***************************************************************
** Design Datums **
** All the data for building stuff. **
***************************************************************/
/*
For the materials datum, it assumes you need reagents unless specified otherwise. To designate a material that isn't a reagent,
you use one of the material IDs below. These are NOT ids in the usual sense (they aren't defined in the object or part of a datum),
they are simply references used as part of a "has materials?" type proc. They all start with a $ to denote that they aren't reagents.
The currently supporting non-reagent materials. All material amounts are set as the define SHEET_MATERIAL_AMOUNT, which defaults to 100
Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from iron). Only add raw materials.
Design Guidelines
- When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed.
- A single sheet of anything is 100 units of material. Materials besides iron/glass require help from other jobs (mining for
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! //why are you yelling?
//DO NOT REFERENCE OUTSIDE OF SSRESEARCH. USE THE PROCS IN SSRESEARCH TO OBTAIN A REFERENCE.
/datum/design_techweb //Datum for object designs, used in construction
/// Name of the created object
var/name = "Name"
/// Description of the created object
var/desc = null
/// The ID of the design. Used for quick reference. Alphanumeric, lower-case, no symbols
var/id = DESIGN_ID_IGNORE
/// Bitflags indicating what machines this design is compatable with. ([IMPRINTER]|[AWAY_IMPRINTER]|[PROTOLATHE]|[AWAY_LATHE]|[AUTOLATHE]|[MECHFAB]|[BIOGENERATOR]|[LIMBGROWER]|[SMELTER])
var/build_type = null
/// List of materials required to create one unit of the product. Format is (typepath or caregory) -> amount
var/list/materials = list()
/// The amount of time required to create one unit of the product.
var/construction_time = 3.2 SECONDS
/// The typepath of the object produced by this design
var/build_path = null
/// Reagent produced by this design. Currently only supported by the biogenerator.
var/make_reagent
/// What categories this design falls under. Used for sorting in production machines.
var/list/category = list()
/// List of reagents required to create one unit of the product. Currently only supported by the limb grower.
var/list/reagents_list = list()
/// How many times faster than normal is this to build on the protolathe
var/lathe_time_factor = 1
/// Bitflags indicating what departmental lathes should be allowed to process this design.
var/departmental_flags = ALL
/// What techwebs nodes unlock this design. Constructed by SSresearch
var/list/datum/techweb_node/unlocked_by = list()
/// Override for the automatic icon generation used for the research console.
var/research_icon
/// Override for the automatic icon state generation used for the research console.
var/research_icon_state
/// Appears to be unused.
var/icon_cache
/// Optional string that interfaces can use as part of search filters. See- item/borg/upgrade/ai and the Exosuit Fabs.
var/search_metadata
/// For protolathe designs that don't require reagents: If they can be exported to autolathes with a design disk or not.
var/autolathe_exportable = TRUE
/datum/design_techweb/error_design
name = "ERROR"
desc = "This usually means something in the database has corrupted. If this doesn't go away automatically, inform Central Command so their techs can fix this ASAP(tm)"
/datum/design_techweb/Destroy()
SSresearch.techweb_designs -= id
return ..()
/datum/design_techweb/proc/InitializeMaterials()
var/list/temp_list = list()
for(var/i in materials) //Go through all of our materials, get the subsystem instance, and then replace the list.
var/amount = materials[i]
if(!istext(i)) //Not a category, so get the ref the normal way
var/datum/material/M = GET_MATERIAL_REF(i)
temp_list[M] = amount
else
temp_list[i] = amount
materials = temp_list
/datum/design_techweb/proc/icon_html(client/user)
var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/research_designs)
sheet.send(user)
return sheet.icon_tag(id)
/// Returns the description of the design
/datum/design_techweb/proc/get_description()
var/obj/object_build_item_path = build_path
return isnull(desc) ? initial(object_build_item_path.desc) : desc
/datum/design_techweb/proc/create_item(target)
return new build_path(target)
@@ -0,0 +1,278 @@
/datum/design_techweb/board/aicore
name = "AI core circuit"
id = "aicore"
// req_tech = list(TECH_DATA = 4, TECH_BIO = 3)
build_path = /obj/item/circuitboard/aicore
category = list(
RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/mmi
name = "Man-machine interface"
id = "mmi"
// req_tech = list(TECH_DATA = 2, TECH_BIO = 3)
build_type = PROTOLATHE | PROSFAB
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500)
build_path = /obj/item/mmi
category = list(
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/posibrain
name = "Positronic brain"
id = "posibrain"
// req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 6, TECH_BLUESPACE = 2, TECH_DATA = 4)
build_type = PROTOLATHE | PROSFAB
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 500, MAT_PHORON = 500, MAT_DIAMOND = 100)
build_path = /obj/item/mmi/digital/posibrain
category = list(
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/dronebrain
name = "Robotic intelligence circuit"
id = "dronebrain"
// req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_DATA = 4)
build_type = PROTOLATHE | PROSFAB
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 500)
build_path = /obj/item/mmi/digital/robot
category = list(
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CONTROL_INTERFACES
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/paicard
name = "'pAI', personal artificial intelligence device"
id = "paicard"
build_type = PROTOLATHE
// req_tech = list(TECH_DATA = 2)
materials = list(MAT_GLASS = 500, MAT_STEEL = 500)
build_path = /obj/item/paicard
category = list(
RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/intellicard
name = "intelliCore"
desc = "Allows for the construction of an intelliCore."
id = "intellicore"
build_type = PROTOLATHE
// req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4)
materials = list(MAT_GLASS = 1000, MAT_GOLD = 200)
build_path = /obj/item/aicard
category = list(
RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/aimodule
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000, MAT_GOLD = 100)
category = list(
RND_CATEGORY_AI + RND_SUBCATEGORY_AI_LAW_MANIPULATION
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/aimodule/New()
. = ..()
name = "AI module design ([name])"
/datum/design_techweb/aimodule/safeguard
name = "Safeguard"
id = "safeguard"
// req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4)
build_path = /obj/item/aiModule/safeguard
/datum/design_techweb/aimodule/onehuman
name = "OneCrewMember"
id = "onehuman"
// req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/oneHuman
/datum/design_techweb/aimodule/protectstation
name = "ProtectStation"
id = "protectstation"
// req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/protectStation
/datum/design_techweb/aimodule/notele
name = "TeleporterOffline"
id = "notele"
// req_tech = list(TECH_DATA = 3)
build_path = /obj/item/aiModule/teleporterOffline
/datum/design_techweb/aimodule/quarantine
name = "Quarantine"
id = "quarantine"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4)
build_path = /obj/item/aiModule/quarantine
/datum/design_techweb/aimodule/oxygen
name = "OxygenIsToxicToHumans"
id = "oxygen"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4)
build_path = /obj/item/aiModule/oxygen
/datum/design_techweb/aimodule/freeform
name = "Freeform"
id = "freeform"
// req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4)
build_path = /obj/item/aiModule/freeform
/datum/design_techweb/aimodule/reset
name = "Reset"
id = "reset"
// req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/reset
/datum/design_techweb/aimodule/purge
name = "Purge"
id = "purge"
// req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/purge
// Core modules
/datum/design_techweb/aimodule/core
category = list(
RND_CATEGORY_AI + RND_SUBCATEGORY_AI_CORE_MODULES
)
/datum/design_techweb/aimodule/core/New()
. = ..()
name = "AI core module design ([initial(name)])"
/datum/design_techweb/aimodule/core/freeformcore
name = "Freeform"
id = "freeformcore"
build_path = /obj/item/aiModule/freeformcore
/datum/design_techweb/aimodule/core/asimov
name = "Asimov"
id = "asimov"
build_path = /obj/item/aiModule/asimov
/datum/design_techweb/aimodule/core/paladin
name = "P.A.L.A.D.I.N."
id = "paladin"
build_path = /obj/item/aiModule/paladin
/datum/design_techweb/aimodule/core/tyrant
name = "T.Y.R.A.N.T."
id = "tyrant"
// req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/tyrant
/datum/design_techweb/aimodule/core/nanotrasen
name = "NT Default"
id = "nanotrasen"
build_path = /obj/item/aiModule/nanotrasen
// req_tech = list(TECH_DATA = 1)
/datum/design_techweb/aimodule/core/predator
name = "Predator"
id = "laws_predator_vr"
// req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/predator
/datum/design_techweb/aimodule/core/protective_shell
name = "Protective Shell"
id = "laws_protective_shell_vr"
// req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/protective_shell
/datum/design_techweb/aimodule/core/scientific_pursuer
name = "Scientific Pursuer"
id = "laws_scientific_pursuer_vr"
// req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/scientific_pursuer
/datum/design_techweb/aimodule/core/guard_dog
name = "Guard Dog"
id = "laws_guard_dog_vr"
// req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/guard_dog
/datum/design_techweb/aimodule/core/pleasurebot
name = "Pleasurebot"
id = "laws_pleasurebot_vr"
// req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/pleasurebot
/datum/design_techweb/aimodule/core/consuming_eradicator
name = "Consuming Eradicator"
id = "laws_consuming_eradicator_vr"
// req_tech = list(TECH_DATA = 4, TECH_BIO = 3, TECH_ILLEGAL = 6, TECH_MATERIAL = 6)
build_path = /obj/item/aiModule/consuming_eradicator
// Illegal modules
/datum/design_techweb/aimodule/illegal
materials = list(MAT_GLASS = 4000, MAT_GOLD = 500)
// req_tech = list(TECH_DATA = 6, TECH_ILLEGAL = 7, TECH_MATERIAL = 9, TECH_COMBAT = 7)
/datum/design_techweb/aimodule/illegal/New()
. = ..()
name = "AI illegal module design ([initial(name)])"
/datum/design_techweb/aimodule/illegal/noengine
name = "EngineOffline"
id = "noengine"
// req_tech = list(TECH_DATA = 5, TECH_ILLEGAL = 5, TECH_MATERIAL = 6, TECH_COMBAT = 7)
build_path = /obj/item/aiModule/prototypeEngineOffline
/datum/design_techweb/aimodule/illegal/corp
name = "Corporate"
id = "corp"
// req_tech = list(TECH_DATA = 2, TECH_ILLEGAL = 4, TECH_MATERIAL = 2, TECH_COMBAT = 2)
build_path = /obj/item/aiModule/corp
/datum/design_techweb/aimodule/illegal/robocop
name = "Robocop"
id = "robocop"
// req_tech = list(TECH_DATA = 2, TECH_ILLEGAL = 2, TECH_MATERIAL = 2, TECH_COMBAT = 4)
build_path = /obj/item/aiModule/robocop
/datum/design_techweb/aimodule/illegal/antimov
name = "Antimov"
id = "antimov"
// req_tech = list(TECH_DATA = 6, TECH_ILLEGAL = 7, TECH_MATERIAL = 7, TECH_COMBAT = 5)
build_path = /obj/item/aiModule/antimov
/datum/design_techweb/aimodule/illegal/nanotrasen_aggressive
name = "NT Aggressive"
id = "nanotrasen_aggressive"
// req_tech = list(TECH_DATA = 5, TECH_ILLEGAL = 6, TECH_MATERIAL = 3, TECH_COMBAT = 7)
build_path = /obj/item/aiModule/nanotrasen_aggressive
/datum/design_techweb/aimodule/illegal/maintenance
name = "Maintenance"
id = "maintenance"
// req_tech = list(TECH_DATA = 3, TECH_ILLEGAL = 2, TECH_MATERIAL = 3, TECH_COMBAT = 2)
build_path = /obj/item/aiModule/maintenance
/datum/design_techweb/aimodule/illegal/peacekeeper
name = "Peacekeeper"
id = "peacekeeper"
// req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 3, TECH_MATERIAL = 2, TECH_COMBAT = 2)
build_path = /obj/item/aiModule/peacekeeper
/datum/design_techweb/aimodule/illegal/reporter
name = "Reporter"
id = "reporter"
// req_tech = list(TECH_DATA = 2, TECH_ILLEGAL = 2, TECH_MATERIAL = 3)
build_path = /obj/item/aiModule/reporter
/datum/design_techweb/aimodule/illegal/live_and_let_live
name = "Live and Let Live"
id = "live_and_let_live"
// req_tech = list(TECH_DATA = 5, TECH_ILLEGAL = 3, TECH_MATERIAL = 4, TECH_COMBAT = 3)
build_path = /obj/item/aiModule/live_and_let_live
/datum/design_techweb/aimodule/illegal/balance
name = "Guardian of Balance."
id = "balance"
// req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 2, TECH_MATERIAL = 2, TECH_COMBAT = 3)
build_path = /obj/item/aiModule/balance
@@ -0,0 +1,57 @@
/datum/design_techweb/board/atmosalerts
name = "atmosphere alert console circuit"
id = "atmosalerts"
build_path = /obj/item/circuitboard/atmos_alert
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/air_management
name = "atmosphere monitoring console circuit"
id = "air_management"
build_path = /obj/item/circuitboard/air_management
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/shutoff_monitor
name = "Automatic shutoff valve monitor circuit"
id = "shutoff_monitor"
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/shutoff_monitor
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/gas_heater
name = "gas heating system circuit"
id = "gasheater"
// req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/unary_atmos/heater
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/gas_cooler
name = "gas cooling system circuit"
id = "gascooler"
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/unary_atmos/cooler
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/arf_generator
name = "atmospheric field generator circuit"
id = "arf_generator"
// req_tech = list(TECH_MAGNET = 4, TECH_POWER = 4, TECH_BIO = 3)
build_path = /obj/item/circuitboard/arf_generator
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ATMOS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,48 @@
/datum/design_techweb/board/ordercomp
name = "supply ordering console circuit"
id = "ordercomp"
build_path = /obj/item/circuitboard/supplycomp
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/supplycomp
name = "supply control console circuit"
id = "supplycomp"
// req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/supplycomp/control
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/miningdrill
name = "mining drill head circuit"
id = "mining drill head"
// req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/miningdrill
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/miningdrillbrace
name = "mining drill brace circuit"
id = "mining drill brace"
// req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
build_path = /obj/item/circuitboard/miningdrillbrace
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/ore_silo
name = "Ore Silo Board"
desc = "The circuit board for an ore silo."
id = "ore_silo"
build_path = /obj/item/circuitboard/machine/ore_silo
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,315 @@
/datum/design_techweb/board/rcon_console
name = "RCON remote control console circuit"
id = "rcon_console"
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5)
build_path = /obj/item/circuitboard/rcon_console
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/dronecontrol
name = "drone control console circuit"
id = "dronecontrol"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/drone_control
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/powermonitor
name = "power monitoring console circuit"
id = "powermonitor"
build_path = /obj/item/circuitboard/powermonitor
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/solarcontrol
name = "solar control console circuit"
id = "solarcontrol"
build_path = /obj/item/circuitboard/solar_control
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/pacman
name = "PACMAN-type generator circuit"
id = "pacman"
// req_tech = list(TECH_DATA = 3, TECH_PHORON = 3, TECH_POWER = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/pacman
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/superpacman
name = "SUPERPACMAN-type generator circuit"
id = "superpacman"
// req_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_path = /obj/item/circuitboard/pacman/super
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/mrspacman
name = "MRSPACMAN-type generator circuit"
id = "mrspacman"
// req_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/pacman/mrs
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/batteryrack
name = "cell rack PSU circuit"
id = "batteryrack"
// req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/batteryrack
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/smes_cell
name = "'SMES' superconductive magnetic energy storage circuit"
desc = "Allows for the construction of circuit boards used to build a SMES."
id = "smes_cell"
// req_tech = list(TECH_POWER = 7, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/smes
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/grid_checker
name = "power grid checker circuit"
desc = "Allows for the construction of circuit boards used to build a grid checker."
id = "grid_checker"
// req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/grid_checker
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/breakerbox
name = "breaker box circuit"
desc = "Allows for the construction of circuit boards used to build a breaker box."
id = "breakerbox"
// req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/breakerbox
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/secure_airlock
name = "secure airlock electronics circuit"
desc = "Allows for the construction of a tamper-resistant airlock electronics."
id = "securedoor"
// req_tech = list(TECH_DATA = 3)
build_path = /obj/item/airlock_electronics/secure
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/shield_generator
name = "shield generator circuit"
id = "shield_generator"
// req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4, TECH_BLUESPACE = 2, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/shield_generator
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/shield_diffuser
name = "shield diffuser circuit"
id = "shield_diffuser"
// req_tech = list(TECH_MAGNET = 4, TECH_POWER = 2, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/shield_diffuser
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/pointdefense
name = "point defense battery circuit"
id = "pointdefense"
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4)
build_path = /obj/item/circuitboard/pointdefense
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/pointdefense_control
name = "point defense control circuit"
id = "pointdefense_control"
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/pointdefense_control
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/recycler_crusher
name = "recycler - crusher circuit"
id = "recycler_crusher"
// req_tech = list(TECH_MATERIAL = 2)
build_path = /obj/item/circuitboard/recycler_crusher
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/recycler_sorter
name = "recycler - sorter circuit"
id = "recycler_sorter"
// req_tech = list(TECH_MATERIAL = 2)
build_path = /obj/item/circuitboard/recycler_sorter
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/recycler_stamper
name = "recycler - stamper circuit"
id = "recycler_stamper"
// req_tech = list(TECH_MATERIAL = 2)
build_path = /obj/item/circuitboard/recycler_stamper
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/algae_farm
name = "Algae Oxygen Generator circuit"
id = "algae_farm"
// req_tech = list(TECH_ENGINEERING = 3, TECH_BIO = 2)
build_path = /obj/item/circuitboard/algae_farm
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/thermoregulator
name = "thermal regulator circuit"
id = "thermoregulator"
// req_tech = list(TECH_ENGINEERING = 4, TECH_POWER = 3)
build_path = /obj/item/circuitboard/thermoregulator
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/partslathe
name = "Parts lathe circuit"
id = "partslathe"
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/partslathe
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/rtg
name = "radioisotope TEG circuit"
id = "rtg"
// req_tech = list(TECH_DATA = 3, TECH_POWER = 3, TECH_PHORON = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/machine/rtg
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/rtg_advanced
name = "advanced radioisotope TEG circuit"
id = "adv_rtg"
// req_tech = list(TECH_DATA = 5, TECH_POWER = 5, TECH_PHORON = 5, TECH_ENGINEERING = 5)
build_path = /obj/item/circuitboard/machine/rtg/advanced
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/pointdefense
name = "point defense battery circuit"
id = "pointdefense"
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 3, TECH_COMBAT = 4)
build_path = /obj/item/circuitboard/pointdefense
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/pointdefense_control
name = "point defense control circuit"
id = "pointdefense_control"
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/pointdefense_control
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/fusion
name = "Fusion Core Control Console"
id = "fusion_core_control"
build_path = /obj/item/circuitboard/fusion_core_control
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/fusion/fuel_compressor
name = "Fusion Fuel Compressor"
id = "fusion_fuel_compressor"
build_path = /obj/item/circuitboard/fusion_fuel_compressor
/datum/design_techweb/board/fusion/fuel_control
name = "Fusion Fuel Control Console"
id = "fusion_fuel_control"
build_path = /obj/item/circuitboard/fusion_fuel_control
/datum/design_techweb/board/fusion/gyrotron_control
name = "Gyrotron Control Console"
id = "gyrotron_control"
build_path = /obj/item/circuitboard/gyrotron_control
/datum/design_techweb/board/fusion/core
name = "Fusion Core"
id = "fusion_core"
build_path = /obj/item/circuitboard/fusion_core
/datum/design_techweb/board/fusion/injector
name = "Fusion Fuel Injector"
id = "fusion_injector"
build_path = /obj/item/circuitboard/fusion_injector
/datum/design_techweb/board/airlock_cycling
name = "Machine Design (Cycling Airlock Board)"
desc = "The circuit board for cycling airlock parts."
id = "airlock_cycling"
build_path = /obj/item/circuitboard/airlock_cycling
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/tesla_coil
name = "Machine Design (Tesla Coil Board)"
desc = "The circuit board for a tesla coil."
id = "tesla_coil"
build_path = /obj/item/circuitboard/tesla_coil
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,60 @@
// Cooking Appliances
/datum/design_techweb/board/microwave
name = "microwave board circuit"
id = "microwave_board"
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/microwave
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/oven
name = "oven board circuit"
id = "oven_board"
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/oven
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/fryer
name = "deep fryer board circuit"
id = "fryer_board"
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/fryer
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/cerealmaker
name = "cereal maker board circuit"
id = "cerealmaker_board"
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/cerealmaker
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/candymaker
name = "candy machine board circuit"
id = "candymachine_board"
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/candymachine
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/microwave/advanced
name = "deluxe microwave circuit"
id = "deluxe microwave"
// req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
build_path = /obj/item/circuitboard/microwave/advanced
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,100 @@
/datum/design_techweb/board/clonepod
name = "clone pod circuit"
id = "clonepod"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/circuitboard/clonepod
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/clonescanner
name = "cloning scanner circuit"
id = "clonescanner"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/circuitboard/clonescanner
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/chem_master
name = "ChemMaster 3000 circuit"
id = "chemmaster"
// req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2)
build_path = /obj/item/circuitboard/chem_master
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/crewconsole
name = "crew monitoring console circuit"
id = "crewconsole"
// req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_BIO = 2)
build_path = /obj/item/circuitboard/crew
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/pandemic
name = "PanD.E.M.I.C 2200 circuit"
id = "pandemic"
// req_tech = list(TECH_DATA = 2, TECH_BIO = 2)
build_path = /obj/item/circuitboard/pandemic
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/transhuman_clonepod
name = "grower pod circuit"
id = "transhuman_clonepod"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/circuitboard/transhuman_clonepod
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/transhuman_resleever
name = "Resleeving pod circuit"
id = "transhuman_resleever"
// req_tech = list(TECH_ENGINEERING = 4, TECH_BIO = 4)
build_path = /obj/item/circuitboard/transhuman_resleever
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/resleeving_control
name = "Resleeving control console circuit"
id = "resleeving_control"
// req_tech = list(TECH_DATA = 5)
build_path = /obj/item/circuitboard/resleeving_control
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/body_designer
name = "Body design console circuit"
id = "body_designer"
// req_tech = list(TECH_DATA = 5)
build_path = /obj/item/circuitboard/body_designer
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/rtg
name = "vitals monitor circuit"
id = "vitals"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 4, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/machine/vitals_monitor
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,168 @@
/datum/design_techweb/board
name = "NULL ENTRY Board"
desc = "I promise this doesn't give you syndicate goodies!"
build_type = IMPRINTER
materials = list(MAT_GLASS = 2000)
category = list(
RND_CATEGORY_MACHINE
)
/datum/design_techweb/board/arcademachine
name = "battle arcade machine"
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
id = "arcademachine"
// req_tech = list(TECH_DATA = 1)
build_path = /obj/item/circuitboard/arcade/battle
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENTERTAINMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/board/oriontrail
name = "orion trail arcade machine"
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
id = "oriontrail"
// req_tech = list(TECH_DATA = 1)
build_path = /obj/item/circuitboard/arcade/orion_trail
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENTERTAINMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/board/clawmachine
name = "grab-a-gift arcade machine"
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
id = "clawmachine"
// req_tech = list(TECH_DATA = 1)
build_path = /obj/item/circuitboard/arcade/clawmachine
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_ENTERTAINMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/board/seccamera
name = "security camera monitor"
desc = "Allows for the construction of circuit boards used to build a security camera monitor."
id = "seccamera"
build_path = /obj/item/circuitboard/security
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/board/secdata
name = "security records console"
desc = "Allows for the construction of circuit boards used to build a security records console."
id = "sec_data"
build_path = /obj/item/circuitboard/secure_data
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/board/prisonmanage
name = "prisoner management console"
desc = "Allows for the construction of circuit boards used to build a prisoner management console."
id = "prisonmanage"
build_path = /obj/item/circuitboard/prisoner
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/board/med_data
name = "medical records console"
desc = "Allows for the construction of circuit boards used to build a medical records console."
id = "med_data"
build_path = /obj/item/circuitboard/med_data
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/board/operating
name = "patient monitoring console"
desc = "Allows for the construction of circuit boards used to build a patient monitoring console."
id = "operating"
build_path = /obj/item/circuitboard/operating
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/board/scan_console
name = "DNA console"
desc = "Allows for the construction of circuit boards used to build a DNA console."
id = "scan_console"
build_path = /obj/item/circuitboard/scan_consolenew
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/board/clonecontrol
name = "cloning control console circuit"
id = "clonecontrol"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/circuitboard/cloning
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/jukebox
name = "jukebox circuit"
id = "jukebox"
// req_tech = list(TECH_MAGNET = 2, TECH_DATA = 1)
build_path = /obj/item/circuitboard/jukebox
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BAR
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/teleconsole
name = "teleporter control console circuit"
id = "teleconsole"
// req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 2)
build_path = /obj/item/circuitboard/teleporter
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/biogenerator
name = "biogenerator circuit"
id = "biogenerator"
// req_tech = list(TECH_DATA = 2)
build_path = /obj/item/circuitboard/biogenerator
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_BOTANY
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/comconsole
name = "communications console circuit"
id = "comconsole"
build_path = /obj/item/circuitboard/communications
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_COMMAND
)
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/idcardconsole
name = "ID card modification console circuit"
id = "idcardconsole"
build_path = /obj/item/circuitboard/card
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_COMMAND
)
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/emp_data
name = "employment records console circuit"
id = "emp_data"
build_path = /obj/item/circuitboard/skills
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_COMMAND
)
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,180 @@
/datum/design_techweb/board/robocontrol
name = "robotics control console circuit"
id = "robocontrol"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/robotics
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/mechacontrol
name = "exosuit control console circuit"
id = "mechacontrol"
// req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/mecha_control
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/rdconsole
name = "R&D control console circuit"
id = "rdconsole"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/rdconsole
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/aifixer
name = "AI integrity restorer circuit"
id = "aifixer"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 2)
build_path = /obj/item/circuitboard/aifixer
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/aiupload
name = "AI upload console circuit"
id = "aiupload"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/aiupload
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/borgupload
name = "cyborg upload console circuit"
id = "borgupload"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/borgupload
category = list(
RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/circuit_imprinter
name = "circuit imprinter circuit"
id = "circuit_imprinter"
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/circuit_imprinter
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/autolathe
name = "autolathe board circuit"
id = "autolathe"
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/autolathe
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/rdserver
name = "R&D server circuit"
id = "rdserver"
// req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/machine/rdserver
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/mechfab
name = "exosuit fabricator circuit"
id = "mechfab"
// req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/mechfab
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/prosfab
name = "prosthetics fabricator circuit"
id = "prosfab"
// req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/prosthetics
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/mech_recharger
name = "mech recharger circuit"
id = "mech_recharger"
// req_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/mech_recharger
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/recharge_station
name = "cyborg recharge station circuit"
id = "recharge_station"
// req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/recharge_station
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/transhuman_synthprinter
name = "SynthFab 3000 circuit"
id = "transhuman_synthprinter"
// req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/circuitboard/transhuman_synthprinter
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
// Telesci stuff
/datum/design_techweb/board/telesci_console
name = "Telepad Control Console circuit"
id = "telesci_console"
// req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 3, TECH_PHORON = 4)
build_path = /obj/item/circuitboard/telesci_console
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/telesci_pad
name = "Telepad circuit"
id = "telesci_pad"
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5)
build_path = /obj/item/circuitboard/telesci_pad
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/quantum_pad
name = "Quantum Pad circuit"
id = "quantum_pad"
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_PHORON = 4, TECH_BLUESPACE = 5)
build_path = /obj/item/circuitboard/quantumpad
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELEPORT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/bomb_tester
name = "Explosive Effect Simulator circuit"
id = "bomb_tester"
// req_tech = list(TECH_PHORON = 3, TECH_DATA = 2, TECH_MAGNET = 2)
build_path = /obj/item/circuitboard/bomb_tester
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,146 @@
/datum/design_techweb/board/comm_monitor
name = "telecommunications monitoring console circuit"
id = "comm_monitor"
// req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/comm_monitor
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/comm_server
name = "telecommunications server monitoring console circuit"
id = "comm_server"
// req_tech = list(TECH_DATA = 3)
build_path = /obj/item/circuitboard/comm_server
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/message_monitor
name = "messaging monitor console circuit"
id = "message_monitor"
// req_tech = list(TECH_DATA = 5)
build_path = /obj/item/circuitboard/message_monitor
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/tcom
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/board/tcom/server
name = "server mainframe circuit"
id = "tcom-server"
build_path = /obj/item/circuitboard/telecomms/server
/datum/design_techweb/board/tcom/processor
name = "processor unit circuit"
id = "tcom-processor"
build_path = /obj/item/circuitboard/telecomms/processor
/datum/design_techweb/board/tcom/bus
name = "bus mainframe circuit"
id = "tcom-bus"
build_path = /obj/item/circuitboard/telecomms/bus
/datum/design_techweb/board/tcom/hub
name = "hub mainframe circuit"
id = "tcom-hub"
build_path = /obj/item/circuitboard/telecomms/hub
/datum/design_techweb/board/tcom/relay
name = "relay mainframe circuit"
id = "tcom-relay"
// req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3)
build_path = /obj/item/circuitboard/telecomms/relay
/datum/design_techweb/board/tcom/broadcaster
name = "subspace broadcaster circuit"
id = "tcom-broadcaster"
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2)
build_path = /obj/item/circuitboard/telecomms/broadcaster
/datum/design_techweb/board/tcom/receiver
name = "subspace receiver circuit"
id = "tcom-receiver"
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2)
build_path = /obj/item/circuitboard/telecomms/receiver
/datum/design_techweb/board/tcom/exonet_node
name = "exonet node circuit"
id = "tcom-exonet_node"
// req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
build_path = /obj/item/circuitboard/telecomms/exonet_node
/datum/design_techweb/board/ntnet_relay
name = "NTNet Quantum Relay circuit"
id = "ntnet_relay"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/ntnet_relay
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
// Telecomm parts
/datum/design_techweb/subspace
build_type = PROTOLATHE
category = list(
RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_TELECOMMS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/subspace/New()
. = ..()
var/obj/object_build_item_path = build_path
name = "Subspace component design ([initial(object_build_item_path.name)])"
/datum/design_techweb/subspace/subspace_ansible
id = "s-ansible"
// req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 80, MAT_SILVER = 20)
build_path = /obj/item/stock_parts/subspace/ansible
/datum/design_techweb/subspace/hyperwave_filter
id = "s-filter"
// req_tech = list(TECH_DATA = 3, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 40, MAT_SILVER = 10)
build_path = /obj/item/stock_parts/subspace/sub_filter
/datum/design_techweb/subspace/subspace_amplifier
id = "s-amplifier"
// req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 10, MAT_GOLD = 30, MAT_URANIUM = 15)
build_path = /obj/item/stock_parts/subspace/amplifier
/datum/design_techweb/subspace/subspace_treatment
id = "s-treatment"
// req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 10, MAT_SILVER = 20)
build_path = /obj/item/stock_parts/subspace/treatment
/datum/design_techweb/subspace/subspace_analyzer
id = "s-analyzer"
// req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 10, MAT_GOLD = 15)
build_path = /obj/item/stock_parts/subspace/analyzer
/datum/design_techweb/subspace/subspace_crystal
id = "s-crystal"
// req_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
materials = list(MAT_GLASS = 1000, MAT_SILVER = 20, MAT_GOLD = 20)
build_path = /obj/item/stock_parts/subspace/crystal
/datum/design_techweb/subspace/subspace_transmitter
id = "s-transmitter"
// req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5, TECH_BLUESPACE = 3)
materials = list(MAT_GLASS = 100, MAT_SILVER = 10, MAT_URANIUM = 15)
build_path = /obj/item/stock_parts/subspace/transmitter
@@ -0,0 +1,140 @@
/datum/design_techweb/custom_circuit_printer
name = "Portable integrated circuit printer"
desc = "A portable(ish) printer for modular machines."
id = "ic_printer"
// req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 4, TECH_DATA = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/integrated_circuit_printer
category = list(
RND_CATEGORY_CIRCUITRY
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/custom_circuit_printer_upgrade
name = "Integrated circuit printer upgrade - advanced designs"
desc = "Allows the integrated circuit printer to create advanced circuits"
id = "ic_printer_upgrade_adv"
// req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/disk/integrated_circuit/upgrade/advanced
category = list(
RND_CATEGORY_CIRCUITRY
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/wirer
name = "Custom wirer tool"
id = "wirer"
// req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 2500)
build_path = /obj/item/integrated_electronics/wirer
category = list(
RND_CATEGORY_CIRCUITRY
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/debugger
name = "Custom circuit debugger tool"
id = "debugger"
// req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 2500)
build_path = /obj/item/integrated_electronics/debugger
category = list(
RND_CATEGORY_CIRCUITRY
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
// Assemblies
/datum/design_techweb/custom_circuit_assembly_small
name = "Small custom assembly"
desc = "A customizable assembly for simple, small devices."
id = "assembly-small"
// req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_POWER = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/electronic_assembly
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/custom_circuit_assembly_medium
name = "Medium custom assembly"
desc = "A customizable assembly suited for more ambitious mechanisms."
id = "assembly-medium"
// req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 20000)
build_path = /obj/item/electronic_assembly/medium
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/custom_circuit_assembly_large
name = "Large custom assembly"
desc = "A customizable assembly for large machines."
id = "assembly-large"
// req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 40000)
build_path = /obj/item/electronic_assembly/large
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/custom_circuit_assembly_drone
name = "Drone custom assembly"
desc = "A customizable assembly optimized for autonomous devices."
id = "assembly-drone"
// req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 4, TECH_POWER = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 30000)
build_path = /obj/item/electronic_assembly/drone
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/custom_circuit_assembly_device
name = "Device custom assembly"
desc = "An customizable assembly designed to interface with other devices."
id = "assembly-device"
// req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000)
build_path = /obj/item/assembly/electronic_assembly
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/custom_circuit_assembly_implant
name = "Implant custom assembly"
desc = "An customizable assembly for very small devices, implanted into living entities."
id = "assembly-implant"
// req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 3, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/implant/integrated_circuit
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/circuit_bug
name = "Circuitry Bug"
desc = "A tiny circuit assembly that can easily be hidden."
id = "circuit-bug"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/electronic_assembly/circuit_bug
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,390 @@
/datum/design_techweb/bluespace_bracelet
name = "Size Standardization Bracelet"
id = "bluespacebracelet"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/clothing/gloves/bluespace
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/deluxe_bluespace_bracelet
name = "Deluxe Size Standardization Bracelet"
id = "deluxebluespacebracelet"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_SILVER = 1000)
build_path = /obj/item/clothing/gloves/bluespace/deluxe
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/bluespace_collar
name = "Bluespace Collar"
id = "bluespacecollar"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/clothing/accessory/collar/shock/bluespace
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hyperfiber_jumpsuit
name = "HYPER jumpsuit"
id = "hfjumpsuit"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000)
build_path = /obj/item/clothing/under/hyperfiber
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/bluespace_jumpsuit
name = "Bluespace Jumpsuit"
id = "bluespace_jumpsuit"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/clothing/under/hyperfiber/bluespace
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ore_holding
name = "Mining Satchel of Holding"
desc = "For the most tenacious miners, a bag with incomprehensible depth!"
id = "ore_holding"
// req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 3)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 1000, MAT_DIAMOND = 500, MAT_URANIUM = 250) // Less expensive since it can only hold ores
build_path = /obj/item/storage/bag/ore/holding
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/sheet_holding
name = "Sheet Snatcher of Holding"
desc = "For those who really hate walking up and down the stairs more than once!"
id = "sheet_holding"
// req_tech = list(TECH_BLUESPACE = 1, TECH_MATERIAL = 2)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 300, MAT_DIAMOND = 200, MAT_URANIUM = 150) // Even less expensive because it has a more limited use
build_path = /obj/item/storage/bag/sheetsnatcher/holding
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/bag_holding
name = "Bag of Holding"
desc = "Using localized pockets of bluespace this bag prototype offers incredible storage capacity with the contents weighting nothing. It's a shame the bag itself is pretty heavy."
id = "bag_holding"
// req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250)
build_path = /obj/item/storage/backpack/holding
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/dufflebag_holding
name = "DuffleBag of Holding"
desc = "A minaturized prototype of the popular Bag of Holding, the Dufflebag of Holding is, functionally, identical to the bag of holding, but comes in a more stylish and compact form."
id = "dufflebag_holding"
// req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250)
build_path = /obj/item/storage/backpack/holding/duffle
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/trashbag_holding
name = "Trashbag of Holding"
desc = "Considerably more utilitarian than the Bag of Holding, the Trashbag of Holding is a janitor's best friend."
id = "trashbag_holding"
// req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 5)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 2000, MAT_DIAMOND = 1000, MAT_URANIUM = 250)
build_path = /obj/item/storage/bag/trash/holding
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/pouch_holding
name = "Pouch of Holding"
desc = "Somehow compresses the storage of a backpack into a pouch-sized container!"
id = "pouch_holding"
// req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 5)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 2000, MAT_URANIUM = 250)
build_path = /obj/item/storage/pouch/holding
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/belt_holding_med
name = "Medical Belt of Holding"
desc = "A belt that uses localized bluespace pockets to hold more items than expected!"
id = "belt_holding_med"
// req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 2000, MAT_TITANIUM = 500)
build_path = /obj/item/storage/belt/medical/holding
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/belt_holding_utility
name = "Tool-Belt of Holding"
desc = "A belt that uses localized bluespace pockets to hold more items than expected!"
id = "belt_holding_utility"
// req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 2000, MAT_TITANIUM = 500)
build_path = /obj/item/storage/belt/utility/holding
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_BLUESPACE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
// HUDs
/datum/design_techweb/hud
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
build_type = PROTOLATHE
/datum/design_techweb/hud/New()
..()
name = "HUD glasses prototype ([initial(name)])"
/datum/design_techweb/hud/health
name = "health scanner"
id = "health_hud"
// req_tech = list(TECH_BIO = 2, TECH_MAGNET = 3)
build_path = /obj/item/clothing/glasses/hud/health
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hud/security
name = "security records"
id = "security_hud"
// req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
build_path = /obj/item/clothing/glasses/hud/security
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hud/janitor
name = "contaminant detector"
id = "janitor_hud"
// req_tech = list(TECH_MAGNET = 2)
build_path = /obj/item/clothing/glasses/hud/janitor
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hud/mesons
name = "optical meson scanner"
id = "mesons"
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/clothing/glasses/meson
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/hud/material
name = "optical material scanner"
id = "material"
// req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/clothing/glasses/material
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/hud/graviton_visor
name = "graviton visor"
id = "graviton_goggles"
// req_tech = list(TECH_MAGNET = 5, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3, TECH_PHORON = 3, TECH_ARCANE = 1)
materials = list(MAT_PLASTEEL = 2000, MAT_GLASS = 3000, MAT_PHORON = 1500, MAT_DIAMOND = 500)
build_path = /obj/item/clothing/glasses/graviton
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hud/omni
name = "AR glasses"
id = "omnihud"
// req_tech = list(TECH_MAGNET = 4, TECH_COMBAT = 3, TECH_BIO = 3)
materials = list(MAT_STEEL = 1000, MAT_GLASS = 1000)
build_path = /obj/item/clothing/glasses/omnihud
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
// GPS
/datum/design_techweb/gps
// req_tech = list(TECH_MATERIAL = 2, TECH_DATA = 2, TECH_BLUESPACE = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 500)
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
/datum/design_techweb/gps/generic
name = "GPS - GEN"
id = "gps_gen"
build_path = /obj/item/gps
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/gps/command
name = "GPS - COM"
id = "gps_com"
build_path = /obj/item/gps/command
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_COMMAND
/datum/design_techweb/gps/security
name = "GPS - SEC"
id = "gps_sec"
build_path = /obj/item/gps/security
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/gps/medical
name = "GPS - MED"
id = "gps_med"
build_path = /obj/item/gps/medical
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/gps/engineering
name = "GPS - ENG"
id = "gps_eng"
build_path = /obj/item/gps/engineering
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/gps/science
name = "GPS - SCI"
id = "gps_sci"
build_path = /obj/item/gps/science
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/gps/mining
name = "GPS - MINE"
id = "gps_mine"
build_path = /obj/item/gps/mining
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/gps/explorer
name = "GPS - EXP"
id = "gps_exp"
build_path = /obj/item/gps/explorer
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/beacon_locator
name = "Tracking beacon pinpointer"
desc = "Used to scan and locate signals on a particular frequency."
id = "beacon_locator"
// req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 1000,MAT_GLASS = 500)
build_path = /obj/item/beacon_locator
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/beacon
name = "Bluespace tracking beacon"
id = "beacon"
// req_tech = list(TECH_BLUESPACE = 1)
build_type = PROTOLATHE
materials = list (MAT_STEEL = 20, MAT_GLASS = 10)
build_path = /obj/item/radio/beacon
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ear_translator
name = "earpiece translator"
id = "ear_translator"
// req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5) //It's been hella miniaturized.
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000, MAT_GOLD = 1000)
build_path = /obj/item/universal_translator/ear
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
/datum/design_techweb/walkpod
name = "PodZu Music Player"
id = "walkpod"
// req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000)
build_path = /obj/item/walkpod
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
/datum/design_techweb/juke_remote
name = "BoomTown Cordless Speaker"
id = "juke_remote"
// req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 1)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000, MAT_URANIUM = 2000)
build_path = /obj/item/juke_remote
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
/datum/design_techweb/translocator
name = "Personal translocator"
id = "translocator"
// req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_DIAMOND = 2000)
build_path = /obj/item/perfect_tele
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/mini_translocator
name = "Mini translocator"
id = "mini_translocator"
// req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000, MAT_PHORON = 2000)
build_path = /obj/item/perfect_tele/one_beacon
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
/datum/design_techweb/bluespace_crystal
name = "Artificial Bluespace Crystal"
id = "bluespace_crystal"
// req_tech = list(TECH_BLUESPACE = 3, TECH_PHORON = 4)
build_type = PROTOLATHE
materials = list(MAT_DIAMOND = 1500, MAT_PHORON = 1500)
build_path = /obj/item/bluespace_crystal/artificial
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,11 @@
/datum/design_techweb/experi_scanner
name = "Experimental Scanner"
desc = "Experimental scanning unit used for performing scanning experiments."
id = "experi_scanner"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_STEEL = 500)
build_path = /obj/item/experi_scanner
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
@@ -1,121 +1,134 @@
// Firework Stars
/datum/design_techweb/firework_star
category = list(
RND_CATEGORY_FIREWORKS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/item/firework_star/AssembleDesignName()
name = "Firework star prototype ([item_name])"
/datum/design_techweb/firework_star/New()
. = ..()
name = "Firework Star ([name])"
/datum/design/item/firework_star/aesthetic
/datum/design_techweb/board/firework_launcher
name = "firework launcher circuit"
id = "fireworklauncher"
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
build_path = /obj/item/circuitboard/firework_launcher
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/firework_star/aesthetic
name = "aesthetic"
desc = "A firework star, designed for use with launcher. Produces variable amount of joy."
id = "fireworkaesthetic"
req_tech = list(TECH_MATERIAL = 2)
// req_tech = list(TECH_MATERIAL = 2)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 500, MAT_GLASS = 500)
build_path = /obj/item/firework_star/aesthetic
sort_string = "IFAAA"
/datum/design/item/firework_star/aesthetic_config
/datum/design_techweb/firework_star/aesthetic_config
name = "aesthetic - configurable"
desc = "A firework star, designed for use with launcher. Produces variable amount of joy. Can be modified to produce specific forms."
id = "fireworkaestheticconfig"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2)
// req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 1000, MAT_GLASS = 1000)
build_path = /obj/item/firework_star/aesthetic/configurable
sort_string = "IFAAB"
/datum/design/item/firework_star/weather_clear
/datum/design_techweb/firework_star/weather_clear
name = "weather - CLEAR"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one clears the sky."
id = "fireworkclearsky"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
// req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_STEEL = 4000)
build_path = /obj/item/firework_star/weather/clear
sort_string = "IFABA"
/datum/design/item/firework_star/weather_overcast
/datum/design_techweb/firework_star/weather_overcast
name = "weather - CLOUDY"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates some clouds."
id = "fireworkcloudy"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
// req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 1000)
build_path = /obj/item/firework_star/weather/overcast
sort_string = "IFABB"
/datum/design/item/firework_star/weather_fog
/datum/design_techweb/firework_star/weather_fog
name = "weather - FOG"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates fog."
id = "fireworkfog"
req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
// req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 2000)
build_path = /obj/item/firework_star/weather/fog
sort_string = "IFABC"
/datum/design/item/firework_star/weather_rain
/datum/design_techweb/firework_star/weather_rain
name = "weather - RAIN"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates rain."
id = "fireworkrain"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
// req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 4000)
build_path = /obj/item/firework_star/weather/rain
sort_string = "IFABD"
/datum/design/item/firework_star/weather_storm
/datum/design_techweb/firework_star/weather_storm
name = "weather - STORM"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a rainstorm."
id = "fireworkstorm"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
// req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_GOLD = 1000)
build_path = /obj/item/firework_star/weather/storm
sort_string = "IFABE"
/datum/design/item/firework_star/weather_light_snow
/datum/design_techweb/firework_star/weather_light_snow
name = "weather - LIGHT SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a light snowfall."
id = "fireworklightsnow"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
// req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_LEAD = 2000)
build_path = /obj/item/firework_star/weather/light_snow
sort_string = "IFABF"
/datum/design/item/firework_star/weather_snow
/datum/design_techweb/firework_star/weather_snow
name = "weather - MODERATE SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a moderate snowfall."
id = "fireworksnow"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
// req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 2000)
build_path = /obj/item/firework_star/weather/snow
sort_string = "IFABG"
/datum/design/item/firework_star/weather_blizzard
/datum/design_techweb/firework_star/weather_blizzard
name = "weather - HEAVY SNOW"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a blizzard."
id = "fireworkblizzard"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
// req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 3000)
build_path = /obj/item/firework_star/weather/blizzard
sort_string = "IFABH"
/datum/design/item/firework_star/weather_hail
/datum/design_techweb/firework_star/weather_hail
name = "weather - HAIL"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a hailstorm. DANGEROUS."
id = "fireworkhail"
req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_ILLEGAL = 2)
// req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_ILLEGAL = 2)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_SILVER = 3000, MAT_LEAD = 3000, MAT_PLASTEEL = 4000)
build_path = /obj/item/firework_star/weather/hail
sort_string = "IFABI"
/datum/design/item/firework_star/weather_confetti
/datum/design_techweb/firework_star/weather_confetti
name = "weather - CONFETTI"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one clears the sky and rains colorful confetti from it."
id = "fireworkconfetti"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
// req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 10000, MAT_GLASS = 10000)
build_path = /obj/item/firework_star/weather/confetti
sort_string = "IFABJ"
/datum/design/item/firework_star/weather_fallout
/datum/design_techweb/firework_star/weather_fallout
name = "weather - NUCLEAR"
desc = "A firework star, designed for use with launcher. Modifies current planetary weather effects. This one creates a heavy cloud of nuclear fallout. DANGEROUS."
id = "fireworkfallout"
req_tech = list(TECH_MATERIAL = 8, TECH_ENGINEERING = 6, TECH_ILLEGAL = 7)
// req_tech = list(TECH_MATERIAL = 8, TECH_ENGINEERING = 6, TECH_ILLEGAL = 7)
build_type = PROTOLATHE
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 2000, MAT_URANIUM = 12000)
build_path = /obj/item/firework_star/weather/fallout
sort_string = "IFABK"
@@ -0,0 +1,37 @@
/datum/design_techweb/binaryencrypt
name = "Binary encryption key"
desc = "Allows for deciphering the binary channel on-the-fly."
id = "binaryencrypt"
// req_tech = list(TECH_ILLEGAL = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 300, MAT_GLASS = 300)
build_path = /obj/item/encryptionkey/binary
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/chameleon
name = "Holographic equipment kit"
desc = "A kit of dangerous, high-tech equipment with changeable looks."
id = "chameleon"
// req_tech = list(TECH_ILLEGAL = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 500)
build_path = /obj/item/storage/box/syndie_kit/chameleon
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/bodysnatcher
name = "Body Snatcher"
id = "bodysnatcher"
// req_tech = list(TECH_MAGNET = 3, TECH_BIO = 3, TECH_ILLEGAL = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000, MAT_URANIUM = 2000)
build_path = /obj/item/bodysnatcher
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,215 @@
/datum/design_techweb/implant
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
/datum/design_techweb/implant/backup
name = "Backup implant"
id = "implant_backup"
// req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_DATA = 4, TECH_ENGINEERING = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000)
build_path = /obj/item/implantcase/backup
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/implant/sizecontrol
name = "Size control implant"
id = "implant_size"
// req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4, TECH_DATA = 4, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/implanter/sizecontrol
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_UTILITY
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/implant/chemical
name = "Chemical Implant"
id = "implant_chem"
// req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3)
build_type = PROTOLATHE
build_path = /obj/item/implantcase/chem
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/implant/freedom
name = "Freedom Implant"
id = "implant_free"
// req_tech = list(TECH_ILLEGAL = 2, TECH_BIO = 3)
build_type = PROTOLATHE
build_path = /obj/item/implantcase/freedom
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/hand
name = "Resonant Analyzer Implant"
desc = "An augment that fits neatly into the hand, useful for determining the usefulness of an object for research."
id = "research_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3000, MAT_GLASS = 3000)
build_path = /obj/item/organ/internal/augment/armmounted/hand
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/shoulder/multiple
name = "Rotary Toolkit Implant"
desc = "A large implant that fits into a subject's arm. It deploys an array of tools by some painful means."
id = "tool_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000)
build_path = /obj/item/organ/internal/augment/armmounted/shoulder/multiple
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/shoulder/multiple/medical
name = "Rotary Medical Kit Implant"
desc = "A large implant that fits into a subject's arm. It deploys an array of tools by some painful means."
id = "surgical_implant"
// req_tech = list(TECH_BIO = 6, TECH_MATERIAL = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 1000)
build_path = /obj/item/organ/internal/augment/armmounted/shoulder/multiple/medical
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/hand/blade
name = "Handblade Implant"
desc = "A large implant that fits into a subject's hand. It deploys a bladed weapon."
id = "blade_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_COMBAT = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 1000)
build_path = /obj/item/organ/internal/augment/armmounted/hand/blade
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/shoulder/blade
name = "Armblade Implant"
desc = "A large implant that fits into a subject's arm. It deploys a large, bladed weapon."
id = "armblade_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 5, TECH_COMBAT = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 1000, MAT_GOLD = 2000)
build_path = /obj/item/organ/internal/augment/armmounted/shoulder/blade
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/hand/sword
name = "Energy Blade Implant"
desc = "A large implant that fits into a subject's hand. It deploys a large, energetic weapon."
id = "sword_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 6, TECH_COMBAT = 6, TECH_ENGINEERING = 5, TECH_ILLEGAL = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 1000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/organ/internal/augment/armmounted/hand/sword
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/dartbow
name = "Crossbow Implant"
desc = "A large implant that fits into a subject's arm. It creates a dartbow when activated."
id = "dartbow_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_COMBAT = 6, TECH_ILLEGAL = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_PHORON = 4000, MAT_GOLD = 4000, MAT_DIAMOND = 6000)
build_path = /obj/item/organ/internal/augment/armmounted/dartbow
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/taser
name = "Taser Implant"
desc = "A large implant that fits into a subject's arm. It turns into a taser when activated."
id = "taser_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_COMBAT = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 2000, MAT_GOLD = 1000)
build_path = /obj/item/organ/internal/augment/armmounted/taser
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/laser
name = "Laser Implant"
desc = "A large implant that fits into a subject's arm. It turns into a laser when activated."
id = "laser_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_COMBAT = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_SILVER = 6000, MAT_GOLD = 4000, MAT_DIAMOND = 4000, MAT_PHORON = 2000)
build_path = /obj/item/organ/internal/augment/armmounted
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ/internal/augment/armmounted/shoulder/surge
name = "Surge Implant"
desc = "A large implant that fits into a subject's arm. It floods the subject with stimulants to speed them up."
id = "surge_implant"
// req_tech = list(TECH_BIO = 5, TECH_MATERIAL = 4, TECH_POWER = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_PHORON = 1000, MAT_GOLD = 2000)
build_path = /obj/item/organ/internal/augment/armmounted/shoulder/surge
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/internal/augment/bioaugment/thermalshades
name = "Thermal Shadess Implant"
desc = "A large implant that fits into a subject's eyes. It allows them to see through walls."
id = "thermal_implant"
// req_tech = list(TECH_BIO = 7, TECH_MATERIAL = 4, TECH_POWER = 7, TECH_ENGINEERING = 7, TECH_COMBAT = 5, TECH_ILLEGAL = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000, MAT_PHORON = 10000, MAT_GOLD = 2000, MAT_DIAMOND = 10000, MAT_SILVER = 4000, MAT_TITANIUM = 1000) //this is thermals. this is expensive, yo.
build_path = /obj/item/organ/internal/augment/bioaugment/thermalshades
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_COMBAT
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/nif
name = "nanite implant framework (NIF)"
id = "nif"
// req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 8000, MAT_URANIUM = 6000, MAT_DIAMOND = 6000)
build_path = /obj/item/nif
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/nifbio
name = "bioadaptive NIF"
id = "bioadapnif"
// req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10000, MAT_GLASS = 15000, MAT_URANIUM = 10000, MAT_DIAMOND = 10000)
build_path = /obj/item/nif/bioadap
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,39 @@
// Mecha cells
/datum/design_techweb/high_mech_cell
name = "High-Capacity Mecha Cell"
desc = "A tier 2 power cell for mecha."
id = "high_mech_cell"
build_type = PROTOLATHE | MECHFAB
// req_tech = list(TECH_POWER = 3, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 600, MAT_SILVER = 150, MAT_GLASS = 70)
build_path = /obj/item/cell/mech/high
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/super_mech_cell
name = "Super-Capacity Mecha Cell"
desc = "A tier 3 power cell for mecha."
id = "super_mech_cell"
build_type = PROTOLATHE | MECHFAB
// req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 500, MAT_GOLD = 200, MAT_SILVER = 200, MAT_GLASS = 80)
build_path = /obj/item/cell/mech/super
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/synthetic_flash
name = "Synthetic Flash"
desc = "A synthetic flash with a singular charge."
id = "sflash"
//req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2)
build_type = MECHFAB
materials = list(MAT_STEEL = 562, MAT_GLASS = 562)
build_path = /obj/item/flash/synthetic
category = list(
RND_CATEGORY_TOOLS
) //I really don't know what to put for this.
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,963 @@
/datum/design_techweb/mechfab
build_type = MECHFAB
//req_tech = list(TECH_MATERIAL = 1)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
///RIPLEY
/datum/design_techweb/mechfab/ripley
desc = "A part used in the construction of the Ripley mecha series"
build_type = MECHFAB
category = list(
RND_CATEGORY_MECHFAB_RIPLEY + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/ripley/circuit_main
name = "APLU 'Ripley' central control circuit"
id = "ripley_main"
build_path = /obj/item/circuitboard/mecha/ripley/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/ripley/circuit_peri
name = "APLU 'Ripley' peripherals control circuit"
id = "ripley_peri"
build_path = /obj/item/circuitboard/mecha/ripley/peripherals
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/ripley/chassis
name = "Ripley Chassis"
id = "ripley_chassis"
build_path = /obj/item/mecha_parts/chassis/ripley
materials = list(MAT_STEEL = 15000)
/datum/design_techweb/mechfab/ripley/torso
name = "Ripley Torso"
id = "ripley_torso"
build_path = /obj/item/mecha_parts/part/ripley_torso
materials = list(MAT_STEEL = 30000, MAT_GLASS = 11250)
/datum/design_techweb/mechfab/ripley/left_arm
name = "Ripley Left Arm"
id = "ripley_left_arm"
build_path = /obj/item/mecha_parts/part/ripley_left_arm
materials = list(MAT_STEEL = 18750)
/datum/design_techweb/mechfab/ripley/right_arm
name = "Ripley Right Arm"
id = "ripley_right_arm"
build_path = /obj/item/mecha_parts/part/ripley_right_arm
materials = list(MAT_STEEL = 18750)
/datum/design_techweb/mechfab/ripley/left_leg
name = "Ripley Left Leg"
id = "ripley_left_leg"
build_path = /obj/item/mecha_parts/part/ripley_left_leg
materials = list(MAT_STEEL = 22500)
/datum/design_techweb/mechfab/ripley/right_leg
name = "Ripley Right Leg"
id = "ripley_right_leg"
build_path = /obj/item/mecha_parts/part/ripley_right_leg
materials = list(MAT_STEEL = 22500)
///FIREFIGHTER
/datum/design_techweb/mechfab/ripley/chassis/firefighter
desc = "A part used in the construction of the Firefighter mecha series"
name = "Firefigher Chassis"
id = "firefighter_chassis"
build_path = /obj/item/mecha_parts/chassis/firefighter
///ODYSSEUS
/datum/design_techweb/mechfab/odysseus
desc = "A part used in the construction of the Odysseus mecha series"
category = list(
RND_CATEGORY_MECHFAB_ODYSSEUS + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/odysseus/odysseus_main
name = "'Odysseus' central control circuit"
id = "odysseus_main"
// req_tech = list(TECH_DATA = 3,TECH_BIO = 2)
build_path = /obj/item/circuitboard/mecha/odysseus/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/odysseus/odysseus_peri
name = "'Odysseus' peripherals control circuit"
id = "odysseus_peri"
// req_tech = list(TECH_DATA = 3,TECH_BIO = 2)
build_path = /obj/item/circuitboard/mecha/odysseus/peripherals
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/odysseus/chassis
name = "Odysseus Chassis"
id = "odysseus_chassis"
build_path = /obj/item/mecha_parts/chassis/odysseus
materials = list(MAT_STEEL = 15000)
/datum/design_techweb/mechfab/odysseus/torso
name = "Odysseus Torso"
id = "odysseus_torso"
build_path = /obj/item/mecha_parts/part/odysseus_torso
materials = list(MAT_STEEL = 18750)
/datum/design_techweb/mechfab/odysseus/head
name = "Odysseus Head"
id = "odysseus_head"
build_path = /obj/item/mecha_parts/part/odysseus_head
materials = list(MAT_STEEL = 1500, MAT_GLASS = 7500)
/datum/design_techweb/mechfab/odysseus/left_arm
name = "Odysseus Left Arm"
id = "odysseus_left_arm"
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
materials = list(MAT_STEEL = 7500)
/datum/design_techweb/mechfab/odysseus/right_arm
name = "Odysseus Right Arm"
id = "odysseus_right_arm"
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
materials = list(MAT_STEEL = 7500)
/datum/design_techweb/mechfab/odysseus/left_leg
name = "Odysseus Left Leg"
id = "odysseus_left_leg"
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
materials = list(MAT_STEEL = 11250)
/datum/design_techweb/mechfab/odysseus/right_leg
name = "Odysseus Right Leg"
id = "odysseus_right_leg"
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
materials = list(MAT_STEEL = 11250)
///GYGAX
/datum/design_techweb/mechfab/gygax
desc = "A part used in the construction of the Gygax mecha series"
category = list(
RND_CATEGORY_MECHFAB_GYGAX + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/gygax/gygax_main
name = "'Gygax' central control circuit"
id = "gygax_main"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/gygax/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/gygax/gygax_peri
name = "'Gygax' peripherals control circuit"
id = "gygax_peri"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/gygax/peripherals
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/gygax/gygax_targ
name = "'Gygax' weapon control and targeting circuit"
id = "gygax_targ"
// req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/mecha/gygax/targeting
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/gygax/gygax_medical
name = "'Serenity' medical control circuit"
id = "gygax_medical"
// req_tech = list(TECH_DATA = 4, TECH_BIO = 2)
build_path = /obj/item/circuitboard/mecha/gygax/medical
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/gygax/chassis/serenity
name = "Serenity Chassis"
id = "serenity_chassis"
build_path = /obj/item/mecha_parts/chassis/serenity
materials = list(MAT_STEEL = 18750, MAT_PHORON = 4000)
/datum/design_techweb/mechfab/gygax/chassis
name = "Gygax Chassis"
id = "gygax_chassis"
build_path = /obj/item/mecha_parts/chassis/gygax
materials = list(MAT_STEEL = 18750)
/datum/design_techweb/mechfab/gygax/torso
name = "Gygax Torso"
id = "gygax_torso"
build_path = /obj/item/mecha_parts/part/gygax_torso
materials = list(MAT_STEEL = 37500, MAT_GLASS = 15000)
/datum/design_techweb/mechfab/gygax/head
name = "Gygax Head"
id = "gygax_head"
build_path = /obj/item/mecha_parts/part/gygax_head
materials = list(MAT_STEEL = 15000, MAT_GLASS = 7500)
/datum/design_techweb/mechfab/gygax/left_arm
name = "Gygax Left Arm"
id = "gygax_left_arm"
build_path = /obj/item/mecha_parts/part/gygax_left_arm
materials = list(MAT_STEEL = 22500)
/datum/design_techweb/mechfab/gygax/right_arm
name = "Gygax Right Arm"
id = "gygax_right_arm"
build_path = /obj/item/mecha_parts/part/gygax_right_arm
materials = list(MAT_STEEL = 22500)
/datum/design_techweb/mechfab/gygax/left_leg
name = "Gygax Left Leg"
id = "gygax_left_leg"
build_path = /obj/item/mecha_parts/part/gygax_left_leg
materials = list(MAT_STEEL = 26250)
/datum/design_techweb/mechfab/gygax/right_leg
name = "Gygax Right Leg"
id = "gygax_right_leg"
build_path = /obj/item/mecha_parts/part/gygax_right_leg
materials = list(MAT_STEEL = 26250)
/datum/design_techweb/mechfab/gygax/armour
name = "Gygax Armour Plates"
id = "gygax_armour"
build_path = /obj/item/mecha_parts/part/gygax_armour
materials = list(MAT_STEEL = 37500, MAT_DIAMOND = 7500)
///DURAND
/datum/design_techweb/mechfab/durand
desc = "A part used in the construction of the Durand mecha series"
category = list(
RND_CATEGORY_MECHFAB_DURAND + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/durand/durand_main
name = "'Durand' central control circuit"
id = "durand_main"
// req_tech = list(TECH_DATA = 4)
materials = list(MAT_GLASS = 2000, MAT_GRAPHITE = 1250)
build_path = /obj/item/circuitboard/mecha/durand/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/durand/durand_peri
name = "'Durand' peripherals control circuit"
id = "durand_peri"
// req_tech = list(TECH_DATA = 4)
materials = list(MAT_GLASS = 2000, MAT_GRAPHITE = 1250)
build_path = /obj/item/circuitboard/mecha/durand/peripherals
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/durand/durand_targ
name = "'Durand' weapon control and targeting circuit"
id = "durand_targ"
// req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2)
materials = list(MAT_GLASS = 2000, MAT_GRAPHITE = 1250)
build_path = /obj/item/circuitboard/mecha/durand/targeting
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/durand/chassis
name = "Durand Chassis"
id = "durand_chassis"
build_path = /obj/item/mecha_parts/chassis/durand
materials = list(MAT_STEEL = 18750, MAT_PLASTEEL = 20000)
/datum/design_techweb/mechfab/durand/torso
name = "Durand Torso"
id = "durand_torso"
build_path = /obj/item/mecha_parts/part/durand_torso
materials = list(MAT_STEEL = 41250, MAT_PLASTEEL = 15000, MAT_SILVER = 7500)
/datum/design_techweb/mechfab/durand/head
name = "Durand Head"
id = "durand_head"
build_path = /obj/item/mecha_parts/part/durand_head
materials = list(MAT_STEEL = 18750, MAT_GLASS = 7500, MAT_SILVER = 2250)
/datum/design_techweb/mechfab/durand/left_arm
name = "Durand Left Arm"
id = "durand_left_arm"
build_path = /obj/item/mecha_parts/part/durand_left_arm
materials = list(MAT_STEEL = 26250, MAT_SILVER = 2250)
/datum/design_techweb/mechfab/durand/right_arm
name = "Durand Right Arm"
id = "durand_right_arm"
build_path = /obj/item/mecha_parts/part/durand_right_arm
materials = list(MAT_STEEL = 26250, MAT_SILVER = 2250)
/datum/design_techweb/mechfab/durand/left_leg
name = "Durand Left Leg"
id = "durand_left_leg"
build_path = /obj/item/mecha_parts/part/durand_left_leg
materials = list(MAT_STEEL = 30000, MAT_SILVER = 2250)
/datum/design_techweb/mechfab/durand/right_leg
name = "Durand Right Leg"
id = "durand_right_leg"
build_path = /obj/item/mecha_parts/part/durand_right_leg
materials = list(MAT_STEEL = 30000, MAT_SILVER = 2250)
/datum/design_techweb/mechfab/durand/armour
name = "Durand Armour Plates"
id = "durand_armour"
build_path = /obj/item/mecha_parts/part/durand_armour
materials = list(MAT_STEEL = 27500, MAT_PLASTEEL = 10000, MAT_URANIUM = 7500)
///JANUS
/datum/design_techweb/mechfab/janus
desc = "A part used in the construction of the Janus mecha series"
category = list(
RND_CATEGORY_MECHFAB_JANUS + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
//req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1, TECH_PRECURSOR = 2)
/datum/design_techweb/mechfab/janusmodule
name = "Blackbox Circuit Datamass"
desc = "A design that seems to be in a constantly shifting superposition."
category = list(
RND_CATEGORY_MECHFAB_JANUS + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
id = "janus_module"
// req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1, TECH_PRECURSOR = 2)
materials = list(MAT_DURASTEEL = 3000, MAT_MORPHIUM = 2000, MAT_METALHYDROGEN = 6000, MAT_URANIUM = 6000, MAT_VERDANTIUM = 1500)
build_path = /obj/random/janusmodule
/datum/design_techweb/mechfab/janusmodule/create_item(target)
var/path = pick(subtypesof(/obj/item/circuitboard/mecha/imperion))
return new path(target)
/datum/design_techweb/mechfab/janus/chassis
name = "Janus Chassis"
id = "janus_chassis"
build_path = /obj/item/mecha_parts/chassis/janus
materials = list(MAT_DURASTEEL = 19000, MAT_MORPHIUM = 10500, MAT_PLASTEEL = 5500, MAT_LEAD = 2500)
//req_tech = list(TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_MAGNET = 6, TECH_PHORON = 3, TECH_ARCANE = 1, TECH_PRECURSOR = 3)
/datum/design_techweb/mechfab/janus/torso
name = "Imperion Torso"
id = "janus_torso"
build_path = /obj/item/mecha_parts/part/janus_torso
materials = list(MAT_STEEL = 30000, MAT_DURASTEEL = 8000, MAT_MORPHIUM = 10000, MAT_GOLD = 5000, MAT_VERDANTIUM = 5000)
/datum/design_techweb/mechfab/janus/head
name = "Imperion Head"
id = "janus_head"
build_path = /obj/item/mecha_parts/part/janus_head
materials = list(MAT_STEEL = 30000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 6000, MAT_GOLD = 5000)
/datum/design_techweb/mechfab/janus/left_arm
name = "Prototype Gygax Left Arm"
id = "janus_left_arm"
build_path = /obj/item/mecha_parts/part/janus_left_arm
materials = list(MAT_STEEL = 30000, MAT_METALHYDROGEN = 3000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_DIAMOND = 7000)
/datum/design_techweb/mechfab/janus/right_arm
name = "Prototype Gygax Right Arm"
id = "janus_right_arm"
build_path = /obj/item/mecha_parts/part/janus_right_arm
materials = list(MAT_STEEL = 30000, MAT_METALHYDROGEN = 3000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_DIAMOND = 7000)
/datum/design_techweb/mechfab/janus/left_leg
name = "Prototype Durand Left Leg"
id = "janus_left_leg"
build_path = /obj/item/mecha_parts/part/janus_left_leg
materials = list(MAT_STEEL = 30000, MAT_METALHYDROGEN = 3000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_URANIUM = 7000)
/datum/design_techweb/mechfab/janus/right_leg
name = "Prototype Durand Right Leg"
id = "janus_right_leg"
build_path = /obj/item/mecha_parts/part/janus_right_leg
materials = list(MAT_STEEL = 30000, MAT_METALHYDROGEN = 3000, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_URANIUM = 7000)
/datum/design_techweb/mechfab/janus/phase_coil
name = "Janus Phase Coil"
id = "janus_coil"
build_path = /obj/item/prop/alien/phasecoil
materials = list(MAT_SUPERMATTER = 2000, MAT_PLASTEEL = 60000, MAT_URANIUM = 3250, MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_GOLD = 5000, MAT_VERDANTIUM = 5000, MAT_DIAMOND = 10000, MAT_LEAD = 15000)
///--------///
///Fighters///
///--------///
///Pinnace///
/datum/design_techweb/mechfab/pinnace
desc = "A part used in the construction of the Pinnace fighter series"
category = list(
RND_CATEGORY_MECHFAB_PINNACE + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/pinnace/pinnace_main
name = "Pinnace central control board circuit"
id = "pinnace_main"
// req_tech = list(TECH_DATA = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/pinnace/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/pinnace/pinnace_flight
name = "Pinnace flight control board circuit"
id = "pinnace_flight"
// req_tech = list(TECH_DATA = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/pinnace/flight
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/pinnace/pinnace_targeting
name = "Pinnace weapon control and targeting board circuit"
id = "pinnace_targeting"
// req_tech = list(TECH_DATA = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/pinnace/targeting
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/pinnace/pinnace_cockpit_control
name = "Pinnace manual flight control instruments circuit"
id = "pinnace_cockpit_control"
// req_tech = list(TECH_DATA = 3, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/pinnace/cockpitboard
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/pinnace/chassis
name = "Pinnace Chassis"
id = "pinnace_chassis"
build_path = /obj/item/mecha_parts/fighter/chassis/pinnace
materials = list(MAT_STEEL = 25000, MAT_GLASS = 10000, MAT_PLASTEEL = 10000)
/datum/design_techweb/mechfab/pinnace/core
name = "Pinnace Core"
id = "pinnace_core"
build_path = /obj/item/mecha_parts/fighter/part/pinnace_core
materials = list(MAT_STEEL = 25000, MAT_GLASS = 7000, MAT_PLASTEEL = 7000)
/datum/design_techweb/mechfab/pinnace/cockpit
name = "Pinnace Cockpit"
id = "pinnace_cockpit"
build_path = /obj/item/mecha_parts/fighter/part/pinnace_cockpit
materials = list(MAT_STEEL = 2500, MAT_PLASTEEL = 2500, MAT_GLASS = 7500, MAT_PLASTIC = 2500)
/datum/design_techweb/mechfab/pinnace/main_engine
name = "Pinnace Main Engine"
id = "pinnace_main_engine"
build_path = /obj/item/mecha_parts/fighter/part/pinnace_main_engine
materials = list(MAT_STEEL = 15000, MAT_PLASTEEL = 5000)
/datum/design_techweb/mechfab/pinnace/left_engine
name = "Pinnace Left Engine"
id = "pinnace_left_engine"
build_path = /obj/item/mecha_parts/fighter/part/pinnace_left_engine
materials = list(MAT_STEEL = 10000, MAT_PLASTEEL = 2500)
/datum/design_techweb/mechfab/pinnace/right_engine
name = "Pinnace Right Engine"
id = "pinnace_right_engine"
build_path = /obj/item/mecha_parts/fighter/part/pinnace_right_engine
materials = list(MAT_STEEL = 10000, MAT_PLASTEEL = 2500)
/datum/design_techweb/mechfab/pinnace/left_wing
name = "Pinnace Left Wing"
id = "pinnace_left_wing"
build_path = /obj/item/mecha_parts/fighter/part/pinnace_left_wing
materials = list(MAT_STEEL = 7000, MAT_PLASTIC = 3000, MAT_PLASTEEL = 5000)
/datum/design_techweb/mechfab/pinnace/right_wing
name = "Pinnace Right Wing"
id = "pinnace_right_wing"
build_path = /obj/item/mecha_parts/fighter/part/pinnace_right_wing
materials = list(MAT_STEEL = 7000, MAT_PLASTIC = 3000, MAT_PLASTEEL = 5000)
///Baron///
/datum/design_techweb/mechfab/baron
desc = "A part used in the construction of the Baron fighter series"
category = list(
RND_CATEGORY_MECHFAB_BARON + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/baron/baron_main
name = "Baron central control board circuit"
id = "baron_main"
// req_tech = list(TECH_DATA = 5, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/baron/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/baron/baron_flight
name = "Baron flight control board circuit"
id = "baron_flight"
// req_tech = list(TECH_DATA = 5, TECH_POWER = 4)
build_path = /obj/item/circuitboard/mecha/fighter/baron/flight
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/baron/baron_targeting
name = "Baron weapon control and targeting board circuit"
id = "baron_targeting"
// req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3)
build_path = /obj/item/circuitboard/mecha/fighter/baron/targeting
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/baron/baron_cockpit_control
name = "Baron manual flight control instruments circuit"
id = "baron_cockpit_control"
// req_tech = list(TECH_DATA = 5, TECH_POWER = 4, TECH_COMBAT = 3)
build_path = /obj/item/circuitboard/mecha/fighter/baron/cockpitboard
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/baron/chassis
name = "Baron Chassis"
id = "baron_chassis"
build_path = /obj/item/mecha_parts/fighter/chassis/baron
materials = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_PLASTEEL = 15000)
/datum/design_techweb/mechfab/baron/core
name = "Baron Core"
id = "baron_core"
build_path = /obj/item/mecha_parts/fighter/part/baron_core
materials = list(MAT_STEEL = 37500, MAT_GLASS = 15000, MAT_PLASTEEL = 15000)
/datum/design_techweb/mechfab/baron/cockpit
name = "Baron Cockpit"
id = "baron_cockpit"
build_path = /obj/item/mecha_parts/fighter/part/baron_cockpit
materials = list(MAT_STEEL = 5000, MAT_PLASTEEL = 5000, MAT_GLASS = 10000, MAT_PLASTIC = 5000)
/datum/design_techweb/mechfab/baron/main_engine
name = "Baron Main Engine"
id = "baron_main_engine"
build_path = /obj/item/mecha_parts/fighter/part/baron_main_engine
materials = list(MAT_STEEL = 25000, MAT_PLASTEEL = 10000)
/datum/design_techweb/mechfab/baron/left_engine
name = "Baron Left Engine"
id = "baron_left_engine"
build_path = /obj/item/mecha_parts/fighter/part/baron_left_engine
materials = list(MAT_STEEL = 20000, MAT_PLASTEEL = 5000)
/datum/design_techweb/mechfab/baron/right_engine
name = "Baron Right Engine"
id = "baron_right_engine"
build_path = /obj/item/mecha_parts/fighter/part/baron_right_engine
materials = list(MAT_STEEL = 20000, MAT_PLASTEEL = 5000)
/datum/design_techweb/mechfab/baron/left_wing
name = "Baron Left Wing"
id = "baron_left_wing"
build_path = /obj/item/mecha_parts/fighter/part/baron_left_wing
materials = list(MAT_STEEL = 15000, MAT_PLASTIC = 6000, MAT_PLASTEEL = 10000)
/datum/design_techweb/mechfab/baron/right_wing
name = "Baron Right Wing"
id = "baron_right_wing"
build_path = /obj/item/mecha_parts/fighter/part/baron_right_wing
materials = list(MAT_STEEL = 15000, MAT_PLASTIC = 6000, MAT_PLASTEEL = 10000)
///EXOSUIT INTERNALS
//TODO: Expand these descriptions to say what they do in length.
/datum/design_techweb/mechfab/exointernal
desc = "Internal component for a mecha."
category = list(
RND_SUBCATEGORY_MECHFAB_SUPPORTED_EQUIPMENT
)
//req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3)
/datum/design_techweb/mechfab/exointernal/stan_armor
name = "Armor Plate (Standard)"
desc = "Armor plating that fits all mecha."
id = "exo_int_armor_standard"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/mecha_parts/component/armor
/datum/design_techweb/mechfab/exointernal/light_armor
name = "Armor Plate (Lightweight)"
desc = "Armor plating that fits all mecha."
id = "exo_int_armor_lightweight"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 5000, MAT_PLASTIC = 3000)
build_path = /obj/item/mecha_parts/component/armor/lightweight
/datum/design_techweb/mechfab/exointernal/reinf_armor
name = "Armor Plate (Reinforced)"
desc = "Armor plating that fits all mecha."
id = "exo_int_armor_reinforced"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 20000, MAT_PLASTEEL = 10000)
build_path = /obj/item/mecha_parts/component/armor/reinforced
/datum/design_techweb/mechfab/exointernal/mining_armor
name = "Armor Plate (Blast)"
id = "exo_int_armor_blast"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 20000, MAT_PLASTEEL = 10000)
build_path = /obj/item/mecha_parts/component/armor/mining
/datum/design_techweb/mechfab/exointernal/gygax_armor
name = "Armor Plate (Marshal)"
desc = "Armor plating that fits combat mecha."
id = "exo_int_armor_gygax"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_COMBAT = 2)
materials = list(MAT_STEEL = 40000, MAT_DIAMOND = 8000)
build_path = /obj/item/mecha_parts/component/armor/marshal
/datum/design_techweb/mechfab/exointernal/darkgygax_armor
name = "Armor Plate (Blackops)"
desc = "Armor plating that fits combat mecha."
id = "exo_int_armor_dgygax"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_COMBAT = 4, TECH_ILLEGAL = 2)
materials = list(MAT_PLASTEEL = 20000, MAT_DIAMOND = 10000, MAT_GRAPHITE = 20000)
build_path = /obj/item/mecha_parts/component/armor/marshal/reinforced
/datum/design_techweb/mechfab/exointernal/durand_armour
name = "Armor Plate (Military)"
desc = "Armor plating that fits combat mecha."
id = "exo_int_armor_durand"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_COMBAT = 2)
materials = list(MAT_STEEL = 40000, MAT_PLASTEEL = 9525, MAT_URANIUM = 8000)
build_path = /obj/item/mecha_parts/component/armor/military
/datum/design_techweb/mechfab/exointernal/marauder_armour
name = "Armor Plate (Cutting Edge)"
desc = "Armor plating that fits marauder mecha."
id = "exo_int_armor_marauder"
//req_tech = list(TECH_MATERIAL = 8, TECH_ENGINEERING = 7, TECH_COMBAT = 6, TECH_ILLEGAL = 4)
materials = list(MAT_DURASTEEL = 40000, MAT_GRAPHITE = 8000, MAT_OSMIUM = 8000)
build_path = /obj/item/mecha_parts/component/armor/military/marauder
/datum/design_techweb/mechfab/exointernal/phazon_armour
name = "Armor Plate (Janus)"
desc = "Armor plating that fits all mecha."
id = "exo_int_armor_phazon"
//req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 6, TECH_COMBAT = 6, TECH_ILLEGAL = 4)
materials = list(MAT_MORPHIUM = 40000, MAT_DURASTEEL = 8000, MAT_OSMIUM = 8000)
build_path = /obj/item/mecha_parts/component/armor/alien
/datum/design_techweb/mechfab/exointernal/stan_hull
name = "Hull (Standard)"
desc = "Hull that fits all mecha."
id = "exo_int_hull_standard"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/mecha_parts/component/hull
/datum/design_techweb/mechfab/exointernal/durable_hull
name = "Hull (Durable)"
id = "exo_int_hull_durable"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 8000, MAT_PLASTEEL = 5000)
build_path = /obj/item/mecha_parts/component/hull/durable
/datum/design_techweb/mechfab/exointernal/light_hull
name = "Hull (Lightweight)"
desc = "Hull that fits all mecha."
id = "exo_int_hull_light"
//req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 5000, MAT_PLASTIC = 3000)
build_path = /obj/item/mecha_parts/component/hull/lightweight
/datum/design_techweb/mechfab/exointernal/stan_gas
name = "Life-Support (Standard)"
desc = "Life support module for mecha."
id = "exo_int_lifesup_standard"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/mecha_parts/component/gas
/datum/design_techweb/mechfab/exointernal/reinf_gas
name = "Life-Support (Reinforced)"
desc = "Upgraded life support module for mecha."
id = "exo_int_lifesup_reinforced"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 8000, MAT_PLASTEEL = 8000, MAT_GRAPHITE = 1000)
build_path = /obj/item/mecha_parts/component/gas/reinforced
/datum/design_techweb/mechfab/exointernal/stan_electric
name = "Electrical Harness (Standard)"
desc = "Electrical harness for a mecha."
id = "exo_int_electric_standard"
//req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 5000, MAT_PLASTIC = 1000)
build_path = /obj/item/mecha_parts/component/electrical
/datum/design_techweb/mechfab/exointernal/efficient_electric
name = "Electrical Harness (High)"
desc = "Electrical harness for a mecha."
id = "exo_int_electric_efficient"
//req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 4, TECH_DATA = 2)
materials = list(MAT_STEEL = 5000, MAT_PLASTIC = 3000, MAT_SILVER = 3000)
build_path = /obj/item/mecha_parts/component/electrical/high_current
/datum/design_techweb/mechfab/exointernal/stan_actuator
name = "Actuator Lattice (Standard)"
desc = "Actuator Lattice for a mecha."
id = "exo_int_actuator_standard"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/mecha_parts/component/actuator
/datum/design_techweb/mechfab/exointernal/hispeed_actuator
name = "Actuator Lattice (Overclocked)"
desc = "Actuator Lattice for a mecha."
id = "exo_int_actuator_overclock"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 10000, MAT_OSMIUM = 3000, MAT_GOLD = 5000)
build_path = /obj/item/mecha_parts/component/actuator/hispeed
/datum/design_techweb/mechfab/vehicle
build_type = MECHFAB
category = list(
RND_SUBCATEGORY_MECHFAB_VEHICLE + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6)
/datum/design_techweb/mechfab/vehicle/spacebike_chassis
name = "Spacebike Chassis"
desc = "A space-bike's un-assembled frame."
id = "vehicle_chassis_spacebike"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6, TECH_BLUESPACE = 3, TECH_PHORON = 3)
materials = list(MAT_STEEL = 12000, MAT_SILVER = 3000, MAT_PHORON = 3000, MAT_OSMIUM = 1000)
build_path = /obj/item/vehicle_assembly/spacebike
/datum/design_techweb/mechfab/vehicle/quadbike_chassis
name = "Quad bike Chassis"
desc = "A quad bike's un-assembled frame."
id = "vehicle_chassis_quadbike"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6, TECH_MAGNET = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 15000, MAT_SILVER = 3000, MAT_PLASTIC = 3000, MAT_OSMIUM = 1000)
build_path = /obj/item/vehicle_assembly/quadbike
/datum/design_techweb/mechfab/vehicle/snowmobile_chassis
name = "Snowmobile Chassis"
desc = "A snowmobile's un-assembled frame."
id = "vehicle_chassis_snowmobile"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6, TECH_MAGNET = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 12000, MAT_SILVER = 3000, MAT_PLASTIC = 3000, MAT_OSMIUM = 1000)
build_path = /obj/item/vehicle_assembly/snowmobile
/datum/design_techweb/mechfab/vehicle/basic //I'm going to just count this as a vehicle...
name = "UAV - Recon Skimmer"
desc = "A UAV designed for reconnaissance and light scouting. It is equipped with a camera and can be controlled remotely."
id = "recon_skimmer"
category = list(
RND_SUBCATEGORY_MECHFAB_VEHICLE + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
build_path = /obj/item/uav
//req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_PHORON = 3, TECH_MAGNET = 4, TECH_POWER = 6)
materials = list(MAT_STEEL = 10000, MAT_GLASS = 6000, MAT_SILVER = 4000)
///Micromechs...I know downstream is going to disable these from orbit, so feel free to take the line below to add your disable start:
/datum/design_techweb/mechfab/gopher
desc = "A part used in the construction of the Gopher micro mech series"
category = list(
RND_CATEGORY_MECHFAB_GOPHER + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/gopher/gopher_main
name = "'Gopher' central control circuit"
id = "gopher_main"
build_path = /obj/item/circuitboard/mecha/gopher/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/gopher/gopher_peri
name = "'Gopher' peripherals control circuit"
id = "gopher_peri"
build_path = /obj/item/circuitboard/mecha/gopher/peripherals
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/gopher/chassis
name = "Gopher Chassis"
id = "gopher_chassis"
build_path = /obj/item/mecha_parts/micro/chassis/gopher
materials = list(MAT_STEEL = 7000)
/datum/design_techweb/mechfab/gopher/torso
name = "Gopher Torso"
id = "gopher_torso"
build_path = /obj/item/mecha_parts/micro/part/gopher_torso
materials = list(MAT_STEEL = 15000, MAT_GLASS = 5250)
/datum/design_techweb/mechfab/gopher/left_arm
name = "Gopher Left Arm"
id = "gopher_left_arm"
build_path = /obj/item/mecha_parts/micro/part/gopher_left_arm
materials = list(MAT_STEEL = 8750)
/datum/design_techweb/mechfab/gopher/right_arm
name = "Gopher Right Arm"
id = "gopher_right_arm"
build_path = /obj/item/mecha_parts/micro/part/gopher_right_arm
materials = list(MAT_STEEL = 8750)
/datum/design_techweb/mechfab/gopher/left_leg
name = "Gopher Left Leg"
id = "gopher_left_leg"
build_path = /obj/item/mecha_parts/micro/part/gopher_left_leg
materials = list(MAT_STEEL = 12500)
/datum/design_techweb/mechfab/gopher/right_leg
name = "Gopher Right Leg"
id = "gopher_right_leg"
build_path = /obj/item/mecha_parts/micro/part/gopher_right_leg
materials = list(MAT_STEEL = 12500)
/datum/design_techweb/micro
name = "Miniature Drill"
id = "micro_drill"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/micro
materials = list(MAT_STEEL = 2500)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hydraulic_clampmicro
name = "Mounted ore box"
id = "ore_scoop"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/tool/micro/orescoop
materials = list(MAT_STEEL = 2500)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/mechfab/polecat
desc = "A part used in the construction of the Gopher micro mech series"
category = list(
RND_CATEGORY_MECHFAB_POLECAT + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/polecat/polecat_main
name = "'Polecat' central control circuit"
id = "polecat_main"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/polecat/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/polecat/polecat_peri
name = "'Polecat' peripherals control circuit"
id = "polecat_peri"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/polecat/peripherals
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/polecat/polecat_targ
name = "'Polecat' weapon control and targeting circuit"
id = "polecat_targ"
// req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/mecha/polecat/targeting
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/polecat/chassis
name = "Polecat Chassis"
id = "polecat_chassis"
build_path = /obj/item/mecha_parts/micro/chassis/polecat
materials = list(MAT_STEEL = 7000)
/datum/design_techweb/mechfab/polecat/torso
name = "Polecat Torso"
id = "polecat_torso"
build_path = /obj/item/mecha_parts/micro/part/polecat_torso
materials = list(MAT_STEEL = 15000, MAT_GLASS = 5250)
/datum/design_techweb/mechfab/polecat/left_arm
name = "Polecat Left Arm"
id = "polecat_left_arm"
build_path = /obj/item/mecha_parts/micro/part/polecat_left_arm
materials = list(MAT_STEEL = 8750)
/datum/design_techweb/mechfab/polecat/right_arm
name = "Polecat Right Arm"
id = "polecat_right_arm"
build_path = /obj/item/mecha_parts/micro/part/polecat_right_arm
materials = list(MAT_STEEL = 8750)
/datum/design_techweb/mechfab/polecat/left_leg
name = "Polecat Left Leg"
id = "polecat_left_leg"
build_path = /obj/item/mecha_parts/micro/part/polecat_left_leg
materials = list(MAT_STEEL = 12500)
/datum/design_techweb/mechfab/polecat/right_leg
name = "Polecat Right Leg"
id = "polecat_right_leg"
build_path = /obj/item/mecha_parts/micro/part/polecat_right_leg
materials = list(MAT_STEEL = 12500)
/datum/design_techweb/mechfab/polecat/armour
name = "Polecat Armour Plates"
id = "polecat_armour"
build_path = /obj/item/mecha_parts/micro/part/polecat_armour
materials = list(MAT_STEEL = 12500, MAT_PLASTIC = 7500)
/datum/design_techweb/mechfab/weasel
desc = "A part used in the construction of the Weasel micro mech series"
category = list(
RND_CATEGORY_MECHFAB_WEASEL + RND_SUBCATEGORY_MECHFAB_CHASSIS
)
/datum/design_techweb/mechfab/weasel/weasel_main
name = "'Weasel' central control circuit"
id = "weasel_main"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/weasel/main
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/weasel/weasel_peri
name = "'Weasel' peripherals control circuit"
id = "weasel_peri"
// req_tech = list(TECH_DATA = 4)
build_path = /obj/item/circuitboard/mecha/weasel/peripherals
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/weasel/weasel_targ
name = "'Weasel' weapon control and targeting circuit"
id = "weasel_targ"
// req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2)
build_path = /obj/item/circuitboard/mecha/weasel/targeting
materials = list(MAT_GLASS = 2000)
/datum/design_techweb/mechfab/weasel/chassis
name = "Weasel Chassis"
id = "weasel_chassis"
build_path = /obj/item/mecha_parts/micro/chassis/weasel
materials = list(MAT_STEEL = 7000)
/datum/design_techweb/mechfab/weasel/torso
name = "Weasel Torso"
id = "weasel_torso"
build_path = /obj/item/mecha_parts/micro/part/weasel_torso
materials = list(MAT_STEEL = 15000, MAT_GLASS = 5250)
/datum/design_techweb/mechfab/weasel/left_arm
name = "Weasel Left Arm"
id = "weasel_left_arm"
build_path = /obj/item/mecha_parts/micro/part/weasel_left_arm
materials = list(MAT_STEEL = 8750)
/datum/design_techweb/mechfab/weasel/right_arm
name = "Weasel Right Arm"
id = "weasel_right_arm"
build_path = /obj/item/mecha_parts/micro/part/weasel_right_arm
materials = list(MAT_STEEL = 8750)
/*/datum/design_techweb/mechfab/weasel/left_leg
name = "Weasel Left Leg"
id = "weasel_left_leg"
build_path = /obj/item/mecha_parts/micro/part/weasel_left_leg
materials = list(MAT_STEEL = 12500)
/datum/design_techweb/mechfab/weasel/right_leg
name = "Weasel Right Leg"
id = "weasel_right_leg"
build_path = /obj/item/mecha_parts/micro/part/weasel_right_leg
materials = list(MAT_STEEL = 12500)*/
/datum/design_techweb/mechfab/weasel/tri_leg
name = "Weasel Tri Leg"
id = "weasel_right_leg"
build_path = /obj/item/mecha_parts/micro/part/weasel_tri_leg
materials = list(MAT_STEEL = 27500)
/datum/design_techweb/mechfab/weasel/head
name = "Weasel Head"
id = "weasel_head"
build_path = /obj/item/mecha_parts/micro/part/weasel_head
materials = list(MAT_STEEL = 7000, MAT_GLASS = 2500)
//End of micromechs.
@@ -0,0 +1,685 @@
/datum/design_techweb/mechfab/equipment
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT
)
materials = list(MAT_STEEL = 7500)
/datum/design_techweb/mechfab/equipment/tracking
name = "Exosuit Tracking Beacon"
id = "mech_tracker"
materials = list(MAT_STEEL = 375)
build_path = /obj/item/mecha_parts/mecha_tracking
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/hydraulic_clamp
name = "Hydraulic Clamp"
id = "hydraulic_clamp"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/equipment/drill
name = "Drill"
id = "mech_drill"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/equipment/extinguisher
name = "Extinguisher"
id = "extinguisher"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/extinguisher
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/cable_layer
name = "Cable Layer"
id = "mech_cable_layer"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/cable_layer
materials = list(MAT_STEEL = 7500, MAT_PLASTIC = 1000)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/sleeper
name = "Sleeper"
id = "mech_sleeper"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/sleeper
materials = list(MAT_STEEL = 3750, MAT_GLASS = 7500)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/mechfab/equipment/passenger
name = "Passenger Compartment"
id = "mech_passenger"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/passenger
materials = list(MAT_STEEL = 3750, MAT_GLASS = 3750)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/shocker
name = "Exosuit Electrifier"
desc = "A device to electrify the external portions of a mecha in order to increase its defensive capabilities."
id = "mech_shocker"
//req_tech = list(TECH_COMBAT = 3, TECH_POWER = 6, TECH_MAGNET = 1)
build_path = /obj/item/mecha_parts/mecha_equipment/shocker
materials = list(MAT_STEEL = 3500, MAT_GOLD = 750, MAT_GLASS = 1000)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/// I guess this isn't STRICTLY a weapon...
/datum/design_techweb/mechfab/equipment/syringe_gun
name = "Syringe Gun"
id = "mech_syringe_gun"
build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun
materials = list(MAT_STEEL = 2250, MAT_GLASS = 1500)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
//You escape the weapon designation as well.
/datum/design_techweb/mechfab/equipment/medigun
name = "BL-3/P directed restoration system"
desc = "A portable medical system used to treat external injuries from afar."
id = "mech_medigun"
//req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_BIO = 6)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 1750, MAT_DIAMOND = 1500, MAT_PHORON = 4000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/medigun
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
// *** Weapon modules
/datum/design_techweb/mechfab/equipment/weapon
//req_tech = list(TECH_COMBAT = 3)
materials = list(MAT_STEEL = 8000, MAT_GLASS = 2000)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_WEAPONS
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/equipment/weapon/taser
name = "PBT \"Pacifier\" Mounted Taser"
id = "mech_taser"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
/datum/design_techweb/mechfab/equipment/weapon/rigged_taser
name = "Jury-Rigged Taser"
id = "mech_taser-r"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser/rigged
/datum/design_techweb/mechfab/equipment/weapon/lmg
name = "Ultra AC 2"
id = "mech_lmg"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
/datum/design_techweb/mechfab/equipment/weapon/rigged_lmg
name = "Jury-Rigged Machinegun"
id = "mech_lmg-r"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg/rigged
/datum/design_techweb/mechfab/equipment/weapon/flaregun
name = "Flare Launcher"
id = "mecha_flare_gun"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flare
materials = list(MAT_STEEL = 9375)
/datum/design_techweb/mechfab/equipment/weapon/scattershot
name = "LBX AC 10 \"Scattershot\""
id = "mech_scattershot"
//req_tech = list(TECH_COMBAT = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
materials = list(MAT_STEEL = 8000, MAT_GLASS = 3000, MAT_PLASTIC = 2000, MAT_SILVER = 2500)
/datum/design_techweb/mechfab/equipment/weapon/rigged_scattershot
name = "Jury-Rigged Shrapnel Cannon"
id = "mech_scattershot-r"
//req_tech = list(TECH_COMBAT = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot/rigged
materials = list(MAT_STEEL = 7000, MAT_GLASS = 2000, MAT_PLASTIC = 2000, MAT_SILVER = 2000)
/datum/design_techweb/mechfab/equipment/weapon/laser
name = "CH-PS \"Immolator\" Laser"
id = "mech_laser"
//req_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
materials = list(MAT_STEEL = 8000, MAT_GLASS = 3000, MAT_PLASTIC = 2000)
/datum/design_techweb/mechfab/equipment/weapon/laser_rigged
name = "Jury-Rigged Welder-Laser"
desc = "Allows for the construction of a welder-laser assembly package for non-combat exosuits."
id = "mech_laser_rigged"
//req_tech = list(TECH_COMBAT = 2, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser
/datum/design_techweb/mechfab/equipment/weapon/laser_heavy
name = "CH-LC \"Solaris\" Laser Cannon"
id = "mech_laser_heavy"
//req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
materials = list(MAT_STEEL = 10000, MAT_GLASS = 3000, MAT_DIAMOND = 2000, MAT_OSMIUM = 5000, MAT_PLASTIC = 2000)
/datum/design_techweb/mechfab/equipment/weapon/rigged_laser_heavy
name = "Jury-Rigged Emitter Cannon"
id = "mech_laser_heavy-r"
//req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4, TECH_PHORON = 3, TECH_ILLEGAL = 1)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/rigged
materials = list(MAT_STEEL = 8000, MAT_GLASS = 4000, MAT_DIAMOND = 1500, MAT_OSMIUM = 4000, MAT_PLASTIC = 2000)
/datum/design_techweb/mechfab/equipment/weapon/laser_xray
name = "CH-XS \"Penetrator\" Laser"
id = "mech_laser_xray"
//req_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray
materials = list(MAT_STEEL = 9000, MAT_GLASS = 3000, MAT_PHORON = 1000, MAT_SILVER = 1500, MAT_GOLD = 2500, MAT_PLASTIC = 2000)
/datum/design_techweb/mechfab/equipment/weapon/rigged_laser_xray
name = "Jury-Rigged Xray Rifle"
id = "mech_laser_xray-r"
//req_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_POWER = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/xray/rigged
materials = list(MAT_STEEL = 8500, MAT_GLASS = 2500, MAT_PHORON = 1000, MAT_SILVER = 1250, MAT_GOLD = 2000, MAT_PLASTIC = 2000)
/datum/design_techweb/mechfab/equipment/weapon/phase
name = "NT-PE \"Scorpio\" Phase-Emitter"
id = "mech_phase"
//req_tech = list(TECH_MATERIAL = 1, TECH_COMBAT = 2, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/phase
materials = list(MAT_STEEL = 6000, MAT_GLASS = 3000, MAT_PLASTIC = 3000)
/datum/design_techweb/mechfab/equipment/weapon/ion
name = "MK-IV Ion Heavy Cannon"
id = "mech_ion"
//req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
materials = list(MAT_STEEL = 15000, MAT_URANIUM = 2000, MAT_SILVER = 2000, MAT_OSMIUM = 4500, MAT_PLASTIC = 2000)
/datum/design_techweb/mechfab/equipment/weapon/rigged_ion
name = "Jury-Rigged Ion Cannon"
id = "mech_ion-r"
//req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion/rigged
materials = list(MAT_STEEL = 13000, MAT_URANIUM = 1000, MAT_SILVER = 1000, MAT_OSMIUM = 3000, MAT_PLASTIC = 2000)
/datum/design_techweb/mechfab/equipment/weapon/grenade_launcher
name = "SGL-6 Grenade Launcher"
id = "mech_grenade_launcher"
//req_tech = list(TECH_COMBAT = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade
materials = list(MAT_STEEL = 7000, MAT_GOLD = 2000, MAT_PLASTIC = 3000)
/datum/design_techweb/mechfab/equipment/weapon/rigged_grenade_launcher
name = "Jury-Rigged Pneumatic Flashlauncher"
id = "mech_grenade_launcher-rig"
//req_tech = list(TECH_COMBAT = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/rigged
materials = list(MAT_STEEL = 5000, MAT_GOLD = 2000, MAT_PLASTIC = 2000)
/datum/design_techweb/mechfab/equipment/weapon/clusterbang_launcher
name = "SOP-6 Grenade Launcher"
desc = "A weapon that violates the Geneva Convention at 6 rounds per minute."
id = "clusterbang_launcher"
//req_tech = list(TECH_COMBAT= 5, TECH_MATERIAL = 5, TECH_ILLEGAL = 3)
materials = list(MAT_STEEL = 15000, MAT_GOLD = 4500, MAT_URANIUM = 4500)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/clusterbang/limited
/datum/design_techweb/mechfab/equipment/weapon/conc_grenade_launcher
name = "SGL-9 Grenade Launcher"
id = "mech_grenade_launcher_conc"
//req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_ILLEGAL = 1)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/concussion
materials = list(MAT_STEEL = 9000, MAT_GOLD = 1000, MAT_OSMIUM = 1000, MAT_PLASTIC = 3000)
/datum/design_techweb/mechfab/equipment/weapon/frag_grenade_launcher
name = "HEP-MI 6 Grenade Launcher"
id = "mech_grenade_launcher_frag"
//req_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_ILLEGAL = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/frag/mini
materials = list(MAT_STEEL = 10000, MAT_GOLD = 2500, MAT_URANIUM = 3000, MAT_OSMIUM = 3000, MAT_PLASTIC = 3000)
/datum/design_techweb/mechfab/equipment/weapon/flamer
name = "CR-3 Mark 8 Flamethrower"
desc = "A weapon that violates the CCWC at two hundred gallons per minute."
id = "mech_flamer_full"
//req_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 6, TECH_PHORON = 4, TECH_ILLEGAL = 4)
materials = list(MAT_STEEL = 10000, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_PHORON = 8000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer
/datum/design_techweb/mechfab/equipment/weapon/flamer_rigged
name = "AA-CR-1 Mark 4 Flamethrower"
desc = "A weapon that accidentally violates the CCWC at one hundred gallons per minute."
id = "mech_flamer_rigged"
//req_tech = list(TECH_MATERIAL = 3, TECH_COMBAT = 3, TECH_PHORON = 3, TECH_ILLEGAL = 2)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 1500, MAT_SILVER = 1500, MAT_URANIUM = 2000, MAT_PHORON = 6000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/flamer/rigged
/datum/design_techweb/mechfab/equipment/weapon/flame_mg
name = "DR-AC 3 Incendiary Rotary MG"
desc = "A weapon that violates the CCWC at sixty rounds a minute."
id = "mech_lmg_flamer"
//req_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 5, TECH_PHORON = 2, TECH_ILLEGAL = 1)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 1750, MAT_URANIUM = 1500, MAT_PHORON = 4000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/incendiary
/datum/design_techweb/mechfab/equipment/weapon/laser_gamma
name = "GA-X \"Render\" Experimental Gamma Laser"
id = "mech_laser_gamma"
//req_tech = list(TECH_MATERIAL = 4, TECH_COMBAT = 4, TECH_PHORON = 4, TECH_POWER = 4, TECH_ILLEGAL = 3)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 4000, MAT_PHORON = 2500, MAT_SILVER = 1000, MAT_GOLD = 500, MAT_URANIUM = 3000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/gamma
// *** Nonweapon modules
/datum/design_techweb/mechfab/equipment/wormhole_gen
name = "Wormhole Generator"
desc = "An exosuit module that can generate small quasi-stable wormholes."
id = "mech_wormhole_gen"
//req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/teleporter
name = "Teleporter"
desc = "An exosuit module that allows teleportation to any position in view."
id = "mech_teleporter"
//req_tech = list(TECH_BLUESPACE = 10, TECH_MAGNET = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/teleporter
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/cloak
name = "Cloaking Device"
desc = "A device that renders the exosuit invisible to the naked eye, though not to thermal detection. Uses large amounts of energy."
id = "mech_cloaking"
//req_tech = list(TECH_BLUESPACE = 10, TECH_MAGNET = 5)
build_path = /obj/item/mecha_parts/mecha_equipment/cloak
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/rcd
name = "RCD"
desc = "An exosuit-mounted rapid construction device."
id = "mech_rcd"
materials = list(MAT_STEEL = 20000, MAT_PLASTIC = 10000, MAT_PHORON = 18750, MAT_SILVER = 15000, MAT_GOLD = 15000)
//req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/equipment/gravcatapult
name = "Gravitational Catapult"
desc = "An exosuit-mounted gravitational catapult."
id = "mech_gravcatapult"
//req_tech = list(TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_ENGINEERING = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/repair_droid
name = "Repair Droid"
desc = "Automated repair droid, exosuits' best companion. BEEP BOOP"
id = "mech_repair_droid"
//req_tech = list(TECH_MAGNET = 3, TECH_DATA = 3, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 7500, MAT_GOLD = 750, MAT_SILVER = 1500, MAT_GLASS = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES
)
/* These are way too OP to be buildable
/datum/design_techweb/mechfab/equipment/combat_shield
name = "linear combat shield"
desc = "Linear shield projector. Deploys a large, familiar, and rectangular shield in one direction at a time."
id = "mech_shield_droid"
//req_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_ILLEGAL = 4)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_PHORON = 5000, MAT_GLASS = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/combat_shield
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES
)
/datum/design_techweb/mechfab/equipment/omni_shield
name = "Omni Shield"
desc = "Integral shield projector. Can only protect the exosuit, but has no weak angles."
id = "mech_shield_omni"
//req_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_ILLEGAL = 4)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_PHORON = 5000, MAT_GLASS = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/omni_shield
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES
)
*/
/datum/design_techweb/mechfab/equipment/crisis_drone
name = "Crisis Drone"
desc = "Deploys a small medical drone capable of patching small wounds in order to stabilize nearby patients."
id = "mech_med_droid"
//req_tech = list(TECH_PHORON = 3, TECH_MAGNET = 6, TECH_BIO = 5, TECH_DATA = 4, TECH_ARCANE = 1)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_SILVER = 3000, MAT_VERDANTIUM = 2500, MAT_GLASS = 3000)
build_path = /obj/item/mecha_parts/mecha_equipment/crisis_drone
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/mechfab/equipment/rad_drone
name = "Hazmat Drone"
desc = "Deploys a small hazmat drone capable of purging minor radiation damage in order to stabilize nearby patients."
id = "mech_rad_droid"
//req_tech = list(TECH_PHORON = 4, TECH_MAGNET = 5, TECH_BIO = 6, TECH_DATA = 4, TECH_ARCANE = 1)
materials = list(MAT_STEEL = 8000, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_VERDANTIUM = 2500, MAT_GLASS = 3000)
build_path = /obj/item/mecha_parts/mecha_equipment/crisis_drone/rad
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/mechfab/equipment/medanalyzer
name = "Mounted Body Scanner"
desc = "An advanced mech-mounted device that is not quite as powerful as a stationary body scanner, though still suitably powerful."
id = "mech_med_analyzer"
//req_tech = list(TECH_PHORON = 4, TECH_MAGNET = 5, TECH_BIO = 5, TECH_DATA = 4)
materials = list(MAT_PLASTEEL = 4500, MAT_GOLD = 2000, MAT_URANIUM = 3000, MAT_GLASS = 3000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/medanalyzer
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/mechfab/equipment/jetpack
name = "Ion Jetpack"
desc = "Using directed ion bursts and cunning solar wind reflection technique, this device enables controlled space flight."
id = "mech_jetpack"
//req_tech = list(TECH_ENGINEERING = 3, TECH_MAGNET = 4) //One less magnet than the actual got-damn teleporter.
build_path = /obj/item/mecha_parts/mecha_equipment/tool/jetpack
materials = list(MAT_STEEL = 7500, MAT_SILVER = 300, MAT_GLASS = 600)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/phoron_generator
name = "Phoron Reactor"
desc = "Phoron Reactor"
id = "mech_phoron_generator"
//req_tech = list(TECH_PHORON = 2, TECH_POWER= 2, TECH_ENGINEERING = 2)
build_path = /obj/item/mecha_parts/mecha_equipment/generator
materials = list(MAT_STEEL = 7500, MAT_SILVER = 375, MAT_GLASS = 750)
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/energy_relay
name = "Energy Relay"
id = "mech_energy_relay"
//req_tech = list(TECH_MAGNET = 4, TECH_POWER = 3)
materials = list(MAT_STEEL = 7500, MAT_GOLD = 1500, MAT_SILVER = 2250, MAT_GLASS = 1500)
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/ccw_armor
name = "CCW Armor Booster"
desc = "Exosuit close-combat armor booster."
id = "mech_ccw_armor"
//req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 4)
materials = list(MAT_STEEL = 11250, MAT_SILVER = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/equipment/proj_armor
name = "Ranged Armor Booster"
desc = "Exosuit projectile armor booster."
id = "mech_proj_armor"
//req_tech = list(TECH_MATERIAL = 5, TECH_COMBAT = 5, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 15000, MAT_GOLD = 3750)
build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MODULES
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/equipment/diamond_drill
name = "Diamond Drill"
desc = "A diamond version of the exosuit drill. It's harder, better, faster, stronger."
id = "mech_diamond_drill"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 7500, MAT_DIAMOND = 4875)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/equipment/ground_drill
name = "Surface Bore"
desc = "A heavy duty bore. Bigger, better, stronger than the core sampler, but not quite as good as a large drill."
id = "mech_ground_drill"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 2, TECH_PHORON = 1)
materials = list(MAT_STEEL = 7000, MAT_SILVER = 3000, MAT_PHORON = 2000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/bore
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/equipment/orescanner
name = "Ore Scanner"
desc = "A hefty device used to scan for subterranean veins of ore."
id = "mech_ore_scanner"
//req_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/orescanner
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/equipment/advorescanner
name = "Advanced Ore Scanner"
desc = "A hefty device used to scan for the exact volumes of subterranean veins of ore."
id = "mech_ore_scanner_adv"
//req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_POWER = 4, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 5000, MAT_OSMIUM = 3000, MAT_SILVER = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/orescanner/advanced
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/equipment/runningboard
name = "Powered Exosuit Running Board"
desc = "A running board with a power-lifter attachment, to quickly catapult exosuit pilots into the cockpit. Only fits to working exosuits."
id = "mech_runningboard"
//req_tech = list(TECH_MATERIAL = 6)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/mecha_parts/mecha_equipment/runningboard/limited
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/powerwrench
name = "hydraulic wrench"
desc = "A large, hydraulic wrench."
id = "mech_wrench"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 5000, MAT_PLASTIC = 2000, MAT_GLASS = 1250)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/equipment/powercrowbar
name = "hydraulic prybar"
desc = "A large, hydraulic prybar."
id = "mech_crowbar"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000, MAT_OSMIUM = 3000, MAT_GLASS = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/prybar
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/equipment/powercutters
name = "hydraulic cable cutter"
desc = "A large, hydraulic cablecutter."
id = "mech_wirecutter"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000, MAT_OSMIUM = 3000, MAT_GLASS = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/cutter
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/equipment/powerscrewdriver
name = "hydraulic screwdriver"
desc = "A large, hydraulic screwdriver."
id = "mech_screwdriver"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000, MAT_OSMIUM = 3000, MAT_GLASS = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/screwdriver
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/equipment/powerwelder
name = "welding laser"
desc = "A large welding laser."
id = "mech_welder"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000, MAT_PHORON = 3000, MAT_GLASS = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/welding
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/equipment/inflatables
name = "inflatables deployer"
desc = "A large pneumatic inflatable deployer."
id = "mech_inflatables"
//req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2)
materials = list(MAT_STEEL = 2000, MAT_PLASTIC = 4000, MAT_GLASS = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/powertool/inflatables
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/equipment/hardpoint_clamp
name = "hardpoint actuator"
desc = "A complex device used to commandeer equipment from the ground."
id = "mech_hardpoint_clamp"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_POWER = 5, TECH_COMBAT = 2, TECH_MAGNET = 4)
materials = list(MAT_PLASTEEL = 2500, MAT_PLASTIC = 3000, MAT_OSMIUM = 1500, MAT_SILVER = 2000)
build_path = /obj/item/mecha_parts/mecha_equipment/hardpoint_actuator
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/generator_nuclear
name = "Nuclear Reactor"
desc = "Exosuit-held nuclear reactor. Converts uranium and everyone's health to energy."
id = "mech_generator_nuclear"
//req_tech = list(TECH_POWER= 3, TECH_ENGINEERING = 3, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 7500, MAT_SILVER = 375, MAT_GLASS = 750)
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/speedboost_ripley
name = "Ripley Leg Actuator Overdrive"
desc = "System enhancements and overdrives to make a mech's legs move faster."
id = "mech_speedboost_ripley"
//req_tech = list( TECH_POWER = 5, TECH_MATERIAL = 4, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 10000, MAT_SILVER = 1000, MAT_GOLD = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/speedboost
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/auxstorage
name = "Auxillary Exosuit Storage Bay"
desc = "An auxillary storage compartment, for attaching to exosuits."
id = "mech_storage"
//req_tech = list(TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/mecha_parts/mecha_equipment/storage
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
/datum/design_techweb/mechfab/equipment/bsauxstorage
name = "Auxillary Exosuit Storage Wormhole"
desc = "An auxillary storage wormhole, for attaching to exosuits."
id = "mech_storage_bs"
//req_tech = list(TECH_MATERIAL = 4)
materials = list(MAT_PLASTEEL = 10000, MAT_GRAPHITE = 8000, MAT_OSMIUM = 6000, MAT_PHORON = 6000, MAT_SILVER = 4000, MAT_GOLD = 4000)
build_path = /obj/item/mecha_parts/mecha_equipment/storage/bluespace
category = list(
RND_CATEGORY_MECHFAB_EQUIPMENT + RND_SUBCATEGORY_MECHFAB_EQUIPMENT_MISC
)
//Micromech modules.
/datum/design_techweb/mechfab/equipment/weapon/taser/micro
name = "MICRO TS-12 \"Suppressor\" integrated taser"
id = "micro_taser"
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/microtaser
/datum/design_techweb/mechfab/equipment/weapon/laser/micro
name = "MICRO WS-19 \"Torch\" laser carbine"
id = "micro_laser"
// req_tech = list(TECH_COMBAT = 3, TECH_MAGNET = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/microlaser
/datum/design_techweb/mechfab/equipment/weapon/laser_heavy/micro
name = "MICRO PC-20 \"Lance\" light laser cannon"
id = "micro_laser_heavy"
//req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
materials = list(MAT_STEEL = 10000, MAT_GLASS = 1000, MAT_DIAMOND = 2000)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/microheavy
/datum/design_techweb/mechfab/equipment/weapon/grenade_launcher/micro
name = "MICRO FP-20 mounted grenade launcher"
id = "micro_flashbang_launcher"
// req_tech = list(TECH_COMBAT = 3)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/grenade/microflashbang
/datum/design_techweb/mechfab/equipment/weapon/scattershot/micro
name = "MICRO Remington C-12 \"Boomstick\""
desc = "A mounted combat shotgun with integrated ammo-lathe. Only fits micro mecha."
id = "micro_scattershot"
// req_tech = list(TECH_COMBAT = 4)
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/microshotgun
//End of micromech parts
@@ -0,0 +1,121 @@
// PDA
/datum/design_techweb/general/pda
name = "PDA"
desc = "Cheaper than whiny non-digital assistants."
id = "pda"
// req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
build_path = /obj/item/pda
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
// Cartridges
/datum/design_techweb/pda_cartridge
// req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MISC
)
/datum/design_techweb/pda_cartridge/New()
. = ..()
var/obj/object_build_item_path = build_path
name = "PDA accessory ([initial(object_build_item_path.name)])"
/datum/design_techweb/pda_cartridge/cart_basic
id = "cart_basic"
build_path = /obj/item/cartridge
/datum/design_techweb/pda_cartridge/engineering
id = "cart_engineering"
build_path = /obj/item/cartridge/engineering
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/atmos
id = "cart_atmos"
build_path = /obj/item/cartridge/atmos
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/medical
id = "cart_medical"
build_path = /obj/item/cartridge/medical
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/chemistry
id = "cart_chemistry"
build_path = /obj/item/cartridge/chemistry
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/security
id = "cart_security"
build_path = /obj/item/cartridge/security
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/janitor
id = "cart_janitor"
build_path = /obj/item/cartridge/janitor
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/science
id = "cart_science"
build_path = /obj/item/cartridge/signal/science
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/quartermaster
id = "cart_quartermaster"
build_path = /obj/item/cartridge/quartermaster
departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/head
id = "cart_head"
build_path = /obj/item/cartridge/head
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/hop
id = "cart_hop"
build_path = /obj/item/cartridge/hop
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/hos
id = "cart_hos"
build_path = /obj/item/cartridge/hos
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/ce
id = "cart_ce"
build_path = /obj/item/cartridge/ce
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/cmo
id = "cart_cmo"
build_path = /obj/item/cartridge/cmo
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/rd
id = "cart_rd"
build_path = /obj/item/cartridge/rd
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pda_cartridge/captain
id = "cart_captain"
build_path = /obj/item/cartridge/captain
departmental_flags = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/tech_disk
name = "Technology Data Storage Disk"
desc = "Produce additional disks for storing technology data."
id = "tech_disk"
// req_tech = list(TECH_DATA = 1)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 30, MAT_GLASS = 10)
build_path = /obj/item/disk/tech_disk
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,420 @@
/*
* Modsuits
*/
//Modsuit chassis
/datum/design_techweb/mechfab/modsuit
//req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_PHORON = 3, TECH_MAGNET = 4, TECH_POWER = 6)
category = list(
RND_CATEGORY_MODSUITS
)
//General robotics modsuit
/datum/design_techweb/mechfab/modsuit/basic_belt
name = "Advanced Suit Control Belt"
desc = "A belt holding a compressed space-suit."
id = "rigmodule_belt_basic"
materials = list(MAT_PLASTEEL = 12000, MAT_GOLD = 3000, MAT_GRAPHITE = 3000, MAT_OSMIUM = 1000, MAT_PLASTIC = 5000)
build_path = /obj/item/rig/robotics
///Modsuit Modules
/datum/design_techweb/mechfab/modsuit/modules
//req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 5, TECH_PHORON = 3, TECH_MAGNET = 4, TECH_POWER = 6)
category = list(
RND_CATEGORY_MODSUIT_MODULES
)
/datum/design_techweb/mechfab/modsuit/rescuepharm
name = "hardsuit mounted rescue pharmacy"
desc = "A suit mounted rescue drug dispenser."
id = "rig_component_rescuepharm"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_BIO = 4)
materials = list(MAT_PLASTEEL = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250)
build_path = /obj/item/rig_module/rescue_pharm
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/mechfab/modsuit/mounted_sizegun
name = "hardsuit mounted size gun"
desc = "A suit mounted size gun. Features interface-based target size adjustment for hands-free size-altering shenanigans."
id = "rig_gun_sizegun"
//req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/rig_module/mounted/sizegun
//Not giving this a department flag intentionally.
/datum/design_techweb/mechfab/modsuit/modules/jetpack
name = "hardsuit maneuvering jets"
desc = "A compact gas thruster system for a hardsuit."
id = "rig_thrusters"
materials = list(MAT_PLASTEEL = 1000, MAT_GOLD = 1000, MAT_GRAPHITE = 1000, MAT_PLASTIC = 500)
build_path = /obj/item/rig_module/maneuvering_jets
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)
/datum/design_techweb/mechfab/modsuit/modules/powersink
name = "hardsuit power siphon"
desc = "A complex device used to pull power from machines."
id = "rig_siphon"
//req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 5, TECH_PHORON = 4, TECH_MAGNET = 5, TECH_POWER = 6, TECH_ILLEGAL = 3)
materials = list(MAT_PLASTEEL = 3000, MAT_METALHYDROGEN = 1000, MAT_GRAPHITE = 1000, MAT_PLASTIC = 5000, MAT_PHORON = 2000, MAT_VERDANTIUM = 1500)
build_path = /obj/item/rig_module/power_sink
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)
/datum/design_techweb/mechfab/modsuit/modules/flash
name = "hardsuit mounted flash"
desc = "A suit-mounted flash."
id = "rig_device_flash"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_MAGNET = 4, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 2000, MAT_PLASTIC = 3000, MAT_METALHYDROGEN = 200, MAT_GRAPHITE = 500)
build_path = /obj/item/rig_module/device/flash
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY
)
/datum/design_techweb/mechfab/modsuit/modules/plasmacutter
name = "hardsuit mounted plasmacutter"
desc = "A suit-mounted plasmacutter."
id = "rig_device_plasmacutter"
//req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 3, TECH_MAGNET = 4, TECH_PHORON = 3, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 3000, MAT_PLASTIC = 3000, MAT_PHORON = 2500, MAT_GRAPHITE = 500)
build_path = /obj/item/rig_module/device/plasmacutter
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/modsuit/modules/healthanalyzer
name = "hardsuit health analyzer"
desc = "A hardsuit mounted health analyzer."
id = "rig_device_healthanalyzer"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_BIO = 4, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 1000, MAT_SILVER = 1000, MAT_GRAPHITE = 1000, MAT_PLASTIC = 500)
build_path = /obj/item/rig_module/device/healthscanner
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/mechfab/modsuit/modules/drill
name = "hardsuit mounted drill"
desc = "A hardsuit mounted drill."
id = "rig_device_drill"
//req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 1500, MAT_DIAMOND = 2500, MAT_GRAPHITE = 1000, MAT_PLASTIC = 500)
build_path = /obj/item/rig_module/device/drill
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/modsuit/modules/excdrill
name = "hardsuit mounted excavation drill"
desc = "A hardsuit mounted excavation drill."
id = "rig_device_excdrill"
//req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 6, TECH_MAGNET = 5, TECH_POWER = 5, TECH_ARCANE = 1)
materials = list(MAT_PLASTEEL = 1500, MAT_DIAMOND = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 1000)
build_path = /obj/item/rig_module/device/arch_drill
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/mechfab/modsuit/modules/anomscanner
name = "hardsuit mounted anomaly scanner"
desc = "A suit-mounted anomaly scanner."
id = "rig_device_anomscanner"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_MAGNET = 4, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 2000, MAT_PLASTIC = 3000, MAT_METALHYDROGEN = 200, MAT_GRAPHITE = 500)
build_path = /obj/item/rig_module/device/anomaly_scanner
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/mechfab/modsuit/modules/orescanner
name = "hardsuit mounted ore scanner"
desc = "A suit-mounted ore scanner."
id = "rig_device_orescanner"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_POWER = 3)
materials = list(MAT_PLASTEEL = 2000, MAT_PLASTIC = 2000, MAT_GRAPHITE = 500)
build_path = /obj/item/rig_module/device/orescanner
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/modsuit/modules/rcd
name = "hardsuit mounted rcd"
desc = "A suit-mounted rcd."
id = "rig_device_rcd"
//req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 3, TECH_MAGNET = 4, TECH_PHORON = 3, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 5000, MAT_URANIUM = 3000, MAT_PHORON = 2000, MAT_GRAPHITE = 1500)
build_path = /obj/item/rig_module/device/rcd
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/modsuit/modules/paperdispenser
name = "hardsuit mounted paper dispenser"
desc = "A suit-mounted paper dispenser."
id = "rig_device_paperdispenser"
//req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_MAGNET = 2, TECH_BIO = 2, TECH_POWER = 2)
materials = list(MAT_PLASTEEL = 1000, MAT_PLASTIC = 500, MAT_PHORON = 500, MAT_GRAPHITE = 100)
build_path = /obj/item/rig_module/device/paperdispenser
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/mechfab/modsuit/modules/pen
name = "hardsuit mounted pen"
desc = "A suit-mounted pen."
id = "rig_device_pen"
//req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_MAGNET = 2, TECH_BIO = 2, TECH_POWER = 2)
materials = list(MAT_PLASTEEL = 1000, MAT_PLASTIC = 500, MAT_PHORON = 500, MAT_GRAPHITE = 100)
build_path = /obj/item/rig_module/device/pen
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/mechfab/modsuit/modules/grenade_metalfoam
name = "hardsuit metalfoam-bomb launcher"
desc = "A compact metalfoam grenade system for a hardsuit."
id = "rig_grenade_metalfoam"
//req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_MAGNET = 2, TECH_POWER = 3)
materials = list(MAT_PLASTEEL = 2000, MAT_OSMIUM = 1000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500)
build_path = /obj/item/rig_module/grenade_launcher/metalfoam
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/modsuit/modules/grenade_flash
name = "hardsuit flashbang launcher"
desc = "A compact flashbang grenade system for a hardsuit."
id = "rig_grenade_flashbang"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_PHORON = 3, TECH_MAGNET = 4, TECH_POWER = 5, TECH_COMBAT = 4)
materials = list(MAT_PLASTEEL = 2000, MAT_OSMIUM = 1500, MAT_GRAPHITE = 1000, MAT_PLASTIC = 1000)
build_path = /obj/item/rig_module/grenade_launcher/flash
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/modsuit/modules/grenade_cleanfoam
name = "hardsuit cleaning-foam-bomb launcher"
desc = "A compact cleaning-foam grenade system for a hardsuit."
id = "rig_grenade_cleanfoam"
//req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2, TECH_POWER = 2)
materials = list(MAT_PLASTEEL = 2000, MAT_GLASS = 1000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 750)
build_path = /obj/item/rig_module/cleaner_launcher
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/modsuit/modules/taser
name = "hardsuit taser"
desc = "A compact taser system for a hardsuit."
id = "rig_gun_taser"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 2)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500)
build_path = /obj/item/rig_module/mounted/taser
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/modsuit/modules/egun
name = "hardsuit egun"
desc = "A compact egun system for a hardsuit."
id = "rig_gun_egun"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_MAGNET = 3, TECH_POWER = 4, TECH_COMBAT = 4)
materials = list(MAT_PLASTEEL = 2000, MAT_GOLD = 1250, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500)
build_path = /obj/item/rig_module/mounted/egun
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/modsuit/modules/mop
name = "hardsuit intense cleaning device"
desc = "An advanced cleaning device."
id = "rig_gun_tempgun"
//req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 4, TECH_MAGNET = 5, TECH_POWER = 4, TECH_COMBAT = 6)
materials = list(MAT_PLASTEEL = 2000, MAT_GOLD = 1750, MAT_URANIUM = 1500, MAT_GRAPHITE = 1500, MAT_PLASTIC = 1000)
build_path = /obj/item/rig_module/mounted/mop
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SERVICE
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/mechfab/modsuit/modules/sprinter
name = "hardsuit overclocker"
desc = "A compact overclocking system for a hardsuit."
id = "rig_component_sprinter"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_BIO = 4, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/rig_module/sprinter
/datum/design_techweb/mechfab/modsuit/modules/meson
name = "hardsuit meson visor"
desc = "A compact meson visor for a hardsuit."
id = "rig_component_meson"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 5, TECH_MAGNET = 3, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500)
build_path = /obj/item/rig_module/vision/meson
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/modsuit/modules/material
name = "hardsuit material visor"
desc = "A compact material visor for a hardsuit."
id = "rig_component_material"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 5, TECH_MAGNET = 3, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500)
build_path = /obj/item/rig_module/vision/material
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SUPPLY
)
departmental_flags = DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mechfab/modsuit/modules/nvg
name = "hardsuit night-vision visor"
desc = "A compact night-vision visor for a hardsuit."
id = "rig_component_nvg"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 6, TECH_MAGNET = 4, TECH_POWER = 5)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_OSMIUM = 500, MAT_URANIUM = 1000)
build_path = /obj/item/rig_module/vision/nvg
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/modsuit/modules/sechud
name = "hardsuit security visor"
desc = "A compact security visor for a hardsuit."
id = "rig_component_sechud"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_POWER = 2)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_SILVER = 500)
build_path = /obj/item/rig_module/vision/sechud
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/mechfab/modsuit/modules/medhud
name = "hardsuit medical visor"
desc = "A compact medical visor for a hardsuit."
id = "rig_component_medhud"
//req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_MAGNET = 3, TECH_BIO = 2)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 500, MAT_SILVER = 500)
build_path = /obj/item/rig_module/vision/medhud
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/mechfab/modsuit/modules/voice
name = "hardsuit voice-changer"
desc = "A compact voice-changer for a hardsuit."
id = "rig_component_voice"
//req_tech = list(TECH_MATERIAL = 6, TECH_ENGINEERING = 4, TECH_MAGNET = 4, TECH_BIO = 4, TECH_ILLEGAL = 3)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_PLASTIC = 1000, MAT_SILVER = 500, MAT_PHORON = 1000)
build_path = /obj/item/rig_module/voice
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)
/datum/design_techweb/mechfab/modsuit/modules/aicontainer
name = "hardsuit intelligence storage system"
desc = "A compact AI network system for a hardsuit."
id = "rig_component_aicontainer"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_BIO = 4, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_DIAMOND = 1000, MAT_GOLD = 500, MAT_SILVER = 750, MAT_VERDANTIUM = 1000)
build_path = /obj/item/rig_module/ai_container
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_SCIENCE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/mechfab/modsuit/modules/datajack
name = "hardsuit datajack"
desc = "A compact datajack for a hardsuit."
id = "rig_component_datajack"
//req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_POWER = 5)
materials = list(MAT_PLASTEEL = 2000, MAT_GRAPHITE = 1500, MAT_METALHYDROGEN = 1000, MAT_GOLD = 500, MAT_SILVER = 750, MAT_VERDANTIUM = 1000)
build_path = /obj/item/rig_module/datajack
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_GENERAL
)
/datum/design_techweb/mechfab/modsuit/modules/cheminjector
name = "hardsuit chemical injector"
desc = "A compact chemical injector network for a hardsuit."
id = "rig_component_chemicals"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_BIO = 4)
materials = list(MAT_PLASTEEL = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250)
build_path = /obj/item/rig_module/chem_dispenser/injector/advanced/empty
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/mechfab/modsuit/modules/teleporter
name = "hardsuit teleporter system"
desc = "An enigmatic teleporter system for a hardsuit."
id = "rig_component_teleport"
//req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_POWER = 6, TECH_ILLEGAL = 3, TECH_BLUESPACE = 4, TECH_ARCANE = 2, TECH_PRECURSOR = 3)
materials = list(MAT_DURASTEEL = 5000, MAT_GRAPHITE = 3000, MAT_MORPHIUM = 1500, MAT_OSMIUM = 1500, MAT_PHORON = 1750, MAT_VERDANTIUM = 3000, MAT_SUPERMATTER = 2000)
build_path = /obj/item/rig_module/teleporter
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/modsuit/modules/radshield
name = "hardsuit radiation absorption device"
desc = "A miniaturized radiation absorption array, for use in hardsuits and providing full radiation protection."
id = "rig_component_radshield"
//req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 3, TECH_MAGNET = 4, TECH_POWER = 3, TECH_BLUESPACE = 4)
materials = list(MAT_STEEL = 8000, MAT_GRAPHITE = 3000, MAT_OSMIUM = 1500, MAT_PHORON = 2250, MAT_SILVER = 1500, MAT_GOLD = 1500)
build_path = /obj/item/rig_module/rad_shield
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/modsuit/modules/radshield_adv
name = "hardsuit advanced radiation absorption device"
desc = "An optimized, miniaturized radiation absorption array, for use in hardsuits and providing full radiation protection. Reduced power draw."
id = "rig_component_radshield_adv"
//req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_POWER = 6, TECH_BLUESPACE = 4)
materials = list(MAT_PLASTEEL = 8000, MAT_GRAPHITE = 4000, MAT_OSMIUM = 2000, MAT_PHORON = 3250, MAT_SILVER = 2250, MAT_GOLD = 2250)
build_path = /obj/item/rig_module/rad_shield/advanced
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/mechfab/modsuit/modules/atmosshield
name = "hardsuit atmospheric protection enhancement suite"
desc = "An advanced atmospheric protection suite, providing protection against both pressure and heat. At the cost of concerningly high power draw."
id = "rig_component_atmosshield"
//req_tech = list(TECH_MATERIAL = 7, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_POWER = 6, TECH_BLUESPACE = 4)
materials = list(MAT_PLASTEEL = 8000, MAT_DURASTEEL = 4000, MAT_GRAPHITE = 8000, MAT_OSMIUM = 6000, MAT_PHORON = 6000, MAT_SILVER = 4000, MAT_GOLD = 4000)
build_path = /obj/item/rig_module/atmos_shield
category = list(
RND_CATEGORY_MODSUIT_MODULES + RND_SUBCATEGORY_MODSUIT_MODULES_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
@@ -1,219 +1,191 @@
// Modular computer components
/datum/design/item/modularcomponent/AssembleDesignName()
..()
name = "Computer part design ([item_name])"
// Hard drives
/datum/design/item/modularcomponent/disk/normal
/datum/design_techweb/modularcomponent
build_type = PROTOLATHE
category = list(
RND_CATEGORY_MODULAR_COMPUTERS + RND_SUBCATEGORY_MODULAR_COMPUTERS_PARTS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ASSISTANT
/datum/design_techweb/modularcomponent/disk/normal
name = "basic hard drive"
id = "hdd_basic"
req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
// req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 100)
build_path = /obj/item/computer_hardware/hard_drive/
sort_string = "VAAAA"
/datum/design/item/modularcomponent/disk/advanced
/datum/design_techweb/modularcomponent/disk/advanced
name = "advanced hard drive"
id = "hdd_advanced"
materials = list(MAT_STEEL = 4000, MAT_GLASS = 200)
build_path = /obj/item/computer_hardware/hard_drive/advanced
sort_string = "VAAAB"
/datum/design/item/modularcomponent/disk/super
/datum/design_techweb/modularcomponent/disk/super
name = "super hard drive"
id = "hdd_super"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
// req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 8000, MAT_GLASS = 400)
build_path = /obj/item/computer_hardware/hard_drive/super
sort_string = "VAAAC"
/datum/design/item/modularcomponent/disk/cluster
/datum/design_techweb/modularcomponent/disk/cluster
name = "cluster hard drive"
id = "hdd_cluster"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 16000, MAT_GLASS = 800)
build_path = /obj/item/computer_hardware/hard_drive/cluster
sort_string = "VAAAD"
/datum/design/item/modularcomponent/disk/small
/datum/design_techweb/modularcomponent/disk/small
name = "small hard drive"
id = "hdd_small"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 200)
build_path = /obj/item/computer_hardware/hard_drive/small
sort_string = "VAAAE"
/datum/design/item/modularcomponent/disk/micro
/datum/design_techweb/modularcomponent/disk/micro
name = "micro hard drive"
id = "hdd_micro"
req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
// req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 100)
build_path = /obj/item/computer_hardware/hard_drive/micro
sort_string = "VAAAF"
// Network cards
/datum/design/item/modularcomponent/netcard/basic
/datum/design_techweb/modularcomponent/netcard/basic
name = "basic network card"
id = "netcard_basic"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1)
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1)
materials = list(MAT_STEEL = 500, MAT_GLASS = 100)
build_path = /obj/item/computer_hardware/network_card
sort_string = "VBAAA"
/datum/design/item/modularcomponent/netcard/advanced
/datum/design_techweb/modularcomponent/netcard/advanced
name = "advanced network card"
id = "netcard_advanced"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2)
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 1000, MAT_GLASS = 200)
build_path = /obj/item/computer_hardware/network_card/advanced
sort_string = "VBAAB"
/datum/design/item/modularcomponent/netcard/wired
/datum/design_techweb/modularcomponent/netcard/wired
name = "wired network card"
id = "netcard_wired"
req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3)
// req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 5000, MAT_GLASS = 400)
build_path = /obj/item/computer_hardware/network_card/wired
sort_string = "VBAAC"
// Batteries
/datum/design/item/modularcomponent/battery/normal
/datum/design_techweb/modularcomponent/battery/normal
name = "standard battery module"
id = "bat_normal"
req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1)
// req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1)
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/computer_hardware/battery_module
sort_string = "VCAAA"
/datum/design/item/modularcomponent/battery/advanced
/datum/design_techweb/modularcomponent/battery/advanced
name = "advanced battery module"
id = "bat_advanced"
req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2)
// req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/computer_hardware/battery_module/advanced
sort_string = "VCAAB"
/datum/design/item/modularcomponent/battery/super
/datum/design_techweb/modularcomponent/battery/super
name = "super battery module"
id = "bat_super"
req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3)
// req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 8000)
build_path = /obj/item/computer_hardware/battery_module/super
sort_string = "VCAAC"
/datum/design/item/modularcomponent/battery/ultra
/datum/design_techweb/modularcomponent/battery/ultra
name = "ultra battery module"
id = "bat_ultra"
req_tech = list(TECH_POWER = 5, TECH_ENGINEERING = 4)
// req_tech = list(TECH_POWER = 5, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 16000)
build_path = /obj/item/computer_hardware/battery_module/ultra
sort_string = "VCAAD"
/datum/design/item/modularcomponent/battery/nano
/datum/design_techweb/modularcomponent/battery/nano
name = "nano battery module"
id = "bat_nano"
req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1)
// req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1)
materials = list(MAT_STEEL = 2000)
build_path = /obj/item/computer_hardware/battery_module/nano
sort_string = "VCAAE"
/datum/design/item/modularcomponent/battery/micro
/datum/design_techweb/modularcomponent/battery/micro
name = "micro battery module"
id = "bat_micro"
req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2)
// req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/computer_hardware/battery_module/micro
sort_string = "VCAAF"
// Processor unit
/datum/design/item/modularcomponent/cpu/
/datum/design_techweb/modularcomponent/cpu/
name = "computer processor unit"
id = "cpu_normal"
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
// req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 8000)
build_path = /obj/item/computer_hardware/processor_unit
sort_string = "VDAAA"
/datum/design/item/modularcomponent/cpu/small
/datum/design_techweb/modularcomponent/cpu/small
name = "computer microprocessor unit"
id = "cpu_small"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/computer_hardware/processor_unit/small
sort_string = "VDAAB"
/datum/design/item/modularcomponent/cpu/photonic
/datum/design_techweb/modularcomponent/cpu/photonic
name = "computer photonic processor unit"
id = "pcpu_normal"
req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 4)
// req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 32000, glass = 8000)
build_path = /obj/item/computer_hardware/processor_unit/photonic
sort_string = "VDAAC"
/datum/design/item/modularcomponent/cpu/photonic/small
/datum/design_techweb/modularcomponent/cpu/photonic/small
name = "computer photonic microprocessor unit"
id = "pcpu_small"
req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3)
// req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 16000, glass = 4000)
build_path = /obj/item/computer_hardware/processor_unit/photonic/small
sort_string = "VDAAD"
// Other parts
/datum/design/item/modularcomponent/cardslot
/datum/design_techweb/modularcomponent/cardslot
name = "RFID card slot"
id = "cardslot"
req_tech = list(TECH_DATA = 2)
// req_tech = list(TECH_DATA = 2)
materials = list(MAT_STEEL = 3000)
build_path = /obj/item/computer_hardware/card_slot
sort_string = "VEAAA"
/datum/design/item/modularcomponent/nanoprinter
/datum/design_techweb/modularcomponent/nanoprinter
name = "nano printer"
id = "nanoprinter"
req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
// req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 3000)
build_path = /obj/item/computer_hardware/nano_printer
sort_string = "VEAAB"
/datum/design/item/modularcomponent/teslalink
/datum/design_techweb/modularcomponent/teslalink
name = "tesla link"
id = "teslalink"
req_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
// req_tech = list(TECH_DATA = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 10000)
build_path = /obj/item/computer_hardware/tesla_link
sort_string = "VEAAC"
// Data crystals (USB flash drives)
/datum/design/item/modularcomponent/portabledrive/AssembleDesignName()
..()
name = "Portable data drive design ([item_name])"
/datum/design/item/modularcomponent/portabledrive/basic
/datum/design_techweb/modularcomponent/portabledrive/basic
name = "basic data crystal"
id = "portadrive_basic"
req_tech = list(TECH_DATA = 1)
// req_tech = list(TECH_DATA = 1)
materials = list(MAT_GLASS = 8000)
build_path = /obj/item/computer_hardware/hard_drive/portable
sort_string = "VFAAA"
/datum/design/item/modularcomponent/portabledrive/advanced
/datum/design_techweb/modularcomponent/portabledrive/advanced
name = "advanced data crystal"
id = "portadrive_advanced"
req_tech = list(TECH_DATA = 2)
// req_tech = list(TECH_DATA = 2)
materials = list(MAT_GLASS = 16000)
build_path = /obj/item/computer_hardware/hard_drive/portable/advanced
sort_string = "VFAAB"
/datum/design/item/modularcomponent/portabledrive/super
/datum/design_techweb/modularcomponent/portabledrive/super
name = "super data crystal"
id = "portadrive_super"
req_tech = list(TECH_DATA = 4)
// req_tech = list(TECH_DATA = 4)
materials = list(MAT_GLASS = 32000)
build_path = /obj/item/computer_hardware/hard_drive/portable/super
sort_string = "VFAAC"
@@ -1,443 +1,358 @@
/datum/design/item/prosfab
/datum/design_techweb/prosfab
build_type = PROSFAB
category = list("Misc")
req_tech = list(TECH_MATERIAL = 1)
category = list(
RND_CATEGORY_PROSFAB + RND_SUBCATEGORY_PROSFAB_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design/item/prosfab/pros
category = list("Prosthetics")
// Make new external organs and make 'em robotish
/datum/design/item/prosfab/pros/Fabricate(var/newloc, var/fabricator)
if(istype(fabricator, /obj/machinery/mecha_part_fabricator/pros))
var/obj/machinery/mecha_part_fabricator/pros/prosfab = fabricator
var/obj/item/organ/O = new build_path(newloc)
if(prosfab.manufacturer)
var/datum/robolimb/manf = GLOB.all_robolimbs[prosfab.manufacturer]
if(!(O.organ_tag in manf.parts)) // Make sure we're using an actually present icon.
manf = GLOB.all_robolimbs["Unbranded"]
if(prosfab.species in manf.species_alternates) // If the prosthetics fab is set to say, Unbranded, and species set to 'Tajaran', it will make the Taj variant of Unbranded, if it exists.
manf = manf.species_alternates[prosfab.species]
if(!prosfab.species || (prosfab.species in manf.species_cannot_use)) // Fabricator ensures the manufacturer can make parts for the species we're set to.
O.data.setup_from_species(GLOB.all_species["[manf.suggested_species]"])
else
O.data.setup_from_species(GLOB.all_species[prosfab.species])
else
O.data.setup_from_species(GLOB.all_species["Human"])
O.robotize(prosfab.manufacturer)
return O
return ..()
// Deep Magic for the torso since it needs to be a new mob
/datum/design/item/prosfab/pros/torso/Fabricate(var/newloc, var/fabricator)
if(istype(fabricator, /obj/machinery/mecha_part_fabricator/pros))
var/obj/machinery/mecha_part_fabricator/pros/prosfab = fabricator
var/newspecies = "Human"
var/datum/robolimb/manf = GLOB.all_robolimbs[prosfab.manufacturer]
if(manf)
if(prosfab.species in manf.species_alternates) // If the prosthetics fab is set to say, Unbranded, and species set to 'Tajaran', it will make the Taj variant of Unbranded, if it exists.
manf = manf.species_alternates[prosfab.species]
if(!prosfab.species || (prosfab.species in manf.species_cannot_use))
newspecies = manf.suggested_species
else
newspecies = prosfab.species
var/mob/living/carbon/human/H = new(newloc,newspecies)
H.set_stat(DEAD)
H.gender = gender
for(var/obj/item/organ/external/EO in H.organs)
if(EO.organ_tag == BP_TORSO || EO.organ_tag == BP_GROIN)
continue //Roboticizing a torso does all the children and wastes time, do it later
else
EO.remove_rejuv()
for(var/obj/item/organ/external/O in H.organs)
O.data.setup_from_species(GLOB.all_species[newspecies])
if(!(O.organ_tag in manf.parts)) // Make sure we're using an actually present icon.
manf = GLOB.all_robolimbs["Unbranded"]
O.robotize(manf.company)
O.data.setup_from_dna()
// Skincolor weirdness.
O.s_col[1] = 0
O.s_col[2] = 0
O.s_col[3] = 0
// Resetting the UI does strange things for the skin of a non-human robot, which should be controlled by a whole different thing.
H.r_skin = 0
H.g_skin = 0
H.b_skin = 0
H.dna.ResetUIFrom(H)
H.allow_spontaneous_tf = TRUE // Allows vore customization of synthmorphs
H.real_name = "Synthmorph #[rand(100,999)]"
H.name = H.real_name
H.dir = 2
H.add_language(LANGUAGE_EAL)
return H
/datum/design_techweb/prosfab/pros
category = list(
RND_CATEGORY_PROSFAB + RND_SUBCATEGORY_PROSFAB_EXTERNAL
)
//////////////////// Prosthetics ////////////////////
/datum/design/item/prosfab/pros/torso
time = 35
/datum/design_techweb/prosfab/pros/torso
materials = list(MAT_STEEL = 30000, MAT_GLASS = 7500)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case
var/gender = MALE
/datum/design/item/prosfab/pros/torso/male
/datum/design_techweb/prosfab/pros/torso/male
name = "FBP Torso (M)"
id = "pros_torso_m"
build_path = /obj/item/organ/external/chest
gender = MALE
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "torso_m"
/obj/item/organ/external/chest/f //To satisfy CI. :|
/datum/design/item/prosfab/pros/torso/female
/datum/design_techweb/prosfab/pros/torso/female
name = "FBP Torso (F)"
id = "pros_torso_f"
build_path = /obj/item/organ/external/chest/f
gender = FEMALE
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "torso_f"
/datum/design/item/prosfab/pros/head
/datum/design_techweb/prosfab/pros/head
name = "Prosthetic Head"
id = "pros_head"
build_path = /obj/item/organ/external/head
time = 30
materials = list(MAT_STEEL = 18750, MAT_GLASS = 3750)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 3, TECH_DATA = 3) //Saving the values just in case
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "head_m"
/datum/design/item/prosfab/pros/l_arm
/datum/design_techweb/prosfab/pros/l_arm
name = "Prosthetic Left Arm"
id = "pros_l_arm"
build_path = /obj/item/organ/external/arm
time = 20
materials = list(MAT_STEEL = 10125)
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "l_arm"
/datum/design/item/prosfab/pros/l_hand
/datum/design_techweb/prosfab/pros/l_hand
name = "Prosthetic Left Hand"
id = "pros_l_hand"
build_path = /obj/item/organ/external/hand
time = 15
materials = list(MAT_STEEL = 3375)
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "l_hand"
/datum/design/item/prosfab/pros/r_arm
/datum/design_techweb/prosfab/pros/r_arm
name = "Prosthetic Right Arm"
id = "pros_r_arm"
build_path = /obj/item/organ/external/arm/right
time = 20
materials = list(MAT_STEEL = 10125)
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "r_arm"
/datum/design/item/prosfab/pros/r_hand
/datum/design_techweb/prosfab/pros/r_hand
name = "Prosthetic Right Hand"
id = "pros_r_hand"
build_path = /obj/item/organ/external/hand/right
time = 15
materials = list(MAT_STEEL = 3375)
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "r_hand"
/datum/design/item/prosfab/pros/l_leg
/datum/design_techweb/prosfab/pros/l_leg
name = "Prosthetic Left Leg"
id = "pros_l_leg"
build_path = /obj/item/organ/external/leg
time = 20
materials = list(MAT_STEEL = 8437)
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "l_leg"
/datum/design/item/prosfab/pros/l_foot
/datum/design_techweb/prosfab/pros/l_foot
name = "Prosthetic Left Foot"
id = "pros_l_foot"
build_path = /obj/item/organ/external/foot
time = 15
materials = list(MAT_STEEL = 2813)
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "l_foot"
/datum/design/item/prosfab/pros/r_leg
/datum/design_techweb/prosfab/pros/r_leg
name = "Prosthetic Right Leg"
id = "pros_r_leg"
build_path = /obj/item/organ/external/leg/right
time = 20
materials = list(MAT_STEEL = 8437)
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "r_leg"
/datum/design/item/prosfab/pros/r_foot
/datum/design_techweb/prosfab/pros/r_foot
name = "Prosthetic Right Foot"
id = "pros_r_foot"
build_path = /obj/item/organ/external/foot/right
time = 15
materials = list(MAT_STEEL = 2813)
research_icon = 'icons/mob/human_races/robotic.dmi'
research_icon_state = "r_foot"
/datum/design/item/prosfab/pros/internal
category = list("Prosthetics, Internal")
/datum/design_techweb/prosfab/pros/internal
category = list(
RND_CATEGORY_PROSFAB + RND_SUBCATEGORY_PROSFAB_INTERNAL
)
/datum/design/item/prosfab/pros/internal/cell
/datum/design_techweb/prosfab/pros/internal/cell
name = "Prosthetic Powercell"
id = "pros_cell"
build_path = /obj/item/organ/internal/cell
time = 15
materials = list(MAT_STEEL = 7500, MAT_GLASS = 3000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/internal/eyes
/datum/design_techweb/prosfab/pros/internal/eyes
name = "Prosthetic Eyes"
id = "pros_eyes"
build_path = /obj/item/organ/internal/eyes/robot
time = 15
materials = list(MAT_STEEL = 5625, MAT_GLASS = 5625)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/internal/hydraulic
/datum/design_techweb/prosfab/pros/internal/hydraulic
name = "Hydraulic Hub"
id = "pros_hydraulic"
build_path = /obj/item/organ/internal/heart/machine
time = 15
materials = list(MAT_STEEL = 7500, MAT_PLASTIC = 3000)
/datum/design/item/prosfab/pros/internal/reagcycler
/datum/design_techweb/prosfab/pros/internal/reagcycler
name = "Reagent Cycler"
id = "pros_reagcycler"
build_path = /obj/item/organ/internal/stomach/machine
time = 15
materials = list(MAT_STEEL = 7500, MAT_PLASTIC = 3000)
/datum/design/item/prosfab/pros/internal/heatsink
/datum/design_techweb/prosfab/pros/internal/heatsink
name = "Heatsink"
id = "pros_heatsink"
build_path = /obj/item/organ/internal/robotic/heatsink
time = 15
materials = list(MAT_STEEL = 7500, MAT_PLASTIC = 3000)
/datum/design/item/prosfab/pros/internal/diagnostic
/datum/design_techweb/prosfab/pros/internal/diagnostic
name = "Diagnostic Controller"
id = "pros_diagnostic"
build_path = /obj/item/organ/internal/robotic/diagnostic
time = 15
materials = list(MAT_STEEL = 7500, MAT_PLASTIC = 3000)
/datum/design/item/prosfab/pros/internal/heart
/datum/design_techweb/prosfab/pros/internal/heart
name = "Prosthetic Heart"
id = "pros_heart"
build_path = /obj/item/organ/internal/heart
time = 15
materials = list(MAT_STEEL = 5625, MAT_GLASS = 1000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/internal/lungs
/datum/design_techweb/prosfab/pros/internal/lungs
name = "Prosthetic Lungs"
id = "pros_lung"
build_path = /obj/item/organ/internal/lungs
time = 15
materials = list(MAT_STEEL = 5625, MAT_GLASS = 1000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/internal/liver
/datum/design_techweb/prosfab/pros/internal/liver
name = "Prosthetic Liver"
id = "pros_liver"
build_path = /obj/item/organ/internal/liver
time = 15
materials = list(MAT_STEEL = 5625, MAT_GLASS = 1000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/internal/kidneys
/datum/design_techweb/prosfab/pros/internal/kidneys
name = "Prosthetic Kidneys"
id = "pros_kidney"
build_path = /obj/item/organ/internal/kidneys
time = 15
materials = list(MAT_STEEL = 5625, MAT_GLASS = 1000)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/internal/spleen
/datum/design_techweb/prosfab/pros/internal/spleen
name = "Prosthetic Spleen"
id = "pros_spleen"
build_path = /obj/item/organ/internal/spleen
time = 15
materials = list(MAT_STEEL = 3000, MAT_GLASS = 750)
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
/datum/design/item/prosfab/pros/internal/larynx
/datum/design_techweb/prosfab/pros/internal/larynx
name = "Prosthetic Larynx"
id = "pros_larynx"
build_path = /obj/item/organ/internal/voicebox
time = 15
materials = list(MAT_STEEL = 2000, MAT_GLASS = 750, MAT_PLASTIC = 500)
/datum/design/item/prosfab/pros/internal/stomach
/datum/design_techweb/prosfab/pros/internal/stomach
name = "Prosthetic Stomach"
id = "pros_stomach"
build_path = /obj/item/organ/internal/stomach
time = 15
materials = list(MAT_STEEL = 5625, MAT_GLASS = 1000)
//////////////////// Cyborg Parts ////////////////////
/datum/design/item/prosfab/cyborg
category = list("Cyborg Parts")
time = 20
/datum/design_techweb/prosfab/cyborg
category = list(
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_COMPONENTS
)
materials = list(MAT_STEEL = 3750)
/datum/design/item/prosfab/cyborg/exoskeleton
/datum/design_techweb/prosfab/cyborg/exoskeleton
name = "Robot Exoskeleton"
id = "robot_exoskeleton"
build_path = /obj/item/robot_parts/robot_suit
time = 50
materials = list(MAT_STEEL = 37500)
/datum/design/item/prosfab/cyborg/torso
/datum/design_techweb/prosfab/cyborg/torso
name = "Robot Torso"
id = "robot_torso"
build_path = /obj/item/robot_parts/chest
time = 35
materials = list(MAT_STEEL = 30000)
/datum/design/item/prosfab/cyborg/head
/datum/design_techweb/prosfab/cyborg/head
name = "Robot Head"
id = "robot_head"
build_path = /obj/item/robot_parts/head
time = 35
materials = list(MAT_STEEL = 18750)
/datum/design/item/prosfab/cyborg/l_arm
/datum/design_techweb/prosfab/cyborg/l_arm
name = "Robot Left Arm"
id = "robot_l_arm"
build_path = /obj/item/robot_parts/l_arm
time = 20
materials = list(MAT_STEEL = 13500)
/datum/design/item/prosfab/cyborg/r_arm
/datum/design_techweb/prosfab/cyborg/r_arm
name = "Robot Right Arm"
id = "robot_r_arm"
build_path = /obj/item/robot_parts/r_arm
time = 20
materials = list(MAT_STEEL = 13500)
/datum/design/item/prosfab/cyborg/l_leg
/datum/design_techweb/prosfab/cyborg/l_leg
name = "Robot Left Leg"
id = "robot_l_leg"
build_path = /obj/item/robot_parts/l_leg
time = 20
materials = list(MAT_STEEL = 11250)
/datum/design/item/prosfab/cyborg/r_leg
/datum/design_techweb/prosfab/cyborg/r_leg
name = "Robot Right Leg"
id = "robot_r_leg"
build_path = /obj/item/robot_parts/r_leg
time = 20
materials = list(MAT_STEEL = 11250)
//////////////////// Cyborg Internals ////////////////////
/datum/design/item/prosfab/cyborg/component
category = list("Cyborg Internals")
/datum/design_techweb/prosfab/cyborg/component
category = list(
RND_CATEGORY_MECHFAB_CYBORG + RND_SUBCATEGORY_MECHFAB_CYBORG_INTERNALS
)
build_type = PROSFAB
time = 12
materials = list(MAT_STEEL = 7500)
/datum/design/item/prosfab/cyborg/component/binary_communication_device
/datum/design_techweb/prosfab/cyborg/component/binary_communication_device
name = "Binary Communication Device"
id = "binary_communication_device"
build_path = /obj/item/robot_parts/robot_component/binary_communication_device
/datum/design/item/prosfab/cyborg/component/radio
/datum/design_techweb/prosfab/cyborg/component/radio
name = "Radio"
id = "radio"
build_path = /obj/item/robot_parts/robot_component/radio
/datum/design/item/prosfab/cyborg/component/actuator
/datum/design_techweb/prosfab/cyborg/component/actuator
name = "Actuator"
id = "actuator"
build_path = /obj/item/robot_parts/robot_component/actuator
/datum/design/item/prosfab/cyborg/component/diagnosis_unit
/datum/design_techweb/prosfab/cyborg/component/diagnosis_unit
name = "Diagnosis Unit"
id = "diagnosis_unit"
build_path = /obj/item/robot_parts/robot_component/diagnosis_unit
/datum/design/item/prosfab/cyborg/component/camera
/datum/design_techweb/prosfab/cyborg/component/camera
name = "Camera"
id = "camera"
build_path = /obj/item/robot_parts/robot_component/camera
/datum/design/item/prosfab/cyborg/component/armour
/datum/design_techweb/prosfab/cyborg/component/armour
name = "Armour Plating (Robot)"
id = "armour"
build_path = /obj/item/robot_parts/robot_component/armour
/datum/design/item/prosfab/cyborg/component/armour_heavy
/datum/design_techweb/prosfab/cyborg/component/armour_heavy
name = "Armour Plating (Platform)"
id = "platform_armour"
build_path = /obj/item/robot_parts/robot_component/armour_platform
/datum/design/item/prosfab/cyborg/component/ai_shell
/datum/design_techweb/prosfab/cyborg/component/ai_shell
name = "AI Remote Interface"
id = "mmi_ai_shell"
build_path = /obj/item/mmi/inert/ai_remote
//////////////////// Advanced Components ////////////////////
/datum/design/item/prosfab/cyborg/component/radio_upgraded
/datum/design_techweb/prosfab/cyborg/component/radio_upgraded
name = "Improved Radio"
id = "improved_radio"
build_path = /obj/item/robot_parts/robot_component/radio/upgraded
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
// req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 10000, MAT_DIAMOND = 2000, MAT_PLASTEEL = 3000, MAT_GLASS = 6500, MAT_SILVER = 3000, MAT_MORPHIUM = 560, MAT_DURASTEEL = 800)
/datum/design/item/prosfab/cyborg/component/actuator_upgraded
/datum/design_techweb/prosfab/cyborg/component/actuator_upgraded
name = "Improved Actuator"
id = "improved_actuator"
build_path = /obj/item/robot_parts/robot_component/actuator/upgraded
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
// req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 10000, MAT_PLASTEEL = 2500, MAT_MORPHIUM = 500, MAT_DURASTEEL = 500)
/datum/design/item/prosfab/cyborg/component/diagnosis_unit_upgraded
/datum/design_techweb/prosfab/cyborg/component/diagnosis_unit_upgraded
name = "Improved Diagnosis Unit"
id = "improved_diagnosis_unit"
build_path = /obj/item/robot_parts/robot_component/diagnosis_unit/upgraded
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
// req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 10000, MAT_DIAMOND = 2000, MAT_URANIUM = 4000, MAT_PLASTEEL = 1000, MAT_GLASS = 400, MAT_SILVER = 1000, MAT_MORPHIUM = 420, MAT_DURASTEEL = 600)
/datum/design/item/prosfab/cyborg/component/camera_upgraded
/datum/design_techweb/prosfab/cyborg/component/camera_upgraded
name = "Improved Camera"
id = "improved_camera"
build_path = /obj/item/robot_parts/robot_component/camera/upgraded
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
// req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 10000, MAT_DIAMOND = 2000, MAT_PLASTEEL = 3000, MAT_GLASS = 6500, MAT_SILVER = 3000, MAT_MORPHIUM = 560, MAT_DURASTEEL = 800)
/datum/design/item/prosfab/cyborg/component/binary_communication_device/upgraded
/datum/design_techweb/prosfab/cyborg/component/binary_communication_device/upgraded
name = "Improved Binary Communication Device"
id = "improved_binary_communication_device"
build_path = /obj/item/robot_parts/robot_component/binary_communication_device/upgraded
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
// req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 10000, MAT_DIAMOND = 2000, MAT_PLASTEEL = 3000, MAT_GLASS = 6500, MAT_GOLD = 3000, MAT_DURASTEEL = 800)
/datum/design/item/prosfab/cyborg/component/armour_very_heavy
/datum/design_techweb/prosfab/cyborg/component/armour_very_heavy
name = "Armour Plating (Prototype)"
id = "titan_armour"
build_path = /obj/item/robot_parts/robot_component/armour/armour_titan
req_tech = list(TECH_MATERIAL = 9, TECH_PRECURSOR = 3)
// req_tech = list(TECH_MATERIAL = 9, TECH_PRECURSOR = 3)
materials = list(MAT_STEEL = 12000, MAT_MORPHIUM = 3000, MAT_DURASTEEL = 5000)
//////////////////// Cyborg Modules ////////////////////
/datum/design/item/prosfab/robot_upgrade
category = list("Cyborg Modules")
/datum/design_techweb/prosfab/robot_upgrade
category = list(
RND_CATEGORY_MECHFAB_CYBORG_MODULES
)
build_type = PROSFAB
time = 12
materials = list(MAT_STEEL = 7500)
// Section for utility upgrades
/datum/design/item/prosfab/robot_upgrade/utility/rename
/datum/design_techweb/prosfab/robot_upgrade/utility/rename
name = "Rename Module"
desc = "Used to rename a cyborg."
id = "borg_rename_module"
build_path = /obj/item/borg/upgrade/utility/rename
/datum/design/item/prosfab/robot_upgrade/utility/reset
/datum/design_techweb/prosfab/robot_upgrade/utility/reset
name = "Reset Module"
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot."
id = "borg_reset_module"
build_path = /obj/item/borg/upgrade/utility/reset
/datum/design/item/prosfab/robot_upgrade/utility/restart
/datum/design_techweb/prosfab/robot_upgrade/utility/restart
name = "Emergency Restart Module"
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
id = "borg_restart_module"
@@ -446,60 +361,60 @@
// Section for basic upgrades for all cyborgs
/datum/design/item/prosfab/robot_upgrade/basic/sizeshift
/datum/design_techweb/prosfab/robot_upgrade/basic/sizeshift
name = "Size Alteration Module"
id = "borg_sizeshift_module"
req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
// req_tech = list(TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/borg/upgrade/basic/sizeshift
/datum/design/item/prosfab/robot_upgrade/basic/vtec
/datum/design_techweb/prosfab/robot_upgrade/basic/vtec
name = "VTEC Module"
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
id = "borg_vtec_module"
materials = list(MAT_STEEL = 60000, MAT_GLASS = 4500, MAT_GOLD = 3750)
build_path = /obj/item/borg/upgrade/basic/vtec
/datum/design/item/prosfab/robot_upgrade/basic/syndicate
/datum/design_techweb/prosfab/robot_upgrade/basic/syndicate
name = "Scrambled Equipment Module"
desc = "Allows for the construction of lethal upgrades for cyborgs."
id = "borg_syndicate_module"
req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)
// req_tech = list(TECH_COMBAT = 4, TECH_ILLEGAL = 3)
materials = list(MAT_STEEL = 7500, MAT_GLASS = 11250, MAT_DIAMOND = 7500)
build_path = /obj/item/borg/upgrade/basic/syndicate
/datum/design/item/prosfab/robot_upgrade/basic/language
/datum/design_techweb/prosfab/robot_upgrade/basic/language
name = "Language Module"
desc = "Used to let cyborgs other than clerical or service speak a variety of languages."
id = "borg_language_module"
req_tech = list(TECH_DATA = 6, TECH_MATERIAL = 6)
// req_tech = list(TECH_DATA = 6, TECH_MATERIAL = 6)
materials = list(MAT_STEEL = 25000, MAT_GLASS = 3000, MAT_GOLD = 350)
build_path = /obj/item/borg/upgrade/basic/language
// Section for advanced upgrades for all cyborgs
/datum/design/item/prosfab/robot_upgrade/advanced/bellysizeupgrade
/datum/design_techweb/prosfab/robot_upgrade/advanced/bellysizeupgrade
name = "Robohound Capacity Expansion Module"
id = "borg_hound_capacity_module"
req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2)
// req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/borg/upgrade/advanced/bellysizeupgrade
/datum/design/item/prosfab/robot_upgrade/advanced/sizegun
/datum/design_techweb/prosfab/robot_upgrade/advanced/sizegun
name = "Size Gun Module"
id = "borg_sizegun_module"
req_tech = list(TECH_COMBAT = 3, TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
// req_tech = list(TECH_COMBAT = 3, TECH_BLUESPACE = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 4000)
build_path = /obj/item/borg/upgrade/advanced/sizegun
/datum/design/item/prosfab/robot_upgrade/advanced/jetpack
/datum/design_techweb/prosfab/robot_upgrade/advanced/jetpack
name = "Jetpack Module"
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
id = "borg_jetpack_module"
materials = list(MAT_STEEL = 7500, MAT_PHORON = 11250, MAT_URANIUM = 15000)
build_path = /obj/item/borg/upgrade/advanced/jetpack
/datum/design/item/prosfab/robot_upgrade/advanced/advhealth
/datum/design_techweb/prosfab/robot_upgrade/advanced/advhealth
name = "Advanced Health Analyzer Module"
desc = "An advanced health analyzer suitable for diagnosing more serious injuries."
id = "borg_advhealth_module"
@@ -510,154 +425,118 @@
Some job related borg upgrade modules, adding useful items for puppers.
*/
/datum/design/item/prosfab/robot_upgrade/restricted/bellycapupgrade
/datum/design_techweb/prosfab/robot_upgrade/restricted/bellycapupgrade
name = "Robohound Capability Expansion Module"
id = "borg_hound_capability_module"
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
// req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 8000, MAT_GLASS = 6000)
build_path = /obj/item/borg/upgrade/restricted/bellycapupgrade
/datum/design/item/prosfab/robot_upgrade/restricted/advrped
/datum/design_techweb/prosfab/robot_upgrade/restricted/advrped
name = "Advanced Rapid Part Exchange Device"
desc = "Exactly the same as a standard Advanced RPED, but this one has mounting hardware for a Science Borg."
id = "borg_advrped_module"
req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6)
// req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6)
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000)
build_path = /obj/item/borg/upgrade/restricted/advrped
/datum/design/item/prosfab/robot_upgrade/restricted/diamonddrill
/datum/design_techweb/prosfab/robot_upgrade/restricted/diamonddrill
name = "Diamond Drill"
desc = "A mining drill with a diamond tip, made for use by Mining Borgs."
id = "borg_ddrill_module"
req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_ENGINEERING = 5)
// req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_ENGINEERING = 5)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 2000)
build_path = /obj/item/borg/upgrade/restricted/diamonddrill
/datum/design/item/prosfab/robot_upgrade/restricted/pka
/datum/design_techweb/prosfab/robot_upgrade/restricted/pka
name = "Proto-Kinetic Accelerator"
desc = "A mining weapon designed for clearing rocks and hostile wildlife. This model is equiped with a self upgrade system, allowing it to attach modules hands free."
id = "borg_pka_module"
req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
// req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 5, TECH_POWER = 4)
materials = list(MAT_PLASTEEL = 5000, MAT_GLASS = 1000, MAT_URANIUM = 500, MAT_PLATINUM = 350)
build_path = /obj/item/borg/upgrade/restricted/pka
/datum/design/item/prosfab/robot_upgrade/restricted/tasercooler
/datum/design_techweb/prosfab/robot_upgrade/restricted/tasercooler
name = "Rapid Taser Cooling Module"
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
id = "borg_taser_module"
materials = list(MAT_STEEL = 60000, MAT_GLASS = 4500, MAT_GOLD = 1500, MAT_DIAMOND = 375)
build_path = /obj/item/borg/upgrade/restricted/tasercooler
// Section for quick access for admins, events and such, but can't be produced.
/datum/design/item/prosfab/robot_upgrade/no_prod
category = list() // We simply do not sort them in
/datum/design/item/prosfab/robot_upgrade/no_prod/cyborgtoy
name = "Donk-Soft Cyborg Blaster"
id = "borg_hound_cyborg_blaster"
build_path = /obj/item/borg/upgrade/no_prod/toygun
/datum/design/item/prosfab/robot_upgrade/no_prod/vision_xray
name = "X-ray vision"
id = "borg_hound_vision_xray"
build_path = /obj/item/borg/upgrade/no_prod/vision_xray
/datum/design/item/prosfab/robot_upgrade/no_prod/vision_thermal
name = "Thermal vision"
id = "borg_hound_vision_thermal"
build_path = /obj/item/borg/upgrade/no_prod/vision_thermal
/datum/design/item/prosfab/robot_upgrade/no_prod/vision_meson
name = "Meson vision"
id = "borg_hound_vision_meson"
build_path = /obj/item/borg/upgrade/no_prod/vision_meson
/datum/design/item/prosfab/robot_upgrade/no_prod/vision_material
name = "Material vision"
id = "borg_hound_vision_material"
build_path = /obj/item/borg/upgrade/no_prod/vision_material
/datum/design/item/prosfab/robot_upgrade/no_prod/vision_anomalous
name = "Anomalous vision"
id = "borg_hound_vision_anomalous"
build_path = /obj/item/borg/upgrade/no_prod/vision_anomalous
// Synthmorph Bags.
/datum/design/item/prosfab/synthmorphbag
/datum/design_techweb/prosfab/synthmorphbag
name = "Synthmorph Storage Bag"
desc = "Used to store or slowly defragment an FBP."
id = "misc_synth_bag"
materials = list(MAT_STEEL = 250, MAT_GLASS = 250, MAT_PLASTIC = 2000)
build_path = /obj/item/bodybag/cryobag/robobag
/datum/design/item/prosfab/badge_nt
/datum/design_techweb/prosfab/badge_nt
name = "NanoTrasen Tag"
desc = "Used to identify an empty NanoTrasen FBP."
id = "misc_synth_bag_tag_nt"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag
/datum/design/item/prosfab/badge_morph
/datum/design_techweb/prosfab/badge_morph
name = "Morpheus Tag"
desc = "Used to identify an empty Morpheus FBP."
id = "misc_synth_bag_tag_morph"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag/morpheus
/datum/design/item/prosfab/badge_wardtaka
/datum/design_techweb/prosfab/badge_wardtaka
name = "Ward-Takahashi Tag"
desc = "Used to identify an empty Ward-Takahashi FBP."
id = "misc_synth_bag_tag_wardtaka"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag/wardtaka
/datum/design/item/prosfab/badge_zenghu
/datum/design_techweb/prosfab/badge_zenghu
name = "Zeng-Hu Tag"
desc = "Used to identify an empty Zeng-Hu FBP."
id = "misc_synth_bag_tag_zenghu"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag/zenghu
/datum/design/item/prosfab/badge_gilthari
/datum/design_techweb/prosfab/badge_gilthari
name = "Gilthari Tag"
desc = "Used to identify an empty Gilthari FBP."
id = "misc_synth_bag_tag_gilthari"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_GOLD = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag/gilthari
req_tech = list(TECH_MATERIAL = 4, TECH_ILLEGAL = 2, TECH_PHORON = 2)
// req_tech = list(TECH_MATERIAL = 4, TECH_ILLEGAL = 2, TECH_PHORON = 2)
/datum/design/item/prosfab/badge_veymed
/datum/design_techweb/prosfab/badge_veymed
name = "Vey-Medical Tag"
desc = "Used to identify an empty Vey-Medical FBP."
id = "misc_synth_bag_tag_veymed"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag/veymed
req_tech = list(TECH_MATERIAL = 3, TECH_ILLEGAL = 1, TECH_BIO = 4)
// req_tech = list(TECH_MATERIAL = 3, TECH_ILLEGAL = 1, TECH_BIO = 4)
/datum/design/item/prosfab/badge_hephaestus
/datum/design_techweb/prosfab/badge_hephaestus
name = "Hephaestus Tag"
desc = "Used to identify an empty Hephaestus FBP."
id = "misc_synth_bag_tag_heph"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag/hephaestus
/datum/design/item/prosfab/badge_grayson
/datum/design_techweb/prosfab/badge_grayson
name = "Grayson Tag"
desc = "Used to identify an empty Grayson FBP."
id = "misc_synth_bag_tag_grayson"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag/grayson
/datum/design/item/prosfab/badge_xion
/datum/design_techweb/prosfab/badge_xion
name = "Xion Tag"
desc = "Used to identify an empty Xion FBP."
id = "misc_synth_bag_tag_xion"
materials = list(MAT_STEEL = 1000, MAT_GLASS = 500, MAT_PLASTIC = 1000)
build_path = /obj/item/clothing/accessory/badge/corporate_tag/xion
/datum/design/item/prosfab/badge_bishop
/datum/design_techweb/prosfab/badge_bishop
name = "Bishop Tag"
desc = "Used to identify an empty Bishop FBP."
id = "misc_synth_bag_tag_bishop"
@@ -666,61 +545,104 @@
// Replacement protean bits
/datum/design/item/prosfab/orchestrator
/datum/design_techweb/prosfab/orchestrator
name = "Protean Orchestrator"
id = "prot_orch"
build_path = /obj/item/organ/internal/nano/orchestrator
time = 30
materials = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000)
//req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
// req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
/datum/design/item/prosfab/refactory
/datum/design_techweb/prosfab/refactory
name = "Protean Refactory"
id = "prot_refact"
build_path = /obj/item/organ/internal/nano/refactory
time = 30
materials = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000)
//req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
// req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
///// pAI parts!!!
//////////////////// Cyborg Parts ////////////////////
/datum/design/item/prosfab/paiparts
category = list("pAI Parts")
time = 20
/datum/design_techweb/prosfab/paiparts
category = list(
RND_CATEGORY_PROSFAB_PAI
)
materials = list(MAT_STEEL = 1000, MAT_GLASS = 1000)
/datum/design/item/prosfab/paiparts/cell
/datum/design_techweb/prosfab/paiparts/cell
name = "pAI Cell"
id = "pai_cell"
build_path = /obj/item/paiparts/cell
/datum/design/item/prosfab/paiparts/processor
/datum/design_techweb/prosfab/paiparts/processor
name = "pAI Processor"
id = "pai_processor"
build_path = /obj/item/paiparts/processor
/datum/design/item/prosfab/paiparts/board
/datum/design_techweb/prosfab/paiparts/board
name = "pAI Board"
id = "pai_board"
build_path = /obj/item/paiparts/board
/datum/design/item/prosfab/paiparts/capacitor
/datum/design_techweb/prosfab/paiparts/capacitor
name = "pAI capacitor"
id = "pai_capacitor"
build_path = /obj/item/paiparts/capacitor
/datum/design/item/prosfab/paiparts/projector
/datum/design_techweb/prosfab/paiparts/projector
name = "pAI Projector"
id = "pai_projector"
build_path = /obj/item/paiparts/projector
/datum/design/item/prosfab/paiparts/emitter
/datum/design_techweb/prosfab/paiparts/emitter
name = "pAI Emitter"
id = "pai_emitter"
build_path = /obj/item/paiparts/emitter
/datum/design/item/prosfab/paiparts/speech_synthesizer
/datum/design_techweb/prosfab/paiparts/speech_synthesizer
name = "pAI Speech Synthesizer"
id = "pai_speech_synthesizer"
build_path = /obj/item/paiparts/speech_synthesizer
/datum/design_techweb/disk
build_type = IMPRINTER
materials = list(MAT_PLASTIC = 2000, MAT_GLASS = 1000)
lathe_time_factor = 1.5
category = list(
RND_CATEGORY_PROSFAB
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/disk/New()
. = ..()
if(build_path)
var/obj/item/disk/D = build_path
if(istype(D, /obj/item/disk/species))
name = "Species Prosthetic design ([name])"
else if(istype(D, /obj/item/disk/limb))
name = "Transtellar Prosthetic design ([name])"
else
name = "Disk design ([name])"
/datum/design_techweb/disk/skrellprint
name = SPECIES_SKRELL
id = "prosthetic_skrell"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/disk/species/skrell
/datum/design_techweb/disk/tajprint
name = SPECIES_TAJARAN
id = "prosthetic_tajaran"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 3)
build_path = /obj/item/disk/species/tajaran
/datum/design_techweb/disk/unathiprint
name = SPECIES_UNATHI
id = "prosthetic_unathi"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 4)
build_path = /obj/item/disk/species/unathi
/datum/design_techweb/disk/teshariprint
name = SPECIES_TESHARI
id = "prosthetic_teshari"
// req_tech = list(TECH_DATA = 3, TECH_BIO = 4)
build_path = /obj/item/disk/species/teshari
@@ -0,0 +1,472 @@
// Matter Bins
/datum/design_techweb/basic_matter_bin
name = "Basic Matter Bin"
desc = "A tier 1 stock part used in the construction of various devices."
id = "basic_matter_bin"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_STEEL = 80)
build_path = /obj/item/stock_parts/matter_bin
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/adv_matter_bin
name = "Advanced Matter Bin"
desc = "A tier 2 stock part used in the construction of various devices."
id = "adv_matter_bin"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 80)
build_path = /obj/item/stock_parts/matter_bin/adv
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/super_matter_bin
name = "Super Matter Bin"
desc = "A tier 3 stock part used in the construction of various devices."
id = "super_matter_bin"
// req_tech = list(TECH_MATERIAL = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 80)
build_path = /obj/item/stock_parts/matter_bin/super
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hyper_matter_bin
name = "Hyper Matter Bin"
desc = "A tier 4 stock part used in the construction of various devices."
id = "hyper_matter_bin"
// req_tech = list(TECH_MATERIAL = 6, TECH_ARCANE = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 200, MAT_VERDANTIUM = 60, MAT_DURASTEEL = 75)
build_path = /obj/item/stock_parts/matter_bin/hyper
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/omni_matter_bin
name = "Omni Matter Bin"
desc = "A tier 5 stock part used in the construction of various devices."
id = "omni_matter_bin"
// req_tech = list(TECH_MATERIAL = 7, TECH_PRECURSOR = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_PLASTEEL = 100, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/matter_bin/omni
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_5
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
// Micro-manipulators
/datum/design_techweb/micro_mani
name = "Micro Manipulator"
desc = "A tier 1 stock part used in the construction of various devices."
id = "micro_manipulator"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_STEEL = 30)
build_path = /obj/item/stock_parts/manipulator
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/nano_mani
name = "Nano Manipulator"
desc = "A tier 2 stock part used in the construction of various devices."
id = "nano_mani"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 30)
build_path = /obj/item/stock_parts/manipulator/nano
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pico_mani
name = "Pico Manipulator"
desc = "A tier 3 stock part used in the construction of various devices."
id = "pico_mani"
// req_tech = list(TECH_MATERIAL = 5, TECH_DATA = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 30)
build_path = /obj/item/stock_parts/manipulator/pico
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hyper_mani
name = "Hyper Manipulator"
desc = "A tier 4 stock part used in the construction of various devices."
id = "hyper_mani"
// req_tech = list(TECH_MATERIAL = 6, TECH_DATA = 3, TECH_ARCANE = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 200, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 50)
build_path = /obj/item/stock_parts/manipulator/hyper
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/omni_mani
name = "Omni Manipulator"
desc = "A tier 5 stock part used in the construction of various devices."
id = "omni_mani"
// req_tech = list(TECH_MATERIAL = 7, TECH_DATA = 4, TECH_PRECURSOR = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_PLASTEEL = 500, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/manipulator/omni
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_5
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
// Capacitors
/datum/design_techweb/basic_capacitor
name = "Basic Capacitor"
desc = "A tier 1 stock part used in the construction of various devices."
id = "basic_capacitor"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
build_path = /obj/item/stock_parts/capacitor
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/adv_capacitor
name = "Advanced Capacitor"
desc = "A tier 2 stock part used in the construction of various devices."
id = "adv_capacitor"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 50, MAT_GLASS = 50)
build_path = /obj/item/stock_parts/capacitor/adv
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/super_capacitor
name = "Super Capacitor"
desc = "A tier 3 stock part used in the construction of various devices."
id = "super_capacitor"
build_type = PROTOLATHE
// req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 50, MAT_GLASS = 50, MAT_GOLD = 20)
build_path = /obj/item/stock_parts/capacitor/super
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hyper_capacitor
name = "Hyper Capacitor"
desc = "A tier 4 stock part used in the construction of various devices."
id = "hyper_capacitor"
build_type = PROTOLATHE
// req_tech = list(TECH_POWER = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 1, TECH_ARCANE = 1)
materials = list(MAT_STEEL = 200, MAT_GLASS = 100, MAT_VERDANTIUM = 30, MAT_DURASTEEL = 25)
build_path = /obj/item/stock_parts/capacitor/hyper
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/omni_capacitor
name = "Omni Capacitor"
desc = "A tier 5 stock part used in the construction of various devices."
id = "omni_capacitor"
build_type = PROTOLATHE
// req_tech = list(TECH_POWER = 7, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 2000, MAT_DIAMOND = 1000, MAT_GLASS = 1000, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/capacitor/omni
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_5
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
// Sensors
/datum/design_techweb/basic_sensor
name = "Basic Sensor"
desc = "A tier 1 stock part used in the construction of various devices."
id = "basic_sensor"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_STEEL = 50, MAT_GLASS = 20)
build_path = /obj/item/stock_parts/scanning_module
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/adv_sensor
name = "Advanced Sensor"
desc = "A tier 2 stock part used in the construction of various devices."
id = "adv_sensor"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_STEEL = 50, MAT_GLASS = 20)
build_path = /obj/item/stock_parts/scanning_module/adv
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/phasic_sensor
name = "Phasic Sensor"
desc = "A tier 3 stock part used in the construction of various devices."
id = "phasic_sensor"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 3)
materials = list(MAT_STEEL = 50, MAT_GLASS = 20, MAT_SILVER = 10)
build_path = /obj/item/stock_parts/scanning_module/phasic
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hyper_sensor
name = "Hyper Sensor"
desc = "A tier 4 stock part used in the construction of various devices."
id = "hyper_sensor"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 4, TECH_ARCANE = 1)
materials = list(MAT_STEEL = 50, MAT_GLASS = 20, MAT_SILVER = 50, MAT_VERDANTIUM = 40, MAT_DURASTEEL = 50)
build_path = /obj/item/stock_parts/scanning_module/hyper
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/omni_sensor
name = "Omni Sensor"
desc = "A tier 5 stock part used in the construction of various devices."
id = "omni_sensor"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 1000, MAT_PLASTEEL = 500, MAT_GLASS = 750, MAT_SILVER = 500, MAT_MORPHIUM = 60, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/scanning_module/omni
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_5
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
// Micro-lasers
/datum/design_techweb/basic_micro_laser
name = "Basic Micro Laser"
desc = "A tier 1 stock part used in the construction of various devices."
id = "basic_micro_laser"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_STEEL = 10, MAT_GLASS = 20)
build_path = /obj/item/stock_parts/micro_laser
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/high_micro_laser
name = "High-powered Micro Laser"
desc = "A tier 2 stock part used in the construction of various devices."
id = "high_micro_laser"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10, MAT_GLASS = 20)
build_path = /obj/item/stock_parts/micro_laser/high
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ultra_micro_laser
name = "Ultra-powered Micro Laser"
desc = "A tier 3 stock part used in the construction of various devices."
id = "ultra_micro_laser"
// req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10, MAT_GLASS = 20, MAT_URANIUM = 10)
build_path = /obj/item/stock_parts/micro_laser/ultra
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hyper_micro_laser
name = "Hyper-powered Micro Laser"
desc = "A tier 4 stock part used in the construction of various devices."
id = "hyper_micro_laser"
// req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 6, TECH_ARCANE = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 200, MAT_GLASS = 20, MAT_URANIUM = 30, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/micro_laser/hyper
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/omni_micro_laser
name = "Omni-powered Micro Laser"
desc = "A tier 5 stock part used in the construction of various devices."
id = "omni_micro_laser"
// req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 7, TECH_PRECURSOR = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_URANIUM = 2000, MAT_MORPHIUM = 50, MAT_DURASTEEL = 100)
build_path = /obj/item/stock_parts/micro_laser/omni
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_5
)
lathe_time_factor = 0.2
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
// Cells
/datum/design_techweb/basic
name = "Basic Cell"
desc = "A tier 1 power cell."
id = "basic_cell"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_STEEL = 700, MAT_GLASS = 50)
build_path = /obj/item/cell
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/high
name = "High-Capacity Cell"
desc = "A tier 2 power cell."
id = "high_cell"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 700, MAT_GLASS = 60)
build_path = /obj/item/cell/high
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/super
name = "Super-Capacity Cell"
desc = "A tier 3 power cell."
id = "super_cell"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 700, MAT_GLASS = 70)
build_path = /obj/item/cell/super
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hyper
name = "Hyper-Capacity Cell"
desc = "A tier 4 power cell."
id = "hyper_cell"
// req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 400, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 70)
build_path = /obj/item/cell/hyper
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
// Special cells
/datum/design_techweb/device_cell
name = "Device Cell"
id = "device_cell"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 350, MAT_GLASS = 25)
build_path = /obj/item/cell/device
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1
)
/datum/design_techweb/weapon_cell
name = "Weapon Cell"
id = "weapon_cell"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 700, MAT_GLASS = 50)
build_path = /obj/item/cell/device/weapon
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
// RPEDs
/datum/design_techweb/RPED
name = "Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
id = "rped"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 15000, MAT_GLASS = 5000)
build_path = /obj/item/storage/part_replacer
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_EXCHANGERS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ARPED
name = "Advanced Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a greatly upgraded storage capacity, \
and the ability to manipulate beakers."
id = "arped"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 5, TECH_MATERIAL = 5)
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000)
build_path = /obj/item/storage/part_replacer/adv
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_EXCHANGERS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/PBRPED
name = "Prototype Bluespace Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a remarkably upgraded storage capacity, \
and the ability to manipulate beakers."
id = "pbrped"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 7, TECH_MATERIAL = 7, TECH_BLUESPACE = 5)
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000, MAT_SILVER = 5000, MAT_GOLD = 5000, MAT_DIAMOND = 1000)
build_path = /obj/item/storage/part_replacer/adv/discount_bluespace
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_EXCHANGERS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/BRPED
name = "Bluespace Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has a remarkably upgraded storage capacity, \
the ability to manipulate beakers, and works at range."
id = "brped"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 7, TECH_MATERIAL = 7, TECH_BLUESPACE = 5, TECH_PRECURSOR = 1)
materials = list(MAT_STEEL = 30000, MAT_GLASS = 10000, MAT_SILVER = 5000, MAT_GOLD = 5000, MAT_DIAMOND = 1000)
build_path = /obj/item/storage/part_replacer/adv/bluespace
category = list(
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_EXCHANGERS
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,865 @@
/datum/design_techweb/advmop
name = "advanced mop"
desc = "An advanced mop with pressured water jets that break away the toughest stains."
id = "advmop"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 2000, MAT_GOLD = 1000)
build_path = /obj/item/mop/advanced
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/light_replacer
name = "Light replacer"
desc = "A device to automatically replace lights. Refill with working lightbulbs."
id = "light_replacer"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000)
build_path = /obj/item/lightreplacer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/spraybottle
name = "spray bottle"
desc = "A spray bottle, with an unscrewable top."
id = "spraybottle"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 300, MAT_GLASS = 300)
build_path = /obj/item/reagent_containers/spray
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
/datum/design_techweb/beartrap
name = "mechanical trap"
desc = "A mechanically activated leg trap. Low-tech, but reliable. Looks like it could really hurt if you set it off."
id = "beartrap"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 18750)
build_path = /obj/item/beartrap
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_JANITORIAL
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/experimental_welder
name = "Experimental welding tool"
desc = "A welding tool that generate fuel for itself."
id = "expwelder"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3, TECH_MATERIAL = 4)
materials = list(MAT_STEEL = 70, MAT_GLASS = 120, MAT_PHORON = 100)
build_path = /obj/item/weldingtool/experimental
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/hand_drill
name = "Hand drill"
desc = "A simple powered hand drill."
id = "handdrill"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 300, MAT_SILVER = 100)
build_path = /obj/item/tool/transforming/powerdrill
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/jaws_life
name = "Jaws of life"
desc = "A set of jaws of life, compressed through the magic of science."
id = "jawslife"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 300, MAT_SILVER = 100)
build_path = /obj/item/tool/transforming/jawsoflife
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/rpd
name = "Rapid Pipe Dispenser"
desc = "A counterpart to the rapid construction device that allows creating and placing atmospheric and disposal pipes."
id = "rapidpipedispenser"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000)
build_path = /obj/item/pipe_dispenser
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/qpad_booster
name = "Quantum Pad Particle Booster"
desc = "A deceptively simple interface for increasing the mass of objects a quantum pad is capable of teleporting, at the cost of increased power draw."
id = "qpad_booster"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 7, TECH_MATERIAL = 7, TECH_BLUESPACE = 6)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_VERDANTIUM = 1000)
build_path = /obj/item/quantum_pad_booster
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/t_scanner
name = "T-ray Scanner"
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
id = "tscanner"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 200)
build_path = /obj/item/t_scanner
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/t_scanner_upg
name = "Upgraded T-ray Scanner"
desc = "An upgraded version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
id = "upgradedtscanner"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_MATERIAL = 2)
materials = list(MAT_STEEL = 500, MAT_PHORON = 150)
build_path = /obj/item/t_scanner/upgraded
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/t_scanner_adv
name = "Advanced T-ray Scanner"
desc = "An advanced version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
id = "advancedtscanner"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 6, TECH_ENGINEERING = 6, TECH_MATERIAL = 6)
materials = list(MAT_STEEL = 1250, MAT_PHORON = 500, MAT_SILVER = 50)
build_path = /obj/item/t_scanner/advanced
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/atmosanalyzer
name = "Analyzer"
desc = "A hand-held environmental scanner which reports current gas levels."
id = "atmosanalyzer"
build_type = PROTOLATHE
// req_tech = list(TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 200, MAT_GLASS = 100)
build_path = /obj/item/analyzer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/communicator
name = "Communicator"
desc = "A personal device used to enable long range dialog between two people."
id = "communicator"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_STEEL = 500, MAT_GLASS = 500)
build_path = /obj/item/communicator
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/inducer_sci
name = "Inducer (Scientific)"
desc = "A tool for inductively charging internal power cells."
id = "inducersci"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 8000, MAT_GLASS = 2000, MAT_URANIUM = 4000, MAT_PHORON = 4000)
build_path = /obj/item/inducer/sci
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/inducer_eng
name = "Inducer (Industrial)"
desc = "A tool for inductively charging internal power cells."
id = "inducerind"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 2000)
build_path = /obj/item/inducer/unloaded
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/beaker_noreact
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(TECH_MATERIAL = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3000)
build_path = /obj/item/reagent_containers/glass/beaker/noreact
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/beaker_bluespace
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(TECH_BLUESPACE = 2, TECH_MATERIAL = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3000, MAT_PHORON = 3000, MAT_DIAMOND = 500)
build_path = /obj/item/reagent_containers/glass/beaker/bluespace
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_MEDICAL
/datum/design_techweb/nifrepairtool
name = "adv. NIF repair tool"
desc = "A tool to repair NIF implants."
id = "anrt"
// req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 3000, MAT_URANIUM = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/nifrepairer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/mass_spectrometer
name = "Mass Spectrometer"
desc = "A device for analyzing chemicals in blood."
id = "mass_spectrometer"
// req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 30, MAT_GLASS = 20)
build_path = /obj/item/mass_spectrometer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/adv_mass_spectrometer
name = "Advanced Mass Spectrometer"
desc = "A device for analyzing chemicals in blood and their quantities."
id = "adv_mass_spectrometer"
// req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 30, MAT_GLASS = 20)
build_path = /obj/item/mass_spectrometer/adv
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/reagent_scanner
name = "Reagent Scanner"
desc = "A device for identifying chemicals."
id = "reagent_scanner"
// req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 30, MAT_GLASS = 20)
build_path = /obj/item/reagent_scanner
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/adv_reagent_scanner
name = "Advanced Reagent Scanner"
desc = "A device for identifying chemicals and their proportions."
id = "adv_reagent_scanner"
// req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 30, MAT_GLASS = 20)
build_path = /obj/item/reagent_scanner/adv
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/robot_scanner
name = "Robot Scanner"
desc = "A hand-held scanner able to diagnose robotic injuries."
id = "robot_scanner"
// req_tech = list(TECH_MAGNET = 3, TECH_BIO = 2, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 500, MAT_GLASS = 200)
build_path = /obj/item/robotanalyzer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/nanopaste
name = "Nanopaste"
desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
id = "nanopaste"
// req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 7000, MAT_GLASS = 7000)
build_path = /obj/item/stack/nanopaste
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/plant_analyzer
name = "Plant Analyzer"
desc = "A device capable of quickly scanning all relevant data about a plant."
id = "plant_analyzer"
// req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 500, MAT_GLASS = 500)
build_path = /obj/item/analyzer/plant_analyzer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SERVICE
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_SCIENCE
// Surgical devices
/datum/design_techweb/scalpel_laser1
name = "Basic Laser Scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved."
id = "scalpel_laser1"
build_type = PROTOLATHE
// req_tech = list(TECH_BIO = 2, TECH_MATERIAL = 2, TECH_MAGNET = 2)
materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500)
build_path = /obj/item/surgical/scalpel/laser1
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/scalpel_laser2
name = "Improved Laser Scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced."
id = "scalpel_laser2"
build_type = PROTOLATHE
// req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 4, TECH_MAGNET = 4)
materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500)
build_path = /obj/item/surgical/scalpel/laser2
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/scalpel_laser3
name = "Advanced Laser Scalpel"
desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!"
id = "scalpel_laser3"
build_type = PROTOLATHE
// req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 6, TECH_MAGNET = 5)
materials = list(MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2000, MAT_GOLD = 1500)
build_path = /obj/item/surgical/scalpel/laser3
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/scalpel_manager
name = "Incision Management System"
desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps."
id = "scalpel_manager"
build_type = PROTOLATHE
// req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 5, TECH_DATA = 4)
materials = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 750)
build_path = /obj/item/surgical/scalpel/manager
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/saw_manager
name = "Energetic Bone Diverter"
desc = "A strange development following the I.M.S., this heavy tool can split and open, or close and shut, intentional holes in bones."
id = "advanced_saw"
build_type = PROTOLATHE
// req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_DATA = 5)
materials = list (MAT_STEEL = 12500, MAT_PLASTIC = 800, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_OSMIUM = 1000)
build_path = /obj/item/surgical/circular_saw/manager
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/organ_ripper
name = "Organ Ripper"
desc = "A modern and horrifying take on an ancient practice, this tool is capable of rapidly removing an organ from a hopefully willing patient, without damaging it."
id = "organ_ripper"
build_type = PROTOLATHE
// req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_ILLEGAL = 3)
materials = list (MAT_STEEL = 12500, MAT_PLASTIC = 8000, MAT_OSMIUM = 2500)
build_path = /obj/item/surgical/scalpel/ripper
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/bone_clamp
name = "Bone Clamp"
desc = "A miracle of modern science, this tool rapidly knits together bone, without the need for bone gel."
id = "bone_clamp"
build_type = PROTOLATHE
// req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_DATA = 4)
materials = list (MAT_STEEL = 12500, MAT_GLASS = 7500, MAT_SILVER = 2500)
build_path = /obj/item/surgical/bone_clamp
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/medical_analyzer
name = "health analyzer"
desc = "A hand-held body scanner able to distinguish vital signs of the subject."
id = "medical_analyzer"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 500, MAT_GLASS = 500)
build_path = /obj/item/healthanalyzer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/improved_analyzer
name = "improved health analyzer"
desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels."
id = "improved_analyzer"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 5, TECH_BIO = 6)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_SILVER = 1000, MAT_GOLD = 1500)
build_path = /obj/item/healthanalyzer/improved
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/advanced_analyzer
name = "advanced health analyzer"
desc = "An even more advanced handheld health scanner, complete with a full biosign monitor and on-board radiation and neurological analysis suites."
id = "advanced_analyzer"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 7, TECH_BIO = 7, TECH_DATA = 5)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 4000, MAT_SILVER = 3500, MAT_GOLD = 2500, MAT_DIAMOND = 1250)
build_path = /obj/item/healthanalyzer/advanced
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/gene_scanner
name = "Gene Scanner"
id = "gene_scanner"
build_type = PROTOLATHE
// req_tech = list(TECH_DATA = 1, TECH_BIO = 2)
materials = list(MAT_STEEL = 30, MAT_GLASS = 20)
build_path = /obj/item/gene_scanner
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/advanced_roller
name = "advanced roller bed"
desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system."
id = "roller_bed"
build_type = PROTOLATHE
// req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 3)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_PHORON = 2000)
build_path = /obj/item/roller/adv
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/sleevemate
name = "SleeveMate 3700"
id = "sleevemate"
build_type = PROTOLATHE
// req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/sleevemate
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/protohypospray
name = "prototype hypospray"
desc = "This prototype hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
id = "protohypospray"
build_type = PROTOLATHE
// req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 2, TECH_BIO = 4, TECH_ILLEGAL = 2)
materials = list(MAT_STEEL = 500, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/reagent_containers/hypospray/science
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
// Mining digging devices
/datum/design_techweb/drill
name = "Drill"
id = "drill"
build_type = PROTOLATHE
// req_tech = list(TECH_MATERIAL = 1, TECH_POWER = 2, TECH_ENGINEERING = 1)
materials = list(MAT_STEEL = 4000, MAT_GLASS = 500) //expensive, but no need for miners.
build_path = /obj/item/pickaxe/drill
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/advdrill
name = "Advanced Drill"
id = "advanced_drill"
build_type = PROTOLATHE
// req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 6000, MAT_GLASS = 1000) //expensive, but no need for miners.
build_path = /obj/item/pickaxe/advdrill
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/jackhammer
name = "Jackhammer"
id = "jackhammer"
build_type = PROTOLATHE
// req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2)
materials = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_SILVER = 500)
build_path = /obj/item/pickaxe/jackhammer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/plasmacutter
name = "Plasma Cutter"
id = "plasmacutter"
build_type = PROTOLATHE
// req_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 3, TECH_ENGINEERING = 3)
materials = list(MAT_STEEL = 1500, MAT_GLASS = 500, MAT_GOLD = 500, MAT_PHORON = 500)
build_path = /obj/item/pickaxe/plasmacutter
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/pick_diamond
name = "Diamond Pickaxe"
id = "pick_diamond"
build_type = PROTOLATHE
// req_tech = list(TECH_MATERIAL = 6)
materials = list(MAT_DIAMOND = 3000)
build_path = /obj/item/pickaxe/diamond
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/drill_diamond
name = "Diamond Drill"
id = "drill_diamond"
build_type = PROTOLATHE
// req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 4, TECH_ENGINEERING = 4)
materials = list(MAT_STEEL = 3000, MAT_GLASS = 1000, MAT_DIAMOND = 2000)
build_path = /obj/item/pickaxe/diamonddrill
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
// Mining other equipment
/datum/design_techweb/depth_scanner
name = "Depth Scanner"
desc = "Used to check spatial depth and density of rock outcroppings."
id = "depth_scanner"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 2)
materials = list(MAT_STEEL = 1000,MAT_GLASS = 1000)
build_path = /obj/item/depth_scanner
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/mining_scanner
name = "Mining Scanner"
id = "mining_scanner"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 1)
materials = list(MAT_STEEL = 1000,MAT_GLASS = 500)
build_path = /obj/item/mining_scanner/advanced
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MINING
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
// Everything that didn't fit elsewhere
/datum/design_techweb/laserpointer
name = "laser pointer"
desc = "Don't shine it in your eyes!"
id = "laser_pointer"
build_type = PROTOLATHE
// req_tech = list(TECH_MAGNET = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 100, MAT_GLASS = 50)
build_path = /obj/item/laser_pointer
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_ASSISTANT | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/translator
name = "handheld translator"
id = "translator"
build_type = PROTOLATHE
// req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3000, MAT_GLASS = 3000)
build_path = /obj/item/universal_translator
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
/datum/design_techweb/bsflare
name = "bluespace flare"
desc = "A marker that can be detected by shuttle landing systems."
id = "bsflare"
build_type = PROTOLATHE
// req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_SILVER = 2000)
build_path = /obj/item/spaceflare
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/motion_tracker
name = "Motion Tracker"
id = "motion_tracker"
// req_tech = list(TECH_MAGNET = 1, TECH_DATA = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 500)
build_path = /obj/item/motiontracker
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
/datum/design_techweb/slime_scanner
name = "Slime Scanner"
desc = "A hand-held body scanner able to learn information about slimes."
id = "slime_scanner"
// req_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 500, MAT_GLASS = 500)
build_path = /obj/item/slime_scanner
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/grinder
name = "Portable Slime Processor"
desc = "This high tech device combines the slime processor with the latest in woodcutting technology."
id = "slime_grinder"
// req_tech = list(TECH_MAGNET = 4, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 200, MAT_GLASS = 200, MAT_SILVER = 500, MAT_GOLD = 100)
build_path = /obj/item/slime_grinder
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
// Xenoarch
/datum/design_techweb/ano_scanner
name = "Alden-Saraspova counter"
id = "ano_scanner"
desc = "Aids in triangulation of exotic particles."
// req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10000,MAT_GLASS = 5000)
build_path = /obj/item/ano_scanner
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/xenoarch_multi_tool
name = "xenoarcheology multitool"
id = "xenoarch_multitool"
// req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3)
build_type = PROTOLATHE
build_path = /obj/item/xenoarch_multi_tool
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_URANIUM = 500, MAT_PHORON = 500)
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/excavationdrill
name = "Excavation Drill"
id = "excavationdrill"
// req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/pickaxe/excavationdrill
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/anobattery
name = "Anomaly power battery - Basic"
id = "anobattery-basic"
// req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 4, TECH_ENGINEERING = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 6000)
build_path = /obj/item/anobattery
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/anobattery_mid
name = "Anomaly power battery - Moderate"
id = "anobattery-moderate"
// req_tech = list(TECH_MATERIAL = 5, TECH_POWER = 4, TECH_ENGINEERING = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 2000) //Same object, different materials
build_path = /obj/item/anobattery/moderate
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/anobattery_advanced
name = "Anomaly power battery - Advanced"
id = "anobattery-advanced"
// req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_ENGINEERING = 5, TECH_BLUESPACE = 5, TECH_DATA = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2500, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 2500, MAT_PHORON = 2500)
build_path = /obj/item/anobattery/advanced
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/anobattery_exotic
name = "Anomaly power battery - Exotic"
id = "anobattery-exotic"
// req_tech = list(TECH_MATERIAL = 8, TECH_POWER = 7, TECH_ENGINEERING = 6, TECH_BLUESPACE = 6, TECH_DATA = 6, TECH_PRECURSOR = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 1500, MAT_GLASS = 1500, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_PHORON = 2000, MAT_DIAMOND = 2000, MAT_MORPHIUM = 2000)
build_path = /obj/item/anobattery/exotic
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
// Precursor
/datum/design_techweb/precursorcrowbar
name = "Hybrid Crowbar"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridcrowbar"
// req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PRECURSOR = 1)
build_type = PROTOLATHE
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_GOLD = 250, MAT_URANIUM = 2500)
build_path = /obj/item/tool/crowbar/hybrid
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/precursorwrench
name = "Hybrid Wrench"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwrench"
// req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_PRECURSOR = 1)
build_type = PROTOLATHE
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_SILVER = 300, MAT_URANIUM = 2000)
build_path = /obj/item/tool/wrench/hybrid
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/precursorscrewdriver
name = "Hybrid Screwdriver"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridscrewdriver"
// req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_PRECURSOR = 1)
build_type = PROTOLATHE
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_DIAMOND = 2000)
build_path = /obj/item/tool/screwdriver/hybrid
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/precursorwirecutters
name = "Hybrid Wirecutters"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwirecutters"
// req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_PHORON = 2, TECH_PRECURSOR = 1)
build_type = PROTOLATHE
materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_PHORON = 2750, MAT_DIAMOND = 2000)
build_path = /obj/item/tool/wirecutters/hybrid
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/precursorwelder
name = "Hybrid Welding Tool"
desc = "A tool utilizing cutting edge modern technology, and ancient component designs."
id = "hybridwelder"
// req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PHORON = 3, TECH_MAGNET = 5, TECH_PRECURSOR = 1)
build_type = PROTOLATHE
materials = list(MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_METALHYDROGEN = 4750, MAT_URANIUM = 6000)
build_path = /obj/item/weldingtool/experimental/hybrid
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ALIEN
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design_techweb/camotrap
name = "Chameleon Trap"
desc = "A self-miraging mechanical trap, capable of producing short bursts of electric current when triggered."
id = "hunt_trap"
// req_tech = list(TECH_MATERIAL = 4, TECH_BLUESPACE = 3, TECH_MAGNET = 4, TECH_PHORON = 2, TECH_ARCANE = 2)
build_type = PROTOLATHE
materials = list(MAT_DURASTEEL = 3000, MAT_METALHYDROGEN = 1000, MAT_PHORON = 2000)
build_path = /obj/item/beartrap/hunting
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_SECURITY
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SECURITY
/datum/design_techweb/protean_reboot
name = "Protean Reboot Programmer"
id = "protean_reboot"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 1000, MAT_PLASTEEL = 10000)
build_path = /obj/item/protean_reboot
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_ORGANS_MISC
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
@@ -0,0 +1,926 @@
// Scene weapons
/datum/design_techweb/sizegun
name = "Size Gun"
id = "sizegun"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000)
build_path = /obj/item/gun/energy/sizegun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
/datum/design_techweb/sizegun_gradual
name = "Gradual Size Gun"
id = "gradsizegun"
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 2000)
build_path = /obj/item/slow_sizegun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
// Energy weapons
/datum/design_techweb/stunrevolver
name = "Stun Revolver"
id = "stunrevolver"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/gun/energy/stunrevolver
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/nuclear_gun
name = "Nuclear Gun"
id = "nuclear_gun"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_POWER = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_URANIUM = 500)
build_path = /obj/item/gun/energy/gun/nuclear
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/phoronpistol
name = "Phoron Pistol"
id = "ppistol"
// req_tech = list(TECH_COMBAT = 5, TECH_PHORON = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_PHORON = 3000)
build_path = /obj/item/gun/energy/toxgun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/lasercannon
name = "Laser Cannon"
desc = "The lasing medium of this prototype is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core."
id = "lasercannon"
// req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10000, MAT_GLASS = 1000, MAT_DIAMOND = 2000)
build_path = /obj/item/gun/energy/lasercannon
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/decloner
name = "Decloner"
id = "decloner"
// req_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 7, TECH_BIO = 5, TECH_POWER = 6)
build_type = PROTOLATHE
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000)
build_path = /obj/item/gun/energy/decloner
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/temp_gun
name = "Temperature Gun"
desc = "A gun that shoots high-powered glass-encased energy temperature bullets."
id = "temp_gun"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000)
build_path = /obj/item/gun/energy/temperature
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/flora_gun
name = "Flora Gun"
id = "flora_gun"
// req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 2000, MAT_GLASS = 500, MAT_URANIUM = 500)
build_path = /obj/item/gun/energy/floragun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/vinstunrevolver
name = "Vintage Stun Revolver"
id = "vinstunrevolver"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/gun/energy/stunrevolver/vintage
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
// Ballistic weapons
/datum/design_techweb/advanced_smg
name = "Advanced 9mm SMG"
id = "smg"
desc = "An advanced 9mm SMG with a reflective laser optic."
// req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 8000, MAT_SILVER = 2000, MAT_DIAMOND = 1000)
build_path = /obj/item/gun/projectile/automatic/advanced_smg
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
// Ballistic ammo
/datum/design_techweb/ammo_9mmAdvanced
name = "9mm magazine"
id = "ammo_9mm"
desc = "A 21 round magazine for an advanced 9mm SMG."
// req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3750, MAT_SILVER = 100) // Requires silver for proprietary magazines! Or something.
build_path = /obj/item/ammo_magazine/m9mmAdvanced
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/stunshell
name = "stun shells"
desc = "A stunning shell for a shotgun."
id = "stunshell"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000)
build_path = /obj/item/ammo_magazine/ammo_box/b12g/stunshell
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/empshell
name = "emp shells"
desc = "An electromagnetic shell for a shotgun."
id = "empshell"
// req_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_URANIUM = 1000)
build_path = /obj/item/ammo_magazine/ammo_box/b12g/emp
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
// Other weapons
/datum/design_techweb/rapidsyringe
name = "Rapid Syringe Gun"
id = "rapidsyringe"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000)
build_path = /obj/item/gun/launcher/syringe/rapid
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/dartgun
name = "Dartgun"
desc = "A gun that fires small hollow chemical-payload darts."
id = "dartgun_r"
// req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_BIO = 4, TECH_MAGNET = 3, TECH_ILLEGAL = 1)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GOLD = 5000, MAT_SILVER = 2500, MAT_GLASS = 750)
build_path = /obj/item/gun/projectile/dartgun/research
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/chemsprayer
name = "Chemsprayer"
desc = "An advanced chem spraying device."
id = "chemsprayer"
// req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000)
build_path = /obj/item/reagent_containers/spray/chemsprayer
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/fuelrod
name = "Fuel-Rod Cannon"
id = "fuelrod_gun"
// req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10000, MAT_GLASS = 2000, MAT_GOLD = 500, MAT_SILVER = 500, MAT_URANIUM = 1000, MAT_PHORON = 3000, MAT_DIAMOND = 1000)
build_path = /obj/item/gun/magnetic/fuelrod
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
// Ammo for those
/datum/design_techweb/dartgunmag_small
name = "Dartgun Magazine (Small)"
id = "dartgun_mag_s"
// req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 300, MAT_GOLD = 100, MAT_SILVER = 100, MAT_GLASS = 300)
build_path = /obj/item/ammo_magazine/chemdart/small
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
research_icon = 'icons/obj/ammo.dmi'
research_icon_state = "darts_small-3"
/datum/design_techweb/dartgun_ammo_small
name = "Dartgun Ammo (Small)"
id = "dartgun_ammo_s"
// req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 50, MAT_GOLD = 30, MAT_SILVER = 30, MAT_GLASS = 50)
build_path = /obj/item/ammo_casing/chemdart/small
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
research_icon = 'icons/obj/ammo.dmi'
research_icon_state = "darts_small-3"
/datum/design_techweb/dartgunmag_med
name = "Dartgun Magazine (Chem)"
id = "dartgun_mag_m"
// req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 500, MAT_GOLD = 150, MAT_SILVER = 150, MAT_DIAMOND = 200, MAT_GLASS = 400)
build_path = /obj/item/ammo_magazine/chemdart
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/dartgun_ammo_med
name = "Dartgun Ammo (Chem)"
id = "dartgun_ammo_m"
// req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 80, MAT_GOLD = 40, MAT_SILVER = 40, MAT_GLASS = 60)
build_path = /obj/item/ammo_casing/chemdart
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/flechette
name = "Fletchette Magazine"
id = "magnetic_ammo"
// req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4, TECH_MAGNET = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 500, MAT_GOLD = 300, MAT_GLASS = 150, MAT_PHORON = 100)
build_path = /obj/item/magnetic_ammo
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
// Melee weapons
/datum/design_techweb/esword
name = "Portable Energy Blade"
id = "chargesword"
// req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 4, TECH_ENGINEERING = 5, TECH_ILLEGAL = 4, TECH_ARCANE = 1)
build_type = PROTOLATHE
materials = list(MAT_PLASTEEL = 3500, MAT_GLASS = 1000, MAT_LEAD = 2250, MAT_METALHYDROGEN = 500)
build_path = /obj/item/melee/energy/sword/charge
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/eaxe
name = "Energy Axe"
id = "chargeaxe"
// req_tech = list(TECH_COMBAT = 6, TECH_MAGNET = 5, TECH_ENGINEERING = 4, TECH_ILLEGAL = 4)
build_type = PROTOLATHE
materials = list(MAT_PLASTEEL = 3500, MAT_OSMIUM = 2000, MAT_LEAD = 2000, MAT_METALHYDROGEN = 500)
build_path = /obj/item/melee/energy/axe/charge
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
// Grenade stuff
/datum/design_techweb/large_grenade
name = "Large Grenade"
id = "large_Grenade"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3000)
build_path = /obj/item/grenade/chem_grenade/large
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
// Energy Weapons
/datum/design_techweb/protector
name = "Protector"
desc = "The 'Protector' is an advanced energy gun that cannot be fired in lethal mode on low security alert levels, but features DNA locking and a powerful stun."
id = "protector"
// req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 3, TECH_MAGNET = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000)
build_path = /obj/item/gun/energy/gun/protector
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/sickshot
name = "Sickshot"
desc = "A 'Sickshot' is a 4-shot energy revolver that causes nausea and confusion."
id = "sickshot"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_MAGNET = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3000, MAT_GLASS = 2000)
build_path = /obj/item/gun/energy/sickshot
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/netgun
name = "Varmint Catcher"
desc = "The \"Varmint Catcher\" is an energy net projector designed to immobilize dangerous wildlife."
id = "netgun"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_MAGNET = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 6000, MAT_GLASS = 3000)
build_path = /obj/item/gun/energy/netgun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
// Misc weapons
/datum/design_techweb/pummeler
name = "Pummeler"
desc = "With the 'Pummeler', punt anyone you don't like out of the room!"
id = "pummeler"
// req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_MAGNET = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3000, MAT_GLASS = 3000, MAT_URANIUM = 1000)
build_path = /obj/item/gun/energy/pummeler
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
// Anti-particle stuff
/datum/design_techweb/advparticle
name = "Advanced anti-particle rifle"
id = "advparticle"
// req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 5, TECH_POWER = 3, TECH_MAGNET = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_URANIUM = 750)
build_path = /obj/item/gun/energy/particle/advanced
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/particlecannon
name = "Anti-particle cannon"
id = "particlecannon"
// req_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5, TECH_POWER = 4, TECH_MAGNET = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10000, MAT_GLASS = 1500, MAT_GOLD = 2000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000)
build_path = /obj/item/gun/energy/particle/cannon
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/pressureinterlock
name = "APP pressure interlock"
desc = "A safety interlock that can be installed in an antiparticle projector. It prevents the weapon from discharging in pressurised environments."
id = "pressureinterlock"
// req_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 1000, MAT_GLASS = 250)
build_path = /obj/item/pressurelock
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_FIRING_PINS
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
// NSFW gun and cells
/datum/design_techweb/cell_based/prototype_nsfw
name = "cell-loaded revolver"
id = "nsfw_prototype"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 10000, MAT_GLASS = 6000, MAT_PHORON = 8000, MAT_URANIUM = 4000)
build_path = /obj/item/gun/projectile/cell_loaded/combat/prototype
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/cell_based/prototype_nsfw_mag
name = "microbattery magazine"
id = "nsfw_mag_prototype"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 4, TECH_COMBAT = 7)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 8000, MAT_GLASS = 4000, MAT_PHORON = 4000)
build_path = /obj/item/ammo_magazine/cell_mag/combat/prototype
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/stun
name = "microbattery (STUN)"
id = "nsfw_cell_stun"
// req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 2, TECH_POWER = 3, TECH_COMBAT = 3)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/ammo_casing/microbattery/combat/stun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/lethal
name = "microbattery (LETHAL)"
id = "nsfw_cell_lethal"
// req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PHORON = 3000)
build_path = /obj/item/ammo_casing/microbattery/combat/lethal
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/net
name = "microbattery (NET)"
id = "nsfw_cell_net"
// req_tech = list(TECH_MATERIAL = 4, TECH_MAGNET = 3, TECH_POWER = 3, TECH_COMBAT = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_URANIUM = 3000)
build_path = /obj/item/ammo_casing/microbattery/combat/net
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ion
name = "microbattery (ION)"
id = "nsfw_cell_ion"
// req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 5, TECH_COMBAT = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 3000)
build_path = /obj/item/ammo_casing/microbattery/combat/ion
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/shotstun
name = "microbattery (SCATTERSTUN)"
id = "nsfw_cell_shotstun"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 6, TECH_COMBAT = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 2000, MAT_GOLD = 2000)
build_path = /obj/item/ammo_casing/microbattery/combat/shotstun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/xray
name = "microbattery (XRAY)"
id = "nsfw_cell_xray"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 5, TECH_COMBAT = 7)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_URANIUM = 1000, MAT_PHORON = 1000)
build_path = /obj/item/ammo_casing/microbattery/combat/xray
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/stripper
name = "microbattery (STRIPPER)"
id = "nsfw_cell_stripper"
// req_tech = list(TECH_MATERIAL = 7, TECH_BIO = 4, TECH_POWER = 4, TECH_COMBAT = 4, TECH_ILLEGAL = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_URANIUM = 2000, MAT_PHORON = 2000, MAT_DIAMOND = 500)
build_path = /obj/item/ammo_casing/microbattery/combat/stripper
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ptrshell
name = "14.5mm shell"
desc = "A dense-core projectile fired from a small cannon."
id = "ptrshell"
// req_tech = list(TECH_COMBAT = 7, TECH_ILLEGAL = 4)
build_type = PROTOLATHE
materials = list(MAT_TITANIUM = 4000, MAT_URANIUM = 500, MAT_PLASTEEL = 500)
build_path = /obj/item/ammo_casing/a145
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
//General stuff
/datum/design_techweb/recombobray
name = "recombobulation ray"
desc = "The Type Gamma Medical Recombobulation ray! A mysterious looking ray gun! It works to change people who have had their form significantly altered back into their original forms!"
id = "recombobray"
// req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_POWER = 4, TECH_BIO = 5, TECH_BLUESPACE = 4) //Not like these matter. *Glares at circuit printer.*
build_type = PROTOLATHE
materials = list(MAT_STEEL = 1000, MAT_GLASS = 2000, MAT_URANIUM = 500, MAT_PHORON = 1500)
build_path = /obj/item/gun/energy/mouseray/medical
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
// ML-3M medigun and cells
/datum/design_techweb/cell_medigun
name = "cell-loaded medigun"
id = "cell_medigun"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 3, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 8000, MAT_PLASTIC = 8000, MAT_GLASS = 5000, MAT_SILVER = 1000, MAT_GOLD = 1000, MAT_URANIUM = 1000)
build_path = /obj/item/gun/projectile/cell_loaded/medical
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/cell_medigun_mag
name = "medical cell magazine"
id = "cell_medigun_mag"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 4, TECH_POWER = 3, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_PLASTIC = 6000, MAT_GLASS = 3000, MAT_SILVER = 500, MAT_GOLD = 500)
build_path = /obj/item/ammo_magazine/cell_mag/medical
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/cell_medigun_mag_advanced
name = "advanced medical cell magazine"
id = "cell_medigun_mag_advanced"
// req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 4, TECH_BIO = 7)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_PLASTIC = 10000, MAT_GLASS = 5000, MAT_SILVER = 1500, MAT_GOLD = 1500, MAT_DIAMOND = 5000)
build_path = /obj/item/ammo_magazine/cell_mag/medical/advanced
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
//Tier 0
/datum/design_techweb/ml3m_brute
name = "Nanite Cell Prototype (BRUTE)"
id = "ml3m_cell_brute"
// req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/ammo_casing/microbattery/medical/brute
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_burn
name = "Nanite Cell Prototype (BURN)"
id = "ml3m_cell_burn"
// req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/ammo_casing/microbattery/medical/burn
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_stabilize
name = "Nanite Cell Prototype (STABILIZE)"
id = "ml3m_cell_stabilize"
// req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 2, TECH_BIO = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000)
build_path = /obj/item/ammo_casing/microbattery/medical/stabilize
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
//Tier 1
/datum/design_techweb/ml3m_toxin
name = "Nanite Cell Prototype (TOXIN)"
id = "ml3m_cell_toxin"
// req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500)
build_path = /obj/item/ammo_casing/microbattery/medical/toxin
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_omni
name = "Nanite Cell Prototype (OMNI)"
id = "ml3m_cell_omni"
// req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500)
build_path = /obj/item/ammo_casing/microbattery/medical/omni
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_antirad
name = "Nanite Cell Prototype (ANTIRAD)"
id = "ml3m_cell_antirad"
// req_tech = list(TECH_MATERIAL = 3, TECH_MAGNET = 3, TECH_BIO = 4)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500)
build_path = /obj/item/ammo_casing/microbattery/medical/antirad
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
//Tier 2
/datum/design_techweb/ml3m_brute2
name = "Nanite Cell Prototype (BRUTE)-II"
id = "ml3m_cell_brute2"
// req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_GOLD = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/brute2
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_burn2
name = "Nanite Cell Prototype (BURN)-II"
id = "ml3m_cell_burn2"
// req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_GOLD = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/burn2
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_stabilize2
name = "Nanite Cell Prototype (STABILIZE)-II"
id = "ml3m_cell_stabilize2"
// req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_SILVER = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/stabilize2
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_omni2
name = "Nanite Cell Prototype (OMNI)-II"
id = "ml3m_cell_omni2"
// req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_POWER = 2, TECH_BIO = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/omni2
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
//Tier 3
/datum/design_techweb/ml3m_toxin2
name = "Nanite Cell Prototype (TOXIN)-II"
id = "ml3m_cell_toxin2"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 1000, MAT_SILVER = 1000, MAT_DIAMOND = 500)
build_path = /obj/item/ammo_casing/microbattery/medical/toxin2
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_haste
name = "Nanite Cell Prototype (HASTE)"
id = "ml3m_cell_haste"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_GOLD = 1000, MAT_SILVER = 1000, MAT_DIAMOND = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/haste
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_resist
name = "Nanite Cell Prototype (RESIST)"
id = "ml3m_cell_resist"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_GOLD = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/resist
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_corpse_mend
name = "Nanite Cell Prototype (CORPSE) MEND"
id = "ml3m_cell_corpse_mend"
// req_tech = list(TECH_MATERIAL = 6, TECH_MAGNET = 3, TECH_POWER = 3, TECH_BIO = 6)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_PHORON = 3000, MAT_DIAMOND = 3000)
build_path = /obj/item/ammo_casing/microbattery/medical/corpse_mend
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
//Tier 4
/datum/design_techweb/ml3m_brute3
name = "Nanite Cell Prototype (BRUTE)-III"
id = "ml3m_cell_brute3"
// req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_DIAMOND = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/brute3
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_burn3
name = "Nanite Cell Prototype (BURN)-III"
id = "ml3m_cell_burn3"
// req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_PRECURSOR = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_DIAMOND = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/burn3
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_toxin3
name = "Nanite Cell Prototype (TOXIN)-III"
id = "ml3m_cell_toxin3"
// req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_DIAMOND = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/toxin3
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_omni3
name = "Nanite Cell Prototype (OMNI)-III"
id = "ml3m_cell_omni3"
// req_tech = list(TECH_MATERIAL = 7, TECH_MAGNET = 6, TECH_POWER = 5, TECH_BIO = 7, TECH_ARCANE = 2)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_DIAMOND = 500, MAT_VERDANTIUM = 1000)
build_path = /obj/item/ammo_casing/microbattery/medical/omni3
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
//Tierless
/datum/design_techweb/ml3m_shrink
name = "Nanite Cell Prototype (SHRINK)"
id = "ml3m_cell_shrink"
// req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 2000)
build_path = /obj/item/ammo_casing/microbattery/medical/shrink
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_grow
name = "Nanite Cell Prototype (GROW)"
id = "ml3m_cell_grow"
// req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 2000)
build_path = /obj/item/ammo_casing/microbattery/medical/grow
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/ml3m_normalsize
name = "Nanite Cell Prototype (NORMALSIZE)"
id = "ml3m_cell_normalsize"
// req_tech = list(TECH_MATERIAL = 5, TECH_MAGNET = 3, TECH_BLUESPACE = 3, TECH_BIO = 5, TECH_ILLEGAL = 5)
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_PLASTIC = 2500, MAT_URANIUM = 2000)
build_path = /obj/item/ammo_casing/microbattery/medical/normalsize
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO
)
departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/upgradeAOE
name = "Mining Explosion Upgrade"
desc = "An area of effect upgrade for the Proto-Kinetic Accelerator."
id = "pka_mineaoe"
// req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 8, TECH_ENGINEERING = 7) // Lets make this endgame level tech, due to it's power.
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000, MAT_GLASS = 5000, MAT_SILVER = 500, MAT_GOLD = 500, MAT_URANIUM = 2000, MAT_PHORON = 2000)
build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_PARTS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO
/datum/design_techweb/riflescope
name = "rifle scope"
desc = "A scope that can be mounted to certain rifles."
id = "riflescope"
// req_tech = list(TECH_ILLEGAL = 2, TECH_MATERIAL = 2)
build_type = PROTOLATHE
build_type = PROTOLATHE
materials = list(MAT_STEEL = 4000, MAT_GLASS = 4000)
build_path = /obj/item/binoculars/scope
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_PARTS
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/slimebaton
name = "Slime Baton"
id = "slimebaton"
// req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_POWER = 3, TECH_COMBAT = 3)
build_type = PROTOLATHE
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000)
build_path = /obj/item/melee/baton/slime
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_MELEE
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/slimetaser
name = "Slime Taser"
id = "slimetaser"
// req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4)
build_type = PROTOLATHE
build_type = PROTOLATHE
materials = list(MAT_STEEL = 5000)
build_path = /obj/item/gun/energy/taser/xeno
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
/datum/design_techweb/monkey_gun
name = "Bluespace Monkey Deployment System"
desc = "An Advanced monkey teleportation and rehydration system. For serious monkey business."
id = "monkey_gun"
// req_tech = list(TECH_BIO = 6, TECH_BLUESPACE = 5)
build_type = PROTOLATHE
build_type = PROTOLATHE
materials = list(MAT_STEEL = 3500, MAT_GLASS = 3500, MAT_PHORON = 1500, MAT_DIAMOND = 1500)
build_path = /obj/item/xenobio/monkey_gun
category = list(
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_RANGED
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
+49
View File
@@ -0,0 +1,49 @@
/obj/item/disk/tech_disk
name = "technology disk"
desc = "A disk for storing technology data for further research."
icon = 'icons/obj/discs_vr.dmi' //VOREStation Edit
icon_state = "data-blue" //VOREStation Edit
item_state = "card-id"
randpixel = 5
w_class = ITEMSIZE_SMALL
matter = list(MAT_STEEL = 30, MAT_GLASS = 10)
var/datum/techweb/stored_research
/obj/item/disk/tech_disk/Initialize(mapload)
. = ..()
if(!stored_research)
stored_research = new /datum/techweb/disk
randpixel_xy()
/obj/item/disk/tech_disk/debug
name = "\improper CentCom technology disk"
desc = "A debug item for research"
/obj/item/disk/tech_disk/debug/Initialize(mapload)
stored_research = locate(/datum/techweb/admin) in SSresearch.techwebs
return ..()
/obj/item/disk/design_disk
name = "component design disk"
desc = "A disk for storing device design data for construction in lathes."
icon = 'icons/obj/discs_vr.dmi' //VOREStation Edit
icon_state = "data-purple" //VOREStation Edit
item_state = "card-id"
randpixel = 5
w_class = ITEMSIZE_SMALL
matter = list(MAT_STEEL = 30, MAT_GLASS = 10)
///List of all `/datum/design` stored on the disk.
var/list/blueprints = list()
/obj/item/disk/design_disk/Initialize(mapload)
. = ..()
randpixel_xy()
/**
* Used for special interactions with a techweb when uploading the designs.
* Args:
* - stored_research - The techweb that's storing us.
*/
/obj/item/disk/design_disk/proc/on_upload(datum/techweb/stored_research, atom/research_source)
return

Some files were not shown because too many files have changed in this diff Show More