This commit is contained in:
Ghommie
2020-01-18 22:14:06 +01:00
54 changed files with 4114 additions and 2584 deletions
@@ -0,0 +1,108 @@
/obj/machinery/atmospherics/components/binary/relief_valve
name = "binary pressure relief valve"
desc = "Like a manual valve, but opens at a certain pressure rather than being toggleable."
icon = 'icons/obj/atmospherics/components/relief_valve.dmi'
icon_state = "relief_valve-t-map"
can_unwrench = TRUE
construction_type = /obj/item/pipe/binary
var/opened = FALSE
var/open_pressure = ONE_ATMOSPHERE * 3
var/close_pressure = ONE_ATMOSPHERE
pipe_state = "relief_valve-t"
/obj/machinery/atmospherics/components/binary/relief_valve/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
pixel_y = -PIPING_LAYER_P_Y
/obj/machinery/atmospherics/components/binary/relief_valve/layer3
piping_layer = PIPING_LAYER_MAX
pixel_x = PIPING_LAYER_P_X
pixel_y = PIPING_LAYER_P_Y
/obj/machinery/atmospherics/components/binary/relief_valve/update_icon_nopipes()
if(dir==SOUTH)
setDir(NORTH)
else if(dir==WEST)
setDir(EAST)
cut_overlays()
if(!nodes[1] || !opened || !is_operational())
icon_state = "relief_valve-t"
return
icon_state = "relief_valve-t-blown"
/obj/machinery/atmospherics/components/binary/relief_valve/proc/open()
opened = TRUE
update_icon_nopipes()
update_parents()
var/datum/pipeline/parent1 = parents[1]
parent1.reconcile_air()
/obj/machinery/atmospherics/components/binary/relief_valve/proc/close()
opened = FALSE
update_icon_nopipes()
/obj/machinery/atmospherics/components/binary/relief_valve/process_atmos()
..()
if(!is_operational())
return
var/datum/gas_mixture/air_contents = airs[1]
var/our_pressure = air_contents.return_pressure()
if(opened && our_pressure < close_pressure)
close()
else if(!opened && our_pressure >= open_pressure)
open()
/obj/machinery/atmospherics/components/binary/relief_valve/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmos_relief", name, 335, 115, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/binary/relief_valve/ui_data()
var/data = list()
data["open_pressure"] = round(open_pressure)
data["close_pressure"] = round(close_pressure)
data["max_pressure"] = round(50*ONE_ATMOSPHERE)
return data
/obj/machinery/atmospherics/components/binary/relief_valve/ui_act(action, params)
if(..())
return
switch(action)
if("open_pressure")
var/pressure = params["open_pressure"]
if(pressure == "max")
pressure = 50*ONE_ATMOSPHERE
. = TRUE
else if(pressure == "input")
pressure = input("New output pressure ([close_pressure]-[50*ONE_ATMOSPHERE] kPa):", name, open_pressure) as num|null
if(!isnull(pressure) && !..())
. = TRUE
else if(text2num(pressure) != null)
pressure = text2num(pressure)
. = TRUE
if(.)
open_pressure = CLAMP(pressure, close_pressure, 50*ONE_ATMOSPHERE)
investigate_log("open pressure was set to [open_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS)
if("close_pressure")
var/pressure = params["close_pressure"]
if(pressure == "max")
pressure = open_pressure
. = TRUE
else if(pressure == "input")
pressure = input("New output pressure (0-[open_pressure] kPa):", name, close_pressure) as num|null
if(!isnull(pressure) && !..())
. = TRUE
else if(text2num(pressure) != null)
pressure = text2num(pressure)
. = TRUE
if(.)
close_pressure = CLAMP(pressure, 0, open_pressure)
investigate_log("close pressure was set to [close_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS)
update_icon()
@@ -0,0 +1,55 @@
/obj/machinery/atmospherics/components/unary/passive_vent
icon_state = "passive_vent_map-2"
name = "passive vent"
desc = "It is an open vent."
can_unwrench = TRUE
level = 1
layer = GAS_SCRUBBER_LAYER
pipe_state = "pvent"
/obj/machinery/atmospherics/components/unary/passive_vent/update_icon_nopipes()
cut_overlays()
if(showpipe)
var/image/cap = getpipeimage(icon, "vent_cap", initialize_directions)
add_overlay(cap)
icon_state = "passive_vent"
/obj/machinery/atmospherics/components/unary/passive_vent/process_atmos()
..()
var/datum/gas_mixture/environment = loc.return_air()
var/environment_pressure = environment.return_pressure()
var/pressure_delta = abs(environment_pressure - airs[1].return_pressure())
if((environment.temperature || airs[1].temperature) && pressure_delta > 0.5)
if(environment_pressure < airs[1].return_pressure())
var/air_temperature = (environment.temperature > 0) ? environment.temperature : airs[1].temperature
var/transfer_moles = (pressure_delta * environment.volume) / (air_temperature * R_IDEAL_GAS_EQUATION)
var/datum/gas_mixture/removed = airs[1].remove(transfer_moles)
loc.assume_air(removed)
air_update_turf()
else
var/air_temperature = (airs[1].temperature > 0) ? airs[1].temperature : environment.temperature
var/output_volume = airs[1].volume
var/transfer_moles = (pressure_delta * output_volume) / (air_temperature * R_IDEAL_GAS_EQUATION)
transfer_moles = min(transfer_moles, environment.total_moles()*airs[1].volume/environment.volume)
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
if(isnull(removed))
return
airs[1].merge(removed)
air_update_turf()
update_parents()
/obj/machinery/atmospherics/components/unary/passive_vent/can_crawl_through()
return TRUE
/obj/machinery/atmospherics/components/unary/passive_vent/layer1
piping_layer = PIPING_LAYER_MIN
icon_state = "passive_vent_map-1"
/obj/machinery/atmospherics/components/unary/passive_vent/layer3
piping_layer = PIPING_LAYER_MAX
icon_state = "passive_vent_map-3"
@@ -0,0 +1,111 @@
/obj/machinery/atmospherics/components/unary/relief_valve
name = "pressure relief valve"
desc = "A valve that opens to the air at a certain pressure, then closes once it goes below another."
icon = 'icons/obj/atmospherics/components/relief_valve.dmi'
icon_state = "relief_valve-e-map"
can_unwrench = TRUE
var/opened = FALSE
var/open_pressure = ONE_ATMOSPHERE * 3
var/close_pressure = ONE_ATMOSPHERE
pipe_state = "relief_valve-e"
/obj/machinery/atmospherics/components/unary/relief_valve/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
pixel_y = -PIPING_LAYER_P_Y
/obj/machinery/atmospherics/components/unary/relief_valve/layer3
piping_layer = PIPING_LAYER_MAX
pixel_x = PIPING_LAYER_P_X
pixel_y = PIPING_LAYER_P_Y
/obj/machinery/atmospherics/components/unary/relief_valve/atmos
close_pressure = ONE_ATMOSPHERE * 2
/obj/machinery/atmospherics/components/unary/relief_valve/atmos/atmos_waste
name = "atmos waste relief valve"
/obj/machinery/atmospherics/components/unary/relief_valve/update_icon_nopipes()
cut_overlays()
if(!nodes[1] || !opened || !is_operational())
icon_state = "relief_valve-e"
return
icon_state = "relief_valve-e-blown"
/obj/machinery/atmospherics/components/unary/relief_valve/process_atmos()
..()
if(!is_operational())
return
var/datum/gas_mixture/air_contents = airs[1]
var/our_pressure = air_contents.return_pressure()
if(opened && our_pressure < close_pressure)
opened = FALSE
update_icon_nopipes()
else if(!opened && our_pressure >= open_pressure)
opened = TRUE
update_icon_nopipes()
if(opened && air_contents.temperature > 0)
var/datum/gas_mixture/environment = loc.return_air()
var/pressure_delta = our_pressure - environment.return_pressure()
var/transfer_moles = pressure_delta*200/(air_contents.temperature * R_IDEAL_GAS_EQUATION)
if(transfer_moles > 0)
var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
loc.assume_air(removed)
air_update_turf()
update_parents()
/obj/machinery/atmospherics/components/unary/relief_valve/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmos_relief", name, 335, 115, master_ui, state)
ui.open()
/obj/machinery/atmospherics/components/unary/relief_valve/ui_data()
var/data = list()
data["open_pressure"] = round(open_pressure)
data["close_pressure"] = round(close_pressure)
data["max_pressure"] = round(50*ONE_ATMOSPHERE)
return data
/obj/machinery/atmospherics/components/unary/relief_valve/ui_act(action, params)
if(..())
return
switch(action)
if("open_pressure")
var/pressure = params["open_pressure"]
if(pressure == "max")
pressure = 50*ONE_ATMOSPHERE
. = TRUE
else if(pressure == "input")
pressure = input("New output pressure ([close_pressure]-[50*ONE_ATMOSPHERE] kPa):", name, open_pressure) as num|null
if(!isnull(pressure) && !..())
. = TRUE
else if(text2num(pressure) != null)
pressure = text2num(pressure)
. = TRUE
if(.)
open_pressure = CLAMP(pressure, close_pressure, 50*ONE_ATMOSPHERE)
investigate_log("open pressure was set to [open_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS)
if("close_pressure")
var/pressure = params["close_pressure"]
if(pressure == "max")
pressure = open_pressure
. = TRUE
else if(pressure == "input")
pressure = input("New output pressure (0-[open_pressure] kPa):", name, close_pressure) as num|null
if(!isnull(pressure) && !..())
. = TRUE
else if(text2num(pressure) != null)
pressure = text2num(pressure)
. = TRUE
if(.)
close_pressure = CLAMP(pressure, 0, open_pressure)
investigate_log("close pressure was set to [close_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS)
update_icon()
@@ -227,6 +227,11 @@
if(V.on)
PL |= V.parents[1]
PL |= V.parents[2]
else if (istype(atmosmch,/obj/machinery/atmospherics/components/binary/relief_valve))
var/obj/machinery/atmospherics/components/binary/relief_valve/V = atmosmch
if(V.opened)
PL |= V.parents[1]
PL |= V.parents[2]
else if (istype(atmosmch, /obj/machinery/atmospherics/components/unary/portables_connector))
var/obj/machinery/atmospherics/components/unary/portables_connector/C = atmosmch
if(C.connected_device)
+1
View File
@@ -158,6 +158,7 @@
I.CheckParts(parts, R)
if(send_feedback)
SSblackbox.record_feedback("tally", "object_crafted", 1, I.type)
log_craft("[I] crafted by [user] at [loc_name(I.loc)]")
return 0
return "."
return ", missing tool."
@@ -65,7 +65,7 @@
reagents.add_reagent(extra_reagent, 3)
/obj/item/reagent_containers/food/snacks/donut/meat
name = "Meat Donut"
name = "meat donut"
desc = "Tastes as gross as it looks."
icon_state = "donut_meat"
bonus_reagents = list(/datum/reagent/consumable/ketchup = 1)
@@ -152,7 +152,7 @@
icon_state = "jelly"
decorated_icon = "jelly_homer"
bonus_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
extra_reagent = "berryjuice"
extra_reagent = /datum/reagent/consumable/berryjuice
tastes = list("jelly" = 1, "donut" = 3)
foodtype = JUNKFOOD | GRAIN | FRIED | FRUIT | SUGAR | BREAKFAST
@@ -240,7 +240,7 @@
name = "jelly donut"
desc = "You jelly?"
icon_state = "jelly"
extra_reagent = "slimejelly"
extra_reagent = /datum/reagent/toxin/slimejelly
foodtype = JUNKFOOD | GRAIN | FRIED | TOXIC | SUGAR | BREAKFAST
/obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/plain
+8
View File
@@ -87,6 +87,14 @@
return
. = ..()
/obj/machinery/computer/shuttle/mining/common
name = "lavaland shuttle console"
desc = "Used to call and send the lavaland shuttle."
req_access = list()
circuit = /obj/item/circuitboard/computer/mining_shuttle/common
shuttleId = "mining_common"
possible_destinations = "whiteship_home;lavaland_common_away;landing_zone_dock;mining_public"
/**********************Mining car (Crate like thing, not the rail car)**************************/
/obj/structure/closet/crate/miningcar
@@ -222,7 +222,6 @@
/datum/chemical_reaction/mix_virus
name = "Mix Virus"
id = "mixvirus"
results = list(/datum/reagent/blood = 1)
required_reagents = list(/datum/reagent/consumable/virus_food = 1)
required_catalysts = list(/datum/reagent/blood = 1)
var/level_min = 1
@@ -234,8 +233,8 @@
if(B && B.data)
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
if(D)
D.Evolve(level_min, level_max)
for(var/i in 1 to min(created_volume, 5))
D.Evolve(level_min, level_max)
/datum/chemical_reaction/mix_virus/mix_virus_2
@@ -326,19 +325,18 @@
level_max = 8
/datum/chemical_reaction/mix_virus/rem_virus
name = "Devolve Virus"
id = "remvirus"
required_reagents = list(/datum/reagent/medicine/synaptizine = 1)
required_catalysts = list(/datum/reagent/blood = 1)
/datum/chemical_reaction/mix_virus/rem_virus/on_reaction(datum/reagents/holder, created_volume)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
if(B && B.data)
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
if(D)
D.Devolve()
for(var/i in 1 to min(created_volume, 5))
D.Devolve()
/datum/chemical_reaction/mix_virus/neuter_virus
name = "Neuter Virus"
@@ -347,14 +345,12 @@
required_catalysts = list(/datum/reagent/blood = 1)
/datum/chemical_reaction/mix_virus/neuter_virus/on_reaction(datum/reagents/holder, created_volume)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
if(B && B.data)
var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"]
if(D)
D.Neuter()
for(var/i in 1 to min(created_volume, 5))
D.Neuter()
////////////////////////////////// foam and foam precursor ///////////////////////////////////////////////////
@@ -117,7 +117,7 @@
name = "Foam Riot Dart"
id = "riot_dart"
build_type = AUTOLATHE
materials = list(MAT_METAL = 1000) //Discount for making individually - no box = less metal!
materials = list(MAT_METAL = 1125) //Discount for making individually - no box = less metal!
build_path = /obj/item/ammo_casing/caseless/foam_dart/riot
category = list("hacked", "Security")
@@ -1,180 +1,180 @@
///////////////////////////////////
/////Non-Board Computer Stuff//////
///////////////////////////////////
/datum/design/intellicard
name = "Intellicard AI Transportation System"
desc = "Allows for the construction of an intellicard."
id = "intellicard"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 1000, MAT_GOLD = 200)
build_path = /obj/item/aicard
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/paicard
name = "Personal Artificial Intelligence Card"
desc = "Allows for the construction of a pAI Card."
id = "paicard"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
build_path = /obj/item/paicard
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_ALL
/datum/design/ai_cam_upgrade
name = "AI Surveillance Software Update"
desc = "A software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading."
id = "ai_cam_upgrade"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 15000, MAT_SILVER = 15000, MAT_DIAMOND = 20000, MAT_PLASMA = 10000)
build_path = /obj/item/surveillance_upgrade
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
///////////////////////////////////
//////////Nanite Devices///////////
///////////////////////////////////
/datum/design/nanite_remote
name = "Nanite Remote"
desc = "Allows for the construction of a nanite remote."
id = "nanite_remote"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
build_path = /obj/item/nanite_remote
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/nanite_comm_remote
name = "Nanite Communication Remote"
desc = "Allows for the construction of a nanite communication remote."
id = "nanite_comm_remote"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
build_path = /obj/item/nanite_remote/comm
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/nanite_scanner
name = "Nanite Scanner"
desc = "Allows for the construction of a nanite scanner."
id = "nanite_scanner"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
build_path = /obj/item/nanite_scanner
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
////////////////////////////////////////
//////////Disk Construction Disks///////
////////////////////////////////////////
/datum/design/design_disk
name = "Design Storage Disk"
desc = "Produce additional disks for storing device designs."
id = "design_disk"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
build_path = /obj/item/disk/design_disk
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/design_disk_adv
name = "Advanced Design Storage Disk"
desc = "Produce additional disks for storing device designs."
id = "design_disk_adv"
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
build_path = /obj/item/disk/design_disk/adv
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/tech_disk
name = "Technology Data Storage Disk"
desc = "Produce additional disks for storing technology data."
id = "tech_disk"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
build_path = /obj/item/disk/tech_disk
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/nanite_disk
name = "Nanite Program Disk"
desc = "Stores nanite programs."
id = "nanite_disk"
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
build_path = /obj/item/disk/nanite_program
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/integrated_printer
name = "Integrated circuit printer"
desc = "This machine provides all necessary things for circuitry."
id = "icprinter"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 5000, MAT_METAL = 10000)
build_path = /obj/item/integrated_circuit_printer
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/IC_printer_upgrade_advanced
name = "Integrated circuit printer upgrade: Advanced Designs"
desc = "This disk allows for integrated circuit printers to print advanced circuitry designs."
id = "icupgadv"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 10000, MAT_METAL = 10000)
build_path = /obj/item/disk/integrated_circuit/upgrade/advanced
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/IC_printer_upgrade_clone
name = "Integrated circuit printer upgrade: Instant Cloning"
desc = "This disk allows for integrated circuit printers to clone designs instantaneously."
id = "icupgclo"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 10000, MAT_METAL = 10000)
build_path = /obj/item/disk/integrated_circuit/upgrade/clone
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
//CIT ADDITIONS
/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"
build_type = MECHFAB | PROTOLATHE
materials = list(MAT_METAL = 800, MAT_GLASS = 350)
construction_time = 150
build_path = /obj/item/drone_shell
category = list("Misc")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/xenobio_upgrade
name = "owo"
desc = "someone's bussin"
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/xenobio_upgrade/xenobiomonkeys
name = "Xenobiology console monkey upgrade disk"
desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console."
id = "xenobio_monkeys"
build_path = /obj/item/disk/xenobio_console_upgrade/monkey
/datum/design/xenobio_upgrade/xenobioslimebasic
name = "Xenobiology console basic slime upgrade disk"
desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console."
id = "xenobio_slimebasic"
build_path = /obj/item/disk/xenobio_console_upgrade/slimebasic
/datum/design/xenobio_upgrade/xenobioslimeadv
name = "Xenobiology console advanced slime upgrade disk"
desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk."
id = "xenobio_slimeadv"
build_path = /obj/item/disk/xenobio_console_upgrade/slimeadv
///////////////////////////////////
/////Non-Board Computer Stuff//////
///////////////////////////////////
/datum/design/intellicard
name = "Intellicard AI Transportation System"
desc = "Allows for the construction of an intellicard."
id = "intellicard"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 1000, MAT_GOLD = 200)
build_path = /obj/item/aicard
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/paicard
name = "Personal Artificial Intelligence Card"
desc = "Allows for the construction of a pAI Card."
id = "paicard"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
build_path = /obj/item/paicard
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_ALL
/datum/design/ai_cam_upgrade
name = "AI Surveillance Software Update"
desc = "A software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading."
id = "ai_cam_upgrade"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 15000, MAT_SILVER = 15000, MAT_DIAMOND = 20000, MAT_PLASMA = 10000)
build_path = /obj/item/surveillance_upgrade
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
///////////////////////////////////
//////////Nanite Devices///////////
///////////////////////////////////
/datum/design/nanite_remote
name = "Nanite Remote"
desc = "Allows for the construction of a nanite remote."
id = "nanite_remote"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
build_path = /obj/item/nanite_remote
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/nanite_comm_remote
name = "Nanite Communication Remote"
desc = "Allows for the construction of a nanite communication remote."
id = "nanite_comm_remote"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
build_path = /obj/item/nanite_remote/comm
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/nanite_scanner
name = "Nanite Scanner"
desc = "Allows for the construction of a nanite scanner."
id = "nanite_scanner"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
build_path = /obj/item/nanite_scanner
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
////////////////////////////////////////
//////////Disk Construction Disks///////
////////////////////////////////////////
/datum/design/design_disk
name = "Design Storage Disk"
desc = "Produce additional disks for storing device designs."
id = "design_disk"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
build_path = /obj/item/disk/design_disk
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/design_disk_adv
name = "Advanced Design Storage Disk"
desc = "Produce additional disks for storing device designs."
id = "design_disk_adv"
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
build_path = /obj/item/disk/design_disk/adv
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/tech_disk
name = "Technology Data Storage Disk"
desc = "Produce additional disks for storing technology data."
id = "tech_disk"
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
build_path = /obj/item/disk/tech_disk
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/nanite_disk
name = "Nanite Program Disk"
desc = "Stores nanite programs."
id = "nanite_disk"
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
build_path = /obj/item/disk/nanite_program
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/integrated_printer
name = "Integrated circuit printer"
desc = "This machine provides all necessary things for circuitry."
id = "icprinter"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 5000, MAT_METAL = 10000)
build_path = /obj/item/integrated_circuit_printer
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/IC_printer_upgrade_advanced
name = "Integrated circuit printer upgrade: Advanced Designs"
desc = "This disk allows for integrated circuit printers to print advanced circuitry designs."
id = "icupgadv"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 10000, MAT_METAL = 10000)
build_path = /obj/item/disk/integrated_circuit/upgrade/advanced
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/IC_printer_upgrade_clone
name = "Integrated circuit printer upgrade: Instant Cloning"
desc = "This disk allows for integrated circuit printers to clone designs instantaneously."
id = "icupgclo"
build_type = PROTOLATHE
materials = list(MAT_GLASS = 10000, MAT_METAL = 10000)
build_path = /obj/item/disk/integrated_circuit/upgrade/clone
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
//CIT ADDITIONS
/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"
build_type = MECHFAB | PROTOLATHE
materials = list(MAT_METAL = 800, MAT_GLASS = 350)
construction_time = 150
build_path = /obj/item/drone_shell
category = list("Misc")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/xenobio_upgrade
name = "owo"
desc = "someone's bussin"
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/xenobio_upgrade/xenobiomonkeys
name = "Xenobiology console monkey upgrade disk"
desc = "This disk will add the ability to remotely recycle monkeys via the Xenobiology console."
id = "xenobio_monkeys"
build_path = /obj/item/disk/xenobio_console_upgrade/monkey
/datum/design/xenobio_upgrade/xenobioslimebasic
name = "Xenobiology console basic slime upgrade disk"
desc = "This disk will add the ability to remotely manipulate slimes via the Xenobiology console."
id = "xenobio_slimebasic"
build_path = /obj/item/disk/xenobio_console_upgrade/slimebasic
/datum/design/xenobio_upgrade/xenobioslimeadv
name = "Xenobiology console advanced slime upgrade disk"
desc = "This disk will add the ability to remotely feed slimes potions via the Xenobiology console, and lift the restrictions on the number of slimes that can be stored inside the Xenobiology console. This includes the contents of the basic slime upgrade disk."
id = "xenobio_slimeadv"
build_path = /obj/item/disk/xenobio_console_upgrade/slimeadv