12/21 modernizations from TG live (#103)

* sync (#3)

* shuttle auto call

* Merge /vore into /master (#39)

* progress

* Compile errors fixed

No idea if it's test worthy tho as conflicts with race overhaul and
narky removal.

* Update admins.txt

* efforts continue

Fuck grab code, seriously

* grab code is cancer

* Execute the Narkism

Do not hesitate.

Show no mercy.

* holy shit grab code is awful

* have I bitched about grab code

My bitching, let me show you it

* código de agarre es una mierda

No really it is

* yeah I don't even know anymore.

* Lolnope. Fuck grab code

* I'm not even sure what to fix anymore

* Self eating is not an acceptable fate

* Taste the void, son.

* My code doesn't pass it's own sanity check.

Maybe it's a sign of things to come.

* uncommented and notes

* It Works and I Don't Know Why (#38)

* shuttle auto call

* it works and I don't know why

* Subsystem 12/21

Most Recent TG subsystem folder

* globalvars 12/21

Tossed out the flavor_misc and parallax files

* Onclick 12/21

as well as .dme updates

* _defines 12/21

ommited old _MC.dm

* _HELPERS 12/21

Preserved snowflake placement of furry sprites

* _defeines/genetics

reapplied narkism holdover for snowflake races.

* Oops forgot mutant colors

* modules porting 12/21 + Sounds/icons

Admin, Client and most of mob life files ommitted

* enviroment file

* Admin optimizations

ahelp log system kept

* Mob ports 12/21

Flavor text preserved

* datums ported 12/21

* Game ported 12/21

* batch of duplicate fixes/dogborg work

Dogborgs need to be modernized to refractored borg standards.

* moar fixes

* Maps and futher compile fixes
This commit is contained in:
Poojawa
2016-12-22 03:57:55 -06:00
committed by GitHub
parent f5e143a452
commit cf59ac1c3d
2215 changed files with 707445 additions and 87041 deletions
+6 -5
View File
@@ -23,12 +23,13 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
"Hydroponics Machinery",
"Subspace Telecomms",
"Research Machinery",
"Misc. Machinery"
"Misc. Machinery",
"Computer Parts"
)
/obj/machinery/r_n_d/circuit_imprinter/New()
..()
materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND))
materials = new(src, list(MAT_GLASS, MAT_GOLD, MAT_DIAMOND, MAT_METAL))
create_reagents(0)
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/circuit_imprinter(null)
B.apply_default_parts(src)
@@ -61,7 +62,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
T += M.rating
efficiency_coeff = 2 ** (T - 1) //Only 1 manipulator here, you're making runtimes Razharas
/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/effect/blob/B)
/obj/machinery/r_n_d/circuit_imprinter/blob_act(obj/structure/blob/B)
if (prob(50))
qdel(src)
@@ -75,7 +76,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
return round(A / max(1, (all_materials[M]/efficiency_coeff)))
//we eject the materials upon deconstruction.
/obj/machinery/r_n_d/circuit_imprinter/deconstruction()
/obj/machinery/r_n_d/circuit_imprinter/on_deconstruction()
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
reagents.trans_to(G, G.reagents.maximum_volume)
materials.retrieve_all()
@@ -112,7 +113,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
user << "<span class='notice'>You add [amount_inserted] sheets to the [src.name].</span>"
updateUsrDialog()
else if(user.a_intent != "harm")
else if(user.a_intent != INTENT_HARM)
user << "<span class='warning'>You cannot insert this item into the [name]!</span>"
return 1
else
+169 -37
View File
@@ -34,10 +34,12 @@ other types of metals and chemistry for reagents).
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/build_path = null //The file path of the object that gets created
var/list/make_reagents = list() //Reagents produced. Format: "id" = amount. Currently only supported by the biogenerator.
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/list/reagents_list = list() //List of reagents. Format: "id" = amount.
var/maxstack = 1
var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe
////////////////////////////////////////
@@ -45,15 +47,25 @@ other types of metals and chemistry for reagents).
////////////////////////////////////////
/obj/item/weapon/disk/design_disk
name = "Component 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
materials = list(MAT_METAL=300, MAT_GLASS=100)
var/list/blueprints = list()
var/max_blueprints = 1
/obj/item/weapon/disk/design_disk/New()
..()
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
for(var/i in 1 to max_blueprints)
blueprints += null
/obj/item/weapon/disk/design_disk/adv
name = "advanced component design disk"
desc = "A disk for storing device design data for construction in lathes. This one has extra storage space."
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER = 50)
max_blueprints = 5
///////////////////////////////////
/////Non-Board Computer Stuff//////
@@ -93,6 +105,16 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/disk/design_disk
category = list("Electronics")
/datum/design/design_disk_adv
name = "Advanced Design Storage Disk"
desc = "Produce additional disks for storing device designs."
id = "design_disk_adv"
req_tech = list("programming" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
build_path = /obj/item/weapon/disk/design_disk/adv
category = list("Electronics")
/datum/design/tech_disk
name = "Technology Data Storage Disk"
desc = "Produce additional disks for storing technology data."
@@ -103,6 +125,25 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/disk/tech_disk
category = list("Electronics")
/datum/design/tech_disk_adv
name = "Advanced Technology Data Storage Disk"
desc = "Produce disks with extra storage capacity for storing technology data."
id = "tech_disk_adv"
req_tech = list("programming" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
build_path = /obj/item/weapon/disk/tech_disk/adv
category = list("Electronics")
/datum/design/tech_disk_super_adv
name = "Quantum Technology Data Storage Disk"
desc = "Produce disks with extremely large storage capacity for storing technology data."
id = "tech_disk_super_adv"
req_tech = list("programming" = 6)
build_type = PROTOLATHE
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=100, MAT_GOLD=100)
build_path = /obj/item/weapon/disk/tech_disk/super_adv
category = list("Electronics")
/////////////////////////////////////////
/////////////////Mining//////////////////
@@ -158,36 +199,6 @@ other types of metals and chemistry for reagents).
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."
@@ -198,6 +209,67 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/weapon/resonator/upgraded
category = list("Mining Designs")
/datum/design/trigger_guard_mod
name = "Kinetic Accelerator Trigger Guard Mod"
desc = "A device which allows kinetic accelerators to be wielded by any organism."
id = "triggermod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/borg/upgrade/modkit/trigger_guard
category = list("Mining Designs")
/datum/design/damage_mod
name = "Kinetic Accelerator Damage Mod"
desc = "A device which allows kinetic accelerators to deal more damage."
id = "damagemod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/borg/upgrade/modkit/damage
category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/cooldown_mod
name = "Kinetic Accelerator Cooldown Mod"
desc = "A device which decreases the cooldown of a Kinetic Accelerator."
id = "cooldownmod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/borg/upgrade/modkit/cooldown
category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/range_mod
name = "Kinetic Accelerator Range Mod"
desc = "A device which allows kinetic accelerators to fire at a further range."
id = "rangemod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
build_path = /obj/item/borg/upgrade/modkit/range
category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/superaccelerator
name = "Kinetic Accelerator Pressure Mod"
desc = "A modification kit which allows Kinetic Accelerators to do more damage while indoors."
id = "indoormod"
req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_URANIUM = 2000)
build_path = /obj/item/borg/upgrade/modkit/indoors
category = list("Mining Designs", "Cyborg Upgrade Modules")
/datum/design/hyperaccelerator
name = "Kinetic Accelerator Mining AoE Mod"
desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock."
id = "hypermod"
req_tech = list("materials" = 7, "powerstorage" = 5, "engineering" = 5, "magnets" = 5, "combat" = 4)
build_type = PROTOLATHE | MECHFAB
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
category = list("Mining Designs", "Cyborg Upgrade Modules")
/////////////////////////////////////////
//////////////Blue Space/////////////////
/////////////////////////////////////////
@@ -297,7 +369,7 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/clothing/glasses/hud/security/night
category = list("Equipment")
datum/design/diagnostic_hud
/datum/design/diagnostic_hud
name = "Diagnostic HUD"
desc = "A HUD used to analyze and determine faults within robotic machinery."
id = "dianostic_hud"
@@ -307,7 +379,7 @@ datum/design/diagnostic_hud
build_path = /obj/item/clothing/glasses/hud/diagnostic
category = list("Equipment")
datum/design/diagnostic_hud_night
/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"
@@ -454,6 +526,66 @@ datum/design/diagnostic_hud_night
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
category = list("Equipment")
/datum/design/alienwrench
name = "Alien Wrench"
desc = "An advanced wrench obtained through Abductor technology."
id = "alien_wrench"
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/wrench/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienwirecutters
name = "Alien Wirecutters"
desc = "Advanced wirecutters obtained through Abductor technology."
id = "alien_wirecutters"
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/wirecutters/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienscrewdriver
name = "Alien Screwdriver"
desc = "An advanced screwdriver obtained through Abductor technology."
id = "alien_screwdriver"
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/screwdriver/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/aliencrowbar
name = "Alien Crowbar"
desc = "An advanced crowbar obtained through Abductor technology."
id = "alien_crowbar"
req_tech = list("engineering" = 5, "materials" = 5, "abductor" = 4)
build_path = /obj/item/weapon/crowbar/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienwelder
name = "Alien Welding Tool"
desc = "An advanced welding tool obtained through Abductor technology."
id = "alien_welder"
req_tech = list("engineering" = 5, "plasmatech" = 5, "abductor" = 4)
build_path = /obj/item/weapon/weldingtool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/alienmultitool
name = "Alien Multitool"
desc = "An advanced multitool obtained through Abductor technology."
id = "alien_multitool"
req_tech = list("engineering" = 5, "programming" = 5, "abductor" = 4)
build_path = /obj/item/device/multitool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
/datum/design/diskplantgene
name = "Plant data disk"
desc = "A disk for storing plant genetic data."
@@ -66,6 +66,14 @@
build_path = /obj/item/weapon/weldingtool
category = list("initial","Tools")
/datum/design/mini_weldingtool
name = "Emergency welding tool"
id = "mini_welding_tool"
build_type = AUTOLATHE
materials = list(MAT_METAL = 30, MAT_GLASS = 10)
build_path = /obj/item/weapon/weldingtool/mini
category = list("initial","Tools")
/datum/design/screwdriver
name = "Screwdriver"
id = "screwdriver"
@@ -499,7 +507,7 @@
name = "Light tube"
id = "light_tube"
build_type = AUTOLATHE
materials = list(MAT_METAL = 60, MAT_GLASS = 100)
materials = list(MAT_GLASS = 100)
build_path = /obj/item/weapon/light/tube
category = list("initial", "Construction")
@@ -507,7 +515,7 @@
name = "Light bulb"
id = "light_bulb"
build_type = AUTOLATHE
materials = list(MAT_METAL = 60, MAT_GLASS = 100)
materials = list(MAT_GLASS = 100)
build_path = /obj/item/weapon/light/bulb
category = list("initial", "Construction")
@@ -711,3 +719,35 @@
materials = list(MAT_METAL = 12000)
build_path = /obj/item/wallframe/turret_control
category = list("initial", "Construction")
/datum/design/conveyor_belt
name = "Conveyor belt"
id = "conveyor_belt"
build_type = AUTOLATHE
materials = list(MAT_METAL = 5000)
build_path = /obj/item/conveyor_construct
category = list("initial", "Construction")
/datum/design/conveyor_switch
name = "Conveyor belt switch"
id = "conveyor_switch"
build_type = AUTOLATHE
materials = list(MAT_METAL = 450, MAT_GLASS = 190)
build_path = /obj/item/conveyor_switch_construct
category = list("initial", "Construction")
/datum/design/laptop
name = "Laptop Frame"
id = "laptop"
build_type = AUTOLATHE
materials = list(MAT_METAL = 10000, MAT_GLASS = 1000)
build_path = /obj/item/device/modular_computer/laptop/buildable
category = list("initial","Misc")
/datum/design/tablet
name = "Tablet Frame"
id = "tablet"
build_type = AUTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
build_path = /obj/item/device/modular_computer/tablet
category = list("initial","Misc")
@@ -0,0 +1,212 @@
///////////////////////////////////
///////Biogenerator Designs ///////
///////////////////////////////////
/datum/design/milk
name = "10 milk"
id = "milk"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 20)
make_reagents = list("milk" = 10)
category = list("initial","Food")
/datum/design/cream
name = "10 cream"
id = "cream"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 30)
make_reagents = list("cream" = 10)
category = list("initial","Food")
/datum/design/milk_carton
name = "Milk carton"
id = "milk_carton"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 100)
build_path = /obj/item/weapon/reagent_containers/food/condiment/milk
category = list("initial","Food")
/datum/design/cream_carton
name = "Cream carton"
id = "cream_carton"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/reagent_containers/food/drinks/bottle/cream
category = list("initial","Food")
/datum/design/black_pepper
name = "10u black pepper"
id = "black_pepper"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 25)
make_reagents = list("blackpepper" = 10)
category = list("initial","Food")
/datum/design/pepper_mill
name = "Pepper mill"
id = "pepper_mill"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/food/condiment/peppermill
make_reagents = list()
category = list("initial","Food")
/datum/design/monkey_cube
name = "Monkey cube"
id = "mcube"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 250)
build_path = /obj/item/weapon/reagent_containers/food/snacks/monkeycube
category = list("initial", "Food")
/datum/design/ez_nut
name = "E-Z-Nutrient"
id = "ez_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 10)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez
category = list("initial","Botany Chemicals")
/datum/design/l4z_nut
name = "Left 4 Zed"
id = "l4z_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 20)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/l4z
category = list("initial","Botany Chemicals")
/datum/design/rh_nut
name = "Robust Harvest"
id = "rh_nut"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 25)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/rh
category = list("initial","Botany Chemicals")
/datum/design/weed_killer
name = "Weed Killer"
id = "weed_killer"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/killer/weedkiller
category = list("initial","Botany Chemicals")
/datum/design/pest_spray
name = "Pest Killer"
id = "pest_spray"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/killer/pestkiller
category = list("initial","Botany Chemicals")
/datum/design/botany_bottle
name = "Empty Bottle"
id = "botany_bottle"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 5)
build_path = /obj/item/weapon/reagent_containers/glass/bottle/nutrient/empty
category = list("initial", "Botany Chemicals")
/datum/design/cloth
name = "Roll of cloth"
id = "cloth"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 50)
build_path = /obj/item/stack/sheet/cloth
category = list("initial","Leather and Cloth")
/datum/design/wallet
name = "Wallet"
id = "wallet"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 100)
build_path = /obj/item/weapon/storage/wallet
category = list("initial","Leather and Cloth")
/datum/design/botany_gloves
name = "Botanical gloves"
id = "botany_gloves"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 150)
build_path = /obj/item/clothing/gloves/botanic_leather
category = list("initial","Leather and Cloth")
/datum/design/toolbelt
name = "Utility Belt"
id = "toolbelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/utility
category = list("initial","Leather and Cloth")
/datum/design/secbelt
name = "Security belt"
id = "secbelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/security
category = list("initial","Leather and Cloth")
/datum/design/medbelt
name = "Medical belt"
id = "medbel"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/medical
category = list("initial","Leather and Cloth")
/datum/design/janibelt
name = "Janitorial belt"
id = "janibelt"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/janitor
category = list("initial","Leather and Cloth")
/datum/design/bandolier
name = "Bandolier belt"
id = "bandolier"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/weapon/storage/belt/bandolier
category = list("initial","Leather and Cloth")
/datum/design/s_holster
name = "Shoulder holster"
id = "s_holster"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 400)
build_path = /obj/item/weapon/storage/belt/holster
category = list("initial","Leather and Cloth")
/datum/design/leather_satchel
name = "Leather satchel"
id = "leather_satchel"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 400)
build_path = /obj/item/weapon/storage/backpack/satchel
category = list("initial","Leather and Cloth")
/datum/design/leather_jacket
name = "Leather jacket"
id = "leather_jacket"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 500)
build_path = /obj/item/clothing/suit/jacket/leather
category = list("initial","Leather and Cloth")
/datum/design/leather_overcoat
name = "Leather overcoat"
id = "leather_overcoat"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 1000)
build_path = /obj/item/clothing/suit/jacket/leather/overcoat
category = list("initial","Leather and Cloth")
/datum/design/rice_hat
name = "Rice hat"
id = "rice_hat"
build_type = BIOGENERATOR
materials = list(MAT_BIOMASS = 300)
build_path = /obj/item/clothing/head/rice_hat
category = list("initial","Leather and Cloth")
@@ -7,7 +7,7 @@
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000)
reagents = list("sacid" = 20)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/circuitboard/computer/arcade/battle
category = list("Computer Boards")
@@ -0,0 +1,261 @@
////////////////////////////////////////
///////////Computer Parts///////////////
////////////////////////////////////////
/datum/design/disk/normal
name = "hard disk drive"
id = "hdd_basic"
req_tech = list("programming" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
build_path = /obj/item/weapon/computer_hardware/hard_drive
category = list("Computer Parts")
/datum/design/disk/advanced
name = "advanced hard disk drive"
id = "hdd_advanced"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
build_path = /obj/item/weapon/computer_hardware/hard_drive/advanced
category = list("Computer Parts")
/datum/design/disk/super
name = "super hard disk drive"
id = "hdd_super"
req_tech = list("programming" = 3, "engineering" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 1600, MAT_GLASS = 400)
build_path = /obj/item/weapon/computer_hardware/hard_drive/super
category = list("Computer Parts")
/datum/design/disk/cluster
name = "cluster hard disk drive"
id = "hdd_cluster"
req_tech = list("programming" = 4, "engineering" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 3200, MAT_GLASS = 800)
build_path = /obj/item/weapon/computer_hardware/hard_drive/cluster
category = list("Computer Parts")
/datum/design/disk/small
name = "solid state drive"
id = "ssd_small"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
build_path = /obj/item/weapon/computer_hardware/hard_drive/small
category = list("Computer Parts")
/datum/design/disk/micro
name = "micro solid state drive"
id = "ssd_micro"
req_tech = list("programming" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
build_path = /obj/item/weapon/computer_hardware/hard_drive/micro
category = list("Computer Parts")
// Network cards
/datum/design/netcard/basic
name = "network card"
id = "netcard_basic"
req_tech = list("programming" = 2, "engineering" = 1)
build_type = IMPRINTER
materials = list(MAT_METAL = 250, MAT_GLASS = 100)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/network_card
category = list("Computer Parts")
/datum/design/netcard/advanced
name = "advanced network card"
id = "netcard_advanced"
req_tech = list("programming" = 4, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_METAL = 500, MAT_GLASS = 200)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/network_card/advanced
category = list("Computer Parts")
/datum/design/netcard/wired
name = "wired network card"
id = "netcard_wired"
req_tech = list("programming" = 5, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_METAL = 2500, MAT_GLASS = 400)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/network_card/wired
category = list("Computer Parts")
// Data disks
/datum/design/portabledrive/basic
name = "data disk"
id = "portadrive_basic"
req_tech = list("programming" = 1)
build_type = IMPRINTER
materials = list(MAT_GLASS = 800)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable
category = list("Computer Parts")
/datum/design/portabledrive/advanced
name = "advanced data disk"
id = "portadrive_advanced"
req_tech = list("programming" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1600)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/advanced
category = list("Computer Parts")
/datum/design/portabledrive/super
name = "super data disk"
id = "portadrive_super"
req_tech = list("programming" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 3200)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/hard_drive/portable/super
category = list("Computer Parts")
// Card slot
/datum/design/cardslot
name = "ID card slot"
id = "cardslot"
req_tech = list("programming" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 600)
build_path = /obj/item/weapon/computer_hardware/card_slot
category = list("Computer Parts")
// Intellicard slot
/datum/design/aislot
name = "Intellicard slot"
id = "aislot"
req_tech = list("programming" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 600)
build_path = /obj/item/weapon/computer_hardware/ai_slot
category = list("Computer Parts")
// Mini printer
/datum/design/miniprinter
name = "miniprinter"
id = "miniprinter"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 600)
build_path = /obj/item/weapon/computer_hardware/printer/mini
category = list("Computer Parts")
// APC Link
/datum/design/APClink
name = "area power connector"
id = "APClink"
req_tech = list("programming" = 2, "powerstorage" = 3, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000)
build_path = /obj/item/weapon/computer_hardware/recharger/APC
category = list("Computer Parts")
// Batteries
/datum/design/battery/controller
name = "power cell controller"
id = "bat_control"
req_tech = list("powerstorage" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400)
build_path = /obj/item/weapon/computer_hardware/battery
category = list("Computer Parts")
/datum/design/battery/normal
name = "battery module"
id = "bat_normal"
req_tech = list("powerstorage" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400)
build_path = /obj/item/weapon/stock_parts/cell/computer
category = list("Computer Parts")
/datum/design/battery/advanced
name = "advanced battery module"
id = "bat_advanced"
req_tech = list("powerstorage" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 800)
build_path = /obj/item/weapon/stock_parts/cell/computer/advanced
category = list("Computer Parts")
/datum/design/battery/super
name = "super battery module"
id = "bat_super"
req_tech = list("powerstorage" = 3, "engineering" = 3)
build_type = PROTOLATHE
materials = list(MAT_METAL = 1600)
build_path = /obj/item/weapon/stock_parts/cell/computer/super
category = list("Computer Parts")
/datum/design/battery/nano
name = "nano battery module"
id = "bat_nano"
req_tech = list("powerstorage" = 1, "engineering" = 1)
build_type = PROTOLATHE
materials = list(MAT_METAL = 200)
build_path = /obj/item/weapon/stock_parts/cell/computer/nano
category = list("Computer Parts")
/datum/design/battery/micro
name = "micro battery module"
id = "bat_micro"
req_tech = list("powerstorage" = 2, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 400)
build_path = /obj/item/weapon/stock_parts/cell/computer/micro
category = list("Computer Parts")
// Processor unit
/datum/design/cpu
name = "processor board"
id = "cpu_normal"
req_tech = list("programming" = 3, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1600)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/processor_unit
category = list("Computer Parts")
/datum/design/cpu/small
name = "microprocessor"
id = "cpu_small"
req_tech = list("programming" = 2, "engineering" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS = 800)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/processor_unit/small
category = list("Computer Parts")
/datum/design/cpu/photonic
name = "photonic processor board"
id = "pcpu_normal"
req_tech = list("programming" = 5, "engineering" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000)
reagents_list = list("sacid" = 40)
build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic
category = list("Computer Parts")
/datum/design/cpu/photonic/small
name = "photonic microprocessor"
id = "pcpu_small"
req_tech = list("programming" = 4, "engineering" = 3)
build_type = IMPRINTER
materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000)
reagents_list = list("sacid" = 20)
build_path = /obj/item/weapon/computer_hardware/processor_unit/photonic/small
category = list("Computer Parts")
@@ -0,0 +1,43 @@
/////////////////////////////////////
//////////Limb Grower Designs ///////
/////////////////////////////////////
/datum/design/leftarm
name = "Left Arm"
id = "leftarm"
build_type = LIMBGROWER
reagents = list("synthflesh" = 25)
build_path = /obj/item/bodypart/l_arm
category = list("initial","human","lizard","plasmaman")
/datum/design/rightarm
name = "Right Arm"
id = "rightarm"
build_type = LIMBGROWER
reagents = list("synthflesh" = 25)
build_path = /obj/item/bodypart/r_arm
category = list("initial","human","lizard","plasmaman")
/datum/design/leftleg
name = "Left Leg"
id = "leftleg"
build_type = LIMBGROWER
reagents = list("synthflesh" = 25)
build_path = /obj/item/bodypart/l_leg
category = list("initial","human","lizard","plasmaman")
/datum/design/rightleg
name = "Right Leg"
id = "rightleg"
build_type = LIMBGROWER
reagents = list("synthflesh" = 25)
build_path = /obj/item/bodypart/r_leg
category = list("initial","human","lizard","plasmaman")
/datum/design/armblade
name = "Arm Blade"
id = "armblade"
build_type = LIMBGROWER
reagents = list("synthflesh" = 75)
build_path = /obj/item/weapon/melee/synthetic_arm_blade
category = list("special")
@@ -82,6 +82,14 @@
build_path = /obj/item/weapon/circuitboard/machine/teleporter_hub
category = list ("Teleportation Machinery")
/datum/design/board/quantumpad
name = "Machine Design (Quantum Pad Board)"
desc = "The circuit board for a quantum telepad."
id = "quantumpad"
req_tech = list("programming" = 4, "bluespace" = 4, "plasmatech" = 3, "engineering" = 4)
build_path = /obj/item/weapon/circuitboard/machine/quantumpad
category = list ("Teleportation Machinery")
/datum/design/board/telepad
name = "Machine Design (Telepad Board)"
desc = "The circuit board for a telescience telepad."
@@ -386,3 +394,19 @@
req_tech = list("programming" = 4, "biotech" = 3)
build_path = /obj/item/weapon/circuitboard/machine/plantgenes
category = list ("Misc. Machinery")
/datum/design/board/ntnet_relay
name = "Machine Design (NTNet Relay Board)"
desc = "The circuit board for a wireless network relay."
id = "ntnet_relay"
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 2)
build_path = /obj/item/weapon/circuitboard/machine/ntnet_relay
category = list("Subspace Telecomms")
/datum/design/board/limbgrower
name = "Machine Design (Limb Grower Board)"
desc = "The circuit board for a limb grower."
id = "limbgrower"
req_tech = list("programming" = 3, "biotech" = 2)
build_path = /obj/item/weapon/circuitboard/machine/limbgrower
category = list("Medical Machinery")
@@ -3,7 +3,7 @@
name = "Cyborg Endoskeleton"
id = "borg_suit"
build_type = MECHFAB
build_path = /obj/item/robot_parts/robot_suit
build_path = /obj/item/robot_suit
materials = list(MAT_METAL=15000)
construction_time = 500
category = list("Cyborg")
@@ -12,7 +12,7 @@
name = "Cyborg Torso"
id = "borg_chest"
build_type = MECHFAB
build_path = /obj/item/robot_parts/chest
build_path = /obj/item/bodypart/chest/robot
materials = list(MAT_METAL=40000)
construction_time = 350
category = list("Cyborg")
@@ -21,7 +21,7 @@
name = "Cyborg Head"
id = "borg_head"
build_type = MECHFAB
build_path = /obj/item/robot_parts/head
build_path = /obj/item/bodypart/head/robot
materials = list(MAT_METAL=5000)
construction_time = 350
category = list("Cyborg")
@@ -30,7 +30,7 @@
name = "Cyborg Left Arm"
id = "borg_l_arm"
build_type = MECHFAB
build_path = /obj/item/robot_parts/l_arm
build_path = /obj/item/bodypart/l_arm/robot
materials = list(MAT_METAL=10000)
construction_time = 200
category = list("Cyborg")
@@ -39,7 +39,7 @@
name = "Cyborg Right Arm"
id = "borg_r_arm"
build_type = MECHFAB
build_path = /obj/item/robot_parts/r_arm
build_path = /obj/item/bodypart/r_arm/robot
materials = list(MAT_METAL=10000)
construction_time = 200
category = list("Cyborg")
@@ -48,7 +48,7 @@
name = "Cyborg Left Leg"
id = "borg_l_leg"
build_type = MECHFAB
build_path = /obj/item/robot_parts/l_leg
build_path = /obj/item/bodypart/l_leg/robot
materials = list(MAT_METAL=10000)
construction_time = 200
category = list("Cyborg")
@@ -57,7 +57,7 @@
name = "Cyborg Right Leg"
id = "borg_r_leg"
build_type = MECHFAB
build_path = /obj/item/robot_parts/r_leg
build_path = /obj/item/bodypart/r_leg/robot
materials = list(MAT_METAL=10000)
construction_time = 200
category = list("Cyborg")
@@ -270,7 +270,7 @@
id = "gygax_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/gygax_armor
materials = list(MAT_METAL=25000,MAT_DIAMOND=10000)
materials = list(MAT_METAL=15000,MAT_DIAMOND=10000,MAT_TITANIUM=10000)
construction_time = 600
category = list("Gygax")
@@ -343,7 +343,7 @@
id = "durand_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/durand_armor
materials = list(MAT_METAL=50000,MAT_URANIUM=30000)
materials = list(MAT_METAL=30000,MAT_URANIUM=25000,MAT_TITANIUM=20000)
construction_time = 600
category = list("Durand")
@@ -481,7 +481,7 @@
id = "phazon_armor"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/part/phazon_armor
materials = list(MAT_METAL=45000,MAT_PLASMA=30000)
materials = list(MAT_METAL=25000,MAT_PLASMA=20000,MAT_TITANIUM=20000)
construction_time = 300
category = list("Phazon")
@@ -505,7 +505,7 @@
category = list("Exosuit Equipment")
/datum/design/mech_mining_scanner
name = "Exosuit Engineering Equipement (Mining Scanner)"
name = "Exosuit Engineering Equipment (Mining Scanner)"
id = "mech_mscanner"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/mining_scanner
@@ -571,15 +571,6 @@
//////////////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"
@@ -648,23 +639,13 @@
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)
materials = list(MAT_METAL = 10000, MAT_PLASMA = 4000, MAT_TITANIUM = 5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
@@ -688,6 +669,46 @@
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_expandedsynthesiser
name = "Cyborg Upgrade (Hypospray Expanded Synthesiser)"
id = "borg_upgrade_expandedsynthesiser"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/hypospray/expanded
req_tech = list("programming" = 5, "engineering" = 4, "biotech" = 5)
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_highstrengthsynthesiser
name = "Cyborg Upgrade (Hypospray High-Strength Synthesiser)"
id = "borg_upgrade_highstrengthsynthesiser"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/hypospray/high_strength
req_tech = list("programming" = 5, "engineering" = 5, "biotech" = 6)
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=10000, MAT_URANIUM=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_piercinghypospray
name = "Cyborg Upgrade (Piercing Hypospray)"
id = "borg_upgrade_piercinghypospray"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/piercing_hypospray
req_tech = list("materials" = 5, "engineering" = 7, "combat" = 3)
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_TITANIUM=10000, MAT_DIAMOND=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
/datum/design/borg_upgrade_defibrillator
name = "Cyborg Upgrade (Defibrillator)"
id = "borg_upgrade_defibrillator"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/defib
req_tech = list("programming" = 4, "engineering" = 5, "materials" = 5, "powerstorage" = 5, "biotech" = 5)
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_SILVER=10000, MAT_GOLD=10000, MAT_TITANIUM=5000, MAT_DIAMOND=5000)
construction_time = 120
category = list("Cyborg Upgrade Modules")
//Misc
/datum/design/mecha_tracking
name = "Exosuit Tracking Beacon"
@@ -719,3 +740,36 @@
construction_time = 100
build_path = /obj/item/device/assembly/flash/handheld
category = list("Misc")
/datum/design/flightsuit //Multi step build process/redo WIP
name = "Flight Suit"
desc = "A specialized hardsuit that is able to attach a flightpack and accessories.."
id = "flightsuit"
build_type = MECHFAB
build_path = /obj/item/clothing/suit/space/hardsuit/flightsuit
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 200, MAT_GOLD = 3000, MAT_SILVER = 3000, MAT_TITANIUM = 16000) //This expensive enough for you?
construction_time = 250
category = list("Misc")
req_tech = list("magnets" = 2, "combat" = 2, "plasmatech" = 2, "materials" = 4, "engineering" = 3, "powerstorage" = 2)
/datum/design/flightpack
name = "Flight Pack"
desc = "An advanced back-worn system that has dual ion engines powerful enough to grant a humanoid flight. Contains an internal self-recharging high-current capacitor for short, powerful boosts."
id = "flightpack"
build_type = MECHFAB
build_path = /obj/item/device/flightpack
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 4000, MAT_GOLD = 12000, MAT_SILVER = 12000, MAT_URANIUM = 20000, MAT_PLASMA = 16000, MAT_TITANIUM = 16000) //This expensive enough for you?
construction_time = 250
category = list("Misc")
req_tech = list("magnets" = 4, "combat" = 3, "plasmatech" = 4, "materials" = 5, "engineering" = 4, "powerstorage" = 4)
/datum/design/flightshoes
name = "Flight Shoes"
desc = "Flight shoes, attachable to a flight suit to provide additional functions."
id = "flightshoes"
build_type = MECHFAB
build_path = /obj/item/clothing/shoes/flightshoes
materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 1500, MAT_SILVER = 1500, MAT_PLASMA = 2000, MAT_TITANIUM = 2000)
construction_time = 100
category = list("Misc")
req_tech = list("magnets" = 2, "combat" = 2, "plasmatech" = 3, "materials" = 3, "engineering" = 2, "powerstorage" = 2)
@@ -89,7 +89,7 @@
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)
req_tech = list("materials" = 7, "combat" = 3, "engineering" = 5)
build_type = PROTOLATHE
materials = list(MAT_GLASS = 4000, MAT_DIAMOND = 1500)
build_path = /obj/item/weapon/reagent_containers/syringe/piercing
@@ -115,6 +115,66 @@
build_path = /obj/item/device/extinguisher_refill
category = list("Medical Designs")
/datum/design/alienscalpel
name = "Alien Scalpel"
desc = "An advanced scalpel obtained through Abductor technology."
id = "alien_scalpel"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/scalpel/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/alienhemostat
name = "Alien Hemostat"
desc = "An advanced hemostat obtained through Abductor technology."
id = "alien_hemostat"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/hemostat/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/alienretractor
name = "Alien Retractor"
desc = "An advanced retractor obtained through Abductor technology."
id = "alien_retractor"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/retractor/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/aliensaw
name = "Alien Circular Saw"
desc = "An advanced surgical saw obtained through Abductor technology."
id = "alien_saw"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/circular_saw/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/aliendrill
name = "Alien Drill"
desc = "An advanced drill obtained through Abductor technology."
id = "alien_drill"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/surgicaldrill/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/datum/design/aliencautery
name = "Alien Cautery"
desc = "An advanced cautery obtained through Abductor technology."
id = "alien_cautery"
req_tech = list("bio" = 4, "materials" = 4, "abductor" = 3)
build_path = /obj/item/weapon/cautery/alien
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
category = list("Medical Designs")
/////////////////////////////////////////
//////////Cybernetic Implants////////////
/////////////////////////////////////////
@@ -222,10 +282,10 @@
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)
req_tech = list("materials" = 3, "powerstorage" = 4, "biotech" = 3)
build_type = PROTOLATHE | MECHFAB
construction_time = 40
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500, MAT_URANIUM = 500)
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500)
build_path = /obj/item/organ/cyberimp/chest/nutriment
category = list("Misc", "Medical Designs")
@@ -233,7 +293,7 @@
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)
req_tech = list("materials" = 5, "powerstorage" = 4, "biotech" = 4)
build_type = PROTOLATHE | MECHFAB
construction_time = 50
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750)
@@ -244,10 +304,10 @@
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)
req_tech = list("materials" = 5, "programming" = 4, "biotech" = 5)
build_type = PROTOLATHE | MECHFAB
construction_time = 60
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 500, MAT_URANIUM = 1000, MAT_DIAMOND = 2000)
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500)
build_path = /obj/item/organ/cyberimp/chest/reviver
category = list("Misc", "Medical Designs")
@@ -287,6 +347,16 @@
build_path = /obj/item/weapon/implantcase
category = list("Medical Designs")
/datum/design/implant_sadtrombone
name = "Sad Trombone Implant Case"
desc = "Makes death amusing."
id = "implant_trombone"
req_tech = list("materials" = 2, "biotech" = 3, "programming" = 2)
build_type = PROTOLATHE
materials = list(MAT_GLASS = 500, MAT_BANANIUM = 500)
build_path = /obj/item/weapon/implantcase/sad_trombone
category = list("Medical Designs")
/datum/design/implant_freedom
name = "Freedom Implant Case"
desc = "A glass case containing an implant."
@@ -52,7 +52,7 @@
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)
materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_SILVER = 150, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/bluespace
category = list("Misc","Power Designs")
@@ -32,6 +32,7 @@
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
build_path = /obj/item/weapon/stock_parts/capacitor
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/adv_capacitor
name = "Advanced Capacitor"
@@ -42,6 +43,7 @@
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
build_path = /obj/item/weapon/stock_parts/capacitor/adv
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/super_capacitor
name = "Super Capacitor"
@@ -52,6 +54,7 @@
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100)
build_path = /obj/item/weapon/stock_parts/capacitor/super
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/quadratic_capacitor
name = "Quadratic Capacitor"
@@ -62,6 +65,7 @@
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 100)
build_path = /obj/item/weapon/stock_parts/capacitor/quadratic
category = list("Stock Parts")
lathe_time_factor = 0.2
//Scanning modules
/datum/design/basic_scanning
@@ -73,6 +77,7 @@
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
build_path = /obj/item/weapon/stock_parts/scanning_module
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/adv_scanning
name = "Advanced Scanning Module"
@@ -83,6 +88,7 @@
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
build_path = /obj/item/weapon/stock_parts/scanning_module/adv
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/phasic_scanning
name = "Phasic Scanning Module"
@@ -93,6 +99,7 @@
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")
lathe_time_factor = 0.2
/datum/design/triphasic_scanning
name = "Triphasic Scanning Module"
@@ -103,6 +110,7 @@
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")
lathe_time_factor = 0.2
//Maipulators
/datum/design/micro_mani
@@ -114,6 +122,7 @@
materials = list(MAT_METAL = 100)
build_path = /obj/item/weapon/stock_parts/manipulator
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/nano_mani
name = "Nano Manipulator"
@@ -124,6 +133,7 @@
materials = list(MAT_METAL = 150)
build_path = /obj/item/weapon/stock_parts/manipulator/nano
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/pico_mani
name = "Pico Manipulator"
@@ -134,6 +144,7 @@
materials = list(MAT_METAL = 200)
build_path = /obj/item/weapon/stock_parts/manipulator/pico
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/femto_mani
name = "Femto Manipulator"
@@ -141,9 +152,10 @@
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)
materials = list(MAT_METAL = 200, MAT_DIAMOND = 30, MAT_TITANIUM = 30)
build_path = /obj/item/weapon/stock_parts/manipulator/femto
category = list("Stock Parts")
lathe_time_factor = 0.2
//Micro-lasers
/datum/design/basic_micro_laser
@@ -155,6 +167,7 @@
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
build_path = /obj/item/weapon/stock_parts/micro_laser
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/high_micro_laser
name = "High-Power Micro-Laser"
@@ -165,6 +178,7 @@
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
build_path = /obj/item/weapon/stock_parts/micro_laser/high
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/ultra_micro_laser
name = "Ultra-High-Power Micro-Laser"
@@ -175,6 +189,7 @@
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")
lathe_time_factor = 0.2
/datum/design/quadultra_micro_laser
name = "Quad-Ultra Micro-Laser"
@@ -185,6 +200,7 @@
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")
lathe_time_factor = 0.2
/datum/design/basic_matter_bin
name = "Basic Matter Bin"
@@ -195,6 +211,7 @@
materials = list(MAT_METAL = 100)
build_path = /obj/item/weapon/stock_parts/matter_bin
category = list("Stock Parts","Machinery","initial")
lathe_time_factor = 0.2
/datum/design/adv_matter_bin
name = "Advanced Matter Bin"
@@ -205,6 +222,7 @@
materials = list(MAT_METAL = 150)
build_path = /obj/item/weapon/stock_parts/matter_bin/adv
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/super_matter_bin
name = "Super Matter Bin"
@@ -215,6 +233,7 @@
materials = list(MAT_METAL = 200)
build_path = /obj/item/weapon/stock_parts/matter_bin/super
category = list("Stock Parts")
lathe_time_factor = 0.2
/datum/design/bluespace_matter_bin
name = "Bluespace Matter Bin"
@@ -225,6 +244,7 @@
materials = list(MAT_METAL = 250, MAT_DIAMOND = 200)
build_path = /obj/item/weapon/stock_parts/matter_bin/bluespace
category = list("Stock Parts")
lathe_time_factor = 0.2
//T-Comms devices
/datum/design/subspace_ansible
+19 -21
View File
@@ -29,7 +29,7 @@
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
build_path = /obj/item/weapon/gun/energy/tesla_revolver
category = list("Weapons")
/datum/design/nuclear_gun
@@ -38,17 +38,17 @@
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
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 3000, MAT_TITANIUM = 1000)
build_path = /obj/item/weapon/gun/energy/e_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" = 5, "materials" = 4, "engineering" = 4)
req_tech = list("combat" = 4, "materials" = 3, "engineering" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 4000, MAT_GLASS = 5000, MAT_SILVER = 3000)
materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
build_path = /obj/item/weapon/shield/riot/tele
category = list("Weapons")
@@ -69,7 +69,7 @@
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)
reagents_list = list("mutagen" = 40)
build_path = /obj/item/weapon/gun/energy/decloner
category = list("Weapons")
@@ -83,16 +83,6 @@
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
@@ -110,7 +100,7 @@
req_tech = list("materials" = 2, "biotech" = 4)
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 500)
reagents = list("radium" = 20)
reagents_list = list("radium" = 20)
build_path = /obj/item/weapon/gun/energy/floragun
category = list("Weapons")
@@ -163,7 +153,7 @@
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)
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 8000, MAT_METAL = 5000, MAT_TITANIUM = 2000)
build_path = /obj/item/weapon/gun/energy/xray
category = list("Weapons")
@@ -198,8 +188,6 @@
category = list("Weapons")
//WT550 Mags
// Literally cancer - Poojawa
/*
/datum/design/mag_oldsmg
name = "WT-550 Auto Gun Magazine (4.6x30mm)"
@@ -231,7 +219,7 @@
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."
@@ -271,3 +259,13 @@
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")
/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")
@@ -1,4 +1,4 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
/*
Destructive Analyzer
@@ -45,7 +45,7 @@ Note: Must be placed within 3 tiles of the R&D Console
..()
/obj/machinery/r_n_d/destructive_analyzer/Insert_Item(obj/item/O, mob/user)
if(user.a_intent != "harm")
if(user.a_intent != INTENT_HARM)
. = 1
if(!is_insertion_ready(user))
return
@@ -61,7 +61,7 @@ Note: Must be placed within 3 tiles of the R&D Console
return
busy = 1
loaded_item = O
O.loc = src
O.forceMove(src)
user << "<span class='notice'>You add the [O.name] to the [src.name]!</span>"
flick("d_analyzer_la", src)
spawn(10)
+2 -2
View File
@@ -115,7 +115,7 @@
return TRUE
/obj/machinery/r_n_d/experimentor/Insert_Item(obj/item/O, mob/user)
if(user.a_intent != "harm")
if(user.a_intent != INTENT_HARM)
. = 1
if(!is_insertion_ready(user))
return
@@ -615,7 +615,7 @@
spawn(cooldownMax)
cooldown = FALSE
else
user << "<span class='notice'>You aren't quite sure what to do with this, yet.</span>"
user << "<span class='notice'>You aren't quite sure what to do with this yet.</span>"
//////////////// RELIC PROCS /////////////////////////////
+2 -1
View File
@@ -114,7 +114,6 @@ var/global/list/obj/machinery/message_server/message_servers = list()
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()
@@ -202,6 +201,7 @@ var/obj/machinery/blackbox_recorder/blackbox
use_power = 1
idle_power_usage = 10
active_power_usage = 100
armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70)
var/list/messages = list() //Stores messages of non-standard frequencies
var/list/messages_admin = list()
@@ -225,6 +225,7 @@ var/obj/machinery/blackbox_recorder/blackbox
qdel(src)
blackbox = src
/obj/machinery/blackbox_recorder/Destroy()
var/turf/T = locate(1,1,2)
if (T)
+5 -4
View File
@@ -26,14 +26,15 @@ Note: Must be placed west/left of and R&D console to function.
"Electronics",
"Weapons",
"Ammo",
"Firing Pins"
"Firing Pins",
"Computer Parts"
)
/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))
materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM))
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/protolathe(null)
B.apply_default_parts(src)
@@ -75,7 +76,7 @@ Note: Must be placed west/left of and R&D console to function.
return round(A / max(1, (all_materials[M]*efficiency_coeff)))
//we eject the materials upon deconstruction.
/obj/machinery/r_n_d/protolathe/deconstruction()
/obj/machinery/r_n_d/protolathe/on_deconstruction()
for(var/obj/item/weapon/reagent_containers/glass/G in component_parts)
reagents.trans_to(G, G.reagents.maximum_volume)
materials.retrieve_all()
@@ -118,7 +119,7 @@ Note: Must be placed west/left of and R&D console to function.
busy = 0
updateUsrDialog()
else if(user.a_intent != "harm")
else if(user.a_intent != INTENT_HARM)
user << "<span class='warning'>You cannot insert this item into the [name]!</span>"
return 1
else
+126 -79
View File
@@ -22,8 +22,8 @@ operations to skip that console. This is useful if you want to make a "public" R
a circuit imprinter with certain designs on it and don't want it accidentally updating. The downside of this method is that you have
to have physical access to the other console to send data back. Note: An R&D console is on Centcom so if a random griffan happens to
cause a ton of data to be lost, an admin can go send it back.
- The second method is with Technology Disks and Design Disks. Each of these disks can hold a single technology or design datum in
it's entirety. You can then take the disk to any R&D console and upload it's data to it. This method is a lot more secure (since it
- The second method is with Technology Disks and Design Disks. Each of these disks can hold technology or design datums in
their entirety. You can then take the disk to any R&D console and upload it's data to it. This method is a lot more secure (since it
won't update every console in existence) but it's more of a hassle to do. Also, the disks can be stolen.
@@ -34,7 +34,6 @@ won't update every console in existence) but it's more of a hassle to do. Also,
icon_screen = "rdcomp"
icon_keyboard = "rd_key"
circuit = /obj/item/weapon/circuitboard/computer/rdconsole
light_color = LIGHT_COLOR_PINK
var/datum/research/files //Stores all the collected research data.
var/obj/item/weapon/disk/tech_disk/t_disk = null //Stores the technology disk.
var/obj/item/weapon/disk/design_disk/d_disk = null //Stores the design disk.
@@ -52,6 +51,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/selected_category
var/list/datum/design/matching_designs = list() //for the search function
var/disk_slot_selected = 0
/proc/CallTechName(ID) //A simple helper proc to find the name of a tech with a given ID.
@@ -122,8 +122,10 @@ won't update every console in existence) but it's more of a hassle to do. Also,
user << "A disk is already loaded into the machine."
return
if(istype(D, /obj/item/weapon/disk/tech_disk)) t_disk = D
else if (istype(D, /obj/item/weapon/disk/design_disk)) d_disk = D
if(istype(D, /obj/item/weapon/disk/tech_disk))
t_disk = D
else if (istype(D, /obj/item/weapon/disk/design_disk))
d_disk = D
else
user << "<span class='danger'>Machine cannot accept disks in that format.</span>"
return
@@ -136,7 +138,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
updateUsrDialog()
/obj/machinery/computer/rdconsole/deconstruction()
/obj/machinery/computer/rdconsole/on_deconstruction()
if(linked_destroy)
linked_destroy.linked_console = null
linked_destroy = null
@@ -162,6 +164,9 @@ won't update every console in existence) but it's more of a hassle to do. Also,
add_fingerprint(usr)
usr.set_machine(src)
if(href_list["disk_slot"])
disk_slot_selected = text2num(href_list["disk_slot"])
if(href_list["menu"]) //Switches menu screens. Converts a sent text string into a number. Saves a LOT of code.
var/temp_screen = text2num(href_list["menu"])
screen = temp_screen
@@ -170,16 +175,34 @@ won't update every console in existence) but it's more of a hassle to do. Also,
selected_category = href_list["category"]
else if(href_list["updt_tech"]) //Update the research holder with information from the technology disk.
var/n = text2num(href_list["updt_tech"])
screen = 0.0
spawn(50)
var/wait = 50
if(!n)
wait = 0
for(var/D in t_disk.tech_stored)
if(D)
wait += 50
spawn(wait)
screen = 1.2
files.AddTech2Known(t_disk.stored)
updateUsrDialog()
griefProtection() //Update centcom too
if(t_disk)
if(!n)
for(var/tech in t_disk.tech_stored)
if(tech)
files.AddTech2Known(tech)
else
files.AddTech2Known(t_disk.tech_stored[n])
updateUsrDialog()
griefProtection() //Update centcom too
else if(href_list["clear_tech"]) //Erase data on the technology disk.
if(t_disk)
t_disk.stored = null
var/n = text2num(href_list["clear_tech"])
if(!n)
for(var/i in 1 to t_disk.max_tech_stored)
t_disk.tech_stored[i] = null
else
t_disk.tech_stored[n] = null
else if(href_list["eject_tech"]) //Eject the technology disk.
if(t_disk)
@@ -188,20 +211,39 @@ won't update every console in existence) but it's more of a hassle to do. Also,
screen = 1.0
else if(href_list["copy_tech"]) //Copy some technology data from the research holder to the disk.
t_disk.stored = files.known_tech[href_list["copy_tech_ID"]]
var/slot = text2num(href_list["copy_tech"])
t_disk.tech_stored[slot] = files.known_tech[href_list["copy_tech_ID"]]
screen = 1.2
else if(href_list["updt_design"]) //Updates the research holder with design data from the design disk.
var/n = text2num(href_list["updt_design"])
screen = 0.0
spawn(50)
var/wait = 50
if(!n)
wait = 0
for(var/D in d_disk.blueprints)
if(D)
wait += 50
spawn(wait)
screen = 1.4
files.AddDesign2Known(d_disk.blueprint)
updateUsrDialog()
griefProtection() //Update centcom too
if(d_disk)
if(!n)
for(var/D in d_disk.blueprints)
if(D)
files.AddDesign2Known(D)
else
files.AddDesign2Known(d_disk.blueprints[n])
updateUsrDialog()
griefProtection() //Update centcom too
else if(href_list["clear_design"]) //Erases data on the design disk.
if(d_disk)
d_disk.blueprint = null
var/n = text2num(href_list["clear_design"])
if(!n)
for(var/i in 1 to d_disk.max_blueprints)
d_disk.blueprints[i] = null
else
d_disk.blueprints[n] = null
else if(href_list["eject_design"]) //Eject the design disk.
if(d_disk)
@@ -210,10 +252,11 @@ won't update every console in existence) but it's more of a hassle to do. Also,
screen = 1.0
else if(href_list["copy_design"]) //Copy design data from the research holder to the design disk.
var/slot = text2num(href_list["copy_design"])
var/datum/design/D = files.known_designs[href_list["copy_design_ID"]]
if(D)
var/autolathe_friendly = 1
if(D.reagents.len)
if(D.reagents_list.len)
autolathe_friendly = 0
D.category -= "Imported"
else
@@ -225,7 +268,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(D.build_type & (AUTOLATHE|PROTOLATHE|CRAFTLATHE)) // Specifically excludes circuit imprinter and mechfab
D.build_type = autolathe_friendly ? (D.build_type | AUTOLATHE) : D.build_type
D.category |= "Imported"
d_disk.blueprint = D
d_disk.blueprints[slot] = D
screen = 1.4
else if(href_list["eject_item"]) //Eject the item inside the destructive analyzer.
@@ -234,7 +277,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
usr << "<span class='danger'>The destructive analyzer is busy at the moment.</span>"
else if(linked_destroy.loaded_item)
linked_destroy.loaded_item.loc = linked_destroy.loc
linked_destroy.loaded_item.forceMove(linked_destroy.loc)
linked_destroy.loaded_item = null
linked_destroy.icon_state = "d_analyzer"
screen = 1.0
@@ -342,6 +385,9 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/datum/design/being_built = files.known_designs[href_list["build"]]
var/amount = text2num(href_list["amount"])
if(being_built.make_reagents.len)
return 0
if(!linked_lathe || !being_built || !amount)
updateUsrDialog()
return
@@ -380,18 +426,21 @@ won't update every console in existence) but it's more of a hassle to do. Also,
enough_materials = 0
g2g = 0
else
for(var/R in being_built.reagents)
if(!linked_lathe.reagents.has_reagent(R, being_built.reagents[R]*coeff))
for(var/R in being_built.reagents_list)
if(!linked_lathe.reagents.has_reagent(R, being_built.reagents_list[R]*coeff))
linked_lathe.say("Not enough reagents to complete prototype.")
enough_materials = 0
g2g = 0
if(enough_materials)
linked_lathe.materials.use_amount(efficient_mats, amount)
for(var/R in being_built.reagents)
linked_lathe.reagents.remove_reagent(R, being_built.reagents[R]*coeff)
for(var/R in being_built.reagents_list)
linked_lathe.reagents.remove_reagent(R, being_built.reagents_list[R]*coeff)
var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes.
coeff *= being_built.lathe_time_factor
spawn(32*coeff*amount**0.8)
if(linked_lathe)
if(g2g) //And if we only fail the material requirements, we still spend time and power
@@ -453,16 +502,16 @@ won't update every console in existence) but it's more of a hassle to do. Also,
enough_materials = 0
g2g = 0
else
for(var/R in being_built.reagents)
if(!linked_imprinter.reagents.has_reagent(R, being_built.reagents[R]/coeff))
for(var/R in being_built.reagents_list)
if(!linked_imprinter.reagents.has_reagent(R, being_built.reagents_list[R]/coeff))
linked_imprinter.say("Not enough reagents to complete prototype.")
enough_materials = 0
g2g = 0
if(enough_materials)
linked_imprinter.materials.use_amount(efficient_mats)
for(var/R in being_built.reagents)
linked_imprinter.reagents.remove_reagent(R, being_built.reagents[R]/coeff)
for(var/R in being_built.reagents_list)
linked_imprinter.reagents.remove_reagent(R, being_built.reagents_list[R]/coeff)
var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes.
spawn(16)
@@ -522,7 +571,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
else if(href_list["reset"]) //Reset the R&D console's database.
griefProtection()
var/choice = alert("R&D Console Database Reset", "Are you sure you want to reset the R&D console's database? Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
if(choice == "Continue" && usr.canUseTopic(src))
message_admins("[key_name_admin(usr)] reset \the [src.name]'s database")
log_game("[key_name_admin(usr)] reset \the [src.name]'s database")
screen = 0.0
@@ -640,22 +689,19 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "</div>"
if(1.2) //Technology Disk Menu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A><HR>"
dat += "<div class='statusDisplay'>Technology Data Disk Contents:<BR><BR>"
if(t_disk.stored == null)
dat += "The disk has no data stored on it.</div>"
dat += "Operations: "
dat += "<A href='?src=\ref[src];menu=1.3'>Load Tech to Disk</A>"
else
dat += "Name: [t_disk.stored.name]<BR>"
dat += "Level: [t_disk.stored.level]<BR>"
dat += "Description: [t_disk.stored.desc]</div>"
dat += "Operations: "
dat += "<A href='?src=\ref[src];updt_tech=1'>Upload to Database</A>"
dat += "<A href='?src=\ref[src];clear_tech=1'>Clear Disk</A>"
dat += "<A href='?src=\ref[src];eject_tech=1'>Eject Disk</A>"
dat += "Disk Operations: <A href='?src=\ref[src];clear_tech=0'>Clear Disk</A><A href='?src=\ref[src];updt_tech=0'>Upload All</A><A href='?src=\ref[src];eject_tech=1'>Eject Disk</A>"
for(var/i in 1 to t_disk.max_tech_stored)
dat += "<div class='statusDisplay'>"
if(t_disk.tech_stored[i])
var/datum/tech/tech = t_disk.tech_stored[i]
dat += "Name: [tech.name]<BR>"
dat += "Level: [tech.level]<BR>"
dat += "Description: [tech.desc]<BR>"
dat += "Operations: <A href='?src=\ref[src];updt_tech=[i]'>Upload to Database</A><A href='?src=\ref[src];clear_tech=[i]'>Clear Slot</A>"
else
dat += "Empty Slot<BR>Operations: <A href='?src=\ref[src];menu=1.3;disk_slot=[i]'>Load Tech to Slot</A>"
dat += "</div>"
if(1.3) //Technology Disk submenu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
dat += "<A href='?src=\ref[src];menu=1.2'>Return to Disk Operations</A><div class='statusDisplay'>"
@@ -664,42 +710,41 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/datum/tech/T = files.known_tech[v]
if(T.level <= 0)
continue
dat += "[T.name] "
dat += "<A href='?src=\ref[src];copy_tech=1;copy_tech_ID=[T.id]'>Copy to Disk</A><BR>"
dat += "[T.name]"
dat += "<A href='?src=\ref[src];copy_tech=[disk_slot_selected];copy_tech_ID=[T.id]'>Copy to Disk</A><BR>"
dat += "</div>"
if(1.4) //Design Disk menu.
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A><div class='statusDisplay'>"
if(d_disk.blueprint == null)
dat += "The disk has no data stored on it.</div>"
dat += "Operations: "
dat += "<A href='?src=\ref[src];menu=1.5'>Load Design to Disk</A>"
else
dat += "Name: [d_disk.blueprint.name]<BR>"
var/b_type = d_disk.blueprint.build_type
if(b_type)
dat += "Lathe Types:<BR>"
if(b_type & IMPRINTER) dat += "Circuit Imprinter<BR>"
if(b_type & PROTOLATHE) dat += "Protolathe<BR>"
if(b_type & AUTOLATHE) dat += "Autolathe<BR>"
if(b_type & MECHFAB) dat += "Exosuit Fabricator<BR>"
dat += "Required Materials:<BR>"
var/all_mats = d_disk.blueprint.materials + d_disk.blueprint.reagents
for(var/M in all_mats)
dat += "* [CallMaterialName(M)] x [all_mats[M]]<BR>"
dat += "</div>Operations: "
dat += "<A href='?src=\ref[src];updt_design=1'>Upload to Database</A>"
dat += "<A href='?src=\ref[src];clear_design=1'>Clear Disk</A>"
dat += "<A href='?src=\ref[src];eject_design=1'>Eject Disk</A>"
if(1.5) //Technology disk submenu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A><HR>"
dat += "Disk Operations: <A href='?src=\ref[src];clear_design=0'>Clear Disk</A><A href='?src=\ref[src];updt_design=0'>Upload All</A><A href='?src=\ref[src];eject_design=1'>Eject Disk</A>"
for(var/i in 1 to d_disk.max_blueprints)
dat += "<div class='statusDisplay'>"
if(d_disk.blueprints[i])
var/datum/design/D = d_disk.blueprints[i]
dat += "Name: [D.name]<BR>"
if(D.build_type)
dat += "Lathe Types:<BR>"
if(D.build_type & IMPRINTER) dat += "Circuit Imprinter<BR>"
if(D.build_type & PROTOLATHE) dat += "Protolathe<BR>"
if(D.build_type & AUTOLATHE) dat += "Autolathe<BR>"
if(D.build_type & MECHFAB) dat += "Exosuit Fabricator<BR>"
if(D.build_type & BIOGENERATOR) dat += "Biogenerator<BR>"
dat += "Required Materials:<BR>"
var/all_mats = D.materials + D.reagents_list
for(var/M in all_mats)
dat += "* [CallMaterialName(M)] x [all_mats[M]]<BR>"
dat += "Operations: <A href='?src=\ref[src];updt_design=[i]'>Upload to Database</A> <A href='?src=\ref[src];clear_design=[i]'>Clear Slot</A>"
else
dat += "Empty Slot<BR>Operations: <A href='?src=\ref[src];menu=1.5;disk_slot=[i]'>Load Design to Slot</A>"
dat += "</div>"
if(1.5) //Design disk submenu
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
dat += "<A href='?src=\ref[src];menu=1.4'>Return to Disk Operations</A><div class='statusDisplay'>"
dat += "<h3>Load Design to Disk:</h3><BR>"
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
dat += "[D.name] "
dat += "<A href='?src=\ref[src];copy_design=1;copy_design_ID=[D.id]'>Copy to Disk</A><BR>"
dat += "<A href='?src=\ref[src];copy_design=[disk_slot_selected];copy_design_ID=[D.id]'>Copy to Disk</A><BR>"
dat += "</div>"
if(1.6) //R&D console settings
@@ -806,7 +851,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/c = 50
var/t
var/all_materials = D.materials + D.reagents
var/all_materials = D.materials + D.reagents_list
for(var/M in all_materials)
t = linked_lathe.check_mat(D, M)
temp_material += " | "
@@ -840,13 +885,14 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/temp_material
var/c = 50
var/t
for(var/M in D.materials)
var/all_materials = D.materials + D.reagents_list
for(var/M in all_materials)
t = linked_lathe.check_mat(D, M)
temp_material += " | "
if (t < 1)
temp_material += "<span class='bad'>[D.materials[M]*coeff] [CallMaterialName(M)]</span>"
temp_material += "<span class='bad'>[all_materials[M]*coeff] [CallMaterialName(M)]</span>"
else
temp_material += " [D.materials[M]*coeff] [CallMaterialName(M)]"
temp_material += " [all_materials[M]*coeff] [CallMaterialName(M)]"
c = min(c,t)
if (c >= 1)
@@ -924,7 +970,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/temp_materials
var/check_materials = 1
var/all_materials = D.materials + D.reagents
var/all_materials = D.materials + D.reagents_list
for(var/M in all_materials)
temp_materials += " | "
@@ -950,13 +996,14 @@ won't update every console in existence) but it's more of a hassle to do. Also,
for(var/datum/design/D in matching_designs)
var/temp_materials
var/check_materials = 1
for(var/M in D.materials)
var/all_materials = D.materials + D.reagents_list
for(var/M in all_materials)
temp_materials += " | "
if (!linked_imprinter.check_mat(D, M))
check_materials = 0
temp_materials += " <span class='bad'>[D.materials[M]/coeff] [CallMaterialName(M)]</span>"
temp_materials += " <span class='bad'>[all_materials[M]/coeff] [CallMaterialName(M)]</span>"
else
temp_materials += " [D.materials[M]/coeff] [CallMaterialName(M)]"
temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]"
if (check_materials)
dat += "<A href='?src=\ref[src];imprint=[D.id]'>[D.name]</A>[temp_materials]<BR>"
else
+4 -4
View File
@@ -1,4 +1,4 @@
//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.
@@ -33,7 +33,7 @@
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))
if (electrocute_mob(user, get_area(src), src, 0.7, TRUE))
return 1
else
return 0
@@ -105,7 +105,7 @@
//we eject the loaded item when deconstructing the machine
/obj/machinery/r_n_d/deconstruction()
/obj/machinery/r_n_d/on_deconstruction()
if(loaded_item)
loaded_item.loc = loc
loaded_item.forceMove(loc)
..()
+62 -4
View File
@@ -143,11 +143,37 @@ research holder datum.
if((D.build_type & AUTOLATHE) && ("initial" in D.category)) //autolathe starts without hacked designs
AddDesign2Known(D)
//Limb Grower files
/datum/research/limbgrower/New()
for(var/T in (subtypesof(/datum/tech)))
possible_tech += new T(src)
for(var/path in subtypesof(/datum/design))
var/datum/design/D = new path(src)
possible_designs += D
if((D.build_type & LIMBGROWER) && ("initial" in D.category))
AddDesign2Known(D)
/datum/research/autolathe/AddDesign2Known(datum/design/D)
if(!(D.build_type & AUTOLATHE))
return
..()
//Biogenerator files
/datum/research/biogenerator/New()
for(var/T in (subtypesof(/datum/tech)))
possible_tech += new T(src)
for(var/path in subtypesof(/datum/design))
var/datum/design/D = new path(src)
possible_designs += D
if((D.build_type & BIOGENERATOR) && ("initial" in D.category))
AddDesign2Known(D)
/datum/research/biogenerator/AddDesign2Known(datum/design/D)
if(!(D.build_type & BIOGENERATOR))
return
..()
/***************************************************************
** Technology Datums **
** Includes all the various technoliges and what they make. **
@@ -273,12 +299,44 @@ research holder datum.
return cost
/obj/item/weapon/disk/tech_disk
name = "Technology 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
materials = list(MAT_METAL=300, MAT_GLASS=100)
var/list/tech_stored = list()
var/max_tech_stored = 1
/obj/item/weapon/disk/tech_disk/New()
..()
src.pixel_x = rand(-5, 5)
src.pixel_y = rand(-5, 5)
src.pixel_y = rand(-5, 5)
for(var/i in 1 to max_tech_stored)
tech_stored += null
/obj/item/weapon/disk/tech_disk/adv
name = "advanced technology disk"
desc = "A disk for storing technology data for further research. This one has extra storage space."
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER=50)
max_tech_stored = 5
/obj/item/weapon/disk/tech_disk/super_adv
name = "quantum technology disk"
desc = "A disk for storing technology data for further research. This one has extremely large storage space."
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER=100, MAT_GOLD=100)
max_tech_stored = 10
/obj/item/weapon/disk/tech_disk/debug
name = "centcomm technology disk"
desc = "A debug item for research"
materials = list()
max_tech_stored = 0
/obj/item/weapon/disk/tech_disk/debug/New()
..()
var/list/techs = subtypesof(/datum/tech)
max_tech_stored = techs.len
for(var/V in techs)
var/datum/tech/T = new V()
tech_stored += T
T.level = 8
+8 -16
View File
@@ -3,7 +3,7 @@
icon = 'icons/obj/machines/research.dmi'
icon_state = "server"
var/datum/research/files
var/health = 100
var/heat_health = 100
var/list/id_with_upload = list() //List of R&D consoles with upload to server access.
var/list/id_with_download = list() //List of R&D consoles with download from server access.
var/id_with_upload_string = "" //String versions for easy editing in map editor.
@@ -56,12 +56,12 @@
var/datum/gas_mixture/environment = loc.return_air()
switch(environment.temperature)
if(0 to T0C)
health = min(100, health + 1)
heat_health = min(100, heat_health + 1)
if(T0C to (T20C + 20))
health = Clamp(health, 0, 100)
heat_health = Clamp(heat_health, 0, 100)
if((T20C + 20) to (T0C + 70))
health = max(0, health - 1)
if(health <= 0)
heat_health = max(0, heat_health - 1)
if(heat_health <= 0)
/*griefProtection() This seems to get called twice before running any code that deletes/damages the server or it's files anwyay.
refreshParts and the hasReq procs that get called by this are laggy and do not need to be called by every server on the map every tick */
var/updateRD = 0
@@ -84,18 +84,10 @@
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)
@@ -129,7 +121,7 @@
air_update_turf()
//called when the server is deconstructed.
/obj/machinery/r_n_d/server/deconstruction()
/obj/machinery/r_n_d/server/on_deconstruction()
griefProtection()
..()
@@ -234,7 +226,7 @@
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")
if(choice == "Continue" && usr.canUseTopic(src))
var/datum/tech/T = temp_server.files.known_tech[href_list["reset_tech"]]
if(T)
T.level = 1
@@ -242,7 +234,7 @@
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")
if(choice == "Continue" && usr.canUseTopic(src))
var/datum/design/D = temp_server.files.known_designs[href_list["reset_design"]]
if(D)
temp_server.files.known_designs -= D.id
+8 -8
View File
@@ -4,7 +4,7 @@
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
icon_state = "RPED"
item_state = "RPED"
w_class = 5
w_class = WEIGHT_CLASS_HUGE
can_hold = list(/obj/item/weapon/stock_parts)
storage_slots = 50
use_to_pickup = 1
@@ -12,7 +12,7 @@
allow_quick_empty = 1
collection_mode = 1
display_contents_with_number = 1
max_w_class = 3
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 100
var/works_from_distance = 0
var/pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/rped.ogg'
@@ -25,16 +25,16 @@
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)
user.Beam(T,icon_state="rped_upgrade",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
w_class = WEIGHT_CLASS_NORMAL
storage_slots = 400
max_w_class = 3
max_w_class = WEIGHT_CLASS_NORMAL
max_combined_w_class = 800
works_from_distance = 1
pshoom_or_beepboopblorpzingshadashwoosh = 'sound/items/PSHOOM.ogg'
@@ -45,7 +45,7 @@
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)
user.Beam(dest_object,icon_state="rped_upgrade",time=5)
return 1
user << "The [src.name] buzzes."
playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0)
@@ -67,7 +67,7 @@
name = "stock part"
desc = "What?"
icon = 'icons/obj/stock_parts.dmi'
w_class = 2
w_class = WEIGHT_CLASS_SMALL
var/rating = 1
/obj/item/weapon/stock_parts/New()
@@ -301,4 +301,4 @@
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"
origin_tech = "materials=8;programming=8;magnets=8;powerstorage=8;bluespace=8;combat=8;biotech=8;syndicate=8;engineering=8;plasmatech=8;abductor=8"
@@ -28,7 +28,6 @@
icon_screen = "slime_comp"
icon_keyboard = "rd_key"
light_color = LIGHT_COLOR_PINK
/obj/machinery/computer/camera_advanced/xenobio/CreateEye()
eyeobj = new /mob/camera/aiEye/remote/xenobio()
@@ -66,10 +65,20 @@
/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 << "<span class='notice'>You feed [O] to [src]. It now has [monkeys] monkey cubes stored.</span>"
user.drop_item()
qdel(O)
return
else if(istype(O, /obj/item/weapon/storage/bag))
var/obj/item/weapon/storage/P = O
var/loaded = 0
for(var/obj/G in P.contents)
if(istype(G, /obj/item/weapon/reagent_containers/food/snacks/monkeycube))
loaded = 1
monkeys++
qdel(G)
if (loaded)
user << "<span class='notice'>You fill [src] with the monkey cubes stored in [O]. [src] now has [monkeys] monkey cubes stored.</span>"
..()
/datum/action/innate/camera_off/xenobio/Activate()
@@ -7,12 +7,13 @@
icon = 'icons/mob/slimes.dmi'
icon_state = "grey slime extract"
force = 1
w_class = 1
w_class = WEIGHT_CLASS_TINY
throwforce = 0
throw_speed = 3
throw_range = 6
origin_tech = "biotech=3"
var/Uses = 1 // uses before it goes inert
var/qdel_timer = null // deletion timer, for delayed reactions
/obj/item/slime_extract/attackby(obj/item/O, mob/user)
if(istype(O, /obj/item/slimepotion/enhancer))
@@ -121,7 +122,7 @@
/obj/item/slimepotion
name = "slime potion"
desc = "A hard yet gelatinous capsule excreted by a slime, containing mysterious substances."
w_class = 1
w_class = WEIGHT_CLASS_TINY
origin_tech = "biotech=4"
/obj/item/slimepotion/afterattack(obj/item/weapon/reagent_containers/target, mob/user , proximity)
@@ -133,7 +134,7 @@
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"
icon_state = "potsilver"
/obj/item/slimepotion/docility/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))
@@ -156,10 +157,10 @@
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."
name = "intelligence potion"
desc = "A miraculous chemical mix that grants human like intelligence to living beings."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle19"
icon_state = "potpink"
origin_tech = "biotech=6"
var/list/not_interested = list()
var/being_used = 0
@@ -184,17 +185,17 @@
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/list/candidates = pollCandidatesForMob("Do you want to play as [SM.name]?", ROLE_ALIEN, null, ROLE_ALIEN, 50, SM, POLL_IGNORE_SENTIENCE_POTION) // see poll_ignore.dm
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.mind.enslave_mind_to_creator(user)
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>"
SM << "<span class='userdanger'>You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist [user.p_them()] in completing [user.p_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
@@ -206,7 +207,7 @@
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"
icon_state = "potorange"
origin_tech = "biotech=6"
var/prompted = 0
var/animal_type = SENTIENCE_ORGANIC
@@ -239,7 +240,7 @@
user.mind.transfer_to(SM)
SM.languages_spoken = user.languages_spoken
SM.languages_understood = user.languages_understood
SM.faction = user.faction
SM.faction = user.faction.Copy()
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>"
@@ -251,7 +252,7 @@
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"
icon_state = "potred"
/obj/item/slimepotion/steroid/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))//If target is not a slime.
@@ -275,13 +276,13 @@
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"
icon_state = "potpurple"
/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"
icon_state = "potcyan"
/obj/item/slimepotion/stabilizer/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))
@@ -302,7 +303,7 @@
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"
icon_state = "potgreen"
/obj/item/slimepotion/mutator/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))
@@ -327,7 +328,7 @@
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"
icon_state = "potyellow"
origin_tech = "biotech=5"
/obj/item/slimepotion/speed/afterattack(obj/C, mob/user)
@@ -350,7 +351,8 @@
V.vehicle_move_delay = 0
user <<"<span class='notice'>You slather the red gunk over the [C], making it faster.</span>"
C.color = "#FF0000"
C.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
C.add_atom_colour("#FF0000", FIXED_COLOUR_PRIORITY)
qdel(src)
@@ -358,7 +360,7 @@
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"
icon_state = "potblue"
origin_tech = "biotech=5"
var/uses = 3
@@ -375,14 +377,39 @@
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.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
C.add_atom_colour("#000080", FIXED_COLOUR_PRIORITY)
C.max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
C.heat_protection = C.body_parts_covered
C.burn_state = FIRE_PROOF
C.resistance_flags |= FIRE_PROOF
uses --
if(!uses)
qdel(src)
/obj/item/slimepotion/genderchange
name = "gender change potion"
desc = "An interesting chemical mix that changes the biological gender of what its applied to. Cannot be used on things that lack gender entirely."
icon = 'icons/obj/chemical.dmi'
icon_state = "potlightpink"
/obj/item/slimepotion/genderchange/attack(mob/living/L, mob/user)
if(!istype(L) || L.stat == DEAD)
user << "<span class='warning'>The potion can only be used on living things!</span>"
return
if(L.gender != MALE && L.gender != FEMALE)
user << "<span class='warning'>The potion can only be used on gendered things!</span>"
return
if(L.gender == MALE)
L.gender = FEMALE
L.visible_message("<span class='notice'>[L] suddenly looks more feminine!</span>")
else
L.gender = MALE
L.visible_message("<span class='notice'>[L] suddenly looks more masculine!</span>")
L.regenerate_icons()
qdel(src)
////////Adamantine Golem stuff I dunno where else to put it
// This will eventually be removed.
@@ -394,6 +421,7 @@
item_state = "golem"
item_color = "golem"
flags = ABSTRACT | NODROP
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
has_sensor = 0
/obj/item/clothing/suit/golem
@@ -401,11 +429,12 @@
desc = "a golem's thick outter shell"
icon_state = "golem"
item_state = "golem"
w_class = 4//bulky item
w_class = WEIGHT_CLASS_BULKY
gas_transfer_coefficient = 0.90
permeability_coefficient = 0.50
body_parts_covered = FULL_BODY
flags_inv = HIDEGLOVES | HIDESHOES | HIDEJUMPSUIT
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
flags = ABSTRACT | NODROP
/obj/item/clothing/shoes/golem
@@ -413,6 +442,7 @@
desc = "sturdy adamantine feet"
icon_state = "golem"
item_state = null
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
flags = NOSLIP | ABSTRACT | NODROP
@@ -422,7 +452,7 @@
icon_state = "golem"
item_state = "golem"
siemens_coefficient = 0
unacidable = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
flags = ABSTRACT | NODROP
@@ -433,6 +463,7 @@
item_state = null
siemens_coefficient = 0
flags = ABSTRACT | NODROP
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
/obj/item/clothing/head/space/golem
@@ -441,7 +472,7 @@
item_color = "dermal"
name = "golem's head"
desc = "a golem's head"
unacidable = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
flags = ABSTRACT | NODROP
/obj/effect/golemrune
@@ -450,7 +481,7 @@
name = "rune"
icon = 'icons/obj/rune.dmi'
icon_state = "golem"
unacidable = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
layer = TURF_LAYER
/obj/effect/golemrune/New()
@@ -496,34 +527,12 @@
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 << "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 [user.p_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.enslave_mind_to_creator(user)
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)
@@ -540,7 +549,6 @@
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()
@@ -560,13 +568,13 @@
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))
if(isliving(A))
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))
if(ishostile(M))
var/mob/living/simple_animal/hostile/H = M
H.AIStatus = AI_OFF
H.LoseTarget()
@@ -596,7 +604,7 @@
/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))
if(ishostile(M))
var/mob/living/simple_animal/hostile/H = M
H.AIStatus = initial(H.AIStatus)
@@ -610,7 +618,7 @@
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
w_class = WEIGHT_CLASS_NORMAL
force = 6
materials = list(MAT_METAL=500)
throwforce = 10
@@ -621,19 +629,12 @@
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
w_class = WEIGHT_CLASS_NORMAL
force = 6
materials = list(MAT_METAL=500)
throwforce = 10
@@ -644,13 +645,6 @@
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."
@@ -661,5 +655,6 @@
var/area/A = get_area(src)
if(success)
for(var/turf/T in A)
T.color = "#2956B2"
T.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
T.add_atom_colour("#2956B2", FIXED_COLOUR_PRIORITY)
qdel(src)