initial commit - cross reference with 5th port - obviously has compile errors
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
/*///////////////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 sulfuric acis).
|
||||
|
||||
*/
|
||||
/obj/machinery/r_n_d/circuit_imprinter
|
||||
name = "Circuit Imprinter"
|
||||
desc = "Manufactures circuit boards for the construction of machines."
|
||||
icon_state = "circuit_imprinter"
|
||||
flags = OPENCONTAINER
|
||||
|
||||
var/datum/material_container/materials
|
||||
var/efficiency_coeff
|
||||
|
||||
var/list/categories = list(
|
||||
"AI Modules",
|
||||
"Computer Boards",
|
||||
"Teleportation Machinery",
|
||||
"Medical Machinery",
|
||||
"Engineering Machinery",
|
||||
"Exosuit Modules",
|
||||
"Hydroponics Machinery",
|
||||
"Subspace Telecomms",
|
||||
"Research Machinery",
|
||||
"Misc. Machinery"
|
||||
)
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/New()
|
||||
..()
|
||||
materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND))
|
||||
create_reagents(0)
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/circuit_imprinter(null)
|
||||
B.apply_default_parts(src)
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/Destroy()
|
||||
qdel(materials)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/circuit_imprinter
|
||||
name = "circuit board (Circuit Imprinter)"
|
||||
build_path = /obj/machinery/r_n_d/circuit_imprinter
|
||||
origin_tech = "engineering=2;programming=2"
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/matter_bin = 1,
|
||||
/obj/item/weapon/stock_parts/manipulator = 1,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker = 2)
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/RefreshParts()
|
||||
reagents.maximum_volume = 0
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
|
||||
reagents.maximum_volume += G.volume
|
||||
G.reagents.trans_to(src, G.reagents.total_volume)
|
||||
|
||||
materials.max_amount = 0
|
||||
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
|
||||
materials.max_amount += M.rating * 75000
|
||||
|
||||
var/T = 0
|
||||
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
|
||||
T += M.rating
|
||||
efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/effect/blob/B)
|
||||
if (prob(50))
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
|
||||
var/list/all_materials = being_built.reagents + being_built.materials
|
||||
|
||||
var/A = materials.amount(M)
|
||||
if(!A)
|
||||
A = reagents.get_reagent_amount(M)
|
||||
|
||||
return round(A / max(1, (all_materials[M]/efficiency_coeff)))
|
||||
|
||||
//we eject the materials upon deconstruction.
|
||||
/obj/machinery/r_n_d/circuit_imprinter/deconstruction()
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
|
||||
reagents.trans_to(G, G.reagents.maximum_volume)
|
||||
materials.retrieve_all()
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/disconnect_console()
|
||||
linked_console.linked_imprinter = null
|
||||
..()
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/Insert_Item(obj/item/O, mob/user)
|
||||
|
||||
if(istype(O,/obj/item/stack/sheet))
|
||||
. = 1
|
||||
if(!is_insertion_ready(user))
|
||||
return
|
||||
var/sheet_material = materials.get_item_material_amount(O)
|
||||
if(!sheet_material)
|
||||
return
|
||||
|
||||
if(!materials.has_space(sheet_material))
|
||||
user << "<span class='warning'>The [src.name]'s material bin is full! Please remove material before adding more.</span>"
|
||||
return 1
|
||||
|
||||
var/obj/item/stack/sheet/stack = O
|
||||
var/amount = round(input("How many sheets do you want to add?") as num)//No decimals
|
||||
if(!in_range(src, stack) || !user.Adjacent(src))
|
||||
return
|
||||
var/amount_inserted = materials.insert_stack(O,amount)
|
||||
if(!amount_inserted)
|
||||
return 1
|
||||
else
|
||||
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10)))
|
||||
user << "<span class='notice'>You add [amount_inserted] sheets to the [src.name].</span>"
|
||||
updateUsrDialog()
|
||||
|
||||
else if(user.a_intent != "harm")
|
||||
user << "<span class='warning'>You cannot insert this item into the [name]!</span>"
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
@@ -0,0 +1,514 @@
|
||||
/***************************************************************
|
||||
** 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 MINERAL_MATERIAL_AMOUNT, which defaults to 2000
|
||||
- MAT_METAL (/obj/item/stack/metal).
|
||||
- MAT_GLASS (/obj/item/stack/glass).
|
||||
- MAT_PLASMA (/obj/item/stack/plasma).
|
||||
- MAT_SILVER (/obj/item/stack/silver).
|
||||
- MAT_GOLD (/obj/item/stack/gold).
|
||||
- MAT_URANIUM (/obj/item/stack/uranium).
|
||||
- MAT_DIAMOND (/obj/item/stack/diamond).
|
||||
- MAT_BANANIUM (/obj/item/stack/bananium).
|
||||
(Insert new ones here)
|
||||
|
||||
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).
|
||||
- Add the AUTOLATHE tag to
|
||||
*/
|
||||
|
||||
/datum/design //Datum for object designs, used in construction
|
||||
var/name = "Name" //Name of the created object.
|
||||
var/desc = "Desc" //Description of the created object.
|
||||
var/id = "id" //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols
|
||||
var/list/req_tech = list() //IDs of that techs the object originated from and the minimum level requirements.
|
||||
var/build_type = null //Flag as to what kind machine the design is built in. See defines.
|
||||
var/list/materials = list() //List of materials. Format: "id" = amount.
|
||||
var/construction_time //Amount of time required for building the object
|
||||
var/build_path = "" //The file path of the object that gets created
|
||||
var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything
|
||||
var/list/reagents = list() //List of reagents. Format: "id" = amount.
|
||||
var/maxstack = 1
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
//Disks for transporting design datums//
|
||||
////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/disk/design_disk
|
||||
name = "Component Design Disk"
|
||||
desc = "A disk for storing device design data for construction in lathes."
|
||||
icon_state = "datadisk1"
|
||||
materials = list(MAT_METAL=100, MAT_GLASS=100)
|
||||
var/datum/design/blueprint
|
||||
|
||||
/obj/item/weapon/disk/design_disk/New()
|
||||
src.pixel_x = rand(-5, 5)
|
||||
src.pixel_y = rand(-5, 5)
|
||||
|
||||
///////////////////////////////////
|
||||
/////Non-Board Computer Stuff//////
|
||||
///////////////////////////////////
|
||||
|
||||
/datum/design/intellicard
|
||||
name = "Intellicard AI Transportation System"
|
||||
desc = "Allows for the construction of an intellicard."
|
||||
id = "intellicard"
|
||||
req_tech = list("programming" = 3, "materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 200)
|
||||
build_path = /obj/item/device/aicard
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/paicard
|
||||
name = "Personal Artificial Intelligence Card"
|
||||
desc = "Allows for the construction of a pAI Card."
|
||||
id = "paicard"
|
||||
req_tech = list("programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
build_path = /obj/item/device/paicard
|
||||
category = list("Electronics")
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
//////////Disk Construction Disks///////
|
||||
////////////////////////////////////////
|
||||
/datum/design/design_disk
|
||||
name = "Design Storage Disk"
|
||||
desc = "Produce additional disks for storing device designs."
|
||||
id = "design_disk"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/disk/design_disk
|
||||
category = list("Electronics")
|
||||
|
||||
/datum/design/tech_disk
|
||||
name = "Technology Data Storage Disk"
|
||||
desc = "Produce additional disks for storing technology data."
|
||||
id = "tech_disk"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/disk/tech_disk
|
||||
category = list("Electronics")
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////////Mining//////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/drill
|
||||
name = "Mining Drill"
|
||||
desc = "Yours is the drill that will pierce through the rock walls."
|
||||
id = "drill"
|
||||
req_tech = list("materials" = 2, "powerstorage" = 2, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000) //expensive, but no need for miners.
|
||||
build_path = /obj/item/weapon/pickaxe/drill
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/drill_diamond
|
||||
name = "Diamond-Tipped Mining Drill"
|
||||
desc = "Yours is the drill that will pierce the heavens!"
|
||||
id = "drill_diamond"
|
||||
req_tech = list("materials" = 6, "powerstorage" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) //Yes, a whole diamond is needed.
|
||||
build_path = /obj/item/weapon/pickaxe/drill/diamonddrill
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/plasmacutter
|
||||
name = "Plasma Cutter"
|
||||
desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff."
|
||||
id = "plasmacutter"
|
||||
req_tech = list("materials" = 3, "plasmatech" = 3, "magnets" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_GLASS = 500, MAT_PLASMA = 400)
|
||||
build_path = /obj/item/weapon/gun/energy/plasmacutter
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/plasmacutter_adv
|
||||
name = "Advanced Plasma Cutter"
|
||||
desc = "It's an advanced plasma cutter, oh my god."
|
||||
id = "plasmacutter_adv"
|
||||
req_tech = list("materials" = 4, "plasmatech" = 4, "engineering" = 2, "combat" = 3, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_PLASMA = 2000, MAT_GOLD = 500)
|
||||
build_path = /obj/item/weapon/gun/energy/plasmacutter/adv
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/jackhammer
|
||||
name = "Sonic Jackhammer"
|
||||
desc = "Essentially a handheld planet-cracker. Can drill through walls with ease as well."
|
||||
id = "jackhammer"
|
||||
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 6, "magnets" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_DIAMOND = 6000)
|
||||
build_path = /obj/item/weapon/pickaxe/drill/jackhammer
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/modkit
|
||||
name = "Modification Kit"
|
||||
desc = "A device which allows kinetic accelerators to be wielded with one hand, and by any organism."
|
||||
id = "modkit"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/modkit
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/superaccelerator
|
||||
name = "Super-Kinetic Accelerator"
|
||||
desc = "An upgraded version of the proto-kinetic accelerator, with superior damage, speed and range."
|
||||
id = "superaccelerator"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
|
||||
build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/super
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/hyperaccelerator
|
||||
name = "Hyper-Kinetic Accelerator"
|
||||
desc = "An upgraded version of the proto-kinetic accelerator, with even more superior damage, speed and range."
|
||||
id = "hyperaccelerator"
|
||||
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/hyper
|
||||
category = list("Mining Designs")
|
||||
|
||||
/datum/design/superresonator
|
||||
name = "Upgraded Resonator"
|
||||
desc = "An upgraded version of the resonator that allows more fields to be active at once."
|
||||
id = "superresonator"
|
||||
req_tech = list("materials" = 4, "powerstorage" = 3, "engineering" = 3, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/weapon/resonator/upgraded
|
||||
category = list("Mining Designs")
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////Blue Space/////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/beacon
|
||||
name = "Tracking Beacon"
|
||||
desc = "A blue space tracking beacon."
|
||||
id = "beacon"
|
||||
req_tech = list("bluespace" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
build_path = /obj/item/device/radio/beacon
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
/datum/design/bag_holding
|
||||
name = "Bag of Holding"
|
||||
desc = "A backpack that opens into a localized pocket of bluespace."
|
||||
id = "bag_holding"
|
||||
req_tech = list("bluespace" = 7, "materials" = 5, "engineering" = 5, "plasmatech" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250)
|
||||
build_path = /obj/item/weapon/storage/backpack/holding
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
/datum/design/bluespace_crystal
|
||||
name = "Artificial Bluespace Crystal"
|
||||
desc = "A small blue crystal with mystical properties."
|
||||
id = "bluespace_crystal"
|
||||
req_tech = list("bluespace" = 3, "materials" = 6, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500)
|
||||
build_path = /obj/item/weapon/ore/bluespace_crystal/artificial
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
/datum/design/telesci_gps
|
||||
name = "GPS Device"
|
||||
desc = "Little thingie that can track its position at all times."
|
||||
id = "telesci_gps"
|
||||
req_tech = list("materials" = 2, "bluespace" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/device/gps
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
/datum/design/miningsatchel_holding
|
||||
name = "Mining Satchel of Holding"
|
||||
desc = "A mining satchel that can hold an infinite amount of ores."
|
||||
id = "minerbag_holding"
|
||||
req_tech = list("bluespace" = 4, "materials" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 250, MAT_URANIUM = 500) //quite cheap, for more convenience
|
||||
build_path = /obj/item/weapon/storage/bag/ore/holding
|
||||
category = list("Bluespace Designs")
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////////HUDs////////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/health_hud
|
||||
name = "Health Scanner HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
|
||||
id = "health_hud"
|
||||
req_tech = list("biotech" = 2, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/health
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/health_hud_night
|
||||
name = "Night Vision Health Scanner HUD"
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
id = "health_hud_night"
|
||||
req_tech = list("biotech" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/night
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/security_hud
|
||||
name = "Security HUD"
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
|
||||
id = "security_hud"
|
||||
req_tech = list("magnets" = 3, "combat" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/security
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/security_hud_night
|
||||
name = "Night Vision Security HUD"
|
||||
desc = "A heads-up display which provides id data and vision in complete darkness."
|
||||
id = "security_hud_night"
|
||||
req_tech = list("combat" = 4, "magnets" = 5, "plasmatech" = 4, "engineering" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/night
|
||||
category = list("Equipment")
|
||||
|
||||
datum/design/diagnostic_hud
|
||||
name = "Diagnostic HUD"
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery."
|
||||
id = "dianostic_hud"
|
||||
req_tech = list("magnets" = 3, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic
|
||||
category = list("Equipment")
|
||||
|
||||
datum/design/diagnostic_hud_night
|
||||
name = "Night Vision Diagnostic HUD"
|
||||
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
|
||||
id = "dianostic_hud_night"
|
||||
req_tech = list("magnets" = 5, "plasmatech" = 4, "engineering" = 6, "powerstorage" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
|
||||
category = list("Equipment")
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////////Test///////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/* test
|
||||
name = "Test Design"
|
||||
desc = "A design to test the new protolathe."
|
||||
id = "protolathe_test"
|
||||
build_type = PROTOLATHE
|
||||
req_tech = list("materials" = 1)
|
||||
materials = list(MAT_GOLD = 3000, "iron" = 15, "copper" = 10, MAT_SILVER = 2500)
|
||||
build_path = /obj/item/weapon/banhammer"
|
||||
category = list("Weapons") */
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////////Misc///////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/welding_mask
|
||||
name = "Welding Gas Mask"
|
||||
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
|
||||
id = "weldingmask"
|
||||
req_tech = list("materials" = 2, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/clothing/mask/gas/welding
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/portaseeder
|
||||
name = "Portable Seed Extractor"
|
||||
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
|
||||
build_type = PROTOLATHE
|
||||
req_tech = list("biotech" = 3, "engineering" = 2)
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
|
||||
build_path = /obj/item/weapon/storage/bag/plants/portaseeder
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/air_horn
|
||||
name = "Air Horn"
|
||||
desc = "Damn son, where'd you find this?"
|
||||
id = "air_horn"
|
||||
req_tech = list("materials" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000)
|
||||
build_path = /obj/item/weapon/bikehorn/airhorn
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/mesons
|
||||
name = "Optical Meson Scanners"
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
|
||||
id = "mesons"
|
||||
req_tech = list("magnets" = 2, "engineering" = 2, "plasmatech" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/engine_goggles
|
||||
name = "Engineering Scanner Goggles"
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
|
||||
id = "engine_goggles"
|
||||
req_tech = list("materials" = 4, "magnets" = 3, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/tray_goggles
|
||||
name = "Optical T-Ray Scanners"
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
|
||||
id = "tray_goggles"
|
||||
req_tech = list("materials" = 3, "magnets" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/nvgmesons
|
||||
name = "Night Vision Optical Meson Scanners"
|
||||
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
|
||||
id = "nvgmesons"
|
||||
req_tech = list("magnets" = 5, "plasmatech" = 5, "engineering" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/meson/night
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/night_vision_goggles
|
||||
name = "Night Vision Goggles"
|
||||
desc = "Goggles that let you see through darkness unhindered."
|
||||
id = "night_visision_goggles"
|
||||
req_tech = list("materials" = 4, "magnets" = 5, "plasmatech" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/magboots
|
||||
name = "Magnetic Boots"
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
id = "magboots"
|
||||
req_tech = list("materials" = 4, "magnets" = 4, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500)
|
||||
build_path = /obj/item/clothing/shoes/magboots
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/sci_goggles
|
||||
name = "Science Goggles"
|
||||
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
|
||||
id = "scigoggles"
|
||||
req_tech = list("magnets" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
build_path = /obj/item/clothing/glasses/science
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/diskplantgene
|
||||
name = "Plant data disk"
|
||||
desc = "A disk for storing plant genetic data."
|
||||
id = "diskplantgene"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=200, MAT_GLASS=100)
|
||||
build_path = /obj/item/weapon/disk/plantgene
|
||||
category = list("Electronics")
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Janitor Designs//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/advmop
|
||||
name = "Advanced Mop"
|
||||
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
|
||||
id = "advmop"
|
||||
req_tech = list("materials" = 4, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 200)
|
||||
build_path = /obj/item/weapon/mop/advanced
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/blutrash
|
||||
name = "Trashbag of Holding"
|
||||
desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage."
|
||||
id = "blutrash"
|
||||
req_tech = list("materials" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500)
|
||||
build_path = /obj/item/weapon/storage/bag/trash/bluespace
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/buffer
|
||||
name = "Floor Buffer Upgrade"
|
||||
desc = "A floor buffer that can be attached to vehicular janicarts."
|
||||
id = "buffer"
|
||||
req_tech = list("materials" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/janiupgrade
|
||||
category = list("Equipment")
|
||||
|
||||
/datum/design/holosign
|
||||
name = "Holographic Sign Projector"
|
||||
desc = "A holograpic projector used to project various warning signs."
|
||||
id = "holosign"
|
||||
req_tech = list("programming" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/weapon/holosign_creator
|
||||
category = list("Equipment")
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Tools//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/exwelder
|
||||
name = "Experimental Welding Tool"
|
||||
desc = "An experimental welder capable of self-fuel generation."
|
||||
id = "exwelder"
|
||||
req_tech = list("materials" = 4, "engineering" = 5, "bluespace" = 3, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
|
||||
build_path = /obj/item/weapon/weldingtool/experimental
|
||||
category = list("Equipment")
|
||||
|
||||
|
||||
/datum/design/alienalloy
|
||||
name = "Alien Alloy"
|
||||
desc = "A sheet of reverse-engineered alien alloy."
|
||||
id = "alienalloy"
|
||||
req_tech = list("abductor" = 1, "materials" = 7, "plasmatech" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 4000)
|
||||
build_path = /obj/item/stack/sheet/mineral/abductor
|
||||
category = list("Stock Parts")
|
||||
@@ -0,0 +1,140 @@
|
||||
///////////////////////////////////
|
||||
//////////AI Module Disks//////////
|
||||
///////////////////////////////////
|
||||
|
||||
/datum/design/board/aicore
|
||||
name = "AI Design (AI Core)"
|
||||
desc = "Allows for the construction of circuit boards used to build new AI cores."
|
||||
id = "aicore"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/aicore
|
||||
category = list("AI Modules")
|
||||
|
||||
|
||||
/datum/design/board/safeguard_module
|
||||
name = "Module Design (Safeguard)"
|
||||
desc = "Allows for the construction of a Safeguard AI Module."
|
||||
id = "safeguard_module"
|
||||
req_tech = list("programming" = 3, "materials" = 3)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/safeguard
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/onehuman_module
|
||||
name = "Module Design (OneHuman)"
|
||||
desc = "Allows for the construction of a OneHuman AI Module."
|
||||
id = "onehuman_module"
|
||||
req_tech = list("programming" = 6, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/aiModule/zeroth/oneHuman
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/protectstation_module
|
||||
name = "Module Design (ProtectStation)"
|
||||
desc = "Allows for the construction of a ProtectStation AI Module."
|
||||
id = "protectstation_module"
|
||||
req_tech = list("programming" = 5, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/protectStation
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/quarantine_module
|
||||
name = "Module Design (Quarantine)"
|
||||
desc = "Allows for the construction of a Quarantine AI Module."
|
||||
id = "quarantine_module"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/quarantine
|
||||
category = list("AI Modules")
|
||||
|
||||
|
||||
/datum/design/board/oxygen_module
|
||||
name = "Module Design (OxygenIsToxicToHumans)"
|
||||
desc = "Allows for the construction of a Safeguard AI Module."
|
||||
id = "oxygen_module"
|
||||
req_tech = list("programming" = 4, "biotech" = 2, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/oxygen
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/freeform_module
|
||||
name = "Module Design (Freeform)"
|
||||
desc = "Allows for the construction of a Freeform AI Module."
|
||||
id = "freeform_module"
|
||||
req_tech = list("programming" = 5, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/aiModule/supplied/freeform
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/reset_module
|
||||
name = "Module Design (Reset)"
|
||||
desc = "Allows for the construction of a Reset AI Module."
|
||||
id = "reset_module"
|
||||
req_tech = list("programming" = 4, "materials" = 6)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/aiModule/reset
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/purge_module
|
||||
name = "Module Design (Purge)"
|
||||
desc = "Allows for the construction of a Purge AI Module."
|
||||
id = "purge_module"
|
||||
req_tech = list("programming" = 5, "materials" = 6)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/aiModule/reset/purge
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/freeformcore_module
|
||||
name = "AI Core Module (Freeform)"
|
||||
desc = "Allows for the construction of a Freeform AI Core Module."
|
||||
id = "freeformcore_module"
|
||||
req_tech = list("programming" = 6, "materials" = 6)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/freeformcore
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/asimov
|
||||
name = "Core Module Design (Asimov)"
|
||||
desc = "Allows for the construction of a Asimov AI Core Module."
|
||||
id = "asimov_module"
|
||||
req_tech = list("programming" = 3, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/asimov
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/paladin_module
|
||||
name = "Core Module Design (P.A.L.A.D.I.N.)"
|
||||
desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
|
||||
id = "paladin_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/paladin
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/tyrant_module
|
||||
name = "Core Module Design (T.Y.R.A.N.T.)"
|
||||
desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
|
||||
id = "tyrant_module"
|
||||
req_tech = list("programming" = 5, "syndicate" = 2, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/tyrant
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/corporate_module
|
||||
name = "Core Module Design (Corporate)"
|
||||
desc = "Allows for the construction of a Corporate AI Core Module."
|
||||
id = "corporate_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/corp
|
||||
category = list("AI Modules")
|
||||
|
||||
/datum/design/board/custom_module
|
||||
name = "Core Module Design (Custom)"
|
||||
desc = "Allows for the construction of a Custom AI Core Module."
|
||||
id = "custom_module"
|
||||
req_tech = list("programming" = 5, "materials" = 5)
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/aiModule/core/full/custom
|
||||
category = list("AI Modules")
|
||||
@@ -0,0 +1,713 @@
|
||||
///////////////////////////////////
|
||||
//////////Autolathe Designs ///////
|
||||
///////////////////////////////////
|
||||
|
||||
/datum/design/bucket
|
||||
name = "Bucket"
|
||||
id = "bucket"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/weapon/reagent_containers/glass/bucket
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/crowbar
|
||||
name = "Pocket crowbar"
|
||||
id = "crowbar"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50)
|
||||
build_path = /obj/item/weapon/crowbar
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/flashlight
|
||||
name = "Flashlight"
|
||||
id = "flashlight"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 20)
|
||||
build_path = /obj/item/device/flashlight
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/extinguisher
|
||||
name = "Fire extinguisher"
|
||||
id = "extinguisher"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 90)
|
||||
build_path = /obj/item/weapon/extinguisher
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/multitool
|
||||
name = "Multitool"
|
||||
id = "multitool"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 20)
|
||||
build_path = /obj/item/device/multitool
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/analyzer
|
||||
name = "Analyzer"
|
||||
id = "analyzer"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30, MAT_GLASS = 20)
|
||||
build_path = /obj/item/device/analyzer
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/tscanner
|
||||
name = "T-ray scanner"
|
||||
id = "tscanner"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
build_path = /obj/item/device/t_scanner
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/weldingtool
|
||||
name = "Welding tool"
|
||||
id = "welding_tool"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 70, MAT_GLASS = 20)
|
||||
build_path = /obj/item/weapon/weldingtool
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/screwdriver
|
||||
name = "Screwdriver"
|
||||
id = "screwdriver"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 75)
|
||||
build_path = /obj/item/weapon/screwdriver
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/wirecutters
|
||||
name = "Wirecutters"
|
||||
id = "wirecutters"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 80)
|
||||
build_path = /obj/item/weapon/wirecutters
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/wrench
|
||||
name = "Wrench"
|
||||
id = "wrench"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
build_path = /obj/item/weapon/wrench
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/welding_helmet
|
||||
name = "Welding helmet"
|
||||
id = "welding_helmet"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1750, MAT_GLASS = 400)
|
||||
build_path = /obj/item/clothing/head/welding
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/cable_coil
|
||||
name = "Cable coil"
|
||||
id = "cable_coil"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10, MAT_GLASS = 5)
|
||||
build_path = /obj/item/stack/cable_coil/random
|
||||
category = list("initial","Tools")
|
||||
maxstack = 30
|
||||
|
||||
/datum/design/toolbox
|
||||
name = "Toolbox"
|
||||
id = "tool_box"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
build_path = /obj/item/weapon/storage/toolbox
|
||||
category = list("initial","Tools")
|
||||
|
||||
/datum/design/console_screen
|
||||
name = "Console screen"
|
||||
id = "console_screen"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 200)
|
||||
build_path = /obj/item/weapon/stock_parts/console_screen
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/apc_board
|
||||
name = "APC module"
|
||||
id = "power control"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/electronics/apc
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/airlock_board
|
||||
name = "Airlock electronics"
|
||||
id = "airlock_board"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
build_path = /obj/item/weapon/electronics/airlock
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/firelock_board
|
||||
name = "Firelock circuitry"
|
||||
id = "firelock_board"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
build_path = /obj/item/weapon/electronics/firelock
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/airalarm_electronics
|
||||
name = "Air alarm electronics"
|
||||
id = "airalarm_electronics"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
build_path = /obj/item/weapon/electronics/airalarm
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/firealarm_electronics
|
||||
name = "Fire alarm electronics"
|
||||
id = "firealarm_electronics"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
build_path = /obj/item/weapon/electronics/firealarm
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/pipe_painter
|
||||
name = "Pipe painter"
|
||||
id = "pipe_painter"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2000)
|
||||
build_path = /obj/item/device/pipe_painter
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/airlock_painter
|
||||
name = "Airlock painter"
|
||||
id = "airlock_painter"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
build_path = /obj/item/weapon/airlock_painter
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/metal
|
||||
name = "Metal"
|
||||
id = "metal"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/metal
|
||||
category = list("initial","Construction")
|
||||
maxstack = 50
|
||||
|
||||
/datum/design/glass
|
||||
name = "Glass"
|
||||
id = "glass"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/glass
|
||||
category = list("initial","Construction")
|
||||
maxstack = 50
|
||||
|
||||
/datum/design/rglass
|
||||
name = "Reinforced glass"
|
||||
id = "rglass"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/rglass
|
||||
category = list("initial","Construction")
|
||||
maxstack = 50
|
||||
|
||||
/datum/design/rods
|
||||
name = "Metal rod"
|
||||
id = "rods"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1000)
|
||||
build_path = /obj/item/stack/rods
|
||||
category = list("initial","Construction")
|
||||
maxstack = 50
|
||||
|
||||
/datum/design/rcd_ammo
|
||||
name = "Compressed matter cardridge"
|
||||
id = "rcd_ammo"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS=2000)
|
||||
build_path = /obj/item/weapon/rcd_ammo
|
||||
category = list("initial","Construction")
|
||||
|
||||
/datum/design/kitchen_knife
|
||||
name = "Kitchen knife"
|
||||
id = "kitchen_knife"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 12000)
|
||||
build_path = /obj/item/weapon/kitchen/knife
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/fork
|
||||
name = "Fork"
|
||||
id = "fork"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 80)
|
||||
build_path = /obj/item/weapon/kitchen/fork
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/tray
|
||||
name = "Tray"
|
||||
id = "tray"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
build_path = /obj/item/weapon/storage/bag/tray
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/bowl
|
||||
name = "Bowl"
|
||||
id = "bowl"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
build_path = /obj/item/weapon/reagent_containers/glass/bowl
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/drinking_glass
|
||||
name = "Drinking glass"
|
||||
id = "drinking_glass"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
build_path = /obj/item/weapon/reagent_containers/food/drinks/drinkingglass
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/shot_glass
|
||||
name = "Shot glass"
|
||||
id = "shot_glass"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/shaker
|
||||
name = "Shaker"
|
||||
id = "shaker"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1500)
|
||||
build_path = /obj/item/weapon/reagent_containers/food/drinks/shaker
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
/datum/design/cultivator
|
||||
name = "Cultivator"
|
||||
id = "cultivator"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL=50)
|
||||
build_path = /obj/item/weapon/cultivator
|
||||
category = list("initial","Misc")
|
||||
|
||||
/datum/design/plant_analyzer
|
||||
name = "Plant analyzer"
|
||||
id = "plant_analyzer"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30, MAT_GLASS = 20)
|
||||
build_path = /obj/item/device/plant_analyzer
|
||||
category = list("initial","Misc")
|
||||
|
||||
/datum/design/shovel
|
||||
name = "Shovel"
|
||||
id = "shovel"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50)
|
||||
build_path = /obj/item/weapon/shovel
|
||||
category = list("initial","Misc")
|
||||
|
||||
/datum/design/spade
|
||||
name = "Spade"
|
||||
id = "spade"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50)
|
||||
build_path = /obj/item/weapon/shovel/spade
|
||||
category = list("initial","Misc")
|
||||
|
||||
/datum/design/hatchet
|
||||
name = "Hatchet"
|
||||
id = "hatchet"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 15000)
|
||||
build_path = /obj/item/weapon/hatchet
|
||||
category = list("initial","Misc")
|
||||
|
||||
/datum/design/scalpel
|
||||
name = "Scalpel"
|
||||
id = "scalpel"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/weapon/scalpel
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/circular_saw
|
||||
name = "Circular saw"
|
||||
id = "circular_saw"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 6000)
|
||||
build_path = /obj/item/weapon/circular_saw
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/surgicaldrill
|
||||
name = "Surgical drill"
|
||||
id = "surgicaldrill"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 6000)
|
||||
build_path = /obj/item/weapon/surgicaldrill
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/retractor
|
||||
name = "Retractor"
|
||||
id = "retractor"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3000)
|
||||
build_path = /obj/item/weapon/retractor
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/cautery
|
||||
name = "Cautery"
|
||||
id = "cautery"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 750)
|
||||
build_path = /obj/item/weapon/cautery
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/hemostat
|
||||
name = "Hemostat"
|
||||
id = "hemostat"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
build_path = /obj/item/weapon/hemostat
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/beaker
|
||||
name = "Beaker"
|
||||
id = "beaker"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
build_path = /obj/item/weapon/reagent_containers/glass/beaker
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/large_beaker
|
||||
name = "Large beaker"
|
||||
id = "large_beaker"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 2500)
|
||||
build_path = /obj/item/weapon/reagent_containers/glass/beaker/large
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/healthanalyzer
|
||||
name = "Health Analyzer"
|
||||
id = "healthanalyzer"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
|
||||
build_path = /obj/item/device/healthanalyzer
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/beanbag_slug
|
||||
name = "Beanbag slug"
|
||||
id = "beanbag_slug"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 250)
|
||||
build_path = /obj/item/ammo_casing/shotgun/beanbag
|
||||
category = list("initial", "Security")
|
||||
|
||||
/datum/design/rubbershot
|
||||
name = "Rubber shot"
|
||||
id = "rubber_shot"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun/rubbershot
|
||||
category = list("initial", "Security")
|
||||
|
||||
/datum/design/c38
|
||||
name = "Speed loader (.38)"
|
||||
id = "c38"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
build_path = /obj/item/ammo_box/c38
|
||||
category = list("initial", "Security")
|
||||
|
||||
/datum/design/recorder
|
||||
name = "Universal recorder"
|
||||
id = "recorder"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 60, MAT_GLASS = 30)
|
||||
build_path = /obj/item/device/taperecorder/empty
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/tape
|
||||
name = "Tape"
|
||||
id = "tape"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 20, MAT_GLASS = 5)
|
||||
build_path = /obj/item/device/tape
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/igniter
|
||||
name = "Igniter"
|
||||
id = "igniter"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
|
||||
build_path = /obj/item/device/assembly/igniter
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/signaler
|
||||
name = "Remote signaling device"
|
||||
id = "signaler"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 120)
|
||||
build_path = /obj/item/device/assembly/signaler
|
||||
category = list("initial", "T-Comm")
|
||||
|
||||
/datum/design/radio_headset
|
||||
name = "Radio headset"
|
||||
id = "radio_headset"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 75)
|
||||
build_path = /obj/item/device/radio/headset
|
||||
category = list("initial", "T-Comm")
|
||||
|
||||
/datum/design/bounced_radio
|
||||
name = "Station bounced radio"
|
||||
id = "bounced_radio"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 75, MAT_GLASS = 25)
|
||||
build_path = /obj/item/device/radio/off
|
||||
category = list("initial", "T-Comm")
|
||||
|
||||
/datum/design/infrared_emitter
|
||||
name = "Infrared emitter"
|
||||
id = "infrared_emitter"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
build_path = /obj/item/device/assembly/infra
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/health_sensor
|
||||
name = "Health sensor"
|
||||
id = "health_sensor"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
build_path = /obj/item/device/assembly/health
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/timer
|
||||
name = "Timer"
|
||||
id = "timer"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
|
||||
build_path = /obj/item/device/assembly/timer
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/voice_analyser
|
||||
name = "Voice analyser"
|
||||
id = "voice_analyser"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
|
||||
build_path = /obj/item/device/assembly/voice
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/light_tube
|
||||
name = "Light tube"
|
||||
id = "light_tube"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 60, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/light/tube
|
||||
category = list("initial", "Construction")
|
||||
|
||||
/datum/design/light_bulb
|
||||
name = "Light bulb"
|
||||
id = "light_bulb"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 60, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/light/bulb
|
||||
category = list("initial", "Construction")
|
||||
|
||||
/datum/design/camera_assembly
|
||||
name = "Camera assembly"
|
||||
id = "camera_assembly"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 250)
|
||||
build_path = /obj/item/wallframe/camera
|
||||
category = list("initial", "Construction")
|
||||
|
||||
/datum/design/newscaster_frame
|
||||
name = "Newscaster frame"
|
||||
id = "newscaster_frame"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 14000, MAT_GLASS = 8000)
|
||||
build_path = /obj/item/wallframe/newscaster
|
||||
category = list("initial", "Construction")
|
||||
|
||||
/datum/design/syringe
|
||||
name = "Syringe"
|
||||
id = "syringe"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10, MAT_GLASS = 20)
|
||||
build_path = /obj/item/weapon/reagent_containers/syringe
|
||||
category = list("initial", "Medical")
|
||||
|
||||
/datum/design/prox_sensor
|
||||
name = "Proximity sensor"
|
||||
id = "prox_sensor"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
build_path = /obj/item/device/assembly/prox_sensor
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/foam_dart
|
||||
name = "Box of Foam Darts"
|
||||
id = "foam_dart"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
build_path = /obj/item/ammo_box/foambox
|
||||
category = list("initial", "Misc")
|
||||
|
||||
//hacked autolathe recipes
|
||||
/datum/design/flamethrower
|
||||
name = "Flamethrower"
|
||||
id = "flamethrower"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
build_path = /obj/item/weapon/flamethrower/full
|
||||
category = list("hacked", "Weapons and ammo")
|
||||
|
||||
/datum/design/rcd
|
||||
name = "Rapid construction device (RCD)"
|
||||
id = "rcd"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
build_path = /obj/item/weapon/rcd
|
||||
category = list("hacked", "Construction")
|
||||
|
||||
/datum/design/rpd
|
||||
name = "Rapid pipe dispenser (RPD)"
|
||||
id = "rpd"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 75000, MAT_GLASS = 37500)
|
||||
build_path = /obj/item/weapon/pipe_dispenser
|
||||
category = list("hacked", "Construction")
|
||||
|
||||
/datum/design/electropack
|
||||
name = "Electropack"
|
||||
id = "electropack"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 2500)
|
||||
build_path = /obj/item/device/electropack
|
||||
category = list("hacked", "Tools")
|
||||
|
||||
/datum/design/large_welding_tool
|
||||
name = "Industrial welding tool"
|
||||
id = "large_welding_tool"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 70, MAT_GLASS = 60)
|
||||
build_path = /obj/item/weapon/weldingtool/largetank
|
||||
category = list("hacked", "Tools")
|
||||
|
||||
/datum/design/handcuffs
|
||||
name = "Handcuffs"
|
||||
id = "handcuffs"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
build_path = /obj/item/weapon/restraints/handcuffs
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/shotgun_slug
|
||||
name = "Shotgun slug"
|
||||
id = "shotgun_slug"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/buckshot_shell
|
||||
name = "Buckshot shell"
|
||||
id = "buckshot_shell"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun/buckshot
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/shotgun_dart
|
||||
name = "Shotgun dart"
|
||||
id = "shotgun_dart"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun/dart
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/incendiary_slug
|
||||
name = "Incendiary slug"
|
||||
id = "incendiary_slug"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun/incendiary
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/a357
|
||||
name = "Ammo box (.357)"
|
||||
id = "a357"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
build_path = /obj/item/ammo_box/a357
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/c10mm
|
||||
name = "Ammo box (10mm)"
|
||||
id = "c10mm"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
build_path = /obj/item/ammo_box/c10mm
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/c45
|
||||
name = "Ammo box (.45)"
|
||||
id = "c45"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
build_path = /obj/item/ammo_box/c45
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/c9mm
|
||||
name = "Ammo box (9mm)"
|
||||
id = "c9mm"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
build_path = /obj/item/ammo_box/c9mm
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/cleaver
|
||||
name = "Butcher's cleaver"
|
||||
id = "cleaver"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 18000)
|
||||
build_path = /obj/item/weapon/kitchen/knife/butcher
|
||||
category = list("hacked", "Dinnerware")
|
||||
|
||||
/datum/design/spraycan
|
||||
name = "Spraycan"
|
||||
id = "spraycan"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
|
||||
build_path = /obj/item/toy/crayon/spraycan
|
||||
category = list("initial", "Tools")
|
||||
|
||||
/datum/design/desttagger
|
||||
name = "Destination tagger"
|
||||
id = "desttagger"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 250, MAT_GLASS = 125)
|
||||
build_path = /obj/item/device/destTagger
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/handlabeler
|
||||
name = "Hand labeler"
|
||||
id = "handlabel"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 125)
|
||||
build_path = /obj/item/weapon/hand_labeler
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/geiger
|
||||
name = "Geiger counter"
|
||||
id = "geigercounter"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
|
||||
build_path = /obj/item/device/geiger_counter
|
||||
category = list("initial", "Tools")
|
||||
|
||||
/datum/design/turret_control_frame
|
||||
name = "Turret control frame"
|
||||
id = "turret_control"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 12000)
|
||||
build_path = /obj/item/wallframe/turret_control
|
||||
category = list("initial", "Construction")
|
||||
@@ -0,0 +1,253 @@
|
||||
///////////////////Computer Boards///////////////////////////////////
|
||||
|
||||
/datum/design/board
|
||||
name = "Computer Design (Battle Arcade Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
|
||||
id = "arcade_battle"
|
||||
req_tech = list("programming" = 1)
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
reagents = list("sacid" = 20)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/arcade/battle
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/orion_trail
|
||||
name = "Computer Design (Orion Trail Arcade Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine."
|
||||
id = "arcade_orion"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/arcade/orion_trail
|
||||
category = list("Computer Boards")
|
||||
|
||||
|
||||
/datum/design/board/seccamera
|
||||
name = "Computer Design (Security)"
|
||||
desc = "Allows for the construction of circuit boards used to build security camera computers."
|
||||
id = "seccamera"
|
||||
req_tech = list("programming" = 2, "combat" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/security
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/aiupload
|
||||
name = "Computer Design (AI Upload)"
|
||||
desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
|
||||
id = "aiupload"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/aiupload
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/borgupload
|
||||
name = "Computer Design (Cyborg Upload)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console."
|
||||
id = "borgupload"
|
||||
req_tech = list("programming" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/borgupload
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/med_data
|
||||
name = "Computer Design (Medical Records)"
|
||||
desc = "Allows for the construction of circuit boards used to build a medical records console."
|
||||
id = "med_data"
|
||||
req_tech = list("programming" = 2, "biotech" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/med_data
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/operating
|
||||
name = "Computer Design (Operating Computer)"
|
||||
desc = "Allows for the construction of circuit boards used to build an operating computer console."
|
||||
id = "operating"
|
||||
req_tech = list("programming" = 2, "biotech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/operating
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/pandemic
|
||||
name = "Computer Design (PanD.E.M.I.C. 2200)"
|
||||
desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console."
|
||||
id = "pandemic"
|
||||
req_tech = list("programming" = 3, "biotech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/pandemic
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/scan_console
|
||||
name = "Computer Design (DNA Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new DNA scanning console."
|
||||
id = "scan_console"
|
||||
req_tech = list("programming" = 2, "biotech" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/scan_consolenew
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/comconsole
|
||||
name = "Computer Design (Communications)"
|
||||
desc = "Allows for the construction of circuit boards used to build a communications console."
|
||||
id = "comconsole"
|
||||
req_tech = list("programming" = 3, "magnets" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/communications
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/idcardconsole
|
||||
name = "Computer Design (ID Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build an ID computer."
|
||||
id = "idcardconsole"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/card
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/crewconsole
|
||||
name = "Computer Design (Crew monitoring computer)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer."
|
||||
id = "crewconsole"
|
||||
req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/crew
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/secdata
|
||||
name = "Computer Design (Security Records Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a security records console."
|
||||
id = "secdata"
|
||||
req_tech = list("programming" = 2, "combat" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/secure_data
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/atmosalerts
|
||||
name = "Computer Design (Atmosphere Alert)"
|
||||
desc = "Allows for the construction of circuit boards used to build an atmosphere alert console."
|
||||
id = "atmosalerts"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/atmos_alert
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/atmos_control
|
||||
name = "Computer Design (Atmospheric Monitor)"
|
||||
desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor."
|
||||
id = "atmos_control"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/atmos_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/robocontrol
|
||||
name = "Computer Design (Robotics Control Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Robotics Control console."
|
||||
id = "robocontrol"
|
||||
req_tech = list("programming" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/robotics
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/slot_machine
|
||||
name = "Computer Design (Slot Machine)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new slot machine."
|
||||
id = "slotmachine"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/slot_machine
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/powermonitor
|
||||
name = "Computer Design (Power Monitor)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new power monitor."
|
||||
id = "powermonitor"
|
||||
req_tech = list("programming" = 2, "powerstorage" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/powermonitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/solarcontrol
|
||||
name = "Computer Design (Solar Control)"
|
||||
desc = "Allows for the construction of circuit boards used to build a solar control console."
|
||||
id = "solarcontrol"
|
||||
req_tech = list("programming" = 2, "powerstorage" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/solar_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/prisonmanage
|
||||
name = "Computer Design (Prisoner Management Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a prisoner management console."
|
||||
id = "prisonmanage"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/prisoner
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/mechacontrol
|
||||
name = "Computer Design (Exosuit Control Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build an exosuit control console."
|
||||
id = "mechacontrol"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/mecha_control
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/mechapower
|
||||
name = "Computer Design (Mech Bay Power Control Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a mech bay power control console."
|
||||
id = "mechapower"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/mech_bay_power_console
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/rdconsole
|
||||
name = "Computer Design (R&D Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new R&D console."
|
||||
id = "rdconsole"
|
||||
req_tech = list("programming" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/rdconsole
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/cargo
|
||||
name = "Computer Design (Supply Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Supply Console."
|
||||
id = "cargo"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/cargo
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/cargorequest
|
||||
name = "Computer Design (Supply Request Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Supply Request Console."
|
||||
id = "cargorequest"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/cargo/request
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/mining
|
||||
name = "Computer Design (Outpost Status Display)"
|
||||
desc = "Allows for the construction of circuit boards used to build an outpost status display console."
|
||||
id = "mining"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/mining
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/comm_monitor
|
||||
name = "Computer Design (Telecommunications Monitoring Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a telecommunications monitor."
|
||||
id = "comm_monitor"
|
||||
req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/comm_monitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/comm_server
|
||||
name = "Computer Design (Telecommunications Server Monitoring Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor."
|
||||
id = "comm_server"
|
||||
req_tech = list("programming" = 3, "magnets" = 3, "bluespace" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/comm_server
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/message_monitor
|
||||
name = "Computer Design (Messaging Monitor Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a messaging monitor console."
|
||||
id = "message_monitor"
|
||||
req_tech = list("programming" = 5)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/message_monitor
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/aifixer
|
||||
name = "Computer Design (AI Integrity Restorer)"
|
||||
desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer."
|
||||
id = "aifixer"
|
||||
req_tech = list("programming" = 4, "magnets" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/aifixer
|
||||
category = list("Computer Boards")
|
||||
|
||||
/datum/design/board/libraryconsole
|
||||
name = "Computer Design (Library Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new library console."
|
||||
id = "libraryconsole"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/libraryconsole
|
||||
category = list("Computer Boards")
|
||||
@@ -0,0 +1,388 @@
|
||||
////////////////////////////////////////
|
||||
//////////////MISC Boards///////////////
|
||||
////////////////////////////////////////
|
||||
|
||||
/datum/design/board/smes
|
||||
name = "Machine Design (SMES Board)"
|
||||
desc = "The circuit board for a SMES."
|
||||
id = "smes"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/smes
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
/datum/design/board/announcement_system
|
||||
name = "Machine Design (Automated Announcement System Board)"
|
||||
desc = "The circuit board for an automated announcement system."
|
||||
id = "automated_announcement"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "magnets" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/announcement_system
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
/datum/design/board/turbine_computer
|
||||
name = "Computer Design (Power Turbine Console Board)"
|
||||
desc = "The circuit board for a power turbine console."
|
||||
id = "power_turbine_console"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/turbine_computer
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
/datum/design/board/emitter
|
||||
name = "Machine Design (Emitter Board)"
|
||||
desc = "The circuit board for an emitter."
|
||||
id = "emitter"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/emitter
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
/datum/design/board/power_compressor
|
||||
name = "Machine Design (Power Compressor Board)"
|
||||
desc = "The circuit board for a power compressor."
|
||||
id = "power_compressor"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/power_compressor
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
/datum/design/board/power_turbine
|
||||
name = "Machine Design (Power Turbine Board)"
|
||||
desc = "The circuit board for a power turbine."
|
||||
id = "power_turbine"
|
||||
req_tech = list("programming" = 4, "powerstorage" = 4, "engineering" = 5)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/power_turbine
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
/datum/design/board/thermomachine
|
||||
name = "Machine Design (Freezer/Heater Board)"
|
||||
desc = "The circuit board for a freezer/heater."
|
||||
id = "thermomachine"
|
||||
req_tech = list("programming" = 3, "plasmatech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/thermomachine
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
/datum/design/board/space_heater
|
||||
name = "Machine Design (Space Heater Board)"
|
||||
desc = "The circuit board for a space heater."
|
||||
id = "space_heater"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "plasmatech" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/space_heater
|
||||
category = list ("Engineering Machinery")
|
||||
|
||||
/datum/design/board/teleport_station
|
||||
name = "Machine Design (Teleportation Station Board)"
|
||||
desc = "The circuit board for a teleportation station."
|
||||
id = "tele_station"
|
||||
req_tech = list("programming" = 5, "bluespace" = 4, "engineering" = 4, "plasmatech" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/teleporter_station
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
/datum/design/board/teleport_hub
|
||||
name = "Machine Design (Teleportation Hub Board)"
|
||||
desc = "The circuit board for a teleportation hub."
|
||||
id = "tele_hub"
|
||||
req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/teleporter_hub
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
/datum/design/board/telepad
|
||||
name = "Machine Design (Telepad Board)"
|
||||
desc = "The circuit board for a telescience telepad."
|
||||
id = "telepad"
|
||||
req_tech = list("programming" = 4, "bluespace" = 5, "plasmatech" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telesci_pad
|
||||
category = list ("Teleportation Machinery")
|
||||
|
||||
/datum/design/board/teleconsole
|
||||
name = "Computer Design (Teleporter Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a teleporter control console."
|
||||
id = "teleconsole"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/teleporter
|
||||
category = list("Teleportation Machinery")
|
||||
|
||||
/datum/design/board/telesci_console
|
||||
name = "Computer Design (Telepad Control Console Board)"
|
||||
desc = "Allows for the construction of circuit boards used to build a telescience console."
|
||||
id = "telesci_console"
|
||||
req_tech = list("programming" = 3, "bluespace" = 3, "plasmatech" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/telesci_console
|
||||
category = list("Teleportation Machinery")
|
||||
|
||||
/datum/design/board/sleeper
|
||||
name = "Machine Design (Sleeper Board)"
|
||||
desc = "The circuit board for a sleeper."
|
||||
id = "sleeper"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/sleeper
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
/datum/design/board/cryotube
|
||||
name = "Machine Design (Cryotube Board)"
|
||||
desc = "The circuit board for a cryotube."
|
||||
id = "cryotube"
|
||||
req_tech = list("programming" = 5, "biotech" = 3, "engineering" = 4, "plasmatech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/cryo_tube
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
/datum/design/board/chem_dispenser
|
||||
name = "Machine Design (Portable Chem Dispenser Board)"
|
||||
desc = "The circuit board for a portable chem dispenser."
|
||||
id = "chem_dispenser"
|
||||
req_tech = list("programming" = 5, "biotech" = 3, "materials" = 4, "plasmatech" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/chem_dispenser
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
/datum/design/board/chem_master
|
||||
name = "Machine Design (Chem Master Board)"
|
||||
desc = "The circuit board for a Chem Master 3000."
|
||||
id = "chem_master"
|
||||
req_tech = list("biotech" = 3, "materials" = 3, "programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/chem_master
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
/datum/design/board/chem_heater
|
||||
name = "Machine Design (Chemical Heater Board)"
|
||||
desc = "The circuit board for a chemical heater."
|
||||
id = "chem_heater"
|
||||
req_tech = list("engineering" = 2, "biotech" = 2, "programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/chem_heater
|
||||
category = list ("Medical Machinery")
|
||||
|
||||
/datum/design/board/clonecontrol
|
||||
name = "Computer Design (Cloning Machine Console)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
|
||||
id = "clonecontrol"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/cloning
|
||||
category = list("Medical Machinery")
|
||||
|
||||
/datum/design/board/clonepod
|
||||
name = "Machine Design (Clone Pod)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Cloning Pod."
|
||||
id = "clonepod"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/clonepod
|
||||
category = list("Medical Machinery")
|
||||
|
||||
/datum/design/board/clonescanner
|
||||
name = "Machine Design (Cloning Scanner)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Cloning Scanner."
|
||||
id = "clonescanner"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/clonescanner
|
||||
category = list("Medical Machinery")
|
||||
|
||||
/datum/design/board/biogenerator
|
||||
name = "Machine Design (Biogenerator Board)"
|
||||
desc = "The circuit board for a biogenerator."
|
||||
id = "biogenerator"
|
||||
req_tech = list("programming" = 2, "biotech" = 3, "materials" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/biogenerator
|
||||
category = list ("Hydroponics Machinery")
|
||||
|
||||
/datum/design/board/hydroponics
|
||||
name = "Machine Design (Hydroponics Tray Board)"
|
||||
desc = "The circuit board for a hydroponics tray."
|
||||
id = "hydro_tray"
|
||||
req_tech = list("biotech" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/hydroponics
|
||||
category = list ("Hydroponics Machinery")
|
||||
|
||||
/datum/design/board/destructive_analyzer
|
||||
name = "Machine Design (Destructive Analyzer Board)"
|
||||
desc = "The circuit board for a destructive analyzer."
|
||||
id = "destructive_analyzer"
|
||||
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/destructive_analyzer
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/experimentor
|
||||
name = "Machine Design (E.X.P.E.R.I-MENTOR Board)"
|
||||
desc = "The circuit board for an E.X.P.E.R.I-MENTOR."
|
||||
id = "experimentor"
|
||||
req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2, "bluespace" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/experimentor
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/protolathe
|
||||
name = "Machine Design (Protolathe Board)"
|
||||
desc = "The circuit board for a protolathe."
|
||||
id = "protolathe"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/protolathe
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/circuit_imprinter
|
||||
name = "Machine Design (Circuit Imprinter Board)"
|
||||
desc = "The circuit board for a circuit imprinter."
|
||||
id = "circuit_imprinter"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/circuit_imprinter
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/rdservercontrol
|
||||
name = "Computer Design (R&D Server Control Console Board)"
|
||||
desc = "The circuit board for an R&D Server Control Console."
|
||||
id = "rdservercontrol"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/computer/rdservercontrol
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/rdserver
|
||||
name = "Machine Design (R&D Server Board)"
|
||||
desc = "The circuit board for an R&D Server."
|
||||
id = "rdserver"
|
||||
req_tech = list("programming" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/rdserver
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/mechfab
|
||||
name = "Machine Design (Exosuit Fabricator Board)"
|
||||
desc = "The circuit board for an Exosuit Fabricator."
|
||||
id = "mechfab"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/mechfab
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/cyborgrecharger
|
||||
name = "Machine Design (Cyborg Recharger Board)"
|
||||
desc = "The circuit board for a Cyborg Recharger."
|
||||
id = "cyborgrecharger"
|
||||
req_tech = list("powerstorage" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/cyborgrecharger
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/mech_recharger
|
||||
name = "Machine Design (Mechbay Recharger Board)"
|
||||
desc = "The circuit board for a Mechbay Recharger."
|
||||
id = "mech_recharger"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/mech_recharger
|
||||
category = list("Research Machinery")
|
||||
|
||||
/datum/design/board/microwave
|
||||
name = "Machine Design (Microwave Board)"
|
||||
desc = "The circuit board for a microwave."
|
||||
id = "microwave"
|
||||
req_tech = list("programming" = 2, "magnets" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/microwave
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/gibber
|
||||
name = "Machine Design (Gibber Board)"
|
||||
desc = "The circuit board for a gibber."
|
||||
id = "gibber"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/gibber
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/smartfridge
|
||||
name = "Machine Design (Smartfridge Board)"
|
||||
desc = "The circuit board for a smartfridge."
|
||||
id = "smartfridge"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/smartfridge
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/monkey_recycler
|
||||
name = "Machine Design (Monkey Recycler Board)"
|
||||
desc = "The circuit board for a monkey recycler."
|
||||
id = "smartfridge"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/monkey_recycler
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/seed_extractor
|
||||
name = "Machine Design (Seed Extractor Board)"
|
||||
desc = "The circuit board for a seed extractor."
|
||||
id = "seed_extractor"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/seed_extractor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/processor
|
||||
name = "Machine Design (Processor Board)"
|
||||
desc = "The circuit board for a processor."
|
||||
id = "processor"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/processor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/recycler
|
||||
name = "Machine Design (Recycler Board)"
|
||||
desc = "The circuit board for a recycler."
|
||||
id = "recycler"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/recycler
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/holopad
|
||||
name = "Machine Design (AI Holopad Board)"
|
||||
desc = "The circuit board for a holopad."
|
||||
id = "holopad"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/holopad
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/autolathe
|
||||
name = "Machine Design (Autolathe Board)"
|
||||
desc = "The circuit board for an autolathe."
|
||||
id = "autolathe"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/autolathe
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/recharger
|
||||
name = "Machine Design (Weapon Recharger Board)"
|
||||
desc = "The circuit board for a Weapon Recharger."
|
||||
id = "recharger"
|
||||
req_tech = list("powerstorage" = 4, "engineering" = 3, "materials" = 4)
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/recharger
|
||||
category = list("Misc. Machinery")
|
||||
|
||||
/datum/design/board/vendor
|
||||
name = "Machine Design (Vendor Board)"
|
||||
desc = "The circuit board for a Vendor."
|
||||
id = "vendor"
|
||||
req_tech = list("programming" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/vendor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/ore_redemption
|
||||
name = "Machine Design (Ore Redemption Board)"
|
||||
desc = "The circuit board for an Ore Redemption machine."
|
||||
id = "ore_redemption"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "plasmatech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/ore_redemption
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/mining_equipment_vendor
|
||||
name = "Machine Design (Mining Rewards Vender Board)"
|
||||
desc = "The circuit board for a Mining Rewards Vender."
|
||||
id = "mining_equipment_vendor"
|
||||
req_tech = list("engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/mining_equipment_vendor
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/tesla_coil
|
||||
name = "Machine Design (Tesla Coil Board)"
|
||||
desc = "The circuit board for a tesla coil."
|
||||
id = "tesla_coil"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3, "magnets" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/tesla_coil
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/grounding_rod
|
||||
name = "Machine Design (Grounding Rod Board)"
|
||||
desc = "The circuit board for a grounding rod."
|
||||
id = "grounding_rod"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 3, "magnets" = 3, "plasmatech" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/grounding_rod
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
/datum/design/board/plantgenes
|
||||
name = "Machine Design (Plant DNA Manipulator Board)"
|
||||
desc = "The circuit board for a plant DNA manipulator."
|
||||
id = "plantgenes"
|
||||
req_tech = list("programming" = 4, "biotech" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/plantgenes
|
||||
category = list ("Misc. Machinery")
|
||||
@@ -0,0 +1,404 @@
|
||||
///////////////////////////////////
|
||||
//////////Mecha Module Disks///////
|
||||
///////////////////////////////////
|
||||
|
||||
/datum/design/board/ripley_main
|
||||
name = "APLU \"Ripley\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Ripley\" Central Control module."
|
||||
id = "ripley_main"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/ripley/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/ripley_peri
|
||||
name = "APLU \"Ripley\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Ripley\" Peripheral Control module."
|
||||
id = "ripley_peri"
|
||||
req_tech = list("programming" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
|
||||
/datum/design/board/odysseus_main
|
||||
name = "\"Odysseus\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Odysseus\" Central Control module."
|
||||
id = "odysseus_main"
|
||||
req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/odysseus_peri
|
||||
name = "\"Odysseus\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Odysseus\" Peripheral Control module."
|
||||
id = "odysseus_peri"
|
||||
req_tech = list("programming" = 3,"biotech" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
|
||||
/datum/design/board/gygax_main
|
||||
name = "\"Gygax\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Gygax\" Central Control module."
|
||||
id = "gygax_main"
|
||||
req_tech = list("programming" = 4, "combat" = 3, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/gygax/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/gygax_peri
|
||||
name = "\"Gygax\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Gygax\" Peripheral Control module."
|
||||
id = "gygax_peri"
|
||||
req_tech = list("programming" = 4, "combat" = 3, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/gygax_targ
|
||||
name = "\"Gygax\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"Gygax\" Weapons & Targeting Control module."
|
||||
id = "gygax_targ"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
|
||||
/datum/design/board/durand_main
|
||||
name = "\"Durand\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Durand\" Central Control module."
|
||||
id = "durand_main"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/durand/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/durand_peri
|
||||
name = "\"Durand\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Durand\" Peripheral Control module."
|
||||
id = "durand_peri"
|
||||
req_tech = list("programming" = 4, "combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/durand_targ
|
||||
name = "\"Durand\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"Durand\" Weapons & Targeting Control module."
|
||||
id = "durand_targ"
|
||||
req_tech = list("programming" = 5, "combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
|
||||
/datum/design/board/honker_main
|
||||
name = "\"H.O.N.K\" Central Control module"
|
||||
desc = "Allows for the construction of a \"H.O.N.K\" Central Control module."
|
||||
id = "honker_main"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/honker/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/honker_peri
|
||||
name = "\"H.O.N.K\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module."
|
||||
id = "honker_peri"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/honker_targ
|
||||
name = "\"H.O.N.K\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module."
|
||||
id = "honker_targ"
|
||||
req_tech = list("programming" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
|
||||
/datum/design/board/phazon_main
|
||||
name = "\"Phazon\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Central Control module."
|
||||
id = "phazon_main"
|
||||
req_tech = list("programming" = 6, "materials" = 6, "plasmatech" = 5)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/phazon/main
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/phazon_peri
|
||||
name = "\"Phazon\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Peripheral Control module."
|
||||
id = "phazon_peri"
|
||||
req_tech = list("programming" = 6, "bluespace" = 5, "plasmatech" = 5)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/phazon/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
/datum/design/board/phazon_targ
|
||||
name = "\"Phazon\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module."
|
||||
id = "phazon_targ"
|
||||
req_tech = list("programming" = 6, "magnets" = 5, "plasmatech" = 5)
|
||||
build_path = /obj/item/weapon/circuitboard/mecha/phazon/targeting
|
||||
category = list("Exosuit Modules")
|
||||
|
||||
////////////////////////////////////////
|
||||
/////////// Mecha Equpment /////////////
|
||||
////////////////////////////////////////
|
||||
|
||||
/datum/design/mech_scattershot
|
||||
name = "Exosuit Weapon (LBX AC 10 \"Scattershot\")"
|
||||
desc = "Allows for the construction of LBX AC 10."
|
||||
id = "mech_scattershot"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_carbine
|
||||
name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)"
|
||||
desc = "Allows for the construction of FNX-99 \"Hades\" Carbine."
|
||||
id = "mech_carbine"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 5, "materials" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_ion
|
||||
name = "Exosuit Weapon (MKIV Ion Heavy Cannon)"
|
||||
desc = "Allows for the construction of MKIV Ion Heavy Cannon."
|
||||
id = "mech_ion"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 6, "magnets" = 5, "materials" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
|
||||
materials = list(MAT_METAL=20000,MAT_SILVER=6000,MAT_URANIUM=2000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_laser
|
||||
name = "Exosuit Weapon (CH-PS \"Immolator\" Laser)"
|
||||
desc = "Allows for the construction of CH-PS Laser."
|
||||
id = "mech_laser"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 3, "magnets" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_laser_heavy
|
||||
name = "Exosuit Weapon (CH-LC \"Solaris\" Laser Cannon)"
|
||||
desc = "Allows for the construction of CH-LC Laser Cannon."
|
||||
id = "mech_laser_heavy"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4, "magnets" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_grenade_launcher
|
||||
name = "Exosuit Weapon (SGL-6 Grenade Launcher)"
|
||||
desc = "Allows for the construction of SGL-6 Grenade Launcher."
|
||||
id = "mech_grenade_launcher"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang
|
||||
materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_missile_rack
|
||||
name = "Exosuit Weapon (SRM-8 Missile Rack)"
|
||||
desc = "Allows for the construction of SRM-8 Missile Rack."
|
||||
id = "mech_missile_rack"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 6, "materials" = 5, "engineering" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/missile_rack
|
||||
materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/clusterbang_launcher
|
||||
name = "Exosuit Module (SOB-3 Clusterbang Launcher)"
|
||||
desc = "A weapon that violates the Geneva Convention at 3 rounds per minute"
|
||||
id = "clusterbang_launcher"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat"= 5, "materials" = 5, "syndicate" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang
|
||||
materials = list(MAT_METAL=20000,MAT_GOLD=10000,MAT_URANIUM=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_wormhole_gen
|
||||
name = "Exosuit Module (Localized Wormhole Generator)"
|
||||
desc = "An exosuit module that allows generating of small quasi-stable wormholes."
|
||||
id = "mech_wormhole_gen"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("bluespace" = 4, "magnets" = 4, "plasmatech" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_teleporter
|
||||
name = "Exosuit Module (Teleporter Module)"
|
||||
desc = "An exosuit module that allows exosuits to teleport to any position in view."
|
||||
id = "mech_teleporter"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("bluespace" = 8, "magnets" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/teleporter
|
||||
materials = list(MAT_METAL=10000,MAT_DIAMOND=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_rcd
|
||||
name = "Exosuit Module (RCD Module)"
|
||||
desc = "An exosuit-mounted Rapid Construction Device."
|
||||
id = "mech_rcd"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("materials" = 5, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/rcd
|
||||
materials = list(MAT_METAL=30000,MAT_GOLD=20000,MAT_PLASMA=25000,MAT_SILVER=20000)
|
||||
construction_time = 1200
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_gravcatapult
|
||||
name = "Exosuit Module (Gravitational Catapult Module)"
|
||||
desc = "An exosuit mounted Gravitational Catapult."
|
||||
id = "mech_gravcatapult"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("bluespace" = 4, "magnets" = 3, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_repair_droid
|
||||
name = "Exosuit Module (Repair Droid Module)"
|
||||
desc = "Automated Repair Droid. BEEP BOOP"
|
||||
id = "mech_repair_droid"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 5)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_GOLD=1000,MAT_SILVER=2000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_energy_relay
|
||||
name = "Exosuit Module (Tesla Energy Relay)"
|
||||
desc = "Tesla Energy Relay"
|
||||
id = "mech_energy_relay"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("magnets" = 4, "powerstorage" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=2000,MAT_GOLD=2000,MAT_SILVER=3000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_ccw_armor
|
||||
name = "Exosuit Module (Reactive Armor Booster Module)"
|
||||
desc = "Exosuit-mounted armor booster."
|
||||
id = "mech_ccw_armor"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("materials" = 5, "combat" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster
|
||||
materials = list(MAT_METAL=20000,MAT_SILVER=5000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_proj_armor
|
||||
name = "Exosuit Module (Reflective Armor Booster Module)"
|
||||
desc = "Exosuit-mounted armor booster."
|
||||
id = "mech_proj_armor"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("materials" = 5, "combat" = 5, "engineering"=3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
|
||||
materials = list(MAT_METAL=20000,MAT_GOLD=5000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_diamond_drill
|
||||
name = "Exosuit Module (Diamond Mining Drill)"
|
||||
desc = "An upgraded version of the standard drill."
|
||||
id = "mech_diamond_drill"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("materials" = 5, "engineering" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill
|
||||
materials = list(MAT_METAL=10000,MAT_DIAMOND=6500)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_generator_nuclear
|
||||
name = "Exosuit Module (ExoNuclear Reactor)"
|
||||
desc = "Compact nuclear reactor module."
|
||||
id = "mech_generator_nuclear"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("powerstorage"= 5, "engineering" = 4, "materials" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=500)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_plasma_cutter
|
||||
name = "Exosuit Module Design (217-D Heavy Plasma Cutter)"
|
||||
desc = "A device that shoots resonant plasma bursts at extreme velocity. The blasts are capable of crushing rock and demolishing solid obstacles."
|
||||
id = "mech_plasma_cutter"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("engineering" = 3, "materials" = 3, "plasmatech" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1000, MAT_PLASMA = 2000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_taser
|
||||
name = "Exosuit Weapon (PBT \"Pacifier\" Mounted Taser)"
|
||||
desc = "A weapon for combat exosuits. Shoots non-lethal stunning electrodes."
|
||||
id = "mech_taser"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 3)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_lmg
|
||||
name = "Exosuit Weapon (\"Ultra AC 2\" LMG)"
|
||||
desc = "A weapon for combat exosuits. Shoots a rapid, three shot burst."
|
||||
id = "mech_lmg"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_sleeper
|
||||
name = "Exosuit Medical Equipment (Mounted Sleeper)"
|
||||
desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves."
|
||||
id = "mech_sleeper"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("biotech" = 3, "engineering" = 3, "plasmatech" = 2)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper
|
||||
materials = list(MAT_METAL=5000,MAT_GLASS=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_syringe_gun
|
||||
name = "Exosuit Medical Equipment (Syringe Gun)"
|
||||
desc = "Equipment for medical exosuits. A chem synthesizer with syringe gun. Reagents inside are held in stasis, so no reactions will occur."
|
||||
id = "mech_syringe_gun"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("magnets" = 4,"biotech" = 4, "combat" = 3, "materials" = 4)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun
|
||||
materials = list(MAT_METAL=3000,MAT_GLASS=2000)
|
||||
construction_time = 200
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_medical_beamgun
|
||||
name = "Exosuit Medical Equipment (Medical Beamgun)"
|
||||
desc = "Equipment for medical exosuits. A mounted medical nanite projector which will treat patients with a focused beam."
|
||||
id = "mech_medi_beam"
|
||||
req_tech = list("engineering" = 6, "materials" = 7, "powerstorage" = 5, "biotech" = 6)
|
||||
build_type = MECHFAB
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000)
|
||||
construction_time = 250
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam
|
||||
category = list("Exosuit Equipment")
|
||||
@@ -0,0 +1,721 @@
|
||||
//Cyborg
|
||||
/datum/design/borg_suit
|
||||
name = "Cyborg Endoskeleton"
|
||||
id = "borg_suit"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/robot_parts/robot_suit
|
||||
materials = list(MAT_METAL=15000)
|
||||
construction_time = 500
|
||||
category = list("Cyborg")
|
||||
|
||||
/datum/design/borg_chest
|
||||
name = "Cyborg Torso"
|
||||
id = "borg_chest"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/robot_parts/chest
|
||||
materials = list(MAT_METAL=40000)
|
||||
construction_time = 350
|
||||
category = list("Cyborg")
|
||||
|
||||
/datum/design/borg_head
|
||||
name = "Cyborg Head"
|
||||
id = "borg_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/robot_parts/head
|
||||
materials = list(MAT_METAL=5000)
|
||||
construction_time = 350
|
||||
category = list("Cyborg")
|
||||
|
||||
/datum/design/borg_l_arm
|
||||
name = "Cyborg Left Arm"
|
||||
id = "borg_l_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/robot_parts/l_arm
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 200
|
||||
category = list("Cyborg")
|
||||
|
||||
/datum/design/borg_r_arm
|
||||
name = "Cyborg Right Arm"
|
||||
id = "borg_r_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/robot_parts/r_arm
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 200
|
||||
category = list("Cyborg")
|
||||
|
||||
/datum/design/borg_l_leg
|
||||
name = "Cyborg Left Leg"
|
||||
id = "borg_l_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/robot_parts/l_leg
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 200
|
||||
category = list("Cyborg")
|
||||
|
||||
/datum/design/borg_r_leg
|
||||
name = "Cyborg Right Leg"
|
||||
id = "borg_r_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/robot_parts/r_leg
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 200
|
||||
category = list("Cyborg")
|
||||
|
||||
//Ripley
|
||||
/datum/design/ripley_chassis
|
||||
name = "Exosuit Chassis (APLU \"Ripley\")"
|
||||
id = "ripley_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/ripley
|
||||
materials = list(MAT_METAL=20000)
|
||||
construction_time = 100
|
||||
category = list("Ripley")
|
||||
|
||||
//firefighter subtype
|
||||
/datum/design/firefighter_chassis
|
||||
name = "Exosuit Chassis (APLU \"Firefighter\")"
|
||||
id = "firefighter_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/firefighter
|
||||
materials = list(MAT_METAL=20000)
|
||||
construction_time = 100
|
||||
category = list("Firefighter")
|
||||
|
||||
/datum/design/ripley_torso
|
||||
name = "Exosuit Torso (APLU \"Ripley\")"
|
||||
id = "ripley_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_torso
|
||||
materials = list(MAT_METAL=20000, MAT_GLASS=7500)
|
||||
construction_time = 200
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
/datum/design/ripley_left_arm
|
||||
name = "Exosuit Left Arm (APLU \"Ripley\")"
|
||||
id = "ripley_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_left_arm
|
||||
materials = list(MAT_METAL=15000)
|
||||
construction_time = 150
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
/datum/design/ripley_right_arm
|
||||
name = "Exosuit Right Arm (APLU \"Ripley\")"
|
||||
id = "ripley_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_right_arm
|
||||
materials = list(MAT_METAL=15000)
|
||||
construction_time = 150
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
/datum/design/ripley_left_leg
|
||||
name = "Exosuit Left Leg (APLU \"Ripley\")"
|
||||
id = "ripley_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_left_leg
|
||||
materials = list(MAT_METAL=15000)
|
||||
construction_time = 150
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
/datum/design/ripley_right_leg
|
||||
name = "Exosuit Right Leg (APLU \"Ripley\")"
|
||||
id = "ripley_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_right_leg
|
||||
materials = list(MAT_METAL=15000)
|
||||
construction_time = 150
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
//Odysseus
|
||||
/datum/design/odysseus_chassis
|
||||
name = "Exosuit Chassis (\"Odysseus\")"
|
||||
id = "odysseus_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/odysseus
|
||||
materials = list(MAT_METAL=20000)
|
||||
construction_time = 100
|
||||
category = list("Odysseus")
|
||||
|
||||
/datum/design/odysseus_torso
|
||||
name = "Exosuit Torso (\"Odysseus\")"
|
||||
id = "odysseus_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_torso
|
||||
materials = list(MAT_METAL=12000)
|
||||
construction_time = 180
|
||||
category = list("Odysseus")
|
||||
|
||||
/datum/design/odysseus_head
|
||||
name = "Exosuit Head (\"Odysseus\")"
|
||||
id = "odysseus_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_head
|
||||
materials = list(MAT_METAL=6000,MAT_GLASS=10000)
|
||||
construction_time = 100
|
||||
category = list("Odysseus")
|
||||
|
||||
/datum/design/odysseus_left_arm
|
||||
name = "Exosuit Left Arm (\"Odysseus\")"
|
||||
id = "odysseus_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
|
||||
materials = list(MAT_METAL=6000)
|
||||
construction_time = 120
|
||||
category = list("Odysseus")
|
||||
|
||||
/datum/design/odysseus_right_arm
|
||||
name = "Exosuit Right Arm (\"Odysseus\")"
|
||||
id = "odysseus_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
|
||||
materials = list(MAT_METAL=6000)
|
||||
construction_time = 120
|
||||
category = list("Odysseus")
|
||||
|
||||
/datum/design/odysseus_left_leg
|
||||
name = "Exosuit Left Leg (\"Odysseus\")"
|
||||
id = "odysseus_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
|
||||
materials = list(MAT_METAL=7000)
|
||||
construction_time = 130
|
||||
category = list("Odysseus")
|
||||
|
||||
/datum/design/odysseus_right_leg
|
||||
name = "Exosuit Right Leg (\"Odysseus\")"
|
||||
id = "odysseus_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
|
||||
materials = list(MAT_METAL=7000)
|
||||
construction_time = 130
|
||||
category = list("Odysseus")
|
||||
|
||||
/*/datum/design/odysseus_armor
|
||||
name = "Exosuit Armor (\"Odysseus\")"
|
||||
id = "odysseus_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_armor
|
||||
materials = list(MAT_METAL=15000)
|
||||
construction_time = 200
|
||||
category = list("Odysseus")
|
||||
*/
|
||||
|
||||
//Gygax
|
||||
/datum/design/gygax_chassis
|
||||
name = "Exosuit Chassis (\"Gygax\")"
|
||||
id = "gygax_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/gygax
|
||||
materials = list(MAT_METAL=20000)
|
||||
construction_time = 100
|
||||
category = list("Gygax")
|
||||
|
||||
/datum/design/gygax_torso
|
||||
name = "Exosuit Torso (\"Gygax\")"
|
||||
id = "gygax_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_torso
|
||||
materials = list(MAT_METAL=20000,MAT_GLASS=10000,MAT_DIAMOND=2000)
|
||||
construction_time = 300
|
||||
category = list("Gygax")
|
||||
|
||||
/datum/design/gygax_head
|
||||
name = "Exosuit Head (\"Gygax\")"
|
||||
id = "gygax_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_head
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=5000, MAT_DIAMOND=2000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
/datum/design/gygax_left_arm
|
||||
name = "Exosuit Left Arm (\"Gygax\")"
|
||||
id = "gygax_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_left_arm
|
||||
materials = list(MAT_METAL=15000, MAT_DIAMOND=1000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
/datum/design/gygax_right_arm
|
||||
name = "Exosuit Right Arm (\"Gygax\")"
|
||||
id = "gygax_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_right_arm
|
||||
materials = list(MAT_METAL=15000, MAT_DIAMOND=1000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
/datum/design/gygax_left_leg
|
||||
name = "Exosuit Left Leg (\"Gygax\")"
|
||||
id = "gygax_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_left_leg
|
||||
materials = list(MAT_METAL=15000, MAT_DIAMOND=2000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
/datum/design/gygax_right_leg
|
||||
name = "Exosuit Right Leg (\"Gygax\")"
|
||||
id = "gygax_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_right_leg
|
||||
materials = list(MAT_METAL=15000, MAT_DIAMOND=2000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
/datum/design/gygax_armor
|
||||
name = "Exosuit Armor (\"Gygax\")"
|
||||
id = "gygax_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_armor
|
||||
materials = list(MAT_METAL=25000,MAT_DIAMOND=10000)
|
||||
construction_time = 600
|
||||
category = list("Gygax")
|
||||
|
||||
//Durand
|
||||
/datum/design/durand_chassis
|
||||
name = "Exosuit Chassis (\"Durand\")"
|
||||
id = "durand_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/durand
|
||||
materials = list(MAT_METAL=25000)
|
||||
construction_time = 100
|
||||
category = list("Durand")
|
||||
|
||||
/datum/design/durand_torso
|
||||
name = "Exosuit Torso (\"Durand\")"
|
||||
id = "durand_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_torso
|
||||
materials = list(MAT_METAL=25000,MAT_GLASS=10000,MAT_SILVER=10000)
|
||||
construction_time = 300
|
||||
category = list("Durand")
|
||||
|
||||
/datum/design/durand_head
|
||||
name = "Exosuit Head (\"Durand\")"
|
||||
id = "durand_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_head
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_SILVER=2000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
/datum/design/durand_left_arm
|
||||
name = "Exosuit Left Arm (\"Durand\")"
|
||||
id = "durand_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_left_arm
|
||||
materials = list(MAT_METAL=10000,MAT_SILVER=4000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
/datum/design/durand_right_arm
|
||||
name = "Exosuit Right Arm (\"Durand\")"
|
||||
id = "durand_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_right_arm
|
||||
materials = list(MAT_METAL=10000,MAT_SILVER=4000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
/datum/design/durand_left_leg
|
||||
name = "Exosuit Left Leg (\"Durand\")"
|
||||
id = "durand_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_left_leg
|
||||
materials = list(MAT_METAL=15000,MAT_SILVER=4000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
/datum/design/durand_right_leg
|
||||
name = "Exosuit Right Leg (\"Durand\")"
|
||||
id = "durand_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_right_leg
|
||||
materials = list(MAT_METAL=15000,MAT_SILVER=4000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
/datum/design/durand_armor
|
||||
name = "Exosuit Armor (\"Durand\")"
|
||||
id = "durand_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_armor
|
||||
materials = list(MAT_METAL=50000,MAT_URANIUM=30000)
|
||||
construction_time = 600
|
||||
category = list("Durand")
|
||||
|
||||
//H.O.N.K
|
||||
/datum/design/honk_chassis
|
||||
name = "Exosuit Chassis (\"H.O.N.K\")"
|
||||
id = "honk_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/honker
|
||||
materials = list(MAT_METAL=20000)
|
||||
construction_time = 100
|
||||
category = list("H.O.N.K")
|
||||
|
||||
/datum/design/honk_torso
|
||||
name = "Exosuit Torso (\"H.O.N.K\")"
|
||||
id = "honk_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_torso
|
||||
materials = list(MAT_METAL=20000,MAT_GLASS=10000,MAT_BANANIUM=10000)
|
||||
construction_time = 300
|
||||
category = list("H.O.N.K")
|
||||
|
||||
/datum/design/honk_head
|
||||
name = "Exosuit Head (\"H.O.N.K\")"
|
||||
id = "honk_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_head
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_BANANIUM=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
/datum/design/honk_left_arm
|
||||
name = "Exosuit Left Arm (\"H.O.N.K\")"
|
||||
id = "honk_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_left_arm
|
||||
materials = list(MAT_METAL=15000,MAT_BANANIUM=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
/datum/design/honk_right_arm
|
||||
name = "Exosuit Right Arm (\"H.O.N.K\")"
|
||||
id = "honk_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_right_arm
|
||||
materials = list(MAT_METAL=15000,MAT_BANANIUM=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
/datum/design/honk_left_leg
|
||||
name = "Exosuit Left Leg (\"H.O.N.K\")"
|
||||
id = "honk_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path =/obj/item/mecha_parts/part/honker_left_leg
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
/datum/design/honk_right_leg
|
||||
name = "Exosuit Right Leg (\"H.O.N.K\")"
|
||||
id = "honk_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_right_leg
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
|
||||
//Phazon
|
||||
/datum/design/phazon_chassis
|
||||
name = "Exosuit Chassis (\"Phazon\")"
|
||||
id = "phazon_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/phazon
|
||||
materials = list(MAT_METAL=20000)
|
||||
construction_time = 100
|
||||
category = list("Phazon")
|
||||
|
||||
/datum/design/phazon_torso
|
||||
name = "Exosuit Torso (\"Phazon\")"
|
||||
id = "phazon_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_torso
|
||||
materials = list(MAT_METAL=35000,MAT_GLASS=10000,MAT_PLASMA=20000)
|
||||
construction_time = 300
|
||||
category = list("Phazon")
|
||||
|
||||
/datum/design/phazon_head
|
||||
name = "Exosuit Head (\"Phazon\")"
|
||||
id = "phazon_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_head
|
||||
materials = list(MAT_METAL=15000,MAT_GLASS=5000,MAT_PLASMA=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
/datum/design/phazon_left_arm
|
||||
name = "Exosuit Left Arm (\"Phazon\")"
|
||||
id = "phazon_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_left_arm
|
||||
materials = list(MAT_METAL=20000,MAT_PLASMA=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
/datum/design/phazon_right_arm
|
||||
name = "Exosuit Right Arm (\"Phazon\")"
|
||||
id = "phazon_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_right_arm
|
||||
materials = list(MAT_METAL=20000,MAT_PLASMA=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
/datum/design/phazon_left_leg
|
||||
name = "Exosuit Left Leg (\"Phazon\")"
|
||||
id = "phazon_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_left_leg
|
||||
materials = list(MAT_METAL=20000,MAT_PLASMA=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
/datum/design/phazon_right_leg
|
||||
name = "Exosuit Right Leg (\"Phazon\")"
|
||||
id = "phazon_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_right_leg
|
||||
materials = list(MAT_METAL=20000,MAT_PLASMA=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
/datum/design/phazon_armor
|
||||
name = "Exosuit Armor (\"Phazon\")"
|
||||
id = "phazon_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_armor
|
||||
materials = list(MAT_METAL=45000,MAT_PLASMA=30000)
|
||||
construction_time = 300
|
||||
category = list("Phazon")
|
||||
|
||||
//Exosuit Equipment
|
||||
/datum/design/mech_hydraulic_clamp
|
||||
name = "Exosuit Engineering Equipment (Hydraulic Clamp)"
|
||||
id = "mech_hydraulic_clamp"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_drill
|
||||
name = "Exosuit Engineering Equipment (Drill)"
|
||||
id = "mech_drill"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/drill
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_mining_scanner
|
||||
name = "Exosuit Engineering Equipement (Mining Scanner)"
|
||||
id = "mech_mscanner"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/mining_scanner
|
||||
materials = list(MAT_METAL=5000,MAT_GLASS=2500)
|
||||
construction_time = 50
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_extinguisher
|
||||
name = "Exosuit Engineering Equipment (Extinguisher)"
|
||||
id = "mech_extinguisher"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/extinguisher
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_cable_layer
|
||||
name = "Exosuit Engineering Equipment (Cable Layer)"
|
||||
id = "mech_cable_layer"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/cable_layer
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_generator
|
||||
name = "Exosuit Equipment (Plasma Generator)"
|
||||
id = "mech_generator"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/generator
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=2000,MAT_PLASMA=5000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_mousetrap_mortar
|
||||
name = "H.O.N.K Mousetrap Mortar"
|
||||
id = "mech_mousetrap_mortar"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=5000)
|
||||
construction_time = 300
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_banana_mortar
|
||||
name = "H.O.N.K Banana Mortar"
|
||||
id = "mech_banana_mortar"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=5000)
|
||||
construction_time = 300
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_honker
|
||||
name = "HoNkER BlAsT 5000"
|
||||
id = "mech_honker"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=10000)
|
||||
construction_time = 500
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////Borg Upgrades//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/borg_upgrade_reset
|
||||
name = "Cyborg Upgrade (Module Reset Board)"
|
||||
id = "borg_upgrade_reset"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/reset
|
||||
materials = list(MAT_METAL=10000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_rename
|
||||
name = "Cyborg Upgrade (Rename Board)"
|
||||
id = "borg_upgrade_rename"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/rename
|
||||
materials = list(MAT_METAL=35000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_restart
|
||||
name = "Cyborg Upgrade (Emergency Reboot Board)"
|
||||
id = "borg_upgrade_restart"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/restart
|
||||
materials = list(MAT_METAL=60000 , MAT_GLASS=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_vtec
|
||||
name = "Cyborg Upgrade (VTEC Module)"
|
||||
id = "borg_upgrade_vtec"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/vtec
|
||||
req_tech = list("engineering" = 4, "materials" = 5, "programming" = 4)
|
||||
materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_URANIUM= 5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_thrusters
|
||||
name = "Cyborg Upgrade (Ion Thrusters)"
|
||||
id = "borg_upgrade_thrusters"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/thrusters
|
||||
req_tech = list("engineering" = 4, "powerstorage" = 4)
|
||||
materials = list(MAT_METAL=10000, MAT_PLASMA=5000, MAT_URANIUM = 6000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_disablercooler
|
||||
name = "Cyborg Upgrade (Rapid Disabler Cooling Module)"
|
||||
id = "borg_upgrade_disablercooler"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/disablercooler
|
||||
req_tech = list("combat" = 5, "powerstorage" = 4, "engineering" = 4)
|
||||
materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_GOLD= 2000, MAT_DIAMOND = 500)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_diamonddrill
|
||||
name = "Cyborg Upgrade (Diamond Drill)"
|
||||
id = "borg_upgrade_diamonddrill"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/ddrill
|
||||
req_tech = list("engineering" = 5, "materials" = 6)
|
||||
materials = list(MAT_METAL=10000, MAT_DIAMOND=2000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_holding
|
||||
name = "Cyborg Upgrade (Ore Satchel of Holding)"
|
||||
id = "borg_upgrade_holding"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/soh
|
||||
req_tech = list("engineering" = 4, "materials" = 4, "bluespace" = 4)
|
||||
materials = list(MAT_METAL = 10000, MAT_GOLD = 250, MAT_URANIUM = 500)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_hyperka
|
||||
name = "Cyborg Upgrade (Hyper-Kinetic Accelerator)"
|
||||
id = "borg_upgrade_hyperka"
|
||||
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
|
||||
build_type = MECHFAB //Reqs same as human Hyper KA
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/borg/upgrade/hyperka
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_lavaproof
|
||||
name = "Cyborg Upgrade (Lavaproof Tracks)"
|
||||
id = "borg_upgrade_lavaproof"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/lavaproof
|
||||
req_tech = list("plasmatech" = 4, "materials" = 4, "engineering" = 4)
|
||||
materials = list(MAT_METAL = 8000, MAT_PLASMA = 10000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_syndicate_module
|
||||
name = "Cyborg Upgrade (Illegal Modules)"
|
||||
id = "borg_syndicate_module"
|
||||
build_type = MECHFAB
|
||||
req_tech = list("combat" = 4, "syndicate" = 2)
|
||||
build_path = /obj/item/borg/upgrade/syndicate
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_DIAMOND = 10000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
/datum/design/borg_upgrade_selfrepair
|
||||
name = "Cyborg Upgrade (Self-repair)"
|
||||
id = "borg_upgrade_selfrepair"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/selfrepair
|
||||
req_tech = list("materials" = 4, "engineering" = 4)
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
//Misc
|
||||
/datum/design/mecha_tracking
|
||||
name = "Exosuit Tracking Beacon"
|
||||
id = "mecha_tracking"
|
||||
build_type = MECHFAB
|
||||
build_path =/obj/item/mecha_parts/mecha_tracking
|
||||
materials = list(MAT_METAL=500)
|
||||
construction_time = 50
|
||||
category = list("Misc")
|
||||
|
||||
/datum/design/drone_shell
|
||||
name = "Drone Shell"
|
||||
desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs."
|
||||
id = "drone_shell"
|
||||
req_tech = list("programming" = 2, "biotech" = 4)
|
||||
build_type = MECHFAB | PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 350)
|
||||
construction_time=150
|
||||
build_path = /obj/item/drone_shell
|
||||
category = list("Misc")
|
||||
|
||||
/datum/design/synthetic_flash
|
||||
name = "Flash"
|
||||
desc = "When a problem arises, SCIENCE is the solution."
|
||||
id = "sflash"
|
||||
req_tech = list("magnets" = 3, "combat" = 2)
|
||||
build_type = MECHFAB
|
||||
materials = list(MAT_METAL = 750, MAT_GLASS = 750)
|
||||
construction_time = 100
|
||||
build_path = /obj/item/device/assembly/flash/handheld
|
||||
category = list("Misc")
|
||||
@@ -0,0 +1,308 @@
|
||||
/////////////////////////////////////////
|
||||
////////////Medical Tools////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
|
||||
/datum/design/mass_spectrometer
|
||||
name = "Mass-Spectrometer"
|
||||
desc = "A device for analyzing chemicals in the blood."
|
||||
id = "mass_spectrometer"
|
||||
req_tech = list("magnets" = 2, "plasmatech" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
build_path = /obj/item/device/mass_spectrometer
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/adv_mass_spectrometer
|
||||
name = "Advanced Mass-Spectrometer"
|
||||
desc = "A device for analyzing chemicals in the blood and their quantities."
|
||||
id = "adv_mass_spectrometer"
|
||||
req_tech = list("biotech" = 3, "magnets" = 4, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 200)
|
||||
build_path = /obj/item/device/mass_spectrometer/adv
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/mmi
|
||||
name = "Man-Machine Interface"
|
||||
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity."
|
||||
id = "mmi"
|
||||
req_tech = list("programming" = 3, "biotech" = 2, "engineering" = 2)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
construction_time = 75
|
||||
build_path = /obj/item/device/mmi
|
||||
category = list("Misc","Medical Designs")
|
||||
|
||||
/datum/design/posibrain
|
||||
name = "Positronic Brain"
|
||||
desc = "The latest in Artificial Intelligences."
|
||||
id = "mmi_posi"
|
||||
req_tech = list("programming" = 5, "biotech" = 4, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG.
|
||||
construction_time = 75
|
||||
build_path = /obj/item/device/mmi/posibrain
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/bluespacebeaker
|
||||
name = "Bluespace Beaker"
|
||||
desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units."
|
||||
id = "bluespacebeaker"
|
||||
req_tech = list("bluespace" = 6, "materials" = 5, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 500)
|
||||
build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/noreactbeaker
|
||||
name = "Cryostasis Beaker"
|
||||
desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
|
||||
id = "splitbeaker"
|
||||
req_tech = list("materials" = 3, "engineering" = 3, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/bluespacesyringe
|
||||
name = "Bluespace Syringe"
|
||||
desc = "An advanced syringe that can hold 60 units of chemicals"
|
||||
id = "bluespacesyringe"
|
||||
req_tech = list("bluespace" = 5, "materials" = 4, "biotech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 4000, MAT_PLASMA = 2000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/weapon/reagent_containers/syringe/bluespace
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/noreactsyringe
|
||||
name = "Cryo Syringe"
|
||||
desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units."
|
||||
id = "noreactsyringe"
|
||||
req_tech = list("materials" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 4000, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/weapon/reagent_containers/syringe/noreact
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/piercesyringe
|
||||
name = "Piercing Syringe"
|
||||
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
|
||||
id = "piercesyringe"
|
||||
req_tech = list("materials" = 5, "combat" = 3, "engineering" = 7)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 4000, MAT_DIAMOND = 1500)
|
||||
build_path = /obj/item/weapon/reagent_containers/syringe/piercing
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/bluespacebodybag
|
||||
name = "Bluespace body bag"
|
||||
desc = "A bluespace body bag, powered by experimental bluespace technology. It can hold loads of bodies and the largest of creatures."
|
||||
id = "bluespacebodybag"
|
||||
req_tech = list("bluespace" = 5, "materials" = 4, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_PLASMA = 2000, MAT_DIAMOND = 500)
|
||||
build_path = /obj/item/bodybag/bluespace
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/plasmarefiller
|
||||
name = "Plasma-man jumpsuit refill"
|
||||
desc = "A refill pack for the auto-extinguisher on Plasma-man suits."
|
||||
id = "plasmarefiller"
|
||||
req_tech = list("materials" = 2, "plasmatech" = 3) //Why did this have no plasmatech
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 1000)
|
||||
build_path = /obj/item/device/extinguisher_refill
|
||||
category = list("Medical Designs")
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////Cybernetic Implants////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/cyberimp_welding
|
||||
name = "Welding Shield implant"
|
||||
desc = "These reactive micro-shields will protect you from welders and flashes without obscuring your vision."
|
||||
id = "ci-welding"
|
||||
req_tech = list("materials" = 4, "biotech" = 4, "engineering" = 5, "plasmatech" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 400)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/shield
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_breather
|
||||
name = "Breathing Tube implant"
|
||||
desc = "This simple implant adds an internals connector to your back, allowing you to use internals without a mask and protecting you from being choked."
|
||||
id = "ci-breather"
|
||||
req_tech = list("materials" = 2, "biotech" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 35
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 250)
|
||||
build_path = /obj/item/organ/cyberimp/mouth/breathing_tube
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_toolset
|
||||
name = "Toolset Arm implant"
|
||||
desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm."
|
||||
id = "ci-toolset"
|
||||
req_tech = list("materials" = 3, "engineering" = 4, "biotech" = 4, "powerstorage" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
|
||||
construction_time = 200
|
||||
build_path = /obj/item/organ/cyberimp/arm/toolset
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_medical_hud
|
||||
name = "Medical HUD implant"
|
||||
desc = "These cybernetic eyes will display a medical HUD over everything you see. Wiggle eyes to control."
|
||||
id = "ci-medhud"
|
||||
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/hud/medical
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_security_hud
|
||||
name = "Security HUD implant"
|
||||
desc = "These cybernetic eyes will display a security HUD over everything you see. Wiggle eyes to control."
|
||||
id = "ci-sechud"
|
||||
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 4, "combat" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 750, MAT_GOLD = 750)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/hud/security
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_xray
|
||||
name = "X-Ray implant"
|
||||
desc = "These cybernetic eyes will give you X-ray vision. Blinking is futile."
|
||||
id = "ci-xray"
|
||||
req_tech = list("materials" = 7, "programming" = 5, "biotech" = 7, "magnets" = 5,"plasmatech" = 6)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/xray
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_thermals
|
||||
name = "Thermals implant"
|
||||
desc = "These cybernetic eyes will give you Thermal vision. Vertical slit pupil included."
|
||||
id = "ci-thermals"
|
||||
req_tech = list("materials" = 6, "programming" = 4, "biotech" = 7, "magnets" = 5,"plasmatech" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/thermals
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_antidrop
|
||||
name = "Anti-Drop implant"
|
||||
desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle."
|
||||
id = "ci-antidrop"
|
||||
req_tech = list("materials" = 5, "programming" = 6, "biotech" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400)
|
||||
build_path = /obj/item/organ/cyberimp/brain/anti_drop
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_antistun
|
||||
name = "CNS Rebooter implant"
|
||||
desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned."
|
||||
id = "ci-antistun"
|
||||
req_tech = list("materials" = 6, "programming" = 5, "biotech" = 6)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/organ/cyberimp/brain/anti_stun
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_nutriment
|
||||
name = "Nutriment pump implant"
|
||||
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
|
||||
id = "ci-nutriment"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 6, "biotech" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500, MAT_URANIUM = 500)
|
||||
build_path = /obj/item/organ/cyberimp/chest/nutriment
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_nutriment_plus
|
||||
name = "Nutriment pump implant PLUS"
|
||||
desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry."
|
||||
id = "ci-nutrimentplus"
|
||||
req_tech = list("materials" = 5, "powerstorage" = 6, "biotech" = 6)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750)
|
||||
build_path = /obj/item/organ/cyberimp/chest/nutriment/plus
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_reviver
|
||||
name = "Reviver implant"
|
||||
desc = "This implant will attempt to revive you if you lose consciousness. For the faint of heart!"
|
||||
id = "ci-reviver"
|
||||
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 8)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 500, MAT_URANIUM = 1000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/organ/cyberimp/chest/reviver
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
/datum/design/cyberimp_thrusters
|
||||
name = "Thrusters set implant"
|
||||
desc = "This implant will allow you to use gas from environment or your internals for propulsion in zero-gravity areas."
|
||||
id = "ci-thrusters"
|
||||
req_tech = list("materials" = 5, "biotech" = 5, "magnets" = 4, "engineering" = 7)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 80
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 1000)
|
||||
build_path = /obj/item/organ/cyberimp/chest/thrusters
|
||||
category = list("Misc", "Medical Designs")
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Regular Implants/////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/implanter
|
||||
name = "Implanter"
|
||||
desc = "A sterile automatic implant injector."
|
||||
id = "implanter"
|
||||
req_tech = list("materials" = 2, "biotech" = 3, "programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 200)
|
||||
build_path = /obj/item/weapon/implanter
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/implantcase
|
||||
name = "Implant Case"
|
||||
desc = "A glass case for containing an implant."
|
||||
id = "implantcase"
|
||||
req_tech = list("biotech" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
build_path = /obj/item/weapon/implantcase
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/implant_freedom
|
||||
name = "Freedom Implant Case"
|
||||
desc = "A glass case containing an implant."
|
||||
id = "implant_freedom"
|
||||
req_tech = list("combat" = 6, "biotech" = 5, "magnets" = 3, "syndicate" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 500, MAT_GOLD = 500)
|
||||
build_path = /obj/item/weapon/implantcase/freedom
|
||||
category = list("Medical Designs")
|
||||
|
||||
/datum/design/implant_adrenalin
|
||||
name = "Adrenalin Implant Case"
|
||||
desc = "A glass case containing an implant."
|
||||
id = "implant_adrenalin"
|
||||
req_tech = list("biotech" = 6, "combat" = 6, "syndicate" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_GOLD = 500, MAT_URANIUM = 600, MAT_DIAMOND = 600)
|
||||
build_path = /obj/item/weapon/implantcase/adrenaline
|
||||
category = list("Medical Designs")
|
||||
@@ -0,0 +1,91 @@
|
||||
////////////////////////////////////////
|
||||
//////////////////Power/////////////////
|
||||
////////////////////////////////////////
|
||||
|
||||
/datum/design/basic_cell
|
||||
name = "Basic Power Cell"
|
||||
desc = "A basic power cell that holds 1000 units of energy."
|
||||
id = "basic_cell"
|
||||
req_tech = list("powerstorage" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE |MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 50)
|
||||
construction_time=100
|
||||
build_path = /obj/item/weapon/stock_parts/cell
|
||||
category = list("Misc","Power Designs","Machinery","initial")
|
||||
|
||||
/datum/design/high_cell
|
||||
name = "High-Capacity Power Cell"
|
||||
desc = "A power cell that holds 10000 units of energy."
|
||||
id = "high_cell"
|
||||
req_tech = list("powerstorage" = 2)
|
||||
build_type = PROTOLATHE | AUTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 60)
|
||||
construction_time=100
|
||||
build_path = /obj/item/weapon/stock_parts/cell/high
|
||||
category = list("Misc","Power Designs")
|
||||
|
||||
/datum/design/super_cell
|
||||
name = "Super-Capacity Power Cell"
|
||||
desc = "A power cell that holds 20000 units of energy."
|
||||
id = "super_cell"
|
||||
req_tech = list("powerstorage" = 3, "materials" = 3)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 70)
|
||||
construction_time=100
|
||||
build_path = /obj/item/weapon/stock_parts/cell/super
|
||||
category = list("Misc","Power Designs")
|
||||
|
||||
/datum/design/hyper_cell
|
||||
name = "Hyper-Capacity Power Cell"
|
||||
desc = "A power cell that holds 30000 units of energy."
|
||||
id = "hyper_cell"
|
||||
req_tech = list("powerstorage" = 5, "materials" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 80)
|
||||
construction_time=100
|
||||
build_path = /obj/item/weapon/stock_parts/cell/hyper
|
||||
category = list("Misc","Power Designs")
|
||||
|
||||
/datum/design/bluespace_cell
|
||||
name = "Bluespace Power Cell"
|
||||
desc = "A power cell that holds 40000 units of energy."
|
||||
id = "bluespace_cell"
|
||||
req_tech = list("powerstorage" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 800, MAT_GOLD = 300, MAT_SILVER = 300, MAT_GLASS = 160, MAT_DIAMOND = 160)
|
||||
construction_time=100
|
||||
build_path = /obj/item/weapon/stock_parts/cell/bluespace
|
||||
category = list("Misc","Power Designs")
|
||||
|
||||
|
||||
/datum/design/light_replacer
|
||||
name = "Light Replacer"
|
||||
desc = "A device to automatically replace lights. Refill with working lightbulbs."
|
||||
id = "light_replacer"
|
||||
req_tech = list("magnets" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000)
|
||||
build_path = /obj/item/device/lightreplacer
|
||||
category = list("Power Designs")
|
||||
|
||||
/datum/design/board/pacman
|
||||
name = "Machine Design (PACMAN-type Generator Board)"
|
||||
desc = "The circuit board that for a PACMAN-type portable generator."
|
||||
id = "pacman"
|
||||
req_tech = list("programming" = 2, "plasmatech" = 3, "powerstorage" = 3, "engineering" = 3)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/pacman
|
||||
category = list("Engineering Machinery")
|
||||
|
||||
/datum/design/board/pacman/super
|
||||
name = "Machine Design (SUPERPACMAN-type Generator Board)"
|
||||
desc = "The circuit board that for a SUPERPACMAN-type portable generator."
|
||||
id = "superpacman"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 4, "engineering" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/pacman/super
|
||||
|
||||
/datum/design/board/pacman/mrs
|
||||
name = "Machine Design (MRSPACMAN-type Generator Board)"
|
||||
desc = "The circuit board that for a MRSPACMAN-type portable generator."
|
||||
id = "mrspacman"
|
||||
req_tech = list("programming" = 3, "powerstorage" = 5, "engineering" = 5, "plasmatech" = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/pacman/mrs
|
||||
@@ -0,0 +1,298 @@
|
||||
////////////////////////////////////////
|
||||
/////////////Stock Parts////////////////
|
||||
////////////////////////////////////////
|
||||
|
||||
/datum/design/RPED
|
||||
name = "Rapid Part Exchange Device"
|
||||
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
|
||||
id = "rped"
|
||||
req_tech = list("engineering" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000) //hardcore
|
||||
build_path = /obj/item/weapon/storage/part_replacer
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/BS_RPED
|
||||
name = "Bluespace RPED"
|
||||
desc = "Powered by bluespace technology, this RPED variant can upgrade buildings from a distance, without needing to remove the panel first."
|
||||
id = "bs_rped"
|
||||
req_tech = list("engineering" = 4, "bluespace" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 5000, MAT_SILVER = 2500) //hardcore
|
||||
build_path = /obj/item/weapon/storage/part_replacer/bluespace
|
||||
category = list("Stock Parts")
|
||||
|
||||
//Capacitors
|
||||
/datum/design/basic_capacitor
|
||||
name = "Basic Capacitor"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_capacitor"
|
||||
req_tech = list("powerstorage" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/capacitor
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
|
||||
/datum/design/adv_capacitor
|
||||
name = "Advanced Capacitor"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_capacitor"
|
||||
req_tech = list("powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
|
||||
build_path = /obj/item/weapon/stock_parts/capacitor/adv
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/super_capacitor
|
||||
name = "Super Capacitor"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "super_capacitor"
|
||||
req_tech = list("powerstorage" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/capacitor/super
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/quadratic_capacitor
|
||||
name = "Quadratic Capacitor"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "quadratic_capacitor"
|
||||
req_tech = list("powerstorage" = 6, "engineering" = 5, "materials" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/capacitor/quadratic
|
||||
category = list("Stock Parts")
|
||||
|
||||
//Scanning modules
|
||||
/datum/design/basic_scanning
|
||||
name = "Basic Scanning Module"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_scanning"
|
||||
req_tech = list("magnets" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
|
||||
build_path = /obj/item/weapon/stock_parts/scanning_module
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
|
||||
/datum/design/adv_scanning
|
||||
name = "Advanced Scanning Module"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_scanning"
|
||||
req_tech = list("magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/scanning_module/adv
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/phasic_scanning
|
||||
name = "Phasic Scanning Module"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "phasic_scanning"
|
||||
req_tech = list("magnets" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_SILVER = 60)
|
||||
build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/triphasic_scanning
|
||||
name = "Triphasic Scanning Module"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "triphasic_scanning"
|
||||
req_tech = list("magnets" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 60)
|
||||
build_path = /obj/item/weapon/stock_parts/scanning_module/triphasic
|
||||
category = list("Stock Parts")
|
||||
|
||||
//Maipulators
|
||||
/datum/design/micro_mani
|
||||
name = "Micro Manipulator"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "micro_mani"
|
||||
req_tech = list("materials" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/manipulator
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
|
||||
/datum/design/nano_mani
|
||||
name = "Nano Manipulator"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "nano_mani"
|
||||
req_tech = list("materials" = 3, "programming" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
build_path = /obj/item/weapon/stock_parts/manipulator/nano
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/pico_mani
|
||||
name = "Pico Manipulator"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "pico_mani"
|
||||
req_tech = list("materials" = 5, "programming" = 4, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/weapon/stock_parts/manipulator/pico
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/femto_mani
|
||||
name = "Femto Manipulator"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "femto_mani"
|
||||
req_tech = list("materials" = 7, "programming" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_DIAMOND = 60)
|
||||
build_path = /obj/item/weapon/stock_parts/manipulator/femto
|
||||
category = list("Stock Parts")
|
||||
|
||||
//Micro-lasers
|
||||
/datum/design/basic_micro_laser
|
||||
name = "Basic Micro-Laser"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_micro_laser"
|
||||
req_tech = list("magnets" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
|
||||
build_path = /obj/item/weapon/stock_parts/micro_laser
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
|
||||
/datum/design/high_micro_laser
|
||||
name = "High-Power Micro-Laser"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "high_micro_laser"
|
||||
req_tech = list("magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/micro_laser/high
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/ultra_micro_laser
|
||||
name = "Ultra-High-Power Micro-Laser"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "ultra_micro_laser"
|
||||
req_tech = list("magnets" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_URANIUM = 60)
|
||||
build_path = /obj/item/weapon/stock_parts/micro_laser/ultra
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/quadultra_micro_laser
|
||||
name = "Quad-Ultra Micro-Laser"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "quadultra_micro_laser"
|
||||
req_tech = list("magnets" = 6, "materials" = 5, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 100, MAT_DIAMOND = 60)
|
||||
build_path = /obj/item/weapon/stock_parts/micro_laser/quadultra
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/basic_matter_bin
|
||||
name = "Basic Matter Bin"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_matter_bin"
|
||||
req_tech = list("materials" = 1)
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/matter_bin
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
|
||||
/datum/design/adv_matter_bin
|
||||
name = "Advanced Matter Bin"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_matter_bin"
|
||||
req_tech = list("materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
build_path = /obj/item/weapon/stock_parts/matter_bin/adv
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/super_matter_bin
|
||||
name = "Super Matter Bin"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "super_matter_bin"
|
||||
req_tech = list("materials" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/weapon/stock_parts/matter_bin/super
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/bluespace_matter_bin
|
||||
name = "Bluespace Matter Bin"
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "bluespace_matter_bin"
|
||||
req_tech = list("materials" = 7, "engineering" = 5, "bluespace" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 250, MAT_DIAMOND = 200)
|
||||
build_path = /obj/item/weapon/stock_parts/matter_bin/bluespace
|
||||
category = list("Stock Parts")
|
||||
|
||||
//T-Comms devices
|
||||
/datum/design/subspace_ansible
|
||||
name = "Subspace Ansible"
|
||||
desc = "A compact module capable of sensing extradimensional activity."
|
||||
id = "s-ansible"
|
||||
req_tech = list("programming" = 2, "magnets" = 2, "materials" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/ansible
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/hyperwave_filter
|
||||
name = "Hyperwave Filter"
|
||||
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
||||
id = "s-filter"
|
||||
req_tech = list("programming" = 3, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/filter
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/subspace_amplifier
|
||||
name = "Subspace Amplifier"
|
||||
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
|
||||
id = "s-amplifier"
|
||||
req_tech = list("programming" = 3, "magnets" = 4, "materials" = 3, "bluespace" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GOLD = 100, MAT_URANIUM = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/amplifier
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/subspace_treatment
|
||||
name = "Subspace Treatment Disk"
|
||||
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
|
||||
id = "s-treatment"
|
||||
req_tech = list("programming" = 2, "magnets" = 3, "materials" = 2, "bluespace" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 200)
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/treatment
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/subspace_analyzer
|
||||
name = "Subspace Analyzer"
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
id = "s-analyzer"
|
||||
req_tech = list("programming" = 3, "magnets" = 4, "materials" = 2, "bluespace" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/analyzer
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/subspace_crystal
|
||||
name = "Ansible Crystal"
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
id = "s-crystal"
|
||||
req_tech = list("magnets" = 2, "materials" = 2, "bluespace" = 3, "plasmatech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 800, MAT_SILVER = 100, MAT_GOLD = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/crystal
|
||||
category = list("Stock Parts")
|
||||
|
||||
/datum/design/subspace_transmitter
|
||||
name = "Subspace Transmitter"
|
||||
desc = "A large piece of equipment used to open a window into the subspace dimension."
|
||||
id = "s-transmitter"
|
||||
req_tech = list("magnets" = 3, "materials" = 4, "bluespace" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 100, MAT_SILVER = 100, MAT_URANIUM = 100)
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/transmitter
|
||||
category = list("Stock Parts")
|
||||
@@ -0,0 +1,59 @@
|
||||
///////////////////////////////////
|
||||
/////Subspace Telecomms////////////
|
||||
///////////////////////////////////
|
||||
|
||||
/datum/design/board/subspace_receiver
|
||||
name = "Machine Design (Subspace Receiver)"
|
||||
desc = "Allows for the construction of Subspace Receiver equipment."
|
||||
id = "s-receiver"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telecomms/receiver
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
/datum/design/board/telecomms_bus
|
||||
name = "Machine Design (Bus Mainframe)"
|
||||
desc = "Allows for the construction of Telecommunications Bus Mainframes."
|
||||
id = "s-bus"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telecomms/bus
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
/datum/design/board/telecomms_hub
|
||||
name = "Machine Design (Hub Mainframe)"
|
||||
desc = "Allows for the construction of Telecommunications Hub Mainframes."
|
||||
id = "s-hub"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telecomms/hub
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
/datum/design/board/telecomms_relay
|
||||
name = "Machine Design (Relay Mainframe)"
|
||||
desc = "Allows for the construction of Telecommunications Relay Mainframes."
|
||||
id = "s-relay"
|
||||
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telecomms/relay
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
/datum/design/board/telecomms_processor
|
||||
name = "Machine Design (Processor Unit)"
|
||||
desc = "Allows for the construction of Telecommunications Processor equipment."
|
||||
id = "s-processor"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telecomms/processor
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
/datum/design/board/telecomms_server
|
||||
name = "Machine Design (Server Mainframe)"
|
||||
desc = "Allows for the construction of Telecommunications Servers."
|
||||
id = "s-server"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telecomms/server
|
||||
category = list("Subspace Telecomms")
|
||||
|
||||
/datum/design/board/subspace_broadcaster
|
||||
name = "Machine Design (Subspace Broadcaster)"
|
||||
desc = "Allows for the construction of Subspace Broadcasting equipment."
|
||||
id = "s-broadcaster"
|
||||
req_tech = list("programming" = 2, "engineering" = 2)
|
||||
build_path = /obj/item/weapon/circuitboard/machine/telecomms/broadcaster
|
||||
category = list("Subspace Telecomms")
|
||||
@@ -0,0 +1,271 @@
|
||||
/////////////////////////////////////////
|
||||
/////////////////Weapons/////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/pin_testing
|
||||
name = "test-range firing pin"
|
||||
desc = "This safety firing pin allows firearms to be operated within proximity to a firing range."
|
||||
id = "pin_testing"
|
||||
req_tech = list("combat" = 2, "materials" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 300)
|
||||
build_path = /obj/item/device/firing_pin/test_range
|
||||
category = list("Firing Pins")
|
||||
|
||||
/datum/design/pin_mindshield
|
||||
name = "mindshield firing pin"
|
||||
desc = "This is a security firing pin which only authorizes users who are mindshield-implanted."
|
||||
id = "pin_loyalty"
|
||||
req_tech = list("combat" = 5, "materials" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 600, MAT_DIAMOND = 600, MAT_URANIUM = 200)
|
||||
build_path = /obj/item/device/firing_pin/implant/mindshield
|
||||
category = list("Firing Pins")
|
||||
|
||||
/datum/design/stunrevolver
|
||||
name = "Tesla Revolver"
|
||||
desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers."
|
||||
id = "stunrevolver"
|
||||
req_tech = list("combat" = 4, "materials" = 4, "powerstorage" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 10000, MAT_SILVER = 10000)
|
||||
build_path = /obj/item/weapon/gun/energy/shock_revolver
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/nuclear_gun
|
||||
name = "Advanced Energy Gun"
|
||||
desc = "An energy gun with an experimental miniaturized reactor."
|
||||
id = "nuclear_gun"
|
||||
req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 4000)
|
||||
build_path = /obj/item/weapon/gun/energy/gun/nuclear
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/tele_shield
|
||||
name = "Telescopic Riot Shield"
|
||||
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
|
||||
id = "tele_shield"
|
||||
req_tech = list("combat" = 4, "materials" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 5000, MAT_SILVER = 300)
|
||||
build_path = /obj/item/weapon/shield/riot/tele
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/lasercannon
|
||||
name = "Accelerator Laser Cannon"
|
||||
desc = "A heavy duty laser cannon. It does more damage the farther away the target is."
|
||||
id = "lasercannon"
|
||||
req_tech = list("combat" = 5, "magnets" = 5, "powerstorage" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 3000, MAT_DIAMOND = 3000)
|
||||
build_path = /obj/item/weapon/gun/energy/lasercannon
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/decloner
|
||||
name = "Decloner"
|
||||
desc = "Your opponent will bubble into a messy pile of goop."
|
||||
id = "decloner"
|
||||
req_tech = list("combat" = 5, "materials" = 5, "biotech" = 6, "plasmatech" = 7)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000)
|
||||
reagents = list("mutagen" = 40)
|
||||
build_path = /obj/item/weapon/gun/energy/decloner
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/rapidsyringe
|
||||
name = "Rapid Syringe Gun"
|
||||
desc = "A gun that fires many syringes."
|
||||
id = "rapidsyringe"
|
||||
req_tech = list("combat" = 2, "biotech" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/weapon/gun/syringe/rapidsyringe
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/largecrossbow
|
||||
name = "Energy Crossbow"
|
||||
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
|
||||
id = "largecrossbow"
|
||||
req_tech = list("combat" = 5, "engineering" = 3, "magnets" = 5, "syndicate" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1500, MAT_URANIUM = 1500, MAT_SILVER = 1500)
|
||||
build_path = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/temp_gun
|
||||
name = "Temperature Gun"
|
||||
desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want
|
||||
id = "temp_gun"
|
||||
req_tech = list("combat" = 4, "materials" = 4, "powerstorage" = 3, "magnets" = 2)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000)
|
||||
build_path = /obj/item/weapon/gun/energy/temperature
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/flora_gun
|
||||
name = "Floral Somatoray"
|
||||
desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life."
|
||||
id = "flora_gun"
|
||||
req_tech = list("materials" = 2, "biotech" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 500)
|
||||
reagents = list("radium" = 20)
|
||||
build_path = /obj/item/weapon/gun/energy/floragun
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/large_grenade
|
||||
name = "Large Grenade"
|
||||
desc = "A grenade that affects a larger area and use larger containers."
|
||||
id = "large_Grenade"
|
||||
req_tech = list("combat" = 3, "engineering" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
build_path = /obj/item/weapon/grenade/chem_grenade/large
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/pyro_grenade
|
||||
name = "Pyro Grenade"
|
||||
desc = "An advanced grenade that is able to self ignite its mixture."
|
||||
id = "pyro_Grenade"
|
||||
req_tech = list("combat" = 4, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_PLASMA = 500)
|
||||
build_path = /obj/item/weapon/grenade/chem_grenade/pyro
|
||||
category = list("Weapons")
|
||||
|
||||
/* // Currently commented out, because it has no worthwhile useage yet.
|
||||
|
||||
/datum/design/cryo_grenade
|
||||
name = "Cryo Grenade"
|
||||
desc = "An advanced grenade that rapidly cools its contents upon detonation."
|
||||
id = "cryo_Grenade"
|
||||
req_tech = list("combat" = 3, "materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
build_path = /obj/item/weapon/grenade/chem_grenade/cryo
|
||||
category = list("Weapons")
|
||||
*/
|
||||
|
||||
/datum/design/adv_grenade
|
||||
name = "Advanced Release Grenade"
|
||||
desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter."
|
||||
id = "adv_Grenade"
|
||||
req_tech = list("combat" = 3, "engineering" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 500)
|
||||
build_path = /obj/item/weapon/grenade/chem_grenade/adv_release
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/xray
|
||||
name = "Xray Laser Gun"
|
||||
desc = "Not quite as menacing as it sounds"
|
||||
id = "xray"
|
||||
req_tech = list("combat" = 7, "magnets" = 5, "biotech" = 5, "powerstorage" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000, MAT_METAL = 5000)
|
||||
build_path = /obj/item/weapon/gun/energy/xray
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/ioncarbine
|
||||
name = "Ion Carbine"
|
||||
desc = "How to dismantle a cyborg : The gun."
|
||||
id = "ioncarbine"
|
||||
req_tech = list("combat" = 5, "magnets" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 6000, MAT_METAL = 8000, MAT_URANIUM = 2000)
|
||||
build_path = /obj/item/weapon/gun/energy/ionrifle/carbine
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/wormhole_projector
|
||||
name = "Bluespace Wormhole Projector"
|
||||
desc = "A projector that emits high density quantum-coupled bluespace beams."
|
||||
id = "wormholeprojector"
|
||||
req_tech = list("combat" = 5, "engineering" = 5, "bluespace" = 7, "plasmatech" = 6)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 2000, MAT_METAL = 5000, MAT_DIAMOND = 3000)
|
||||
build_path = /obj/item/weapon/gun/energy/wormhole_projector
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/reciever
|
||||
name = "Modular Receiver"
|
||||
desc = "A prototype modular receiver and trigger assembly for a variety of firearms."
|
||||
id = "reciever"
|
||||
req_tech = list("combat" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6500, MAT_SILVER = 500)
|
||||
build_path = /obj/item/weaponcrafting/reciever
|
||||
category = list("Weapons")
|
||||
|
||||
//WT550 Mags
|
||||
|
||||
/datum/design/mag_oldsmg
|
||||
name = "WT-550 Auto Gun Magazine (4.6x30mm)"
|
||||
desc = "A 20 round magazine for the out of date security WT-550 Auto Rifle"
|
||||
id = "mag_oldsmg"
|
||||
req_tech = list("combat" = 1, "materials" = 1)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9
|
||||
category = list("Ammo")
|
||||
|
||||
/datum/design/mag_oldsmg/ap_mag
|
||||
name = "WT-550 Auto Gun Armour Piercing Magazine (4.6x30mm AP)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle"
|
||||
id = "mag_oldsmg_ap"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtap
|
||||
|
||||
/datum/design/mag_oldsmg/ic_mag
|
||||
name = "WT-550 Auto Gun Incendiary Magazine (4.6x30mm IC)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle"
|
||||
id = "mag_oldsmg_ic"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
|
||||
|
||||
/datum/design/mag_oldsmg/tx_mag
|
||||
name = "WT-550 Auto Gun Uranium Magazine (4.6x30mm TX)"
|
||||
desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Auto Rifle"
|
||||
id = "mag_oldsmg_tx"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wttx
|
||||
|
||||
/datum/design/stunshell
|
||||
name = "Stun Shell"
|
||||
desc = "A stunning shell for a shotgun."
|
||||
id = "stunshell"
|
||||
req_tech = list("combat" = 3, "materials" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/stunslug
|
||||
category = list("Ammo")
|
||||
|
||||
/datum/design/techshell
|
||||
name = "Unloaded Technological Shotshell"
|
||||
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
|
||||
id = "techshotshell"
|
||||
req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 4, "magnets" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/techshell
|
||||
category = list("Ammo")
|
||||
|
||||
/datum/design/suppressor
|
||||
name = "Universal Suppressor"
|
||||
desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
|
||||
id = "suppressor"
|
||||
req_tech = list("combat" = 6, "engineering" = 5, "syndicate" = 3)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
build_path = /obj/item/weapon/suppressor
|
||||
category = list("Weapons")
|
||||
|
||||
/datum/design/gravitygun
|
||||
name = "one-point bluespace-gravitational manipulator"
|
||||
desc = "A multi-mode device that blasts one-point bluespace-gravitational bolts that locally distort gravity."
|
||||
id = "gravitygun"
|
||||
req_tech = list("combat" = 4, "materials" = 5, "bluespace" = 4, "powerstorage" = 4, "magnets" = 5)
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 8000, MAT_GOLD = 8000, MAT_URANIUM = 8000, MAT_GLASS = 12000, MAT_METAL = 12000, MAT_DIAMOND = 3000)
|
||||
build_path = /obj/item/weapon/gun/energy/gravity_gun
|
||||
category = list("Weapons")
|
||||
@@ -0,0 +1,69 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
|
||||
|
||||
/*
|
||||
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"
|
||||
desc = "Learn science by destroying things!"
|
||||
icon_state = "d_analyzer"
|
||||
var/decon_mod = 0
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/New()
|
||||
..()
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/destructive_analyzer(null)
|
||||
B.apply_default_parts(src)
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/destructive_analyzer
|
||||
name = "circuit board (Destructive Analyzer)"
|
||||
build_path = /obj/machinery/r_n_d/destructive_analyzer
|
||||
origin_tech = "magnets=2;engineering=2;programming=2"
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/scanning_module = 1,
|
||||
/obj/item/weapon/stock_parts/manipulator = 1,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 1)
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/RefreshParts()
|
||||
var/T = 0
|
||||
for(var/obj/item/weapon/stock_parts/S in component_parts)
|
||||
T += S.rating
|
||||
decon_mod = T
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/proc/ConvertReqString2List(list/source_list)
|
||||
var/list/temp_list = params2list(source_list)
|
||||
for(var/O in temp_list)
|
||||
temp_list[O] = text2num(temp_list[O])
|
||||
return temp_list
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/disconnect_console()
|
||||
linked_console.linked_destroy = null
|
||||
..()
|
||||
|
||||
/obj/machinery/r_n_d/destructive_analyzer/Insert_Item(obj/item/O, mob/user)
|
||||
if(user.a_intent != "harm")
|
||||
. = 1
|
||||
if(!is_insertion_ready(user))
|
||||
return
|
||||
if(!O.origin_tech)
|
||||
user << "<span class='warning'>This doesn't seem to have a tech origin!</span>"
|
||||
return
|
||||
var/list/temp_tech = ConvertReqString2List(O.origin_tech)
|
||||
if (temp_tech.len == 0)
|
||||
user << "<span class='warning'>You cannot deconstruct this item!</span>"
|
||||
return
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [O] is stuck to your hand, you cannot put it in the [src.name]!</span>"
|
||||
return
|
||||
busy = 1
|
||||
loaded_item = O
|
||||
O.loc = src
|
||||
user << "<span class='notice'>You add the [O.name] to the [src.name]!</span>"
|
||||
flick("d_analyzer_la", src)
|
||||
spawn(10)
|
||||
icon_state = "d_analyzer_l"
|
||||
busy = 0
|
||||
@@ -0,0 +1,709 @@
|
||||
//this is designed to replace the destructive analyzer
|
||||
|
||||
#define SCANTYPE_POKE 1
|
||||
#define SCANTYPE_IRRADIATE 2
|
||||
#define SCANTYPE_GAS 3
|
||||
#define SCANTYPE_HEAT 4
|
||||
#define SCANTYPE_COLD 5
|
||||
#define SCANTYPE_OBLITERATE 6
|
||||
#define SCANTYPE_DISCOVER 7
|
||||
|
||||
#define EFFECT_PROB_VERYLOW 20
|
||||
#define EFFECT_PROB_LOW 35
|
||||
#define EFFECT_PROB_MEDIUM 50
|
||||
#define EFFECT_PROB_HIGH 75
|
||||
#define EFFECT_PROB_VERYHIGH 95
|
||||
|
||||
#define FAIL 8
|
||||
/obj/machinery/r_n_d/experimentor
|
||||
name = "E.X.P.E.R.I-MENTOR"
|
||||
icon = 'icons/obj/machines/heavy_lathe.dmi'
|
||||
icon_state = "h_lathe"
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
var/recentlyExperimented = 0
|
||||
var/mob/trackedIan
|
||||
var/mob/trackedRuntime
|
||||
var/badThingCoeff = 0
|
||||
var/resetTime = 15
|
||||
var/cloneMode = FALSE
|
||||
var/cloneCount = 0
|
||||
var/list/item_reactions = list()
|
||||
var/list/valid_items = list() //valid items for special reactions like transforming
|
||||
var/list/critical_items = list() //items that can cause critical reactions
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/ConvertReqString2List(list/source_list)
|
||||
var/list/temp_list = params2list(source_list)
|
||||
for(var/O in temp_list)
|
||||
temp_list[O] = text2num(temp_list[O])
|
||||
return temp_list
|
||||
|
||||
/* //uncomment to enable forced reactions.
|
||||
/obj/machinery/r_n_d/experimentor/verb/forceReaction()
|
||||
set name = "Force Experimentor Reaction"
|
||||
set category = "Debug"
|
||||
set src in oview(1)
|
||||
var/reaction = input(usr,"What reaction?") in list(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE)
|
||||
var/oldReaction = item_reactions["[loaded_item.type]"]
|
||||
item_reactions["[loaded_item.type]"] = reaction
|
||||
experiment(item_reactions["[loaded_item.type]"],loaded_item)
|
||||
spawn(10)
|
||||
if(loaded_item)
|
||||
item_reactions["[loaded_item.type]"] = oldReaction
|
||||
*/
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/SetTypeReactions()
|
||||
var/probWeight = 0
|
||||
for(var/I in typesof(/obj/item))
|
||||
if(istype(I,/obj/item/weapon/relic))
|
||||
item_reactions["[I]"] = SCANTYPE_DISCOVER
|
||||
else
|
||||
item_reactions["[I]"] = pick(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE)
|
||||
if(ispath(I,/obj/item/weapon/stock_parts) || ispath(I,/obj/item/weapon/grenade/chem_grenade) || ispath(I,/obj/item/weapon/kitchen))
|
||||
var/obj/item/tempCheck = I
|
||||
if(initial(tempCheck.icon_state) != null) //check it's an actual usable item, in a hacky way
|
||||
valid_items += 15
|
||||
valid_items += I
|
||||
probWeight++
|
||||
|
||||
if(ispath(I,/obj/item/weapon/reagent_containers/food))
|
||||
var/obj/item/tempCheck = I
|
||||
if(initial(tempCheck.icon_state) != null) //check it's an actual usable item, in a hacky way
|
||||
valid_items += rand(1,max(2,35-probWeight))
|
||||
valid_items += I
|
||||
|
||||
if(ispath(I,/obj/item/weapon/rcd) || ispath(I,/obj/item/weapon/grenade) || ispath(I,/obj/item/device/aicard) || ispath(I,/obj/item/weapon/storage/backpack/holding) || ispath(I,/obj/item/slime_extract) || ispath(I,/obj/item/device/onetankbomb) || ispath(I,/obj/item/device/transfer_valve))
|
||||
var/obj/item/tempCheck = I
|
||||
if(initial(tempCheck.icon_state) != null)
|
||||
critical_items += I
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/New()
|
||||
..()
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/experimentor(null)
|
||||
B.apply_default_parts(src)
|
||||
|
||||
trackedIan = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in mob_list
|
||||
trackedRuntime = locate(/mob/living/simple_animal/pet/cat/Runtime) in mob_list
|
||||
SetTypeReactions()
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/experimentor
|
||||
name = "circuit board (E.X.P.E.R.I-MENTOR)"
|
||||
build_path = /obj/machinery/r_n_d/experimentor
|
||||
origin_tech = "magnets=1;engineering=1;programming=1;biotech=1;bluespace=2"
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/scanning_module = 1,
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/weapon/stock_parts/micro_laser = 2)
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/RefreshParts()
|
||||
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
|
||||
if(resetTime > 0 && (resetTime - M.rating) >= 1)
|
||||
resetTime -= M.rating
|
||||
for(var/obj/item/weapon/stock_parts/scanning_module/M in component_parts)
|
||||
badThingCoeff += M.rating*2
|
||||
for(var/obj/item/weapon/stock_parts/micro_laser/M in component_parts)
|
||||
badThingCoeff += M.rating
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/checkCircumstances(obj/item/O)
|
||||
//snowflake check to only take "made" bombs
|
||||
if(istype(O,/obj/item/device/transfer_valve))
|
||||
var/obj/item/device/transfer_valve/T = O
|
||||
if(!T.tank_one || !T.tank_two || !T.attached_device)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/Insert_Item(obj/item/O, mob/user)
|
||||
if(user.a_intent != "harm")
|
||||
. = 1
|
||||
if(!is_insertion_ready(user))
|
||||
return
|
||||
if(!checkCircumstances(O))
|
||||
user << "<span class='warning'>The [O] is not yet valid for the [src] and must be completed!</span>"
|
||||
return
|
||||
if(!O.origin_tech)
|
||||
user << "<span class='warning'>This doesn't seem to have a tech origin!</span>"
|
||||
return
|
||||
var/list/temp_tech = ConvertReqString2List(O.origin_tech)
|
||||
if (temp_tech.len == 0)
|
||||
user << "<span class='warning'>You cannot experiment on this item!</span>"
|
||||
return
|
||||
if(!user.drop_item())
|
||||
return
|
||||
loaded_item = O
|
||||
O.loc = src
|
||||
user << "<span class='notice'>You add the [O.name] to the machine.</span>"
|
||||
flick("h_lathe_load", src)
|
||||
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/default_deconstruction_crowbar(obj/item/O)
|
||||
ejectItem()
|
||||
..(O)
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
var/dat = "<center>"
|
||||
if(!linked_console)
|
||||
dat += "<b><a href='byond://?src=\ref[src];function=search'>Scan for R&D Console</A></b><br>"
|
||||
if(loaded_item)
|
||||
dat += "<b>Loaded Item:</b> [loaded_item]<br>"
|
||||
dat += "<b>Technology</b>:<br>"
|
||||
var/list/D = ConvertReqString2List(loaded_item.origin_tech)
|
||||
for(var/T in D)
|
||||
dat += "[T]<br>"
|
||||
dat += "<br><br>Available tests:"
|
||||
dat += "<br><b><a href='byond://?src=\ref[src];item=\ref[loaded_item];function=[SCANTYPE_POKE]'>Poke</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=\ref[src];item=\ref[loaded_item];function=[SCANTYPE_IRRADIATE];'>Irradiate</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=\ref[src];item=\ref[loaded_item];function=[SCANTYPE_GAS]'>Gas</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=\ref[src];item=\ref[loaded_item];function=[SCANTYPE_HEAT]'>Burn</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=\ref[src];item=\ref[loaded_item];function=[SCANTYPE_COLD]'>Freeze</A></b>"
|
||||
dat += "<br><b><a href='byond://?src=\ref[src];item=\ref[loaded_item];function=[SCANTYPE_OBLITERATE]'>Destroy</A></b><br>"
|
||||
if(istype(loaded_item,/obj/item/weapon/relic))
|
||||
dat += "<br><b><a href='byond://?src=\ref[src];item=\ref[loaded_item];function=[SCANTYPE_DISCOVER]'>Discover</A></b><br>"
|
||||
dat += "<br><b><a href='byond://?src=\ref[src];function=eject'>Eject</A>"
|
||||
else
|
||||
dat += "<b>Nothing loaded.</b>"
|
||||
dat += "<br><a href='byond://?src=\ref[src];function=refresh'>Refresh</A><br>"
|
||||
dat += "<br><a href='byond://?src=\ref[src];close=1'>Close</A><br></center>"
|
||||
var/datum/browser/popup = new(user, "experimentor","Experimentor", 700, 400, src)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
onclose(user, "experimentor")
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/matchReaction(matching,reaction)
|
||||
var/obj/item/D = matching
|
||||
if(D)
|
||||
if(item_reactions.Find("[D.type]"))
|
||||
var/tor = item_reactions["[D.type]"]
|
||||
if(tor == text2num(reaction))
|
||||
return tor
|
||||
else
|
||||
return FAIL
|
||||
else
|
||||
return FAIL
|
||||
else
|
||||
return FAIL
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/ejectItem(delete=FALSE)
|
||||
if(loaded_item)
|
||||
if(cloneMode && cloneCount > 0)
|
||||
visible_message("<span class='notice'>A duplicate [loaded_item] pops out!</span>")
|
||||
var/type_to_make = loaded_item.type
|
||||
new type_to_make(get_turf(pick(oview(1,src))))
|
||||
--cloneCount
|
||||
if(cloneCount == 0)
|
||||
cloneMode = FALSE
|
||||
return
|
||||
var/turf/dropturf = get_turf(pick(view(1,src)))
|
||||
if(!dropturf) //Failsafe to prevent the object being lost in the void forever.
|
||||
dropturf = get_turf(src)
|
||||
loaded_item.loc = dropturf
|
||||
if(delete)
|
||||
qdel(loaded_item)
|
||||
loaded_item = null
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/throwSmoke(turf/where)
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(0, where)
|
||||
smoke.start()
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/pickWeighted(list/from)
|
||||
var/result = FALSE
|
||||
var/counter = 1
|
||||
while(!result)
|
||||
var/probtocheck = from[counter]
|
||||
if(prob(probtocheck))
|
||||
result = TRUE
|
||||
return from[counter+1]
|
||||
if(counter + 2 < from.len)
|
||||
counter = counter + 2
|
||||
else
|
||||
counter = 1
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/proc/experiment(exp,obj/item/exp_on)
|
||||
recentlyExperimented = 1
|
||||
icon_state = "h_lathe_wloop"
|
||||
var/chosenchem
|
||||
var/criticalReaction = (exp_on.type in critical_items) ? TRUE : FALSE
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if(exp == SCANTYPE_POKE)
|
||||
visible_message("[src] prods at [exp_on] with mechanical arms.")
|
||||
if(prob(EFFECT_PROB_LOW) && criticalReaction)
|
||||
visible_message("[exp_on] is gripped in just the right way, enhancing its focus.")
|
||||
badThingCoeff++
|
||||
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src] malfunctions and destroys [exp_on], lashing its arms out at nearby people!</span>")
|
||||
for(var/mob/living/m in oview(1, src))
|
||||
m.apply_damage(15,"brute",pick("head","chest","groin"))
|
||||
investigate_log("Experimentor dealt minor brute to [m].", "experimentor")
|
||||
ejectItem(TRUE)
|
||||
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
|
||||
visible_message("<span class='warning'>[src] malfunctions!</span>")
|
||||
exp = SCANTYPE_OBLITERATE
|
||||
else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src] malfunctions, throwing the [exp_on]!</span>")
|
||||
var/mob/living/target = locate(/mob/living) in oview(7,src)
|
||||
if(target)
|
||||
var/obj/item/throwing = loaded_item
|
||||
investigate_log("Experimentor has thrown [loaded_item] at [target]", "experimentor")
|
||||
ejectItem()
|
||||
if(throwing)
|
||||
throwing.throw_at(target, 10, 1)
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if(exp == SCANTYPE_IRRADIATE)
|
||||
visible_message("<span class='danger'>[src] reflects radioactive rays at [exp_on]!</span>")
|
||||
if(prob(EFFECT_PROB_LOW) && criticalReaction)
|
||||
visible_message("[exp_on] has activated an unknown subroutine!")
|
||||
cloneMode = TRUE
|
||||
cloneCount = badThingCoeff
|
||||
investigate_log("Experimentor has made a clone of [exp_on]", "experimentor")
|
||||
ejectItem()
|
||||
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src] malfunctions, melting [exp_on] and leaking radiation!</span>")
|
||||
radiation_pulse(get_turf(src), 1, 1, 25, 1)
|
||||
ejectItem(TRUE)
|
||||
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
|
||||
visible_message("<span class='warning'>[src] malfunctions, spewing toxic waste!</span>")
|
||||
for(var/turf/T in oview(1, src))
|
||||
if(!T.density)
|
||||
if(prob(EFFECT_PROB_VERYHIGH))
|
||||
var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/greenglow(T)
|
||||
reagentdecal.reagents.add_reagent("radium", 7)
|
||||
else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
|
||||
var/savedName = "[exp_on]"
|
||||
ejectItem(TRUE)
|
||||
var/newPath = pickWeighted(valid_items)
|
||||
loaded_item = new newPath(src)
|
||||
visible_message("<span class='warning'>[src] malfunctions, transforming [savedName] into [loaded_item]!</span>")
|
||||
investigate_log("Experimentor has transformed [savedName] into [loaded_item]", "experimentor")
|
||||
if(istype(loaded_item,/obj/item/weapon/grenade/chem_grenade))
|
||||
var/obj/item/weapon/grenade/chem_grenade/CG = loaded_item
|
||||
CG.prime()
|
||||
ejectItem()
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if(exp == SCANTYPE_GAS)
|
||||
visible_message("<span class='warning'>[src] fills its chamber with gas, [exp_on] included.</span>")
|
||||
if(prob(EFFECT_PROB_LOW) && criticalReaction)
|
||||
visible_message("[exp_on] achieves the perfect mix!")
|
||||
new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src))))
|
||||
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src] destroys [exp_on], leaking dangerous gas!</span>")
|
||||
chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","mushroomhallucinogen","space_drugs","ethanol","beepskysmash")
|
||||
var/datum/reagents/R = new/datum/reagents(50)
|
||||
R.my_atom = src
|
||||
R.add_reagent(chosenchem , 50)
|
||||
investigate_log("Experimentor has released [chosenchem] smoke.", "experimentor")
|
||||
var/datum/effect_system/smoke_spread/chem/smoke = new
|
||||
smoke.set_up(R, 0, src, silent = 1)
|
||||
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
smoke.start()
|
||||
qdel(R)
|
||||
ejectItem(TRUE)
|
||||
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src]'s chemical chamber has sprung a leak!</span>")
|
||||
chosenchem = pick("mutationtoxin","nanomachines","sacid")
|
||||
var/datum/reagents/R = new/datum/reagents(50)
|
||||
R.my_atom = src
|
||||
R.add_reagent(chosenchem , 50)
|
||||
var/datum/effect_system/smoke_spread/chem/smoke = new
|
||||
smoke.set_up(R, 0, src, silent = 1)
|
||||
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
smoke.start()
|
||||
qdel(R)
|
||||
ejectItem(TRUE)
|
||||
warn_admins(usr, "[chosenchem] smoke")
|
||||
investigate_log("Experimentor has released <font color='red'>[chosenchem]</font> smoke!", "experimentor")
|
||||
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
|
||||
visible_message("[src] malfunctions, spewing harmless gas.")
|
||||
throwSmoke(src.loc)
|
||||
else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
|
||||
visible_message("<span class='warning'>[src] melts [exp_on], ionizing the air around it!</span>")
|
||||
empulse(src.loc, 4, 6)
|
||||
investigate_log("Experimentor has generated an Electromagnetic Pulse.", "experimentor")
|
||||
ejectItem(TRUE)
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if(exp == SCANTYPE_HEAT)
|
||||
visible_message("[src] raises [exp_on]'s temperature.")
|
||||
if(prob(EFFECT_PROB_LOW) && criticalReaction)
|
||||
visible_message("<span class='warning'>[src]'s emergency coolant system gives off a small ding!</span>")
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/coffee/C = new /obj/item/weapon/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src))))
|
||||
chosenchem = pick("plasma","capsaicin","ethanol")
|
||||
C.reagents.remove_any(25)
|
||||
C.reagents.add_reagent(chosenchem , 50)
|
||||
C.name = "Cup of Suspicious Liquid"
|
||||
C.desc = "It has a large hazard symbol printed on the side in fading ink."
|
||||
investigate_log("Experimentor has made a cup of [chosenchem] coffee.", "experimentor")
|
||||
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
var/turf/start = get_turf(src)
|
||||
var/mob/M = locate(/mob/living) in view(src, 3)
|
||||
var/turf/MT = get_turf(M)
|
||||
if(MT)
|
||||
visible_message("<span class='danger'>[src] dangerously overheats, launching a flaming fuel orb!</span>")
|
||||
investigate_log("Experimentor has launched a <font color='red'>fireball</font> at [M]!", "experimentor")
|
||||
var/obj/item/projectile/magic/fireball/FB = new /obj/item/projectile/magic/fireball(start)
|
||||
FB.original = MT
|
||||
FB.current = start
|
||||
FB.yo = MT.y - start.y
|
||||
FB.xo = MT.x - start.x
|
||||
FB.fire()
|
||||
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src] malfunctions, melting [exp_on] and releasing a burst of flame!</span>")
|
||||
explosion(src.loc, -1, 0, 0, 0, 0, flame_range = 2)
|
||||
investigate_log("Experimentor started a fire.", "experimentor")
|
||||
ejectItem(TRUE)
|
||||
else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
|
||||
visible_message("<span class='warning'>[src] malfunctions, melting [exp_on] and leaking hot air!</span>")
|
||||
var/datum/gas_mixture/env = src.loc.return_air()
|
||||
var/transfer_moles = 0.25 * env.total_moles()
|
||||
var/datum/gas_mixture/removed = env.remove(transfer_moles)
|
||||
if(removed)
|
||||
var/heat_capacity = removed.heat_capacity()
|
||||
if(heat_capacity == 0 || heat_capacity == null)
|
||||
heat_capacity = 1
|
||||
removed.temperature = min((removed.temperature*heat_capacity + 100000)/heat_capacity, 1000)
|
||||
env.merge(removed)
|
||||
air_update_turf()
|
||||
investigate_log("Experimentor has released hot air.", "experimentor")
|
||||
ejectItem(TRUE)
|
||||
else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
|
||||
visible_message("<span class='warning'>[src] malfunctions, activating its emergency coolant systems!</span>")
|
||||
throwSmoke(src.loc)
|
||||
for(var/mob/living/m in oview(1, src))
|
||||
m.apply_damage(5,"burn",pick("head","chest","groin"))
|
||||
investigate_log("Experimentor has dealt minor burn damage to [m]", "experimentor")
|
||||
ejectItem()
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if(exp == SCANTYPE_COLD)
|
||||
visible_message("[src] lowers [exp_on]'s temperature.")
|
||||
if(prob(EFFECT_PROB_LOW) && criticalReaction)
|
||||
visible_message("<span class='warning'>[src]'s emergency coolant system gives off a small ding!</span>")
|
||||
var/obj/item/weapon/reagent_containers/food/drinks/coffee/C = new /obj/item/weapon/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src))))
|
||||
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) //Ding! Your death coffee is ready!
|
||||
chosenchem = pick("uranium","frostoil","ephedrine")
|
||||
C.reagents.remove_any(25)
|
||||
C.reagents.add_reagent(chosenchem , 50)
|
||||
C.name = "Cup of Suspicious Liquid"
|
||||
C.desc = "It has a large hazard symbol printed on the side in fading ink."
|
||||
investigate_log("Experimentor has made a cup of [chosenchem] coffee.", "experimentor")
|
||||
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!</span>")
|
||||
var/datum/reagents/R = new/datum/reagents(50)
|
||||
R.my_atom = src
|
||||
R.add_reagent("frostoil" , 50)
|
||||
investigate_log("Experimentor has released frostoil gas.", "experimentor")
|
||||
var/datum/effect_system/smoke_spread/chem/smoke = new
|
||||
smoke.set_up(R, 0, src, silent = 1)
|
||||
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
|
||||
smoke.start()
|
||||
qdel(R)
|
||||
ejectItem(TRUE)
|
||||
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
|
||||
visible_message("<span class='warning'>[src] malfunctions, shattering [exp_on] and leaking cold air!</span>")
|
||||
var/datum/gas_mixture/env = src.loc.return_air()
|
||||
var/transfer_moles = 0.25 * env.total_moles()
|
||||
var/datum/gas_mixture/removed = env.remove(transfer_moles)
|
||||
if(removed)
|
||||
var/heat_capacity = removed.heat_capacity()
|
||||
if(heat_capacity == 0 || heat_capacity == null)
|
||||
heat_capacity = 1
|
||||
removed.temperature = (removed.temperature*heat_capacity - 75000)/heat_capacity
|
||||
env.merge(removed)
|
||||
air_update_turf()
|
||||
investigate_log("Experimentor has released cold air.", "experimentor")
|
||||
ejectItem(TRUE)
|
||||
else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
|
||||
visible_message("<span class='warning'>[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!</span>")
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(0, src.loc)
|
||||
smoke.start()
|
||||
ejectItem()
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if(exp == SCANTYPE_OBLITERATE)
|
||||
visible_message("<span class='warning'>[exp_on] activates the crushing mechanism, [exp_on] is destroyed!</span>")
|
||||
if(linked_console.linked_lathe)
|
||||
for(var/material in exp_on.materials)
|
||||
linked_console.linked_lathe.materials.insert_amount( min((linked_console.linked_lathe.materials.max_amount - linked_console.linked_lathe.materials.total_amount), (exp_on.materials[material])), material)
|
||||
if(prob(EFFECT_PROB_LOW) && criticalReaction)
|
||||
visible_message("<span class='warning'>[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!</span>")
|
||||
new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src))))
|
||||
else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src]'s crusher goes way too many levels too high, crushing right through space-time!</span>")
|
||||
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3)
|
||||
investigate_log("Experimentor has triggered the 'throw things' reaction.", "experimentor")
|
||||
for(var/atom/movable/AM in oview(7,src))
|
||||
if(!AM.anchored)
|
||||
AM.throw_at_fast(src,10,1)
|
||||
else if(prob(EFFECT_PROB_LOW-badThingCoeff))
|
||||
visible_message("<span class='danger'>[src]'s crusher goes one level too high, crushing right into space-time!</span>")
|
||||
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3)
|
||||
investigate_log("Experimentor has triggered the 'minor throw things' reaction.", "experimentor")
|
||||
var/list/throwAt = list()
|
||||
for(var/atom/movable/AM in oview(7,src))
|
||||
if(!AM.anchored)
|
||||
throwAt.Add(AM)
|
||||
for(var/counter = 1, counter < throwAt.len, ++counter)
|
||||
var/atom/movable/cast = throwAt[counter]
|
||||
cast.throw_at_fast(pick(throwAt),10,1)
|
||||
ejectItem(TRUE)
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if(exp == FAIL)
|
||||
var/a = pick("rumbles","shakes","vibrates","shudders")
|
||||
var/b = pick("crushes","spins","viscerates","smashes","insults")
|
||||
visible_message("<span class='warning'>[exp_on] [a], and [b], the experiment was a failure.</span>")
|
||||
|
||||
if(exp == SCANTYPE_DISCOVER)
|
||||
visible_message("[src] scans the [exp_on], revealing its true nature!")
|
||||
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 3, -1)
|
||||
var/obj/item/weapon/relic/R = loaded_item
|
||||
R.reveal()
|
||||
investigate_log("Experimentor has revealed a relic with <span class='danger'>[R.realProc]</span> effect.", "experimentor")
|
||||
ejectItem()
|
||||
|
||||
//Global reactions
|
||||
if(prob(EFFECT_PROB_VERYLOW-badThingCoeff) && loaded_item)
|
||||
var/globalMalf = rand(1,100)
|
||||
if(globalMalf < 15)
|
||||
visible_message("<span class='warning'>[src]'s onboard detection system has malfunctioned!</span>")
|
||||
item_reactions["[exp_on.type]"] = pick(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE)
|
||||
ejectItem()
|
||||
if(globalMalf > 16 && globalMalf < 35)
|
||||
visible_message("<span class='warning'>[src] melts [exp_on], ian-izing the air around it!</span>")
|
||||
throwSmoke(src.loc)
|
||||
if(trackedIan)
|
||||
throwSmoke(trackedIan.loc)
|
||||
trackedIan.loc = src.loc
|
||||
investigate_log("Experimentor has stolen Ian!", "experimentor") //...if anyone ever fixes it...
|
||||
else
|
||||
new /mob/living/simple_animal/pet/dog/corgi(src.loc)
|
||||
investigate_log("Experimentor has spawned a new corgi.", "experimentor")
|
||||
ejectItem(TRUE)
|
||||
if(globalMalf > 36 && globalMalf < 50)
|
||||
visible_message("<span class='warning'>Experimentor draws the life essence of those nearby!</span>")
|
||||
for(var/mob/living/m in view(4,src))
|
||||
m << "<span class='danger'>You feel your flesh being torn from you, mists of blood drifting to [src]!</span>"
|
||||
m.apply_damage(50,"brute","chest")
|
||||
investigate_log("Experimentor has taken 50 brute a blood sacrifice from [m]", "experimentor")
|
||||
if(globalMalf > 51 && globalMalf < 75)
|
||||
visible_message("<span class='warning'>[src] encounters a run-time error!</span>")
|
||||
throwSmoke(src.loc)
|
||||
if(trackedRuntime)
|
||||
throwSmoke(trackedRuntime.loc)
|
||||
trackedRuntime.loc = src.loc
|
||||
investigate_log("Experimentor has stolen Runtime!", "experimentor")
|
||||
else
|
||||
new /mob/living/simple_animal/pet/cat(src.loc)
|
||||
investigate_log("Experimentor failed to steal runtime, and instead spawned a new cat.", "experimentor")
|
||||
ejectItem(TRUE)
|
||||
if(globalMalf > 76)
|
||||
visible_message("<span class='warning'>[src] begins to smoke and hiss, shaking violently!</span>")
|
||||
use_power(500000)
|
||||
investigate_log("Experimentor has drained power from its APC", "experimentor")
|
||||
|
||||
spawn(resetTime)
|
||||
icon_state = "h_lathe"
|
||||
recentlyExperimented = 0
|
||||
|
||||
/obj/machinery/r_n_d/experimentor/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
usr.set_machine(src)
|
||||
|
||||
var/scantype = href_list["function"]
|
||||
var/obj/item/process = locate(href_list["item"]) in src
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=experimentor")
|
||||
return
|
||||
else if(scantype == "search")
|
||||
var/obj/machinery/computer/rdconsole/D = locate(/obj/machinery/computer/rdconsole) in oview(3,src)
|
||||
if(D)
|
||||
linked_console = D
|
||||
else if(scantype == "eject")
|
||||
ejectItem()
|
||||
else if(scantype == "refresh")
|
||||
src.updateUsrDialog()
|
||||
else
|
||||
if(recentlyExperimented)
|
||||
usr << "<span class='warning'>[src] has been used too recently!</span>"
|
||||
return
|
||||
else if(!loaded_item)
|
||||
updateUsrDialog() //Set the interface to unloaded mode
|
||||
usr << "<span class='warning'>[src] is not currently loaded!</span>"
|
||||
return
|
||||
else if(!process || process != loaded_item) //Interface exploit protection (such as hrefs or swapping items with interface set to old item)
|
||||
updateUsrDialog() //Refresh interface to update interface hrefs
|
||||
usr << "<span class='danger'>Interface failure detected in [src]. Please try again.</span>"
|
||||
return
|
||||
var/dotype
|
||||
if(text2num(scantype) == SCANTYPE_DISCOVER)
|
||||
dotype = SCANTYPE_DISCOVER
|
||||
else
|
||||
dotype = matchReaction(process,scantype)
|
||||
experiment(dotype,process)
|
||||
use_power(750)
|
||||
if(dotype != FAIL)
|
||||
if(process && process.origin_tech)
|
||||
var/list/temp_tech = ConvertReqString2List(process.origin_tech)
|
||||
for(var/T in temp_tech)
|
||||
linked_console.files.UpdateTech(T, temp_tech[T])
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
//~~~~~~~~Admin logging proc, aka the Powergamer Alarm~~~~~~~~
|
||||
/obj/machinery/r_n_d/experimentor/proc/warn_admins(mob/user, ReactionName)
|
||||
var/turf/T = get_turf(src)
|
||||
message_admins("Experimentor reaction: [ReactionName] generated by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) at ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
|
||||
log_game("Experimentor reaction: [ReactionName] generated by [key_name(user)] in ([T.x],[T.y],[T.z])")
|
||||
|
||||
#undef SCANTYPE_POKE
|
||||
#undef SCANTYPE_IRRADIATE
|
||||
#undef SCANTYPE_GAS
|
||||
#undef SCANTYPE_HEAT
|
||||
#undef SCANTYPE_COLD
|
||||
#undef SCANTYPE_OBLITERATE
|
||||
#undef SCANTYPE_DISCOVER
|
||||
|
||||
#undef EFFECT_PROB_VERYLOW
|
||||
#undef EFFECT_PROB_LOW
|
||||
#undef EFFECT_PROB_MEDIUM
|
||||
#undef EFFECT_PROB_HIGH
|
||||
#undef EFFECT_PROB_VERYHIGH
|
||||
|
||||
#undef FAIL
|
||||
|
||||
|
||||
//////////////////////////////////SPECIAL ITEMS////////////////////////////////////////
|
||||
|
||||
/obj/item/weapon/relic
|
||||
name = "strange object"
|
||||
desc = "What mysteries could this hold?"
|
||||
icon = 'icons/obj/assemblies.dmi'
|
||||
origin_tech = "combat=1;plasmatech=1;powerstorage=1;materials=1"
|
||||
var/realName = "defined object"
|
||||
var/revealed = FALSE
|
||||
var/realProc
|
||||
var/cooldownMax = 60
|
||||
var/cooldown
|
||||
|
||||
/obj/item/weapon/relic/New()
|
||||
..()
|
||||
icon_state = pick("shock_kit","armor-igniter-analyzer","infra-igniter0","infra-igniter1","radio-multitool","prox-radio1","radio-radio","timer-multitool0","radio-igniter-tank")
|
||||
realName = "[pick("broken","twisted","spun","improved","silly","regular","badly made")] [pick("device","object","toy","illegal tech","weapon")]"
|
||||
|
||||
|
||||
/obj/item/weapon/relic/proc/reveal()
|
||||
if(revealed) //Re-rolling your relics seems a bit overpowered, yes?
|
||||
return
|
||||
revealed = TRUE
|
||||
name = realName
|
||||
cooldownMax = rand(60,300)
|
||||
realProc = pick("teleport","explode","rapidDupe","petSpray","flash","clean","corgicannon")
|
||||
origin_tech = pick("engineering=[rand(2,5)]","magnets=[rand(2,5)]","plasmatech=[rand(2,5)]","programming=[rand(2,5)]","powerstorage=[rand(2,5)]")
|
||||
|
||||
/obj/item/weapon/relic/attack_self(mob/user)
|
||||
if(revealed)
|
||||
if(cooldown)
|
||||
user << "<span class='warning'>[src] does not react!</span>"
|
||||
return
|
||||
else if(src.loc == user)
|
||||
cooldown = TRUE
|
||||
call(src,realProc)(user)
|
||||
spawn(cooldownMax)
|
||||
cooldown = FALSE
|
||||
else
|
||||
user << "<span class='notice'>You aren't quite sure what to do with this, yet.</span>"
|
||||
|
||||
//////////////// RELIC PROCS /////////////////////////////
|
||||
|
||||
/obj/item/weapon/relic/proc/throwSmoke(turf/where)
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(0, where)
|
||||
smoke.start()
|
||||
|
||||
/obj/item/weapon/relic/proc/corgicannon(mob/user)
|
||||
playsound(src.loc, "sparks", rand(25,50), 1)
|
||||
var/mob/living/simple_animal/pet/dog/corgi/C = new/mob/living/simple_animal/pet/dog/corgi(get_turf(user))
|
||||
C.throw_at(pick(oview(10,user)),10,rand(3,8))
|
||||
throwSmoke(get_turf(C))
|
||||
warn_admins(user, "Corgi Cannon", 0)
|
||||
|
||||
/obj/item/weapon/relic/proc/clean(mob/user)
|
||||
playsound(src.loc, "sparks", rand(25,50), 1)
|
||||
var/obj/item/weapon/grenade/chem_grenade/cleaner/CL = new/obj/item/weapon/grenade/chem_grenade/cleaner(get_turf(user))
|
||||
CL.prime()
|
||||
warn_admins(user, "Smoke", 0)
|
||||
|
||||
/obj/item/weapon/relic/proc/flash(mob/user)
|
||||
playsound(src.loc, "sparks", rand(25,50), 1)
|
||||
var/obj/item/weapon/grenade/flashbang/CB = new/obj/item/weapon/grenade/flashbang(get_turf(user))
|
||||
CB.prime()
|
||||
warn_admins(user, "Flash")
|
||||
|
||||
/obj/item/weapon/relic/proc/petSpray(mob/user)
|
||||
var/message = "<span class='danger'>[src] begans to shake, and in the distance the sound of rampaging animals arises!</span>"
|
||||
visible_message(message)
|
||||
user << message
|
||||
var/animals = rand(1,25)
|
||||
var/counter
|
||||
var/list/valid_animals = list(/mob/living/simple_animal/parrot,/mob/living/simple_animal/butterfly,/mob/living/simple_animal/pet/cat,/mob/living/simple_animal/pet/dog/corgi,/mob/living/simple_animal/crab,/mob/living/simple_animal/pet/fox,/mob/living/simple_animal/hostile/lizard,/mob/living/simple_animal/mouse,/mob/living/simple_animal/pet/dog/pug,/mob/living/simple_animal/hostile/bear,/mob/living/simple_animal/hostile/poison/bees,/mob/living/simple_animal/hostile/carp)
|
||||
for(counter = 1; counter < animals; counter++)
|
||||
var/mobType = pick(valid_animals)
|
||||
new mobType(get_turf(src))
|
||||
warn_admins(user, "Mass Mob Spawn")
|
||||
if(prob(60))
|
||||
user << "<span class='warning'>[src] falls apart!</span>"
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/relic/proc/rapidDupe(mob/user)
|
||||
audible_message("[src] emits a loud pop!")
|
||||
var/list/dupes = list()
|
||||
var/counter
|
||||
var/max = rand(5,10)
|
||||
for(counter = 1; counter < max; counter++)
|
||||
var/obj/item/weapon/relic/R = new src.type(get_turf(src))
|
||||
R.name = name
|
||||
R.desc = desc
|
||||
R.realName = realName
|
||||
R.realProc = realProc
|
||||
R.revealed = TRUE
|
||||
dupes |= R
|
||||
R.throw_at_fast(pick(oview(7,get_turf(src))),10,1)
|
||||
counter = 0
|
||||
spawn(rand(10,100))
|
||||
for(counter = 1; counter <= dupes.len; counter++)
|
||||
var/obj/item/weapon/relic/R = dupes[counter]
|
||||
qdel(R)
|
||||
warn_admins(user, "Rapid duplicator", 0)
|
||||
|
||||
/obj/item/weapon/relic/proc/explode(mob/user)
|
||||
user << "<span class='danger'>[src] begins to heat up!</span>"
|
||||
spawn(rand(35,100))
|
||||
if(src.loc == user)
|
||||
visible_message("<span class='notice'>The [src]'s top opens, releasing a powerful blast!</span>")
|
||||
explosion(user.loc, -1, rand(1,5), rand(1,5), rand(1,5), rand(1,5), flame_range = 2)
|
||||
warn_admins(user, "Explosion")
|
||||
qdel(src) //Comment this line to produce a light grenade (the bomb that keeps on exploding when used)!!
|
||||
|
||||
/obj/item/weapon/relic/proc/teleport(mob/user)
|
||||
user << "<span class='notice'>The [src] begins to vibrate!</span>"
|
||||
spawn(rand(10,30))
|
||||
var/turf/userturf = get_turf(user)
|
||||
if(src.loc == user && userturf.z != ZLEVEL_CENTCOM) //Because Nuke Ops bringing this back on their shuttle, then looting the ERT area is 2fun4you!
|
||||
visible_message("<span class='notice'>The [src] twists and bends, relocating itself!</span>")
|
||||
throwSmoke(userturf)
|
||||
do_teleport(user, userturf, 8, asoundin = 'sound/effects/phasein.ogg')
|
||||
throwSmoke(get_turf(user))
|
||||
warn_admins(user, "Teleport", 0)
|
||||
|
||||
//Admin Warning proc for relics
|
||||
/obj/item/weapon/relic/proc/warn_admins(mob/user, RelicType, priority = 1)
|
||||
var/turf/T = get_turf(src)
|
||||
var/log_msg = "[RelicType] relic used by [key_name(user)] in ([T.x],[T.y],[T.z])"
|
||||
if(priority) //For truly dangerous relics that may need an admin's attention. BWOINK!
|
||||
message_admins("[RelicType] relic activated by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>) (<A HREF='?_src_=holder;adminplayerobservefollow=\ref[user]'>FLW</A>) in ([T.x],[T.y],[T.z] - <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</a>)",0,1)
|
||||
log_game(log_msg)
|
||||
investigate_log(log_msg, "experimentor")
|
||||
@@ -0,0 +1,369 @@
|
||||
var/global/list/obj/machinery/message_server/message_servers = list()
|
||||
|
||||
/datum/data_pda_msg
|
||||
var/recipient = "Unspecified" //name of the person
|
||||
var/sender = "Unspecified" //name of the sender
|
||||
var/message = "Blank" //transferred message
|
||||
var/image/photo = null //Attached photo
|
||||
|
||||
/datum/data_pda_msg/New(var/param_rec = "",var/param_sender = "",var/param_message = "",var/param_photo=null)
|
||||
|
||||
if(param_rec)
|
||||
recipient = param_rec
|
||||
if(param_sender)
|
||||
sender = param_sender
|
||||
if(param_message)
|
||||
message = param_message
|
||||
if(param_photo)
|
||||
photo = param_photo
|
||||
|
||||
/datum/data_pda_msg/proc/get_photo_ref()
|
||||
if(photo)
|
||||
return "<a href='byond://?src=\ref[src];photo=1'>(Photo)</a>"
|
||||
return ""
|
||||
|
||||
/datum/data_pda_msg/Topic(href,href_list)
|
||||
..()
|
||||
if(href_list["photo"])
|
||||
var/mob/M = usr
|
||||
M << browse_rsc(photo, "pda_photo.png")
|
||||
M << browse("<html><head><title>PDA Photo</title></head>" \
|
||||
+ "<body style='overflow:hidden;margin:0;text-align:center'>" \
|
||||
+ "<img src='pda_photo.png' width='192' style='-ms-interpolation-mode:nearest-neighbor' />" \
|
||||
+ "</body></html>", "window=book;size=192x192")
|
||||
onclose(M, "PDA Photo")
|
||||
|
||||
/datum/data_rc_msg
|
||||
var/rec_dpt = "Unspecified" //name of the person
|
||||
var/send_dpt = "Unspecified" //name of the sender
|
||||
var/message = "Blank" //transferred message
|
||||
var/stamp = "Unstamped"
|
||||
var/id_auth = "Unauthenticated"
|
||||
var/priority = "Normal"
|
||||
|
||||
/datum/data_rc_msg/New(var/param_rec = "",var/param_sender = "",var/param_message = "",var/param_stamp = "",var/param_id_auth = "",var/param_priority)
|
||||
if(param_rec)
|
||||
rec_dpt = param_rec
|
||||
if(param_sender)
|
||||
send_dpt = param_sender
|
||||
if(param_message)
|
||||
message = param_message
|
||||
if(param_stamp)
|
||||
stamp = param_stamp
|
||||
if(param_id_auth)
|
||||
id_auth = param_id_auth
|
||||
if(param_priority)
|
||||
switch(param_priority)
|
||||
if(1)
|
||||
priority = "Normal"
|
||||
if(2)
|
||||
priority = "High"
|
||||
if(3)
|
||||
priority = "Extreme"
|
||||
else
|
||||
priority = "Undetermined"
|
||||
|
||||
/obj/machinery/message_server
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
icon_state = "server"
|
||||
name = "Messaging Server"
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 100
|
||||
|
||||
var/list/datum/data_pda_msg/pda_msgs = list()
|
||||
var/list/datum/data_rc_msg/rc_msgs = list()
|
||||
var/active = 1
|
||||
var/decryptkey = "password"
|
||||
|
||||
/obj/machinery/message_server/New()
|
||||
message_servers += src
|
||||
decryptkey = GenerateKey()
|
||||
send_pda_message("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.")
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/machinery/message_server/Destroy()
|
||||
message_servers -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/message_server/proc/GenerateKey()
|
||||
//Feel free to move to Helpers.
|
||||
var/newKey
|
||||
newKey += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le")
|
||||
newKey += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai")
|
||||
newKey += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")
|
||||
return newKey
|
||||
|
||||
/obj/machinery/message_server/process()
|
||||
//if(decryptkey == "password")
|
||||
// decryptkey = generateKey()
|
||||
if(active && (stat & (BROKEN|NOPOWER)))
|
||||
active = 0
|
||||
return
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/machinery/message_server/proc/send_pda_message(recipient = "",sender = "",message = "",photo=null)
|
||||
. = new/datum/data_pda_msg(recipient,sender,message,photo)
|
||||
pda_msgs += .
|
||||
|
||||
/obj/machinery/message_server/proc/send_rc_message(recipient = "",sender = "",message = "",stamp = "", id_auth = "", priority = 1)
|
||||
rc_msgs += new/datum/data_rc_msg(recipient,sender,message,stamp,id_auth)
|
||||
|
||||
/obj/machinery/message_server/attack_hand(mob/user)
|
||||
// user << "\blue There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few Centcom delays."
|
||||
user << "You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"]"
|
||||
active = !active
|
||||
update_icon()
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/message_server/update_icon()
|
||||
if((stat & (BROKEN|NOPOWER)))
|
||||
icon_state = "server-nopower"
|
||||
else if (!active)
|
||||
icon_state = "server-off"
|
||||
else
|
||||
icon_state = "server-on"
|
||||
|
||||
return
|
||||
|
||||
|
||||
/datum/feedback_variable
|
||||
var/variable
|
||||
var/value
|
||||
var/details
|
||||
|
||||
/datum/feedback_variable/New(var/param_variable,var/param_value = 0)
|
||||
variable = param_variable
|
||||
value = param_value
|
||||
|
||||
/datum/feedback_variable/proc/inc(num = 1)
|
||||
if (isnum(value))
|
||||
value += num
|
||||
else
|
||||
value = text2num(value)
|
||||
if (isnum(value))
|
||||
value += num
|
||||
else
|
||||
value = num
|
||||
|
||||
/datum/feedback_variable/proc/dec(num = 1)
|
||||
if (isnum(value))
|
||||
value -= num
|
||||
else
|
||||
value = text2num(value)
|
||||
if (isnum(value))
|
||||
value -= num
|
||||
else
|
||||
value = -num
|
||||
|
||||
/datum/feedback_variable/proc/set_value(num)
|
||||
if (isnum(num))
|
||||
value = num
|
||||
|
||||
/datum/feedback_variable/proc/get_value()
|
||||
if (!isnum(value))
|
||||
return 0
|
||||
return value
|
||||
|
||||
/datum/feedback_variable/proc/get_variable()
|
||||
return variable
|
||||
|
||||
/datum/feedback_variable/proc/set_details(text)
|
||||
if (istext(text))
|
||||
details = text
|
||||
|
||||
/datum/feedback_variable/proc/add_details(text)
|
||||
if (istext(text))
|
||||
text = replacetext(text, " ", "_")
|
||||
if (!details)
|
||||
details = text
|
||||
else
|
||||
details += " [text]"
|
||||
|
||||
/datum/feedback_variable/proc/get_details()
|
||||
return details
|
||||
|
||||
/datum/feedback_variable/proc/get_parsed()
|
||||
return list(variable,value,details)
|
||||
|
||||
var/obj/machinery/blackbox_recorder/blackbox
|
||||
|
||||
/obj/machinery/blackbox_recorder
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "blackbox"
|
||||
name = "Blackbox Recorder"
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 10
|
||||
active_power_usage = 100
|
||||
var/list/messages = list() //Stores messages of non-standard frequencies
|
||||
var/list/messages_admin = list()
|
||||
|
||||
var/list/msg_common = list()
|
||||
var/list/msg_science = list()
|
||||
var/list/msg_command = list()
|
||||
var/list/msg_medical = list()
|
||||
var/list/msg_engineering = list()
|
||||
var/list/msg_security = list()
|
||||
var/list/msg_deathsquad = list()
|
||||
var/list/msg_syndicate = list()
|
||||
var/list/msg_service = list()
|
||||
var/list/msg_cargo = list()
|
||||
|
||||
var/list/datum/feedback_variable/feedback = new()
|
||||
|
||||
//Only one can exsist in the world!
|
||||
/obj/machinery/blackbox_recorder/New()
|
||||
if (blackbox)
|
||||
if (istype(blackbox,/obj/machinery/blackbox_recorder))
|
||||
qdel(src)
|
||||
blackbox = src
|
||||
|
||||
/obj/machinery/blackbox_recorder/Destroy()
|
||||
var/turf/T = locate(1,1,2)
|
||||
if (T)
|
||||
blackbox = null
|
||||
var/obj/machinery/blackbox_recorder/BR = new/obj/machinery/blackbox_recorder(T)
|
||||
BR.msg_common = msg_common
|
||||
BR.msg_science = msg_science
|
||||
BR.msg_command = msg_command
|
||||
BR.msg_medical = msg_medical
|
||||
BR.msg_engineering = msg_engineering
|
||||
BR.msg_security = msg_security
|
||||
BR.msg_deathsquad = msg_deathsquad
|
||||
BR.msg_syndicate = msg_syndicate
|
||||
BR.msg_service = msg_service
|
||||
BR.msg_cargo = msg_cargo
|
||||
BR.feedback = feedback
|
||||
BR.messages = messages
|
||||
BR.messages_admin = messages_admin
|
||||
if(blackbox != BR)
|
||||
blackbox = BR
|
||||
return ..()
|
||||
|
||||
/obj/machinery/blackbox_recorder/proc/find_feedback_datum(variable)
|
||||
for (var/datum/feedback_variable/FV in feedback)
|
||||
if (FV.get_variable() == variable)
|
||||
return FV
|
||||
var/datum/feedback_variable/FV = new(variable)
|
||||
feedback += FV
|
||||
return FV
|
||||
|
||||
/obj/machinery/blackbox_recorder/proc/get_round_feedback()
|
||||
return feedback
|
||||
|
||||
/obj/machinery/blackbox_recorder/proc/round_end_data_gathering()
|
||||
|
||||
var/pda_msg_amt = 0
|
||||
var/rc_msg_amt = 0
|
||||
|
||||
for (var/obj/machinery/message_server/MS in message_servers)
|
||||
if (MS.pda_msgs.len > pda_msg_amt)
|
||||
pda_msg_amt = MS.pda_msgs.len
|
||||
if (MS.rc_msgs.len > rc_msg_amt)
|
||||
rc_msg_amt = MS.rc_msgs.len
|
||||
|
||||
feedback_set_details("radio_usage","")
|
||||
|
||||
feedback_add_details("radio_usage","COM-[msg_common.len]")
|
||||
feedback_add_details("radio_usage","SCI-[msg_science.len]")
|
||||
feedback_add_details("radio_usage","HEA-[msg_command.len]")
|
||||
feedback_add_details("radio_usage","MED-[msg_medical.len]")
|
||||
feedback_add_details("radio_usage","ENG-[msg_engineering.len]")
|
||||
feedback_add_details("radio_usage","SEC-[msg_security.len]")
|
||||
feedback_add_details("radio_usage","DTH-[msg_deathsquad.len]")
|
||||
feedback_add_details("radio_usage","SYN-[msg_syndicate.len]")
|
||||
feedback_add_details("radio_usage","SRV-[msg_service.len]")
|
||||
feedback_add_details("radio_usage","CAR-[msg_cargo.len]")
|
||||
feedback_add_details("radio_usage","OTH-[messages.len]")
|
||||
feedback_add_details("radio_usage","PDA-[pda_msg_amt]")
|
||||
feedback_add_details("radio_usage","RC-[rc_msg_amt]")
|
||||
|
||||
|
||||
feedback_set_details("round_end","[time2text(world.realtime)]") //This one MUST be the last one that gets set.
|
||||
|
||||
|
||||
//This proc is only to be called at round end.
|
||||
/obj/machinery/blackbox_recorder/proc/save_all_data_to_sql()
|
||||
if (!feedback) return
|
||||
|
||||
round_end_data_gathering() //round_end time logging and some other data processing
|
||||
establish_db_connection()
|
||||
if (!dbcon.IsConnected()) return
|
||||
var/round_id
|
||||
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT MAX(round_id) AS round_id FROM [format_table_name("feedback")]")
|
||||
query.Execute()
|
||||
while (query.NextRow())
|
||||
round_id = query.item[1]
|
||||
|
||||
if (!isnum(round_id))
|
||||
round_id = text2num(round_id)
|
||||
round_id++
|
||||
|
||||
var/sqlrowlist = ""
|
||||
|
||||
|
||||
for (var/datum/feedback_variable/FV in feedback)
|
||||
if (sqlrowlist != "")
|
||||
sqlrowlist += ", " //a comma (,) at the start of the first row to insert will trigger a SQL error
|
||||
|
||||
sqlrowlist += "(null, Now(), [round_id], \"[sanitizeSQL(FV.get_variable())]\", [FV.get_value()], \"[sanitizeSQL(FV.get_details())]\")"
|
||||
|
||||
if (sqlrowlist == "")
|
||||
return
|
||||
|
||||
var/DBQuery/query_insert = dbcon.NewQuery("INSERT DELAYED IGNORE INTO [format_table_name("feedback")] VALUES " + sqlrowlist)
|
||||
query_insert.Execute()
|
||||
|
||||
|
||||
/proc/feedback_set(variable,value)
|
||||
if (!blackbox) return
|
||||
|
||||
var/datum/feedback_variable/FV = blackbox.find_feedback_datum(variable)
|
||||
|
||||
if (!FV) return
|
||||
|
||||
FV.set_value(value)
|
||||
|
||||
/proc/feedback_inc(variable,value)
|
||||
if (!blackbox) return
|
||||
|
||||
var/datum/feedback_variable/FV = blackbox.find_feedback_datum(variable)
|
||||
|
||||
if (!FV) return
|
||||
|
||||
FV.inc(value)
|
||||
|
||||
/proc/feedback_dec(variable,value)
|
||||
if (!blackbox) return
|
||||
|
||||
var/datum/feedback_variable/FV = blackbox.find_feedback_datum(variable)
|
||||
|
||||
if (!FV) return
|
||||
|
||||
FV.dec(value)
|
||||
|
||||
/proc/feedback_set_details(variable,details)
|
||||
if (!blackbox) return
|
||||
|
||||
var/datum/feedback_variable/FV = blackbox.find_feedback_datum(variable)
|
||||
|
||||
if(!FV) return
|
||||
|
||||
FV.set_details(details)
|
||||
|
||||
/proc/feedback_add_details(variable,details)
|
||||
if (!blackbox) return
|
||||
|
||||
var/datum/feedback_variable/FV = blackbox.find_feedback_datum(variable)
|
||||
|
||||
if (!FV) return
|
||||
|
||||
FV.add_details(details)
|
||||
@@ -0,0 +1,125 @@
|
||||
/*
|
||||
Protolathe
|
||||
|
||||
Similar to an autolathe, you load glass and metal sheets (but not other objects) into it to be used as raw materials for the stuff
|
||||
it creates. All the menus and other manipulation commands are in the R&D console.
|
||||
|
||||
Note: Must be placed west/left of and R&D console to function.
|
||||
|
||||
*/
|
||||
/obj/machinery/r_n_d/protolathe
|
||||
name = "Protolathe"
|
||||
desc = "Converts raw materials into useful objects."
|
||||
icon_state = "protolathe"
|
||||
flags = OPENCONTAINER
|
||||
|
||||
var/datum/material_container/materials
|
||||
var/efficiency_coeff
|
||||
|
||||
var/list/categories = list(
|
||||
"Power Designs",
|
||||
"Medical Designs",
|
||||
"Bluespace Designs",
|
||||
"Stock Parts",
|
||||
"Equipment",
|
||||
"Mining Designs",
|
||||
"Electronics",
|
||||
"Weapons",
|
||||
"Ammo",
|
||||
"Firing Pins"
|
||||
)
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/New()
|
||||
..()
|
||||
create_reagents(0)
|
||||
materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM))
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/protolathe(null)
|
||||
B.apply_default_parts(src)
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/protolathe
|
||||
name = "circuit board (Protolathe)"
|
||||
build_path = /obj/machinery/r_n_d/protolathe
|
||||
origin_tech = "engineering=2;programming=2"
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/matter_bin = 2,
|
||||
/obj/item/weapon/stock_parts/manipulator = 2,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker = 2)
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/Destroy()
|
||||
qdel(materials)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/RefreshParts()
|
||||
reagents.maximum_volume = 0
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
|
||||
reagents.maximum_volume += G.volume
|
||||
G.reagents.trans_to(src, G.reagents.total_volume)
|
||||
|
||||
materials.max_amount = 0
|
||||
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
|
||||
materials.max_amount += M.rating * 75000
|
||||
|
||||
var/T = 1.2
|
||||
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
|
||||
T -= M.rating/10
|
||||
efficiency_coeff = min(max(0, T), 1)
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
|
||||
var/list/all_materials = being_built.reagents + being_built.materials
|
||||
|
||||
var/A = materials.amount(M)
|
||||
if(!A)
|
||||
A = reagents.get_reagent_amount(M)
|
||||
|
||||
return round(A / max(1, (all_materials[M]*efficiency_coeff)))
|
||||
|
||||
//we eject the materials upon deconstruction.
|
||||
/obj/machinery/r_n_d/protolathe/deconstruction()
|
||||
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
|
||||
reagents.trans_to(G, G.reagents.maximum_volume)
|
||||
materials.retrieve_all()
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/disconnect_console()
|
||||
linked_console.linked_lathe = null
|
||||
..()
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/Insert_Item(obj/item/O, mob/user)
|
||||
|
||||
if(istype(O, /obj/item/stack/sheet))
|
||||
. = 1
|
||||
if(!is_insertion_ready(user))
|
||||
return
|
||||
var/sheet_material = materials.get_item_material_amount(O)
|
||||
if(!sheet_material)
|
||||
return
|
||||
|
||||
if(!materials.has_space(sheet_material))
|
||||
user << "<span class='warning'>The [src.name]'s material bin is full! Please remove material before adding more.</span>"
|
||||
return 1
|
||||
|
||||
var/obj/item/stack/sheet/stack = O
|
||||
var/amount = round(input("How many sheets do you want to add?") as num)//No decimals
|
||||
if(!in_range(src, stack) || !user.Adjacent(src))
|
||||
return
|
||||
var/amount_inserted = materials.insert_stack(O,amount)
|
||||
if(!amount_inserted)
|
||||
return 1
|
||||
else
|
||||
var/stack_name = stack.name
|
||||
busy = 1
|
||||
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10)))
|
||||
user << "<span class='notice'>You add [amount_inserted] sheets to the [src.name].</span>"
|
||||
add_overlay("protolathe_[stack_name]")
|
||||
sleep(10)
|
||||
overlays -= "protolathe_[stack_name]"
|
||||
busy = 0
|
||||
updateUsrDialog()
|
||||
|
||||
else if(user.a_intent != "harm")
|
||||
user << "<span class='warning'>You cannot insert this item into the [name]!</span>"
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
@@ -0,0 +1,239 @@
|
||||
/*
|
||||
Research and Development System. (Designed specifically for the /tg/station 13 (Space Station 13) open source project)
|
||||
|
||||
///////////////Overview///////////////////
|
||||
This system is a "tech tree" research and development system designed for SS13. It allows a "researcher" job (this document assumes
|
||||
the "scientist" job is given this role) the tools necessiary to research new and better technologies. In general, the system works
|
||||
by breaking existing technology and using what you learn from to advance your knowledge of SCIENCE! As your knowledge progresses,
|
||||
you can build newer (and better?) devices (which you can also, eventually, deconstruct to advance your knowledge).
|
||||
|
||||
A brief overview is below. For more details, see the related files.
|
||||
|
||||
////////////Game Use/////////////
|
||||
The major research and development is performed using a combination of four machines:
|
||||
- R&D Console: A computer console that allows you to manipulate the other devices that are linked to it and view/manipulate the
|
||||
technologies you have researched so far.
|
||||
- Protolathe: Used to make new hand-held devices and parts for larger devices. All metals and reagents as raw materials.
|
||||
- Destructive Analyzer: You can put hand-held objects into it and it'll analyze them for technological advancements but it destroys
|
||||
them in the process. Destroyed items will send their raw materials to a linked Protolathe (if any)
|
||||
- Circuit Imprinter: Similar to the Protolathe, it allows for the construction of circuit boards. Uses glass and acid as the raw
|
||||
materials.
|
||||
|
||||
While researching you are dealing with two different types of information: Technology Paths and Device Designs. Technology Paths
|
||||
are the "Tech Trees" of the game. You start out with a number of them at the game start and they are improved by using the
|
||||
Destructive Analyzer. By themselves, they don't do a whole lot. However, they unlock Device Designs. This is the information used
|
||||
by the circuit imprinter and the protolathe to produce objects.
|
||||
|
||||
//EXISTING TECH
|
||||
Each tech path should have at LEAST one item at every level (levels 1 - 20). This is to allow for a more fluid progression of the
|
||||
researching. Existing tech (ie, anything you can find on the station or get from the quartermaster) shouldn't go higher then
|
||||
level 5 or 7. Everything past that should be stuff you research.
|
||||
|
||||
Below is a checklist to make sure every tree is filled. As new items get added to R&D, add them here if there is an empty slot.
|
||||
When thinking about new stuff, check here to see if there are any slots unfilled.
|
||||
|
||||
//MATERIALS
|
||||
1 | Metal
|
||||
2 | Solid Plasma
|
||||
3 | Silver
|
||||
4 | Gold, Super Capacitor
|
||||
5 | Uranium, Nuclear Gun, SUPERPACMAN
|
||||
6 | Diamond, MRSPACMAN
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//PLASMA TECH
|
||||
1 |
|
||||
2 | Solid Plasma
|
||||
3 | Pacman Generator
|
||||
4 |
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//POWER TECH
|
||||
1 | Basic Capacitor, Basic Cell
|
||||
2 | High-Capacity Cell (10,000)
|
||||
3 | Super-Capacity Cell (20,000), Powersink, PACMAN
|
||||
4 | SUPERPACMAN
|
||||
5 | MRSPACMAN, Super Capacitor
|
||||
6 | Hyper-Capacity Cell (30,000)
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//BLUE SPACE
|
||||
1 |
|
||||
2 | Teleporter Console Board
|
||||
3 | Teleport Gun, Hand Tele
|
||||
4 | Teleportation Scroll
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//BIOTECH
|
||||
1 | Bruise Pack, Scalple
|
||||
2 | PANDEMIC Board, Mass Spectrometer
|
||||
3 | AI Core, Brains (MMI)
|
||||
4 | MMI+Radio
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//MAGNETS
|
||||
1 | Basic Sensor
|
||||
2 | Comm Console Board
|
||||
3 | Adv Sensor
|
||||
4 | Adv Mass Spectrometer, Chameleon Projector
|
||||
5 | Phasic Sensor
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//PROGRAMMING
|
||||
1 | Arcade Board
|
||||
2 | Sec Camera
|
||||
3 | Cloning Machine Console Board
|
||||
4 | AI Core, Intellicard
|
||||
5 | Pico-Manipulator, Ultra-Micro-Laser
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//SYNDICATE
|
||||
1 | Sleepypen
|
||||
2 | TYRANT Module, Emag
|
||||
3 | Power Sink
|
||||
4 |
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
//COMBAT
|
||||
1 | Flashbang, Mousetrap, Nettle
|
||||
2 | Stun Baton
|
||||
3 | Power Axe, Death Nettle, Nuclear Gun
|
||||
4 |
|
||||
5 |
|
||||
6 |
|
||||
7 |
|
||||
8 |
|
||||
9 |
|
||||
10 |
|
||||
11 |
|
||||
12 |
|
||||
13 |
|
||||
14 |
|
||||
15 |
|
||||
16 |
|
||||
17 |
|
||||
18 |
|
||||
19 |
|
||||
20 |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,111 @@
|
||||
//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 = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
var/busy = 0
|
||||
var/hacked = 0
|
||||
var/disabled = 0
|
||||
var/shocked = 0
|
||||
var/obj/machinery/computer/rdconsole/linked_console
|
||||
var/obj/item/loaded_item = null //the item loaded inside the machine (currently only used by experimentor and destructive analyzer)
|
||||
|
||||
/obj/machinery/r_n_d/New()
|
||||
..()
|
||||
wires = new /datum/wires/r_n_d(src)
|
||||
|
||||
/obj/machinery/r_n_d/Destroy()
|
||||
qdel(wires)
|
||||
wires = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/proc/shock(mob/user, prb)
|
||||
if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
|
||||
return 0
|
||||
if(!prob(prb))
|
||||
return 0
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
if (electrocute_mob(user, get_area(src), src, 0.7))
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/machinery/r_n_d/attack_hand(mob/user)
|
||||
if(shocked)
|
||||
if(shock(user,50))
|
||||
return
|
||||
if(panel_open)
|
||||
wires.interact(user)
|
||||
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/attackby(obj/item/O, mob/user, params)
|
||||
if (shocked)
|
||||
if(shock(user,50))
|
||||
return 1
|
||||
if (default_deconstruction_screwdriver(user, "[initial(icon_state)]_t", initial(icon_state), O))
|
||||
if(linked_console)
|
||||
disconnect_console()
|
||||
return
|
||||
if(exchange_parts(user, O))
|
||||
return
|
||||
if(default_deconstruction_crowbar(O))
|
||||
return
|
||||
if((flags & OPENCONTAINER) && O.is_open_container())
|
||||
return 0 //inserting reagents into the machine
|
||||
if(Insert_Item(O, user))
|
||||
return 1
|
||||
else
|
||||
return ..()
|
||||
|
||||
//to disconnect the machine from the r&d console it's linked to
|
||||
/obj/machinery/r_n_d/proc/disconnect_console()
|
||||
linked_console = null
|
||||
|
||||
//proc used to handle inserting items or reagents into r_n_d machines
|
||||
/obj/machinery/r_n_d/proc/Insert_Item(obj/item/I, mob/user)
|
||||
return
|
||||
|
||||
//whether the machine can have an item inserted in its current state.
|
||||
/obj/machinery/r_n_d/proc/is_insertion_ready(mob/user)
|
||||
if(panel_open)
|
||||
user << "<span class='warning'>You can't load the [src.name] while it's opened!</span>"
|
||||
return
|
||||
if (disabled)
|
||||
return
|
||||
if (!linked_console) // Try to auto-connect to new RnD consoles nearby.
|
||||
for(var/obj/machinery/computer/rdconsole/console in oview(3, src))
|
||||
if(console.first_use)
|
||||
console.SyncRDevices()
|
||||
|
||||
if(!linked_console)
|
||||
user << "<span class='warning'>The [name] must be linked to an R&D console first!</span>"
|
||||
return
|
||||
if (busy)
|
||||
user << "<span class='warning'>The [src.name] is busy right now.</span>"
|
||||
return
|
||||
if(stat & BROKEN)
|
||||
user << "<span class='warning'>The [src.name] is broken.</span>"
|
||||
return
|
||||
if(stat & NOPOWER)
|
||||
user << "<span class='warning'>The [src.name] has no power.</span>"
|
||||
return
|
||||
if(loaded_item)
|
||||
user << "<span class='warning'>The [src] is already loaded.</span>"
|
||||
return
|
||||
return 1
|
||||
|
||||
|
||||
//we eject the loaded item when deconstructing the machine
|
||||
/obj/machinery/r_n_d/deconstruction()
|
||||
if(loaded_item)
|
||||
loaded_item.loc = loc
|
||||
..()
|
||||
@@ -0,0 +1,284 @@
|
||||
/*
|
||||
General Explination:
|
||||
The research datum is the "folder" where all the research information is stored in a R&D console. It's also a holder for all the
|
||||
various procs used to manipulate it. It has four variables and seven procs:
|
||||
|
||||
Variables:
|
||||
- possible_tech is a list of all the /datum/tech that can potentially be researched by the player. The RefreshResearch() proc
|
||||
(explained later) only goes through those when refreshing what you know. Generally, possible_tech contains ALL of the existing tech
|
||||
but it is possible to add tech to the game that DON'T start in it (example: Xeno tech). Generally speaking, you don't want to mess
|
||||
with these since they should be the default version of the datums. They're actually stored in a list rather then using typesof to
|
||||
refer to them since it makes it a bit easier to search through them for specific information.
|
||||
- know_tech is the companion list to possible_tech. It's the tech you can actually research and improve. Until it's added to this
|
||||
list, it can't be improved. All the tech in this list are visible to the player.
|
||||
- possible_designs is functionally identical to possbile_tech except it's for /datum/design.
|
||||
- known_designs is functionally identical to known_tech except it's for /datum/design
|
||||
|
||||
Procs:
|
||||
- TechHasReqs: Used by other procs (specifically RefreshResearch) to see whether all of a tech's requirements are currently in
|
||||
known_tech and at a high enough level.
|
||||
- DesignHasReqs: Same as TechHasReqs but for /datum/design and known_design.
|
||||
- AddTech2Known: Adds a /datum/tech to known_tech. It checks to see whether it already has that tech (if so, it just replaces it). If
|
||||
it doesn't have it, it adds it. Note: It does NOT check possible_tech at all. So if you want to add something strange to it (like
|
||||
a player made tech?) you can.
|
||||
- AddDesign2Known: Same as AddTech2Known except for /datum/design and known_designs.
|
||||
- RefreshResearch: This is the workhorse of the R&D system. It updates the /datum/research holder and adds any unlocked tech paths
|
||||
and designs you have reached the requirements for. It only checks through possible_tech and possible_designs, however, so it won't
|
||||
accidentally add "secret" tech to it.
|
||||
- UpdateTech is used as part of the actual researching process. It takes an ID and finds techs with that same ID in known_tech. When
|
||||
it finds it, it checks to see whether it can improve it at all. If the known_tech's level is less then or equal to
|
||||
the inputted level, it increases the known tech's level to the inputted level -1 or know tech's level +1 (whichever is higher).
|
||||
|
||||
The tech datums are the actual "tech trees" that you improve through researching. Each one has five variables:
|
||||
- Name: Pretty obvious. This is often viewable to the players.
|
||||
- Desc: Pretty obvious. Also player viewable.
|
||||
- ID: This is the unique ID of the tech that is used by the various procs to find and/or maniuplate it.
|
||||
- Level: This is the current level of the tech. All techs start at 1 and have a max of 20. Devices and some techs require a certain
|
||||
level in specific techs before you can produce them.
|
||||
- Req_tech: This is a list of the techs required to unlock this tech path. If left blank, it'll automatically be loaded into the
|
||||
research holder datum.
|
||||
|
||||
*/
|
||||
/***************************************************************
|
||||
** Master Types **
|
||||
** Includes all the helper procs and basic tech processing. **
|
||||
***************************************************************/
|
||||
|
||||
/datum/research //Holder for all the existing, archived, and known tech. Individual to console.
|
||||
|
||||
//Datum/tech go here.
|
||||
var/list/possible_tech = list() //List of all tech in the game that players have access to (barring special events).
|
||||
var/list/known_tech = list() //List of locally known tech.
|
||||
var/list/possible_designs = list() //List of all designs.
|
||||
var/list/known_designs = list() //List of available designs.
|
||||
|
||||
/datum/research/New() //Insert techs into possible_tech here. Known_tech automatically updated.
|
||||
for(var/T in subtypesof(/datum/tech))
|
||||
possible_tech += new T(src)
|
||||
for(var/D in subtypesof(/datum/design))
|
||||
possible_designs += new D(src)
|
||||
RefreshResearch()
|
||||
|
||||
//Checks to see if tech has all the required pre-reqs.
|
||||
//Input: datum/tech; Output: 0/1 (false/true)
|
||||
/datum/research/proc/TechHasReqs(datum/tech/T)
|
||||
if(T.req_tech.len == 0)
|
||||
return TRUE
|
||||
for(var/req in T.req_tech)
|
||||
var/datum/tech/known = known_tech[req]
|
||||
if(!known || known.level < T.req_tech[req])
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
//Checks to see if design has all the required pre-reqs.
|
||||
//Input: datum/design; Output: 0/1 (false/true)
|
||||
/datum/research/proc/DesignHasReqs(datum/design/D)//Heavily optimized -Sieve
|
||||
if(D.req_tech.len == 0)
|
||||
return TRUE
|
||||
for(var/req in D.req_tech)
|
||||
var/datum/tech/known = known_tech[req]
|
||||
if(!known || known.level < D.req_tech[req])
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
//Adds a tech to known_tech list. Checks to make sure there aren't duplicates and updates existing tech's levels if needed.
|
||||
//Input: datum/tech; Output: Null
|
||||
/datum/research/proc/AddTech2Known(datum/tech/T)
|
||||
if(known_tech[T.id])
|
||||
var/datum/tech/known = known_tech[T.id]
|
||||
if(T.level > known.level)
|
||||
known.level = T.level
|
||||
return
|
||||
known_tech[T.id] = T
|
||||
|
||||
/datum/research/proc/AddDesign2Known(datum/design/D)
|
||||
if(known_designs[D.id])
|
||||
return
|
||||
known_designs[D.id] = D
|
||||
|
||||
//Refreshes known_tech and known_designs list.
|
||||
//Input/Output: n/a
|
||||
/datum/research/proc/RefreshResearch()
|
||||
for(var/datum/tech/PT in possible_tech)
|
||||
if(TechHasReqs(PT))
|
||||
AddTech2Known(PT)
|
||||
|
||||
for(var/datum/design/PD in possible_designs)
|
||||
if(DesignHasReqs(PD))
|
||||
AddDesign2Known(PD)
|
||||
|
||||
for(var/v in known_tech)
|
||||
var/datum/tech/T = known_tech[v]
|
||||
T.level = Clamp(T.level, 0, 20)
|
||||
return
|
||||
|
||||
//Refreshes the levels of a given tech.
|
||||
//Input: Tech's ID and Level; Output: null
|
||||
/datum/research/proc/UpdateTech(ID, level)
|
||||
var/datum/tech/KT = known_tech[ID]
|
||||
if(KT && KT.level <= level)
|
||||
KT.level = max(KT.level + 1, level)
|
||||
|
||||
//Checks if the origin level can raise current tech levels
|
||||
//Input: Tech's ID and Level; Output: TRUE for yes, FALSE for no
|
||||
/datum/research/proc/IsTechHigher(ID, level)
|
||||
var/datum/tech/KT = known_tech[ID]
|
||||
if(KT)
|
||||
if(KT.level <= level)
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/datum/research/proc/FindDesignByID(id)
|
||||
return known_designs[id]
|
||||
|
||||
|
||||
//Autolathe files
|
||||
/datum/research/autolathe/New()
|
||||
for(var/T in (subtypesof(/datum/tech)))
|
||||
possible_tech += new T(src)
|
||||
for(var/path in subtypesof(/datum/design))
|
||||
var/datum/design/D = new path(src)
|
||||
possible_designs += D
|
||||
if((D.build_type & AUTOLATHE) && ("initial" in D.category)) //autolathe starts without hacked designs
|
||||
AddDesign2Known(D)
|
||||
|
||||
/datum/research/autolathe/AddDesign2Known(datum/design/D)
|
||||
if(!(D.build_type & AUTOLATHE))
|
||||
return
|
||||
..()
|
||||
|
||||
/***************************************************************
|
||||
** Technology Datums **
|
||||
** Includes all the various technoliges and what they make. **
|
||||
***************************************************************/
|
||||
|
||||
/datum/tech //Datum of individual technologies.
|
||||
var/name = "name" //Name of the technology.
|
||||
var/desc = "description" //General description of what it does and what it makes.
|
||||
var/id = "id" //An easily referenced ID. Must be alphanumeric, lower-case, and no symbols.
|
||||
var/level = 1 //A simple number scale of the research level. Level 0 = Secret tech.
|
||||
var/rare = 1 //How much CentCom wants to get that tech. Used in supply shuttle tech cost calculation.
|
||||
var/list/req_tech = list() //List of ids associated values of techs required to research this tech. "id" = #
|
||||
|
||||
|
||||
//Trunk Technologies (don't require any other techs and you start knowning them).
|
||||
|
||||
/datum/tech/materials
|
||||
name = "Materials Research"
|
||||
desc = "Development of new and improved materials."
|
||||
id = "materials"
|
||||
|
||||
/datum/tech/engineering
|
||||
name = "Engineering Research"
|
||||
desc = "Development of new and improved engineering parts and tools."
|
||||
id = "engineering"
|
||||
|
||||
/datum/tech/plasmatech
|
||||
name = "Plasma Research"
|
||||
desc = "Research into the mysterious substance colloqually known as \"plasma\"."
|
||||
id = "plasmatech"
|
||||
rare = 3
|
||||
|
||||
/datum/tech/powerstorage
|
||||
name = "Power Manipulation Technology"
|
||||
desc = "The various technologies behind the storage and generation of electicity."
|
||||
id = "powerstorage"
|
||||
|
||||
/datum/tech/bluespace
|
||||
name = "\"Blue-space\" Research"
|
||||
desc = "Research into the sub-reality known as \"blue-space\"."
|
||||
id = "bluespace"
|
||||
rare = 2
|
||||
|
||||
/datum/tech/biotech
|
||||
name = "Biological Technology"
|
||||
desc = "Research into the deeper mysteries of life and organic substances."
|
||||
id = "biotech"
|
||||
|
||||
/datum/tech/combat
|
||||
name = "Combat Systems Research"
|
||||
desc = "The development of offensive and defensive systems."
|
||||
id = "combat"
|
||||
|
||||
/datum/tech/magnets
|
||||
name = "Electromagnetic Spectrum Research"
|
||||
desc = "Research into the electromagnetic spectrum. No clue how they actually work, though."
|
||||
id = "magnets"
|
||||
|
||||
/datum/tech/programming
|
||||
name = "Data Theory Research"
|
||||
desc = "The development of new computer and artificial intelligence and data storage systems."
|
||||
id = "programming"
|
||||
|
||||
/datum/tech/syndicate
|
||||
name = "Illegal Technologies Research"
|
||||
desc = "The study of technologies that violate Nanotrassen regulations."
|
||||
id = "syndicate"
|
||||
rare = 4
|
||||
|
||||
|
||||
//Secret Technologies (hidden by default, require rare items to reveal)
|
||||
|
||||
/datum/tech/abductor
|
||||
name = "Alien Technologies Research"
|
||||
desc = "The study of technologies used by the advanced alien race known as Abductors."
|
||||
id = "abductor"
|
||||
rare = 5
|
||||
level = 0
|
||||
|
||||
/datum/tech/arcane
|
||||
name = "Arcane Research"
|
||||
desc = "When sufficiently analyzed, any magic becomes indistinguishable from technology."
|
||||
id = "arcane"
|
||||
rare = 5
|
||||
level = 0
|
||||
|
||||
/*
|
||||
//Branch Techs
|
||||
/datum/tech/explosives
|
||||
name = "Explosives Research"
|
||||
desc = "The creation and application of explosive materials."
|
||||
id = "explosives"
|
||||
req_tech = list("materials" = 3)
|
||||
|
||||
/datum/tech/generators
|
||||
name = "Power Generation Technology"
|
||||
desc = "Research into more powerful and more reliable sources."
|
||||
id = "generators"
|
||||
req_tech = list("powerstorage" = 2)
|
||||
|
||||
/datum/tech/robotics
|
||||
name = "Robotics Technology"
|
||||
desc = "The development of advanced automated, autonomous machines."
|
||||
id = "robotics"
|
||||
req_tech = list("materials" = 3, "programming" = 3)
|
||||
*/
|
||||
|
||||
|
||||
/datum/tech/proc/getCost(var/current_level = null)
|
||||
// Calculates tech disk's supply points sell cost
|
||||
if(!current_level)
|
||||
current_level = initial(level)
|
||||
|
||||
if(current_level >= level)
|
||||
return 0
|
||||
|
||||
var/cost = 0
|
||||
for(var/i=current_level+1, i<=level, i++)
|
||||
if(i == initial(level))
|
||||
continue
|
||||
cost += i*rare
|
||||
|
||||
return cost
|
||||
|
||||
/obj/item/weapon/disk/tech_disk
|
||||
name = "Technology Disk"
|
||||
desc = "A disk for storing technology data for further research."
|
||||
icon_state = "datadisk0"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
var/datum/tech/stored
|
||||
|
||||
/obj/item/weapon/disk/tech_disk/New()
|
||||
src.pixel_x = rand(-5, 5)
|
||||
src.pixel_y = rand(-5, 5)
|
||||
@@ -0,0 +1,340 @@
|
||||
/obj/machinery/r_n_d/server
|
||||
name = "R&D Server"
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
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/heat_gen = 100
|
||||
var/heating_power = 40000
|
||||
var/delay = 10
|
||||
req_access = list(access_rd) //Only the R&D can change server settings.
|
||||
|
||||
/obj/machinery/r_n_d/server/New()
|
||||
..()
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/rdserver(null)
|
||||
B.apply_default_parts(src)
|
||||
initialize() //Agouri
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/rdserver
|
||||
name = "circuit board (R&D Server)"
|
||||
build_path = /obj/machinery/r_n_d/server
|
||||
origin_tech = "programming=3"
|
||||
req_components = list(
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/weapon/stock_parts/scanning_module = 1)
|
||||
|
||||
/obj/machinery/r_n_d/server/Destroy()
|
||||
griefProtection()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/r_n_d/server/RefreshParts()
|
||||
var/tot_rating = 0
|
||||
for(var/obj/item/weapon/stock_parts/SP in src)
|
||||
tot_rating += SP.rating
|
||||
heat_gen /= max(1, tot_rating)
|
||||
|
||||
/obj/machinery/r_n_d/server/initialize()
|
||||
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 = Clamp(health, 0, 100)
|
||||
if((T20C + 20) to (T0C + 70))
|
||||
health = max(0, health - 1)
|
||||
if(health <= 0)
|
||||
/*griefProtection() This seems to get called twice before running any code that deletes/damages the server or it's files anwyay.
|
||||
refreshParts and the hasReq procs that get called by this are laggy and do not need to be called by every server on the map every tick */
|
||||
var/updateRD = 0
|
||||
files.known_designs = list()
|
||||
for(var/v in files.known_tech)
|
||||
var/datum/tech/T = files.known_tech[v]
|
||||
if(prob(1))
|
||||
updateRD++
|
||||
T.level--
|
||||
if(updateRD)
|
||||
files.RefreshResearch()
|
||||
if(delay)
|
||||
delay--
|
||||
else
|
||||
produce_heat(heat_gen)
|
||||
delay = initial(delay)
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/server/emp_act(severity)
|
||||
griefProtection()
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/server/ex_act(severity, target)
|
||||
griefProtection()
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/server/blob_act(obj/effect/blob/B)
|
||||
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 machines)
|
||||
for(var/v in files.known_tech)
|
||||
var/datum/tech/T = files.known_tech[v]
|
||||
C.files.AddTech2Known(T)
|
||||
for(var/v in files.known_designs)
|
||||
var/datum/design/D = files.known_designs[v]
|
||||
C.files.AddDesign2Known(D)
|
||||
C.files.RefreshResearch()
|
||||
|
||||
/obj/machinery/r_n_d/server/proc/produce_heat(heat_amt)
|
||||
if(!(stat & (NOPOWER|BROKEN))) //Blatently stolen from space heater.
|
||||
var/turf/L = loc
|
||||
if(istype(L))
|
||||
var/datum/gas_mixture/env = L.return_air()
|
||||
if(env.temperature < (heat_amt+T0C))
|
||||
|
||||
var/transfer_moles = 0.25 * env.total_moles()
|
||||
|
||||
var/datum/gas_mixture/removed = env.remove(transfer_moles)
|
||||
|
||||
if(removed)
|
||||
|
||||
var/heat_capacity = removed.heat_capacity()
|
||||
if(heat_capacity == 0 || heat_capacity == null)
|
||||
heat_capacity = 1
|
||||
removed.temperature = min((removed.temperature*heat_capacity + heating_power)/heat_capacity, 1000)
|
||||
|
||||
env.merge(removed)
|
||||
air_update_turf()
|
||||
|
||||
//called when the server is deconstructed.
|
||||
/obj/machinery/r_n_d/server/deconstruction()
|
||||
griefProtection()
|
||||
..()
|
||||
|
||||
/obj/machinery/r_n_d/server/attack_hand(mob/user as mob) // I guess only exists to stop ninjas or hell does it even work I dunno. See also ninja gloves.
|
||||
if (disabled)
|
||||
return
|
||||
if (shocked)
|
||||
shock(user,50)
|
||||
return
|
||||
|
||||
/obj/machinery/r_n_d/server/centcom
|
||||
name = "Centcom Central R&D Database"
|
||||
server_id = -1
|
||||
|
||||
/obj/machinery/r_n_d/server/centcom/initialize()
|
||||
..()
|
||||
var/list/no_id_servers = list()
|
||||
var/list/server_ids = list()
|
||||
for(var/obj/machinery/r_n_d/server/S in 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 = "Used to manage access to research and manufacturing databases."
|
||||
icon_screen = "rdcomp"
|
||||
icon_keyboard = "rd_key"
|
||||
var/screen = 0
|
||||
var/obj/machinery/r_n_d/server/temp_server
|
||||
var/list/servers = list()
|
||||
var/list/consoles = list()
|
||||
var/badmin = 0
|
||||
circuit = /obj/item/weapon/circuitboard/computer/rdservercontrol
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
|
||||
add_fingerprint(usr)
|
||||
usr.set_machine(src)
|
||||
if(!src.allowed(usr) && !emagged)
|
||||
usr << "<span class='danger'>You do not have the required access level.</span>"
|
||||
return
|
||||
|
||||
if(href_list["main"])
|
||||
screen = 0
|
||||
|
||||
else if(href_list["access"] || href_list["data"] || href_list["transfer"])
|
||||
temp_server = null
|
||||
consoles = list()
|
||||
servers = list()
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"]))
|
||||
temp_server = S
|
||||
break
|
||||
if(href_list["access"])
|
||||
screen = 1
|
||||
for(var/obj/machinery/computer/rdconsole/C in machines)
|
||||
if(C.sync)
|
||||
consoles += C
|
||||
else if(href_list["data"])
|
||||
screen = 2
|
||||
else if(href_list["transfer"])
|
||||
screen = 3
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
if(S == src)
|
||||
continue
|
||||
servers += S
|
||||
|
||||
else if(href_list["upload_toggle"])
|
||||
var/num = text2num(href_list["upload_toggle"])
|
||||
if(num in temp_server.id_with_upload)
|
||||
temp_server.id_with_upload -= num
|
||||
else
|
||||
temp_server.id_with_upload += num
|
||||
|
||||
else if(href_list["download_toggle"])
|
||||
var/num = text2num(href_list["download_toggle"])
|
||||
if(num in temp_server.id_with_download)
|
||||
temp_server.id_with_download -= num
|
||||
else
|
||||
temp_server.id_with_download += num
|
||||
|
||||
else if(href_list["reset_tech"])
|
||||
var/choice = alert("Technology Data Reset", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
|
||||
if(choice == "Continue")
|
||||
var/datum/tech/T = temp_server.files.known_tech[href_list["reset_tech"]]
|
||||
if(T)
|
||||
T.level = 1
|
||||
temp_server.files.RefreshResearch()
|
||||
|
||||
else if(href_list["reset_design"])
|
||||
var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? Data lost cannot be recovered.", "Continue", "Cancel")
|
||||
if(choice == "Continue")
|
||||
var/datum/design/D = temp_server.files.known_designs[href_list["reset_design"]]
|
||||
if(D)
|
||||
temp_server.files.known_designs -= D.id
|
||||
temp_server.files.RefreshResearch()
|
||||
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
user.set_machine(src)
|
||||
var/dat = ""
|
||||
|
||||
switch(screen)
|
||||
if(0) //Main Menu
|
||||
dat += "Connected Servers:<BR><BR>"
|
||||
|
||||
for(var/obj/machinery/r_n_d/server/S in machines)
|
||||
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
|
||||
continue
|
||||
dat += "[S.name] || "
|
||||
dat += "<A href='?src=\ref[src];access=[S.server_id]'>Access Rights</A> | "
|
||||
dat += "<A href='?src=\ref[src];data=[S.server_id]'>Data Management</A>"
|
||||
if(badmin) dat += " | <A href='?src=\ref[src];transfer=[S.server_id]'>Server-to-Server Transfer</A>"
|
||||
dat += "<BR>"
|
||||
|
||||
if(1) //Access rights menu
|
||||
dat += "[temp_server.name] Access Rights<BR><BR>"
|
||||
dat += "Consoles with Upload Access<BR>"
|
||||
for(var/obj/machinery/computer/rdconsole/C in consoles)
|
||||
var/turf/console_turf = get_turf(C)
|
||||
dat += "* <A href='?src=\ref[src];upload_toggle=[C.id]'>[console_turf.loc]" //FYI, these are all numeric ids, eventually.
|
||||
if(C.id in temp_server.id_with_upload)
|
||||
dat += " (Remove)</A><BR>"
|
||||
else
|
||||
dat += " (Add)</A><BR>"
|
||||
dat += "Consoles with Download Access<BR>"
|
||||
for(var/obj/machinery/computer/rdconsole/C in consoles)
|
||||
var/turf/console_turf = get_turf(C)
|
||||
dat += "* <A href='?src=\ref[src];download_toggle=[C.id]'>[console_turf.loc]"
|
||||
if(C.id in temp_server.id_with_download)
|
||||
dat += " (Remove)</A><BR>"
|
||||
else
|
||||
dat += " (Add)</A><BR>"
|
||||
dat += "<HR><A href='?src=\ref[src];main=1'>Main Menu</A>"
|
||||
|
||||
if(2) //Data Management menu
|
||||
dat += "[temp_server.name] Data ManagementP<BR><BR>"
|
||||
dat += "Known Technologies<BR>"
|
||||
for(var/v in temp_server.files.known_tech)
|
||||
var/datum/tech/T = temp_server.files.known_tech[v]
|
||||
if(T.level <= 0)
|
||||
continue
|
||||
dat += "* [T.name] "
|
||||
dat += "<A href='?src=\ref[src];reset_tech=[T.id]'>(Reset)</A><BR>" //FYI, these are all strings.
|
||||
dat += "Known Designs<BR>"
|
||||
for(var/v in temp_server.files.known_designs)
|
||||
var/datum/design/D = temp_server.files.known_designs[v]
|
||||
dat += "* [D.name] "
|
||||
dat += "<A href='?src=\ref[src];reset_design=[D.id]'>(Delete)</A><BR>"
|
||||
dat += "<HR><A href='?src=\ref[src];main=1'>Main Menu</A>"
|
||||
|
||||
if(3) //Server Data Transfer
|
||||
dat += "[temp_server.name] Server to Server Transfer<BR><BR>"
|
||||
dat += "Send Data to what server?<BR>"
|
||||
for(var/obj/machinery/r_n_d/server/S in servers)
|
||||
dat += "[S.name] <A href='?src=\ref[src];send_to=[S.server_id]'>(Transfer)</A><BR>"
|
||||
dat += "<HR><A href='?src=\ref[src];main=1'>Main Menu</A>"
|
||||
user << browse("<TITLE>R&D Server Control</TITLE><HR>[dat]", "window=server_control;size=575x400")
|
||||
onclose(user, "server_control")
|
||||
return
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/attackby(obj/item/weapon/D, mob/user, params)
|
||||
. = ..()
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/machinery/computer/rdservercontrol/emag_act(mob/user)
|
||||
if(!emagged)
|
||||
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
|
||||
emagged = 1
|
||||
user << "<span class='notice'>You you disable the security protocols.</span>"
|
||||
|
||||
/obj/machinery/r_n_d/server/robotics
|
||||
name = "Robotics R&D Server"
|
||||
id_with_upload_string = "1;2"
|
||||
id_with_download_string = "1;2"
|
||||
server_id = 2
|
||||
|
||||
|
||||
/obj/machinery/r_n_d/server/core
|
||||
name = "Core R&D Server"
|
||||
id_with_upload_string = "1"
|
||||
id_with_download_string = "1"
|
||||
server_id = 1
|
||||
@@ -0,0 +1,304 @@
|
||||
/*Power cells are in code\modules\power\cell.dm*/
|
||||
/obj/item/weapon/storage/part_replacer
|
||||
name = "rapid part exchange device"
|
||||
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
|
||||
icon_state = "RPED"
|
||||
item_state = "RPED"
|
||||
w_class = 5
|
||||
can_hold = list(/obj/item/weapon/stock_parts)
|
||||
storage_slots = 50
|
||||
use_to_pickup = 1
|
||||
allow_quick_gather = 1
|
||||
allow_quick_empty = 1
|
||||
collection_mode = 1
|
||||
display_contents_with_number = 1
|
||||
max_w_class = 3
|
||||
max_combined_w_class = 100
|
||||
var/works_from_distance = 0
|
||||
var/pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/rped.ogg'
|
||||
var/alt_sound = null
|
||||
|
||||
/obj/item/weapon/storage/part_replacer/afterattack(obj/machinery/T, mob/living/carbon/human/user, flag, params)
|
||||
if(flag)
|
||||
return
|
||||
else if(works_from_distance)
|
||||
if(istype(T))
|
||||
if(T.component_parts)
|
||||
T.exchange_parts(user, src)
|
||||
user.Beam(T,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/part_replacer/bluespace
|
||||
name = "bluespace rapid part exchange device"
|
||||
desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts."
|
||||
icon_state = "BS_RPED"
|
||||
w_class = 3
|
||||
storage_slots = 400
|
||||
max_w_class = 3
|
||||
max_combined_w_class = 800
|
||||
works_from_distance = 1
|
||||
pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/PSHOOM.ogg'
|
||||
alt_sound = 'sound/items/PSHOOM_2.ogg'
|
||||
|
||||
/obj/item/weapon/storage/part_replacer/bluespace/content_can_dump(atom/dest_object, mob/user)
|
||||
if(Adjacent(user))
|
||||
if(get_dist(user, dest_object) < 8)
|
||||
if(dest_object.storage_contents_dump_act(src, user))
|
||||
play_rped_sound()
|
||||
user.Beam(dest_object,icon_state="rped_upgrade",icon='icons/effects/effects.dmi',time=5)
|
||||
return 1
|
||||
user << "The [src.name] buzzes."
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/storage/part_replacer/proc/play_rped_sound()
|
||||
//Plays the sound for RPED exhanging or installing parts.
|
||||
if(alt_sound && prob(1))
|
||||
playsound(src, alt_sound, 40, 1)
|
||||
else
|
||||
playsound(src, pshoom_or_beepboopblorpzingshadashwoosh, 40, 1)
|
||||
|
||||
//Sorts stock parts inside an RPED by their rating.
|
||||
//Only use /obj/item/weapon/stock_parts/ with this sort proc!
|
||||
/proc/cmp_rped_sort(obj/item/weapon/stock_parts/A, obj/item/weapon/stock_parts/B)
|
||||
return B.rating - A.rating
|
||||
|
||||
/obj/item/weapon/stock_parts
|
||||
name = "stock part"
|
||||
desc = "What?"
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
w_class = 2
|
||||
var/rating = 1
|
||||
|
||||
/obj/item/weapon/stock_parts/New()
|
||||
..()
|
||||
src.pixel_x = rand(-5, 5)
|
||||
src.pixel_y = rand(-5, 5)
|
||||
|
||||
//Rating 1
|
||||
|
||||
/obj/item/weapon/stock_parts/console_screen
|
||||
name = "console screen"
|
||||
desc = "Used in the construction of computers and other devices with a interactive console."
|
||||
icon_state = "screen"
|
||||
origin_tech = "materials=1"
|
||||
materials = list(MAT_GLASS=200)
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor
|
||||
name = "capacitor"
|
||||
desc = "A basic capacitor used in the construction of a variety of devices."
|
||||
icon_state = "capacitor"
|
||||
origin_tech = "powerstorage=1"
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module
|
||||
name = "scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
icon_state = "scan_module"
|
||||
origin_tech = "magnets=1"
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/manipulator
|
||||
name = "micro-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "micro_mani"
|
||||
origin_tech = "materials=1;programming=1"
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/weapon/stock_parts/micro_laser
|
||||
name = "micro-laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
icon_state = "micro_laser"
|
||||
origin_tech = "magnets=1"
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/matter_bin
|
||||
name = "matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "matter_bin"
|
||||
origin_tech = "materials=1"
|
||||
materials = list(MAT_METAL=80)
|
||||
|
||||
//Rating 2
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/adv
|
||||
name = "advanced capacitor"
|
||||
desc = "An advanced capacitor used in the construction of a variety of devices."
|
||||
icon_state = "adv_capacitor"
|
||||
origin_tech = "powerstorage=3"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module/adv
|
||||
name = "advanced scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
icon_state = "adv_scan_module"
|
||||
origin_tech = "magnets=3"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/manipulator/nano
|
||||
name = "nano-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "nano_mani"
|
||||
origin_tech = "materials=3;programming=2"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/weapon/stock_parts/micro_laser/high
|
||||
name = "high-power micro-laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
icon_state = "high_micro_laser"
|
||||
origin_tech = "magnets=3"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/matter_bin/adv
|
||||
name = "advanced matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "advanced_matter_bin"
|
||||
origin_tech = "materials=3"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=80)
|
||||
|
||||
//Rating 3
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/super
|
||||
name = "super capacitor"
|
||||
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
|
||||
icon_state = "super_capacitor"
|
||||
origin_tech = "powerstorage=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module/phasic
|
||||
name = "phasic scanning module"
|
||||
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
|
||||
icon_state = "super_scan_module"
|
||||
origin_tech = "magnets=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/manipulator/pico
|
||||
name = "pico-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "pico_mani"
|
||||
origin_tech = "materials=4;programming=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/weapon/stock_parts/micro_laser/ultra
|
||||
name = "ultra-high-power micro-laser"
|
||||
icon_state = "ultra_high_micro_laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
origin_tech = "magnets=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/matter_bin/super
|
||||
name = "super matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "super_matter_bin"
|
||||
origin_tech = "materials=4;engineering=4"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=80)
|
||||
|
||||
//Rating 4
|
||||
|
||||
/obj/item/weapon/stock_parts/capacitor/quadratic
|
||||
name = "quadratic capacitor"
|
||||
desc = "An capacity capacitor used in the construction of a variety of devices."
|
||||
icon_state = "quadratic_capacitor"
|
||||
origin_tech = "powerstorage=5;materials=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/scanning_module/triphasic
|
||||
name = "triphasic scanning module"
|
||||
desc = "A compact, ultra resolution triphasic scanning module used in the construction of certain devices."
|
||||
icon_state = "triphasic_scan_module"
|
||||
origin_tech = "magnets=5;materials=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/manipulator/femto
|
||||
name = "femto-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "femto_mani"
|
||||
origin_tech = "materials=6;programming=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=30)
|
||||
|
||||
/obj/item/weapon/stock_parts/micro_laser/quadultra
|
||||
name = "quad-ultra micro-laser"
|
||||
icon_state = "quadultra_micro_laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
origin_tech = "magnets=5;materials=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
|
||||
/obj/item/weapon/stock_parts/matter_bin/bluespace
|
||||
name = "bluespace matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "bluespace_matter_bin"
|
||||
origin_tech = "materials=6;programming=4;engineering=4"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=80)
|
||||
|
||||
// Subspace stock parts
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/ansible
|
||||
name = "subspace ansible"
|
||||
icon_state = "subspace_ansible"
|
||||
desc = "A compact module capable of sensing extradimensional activity."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=1"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/filter
|
||||
name = "hyperwave filter"
|
||||
icon_state = "hyperwave_filter"
|
||||
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
||||
origin_tech = "programming=2;magnets=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/amplifier
|
||||
name = "subspace amplifier"
|
||||
icon_state = "subspace_amplifier"
|
||||
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/treatment
|
||||
name = "subspace treatment disk"
|
||||
icon_state = "treatment_disk"
|
||||
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/analyzer
|
||||
name = "subspace wavelength analyzer"
|
||||
icon_state = "wavelength_analyzer"
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
origin_tech = "programming=2;magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/crystal
|
||||
name = "ansible crystal"
|
||||
icon_state = "ansible_crystal"
|
||||
desc = "A crystal made from pure glass used to transmit laser databursts to subspace."
|
||||
origin_tech = "magnets=2;materials=2;bluespace=2;plasmatech=2"
|
||||
materials = list(MAT_GLASS=50)
|
||||
|
||||
/obj/item/weapon/stock_parts/subspace/transmitter
|
||||
name = "subspace transmitter"
|
||||
icon_state = "subspace_transmitter"
|
||||
desc = "A large piece of equipment used to open a window into the subspace dimension."
|
||||
origin_tech = "magnets=2;materials=2;bluespace=2"
|
||||
materials = list(MAT_METAL=50)
|
||||
|
||||
/obj/item/weapon/research//Makes testing much less of a pain -Sieve
|
||||
name = "research"
|
||||
icon = 'icons/obj/stock_parts.dmi'
|
||||
icon_state = "capacitor"
|
||||
desc = "A debug item for research."
|
||||
origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8;engineering=8;plasmatech=8"
|
||||
@@ -0,0 +1,181 @@
|
||||
//Xenobio control console
|
||||
/mob/camera/aiEye/remote/xenobio
|
||||
visible_icon = 1
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "camera_target"
|
||||
|
||||
|
||||
/mob/camera/aiEye/remote/xenobio/setLoc(var/t)
|
||||
var/area/new_area = get_area(t)
|
||||
if(new_area && new_area.name == "Xenobiology Lab" || istype(new_area, /area/toxins/xenobiology ))
|
||||
return ..()
|
||||
else
|
||||
return
|
||||
|
||||
/obj/machinery/computer/camera_advanced/xenobio
|
||||
name = "Slime management console"
|
||||
desc = "A computer used for remotely handling slimes."
|
||||
networks = list("SS13")
|
||||
off_action = new/datum/action/innate/camera_off/xenobio
|
||||
var/datum/action/innate/slime_place/slime_place_action = new
|
||||
var/datum/action/innate/slime_pick_up/slime_up_action = new
|
||||
var/datum/action/innate/feed_slime/feed_slime_action = new
|
||||
var/datum/action/innate/monkey_recycle/monkey_recycle_action = new
|
||||
|
||||
var/list/stored_slimes = list()
|
||||
var/max_slimes = 5
|
||||
var/monkeys = 0
|
||||
|
||||
icon_screen = "slime_comp"
|
||||
icon_keyboard = "rd_key"
|
||||
|
||||
/obj/machinery/computer/camera_advanced/xenobio/CreateEye()
|
||||
eyeobj = new /mob/camera/aiEye/remote/xenobio()
|
||||
eyeobj.loc = get_turf(src)
|
||||
eyeobj.origin = src
|
||||
eyeobj.visible_icon = 1
|
||||
eyeobj.icon = 'icons/obj/abductor.dmi'
|
||||
eyeobj.icon_state = "camera_target"
|
||||
|
||||
/obj/machinery/computer/camera_advanced/xenobio/GrantActions(mob/living/carbon/user)
|
||||
off_action.target = user
|
||||
off_action.Grant(user)
|
||||
|
||||
jump_action.target = user
|
||||
jump_action.Grant(user)
|
||||
|
||||
slime_up_action.target = src
|
||||
slime_up_action.Grant(user)
|
||||
|
||||
slime_place_action.target = src
|
||||
slime_place_action.Grant(user)
|
||||
|
||||
feed_slime_action.target = src
|
||||
feed_slime_action.Grant(user)
|
||||
|
||||
monkey_recycle_action.target = src
|
||||
monkey_recycle_action.Grant(user)
|
||||
|
||||
|
||||
/obj/machinery/computer/camera_advanced/xenobio/attack_hand(mob/user)
|
||||
if(!ishuman(user)) //AIs using it might be weird
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/camera_advanced/xenobio/attackby(obj/item/O, mob/user, params)
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
|
||||
monkeys++
|
||||
user << "<span class='notice'>You feed [O] to the [src]. It now has [monkeys] monkey cubes stored.</span>"
|
||||
user.drop_item()
|
||||
qdel(O)
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/action/innate/camera_off/xenobio/Activate()
|
||||
if(!target || !ishuman(target))
|
||||
return
|
||||
var/mob/living/carbon/C = target
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/origin = remote_eye.origin
|
||||
origin.current_user = null
|
||||
origin.jump_action.Remove(C)
|
||||
origin.slime_place_action.Remove(C)
|
||||
origin.slime_up_action.Remove(C)
|
||||
origin.feed_slime_action.Remove(C)
|
||||
origin.monkey_recycle_action.Remove(C)
|
||||
//All of this stuff below could probably be a proc for all advanced cameras, only the action removal needs to be camera specific
|
||||
remote_eye.eye_user = null
|
||||
C.reset_perspective(null)
|
||||
if(C.client)
|
||||
C.client.images -= remote_eye.user_image
|
||||
for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks)
|
||||
C.client.images -= chunk.obscured
|
||||
C.remote_control = null
|
||||
C.unset_machine()
|
||||
src.Remove(C)
|
||||
|
||||
|
||||
/datum/action/innate/slime_place
|
||||
name = "Place Slimes"
|
||||
button_icon_state = "slime_down"
|
||||
|
||||
/datum/action/innate/slime_place/Activate()
|
||||
if(!target || !ishuman(owner))
|
||||
return
|
||||
var/mob/living/carbon/human/C = owner
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = target
|
||||
|
||||
if(cameranet.checkTurfVis(remote_eye.loc))
|
||||
for(var/mob/living/simple_animal/slime/S in X.stored_slimes)
|
||||
S.loc = remote_eye.loc
|
||||
S.visible_message("[S] warps in!")
|
||||
X.stored_slimes -= S
|
||||
else
|
||||
owner << "<span class='notice'>Target is not near a camera. Cannot proceed.</span>"
|
||||
|
||||
/datum/action/innate/slime_pick_up
|
||||
name = "Pick up Slime"
|
||||
button_icon_state = "slime_up"
|
||||
|
||||
/datum/action/innate/slime_pick_up/Activate()
|
||||
if(!target || !ishuman(owner))
|
||||
return
|
||||
var/mob/living/carbon/human/C = owner
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = target
|
||||
|
||||
if(cameranet.checkTurfVis(remote_eye.loc))
|
||||
for(var/mob/living/simple_animal/slime/S in remote_eye.loc)
|
||||
if(X.stored_slimes.len >= X.max_slimes)
|
||||
break
|
||||
if(!S.ckey)
|
||||
if(S.buckled)
|
||||
S.Feedstop(silent=1)
|
||||
S.visible_message("[S] vanishes in a flash of light!")
|
||||
S.loc = X
|
||||
X.stored_slimes += S
|
||||
else
|
||||
owner << "<span class='notice'>Target is not near a camera. Cannot proceed.</span>"
|
||||
|
||||
|
||||
/datum/action/innate/feed_slime
|
||||
name = "Feed Slimes"
|
||||
button_icon_state = "monkey_down"
|
||||
|
||||
/datum/action/innate/feed_slime/Activate()
|
||||
if(!target || !ishuman(owner))
|
||||
return
|
||||
var/mob/living/carbon/human/C = owner
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = target
|
||||
|
||||
if(cameranet.checkTurfVis(remote_eye.loc))
|
||||
if(X.monkeys >= 1)
|
||||
var/mob/living/carbon/monkey/food = new /mob/living/carbon/monkey(remote_eye.loc)
|
||||
food.LAssailant = C
|
||||
X.monkeys --
|
||||
owner << "[X] now has [X.monkeys] monkeys left."
|
||||
else
|
||||
owner << "<span class='notice'>Target is not near a camera. Cannot proceed.</span>"
|
||||
|
||||
|
||||
/datum/action/innate/monkey_recycle
|
||||
name = "Recycle Monkeys"
|
||||
button_icon_state = "monkey_up"
|
||||
|
||||
/datum/action/innate/monkey_recycle/Activate()
|
||||
if(!target || !ishuman(owner))
|
||||
return
|
||||
var/mob/living/carbon/human/C = owner
|
||||
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
|
||||
var/obj/machinery/computer/camera_advanced/xenobio/X = target
|
||||
|
||||
if(cameranet.checkTurfVis(remote_eye.loc))
|
||||
for(var/mob/living/carbon/monkey/M in remote_eye.loc)
|
||||
if(M.stat)
|
||||
M.visible_message("[M] vanishes as they are reclaimed for recycling!")
|
||||
X.monkeys = round(X.monkeys + 0.2,0.1)
|
||||
qdel(M)
|
||||
else
|
||||
owner << "<span class='notice'>Target is not near a camera. Cannot proceed.</span>"
|
||||
@@ -0,0 +1,665 @@
|
||||
|
||||
/// Slime Extracts ///
|
||||
|
||||
/obj/item/slime_extract
|
||||
name = "slime extract"
|
||||
desc = "Goo extracted from a slime. Legends claim these to have \"magical powers\"."
|
||||
icon = 'icons/mob/slimes.dmi'
|
||||
icon_state = "grey slime extract"
|
||||
force = 1
|
||||
w_class = 1
|
||||
throwforce = 0
|
||||
throw_speed = 3
|
||||
throw_range = 6
|
||||
origin_tech = "biotech=3"
|
||||
var/Uses = 1 // uses before it goes inert
|
||||
|
||||
/obj/item/slime_extract/attackby(obj/item/O, mob/user)
|
||||
if(istype(O, /obj/item/slimepotion/enhancer))
|
||||
if(Uses >= 5)
|
||||
user << "<span class='warning'>You cannot enhance this extract further!</span>"
|
||||
return ..()
|
||||
user <<"<span class='notice'>You apply the enhancer to the slime extract. It may now be reused one more time.</span>"
|
||||
Uses++
|
||||
qdel(O)
|
||||
..()
|
||||
|
||||
/obj/item/slime_extract/New()
|
||||
..()
|
||||
create_reagents(100)
|
||||
|
||||
/obj/item/slime_extract/grey
|
||||
name = "grey slime extract"
|
||||
icon_state = "grey slime extract"
|
||||
|
||||
/obj/item/slime_extract/gold
|
||||
name = "gold slime extract"
|
||||
icon_state = "gold slime extract"
|
||||
|
||||
/obj/item/slime_extract/silver
|
||||
name = "silver slime extract"
|
||||
icon_state = "silver slime extract"
|
||||
|
||||
/obj/item/slime_extract/metal
|
||||
name = "metal slime extract"
|
||||
icon_state = "metal slime extract"
|
||||
|
||||
/obj/item/slime_extract/purple
|
||||
name = "purple slime extract"
|
||||
icon_state = "purple slime extract"
|
||||
|
||||
/obj/item/slime_extract/darkpurple
|
||||
name = "dark purple slime extract"
|
||||
icon_state = "dark purple slime extract"
|
||||
|
||||
/obj/item/slime_extract/orange
|
||||
name = "orange slime extract"
|
||||
icon_state = "orange slime extract"
|
||||
|
||||
/obj/item/slime_extract/yellow
|
||||
name = "yellow slime extract"
|
||||
icon_state = "yellow slime extract"
|
||||
|
||||
/obj/item/slime_extract/red
|
||||
name = "red slime extract"
|
||||
icon_state = "red slime extract"
|
||||
|
||||
/obj/item/slime_extract/blue
|
||||
name = "blue slime extract"
|
||||
icon_state = "blue slime extract"
|
||||
|
||||
/obj/item/slime_extract/darkblue
|
||||
name = "dark blue slime extract"
|
||||
icon_state = "dark blue slime extract"
|
||||
|
||||
/obj/item/slime_extract/pink
|
||||
name = "pink slime extract"
|
||||
icon_state = "pink slime extract"
|
||||
|
||||
/obj/item/slime_extract/green
|
||||
name = "green slime extract"
|
||||
icon_state = "green slime extract"
|
||||
|
||||
/obj/item/slime_extract/lightpink
|
||||
name = "light pink slime extract"
|
||||
icon_state = "light pink slime extract"
|
||||
|
||||
/obj/item/slime_extract/black
|
||||
name = "black slime extract"
|
||||
icon_state = "black slime extract"
|
||||
|
||||
/obj/item/slime_extract/oil
|
||||
name = "oil slime extract"
|
||||
icon_state = "oil slime extract"
|
||||
|
||||
/obj/item/slime_extract/adamantine
|
||||
name = "adamantine slime extract"
|
||||
icon_state = "adamantine slime extract"
|
||||
|
||||
/obj/item/slime_extract/bluespace
|
||||
name = "bluespace slime extract"
|
||||
icon_state = "bluespace slime extract"
|
||||
|
||||
/obj/item/slime_extract/pyrite
|
||||
name = "pyrite slime extract"
|
||||
icon_state = "pyrite slime extract"
|
||||
|
||||
/obj/item/slime_extract/cerulean
|
||||
name = "cerulean slime extract"
|
||||
icon_state = "cerulean slime extract"
|
||||
|
||||
/obj/item/slime_extract/sepia
|
||||
name = "sepia slime extract"
|
||||
icon_state = "sepia slime extract"
|
||||
|
||||
/obj/item/slime_extract/rainbow
|
||||
name = "rainbow slime extract"
|
||||
icon_state = "rainbow slime extract"
|
||||
|
||||
////Slime-derived potions///
|
||||
|
||||
/obj/item/slimepotion
|
||||
name = "slime potion"
|
||||
desc = "A hard yet gelatinous capsule excreted by a slime, containing mysterious substances."
|
||||
w_class = 1
|
||||
origin_tech = "biotech=4"
|
||||
|
||||
/obj/item/slimepotion/afterattack(obj/item/weapon/reagent_containers/target, mob/user , proximity)
|
||||
if (istype(target))
|
||||
user << "<span class='notice'>You cannot transfer [src] to [target]! It appears the potion must be given directly to a slime to absorb.</span>" // le fluff faec
|
||||
return
|
||||
|
||||
/obj/item/slimepotion/docility
|
||||
name = "docility potion"
|
||||
desc = "A potent chemical mix that nullifies a slime's hunger, causing it to become docile and tame."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle19"
|
||||
|
||||
/obj/item/slimepotion/docility/attack(mob/living/simple_animal/slime/M, mob/user)
|
||||
if(!isslime(M))
|
||||
user << "<span class='warning'>The potion only works on slimes!</span>"
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'>The slime is dead!</span>"
|
||||
return ..()
|
||||
|
||||
M.docile = 1
|
||||
M.nutrition = 700
|
||||
M <<"<span class='warning'>You absorb the potion and feel your intense desire to feed melt away.</span>"
|
||||
user <<"<span class='notice'>You feed the slime the potion, removing its hunger and calming it.</span>"
|
||||
var/newname = copytext(sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text),1,MAX_NAME_LEN)
|
||||
|
||||
if (!newname)
|
||||
newname = "pet slime"
|
||||
M.name = newname
|
||||
M.real_name = newname
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/sentience
|
||||
name = "sentience potion"
|
||||
desc = "A miraculous chemical mix that can raise the intelligence of creatures to human levels. Unlike normal slime potions, it can be absorbed by any nonsentient being."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle19"
|
||||
origin_tech = "biotech=6"
|
||||
var/list/not_interested = list()
|
||||
var/being_used = 0
|
||||
var/sentience_type = SENTIENCE_ORGANIC
|
||||
|
||||
/obj/item/slimepotion/sentience/afterattack(mob/living/M, mob/user)
|
||||
if(being_used || !ismob(M))
|
||||
return
|
||||
if(!isanimal(M) || M.ckey) //only works on animals that aren't player controlled
|
||||
user << "<span class='warning'>[M] is already too intelligent for this to work!</span>"
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'>[M] is dead!</span>"
|
||||
return ..()
|
||||
var/mob/living/simple_animal/SM = M
|
||||
if(SM.sentience_type != sentience_type)
|
||||
user << "<span class='warning'>The potion won't work on [SM].</span>"
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
user << "<span class='notice'>You offer the sentience potion to [SM]...</span>"
|
||||
being_used = 1
|
||||
|
||||
var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [SM.name]?", ROLE_ALIEN, null, ROLE_ALIEN, 50)
|
||||
var/mob/dead/observer/theghost = null
|
||||
if(candidates.len)
|
||||
theghost = pick(candidates)
|
||||
SM.key = theghost.key
|
||||
SM.languages_spoken |= HUMAN
|
||||
SM.languages_understood |= HUMAN
|
||||
SM.faction = user.faction
|
||||
SM.sentience_act()
|
||||
SM << "<span class='warning'>All at once it makes sense: you know what you are and who you are! Self awareness is yours!</span>"
|
||||
SM << "<span class='userdanger'>You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost.</span>"
|
||||
user << "<span class='notice'>[SM] accepts the potion and suddenly becomes attentive and aware. It worked!</span>"
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>[SM] looks interested for a moment, but then looks back down. Maybe you should try again later.</span>"
|
||||
being_used = 0
|
||||
..()
|
||||
|
||||
/obj/item/slimepotion/transference
|
||||
name = "consciousness transference potion"
|
||||
desc = "A strange slime-based chemical that, when used, allows the user to transfer their consciousness to a lesser being."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle6"
|
||||
origin_tech = "biotech=6"
|
||||
var/prompted = 0
|
||||
var/animal_type = SENTIENCE_ORGANIC
|
||||
|
||||
/obj/item/slimepotion/transference/afterattack(mob/living/M, mob/user)
|
||||
if(prompted || !ismob(M))
|
||||
return
|
||||
if(!isanimal(M) || M.ckey) //much like sentience, these will not work on something that is already player controlled
|
||||
user << "<span class='warning'>[M] already has a higher consciousness!</span>"
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'>[M] is dead!</span>"
|
||||
return ..()
|
||||
var/mob/living/simple_animal/SM = M
|
||||
if(SM.sentience_type != animal_type)
|
||||
user << "<span class='warning'>You cannot transfer your consciousness to [SM].</span>" //no controlling machines
|
||||
return ..()
|
||||
if(jobban_isbanned(user, ROLE_ALIEN)) //ideally sentience and trasnference potions should be their own unique role.
|
||||
user << "<span class='warning'>Your mind goes blank as you attempt to use the potion.</span>"
|
||||
return
|
||||
|
||||
prompted = 1
|
||||
if(alert("This will permanently transfer your consciousness to [SM]. Are you sure you want to do this?",,"Yes","No")=="No")
|
||||
prompted = 0
|
||||
return
|
||||
|
||||
user << "<span class='notice'>You drink the potion then place your hands on [SM]...</span>"
|
||||
|
||||
|
||||
user.mind.transfer_to(SM)
|
||||
SM.languages_spoken = user.languages_spoken
|
||||
SM.languages_understood = user.languages_understood
|
||||
SM.faction = user.faction
|
||||
SM.sentience_act() //Same deal here as with sentience
|
||||
user.death()
|
||||
SM << "<span class='notice'>In a quick flash, you feel your consciousness flow into [SM]!</span>"
|
||||
SM << "<span class='warning'>You are now [SM]. Your allegiances, alliances, and role is still the same as it was prior to consciousness transfer!</span>"
|
||||
SM.name = "[SM.name] as [user.real_name]"
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/steroid
|
||||
name = "slime steroid"
|
||||
desc = "A potent chemical mix that will cause a baby slime to generate more extract."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle16"
|
||||
|
||||
/obj/item/slimepotion/steroid/attack(mob/living/simple_animal/slime/M, mob/user)
|
||||
if(!isslime(M))//If target is not a slime.
|
||||
user << "<span class='warning'>The steroid only works on baby slimes!</span>"
|
||||
return ..()
|
||||
if(M.is_adult) //Can't steroidify adults
|
||||
user << "<span class='warning'>Only baby slimes can use the steroid!</span>"
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'>The slime is dead!</span>"
|
||||
return ..()
|
||||
if(M.cores >= 5)
|
||||
user <<"<span class='warning'>The slime already has the maximum amount of extract!</span>"
|
||||
return ..()
|
||||
|
||||
user <<"<span class='notice'>You feed the slime the steroid. It will now produce one more extract.</span>"
|
||||
M.cores++
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/enhancer
|
||||
name = "extract enhancer"
|
||||
desc = "A potent chemical mix that will give a slime extract an additional use."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
|
||||
/obj/item/slimepotion/stabilizer
|
||||
name = "slime stabilizer"
|
||||
desc = "A potent chemical mix that will reduce the chance of a slime mutating."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle15"
|
||||
|
||||
/obj/item/slimepotion/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user)
|
||||
if(!isslime(M))
|
||||
user << "<span class='warning'>The stabilizer only works on slimes!</span>"
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'>The slime is dead!</span>"
|
||||
return ..()
|
||||
if(M.mutation_chance == 0)
|
||||
user <<"<span class='warning'>The slime already has no chance of mutating!</span>"
|
||||
return ..()
|
||||
|
||||
user <<"<span class='notice'>You feed the slime the stabilizer. It is now less likely to mutate.</span>"
|
||||
M.mutation_chance = Clamp(M.mutation_chance-15,0,100)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/mutator
|
||||
name = "slime mutator"
|
||||
desc = "A potent chemical mix that will increase the chance of a slime mutating."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
|
||||
/obj/item/slimepotion/mutator/attack(mob/living/simple_animal/slime/M, mob/user)
|
||||
if(!isslime(M))
|
||||
user << "<span class='warning'>The mutator only works on slimes!</span>"
|
||||
return ..()
|
||||
if(M.stat)
|
||||
user << "<span class='warning'>The slime is dead!</span>"
|
||||
return ..()
|
||||
if(M.mutator_used)
|
||||
user << "<span class='warning'>This slime has already consumed a mutator, any more would be far too unstable!</span>"
|
||||
return ..()
|
||||
if(M.mutation_chance == 100)
|
||||
user <<"<span class='warning'>The slime is already guaranteed to mutate!</span>"
|
||||
return ..()
|
||||
|
||||
user <<"<span class='notice'>You feed the slime the mutator. It is now more likely to mutate.</span>"
|
||||
M.mutation_chance = Clamp(M.mutation_chance+12,0,100)
|
||||
M.mutator_used = TRUE
|
||||
qdel(src)
|
||||
|
||||
/obj/item/slimepotion/speed
|
||||
name = "slime speed potion"
|
||||
desc = "A potent chemical mix that will remove the slowdown from any item."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
origin_tech = "biotech=5"
|
||||
|
||||
/obj/item/slimepotion/speed/afterattack(obj/C, mob/user)
|
||||
..()
|
||||
if(!istype(C))
|
||||
user << "<span class='warning'>The potion can only be used on items or vehicles!</span>"
|
||||
return
|
||||
if(istype(C, /obj/item))
|
||||
var/obj/item/I = C
|
||||
if(I.slowdown <= 0)
|
||||
user << "<span class='warning'>The [C] can't be made any faster!</span>"
|
||||
return ..()
|
||||
I.slowdown = 0
|
||||
|
||||
if(istype(C, /obj/vehicle))
|
||||
var/obj/vehicle/V = C
|
||||
if(V.vehicle_move_delay <= 0)
|
||||
user << "<span class='warning'>The [C] can't be made any faster!</span>"
|
||||
return ..()
|
||||
V.vehicle_move_delay = 0
|
||||
|
||||
user <<"<span class='notice'>You slather the red gunk over the [C], making it faster.</span>"
|
||||
C.color = "#FF0000"
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/item/slimepotion/fireproof
|
||||
name = "slime chill potion"
|
||||
desc = "A potent chemical mix that will fireproof any article of clothing. Has three uses."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
origin_tech = "biotech=5"
|
||||
var/uses = 3
|
||||
|
||||
/obj/item/slimepotion/fireproof/afterattack(obj/item/clothing/C, mob/user)
|
||||
..()
|
||||
if(!uses)
|
||||
qdel(src)
|
||||
return
|
||||
if(!istype(C))
|
||||
user << "<span class='warning'>The potion can only be used on clothing!</span>"
|
||||
return
|
||||
if(C.max_heat_protection_temperature == FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT)
|
||||
user << "<span class='warning'>The [C] is already fireproof!</span>"
|
||||
return ..()
|
||||
user <<"<span class='notice'>You slather the blue gunk over the [C], fireproofing it.</span>"
|
||||
C.name = "fireproofed [C.name]"
|
||||
C.color = "#000080"
|
||||
C.max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
|
||||
C.heat_protection = C.body_parts_covered
|
||||
C.burn_state = FIRE_PROOF
|
||||
uses --
|
||||
if(!uses)
|
||||
qdel(src)
|
||||
|
||||
////////Adamantine Golem stuff I dunno where else to put it
|
||||
|
||||
// This will eventually be removed.
|
||||
|
||||
/obj/item/clothing/under/golem
|
||||
name = "adamantine skin"
|
||||
desc = "a golem's skin"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
item_color = "golem"
|
||||
flags = ABSTRACT | NODROP
|
||||
has_sensor = 0
|
||||
|
||||
/obj/item/clothing/suit/golem
|
||||
name = "adamantine shell"
|
||||
desc = "a golem's thick outter shell"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
w_class = 4//bulky item
|
||||
gas_transfer_coefficient = 0.90
|
||||
permeability_coefficient = 0.50
|
||||
body_parts_covered = FULL_BODY
|
||||
flags_inv = HIDEGLOVES | HIDESHOES | HIDEJUMPSUIT
|
||||
flags = ABSTRACT | NODROP
|
||||
|
||||
/obj/item/clothing/shoes/golem
|
||||
name = "golem's feet"
|
||||
desc = "sturdy adamantine feet"
|
||||
icon_state = "golem"
|
||||
item_state = null
|
||||
flags = NOSLIP | ABSTRACT | NODROP
|
||||
|
||||
|
||||
/obj/item/clothing/mask/breath/golem
|
||||
name = "golem's face"
|
||||
desc = "the imposing face of an adamantine golem"
|
||||
icon_state = "golem"
|
||||
item_state = "golem"
|
||||
siemens_coefficient = 0
|
||||
unacidable = 1
|
||||
flags = ABSTRACT | NODROP
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/golem
|
||||
name = "golem's hands"
|
||||
desc = "strong adamantine hands"
|
||||
icon_state = "golem"
|
||||
item_state = null
|
||||
siemens_coefficient = 0
|
||||
flags = ABSTRACT | NODROP
|
||||
|
||||
|
||||
/obj/item/clothing/head/space/golem
|
||||
icon_state = "golem"
|
||||
item_state = "dermal"
|
||||
item_color = "dermal"
|
||||
name = "golem's head"
|
||||
desc = "a golem's head"
|
||||
unacidable = 1
|
||||
flags = ABSTRACT | NODROP
|
||||
|
||||
/obj/effect/golemrune
|
||||
anchored = 1
|
||||
desc = "a strange rune used to create golems. It glows when spirits are nearby."
|
||||
name = "rune"
|
||||
icon = 'icons/obj/rune.dmi'
|
||||
icon_state = "golem"
|
||||
unacidable = 1
|
||||
layer = TURF_LAYER
|
||||
|
||||
/obj/effect/golemrune/New()
|
||||
..()
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/effect/golemrune/process()
|
||||
var/mob/dead/observer/ghost
|
||||
for(var/mob/dead/observer/O in src.loc)
|
||||
if(!O.client)
|
||||
continue
|
||||
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
|
||||
continue
|
||||
if (O.orbiting)
|
||||
continue
|
||||
ghost = O
|
||||
break
|
||||
if(ghost)
|
||||
icon_state = "golem2"
|
||||
else
|
||||
icon_state = "golem"
|
||||
|
||||
/obj/effect/golemrune/attack_hand(mob/living/user)
|
||||
var/mob/dead/observer/ghost
|
||||
for(var/mob/dead/observer/O in src.loc)
|
||||
if(!O.client)
|
||||
continue
|
||||
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
|
||||
continue
|
||||
if (O.orbiting)
|
||||
continue
|
||||
ghost = O
|
||||
break
|
||||
if(!ghost)
|
||||
user << "<span class='warning'>The rune fizzles uselessly! There is no spirit nearby.</span>"
|
||||
return
|
||||
var/mob/living/carbon/human/G = new /mob/living/carbon/human
|
||||
G.set_species(/datum/species/golem/adamantine)
|
||||
G.set_cloned_appearance()
|
||||
G.real_name = "Adamantine Golem ([rand(1, 1000)])"
|
||||
G.name = G.real_name
|
||||
G.dna.unique_enzymes = G.dna.generate_unique_enzymes()
|
||||
G.dna.species.auto_equip(G)
|
||||
G.loc = src.loc
|
||||
G.key = ghost.key
|
||||
G << "You are an adamantine golem. You move slowly, but are highly resistant to heat and cold as well as blunt trauma. You are unable to wear clothes, but can still use most tools. Serve [user], and assist them in completing their goals at any cost."
|
||||
G.mind.store_memory("<b>Serve [user.real_name], your creator.</b>")
|
||||
|
||||
var/golem_becomes_antag = FALSE
|
||||
if(iscultist(user)) //If the golem's master is a part of a team antagonist, immediately make the golem one, too
|
||||
ticker.mode.add_cultist(G.mind)
|
||||
golem_becomes_antag = TRUE
|
||||
else if(is_gangster(user))
|
||||
ticker.mode.add_gangster(G.mind, user.mind.gang_datum, TRUE)
|
||||
golem_becomes_antag = TRUE
|
||||
else if(is_handofgod_redcultist(user) || is_handofgod_redprophet(user))
|
||||
ticker.mode.add_hog_follower(G.mind, "Red")
|
||||
golem_becomes_antag = TRUE
|
||||
else if(is_handofgod_bluecultist(user) || is_handofgod_blueprophet(user))
|
||||
ticker.mode.add_hog_follower(G.mind, "Blue")
|
||||
golem_becomes_antag = TRUE
|
||||
else if(is_revolutionary_in_general(user))
|
||||
ticker.mode.add_revolutionary(G.mind)
|
||||
golem_becomes_antag = TRUE
|
||||
else if(is_servant_of_ratvar(user))
|
||||
add_servant_of_ratvar(G)
|
||||
golem_becomes_antag = TRUE
|
||||
|
||||
G.mind.enslaved_to = user
|
||||
if(golem_becomes_antag)
|
||||
G << "<span class='userdanger'>Despite your servitude to another cause, your true master remains [user.real_name]. This will never change unless your master's body is destroyed.</span>"
|
||||
if(user.mind.special_role)
|
||||
message_admins("[key_name_admin(G)](<A HREF='?_src_=holder;adminmoreinfo=\ref[G]'>?</A>) has been summoned by [key_name_admin(user)](<A HREF='?_src_=holder;adminmoreinfo=\ref[user]'>?</A>), an antagonist.")
|
||||
log_game("[key_name(G)] was made a golem by [key_name(user)].")
|
||||
log_admin("[key_name(G)] was made a golem by [key_name(user)].")
|
||||
qdel(src)
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/effect/timestop
|
||||
anchored = 1
|
||||
name = "chronofield"
|
||||
desc = "ZA WARUDO"
|
||||
icon = 'icons/effects/160x160.dmi'
|
||||
icon_state = "time"
|
||||
layer = FLY_LAYER
|
||||
pixel_x = -64
|
||||
pixel_y = -64
|
||||
unacidable = 1
|
||||
mouse_opacity = 0
|
||||
var/mob/living/immune = list() // the one who creates the timestop is immune
|
||||
var/list/stopped_atoms = list()
|
||||
var/freezerange = 2
|
||||
var/duration = 140
|
||||
alpha = 125
|
||||
|
||||
/obj/effect/timestop/New()
|
||||
..()
|
||||
for(var/mob/living/M in player_list)
|
||||
for(var/obj/effect/proc_holder/spell/aoe_turf/conjure/timestop/T in M.mind.spell_list) //People who can stop time are immune to timestop
|
||||
immune |= M
|
||||
timestop()
|
||||
|
||||
|
||||
/obj/effect/timestop/proc/timestop()
|
||||
playsound(get_turf(src), 'sound/magic/TIMEPARADOX2.ogg', 100, 1, -1)
|
||||
for(var/i in 1 to duration-1)
|
||||
for(var/atom/A in orange (freezerange, src.loc))
|
||||
if(istype(A, /mob/living))
|
||||
var/mob/living/M = A
|
||||
if(M in immune)
|
||||
continue
|
||||
M.Stun(10, 1, 1)
|
||||
M.anchored = 1
|
||||
if(istype(M, /mob/living/simple_animal/hostile))
|
||||
var/mob/living/simple_animal/hostile/H = M
|
||||
H.AIStatus = AI_OFF
|
||||
H.LoseTarget()
|
||||
stopped_atoms |= M
|
||||
else if(istype(A, /obj/item/projectile))
|
||||
var/obj/item/projectile/P = A
|
||||
P.paused = TRUE
|
||||
stopped_atoms |= P
|
||||
|
||||
for(var/mob/living/M in stopped_atoms)
|
||||
if(get_dist(get_turf(M),get_turf(src)) > freezerange) //If they lagged/ran past the timestop somehow, just ignore them
|
||||
unfreeze_mob(M)
|
||||
stopped_atoms -= M
|
||||
stoplag()
|
||||
|
||||
//End
|
||||
for(var/mob/living/M in stopped_atoms)
|
||||
unfreeze_mob(M)
|
||||
|
||||
for(var/obj/item/projectile/P in stopped_atoms)
|
||||
P.paused = FALSE
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
|
||||
/obj/effect/timestop/proc/unfreeze_mob(mob/living/M)
|
||||
M.AdjustStunned(-10, 1, 1)
|
||||
M.anchored = 0
|
||||
if(istype(M, /mob/living/simple_animal/hostile))
|
||||
var/mob/living/simple_animal/hostile/H = M
|
||||
H.AIStatus = initial(H.AIStatus)
|
||||
|
||||
|
||||
/obj/effect/timestop/wizard
|
||||
duration = 100
|
||||
|
||||
|
||||
/obj/item/stack/tile/bluespace
|
||||
name = "bluespace floor tile"
|
||||
singular_name = "floor tile"
|
||||
desc = "Through a series of micro-teleports these tiles let people move at incredible speeds"
|
||||
icon_state = "tile-bluespace"
|
||||
w_class = 3
|
||||
force = 6
|
||||
materials = list(MAT_METAL=500)
|
||||
throwforce = 10
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
flags = CONDUCT
|
||||
max_amount = 60
|
||||
turf_type = /turf/open/floor/bluespace
|
||||
|
||||
|
||||
/turf/open/floor/bluespace
|
||||
slowdown = -1
|
||||
icon_state = "bluespace"
|
||||
desc = "Through a series of micro-teleports these tiles let people move at incredible speeds"
|
||||
floor_tile = /obj/item/stack/tile/bluespace
|
||||
|
||||
|
||||
/obj/item/stack/tile/sepia
|
||||
name = "sepia floor tile"
|
||||
singular_name = "floor tile"
|
||||
desc = "Time seems to flow very slowly around these tiles"
|
||||
icon_state = "tile-sepia"
|
||||
w_class = 3
|
||||
force = 6
|
||||
materials = list(MAT_METAL=500)
|
||||
throwforce = 10
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
flags = CONDUCT
|
||||
max_amount = 60
|
||||
turf_type = /turf/open/floor/sepia
|
||||
|
||||
|
||||
/turf/open/floor/sepia
|
||||
slowdown = 2
|
||||
icon_state = "sepia"
|
||||
desc = "Time seems to flow very slowly around these tiles"
|
||||
floor_tile = /obj/item/stack/tile/sepia
|
||||
|
||||
|
||||
/obj/item/areaeditor/blueprints/slime
|
||||
name = "cerulean prints"
|
||||
desc = "A one use yet of blueprints made of jelly like organic material. Renaming an area to 'Xenobiology Lab' will extend the reach of the management console."
|
||||
color = "#2956B2"
|
||||
|
||||
/obj/item/areaeditor/blueprints/slime/edit_area()
|
||||
var/success = ..()
|
||||
var/area/A = get_area(src)
|
||||
if(success)
|
||||
for(var/turf/T in A)
|
||||
T.color = "#2956B2"
|
||||
qdel(src)
|
||||
Reference in New Issue
Block a user