mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-11 23:23:55 +01:00
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 format26517b7122: 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 formatfe062e7bc4: 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 formatfe062e7bc4: 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:
@@ -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))))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
*/
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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.
|
||||
|
||||
*/
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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()
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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))
|
||||
@@ -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
|
||||
+54
-41
@@ -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
|
||||
+56
-84
@@ -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"
|
||||
+196
-274
@@ -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
|
||||
@@ -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
Reference in New Issue
Block a user