Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into tggenetics
This commit is contained in:
@@ -7,15 +7,6 @@ For the materials datum, it assumes you need reagents unless specified otherwise
|
||||
you use one of the material IDs below. These are NOT ids in the usual sense (they aren't defined in the object or part of a datum),
|
||||
they are simply references used as part of a "has materials?" type proc. They all start with a $ to denote that they aren't reagents.
|
||||
The currently supporting non-reagent materials. All material amounts are set as the define MINERAL_MATERIAL_AMOUNT, which defaults to 2000
|
||||
- MAT_METAL (/obj/item/stack/metal).
|
||||
- MAT_GLASS (/obj/item/stack/glass).
|
||||
- MAT_PLASMA (/obj/item/stack/plasma).
|
||||
- MAT_SILVER (/obj/item/stack/silver).
|
||||
- MAT_GOLD (/obj/item/stack/gold).
|
||||
- MAT_URANIUM (/obj/item/stack/uranium).
|
||||
- MAT_DIAMOND (/obj/item/stack/diamond).
|
||||
- MAT_BANANIUM (/obj/item/stack/bananium).
|
||||
(Insert new ones here)
|
||||
|
||||
Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials.
|
||||
|
||||
@@ -57,6 +48,17 @@ other types of metals and chemistry for reagents).
|
||||
SSresearch.techweb_designs -= id
|
||||
return ..()
|
||||
|
||||
/datum/design/proc/InitializeMaterials()
|
||||
var/list/temp_list = list()
|
||||
for(var/i in materials) //Go through all of our materials, get the subsystem instance, and then replace the list.
|
||||
var/amount = materials[i]
|
||||
if(!istext(i)) //Not a category, so get the ref the normal way
|
||||
var/datum/material/M = getmaterialref(i)
|
||||
temp_list[M] = amount
|
||||
else
|
||||
temp_list[i] = amount
|
||||
materials = temp_list
|
||||
|
||||
/datum/design/proc/icon_html(client/user)
|
||||
var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/research_designs)
|
||||
sheet.send(user)
|
||||
@@ -70,7 +72,7 @@ other types of metals and chemistry for reagents).
|
||||
name = "Component Design Disk"
|
||||
desc = "A disk for storing device design data for construction in lathes."
|
||||
icon_state = "datadisk1"
|
||||
materials = list(MAT_METAL=300, MAT_GLASS=100)
|
||||
custom_materials = list(/datum/material/iron=300, /datum/material/glass=100)
|
||||
var/list/blueprints = list()
|
||||
var/max_blueprints = 1
|
||||
|
||||
@@ -84,5 +86,5 @@ other types of metals and chemistry for reagents).
|
||||
/obj/item/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)
|
||||
custom_materials = list(/datum/material/iron=300, /datum/material/glass=100, /datum/material/silver = 50)
|
||||
max_blueprints = 5
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
name = "Module Design (Safeguard)"
|
||||
desc = "Allows for the construction of a Safeguard AI Module."
|
||||
id = "safeguard_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/aiModule/supplied/safeguard
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -23,7 +23,7 @@
|
||||
name = "Module Design (OneCrew)"
|
||||
desc = "Allows for the construction of a OneCrew AI Module."
|
||||
id = "onehuman_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 6000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 6000)
|
||||
build_path = /obj/item/aiModule/zeroth/oneHuman
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -32,7 +32,7 @@
|
||||
name = "Module Design (ProtectStation)"
|
||||
desc = "Allows for the construction of a ProtectStation AI Module."
|
||||
id = "protectstation_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/aiModule/supplied/protectStation
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -41,7 +41,7 @@
|
||||
name = "Module Design (Quarantine)"
|
||||
desc = "Allows for the construction of a Quarantine AI Module."
|
||||
id = "quarantine_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/aiModule/supplied/quarantine
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -50,7 +50,7 @@
|
||||
name = "Module Design (OxygenIsToxicToHumans)"
|
||||
desc = "Allows for the construction of a Safeguard AI Module."
|
||||
id = "oxygen_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/aiModule/supplied/oxygen
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -59,7 +59,7 @@
|
||||
name = "Module Design (Freeform)"
|
||||
desc = "Allows for the construction of a Freeform AI Module."
|
||||
id = "freeform_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 10000)//Custom inputs should be more expensive to get
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 10000)//Custom inputs should be more expensive to get
|
||||
build_path = /obj/item/aiModule/supplied/freeform
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -68,7 +68,7 @@
|
||||
name = "Module Design (Reset)"
|
||||
desc = "Allows for the construction of a Reset AI Module."
|
||||
id = "reset_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/aiModule/reset
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -77,7 +77,7 @@
|
||||
name = "Module Design (Purge)"
|
||||
desc = "Allows for the construction of a Purge AI Module."
|
||||
id = "purge_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/aiModule/reset/purge
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -86,7 +86,7 @@
|
||||
name = "Module Design (Law Removal)"
|
||||
desc = "Allows for the construction of a Law Removal AI Core Module."
|
||||
id = "remove_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/aiModule/remove
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -95,7 +95,7 @@
|
||||
name = "AI Core Module (Freeform)"
|
||||
desc = "Allows for the construction of a Freeform AI Core Module."
|
||||
id = "freeformcore_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 10000)//Ditto
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 10000)//Ditto
|
||||
build_path = /obj/item/aiModule/core/freeformcore
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -104,7 +104,7 @@
|
||||
name = "Core Module Design (Asimov)"
|
||||
desc = "Allows for the construction of an Asimov AI Core Module."
|
||||
id = "asimov_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/aiModule/core/full/asimov
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -114,7 +114,7 @@
|
||||
desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
|
||||
id = "paladin_module"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/aiModule/core/full/paladin
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -123,7 +123,7 @@
|
||||
name = "Core Module Design (T.Y.R.A.N.T.)"
|
||||
desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
|
||||
id = "tyrant_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/aiModule/core/full/tyrant
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -132,7 +132,7 @@
|
||||
name = "Core Module Design (Corporate)"
|
||||
desc = "Allows for the construction of a Corporate AI Core Module."
|
||||
id = "corporate_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/aiModule/core/full/corp
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -141,7 +141,7 @@
|
||||
name = "Core Module Design (Default)"
|
||||
desc = "Allows for the construction of a Default AI Core Module."
|
||||
id = "default_module"
|
||||
materials = list(MAT_GLASS = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/aiModule/core/full/custom
|
||||
category = list("AI Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
name = "Machine Design (AutoBottler)"
|
||||
desc = "Allows for the construction of circuit boards used to build an Autobottler."
|
||||
id = "autobottler"
|
||||
materials = list(MAT_GLASS = 2000)
|
||||
materials = list(/datum/material/glass = 2000)
|
||||
build_path = /obj/item/circuitboard/machine/autobottler
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/bottle
|
||||
materials = list(MAT_GLASS = 1200)
|
||||
materials = list(/datum/material/glass = 1200)
|
||||
build_type = AUTOBOTTLER
|
||||
category = list("Storge")
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
build_path = /obj/item/reagent_containers/food/drinks/bottle/grenadine/empty
|
||||
|
||||
/datum/design/bottle/export
|
||||
materials = list(MAT_GLASS = 1200)
|
||||
materials = list(/datum/material/glass = 1200)
|
||||
build_type = AUTOBOTTLER
|
||||
category = list("Brands")
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
name = "Metal Rod"
|
||||
id = "rods"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1000)
|
||||
materials = list(/datum/material/iron = 1000)
|
||||
build_path = /obj/item/stack/rods
|
||||
category = list("initial","Construction")
|
||||
maxstack = 50
|
||||
@@ -20,7 +20,7 @@
|
||||
name = "Metal"
|
||||
id = "metal"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/metal
|
||||
category = list("initial","Construction")
|
||||
maxstack = 50
|
||||
@@ -29,7 +29,7 @@
|
||||
name = "Glass"
|
||||
id = "glass"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/glass = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/glass
|
||||
category = list("initial","Construction")
|
||||
maxstack = 50
|
||||
@@ -38,7 +38,7 @@
|
||||
name = "Reinforced Glass"
|
||||
id = "rglass"
|
||||
build_type = AUTOLATHE | SMELTER | PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/rglass
|
||||
category = list("initial","Construction","Stock Parts")
|
||||
maxstack = 50
|
||||
@@ -47,7 +47,7 @@
|
||||
name = "Light Tube"
|
||||
id = "light_tube"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 100)
|
||||
materials = list(/datum/material/glass = 100)
|
||||
build_path = /obj/item/light/tube
|
||||
category = list("initial", "Construction")
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
name = "Light Bulb"
|
||||
id = "light_bulb"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 100)
|
||||
materials = list(/datum/material/glass = 100)
|
||||
build_path = /obj/item/light/bulb
|
||||
category = list("initial", "Construction")
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
name = "Camera Assembly"
|
||||
id = "camera_assembly"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 250)
|
||||
materials = list(/datum/material/iron = 400, /datum/material/glass = 250)
|
||||
build_path = /obj/item/wallframe/camera
|
||||
category = list("initial", "Construction")
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
name = "Newscaster Frame"
|
||||
id = "newscaster_frame"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 14000, MAT_GLASS = 8000)
|
||||
materials = list(/datum/material/iron = 14000, /datum/material/glass = 8000)
|
||||
build_path = /obj/item/wallframe/newscaster
|
||||
category = list("initial", "Construction")
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
name = "Turret Control Frame"
|
||||
id = "turret_control"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 12000)
|
||||
materials = list(/datum/material/iron = 12000)
|
||||
build_path = /obj/item/wallframe/turret_control
|
||||
category = list("initial", "Construction")
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
name = "Conveyor Belt"
|
||||
id = "conveyor_belt"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
materials = list(/datum/material/iron = 3000)
|
||||
build_path = /obj/item/stack/conveyor
|
||||
category = list("initial", "Construction")
|
||||
maxstack = 30
|
||||
@@ -96,7 +96,7 @@
|
||||
name = "Conveyor Belt Switch"
|
||||
id = "conveyor_switch"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 450, MAT_GLASS = 190)
|
||||
materials = list(/datum/material/iron = 450, /datum/material/glass = 190)
|
||||
build_path = /obj/item/conveyor_switch_construct
|
||||
category = list("initial", "Construction")
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
name = "Compressed Matter Cartridge"
|
||||
id = "rcd_ammo"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 12000, MAT_GLASS = 8000)
|
||||
materials = list(/datum/material/iron = 12000, /datum/material/glass=8000)
|
||||
build_path = /obj/item/rcd_ammo
|
||||
category = list("initial","Construction","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -113,7 +113,7 @@
|
||||
name = "Large Compressed Matter Cartridge"
|
||||
id = "rcd_ammo_large"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 48000, MAT_GLASS = 32000)
|
||||
materials = list(/datum/material/iron = 48000, /datum/material/glass = 32000)
|
||||
build_path = /obj/item/rcd_ammo/large
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
name = "APC Module"
|
||||
id = "power control"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/glass = 100)
|
||||
build_path = /obj/item/electronics/apc
|
||||
category = list("initial", "Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -19,7 +19,7 @@
|
||||
name = "Airlock Electronics"
|
||||
id = "airlock_board"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 50)
|
||||
build_path = /obj/item/electronics/airlock
|
||||
category = list("initial", "Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -28,7 +28,7 @@
|
||||
name = "Firelock Circuitry"
|
||||
id = "firelock_board"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 50)
|
||||
build_path = /obj/item/electronics/firelock
|
||||
category = list("initial", "Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -37,7 +37,7 @@
|
||||
name = "Air Alarm Electronics"
|
||||
id = "airalarm_electronics"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 50)
|
||||
build_path = /obj/item/electronics/airalarm
|
||||
category = list("initial", "Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -46,7 +46,7 @@
|
||||
name = "Fire Alarm Electronics"
|
||||
id = "firealarm_electronics"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 50)
|
||||
build_path = /obj/item/electronics/firealarm
|
||||
category = list("initial", "Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -55,7 +55,7 @@
|
||||
name = "Destination Tagger"
|
||||
id = "desttagger"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 250, MAT_GLASS = 125)
|
||||
materials = list(/datum/material/iron = 250, /datum/material/glass = 125)
|
||||
build_path = /obj/item/destTagger
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
name = "Hand Labeler"
|
||||
id = "handlabel"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 125)
|
||||
materials = list(/datum/material/iron = 150, /datum/material/glass = 125)
|
||||
build_path = /obj/item/hand_labeler
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
@@ -71,6 +71,6 @@
|
||||
name = "Light Fixture Battery"
|
||||
id = "miniature_power_cell"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 20)
|
||||
materials = list(/datum/material/glass = 20)
|
||||
build_path = /obj/item/stock_parts/cell/emergency_light
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
+21
-21
@@ -9,7 +9,7 @@
|
||||
name = "Kitchen Knife"
|
||||
id = "kitchen_knife"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 12000)
|
||||
materials = list(/datum/material/iron = 12000)
|
||||
build_path = /obj/item/kitchen/knife
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
name = "Fork"
|
||||
id = "fork"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 80)
|
||||
materials = list(/datum/material/iron = 80)
|
||||
build_path = /obj/item/kitchen/fork
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
name = "Tray"
|
||||
id = "tray"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
materials = list(/datum/material/iron = 3000)
|
||||
build_path = /obj/item/storage/bag/tray
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
name = "Bowl"
|
||||
id = "bowl"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
materials = list(/datum/material/glass = 500)
|
||||
build_path = /obj/item/reagent_containers/glass/bowl
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
name = "Drinking Glass"
|
||||
id = "drinking_glass"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
materials = list(/datum/material/glass = 500)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/drinkingglass
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
name = "Shot Glass"
|
||||
id = "shot_glass"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_GLASS = 100)
|
||||
materials = list(/datum/material/glass = 100)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
name = "Shaker"
|
||||
id = "shaker"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1500)
|
||||
materials = list(/datum/material/iron = 1500)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/shaker
|
||||
category = list("initial","Dinnerware")
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
name = "Scalpel"
|
||||
id = "scalpel"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/scalpel
|
||||
category = list("initial", "Medical","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -78,7 +78,7 @@
|
||||
name = "Circular Saw"
|
||||
id = "circular_saw"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 6000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 6000)
|
||||
build_path = /obj/item/circular_saw
|
||||
category = list("initial", "Medical","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -87,7 +87,7 @@
|
||||
name = "Surgical Drill"
|
||||
id = "surgicaldrill"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 6000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 6000)
|
||||
build_path = /obj/item/surgicaldrill
|
||||
category = list("initial", "Medical","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -96,7 +96,7 @@
|
||||
name = "Retractor"
|
||||
id = "retractor"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3000)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3000)
|
||||
build_path = /obj/item/retractor
|
||||
category = list("initial", "Medical","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -105,7 +105,7 @@
|
||||
name = "Cautery"
|
||||
id = "cautery"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 750)
|
||||
materials = list(/datum/material/iron = 2500, /datum/material/glass = 750)
|
||||
build_path = /obj/item/cautery
|
||||
category = list("initial", "Medical","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -114,7 +114,7 @@
|
||||
name = "Hemostat"
|
||||
id = "hemostat"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
|
||||
build_path = /obj/item/hemostat
|
||||
category = list("initial", "Medical","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -123,7 +123,7 @@
|
||||
name = "Beaker"
|
||||
id = "beaker"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
materials = list(/datum/material/glass = 500)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker
|
||||
category = list("initial", "Medical","Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -132,7 +132,7 @@
|
||||
name = "Large Beaker"
|
||||
id = "large_beaker"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_GLASS = 2500)
|
||||
materials = list(/datum/material/glass = 2500)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker/large
|
||||
category = list("initial", "Medical","Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -141,7 +141,7 @@
|
||||
name = "Health Analyzer"
|
||||
id = "healthanalyzer"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 50)
|
||||
build_path = /obj/item/healthanalyzer
|
||||
category = list("initial", "Medical")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -150,7 +150,7 @@
|
||||
name = "Pill Bottle"
|
||||
id = "pillbottle"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 20, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 20, /datum/material/glass = 100)
|
||||
build_path = /obj/item/storage/pill_bottle
|
||||
category = list("initial", "Medical","Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -159,7 +159,7 @@
|
||||
name = "Syringe"
|
||||
id = "syringe"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10, MAT_GLASS = 20)
|
||||
materials = list(/datum/material/iron = 10, /datum/material/glass = 20)
|
||||
build_path = /obj/item/reagent_containers/syringe
|
||||
category = list("initial", "Medical")
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
name = "Health Sensor"
|
||||
id = "health_sensor"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 800, /datum/material/glass = 200)
|
||||
build_path = /obj/item/assembly/health
|
||||
category = list("initial", "Medical")
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
name = "Hypovial"
|
||||
id = "hypovial"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
materials = list(/datum/material/iron = 500)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/vial/small
|
||||
category = list("initial","Medical","Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -184,7 +184,7 @@
|
||||
name = "Large Hypovial"
|
||||
id = "large_hypovial"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500)
|
||||
materials = list(/datum/material/iron = 2500)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/vial/large
|
||||
category = list("initial","Medical","Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
+23
-23
@@ -9,7 +9,7 @@
|
||||
name = "Beanbag Slug"
|
||||
id = "beanbag_slug"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 250)
|
||||
materials = list(/datum/material/iron = 250)
|
||||
build_path = /obj/item/ammo_casing/shotgun/beanbag
|
||||
category = list("initial", "Security")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
name = "Rubber Shot"
|
||||
id = "rubber_shot"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
materials = list(/datum/material/iron = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun/rubbershot
|
||||
category = list("initial", "Security")
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
name = "Speed Loader (.38 rubber)"
|
||||
id = "c38"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 20000)
|
||||
materials = list(/datum/material/iron = 20000)
|
||||
build_path = /obj/item/ammo_box/c38
|
||||
category = list("initial", "Security")
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
name = "Industrial Welding Tool"
|
||||
id = "large_welding_tool"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 70, MAT_GLASS = 60)
|
||||
materials = list(/datum/material/iron = 70, /datum/material/glass = 60)
|
||||
build_path = /obj/item/weldingtool/largetank
|
||||
category = list("hacked", "Tools")
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
name = "Flamethrower"
|
||||
id = "flamethrower"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
materials = list(/datum/material/iron = 500)
|
||||
build_path = /obj/item/flamethrower/full
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
name = "Rapid Construction Device (RCD)"
|
||||
id = "rcd"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
materials = list(/datum/material/iron = 30000)
|
||||
build_path = /obj/item/construction/rcd
|
||||
category = list("hacked", "Construction")
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
name = "Rapid Pipe Dispenser (RPD)"
|
||||
id = "rpd"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 75000, MAT_GLASS = 37500)
|
||||
materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500)
|
||||
build_path = /obj/item/pipe_dispenser
|
||||
category = list("hacked", "Construction")
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
name = "Handcuffs"
|
||||
id = "handcuffs"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
materials = list(/datum/material/iron = 500)
|
||||
build_path = /obj/item/restraints/handcuffs
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
name = "Modular Receiver"
|
||||
id = "receiver"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 15000)
|
||||
materials = list(/datum/material/iron = 15000)
|
||||
build_path = /obj/item/weaponcrafting/receiver
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
name = "Shotgun Slug"
|
||||
id = "shotgun_slug"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
materials = list(/datum/material/iron = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
name = "Buckshot Shell"
|
||||
id = "buckshot_shell"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
materials = list(/datum/material/iron = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun/buckshot
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
name = "Shotgun Dart"
|
||||
id = "shotgun_dart"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
materials = list(/datum/material/iron = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun/dart
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
name = "Incendiary Slug"
|
||||
id = "incendiary_slug"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
materials = list(/datum/material/iron = 4000)
|
||||
build_path = /obj/item/ammo_casing/shotgun/incendiary
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
name = "Foam Riot Dart"
|
||||
id = "riot_dart"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1125) //Discount for making individually - no box = less metal!
|
||||
materials = list(/datum/material/iron = 1125) //Discount for making individually - no box = less metal!
|
||||
build_path = /obj/item/ammo_casing/caseless/foam_dart/riot
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
name = "Foam Riot Dart Box"
|
||||
id = "riot_darts"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50000) //Comes with 40 darts
|
||||
materials = list(/datum/material/iron = 50000) //Comes with 40 darts
|
||||
build_path = /obj/item/ammo_box/foambox/riot
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
name = "Revolver Bullet (.357)"
|
||||
id = "a357"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
materials = list(/datum/material/iron = 4000)
|
||||
build_path = /obj/item/ammo_casing/a357
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
name = "Rifle Bullet (7.62mm)"
|
||||
id = "a762"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 5000) //need seclathe for clips
|
||||
materials = list(/datum/material/iron = 5000) //need seclathe for clips
|
||||
build_path = /obj/item/ammo_casing/a762
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -149,7 +149,7 @@
|
||||
name = "Ammo Box (10mm)"
|
||||
id = "c10mm"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
materials = list(/datum/material/iron = 30000)
|
||||
build_path = /obj/item/ammo_box/c10mm
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
name = "Ammo Box (.45)"
|
||||
id = "c45"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
materials = list(/datum/material/iron = 30000)
|
||||
build_path = /obj/item/ammo_box/c45
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
name = "Ammo Box (9mm)"
|
||||
id = "c9mm"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30000)
|
||||
materials = list(/datum/material/iron = 30000)
|
||||
build_path = /obj/item/ammo_box/c9mm
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
name = "Electropack"
|
||||
id = "electropack"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 2500)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 2500)
|
||||
build_path = /obj/item/electropack
|
||||
category = list("hacked", "Security")
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
name = "Butcher's Cleaver"
|
||||
id = "cleaver"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 18000)
|
||||
materials = list(/datum/material/iron = 18000)
|
||||
build_path = /obj/item/kitchen/knife/butcher
|
||||
category = list("hacked", "Dinnerware")
|
||||
|
||||
@@ -189,6 +189,6 @@
|
||||
name = "Tinfoil Hat"
|
||||
id = "tinfoil_hat"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 5500)
|
||||
materials = list(/datum/material/iron = 5500)
|
||||
build_path = /obj/item/clothing/head/foilhat
|
||||
category = list("hacked", "Misc")
|
||||
|
||||
+30
-30
@@ -9,7 +9,7 @@
|
||||
name = "Remote Signaling Device"
|
||||
id = "signaler"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 120)
|
||||
materials = list(/datum/material/iron = 400, /datum/material/glass = 120)
|
||||
build_path = /obj/item/assembly/signaler
|
||||
category = list("initial", "T-Comm")
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
name = "Radio Headset"
|
||||
id = "radio_headset"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 75)
|
||||
materials = list(/datum/material/iron = 75)
|
||||
build_path = /obj/item/radio/headset
|
||||
category = list("initial", "T-Comm")
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
name = "Station Bounced Radio"
|
||||
id = "bounced_radio"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 75, MAT_GLASS = 25)
|
||||
materials = list(/datum/material/iron = 75, /datum/material/glass = 25)
|
||||
build_path = /obj/item/radio/off
|
||||
category = list("initial", "T-Comm")
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
name = "Intercom Frame"
|
||||
id = "intercom_frame"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 75, MAT_GLASS = 25)
|
||||
materials = list(/datum/material/iron = 75, /datum/material/glass = 25)
|
||||
build_path = /obj/item/wallframe/intercom
|
||||
category = list("initial", "T-Comm")
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
name = "Camera"
|
||||
id = "camera"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 100)
|
||||
build_path = /obj/item/camera
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
name = "Camera Film Cartridge"
|
||||
id = "camera_film"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10, MAT_GLASS = 10)
|
||||
materials = list(/datum/material/iron = 10, /datum/material/glass = 10)
|
||||
build_path = /obj/item/camera_film
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
name = "Earmuffs"
|
||||
id = "earmuffs"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/ears/earmuffs
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
name = "Pipe Painter"
|
||||
id = "pipe_painter"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2000)
|
||||
build_path = /obj/item/pipe_painter
|
||||
category = list("initial", "Misc","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -78,7 +78,7 @@
|
||||
name = "Airlock Painter"
|
||||
id = "airlock_painter"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 50)
|
||||
build_path = /obj/item/airlock_painter
|
||||
category = list("initial", "Misc","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -87,7 +87,7 @@
|
||||
name = "Cultivator"
|
||||
id = "cultivator"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL=50)
|
||||
materials = list(/datum/material/iron=50)
|
||||
build_path = /obj/item/cultivator
|
||||
category = list("initial","Misc","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -96,7 +96,7 @@
|
||||
name = "Plant Analyzer"
|
||||
id = "plant_analyzer"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 30, MAT_GLASS = 20)
|
||||
materials = list(/datum/material/iron = 30, /datum/material/glass = 20)
|
||||
build_path = /obj/item/plant_analyzer
|
||||
category = list("initial","Misc","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -105,7 +105,7 @@
|
||||
name = "Shovel"
|
||||
id = "shovel"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 50)
|
||||
materials = list(/datum/material/iron = 50)
|
||||
build_path = /obj/item/shovel
|
||||
category = list("initial","Misc","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -114,7 +114,7 @@
|
||||
name = "Spade"
|
||||
id = "spade"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 50)
|
||||
materials = list(/datum/material/iron = 50)
|
||||
build_path = /obj/item/shovel/spade
|
||||
category = list("initial","Misc","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -123,7 +123,7 @@
|
||||
name = "Hatchet"
|
||||
id = "hatchet"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 15000)
|
||||
materials = list(/datum/material/iron = 15000)
|
||||
build_path = /obj/item/hatchet
|
||||
category = list("initial","Misc","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -132,7 +132,7 @@
|
||||
name = "Universal Recorder"
|
||||
id = "recorder"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 60, MAT_GLASS = 30)
|
||||
materials = list(/datum/material/iron = 60, /datum/material/glass = 30)
|
||||
build_path = /obj/item/taperecorder/empty
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
name = "Tape"
|
||||
id = "tape"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 20, MAT_GLASS = 5)
|
||||
materials = list(/datum/material/iron = 20, /datum/material/glass = 5)
|
||||
build_path = /obj/item/tape/random
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
name = "Igniter"
|
||||
id = "igniter"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 50)
|
||||
build_path = /obj/item/assembly/igniter
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
name = "Infrared Emitter"
|
||||
id = "infrared_emitter"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 500)
|
||||
build_path = /obj/item/assembly/infra
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
name = "Timer"
|
||||
id = "timer"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 50)
|
||||
build_path = /obj/item/assembly/timer
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
name = "Voice Analyser"
|
||||
id = "voice_analyser"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 50)
|
||||
build_path = /obj/item/assembly/voice
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
name = "Proximity Sensor"
|
||||
id = "prox_sensor"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 800, /datum/material/glass = 200)
|
||||
build_path = /obj/item/assembly/prox_sensor
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
name = "Box of Foam Darts"
|
||||
id = "foam_dart"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
materials = list(/datum/material/iron = 500)
|
||||
build_path = /obj/item/ammo_box/foambox
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
name = "Laptop Frame"
|
||||
id = "laptop"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/modular_computer/laptop/buildable
|
||||
category = list("initial","Misc")
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
name = "Tablet Frame"
|
||||
id = "tablet"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/modular_computer/tablet
|
||||
category = list("initial","Misc")
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
name = "Slime Scanner"
|
||||
id = "slime_scanner"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 300, /datum/material/glass = 200)
|
||||
build_path = /obj/item/slime_scanner
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
name = "Pet Carrier"
|
||||
id = "pet_carrier"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 7500, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 7500, /datum/material/glass = 100)
|
||||
build_path = /obj/item/pet_carrier
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
name = "Package Wrapping"
|
||||
id = "packagewrap"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 200, /datum/material/glass = 200)
|
||||
build_path = /obj/item/stack/packageWrap
|
||||
category = list("initial", "Misc","Equipment")
|
||||
maxstack = 30
|
||||
@@ -237,7 +237,7 @@
|
||||
name = "Holodisk"
|
||||
id = "holodisk"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/glass = 100)
|
||||
build_path = /obj/item/disk/holodisk
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
name = "Lockable Collar"
|
||||
id = "lock_collar"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1200, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 1200, /datum/material/glass = 100)
|
||||
build_path = /obj/item/clothing/neck/petcollar/locked
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -253,6 +253,6 @@
|
||||
name = "Collar Key"
|
||||
id = "collar_key"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 150)
|
||||
materials = list(/datum/material/iron = 300, /datum/material/glass = 150)
|
||||
build_path = /obj/item/key/collar
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
name = "Bucket"
|
||||
id = "bucket"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
materials = list(/datum/material/iron = 200)
|
||||
build_path = /obj/item/reagent_containers/glass/bucket
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -17,7 +17,7 @@
|
||||
name = "Pocket Crowbar"
|
||||
id = "crowbar"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 50)
|
||||
materials = list(/datum/material/iron = 50)
|
||||
build_path = /obj/item/crowbar
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -26,7 +26,7 @@
|
||||
name = "Flashlight"
|
||||
id = "flashlight"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 20)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 20)
|
||||
build_path = /obj/item/flashlight
|
||||
category = list("initial","Tools")
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
name = "Fire Extinguisher"
|
||||
id = "extinguisher"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 90)
|
||||
materials = list(/datum/material/iron = 90)
|
||||
build_path = /obj/item/extinguisher
|
||||
category = list("initial","Tools")
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
name = "Pocket Fire Extinguisher"
|
||||
id = "pocketfireextinguisher"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 40)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 40)
|
||||
build_path = /obj/item/extinguisher/mini
|
||||
category = list("initial","Tools")
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
name = "Multitool"
|
||||
id = "multitool"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 20)
|
||||
materials = list(/datum/material/iron = 50, /datum/material/glass = 20)
|
||||
build_path = /obj/item/multitool
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -59,7 +59,7 @@
|
||||
name = "Analyzer"
|
||||
id = "analyzer"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30, MAT_GLASS = 20)
|
||||
materials = list(/datum/material/iron = 30, /datum/material/glass = 20)
|
||||
build_path = /obj/item/analyzer
|
||||
category = list("initial","Tools")
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
name = "T-Ray Scanner"
|
||||
id = "tscanner"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
materials = list(/datum/material/iron = 150)
|
||||
build_path = /obj/item/t_scanner
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -76,7 +76,7 @@
|
||||
name = "Welding Tool"
|
||||
id = "welding_tool"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 70, MAT_GLASS = 20)
|
||||
materials = list(/datum/material/iron = 70, /datum/material/glass = 20)
|
||||
build_path = /obj/item/weldingtool
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -85,7 +85,7 @@
|
||||
name = "Emergency Welding Tool"
|
||||
id = "mini_welding_tool"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 30, MAT_GLASS = 10)
|
||||
materials = list(/datum/material/iron = 30, /datum/material/glass = 10)
|
||||
build_path = /obj/item/weldingtool/mini
|
||||
category = list("initial","Tools")
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
name = "Screwdriver"
|
||||
id = "screwdriver"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 75)
|
||||
materials = list(/datum/material/iron = 75)
|
||||
build_path = /obj/item/screwdriver
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -101,7 +101,7 @@
|
||||
name = "Wirecutters"
|
||||
id = "wirecutters"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 80)
|
||||
materials = list(/datum/material/iron = 80)
|
||||
build_path = /obj/item/wirecutters
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -110,7 +110,7 @@
|
||||
name = "Wrench"
|
||||
id = "wrench"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
materials = list(/datum/material/iron = 150)
|
||||
build_path = /obj/item/wrench
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -119,7 +119,7 @@
|
||||
name = "Welding Helmet"
|
||||
id = "welding_helmet"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 1750, MAT_GLASS = 400)
|
||||
materials = list(/datum/material/iron = 1750, /datum/material/glass = 400)
|
||||
build_path = /obj/item/clothing/head/welding
|
||||
category = list("initial","Tools")
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
name = "Cable Coil"
|
||||
id = "cable_coil"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 10, MAT_GLASS = 5)
|
||||
materials = list(/datum/material/iron = 10, /datum/material/glass = 5)
|
||||
build_path = /obj/item/stack/cable_coil/random
|
||||
category = list("initial","Tools","Tool Designs")
|
||||
maxstack = 30
|
||||
@@ -137,7 +137,7 @@
|
||||
name = "Toolbox"
|
||||
id = "tool_box"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 500)
|
||||
materials = list(MAT_CATEGORY_RIGID = 500)
|
||||
build_path = /obj/item/storage/toolbox
|
||||
category = list("initial","Tools")
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
name = "Spraycan"
|
||||
id = "spraycan"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/glass = 100)
|
||||
build_path = /obj/item/toy/crayon/spraycan
|
||||
category = list("initial", "Tools")
|
||||
|
||||
@@ -153,6 +153,6 @@
|
||||
name = "Geiger Counter"
|
||||
id = "geigercounter"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
|
||||
materials = list(/datum/material/iron = 150, /datum/material/glass = 150)
|
||||
build_path = /obj/item/geiger_counter
|
||||
category = list("initial", "Tools")
|
||||
|
||||
@@ -13,508 +13,508 @@
|
||||
/datum/design/autoylathe/balloon
|
||||
name = "Empty Water balloon"
|
||||
id = "waterballoon"
|
||||
materials = list(MAT_PLASTIC = 50)
|
||||
materials = list(/datum/material/plastic = 50)
|
||||
build_path = /obj/item/toy/balloon
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/spinningtoy
|
||||
name = "Toy Singularity"
|
||||
id = "singuloutoy"
|
||||
materials = list(MAT_PLASTIC = 500)
|
||||
materials = list(/datum/material/plastic = 500)
|
||||
build_path = /obj/item/toy/spinningtoy
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/capgun
|
||||
name = "Cap Gun"
|
||||
id = "capgun"
|
||||
materials = list(MAT_PLASTIC = 500)
|
||||
materials = list(/datum/material/plastic = 500)
|
||||
build_path = /obj/item/toy/gun
|
||||
category = list("initial", "Pistols")
|
||||
|
||||
/datum/design/autoylathe/capgunammo
|
||||
name = "Capgun Ammo"
|
||||
id = "capgunammo"
|
||||
materials = list(MAT_PLASTIC = 50)
|
||||
materials = list(/datum/material/plastic = 50)
|
||||
build_path = /obj/item/toy/ammo/gun
|
||||
category = list("initial", "misc")
|
||||
|
||||
/datum/design/autoylathe/toysword
|
||||
name = "Toy Sword"
|
||||
id = "toysword"
|
||||
materials = list(MAT_PLASTIC = 500)
|
||||
materials = list(/datum/material/plastic = 500)
|
||||
build_path = /obj/item/toy/sword
|
||||
category = list("initial", "Melee")
|
||||
|
||||
/datum/design/autoylathe/foamblade
|
||||
name = "Foam Armblade"
|
||||
id = "foamblade"
|
||||
materials = list(MAT_PLASTIC = 500)
|
||||
materials = list(/datum/material/plastic = 500)
|
||||
build_path = /obj/item/toy/foamblade
|
||||
category = list("initial", "Melee")
|
||||
|
||||
/datum/design/autoylathe/windupbox
|
||||
name = "Wind Up Toolbox"
|
||||
id = "windupbox"
|
||||
materials = list(MAT_PLASTIC = 500)
|
||||
materials = list(/datum/material/plastic = 500)
|
||||
build_path = /obj/item/toy/windupToolbox
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/toydualsword
|
||||
name = "Double-Bladed Toy Sword"
|
||||
id = "dbtoysword"
|
||||
materials = list(MAT_PLASTIC = 1000)
|
||||
materials = list(/datum/material/plastic = 1000)
|
||||
build_path = /obj/item/twohanded/dualsaber/toy
|
||||
category = list("initial", "Melee")
|
||||
|
||||
/datum/design/autoylathe/toykatana
|
||||
name = "Replica Katana"
|
||||
id = "toykatana"
|
||||
materials = list(MAT_PLASTIC = 50, MAT_METAL = 450)
|
||||
materials = list(/datum/material/plastic = 50, /datum/material/iron = 450)
|
||||
build_path = /obj/item/toy/katana
|
||||
category = list("initial", "Melee")
|
||||
|
||||
/datum/design/autoylathe/snappop
|
||||
name = "Snap Pop"
|
||||
id = "snappop_phoenix"
|
||||
materials = list(MAT_PLASTIC = 50)
|
||||
materials = list(/datum/material/plastic = 50)
|
||||
build_path = /obj/item/toy/snappop
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/mech/model1
|
||||
name = "Toy Ripley"
|
||||
id = "toymech1"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/ripley
|
||||
|
||||
/datum/design/autoylathe/mech/model2
|
||||
name = "Toy Firefighter Ripley"
|
||||
id = "toymech2"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/fireripley
|
||||
|
||||
/datum/design/autoylathe/mech/contraband/model3
|
||||
name = "Toy Deathsquad fireripley "
|
||||
id = "toymech3"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/deathripley
|
||||
|
||||
/datum/design/autoylathe/mech/model4
|
||||
name = "Toy Gygax"
|
||||
id = "toymech4"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/gygax
|
||||
|
||||
/datum/design/autoylathe/mech/model5
|
||||
name = "Toy Durand"
|
||||
id = "toymech5"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/durand
|
||||
|
||||
/datum/design/autoylathe/mech/contraband/model6
|
||||
name = "Toy H.O.N.K."
|
||||
id = "toymech6"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/honk
|
||||
|
||||
/datum/design/autoylathe/mech/contraband/model7
|
||||
name = "Toy Marauder"
|
||||
id = "toymech7"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/marauder
|
||||
|
||||
/datum/design/autoylathe/mech/contraband/model8
|
||||
name = "Toy Seraph"
|
||||
id = "toymech8"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/seraph
|
||||
|
||||
/datum/design/autoylathe/mech/contraband/model9
|
||||
name = "Toy Mauler"
|
||||
id = "toymech9"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/mauler
|
||||
|
||||
/datum/design/autoylathe/mech/model10
|
||||
name = "Toy Odysseus"
|
||||
id = "toymech10"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/odysseus
|
||||
|
||||
/datum/design/autoylathe/mech/model11
|
||||
name = "Toy Phazon"
|
||||
id = "toymech11"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/phazon
|
||||
|
||||
/datum/design/autoylathe/mech/contraband/model12
|
||||
name = "Toy Reticence"
|
||||
id = "toymech12"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/prize/reticence
|
||||
category = list("hacked", "Figurines")
|
||||
|
||||
/datum/design/autoylathe/talking/AI
|
||||
name = "Toy AI"
|
||||
id = "ToyAICore"
|
||||
materials = list(MAT_PLASTIC = 250, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 250, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/talking/AI
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/talking/codex_gigas
|
||||
name = "Toy Codex Gigas"
|
||||
id = "ToyCodex"
|
||||
materials = list(MAT_PLASTIC = 250, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 250, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/talking/codex_gigas
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/talking/owl
|
||||
name = "Owl Action Figure"
|
||||
id = "owlactionfig"
|
||||
materials = list(MAT_PLASTIC = 250, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 250, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/talking/owl
|
||||
|
||||
/datum/design/autoylathe/talking/griffin
|
||||
name = "Griffon Action Figure"
|
||||
id = "griffinactionfig"
|
||||
materials = list(MAT_PLASTIC = 250, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 250, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/talking/griffin
|
||||
|
||||
/datum/design/autoylathe/cards
|
||||
name = "Deck of Cards"
|
||||
id = "carddeck"
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/toy/cards/deck
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/nuke
|
||||
name = "Nuclear Fission Explosive Toy"
|
||||
id = "nuketoy"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/nuke
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/minimeteor
|
||||
name = "Mini-Meteor"
|
||||
id = "meattoy"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/minimeteor
|
||||
category = list("hacked", "Misc")
|
||||
|
||||
/datum/design/autoylathe/redbutton
|
||||
name = "Big Red Button"
|
||||
id = "redbutton"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/redbutton
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/beach_ball
|
||||
name = "Beach Ball"
|
||||
id = "beachball"
|
||||
materials = list(MAT_PLASTIC = 500)
|
||||
materials = list(/datum/material/plastic = 500)
|
||||
build_path = /obj/item/toy/beach_ball
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/clockwork_watch
|
||||
name = "Clockwork Watch"
|
||||
id = "clockwatch"
|
||||
materials = list(MAT_PLASTIC = 1000)
|
||||
materials = list(/datum/material/plastic = 1000)
|
||||
build_path = /obj/item/toy/clockwork_watch
|
||||
category = list("initial", "misc")
|
||||
|
||||
/datum/design/autoylathe/dagger
|
||||
name = "Toy Dagger"
|
||||
id = "toydagger"
|
||||
materials = list(MAT_PLASTIC = 1000)
|
||||
materials = list(/datum/material/plastic = 1000)
|
||||
build_path = /obj/item/toy/toy_dagger
|
||||
category = list("initial", "Melee")
|
||||
|
||||
/datum/design/autoylathe/xeno
|
||||
name = "Xenomorph"
|
||||
id = "xenomorph"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/toy_xeno
|
||||
|
||||
/datum/design/autoylathe/cattoy
|
||||
name = "Toy Mouse"
|
||||
id = "cattoy"
|
||||
materials = list(MAT_PLASTIC = 500)
|
||||
materials = list(/datum/material/plastic = 500)
|
||||
build_path = /obj/item/toy/cattoy
|
||||
category = list("initial", "Toys")
|
||||
|
||||
/datum/design/autoylathe/figure/assistant
|
||||
name = "Assistant"
|
||||
id = "assfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/assistant
|
||||
|
||||
/datum/design/autoylathe/figure/atmos
|
||||
name = "Atmos Tech"
|
||||
id = "atmfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/atmos
|
||||
|
||||
/datum/design/autoylathe/figure/bartender
|
||||
name = "Bartender"
|
||||
id = "barfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/bartender
|
||||
|
||||
/datum/design/autoylathe/figure/botanist
|
||||
name = "Botanist"
|
||||
id = "botfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/botanist
|
||||
|
||||
/datum/design/autoylathe/figure/captain
|
||||
name = "Captain"
|
||||
id = "capfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/captain
|
||||
|
||||
/datum/design/autoylathe/figure/cargotech
|
||||
name = "Cargo Technician"
|
||||
id = "carfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/cargotech
|
||||
|
||||
/datum/design/autoylathe/figure/ce
|
||||
name = "Chief Engineer"
|
||||
id = "cefigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/ce
|
||||
|
||||
/datum/design/autoylathe/figure/chaplain
|
||||
name = "Chaplain"
|
||||
id = "chafigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/chaplain
|
||||
|
||||
/datum/design/autoylathe/figure/chef
|
||||
name = "Chef"
|
||||
id = "chefigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/chef
|
||||
|
||||
/datum/design/autoylathe/figure/chemist
|
||||
name = "Chemist"
|
||||
id = "chmfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/chemist
|
||||
|
||||
/datum/design/autoylathe/figure/clown
|
||||
name = "Clown"
|
||||
id = "clnfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/clown
|
||||
|
||||
/datum/design/autoylathe/figure/cmo
|
||||
name = "Chief Medical Officer"
|
||||
id = "cmofigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/cmo
|
||||
|
||||
/datum/design/autoylathe/figure/curator
|
||||
name = "Curator"
|
||||
id = "curfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/curator
|
||||
|
||||
/datum/design/autoylathe/figure/borg
|
||||
name = "Cyborg"
|
||||
id = "cybfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/borg
|
||||
|
||||
/datum/design/autoylathe/figure/detective
|
||||
name = "Detective"
|
||||
id = "detfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/detective
|
||||
|
||||
/datum/design/autoylathe/figure/engineer
|
||||
name = "Engineer"
|
||||
id = "engfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/engineer
|
||||
|
||||
/datum/design/autoylathe/figure/geneticist
|
||||
name = "Geneticist"
|
||||
id = "genfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/geneticist
|
||||
|
||||
/datum/design/autoylathe/figure/hop
|
||||
name = "Head of Personnel"
|
||||
id = "hopfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/hop
|
||||
|
||||
/datum/design/autoylathe/figure/hos
|
||||
name = "Head of Security"
|
||||
id = "hosfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/hos
|
||||
|
||||
/datum/design/autoylathe/figure/janitor
|
||||
name = "Janitor"
|
||||
id = "janfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/janitor
|
||||
|
||||
/datum/design/autoylathe/figure/lawyer
|
||||
name = "Lawyer"
|
||||
id = "lawfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/lawyer
|
||||
|
||||
/datum/design/autoylathe/figure/md
|
||||
name = "Medical Doctor"
|
||||
id = "medfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/md
|
||||
|
||||
/datum/design/autoylathe/figure/mime
|
||||
name = "Mime"
|
||||
id = "mimfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/mime
|
||||
|
||||
/datum/design/autoylathe/figure/miner
|
||||
name = "Miner"
|
||||
id = "minfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/miner
|
||||
|
||||
/datum/design/autoylathe/figure/rd
|
||||
name = "Research Director"
|
||||
id = "rdfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/rd
|
||||
|
||||
/datum/design/autoylathe/figure/robotocist
|
||||
name = "Robotocist"
|
||||
id = "robfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/roboticist
|
||||
|
||||
/datum/design/autoylathe/figure/qm
|
||||
name = "Quartermaster"
|
||||
id = "qtmfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/qm
|
||||
|
||||
/datum/design/autoylathe/figure/scientist
|
||||
name = "Scientist"
|
||||
id = "scifigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/scientist
|
||||
|
||||
/datum/design/autoylathe/figure/secofficer
|
||||
name = "Security Officer"
|
||||
id = "secfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/secofficer
|
||||
|
||||
/datum/design/autoylathe/figure/virologist
|
||||
name = "Virologist"
|
||||
id = "virfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/virologist
|
||||
|
||||
/datum/design/autoylathe/figure/warden
|
||||
name = "Warden"
|
||||
id = "warfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/warden
|
||||
|
||||
/datum/design/autoylathe/figure/dsquad
|
||||
name = "Deathsquad"
|
||||
id = "dsqfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/dsquad
|
||||
category = list("hacked", "Figurines")
|
||||
|
||||
/datum/design/autoylathe/figure/ian
|
||||
name = "Ian"
|
||||
id = "ianfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/ian
|
||||
category = list("hacked", "Figurines")
|
||||
|
||||
/datum/design/autoylathe/figure/ninja
|
||||
name = "Ninja"
|
||||
id = "ninfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/ninja
|
||||
category = list("hacked", "Figurines")
|
||||
|
||||
/datum/design/autoylathe/figure/syndie
|
||||
name = "Nuclear Operative"
|
||||
id = "nucfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/syndie
|
||||
category = list("hacked", "Figurines")
|
||||
|
||||
/datum/design/autoylathe/figure/wizard
|
||||
name = "Wizard"
|
||||
id = "wizfigure"
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 50)
|
||||
build_path = /obj/item/toy/figure/wizard
|
||||
category = list("hacked", "Figurines")
|
||||
|
||||
/datum/design/autoylathe/dildo
|
||||
name = "Customizable Dildo"
|
||||
id = "dildo"
|
||||
materials = list(MAT_PLASTIC = 2000)
|
||||
materials = list(/datum/material/plastic = 2000)
|
||||
build_path = /obj/item/dildo/custom
|
||||
category = list("initial", "Adult")
|
||||
|
||||
/datum/design/autoylathe/collar
|
||||
name = "Collar"
|
||||
id = "collar"
|
||||
materials = list(MAT_PLASTIC = 250, MAT_METAL = 50)
|
||||
materials = list(/datum/material/plastic = 250, /datum/material/iron = 50)
|
||||
build_path = /obj/item/clothing/neck/petcollar
|
||||
category = list("initial", "Adult")
|
||||
|
||||
/datum/design/autoylathe/lastag/blue/gun
|
||||
name = "Blue Lasertag Rifle"
|
||||
id = "lastagrifleblue"
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/gun/energy/laser/bluetag
|
||||
category = list("initial", "Rifles")
|
||||
|
||||
/datum/design/autoylathe/lastag/red/gun
|
||||
name = "Red Lasertag Rifle"
|
||||
id = "lastagriflered"
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/gun/energy/laser/redtag
|
||||
category = list("initial", "Rifles")
|
||||
|
||||
/datum/design/autoylathe/lastag/blue/hat
|
||||
name = "Blue Lasertag Helmet"
|
||||
id = "lastaghatblue"
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 1000, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/head/helmet/bluetaghelm
|
||||
category = list("initial", "Armor")
|
||||
|
||||
/datum/design/autoylathe/lastag/blue/armor
|
||||
name = "Blue Lasertag Armor"
|
||||
id = "lastagarmorblue"
|
||||
materials = list(MAT_PLASTIC = 8000, MAT_METAL = 2000, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/plastic = 8000, /datum/material/iron = 2000, /datum/material/glass = 100)
|
||||
build_path = /obj/item/clothing/suit/bluetag
|
||||
category = list("initial", "Armor")
|
||||
|
||||
/datum/design/autoylathe/lastag/red/hat
|
||||
name = "Red Lasertag Helmet"
|
||||
id = "lastaghelmetred"
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 1000, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/head/helmet/redtaghelm
|
||||
category = list("initial", "Armor")
|
||||
|
||||
/datum/design/autoylathe/lastag/red/armor
|
||||
name = "Red Lasertag Armor"
|
||||
id = "lastagarmorred"
|
||||
materials = list(MAT_PLASTIC = 8000, MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/plastic = 8000, /datum/material/iron = 2000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/clothing/suit/redtag
|
||||
category = list("initial", "Armor")
|
||||
|
||||
@@ -544,14 +544,14 @@
|
||||
/datum/design/autoylathe/lastag/blue
|
||||
name = "Blue Lasertag Kit"
|
||||
id = "lastagkitblue"
|
||||
materials = list(MAT_PLASTIC = 16000, MAT_METAL = 4000, MAT_GLASS = 2000)
|
||||
materials = list(/datum/material/plastic = 16000, /datum/material/iron = 4000, /datum/material/glass = 2000)
|
||||
build_path = /obj/item/storage/box/blueteam
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/autoylathe/lastag/red
|
||||
name = "Red Lasertag Kit"
|
||||
id = "lastagkitred"
|
||||
materials = list(MAT_PLASTIC = 16000, MAT_METAL = 4000, MAT_GLASS = 2000)
|
||||
materials = list(/datum/material/plastic = 16000, /datum/material/iron = 4000, /datum/material/glass = 2000)
|
||||
build_path = /obj/item/storage/box/redteam
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -559,7 +559,7 @@
|
||||
name = "Foam Force X9 Rifle"
|
||||
id = "foam_x9"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500)
|
||||
build_path = /obj/item/gun/ballistic/automatic/x9/toy
|
||||
category = list("initial", "Rifles")
|
||||
|
||||
@@ -567,7 +567,7 @@
|
||||
name = "Box of Foam Darts"
|
||||
id = "foam_dart"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 100)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 100)
|
||||
build_path = /obj/item/ammo_box/foambox
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -575,7 +575,7 @@
|
||||
name = "Foam Force Magpistol"
|
||||
id = "magfoam_launcher"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250)
|
||||
build_path = /obj/item/gun/ballistic/shotgun/toy/mag
|
||||
category = list("initial", "Pistols")
|
||||
|
||||
@@ -583,7 +583,7 @@
|
||||
name = "Foam Force MagRifle"
|
||||
id = "foam_magrifle"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500)
|
||||
build_path = /obj/item/gun/ballistic/automatic/toy/magrifle
|
||||
category = list("initial", "Rifles")
|
||||
|
||||
@@ -591,7 +591,7 @@
|
||||
name = "MagTag Hyper Rifle"
|
||||
id = "foam_hyperburst"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 2000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/gun/energy/laser/practice/hyperburst
|
||||
category = list("initial", "Rifles")
|
||||
|
||||
@@ -599,7 +599,7 @@
|
||||
name = "Foam Force Stealth Pistol"
|
||||
id = "foam_sp"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 1000)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 1000)
|
||||
build_path = /obj/item/gun/ballistic/automatic/toy/pistol/stealth
|
||||
category = list("initial", "Pistols")
|
||||
|
||||
@@ -607,7 +607,7 @@
|
||||
name = "RayTag Gun"
|
||||
id = "toyray"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 1000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 1000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/gun/energy/laser/practice/raygun
|
||||
category = list("initial", "Pistols")
|
||||
|
||||
@@ -615,7 +615,7 @@
|
||||
name = "Foam Force AM4-C Rifle"
|
||||
id = "foam_am4c"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500)
|
||||
build_path = /obj/item/gun/ballistic/automatic/AM4C
|
||||
category = list("initial", "Rifles")
|
||||
|
||||
@@ -623,7 +623,7 @@
|
||||
name = "Replica F3 Justicar"
|
||||
id = "foam_f3"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250)
|
||||
build_path = /obj/item/toy/gun/justicar
|
||||
category = list("initial", "Pistols")
|
||||
|
||||
@@ -631,7 +631,7 @@
|
||||
name = "pump-action plastic blaster"
|
||||
id = "toy_blaster"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 750, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 750, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/gun/energy/pumpaction/toy
|
||||
category = list("initial", "Rifles")
|
||||
|
||||
@@ -639,7 +639,7 @@
|
||||
name = "Box of Caps"
|
||||
id = "capammo"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_METAL = 10, MAT_GLASS = 10)
|
||||
materials = list(/datum/material/iron = 10, /datum/material/glass = 10)
|
||||
build_path = /obj/item/toy/ammo/gun
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -647,7 +647,7 @@
|
||||
name = "Foam Force SMG"
|
||||
id = "foam_smg"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250)
|
||||
build_path = /obj/item/gun/ballistic/automatic/toy/unrestricted
|
||||
category = list("initial", "Pistols")
|
||||
|
||||
@@ -655,7 +655,7 @@
|
||||
name = "Foam Force Pistol"
|
||||
id = "foam_pistol"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250)
|
||||
build_path = /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted
|
||||
category = list("initial", "Pistols")
|
||||
|
||||
@@ -663,7 +663,7 @@
|
||||
name = "Foam Force Shotgun"
|
||||
id = "foam_shotgun"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500)
|
||||
build_path = /obj/item/gun/ballistic/shotgun/toy/unrestricted
|
||||
category = list("initial", "Rifles")
|
||||
|
||||
@@ -671,7 +671,7 @@
|
||||
name = "Box of Lastag Red Foam Darts"
|
||||
id = "redfoam_dart"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 100)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 100)
|
||||
build_path = /obj/item/ammo_box/foambox/tag/red
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -679,7 +679,7 @@
|
||||
name = "Box of Lastag Blue Foam Darts"
|
||||
id = "bluefoam_dart"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 500, MAT_METAL = 100)
|
||||
materials = list(/datum/material/plastic = 500, /datum/material/iron = 100)
|
||||
build_path = /obj/item/ammo_box/foambox/tag/blue
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -687,7 +687,7 @@
|
||||
name = "Foam Force Crossbow"
|
||||
id = "foam_bow"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250)
|
||||
materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250)
|
||||
build_path = /obj/item/gun/ballistic/shotgun/toy/crossbow
|
||||
category = list("initial", "Pistols")
|
||||
|
||||
@@ -695,7 +695,7 @@
|
||||
name = "Donksoft C20R"
|
||||
id = "foam_c20"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500)
|
||||
build_path = /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted
|
||||
category = list("hacked", "Rifles")
|
||||
|
||||
@@ -703,6 +703,6 @@
|
||||
name = "Donksoft LMG"
|
||||
id = "foam_LMG"
|
||||
build_type = AUTOYLATHE
|
||||
materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500)
|
||||
materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500)
|
||||
build_path = /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted
|
||||
category = list("hacked", "Rifles")
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
///////////////////////////////////
|
||||
|
||||
/datum/design/milk
|
||||
name = "10 Milk"
|
||||
name = "10u Milk"
|
||||
id = "milk"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 20)
|
||||
materials = list(/datum/material/biomass = 20)
|
||||
make_reagents = list(/datum/reagent/consumable/milk = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/cream
|
||||
name = "10 Cream"
|
||||
name = "10u Cream"
|
||||
id = "cream"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 30)
|
||||
materials = list(/datum/material/biomass = 30)
|
||||
make_reagents = list(/datum/reagent/consumable/cream = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
name = "Milk Carton"
|
||||
id = "milk_carton"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 100)
|
||||
materials = list(/datum/material/biomass = 100)
|
||||
build_path = /obj/item/reagent_containers/food/condiment/milk
|
||||
category = list("initial","Food")
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
name = "Cream Carton"
|
||||
id = "cream_carton"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 300)
|
||||
materials = list(/datum/material/biomass = 300)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/bottle/cream
|
||||
category = list("initial","Food")
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
name = "10u Black Pepper"
|
||||
id = "black_pepper"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 25)
|
||||
materials = list(/datum/material/biomass = 25)
|
||||
make_reagents = list(/datum/reagent/consumable/blackpepper = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
name = "Pepper Mill"
|
||||
id = "pepper_mill"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 50)
|
||||
materials = list(/datum/material/biomass = 50)
|
||||
build_path = /obj/item/reagent_containers/food/condiment/peppermill
|
||||
make_reagents = list()
|
||||
category = list("initial","Food")
|
||||
@@ -55,7 +55,7 @@
|
||||
name = "10u Universal Enzyme"
|
||||
id = "enzyme"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 30)
|
||||
materials = list(/datum/material/biomass = 30)
|
||||
make_reagents = list("enzyme" = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
name = "Flour Sack"
|
||||
id = "flour_sack"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 150)
|
||||
materials = list(/datum/material/biomass = 150)
|
||||
build_path = /obj/item/reagent_containers/food/condiment/flour
|
||||
category = list("initial","Food")
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
name = "Monkey Cube"
|
||||
id = "mcube"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 250)
|
||||
materials = list(/datum/material/biomass = 250)
|
||||
build_path = /obj/item/reagent_containers/food/snacks/monkeycube
|
||||
category = list("initial", "Food")
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
name = "Biomass Meat Slab"
|
||||
id = "smeat"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 175)
|
||||
materials = list(/datum/material/biomass = 175)
|
||||
build_path = /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat
|
||||
category = list("initial", "Food")
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
name = "E-Z Nutrient"
|
||||
id = "ez_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 10)
|
||||
materials = list(/datum/material/biomass = 10)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/ez
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
name = "Left 4 Zed"
|
||||
id = "l4z_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 20)
|
||||
materials = list(/datum/material/biomass = 20)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/l4z
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
name = "Robust Harvest"
|
||||
id = "rh_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 25)
|
||||
materials = list(/datum/material/biomass = 25)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/rh
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
name = "Weed Killer"
|
||||
id = "weed_killer"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 50)
|
||||
materials = list(/datum/material/biomass = 50)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/killer/weedkiller
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
@@ -119,15 +119,31 @@
|
||||
name = "Pest Killer"
|
||||
id = "pest_spray"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 50)
|
||||
materials = list(/datum/material/biomass = 50)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/killer/pestkiller
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/ammonia
|
||||
name = "10u Ammonia"
|
||||
id = "ammonia_biogen"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 25)
|
||||
make_reagents = list(/datum/reagent/ammonia = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/saltpetre
|
||||
name = "10u Saltpetre"
|
||||
id = "saltpetre_biogen"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 75)
|
||||
make_reagents = list(/datum/reagent/saltpetre = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/botany_bottle
|
||||
name = "Empty Bottle"
|
||||
id = "botany_bottle"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 5)
|
||||
materials = list(/datum/material/biomass = 5)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/empty
|
||||
category = list("initial", "Botany Chemicals")
|
||||
|
||||
@@ -135,7 +151,7 @@
|
||||
name = "Roll of Cloth"
|
||||
id = "cloth"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 50)
|
||||
materials = list(/datum/material/biomass = 50)
|
||||
build_path = /obj/item/stack/sheet/cloth
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
@@ -143,7 +159,7 @@
|
||||
name = "Sheet of Cardboard"
|
||||
id = "cardboard"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 25)
|
||||
materials = list(/datum/material/biomass = 25)
|
||||
build_path = /obj/item/stack/sheet/cardboard
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
@@ -151,7 +167,7 @@
|
||||
name = "Sheet of Leather"
|
||||
id = "leather"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 150)
|
||||
materials = list(/datum/material/biomass = 150)
|
||||
build_path = /obj/item/stack/sheet/leather
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
@@ -159,7 +175,7 @@
|
||||
name = "Security Belt"
|
||||
id = "secbelt"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 300)
|
||||
materials = list(/datum/material/biomass = 300)
|
||||
build_path = /obj/item/storage/belt/security
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
@@ -167,7 +183,7 @@
|
||||
name = "Medical Belt"
|
||||
id = "medbel"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 300)
|
||||
materials = list(/datum/material/biomass = 300)
|
||||
build_path = /obj/item/storage/belt/medical
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
@@ -175,7 +191,7 @@
|
||||
name = "Janitorial Belt"
|
||||
id = "janibelt"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 300)
|
||||
materials = list(/datum/material/biomass = 300)
|
||||
build_path = /obj/item/storage/belt/janitor
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
@@ -183,7 +199,7 @@
|
||||
name = "Shoulder Holster"
|
||||
id = "s_holster"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 400)
|
||||
materials = list(/datum/material/biomass = 400)
|
||||
build_path = /obj/item/storage/belt/holster
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
@@ -191,6 +207,6 @@
|
||||
name = "Rice Hat"
|
||||
id = "rice_hat"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(MAT_BIOMASS = 300)
|
||||
materials = list(/datum/material/biomass = 300)
|
||||
build_path = /obj/item/clothing/head/rice_hat
|
||||
category = list("initial","Organic Materials")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
desc = "A blue space tracking beacon."
|
||||
id = "beacon"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 150, /datum/material/glass = 100)
|
||||
build_path = /obj/item/beacon
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -18,7 +18,7 @@
|
||||
desc = "A backpack that opens into a localized pocket of bluespace."
|
||||
id = "bag_holding"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250, MAT_BLUESPACE = 2000)
|
||||
materials = list(/datum/material/gold = 3000, /datum/material/diamond = 1500, /datum/material/uranium = 250, /datum/material/bluespace = 2000)
|
||||
build_path = /obj/item/storage/backpack/holding
|
||||
category = list("Bluespace Designs")
|
||||
dangerous_construction = TRUE
|
||||
@@ -29,7 +29,7 @@
|
||||
desc = "A satchel that opens into a localized pocket of bluespace."
|
||||
id = "satchel_holding"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 3000, MAT_DIAMOND = 1500, MAT_URANIUM = 250, MAT_BLUESPACE = 2000)
|
||||
materials = list(/datum/material/gold = 3000, /datum/material/diamond = 1500, /datum/material/uranium = 250, /datum/material/bluespace = 2000)
|
||||
build_path = /obj/item/storage/backpack/holding/satchel
|
||||
category = list("Bluespace Designs")
|
||||
dangerous_construction = TRUE
|
||||
@@ -40,7 +40,7 @@
|
||||
desc = "A chemical holding thingy. Mostly used for xenobiology."
|
||||
id = "biobag_holding"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 1500, MAT_DIAMOND = 750, MAT_URANIUM = 250, MAT_BLUESPACE = 1000)
|
||||
materials = list(/datum/material/gold = 1500, /datum/material/diamond = 750, /datum/material/uranium = 250, /datum/material/bluespace = 1000)
|
||||
build_path = /obj/item/storage/bag/bio/holding
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -50,7 +50,7 @@
|
||||
desc = "A small blue crystal with mystical properties."
|
||||
id = "bluespace_crystal"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_DIAMOND = 1500, MAT_PLASMA = 1500)
|
||||
materials = list(/datum/material/diamond = 1500, /datum/material/plasma = 1500)
|
||||
build_path = /obj/item/stack/ore/bluespace_crystal/artificial
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -60,7 +60,7 @@
|
||||
desc = "Little thingie that can track its position at all times."
|
||||
id = "telesci_gps"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/gps
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -70,7 +70,7 @@
|
||||
desc = "A device that can desynchronize the user from spacetime."
|
||||
id = "desynchronizer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_SILVER = 1500, MAT_BLUESPACE = 1000)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/silver = 1500, /datum/material/bluespace = 1000)
|
||||
build_path = /obj/item/desynchronizer
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -80,7 +80,7 @@
|
||||
desc = "A mining satchel that can hold an infinite amount of ores."
|
||||
id = "minerbag_holding"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 250, MAT_URANIUM = 500) //quite cheap, for more convenience
|
||||
materials = list(/datum/material/gold = 250, /datum/material/uranium = 500) //quite cheap, for more convenience
|
||||
build_path = /obj/item/storage/bag/ore/holding
|
||||
category = list("Bluespace Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "Computer Design ( NULL ENTRY )"
|
||||
desc = "A blank compurter board!"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/glass = 1000)
|
||||
|
||||
/datum/design/board/arcade_battle
|
||||
name = "Computer Design (Battle Arcade Machine)"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
name = "Computer Design (AI Upload)"
|
||||
desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
|
||||
id = "aiupload"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/circuitboard/computer/aiupload
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -31,7 +31,7 @@
|
||||
name = "Computer Design (Cyborg Upload)"
|
||||
desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console."
|
||||
id = "borgupload"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/circuitboard/computer/borgupload
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
name = "Hard Disk Drive"
|
||||
id = "hdd_basic"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 400, /datum/material/glass = 100)
|
||||
build_path = /obj/item/computer_hardware/hard_drive
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -15,7 +15,7 @@
|
||||
name = "Advanced Hard Disk Drive"
|
||||
id = "hdd_advanced"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 800, /datum/material/glass = 200)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/advanced
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -24,7 +24,7 @@
|
||||
name = "Super Hard Disk Drive"
|
||||
id = "hdd_super"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1600, MAT_GLASS = 400)
|
||||
materials = list(/datum/material/iron = 1600, /datum/material/glass = 400)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/super
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -33,7 +33,7 @@
|
||||
name = "Cluster Hard Disk Drive"
|
||||
id = "hdd_cluster"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3200, MAT_GLASS = 800)
|
||||
materials = list(/datum/material/iron = 3200, /datum/material/glass = 800)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/cluster
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -42,7 +42,7 @@
|
||||
name = "Solid State Drive"
|
||||
id = "ssd_small"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 800, /datum/material/glass = 200)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/small
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -51,7 +51,7 @@
|
||||
name = "Micro Solid State Drive"
|
||||
id = "ssd_micro"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 400, /datum/material/glass = 100)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/micro
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -61,7 +61,7 @@
|
||||
name = "Network Card"
|
||||
id = "netcard_basic"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 250, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 250, /datum/material/glass = 100)
|
||||
build_path = /obj/item/computer_hardware/network_card
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -70,7 +70,7 @@
|
||||
name = "Advanced Network Card"
|
||||
id = "netcard_advanced"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 200)
|
||||
build_path = /obj/item/computer_hardware/network_card/advanced
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -79,7 +79,7 @@
|
||||
name = "Wired Network Card"
|
||||
id = "netcard_wired"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 400)
|
||||
materials = list(/datum/material/iron = 2500, /datum/material/glass = 400)
|
||||
build_path = /obj/item/computer_hardware/network_card/wired
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -89,7 +89,7 @@
|
||||
name = "Data Disk"
|
||||
id = "portadrive_basic"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 800)
|
||||
materials = list(/datum/material/glass = 800)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -98,7 +98,7 @@
|
||||
name = "Advanced Data Disk"
|
||||
id = "portadrive_advanced"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1600)
|
||||
materials = list(/datum/material/glass = 1600)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable/advanced
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -107,7 +107,7 @@
|
||||
name = "Super Data Disk"
|
||||
id = "portadrive_super"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 3200)
|
||||
materials = list(/datum/material/glass = 3200)
|
||||
build_path = /obj/item/computer_hardware/hard_drive/portable/super
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -117,7 +117,7 @@
|
||||
name = "ID Card Slot"
|
||||
id = "cardslot"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
materials = list(/datum/material/iron = 600)
|
||||
build_path = /obj/item/computer_hardware/card_slot
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -127,7 +127,7 @@
|
||||
name = "Intellicard Slot"
|
||||
id = "aislot"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
materials = list(/datum/material/iron = 600)
|
||||
build_path = /obj/item/computer_hardware/ai_slot
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -137,7 +137,7 @@
|
||||
name = "Miniprinter"
|
||||
id = "miniprinter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600)
|
||||
materials = list(/datum/material/iron = 600)
|
||||
build_path = /obj/item/computer_hardware/printer/mini
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -147,7 +147,7 @@
|
||||
name = "Area Power Connector"
|
||||
id = "APClink"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000)
|
||||
materials = list(/datum/material/iron = 2000)
|
||||
build_path = /obj/item/computer_hardware/recharger/APC
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -157,7 +157,7 @@
|
||||
name = "Power Cell Controller"
|
||||
id = "bat_control"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
materials = list(/datum/material/iron = 400)
|
||||
build_path = /obj/item/computer_hardware/battery
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -166,7 +166,7 @@
|
||||
name = "Battery Module"
|
||||
id = "bat_normal"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
materials = list(/datum/material/iron = 400)
|
||||
build_path = /obj/item/stock_parts/cell/computer
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -175,7 +175,7 @@
|
||||
name = "Advanced Battery Module"
|
||||
id = "bat_advanced"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 800)
|
||||
materials = list(/datum/material/iron = 800)
|
||||
build_path = /obj/item/stock_parts/cell/computer/advanced
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -184,7 +184,7 @@
|
||||
name = "Super Battery Module"
|
||||
id = "bat_super"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1600)
|
||||
materials = list(/datum/material/iron = 1600)
|
||||
build_path = /obj/item/stock_parts/cell/computer/super
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -193,7 +193,7 @@
|
||||
name = "Nano Battery Module"
|
||||
id = "bat_nano"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
materials = list(/datum/material/iron = 200)
|
||||
build_path = /obj/item/stock_parts/cell/computer/nano
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -202,7 +202,7 @@
|
||||
name = "Micro Battery Module"
|
||||
id = "bat_micro"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 400)
|
||||
materials = list(/datum/material/iron = 400)
|
||||
build_path = /obj/item/stock_parts/cell/computer/micro
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -212,7 +212,7 @@
|
||||
name = "Processor Board"
|
||||
id = "cpu_normal"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1600)
|
||||
materials = list(/datum/material/glass = 1600)
|
||||
build_path = /obj/item/computer_hardware/processor_unit
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -221,7 +221,7 @@
|
||||
name = "Microprocessor"
|
||||
id = "cpu_small"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 800)
|
||||
materials = list(/datum/material/glass = 800)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/small
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -230,7 +230,7 @@
|
||||
name = "Photonic Processor Board"
|
||||
id = "pcpu_normal"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS= 6400, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass= 6400, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/photonic
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -239,7 +239,7 @@
|
||||
name = "Photonic Microprocessor"
|
||||
id = "pcpu_small"
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 3200, MAT_GOLD = 1000)
|
||||
materials = list(/datum/material/glass = 3200, /datum/material/gold = 1000)
|
||||
build_path = /obj/item/computer_hardware/processor_unit/photonic/small
|
||||
category = list("Computer Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
desc = "Allows for the construction of an intellicard."
|
||||
id = "intellicard"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 200)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 200)
|
||||
build_path = /obj/item/aicard
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -18,7 +18,7 @@
|
||||
desc = "Allows for the construction of a pAI Card."
|
||||
id = "paicard"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
materials = list(/datum/material/glass = 500, /datum/material/iron = 500)
|
||||
build_path = /obj/item/paicard
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
@@ -28,7 +28,7 @@
|
||||
desc = "A software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading."
|
||||
id = "ai_cam_upgrade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 5000, MAT_GOLD = 15000, MAT_SILVER = 15000, MAT_DIAMOND = 20000, MAT_PLASMA = 10000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 5000, /datum/material/gold = 15000, /datum/material/silver = 15000, /datum/material/diamond = 20000, /datum/material/plasma = 10000)
|
||||
build_path = /obj/item/surveillance_upgrade
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -41,7 +41,7 @@
|
||||
desc = "Allows for the construction of a nanite remote."
|
||||
id = "nanite_remote"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
materials = list(/datum/material/glass = 500, /datum/material/iron = 500)
|
||||
build_path = /obj/item/nanite_remote
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -51,7 +51,7 @@
|
||||
desc = "Allows for the construction of a nanite communication remote."
|
||||
id = "nanite_comm_remote"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
materials = list(/datum/material/glass = 500, /datum/material/iron = 500)
|
||||
build_path = /obj/item/nanite_remote/comm
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -61,7 +61,7 @@
|
||||
desc = "Allows for the construction of a nanite scanner."
|
||||
id = "nanite_scanner"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500)
|
||||
materials = list(/datum/material/glass = 500, /datum/material/iron = 500)
|
||||
build_path = /obj/item/nanite_scanner
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -74,7 +74,7 @@
|
||||
desc = "Produce additional disks for storing device designs."
|
||||
id = "design_disk"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 300, /datum/material/glass = 100)
|
||||
build_path = /obj/item/disk/design_disk
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -84,7 +84,7 @@
|
||||
desc = "Produce additional disks for storing device designs."
|
||||
id = "design_disk_adv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER=50)
|
||||
materials = list(/datum/material/iron = 300, /datum/material/glass = 100, /datum/material/silver=50)
|
||||
build_path = /obj/item/disk/design_disk/adv
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -94,7 +94,7 @@
|
||||
desc = "Produce additional disks for storing technology data."
|
||||
id = "tech_disk"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 300, /datum/material/glass = 100)
|
||||
build_path = /obj/item/disk/tech_disk
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -104,7 +104,7 @@
|
||||
desc = "Stores nanite programs."
|
||||
id = "nanite_disk"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 300, /datum/material/glass = 100)
|
||||
build_path = /obj/item/disk/nanite_program
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -114,7 +114,7 @@
|
||||
desc = "This machine provides all necessary things for circuitry."
|
||||
id = "icprinter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 5000, MAT_METAL = 10000)
|
||||
materials = list(/datum/material/glass = 5000, /datum/material/iron = 10000)
|
||||
build_path = /obj/item/integrated_circuit_printer
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -124,7 +124,7 @@
|
||||
desc = "This disk allows for integrated circuit printers to print advanced circuitry designs."
|
||||
id = "icupgadv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 10000, MAT_METAL = 10000)
|
||||
materials = list(/datum/material/glass = 10000, /datum/material/iron = 10000)
|
||||
build_path = /obj/item/disk/integrated_circuit/upgrade/advanced
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -134,7 +134,7 @@
|
||||
desc = "This disk allows for integrated circuit printers to clone designs instantaneously."
|
||||
id = "icupgclo"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 10000, MAT_METAL = 10000)
|
||||
materials = list(/datum/material/glass = 10000, /datum/material/iron = 10000)
|
||||
build_path = /obj/item/disk/integrated_circuit/upgrade/clone
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -145,7 +145,7 @@
|
||||
desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs."
|
||||
id = "drone_shell"
|
||||
build_type = MECHFAB | PROTOLATHE
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 350)
|
||||
materials = list(/datum/material/iron = 800, /datum/material/glass = 350)
|
||||
construction_time = 150
|
||||
build_path = /obj/item/drone_shell
|
||||
category = list("Misc")
|
||||
@@ -155,7 +155,7 @@
|
||||
name = "owo"
|
||||
desc = "someone's bussin"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 300, /datum/material/glass = 100)
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
id = "flightsuit"
|
||||
build_type = PROTOLATHE
|
||||
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?
|
||||
materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/diamond = 200, /datum/material/gold = 3000, /datum/material/silver = 3000, /datum/material/titanium = 16000) //This expensive enough for you?
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -16,7 +16,7 @@
|
||||
id = "flightpack"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/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?
|
||||
materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/diamond = 4000, /datum/material/gold = 12000, /datum/material/silver = 12000, /datum/material/uranium = 20000, /datum/material/plasma = 16000, /datum/material/titanium = 16000) //This expensive enough for you?
|
||||
construction_time = 250
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -27,7 +27,7 @@
|
||||
id = "flightshoes"
|
||||
build_type = PROTOLATHE
|
||||
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)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 5000, /datum/material/gold = 1500, /datum/material/silver = 1500, /datum/material/plasma = 2000, /datum/material/titanium = 2000)
|
||||
construction_time = 100
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING */
|
||||
@@ -38,7 +38,7 @@
|
||||
id = "chardsuit"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/clothing/suit/space/hardsuit/engine
|
||||
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 200, MAT_GOLD = 3000, MAT_SILVER = 3000, MAT_TITANIUM = 16000)
|
||||
materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/diamond = 200, /datum/material/gold = 3000, /datum/material/silver = 3000, /datum/material/titanium = 16000)
|
||||
construction_time = 100
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -49,7 +49,7 @@
|
||||
id = "hardsuitjpack"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/tank/jetpack/suit
|
||||
materials = list(MAT_METAL=16000, MAT_GLASS = 8000, MAT_DIAMOND = 2000, MAT_GOLD = 6000, MAT_SILVER = 6000, MAT_URANIUM = 10000, MAT_PLASMA = 8000, MAT_TITANIUM = 16000)
|
||||
materials = list(/datum/material/iron=16000, /datum/material/glass = 8000, /datum/material/diamond = 2000, /datum/material/gold = 6000, /datum/material/silver = 6000, /datum/material/uranium = 10000, /datum/material/plasma = 8000, /datum/material/titanium = 16000)
|
||||
construction_time = 100
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -26,11 +26,19 @@
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
|
||||
/datum/design/board/autolathe_secure
|
||||
name = "Machine Design (Secure Autolathe Board)"
|
||||
desc = "The circuit board for an autolathe. This one is programmed to not allow hacking."
|
||||
id = "autolathe_secure"
|
||||
build_path = /obj/item/circuitboard/machine/autolathe/secure
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
|
||||
/datum/design/board/recharger
|
||||
name = "Machine Design (Weapon Recharger Board)"
|
||||
desc = "The circuit board for a Weapon Recharger."
|
||||
id = "recharger"
|
||||
materials = list(MAT_GLASS = 1000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/circuitboard/machine/recharger
|
||||
category = list("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
name = "\"Phazon\" Central Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Central Control module."
|
||||
id = "phazon_main"
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/main
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -119,7 +119,7 @@
|
||||
name = "\"Phazon\" Peripherals Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Peripheral Control module."
|
||||
id = "phazon_peri"
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/peripherals
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -128,7 +128,7 @@
|
||||
name = "\"Phazon\" Weapons & Targeting Control module"
|
||||
desc = "Allows for the construction of a \"Phazon\" Weapons & Targeting Control module."
|
||||
id = "phazon_targ"
|
||||
materials = list(MAT_GLASS = 1000, MAT_BLUESPACE = 100)
|
||||
materials = list(/datum/material/glass = 1000, /datum/material/bluespace = 100)
|
||||
build_path = /obj/item/circuitboard/mecha/phazon/targeting
|
||||
category = list("Exosuit Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -143,7 +143,7 @@
|
||||
id = "mech_scattershot"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -153,27 +153,49 @@
|
||||
id = "mech_seedscatter"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/seedscatter
|
||||
materials = list(MAT_METAL=10000, MAT_GLASS = 10000)
|
||||
materials = list(/datum/material/iron=10000, /datum/material/glass = 10000)
|
||||
construction_time = 70
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_scattershot_ammo
|
||||
name = "Scattershot Ammunition"
|
||||
desc = "Ammunition for the LBX AC 10 and Melon Seed exosuit weapon."
|
||||
id = "mech_scattershot_ammo"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
build_path = /obj/item/mecha_ammo/scattershot
|
||||
materials = list(/datum/material/iron=6000)
|
||||
construction_time = 20
|
||||
category = list("Exosuit Ammunition", "Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mech_carbine
|
||||
name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)"
|
||||
desc = "Allows for the construction of FNX-99 \"Hades\" Carbine."
|
||||
id = "mech_carbine"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_carbine_ammo
|
||||
name = "FNX-99 Carbine Ammunition"
|
||||
desc = "Ammunition for the FNX-99 \"Hades\" Carbine."
|
||||
id = "mech_carbine_ammo"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
build_path = /obj/item/mecha_ammo/incendiary
|
||||
materials = list(/datum/material/iron=6000)
|
||||
construction_time = 20
|
||||
category = list("Exosuit Ammunition", "Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mech_ion
|
||||
name = "Exosuit Weapon (MKIV Ion Heavy Cannon)"
|
||||
desc = "Allows for the construction of MKIV Ion Heavy Cannon."
|
||||
id = "mech_ion"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
|
||||
materials = list(MAT_METAL=20000,MAT_SILVER=6000,MAT_URANIUM=2000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/silver=6000,/datum/material/uranium=2000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -183,7 +205,7 @@
|
||||
id = "mech_tesla"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla
|
||||
materials = list(MAT_METAL=20000,MAT_SILVER=8000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/silver=8000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -193,7 +215,7 @@
|
||||
id = "mech_laser"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -203,7 +225,7 @@
|
||||
id = "mech_laser_heavy"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -213,37 +235,70 @@
|
||||
id = "mech_grenade_launcher"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang
|
||||
materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000)
|
||||
materials = list(/datum/material/iron=22000,/datum/material/gold=6000,/datum/material/silver=8000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_grenade_launcher_ammo
|
||||
name = "SGL-6 Grenade Launcher Ammunition"
|
||||
desc = "Ammunition for the SGL-6 Grenade Launcher."
|
||||
id = "mech_grenade_launcher_ammo"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
build_path = /obj/item/mecha_ammo/flashbang
|
||||
materials = list(/datum/material/iron=4000,/datum/material/gold=500,/datum/material/silver=500)
|
||||
construction_time = 20
|
||||
category = list("Exosuit Ammunition", "Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mech_missile_rack
|
||||
name = "Exosuit Weapon (SRM-8 Missile Rack)"
|
||||
desc = "Allows for the construction of an SRM-8 Missile Rack."
|
||||
name = "Exosuit Weapon (BRM-6 Missile Rack)"
|
||||
desc = "Allows for the construction of an BRM-6 Breaching Missile Rack."
|
||||
id = "mech_missile_rack"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack
|
||||
materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000)
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching
|
||||
materials = list(/datum/material/iron=22000,/datum/material/gold=6000,/datum/material/silver=8000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_missile_rack_ammo
|
||||
name = "SRM-8 Missile Rack Ammunition"
|
||||
desc = "Ammunition for the SRM-8 Missile Rack."
|
||||
id = "mech_missile_rack_ammo"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
build_path = /obj/item/mecha_ammo/missiles_br
|
||||
materials = list(/datum/material/iron=8000,/datum/material/gold=500,/datum/material/silver=500)
|
||||
construction_time = 20
|
||||
category = list("Exosuit Ammunition", "Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/clusterbang_launcher
|
||||
name = "Exosuit Module (SOB-3 Clusterbang Launcher)"
|
||||
desc = "A weapon that violates the Geneva Convention at 3 rounds per minute"
|
||||
id = "clusterbang_launcher"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang
|
||||
materials = list(MAT_METAL=20000,MAT_GOLD=10000,MAT_URANIUM=10000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/gold=10000,/datum/material/uranium=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/clusterbang_launcher_ammo
|
||||
name = "SOB-3 Clusterbang Launcher Ammunition"
|
||||
desc = "Ammunition for the SOB-3 Clusterbang Launcher"
|
||||
id = "clusterbang_launcher_ammo"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
build_path = /obj/item/mecha_ammo/clusterbang
|
||||
materials = list(/datum/material/iron=6000,/datum/material/gold=1500,/datum/material/uranium=1500)
|
||||
construction_time = 20
|
||||
category = list("Exosuit Ammunition", "Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mech_wormhole_gen
|
||||
name = "Exosuit Module (Localized Wormhole Generator)"
|
||||
desc = "An exosuit module that allows generating of small quasi-stable wormholes."
|
||||
id = "mech_wormhole_gen"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -253,7 +308,7 @@
|
||||
id = "mech_teleporter"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/teleporter
|
||||
materials = list(MAT_METAL=10000,MAT_DIAMOND=10000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/diamond=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -263,7 +318,7 @@
|
||||
id = "mech_rcd"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/rcd
|
||||
materials = list(MAT_METAL=30000,MAT_GOLD=20000,MAT_PLASMA=25000,MAT_SILVER=20000)
|
||||
materials = list(/datum/material/iron=30000,/datum/material/gold=20000,/datum/material/plasma=25000,/datum/material/silver=20000)
|
||||
construction_time = 1200
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -273,7 +328,7 @@
|
||||
id = "mech_gravcatapult"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -283,7 +338,7 @@
|
||||
id = "mech_repair_droid"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_GOLD=1000,MAT_SILVER=2000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/glass=5000,/datum/material/gold=1000,/datum/material/silver=2000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -293,7 +348,7 @@
|
||||
id = "mech_energy_relay"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=2000,MAT_GOLD=2000,MAT_SILVER=3000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/glass=2000,/datum/material/gold=2000,/datum/material/silver=3000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -303,7 +358,7 @@
|
||||
id = "mech_ccw_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster
|
||||
materials = list(MAT_METAL=20000,MAT_SILVER=5000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/silver=5000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -313,7 +368,7 @@
|
||||
id = "mech_proj_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster
|
||||
materials = list(MAT_METAL=20000,MAT_GOLD=5000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/gold=5000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -323,7 +378,7 @@
|
||||
id = "mech_diamond_drill"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill
|
||||
materials = list(MAT_METAL=10000,MAT_DIAMOND=6500)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/diamond=6500)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -333,7 +388,7 @@
|
||||
id = "mech_generator_nuclear"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=500)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/glass=1000,/datum/material/silver=500)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -343,7 +398,7 @@
|
||||
id = "mech_plasma_cutter"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1000, MAT_PLASMA = 2000)
|
||||
materials = list(/datum/material/iron = 8000, /datum/material/glass = 1000, /datum/material/plasma = 2000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -353,7 +408,7 @@
|
||||
id = "mech_taser"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -363,17 +418,28 @@
|
||||
id = "mech_lmg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_lmg_ammo
|
||||
name = "Ultra AC 2 Ammunition"
|
||||
desc = "Ammunition for the Ultra AC 2 LMG"
|
||||
id = "mech_lmg_ammo"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
build_path = /obj/item/mecha_ammo/lmg
|
||||
materials = list(/datum/material/iron=4000)
|
||||
construction_time = 20
|
||||
category = list("Exosuit Ammunition", "Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/mech_sleeper
|
||||
name = "Exosuit Medical Equipment (Mounted Sleeper)"
|
||||
desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves."
|
||||
id = "mech_sleeper"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/medical/sleeper
|
||||
materials = list(MAT_METAL=5000,MAT_GLASS=10000)
|
||||
materials = list(/datum/material/iron=5000,/datum/material/glass=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -383,7 +449,7 @@
|
||||
id = "mech_syringe_gun"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun
|
||||
materials = list(MAT_METAL=3000,MAT_GLASS=2000)
|
||||
materials = list(/datum/material/iron=3000,/datum/material/glass=2000)
|
||||
construction_time = 200
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -392,7 +458,7 @@
|
||||
desc = "Equipment for medical exosuits. A mounted medical nanite projector which will treat patients with a focused beam."
|
||||
id = "mech_medi_beam"
|
||||
build_type = MECHFAB
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 8000, MAT_PLASMA = 3000, MAT_GOLD = 8000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 15000, /datum/material/glass = 8000, /datum/material/plasma = 3000, /datum/material/gold = 8000, /datum/material/diamond = 2000)
|
||||
construction_time = 250
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/medical/mechmedbeam
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
id = "borg_suit"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/robot_suit
|
||||
materials = list(MAT_METAL=15000)
|
||||
materials = list(/datum/material/iron=15000)
|
||||
construction_time = 500
|
||||
category = list("Cyborg")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
id = "borg_chest"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/chest/robot
|
||||
materials = list(MAT_METAL=40000)
|
||||
materials = list(/datum/material/iron=40000)
|
||||
construction_time = 350
|
||||
category = list("Cyborg")
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
id = "borg_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/head/robot
|
||||
materials = list(MAT_METAL=5000)
|
||||
materials = list(/datum/material/iron=5000)
|
||||
construction_time = 350
|
||||
category = list("Cyborg")
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
id = "borg_l_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/l_arm/robot
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 200
|
||||
category = list("Cyborg")
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
id = "borg_r_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/r_arm/robot
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 200
|
||||
category = list("Cyborg")
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
id = "borg_l_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/l_leg/robot
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 200
|
||||
category = list("Cyborg")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
id = "borg_r_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/bodypart/r_leg/robot
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 200
|
||||
category = list("Cyborg")
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
id = "ripley_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/ripley
|
||||
materials = list(MAT_METAL=20000)
|
||||
materials = list(/datum/material/iron=20000)
|
||||
construction_time = 100
|
||||
category = list("Ripley")
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
id = "firefighter_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/firefighter
|
||||
materials = list(MAT_METAL=20000)
|
||||
materials = list(/datum/material/iron=20000)
|
||||
construction_time = 100
|
||||
category = list("Firefighter")
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
id = "ripley_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_torso
|
||||
materials = list(MAT_METAL=20000, MAT_GLASS=7500)
|
||||
materials = list(/datum/material/iron=20000, /datum/material/glass=7500)
|
||||
construction_time = 200
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
id = "ripley_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_left_arm
|
||||
materials = list(MAT_METAL=15000)
|
||||
materials = list(/datum/material/iron=15000)
|
||||
construction_time = 150
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
id = "ripley_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_right_arm
|
||||
materials = list(MAT_METAL=15000)
|
||||
materials = list(/datum/material/iron=15000)
|
||||
construction_time = 150
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
id = "ripley_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_left_leg
|
||||
materials = list(MAT_METAL=15000)
|
||||
materials = list(/datum/material/iron=15000)
|
||||
construction_time = 150
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
id = "ripley_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/ripley_right_leg
|
||||
materials = list(MAT_METAL=15000)
|
||||
materials = list(/datum/material/iron=15000)
|
||||
construction_time = 150
|
||||
category = list("Ripley","Firefighter")
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
id = "odysseus_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/odysseus
|
||||
materials = list(MAT_METAL=20000)
|
||||
materials = list(/datum/material/iron=20000)
|
||||
construction_time = 100
|
||||
category = list("Odysseus")
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
id = "odysseus_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_torso
|
||||
materials = list(MAT_METAL=12000)
|
||||
materials = list(/datum/material/iron=12000)
|
||||
construction_time = 180
|
||||
category = list("Odysseus")
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
id = "odysseus_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_head
|
||||
materials = list(MAT_METAL=6000,MAT_GLASS=10000)
|
||||
materials = list(/datum/material/iron=6000,/datum/material/glass=10000)
|
||||
construction_time = 100
|
||||
category = list("Odysseus")
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
id = "odysseus_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_left_arm
|
||||
materials = list(MAT_METAL=6000)
|
||||
materials = list(/datum/material/iron=6000)
|
||||
construction_time = 120
|
||||
category = list("Odysseus")
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
id = "odysseus_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_right_arm
|
||||
materials = list(MAT_METAL=6000)
|
||||
materials = list(/datum/material/iron=6000)
|
||||
construction_time = 120
|
||||
category = list("Odysseus")
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
id = "odysseus_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_left_leg
|
||||
materials = list(MAT_METAL=7000)
|
||||
materials = list(/datum/material/iron=7000)
|
||||
construction_time = 130
|
||||
category = list("Odysseus")
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
id = "odysseus_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/odysseus_right_leg
|
||||
materials = list(MAT_METAL=7000)
|
||||
materials = list(/datum/material/iron=7000)
|
||||
construction_time = 130
|
||||
category = list("Odysseus")
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
id = "gygax_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/gygax
|
||||
materials = list(MAT_METAL=20000)
|
||||
materials = list(/datum/material/iron=20000)
|
||||
construction_time = 100
|
||||
category = list("Gygax")
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
id = "gygax_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_torso
|
||||
materials = list(MAT_METAL=20000,MAT_GLASS=10000,MAT_DIAMOND=2000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/glass=10000,/datum/material/diamond=2000)
|
||||
construction_time = 300
|
||||
category = list("Gygax")
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
id = "gygax_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_head
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=5000, MAT_DIAMOND=2000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/glass=5000, /datum/material/diamond=2000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
id = "gygax_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_left_arm
|
||||
materials = list(MAT_METAL=15000, MAT_DIAMOND=1000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/diamond=1000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
@@ -233,7 +233,7 @@
|
||||
id = "gygax_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_right_arm
|
||||
materials = list(MAT_METAL=15000, MAT_DIAMOND=1000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/diamond=1000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
id = "gygax_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_left_leg
|
||||
materials = list(MAT_METAL=15000, MAT_DIAMOND=2000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/diamond=2000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
id = "gygax_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_right_leg
|
||||
materials = list(MAT_METAL=15000, MAT_DIAMOND=2000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/diamond=2000)
|
||||
construction_time = 200
|
||||
category = list("Gygax")
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
id = "gygax_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/gygax_armor
|
||||
materials = list(MAT_METAL=15000,MAT_DIAMOND=10000,MAT_TITANIUM=10000)
|
||||
materials = list(/datum/material/iron=15000,/datum/material/diamond=10000,/datum/material/titanium=10000)
|
||||
construction_time = 600
|
||||
category = list("Gygax")
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
id = "durand_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/durand
|
||||
materials = list(MAT_METAL=25000)
|
||||
materials = list(/datum/material/iron=25000)
|
||||
construction_time = 100
|
||||
category = list("Durand")
|
||||
|
||||
@@ -279,7 +279,7 @@
|
||||
id = "durand_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_torso
|
||||
materials = list(MAT_METAL=25000,MAT_GLASS=10000,MAT_SILVER=10000)
|
||||
materials = list(/datum/material/iron=25000,/datum/material/glass=10000,/datum/material/silver=10000)
|
||||
construction_time = 300
|
||||
category = list("Durand")
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
id = "durand_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_head
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_SILVER=2000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/glass=15000,/datum/material/silver=2000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
id = "durand_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_left_arm
|
||||
materials = list(MAT_METAL=10000,MAT_SILVER=4000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/silver=4000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
@@ -306,7 +306,7 @@
|
||||
id = "durand_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_right_arm
|
||||
materials = list(MAT_METAL=10000,MAT_SILVER=4000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/silver=4000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
id = "durand_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_left_leg
|
||||
materials = list(MAT_METAL=15000,MAT_SILVER=4000)
|
||||
materials = list(/datum/material/iron=15000,/datum/material/silver=4000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
@@ -324,7 +324,7 @@
|
||||
id = "durand_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_right_leg
|
||||
materials = list(MAT_METAL=15000,MAT_SILVER=4000)
|
||||
materials = list(/datum/material/iron=15000,/datum/material/silver=4000)
|
||||
construction_time = 200
|
||||
category = list("Durand")
|
||||
|
||||
@@ -333,7 +333,7 @@
|
||||
id = "durand_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/durand_armor
|
||||
materials = list(MAT_METAL=30000,MAT_URANIUM=25000,MAT_TITANIUM=20000)
|
||||
materials = list(/datum/material/iron=30000,/datum/material/uranium=25000,/datum/material/titanium=20000)
|
||||
construction_time = 600
|
||||
category = list("Durand")
|
||||
|
||||
@@ -343,7 +343,7 @@
|
||||
id = "honk_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/honker
|
||||
materials = list(MAT_METAL=20000)
|
||||
materials = list(/datum/material/iron=20000)
|
||||
construction_time = 100
|
||||
category = list("H.O.N.K")
|
||||
|
||||
@@ -352,7 +352,7 @@
|
||||
id = "honk_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_torso
|
||||
materials = list(MAT_METAL=20000,MAT_GLASS=10000,MAT_BANANIUM=10000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/glass=10000,/datum/material/bananium=10000)
|
||||
construction_time = 300
|
||||
category = list("H.O.N.K")
|
||||
|
||||
@@ -361,7 +361,7 @@
|
||||
id = "honk_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_head
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=5000,MAT_BANANIUM=5000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/glass=5000,/datum/material/bananium=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
@@ -370,7 +370,7 @@
|
||||
id = "honk_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_left_arm
|
||||
materials = list(MAT_METAL=15000,MAT_BANANIUM=5000)
|
||||
materials = list(/datum/material/iron=15000,/datum/material/bananium=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
@@ -379,7 +379,7 @@
|
||||
id = "honk_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_right_arm
|
||||
materials = list(MAT_METAL=15000,MAT_BANANIUM=5000)
|
||||
materials = list(/datum/material/iron=15000,/datum/material/bananium=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
@@ -388,7 +388,7 @@
|
||||
id = "honk_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path =/obj/item/mecha_parts/part/honker_left_leg
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=5000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/bananium=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
@@ -397,7 +397,7 @@
|
||||
id = "honk_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/honker_right_leg
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=5000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/bananium=5000)
|
||||
construction_time = 200
|
||||
category = list("H.O.N.K")
|
||||
|
||||
@@ -408,7 +408,7 @@
|
||||
id = "phazon_chassis"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/chassis/phazon
|
||||
materials = list(MAT_METAL=20000)
|
||||
materials = list(/datum/material/iron=20000)
|
||||
construction_time = 100
|
||||
category = list("Phazon")
|
||||
|
||||
@@ -417,7 +417,7 @@
|
||||
id = "phazon_torso"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_torso
|
||||
materials = list(MAT_METAL=35000,MAT_GLASS=10000,MAT_PLASMA=20000)
|
||||
materials = list(/datum/material/iron=35000,/datum/material/glass=10000,/datum/material/plasma=20000)
|
||||
construction_time = 300
|
||||
category = list("Phazon")
|
||||
|
||||
@@ -426,7 +426,7 @@
|
||||
id = "phazon_head"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_head
|
||||
materials = list(MAT_METAL=15000,MAT_GLASS=5000,MAT_PLASMA=10000)
|
||||
materials = list(/datum/material/iron=15000,/datum/material/glass=5000,/datum/material/plasma=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
@@ -435,7 +435,7 @@
|
||||
id = "phazon_left_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_left_arm
|
||||
materials = list(MAT_METAL=20000,MAT_PLASMA=10000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/plasma=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
@@ -444,7 +444,7 @@
|
||||
id = "phazon_right_arm"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_right_arm
|
||||
materials = list(MAT_METAL=20000,MAT_PLASMA=10000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/plasma=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
@@ -453,7 +453,7 @@
|
||||
id = "phazon_left_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_left_leg
|
||||
materials = list(MAT_METAL=20000,MAT_PLASMA=10000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/plasma=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
@@ -462,7 +462,7 @@
|
||||
id = "phazon_right_leg"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_right_leg
|
||||
materials = list(MAT_METAL=20000,MAT_PLASMA=10000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/plasma=10000)
|
||||
construction_time = 200
|
||||
category = list("Phazon")
|
||||
|
||||
@@ -471,7 +471,7 @@
|
||||
id = "phazon_armor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/part/phazon_armor
|
||||
materials = list(MAT_METAL=25000,MAT_PLASMA=20000,MAT_TITANIUM=20000)
|
||||
materials = list(/datum/material/iron=25000,/datum/material/plasma=20000,/datum/material/titanium=20000)
|
||||
construction_time = 300
|
||||
category = list("Phazon")
|
||||
|
||||
@@ -481,7 +481,7 @@
|
||||
id = "mech_hydraulic_clamp"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -490,7 +490,7 @@
|
||||
id = "mech_drill"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/drill
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -499,7 +499,7 @@
|
||||
id = "mech_mscanner"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/mining_scanner
|
||||
materials = list(MAT_METAL=5000,MAT_GLASS=2500)
|
||||
materials = list(/datum/material/iron=5000,/datum/material/glass=2500)
|
||||
construction_time = 50
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -508,7 +508,7 @@
|
||||
id = "mech_extinguisher"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/extinguisher
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -517,7 +517,7 @@
|
||||
id = "mech_cable_layer"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/cable_layer
|
||||
materials = list(MAT_METAL=10000)
|
||||
materials = list(/datum/material/iron=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -526,7 +526,7 @@
|
||||
id = "mech_generator"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/generator
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=1000,MAT_SILVER=2000,MAT_PLASMA=5000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/glass=1000,/datum/material/silver=2000,/datum/material/plasma=5000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -535,7 +535,7 @@
|
||||
id = "mech_mousetrap_mortar"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=5000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/bananium=5000)
|
||||
construction_time = 300
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -544,7 +544,7 @@
|
||||
id = "mech_banana_mortar"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=5000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/bananium=5000)
|
||||
construction_time = 300
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -553,7 +553,7 @@
|
||||
id = "mech_honker"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/honker
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=10000)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/bananium=10000)
|
||||
construction_time = 500
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -562,7 +562,7 @@
|
||||
id = "mech_punching_face"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove
|
||||
materials = list(MAT_METAL=20000,MAT_BANANIUM=7500)
|
||||
materials = list(/datum/material/iron=20000,/datum/material/bananium=7500)
|
||||
construction_time = 400
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
@@ -575,7 +575,7 @@
|
||||
id = "borg_upgrade_rename"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/rename
|
||||
materials = list(MAT_METAL=35000)
|
||||
materials = list(/datum/material/iron=35000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -584,7 +584,7 @@
|
||||
id = "borg_upgrade_restart"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/restart
|
||||
materials = list(MAT_METAL=60000 , MAT_GLASS=5000)
|
||||
materials = list(/datum/material/iron=60000 , /datum/material/glass=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -593,7 +593,7 @@
|
||||
id = "borg_upgrade_vtec"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/vtec
|
||||
materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_URANIUM= 5000)
|
||||
materials = list(/datum/material/iron=80000 , /datum/material/glass=6000 , /datum/material/uranium= 5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -602,7 +602,7 @@
|
||||
id = "borg_upgrade_thrusters"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/thrusters
|
||||
materials = list(MAT_METAL=10000, MAT_PLASMA=5000, MAT_URANIUM = 6000)
|
||||
materials = list(/datum/material/iron=10000, /datum/material/plasma=5000, /datum/material/uranium = 6000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -611,7 +611,7 @@
|
||||
id = "borg_upgrade_disablercooler"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/disablercooler
|
||||
materials = list(MAT_METAL=80000 , MAT_GLASS=6000 , MAT_GOLD= 2000, MAT_DIAMOND = 500)
|
||||
materials = list(/datum/material/iron=80000 , /datum/material/glass=6000 , /datum/material/gold= 2000, /datum/material/diamond = 500)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -620,7 +620,7 @@
|
||||
id = "borg_upgrade_diamonddrill"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/ddrill
|
||||
materials = list(MAT_METAL=10000, MAT_DIAMOND=2000)
|
||||
materials = list(/datum/material/iron=10000, /datum/material/diamond=2000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -629,7 +629,7 @@
|
||||
id = "borg_upgrade_advcutter"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/advcutter
|
||||
materials = list(MAT_METAL=8000, MAT_PLASMA=2000, MAT_GOLD= 2000)
|
||||
materials = list(/datum/material/iron = 8000, /datum/material/plasma = 2000, /datum/material/gold = 2000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -638,7 +638,7 @@
|
||||
id = "borg_upgrade_premiumka"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/premiumka
|
||||
materials = list(MAT_METAL=8000, MAT_GLASS=4000, MAT_TITANIUM=2000)
|
||||
materials = list(/datum/material/iron=8000, /datum/material/glass=4000, /datum/material/titanium=2000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -647,7 +647,7 @@
|
||||
id = "borg_upgrade_lavaproof"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/lavaproof
|
||||
materials = list(MAT_METAL = 10000, MAT_PLASMA = 4000, MAT_TITANIUM = 5000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/plasma = 4000, /datum/material/titanium = 5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -656,7 +656,7 @@
|
||||
id = "borg_syndicate_module"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/syndicate
|
||||
materials = list(MAT_METAL=10000,MAT_GLASS=15000,MAT_DIAMOND = 10000)
|
||||
materials = list(/datum/material/iron=10000,/datum/material/glass=15000,/datum/material/diamond = 10000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -665,7 +665,7 @@
|
||||
id = "borg_transform_clown"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/transform/clown
|
||||
materials = list(MAT_METAL=10000, MAT_GLASS=15000, MAT_BANANIUM = 1000)
|
||||
materials = list(/datum/material/iron=10000, /datum/material/glass=15000, /datum/material/bananium = 1000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -674,7 +674,7 @@
|
||||
id = "borg_upgrade_selfrepair"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/selfrepair
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/glass=15000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -683,7 +683,7 @@
|
||||
id = "borg_upgrade_expandedsynthesiser"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/hypospray/expanded
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=5000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/glass=15000, /datum/material/plasma=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -692,7 +692,7 @@
|
||||
id = "borg_upgrade_highstrengthsynthesiser"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/hypospray/high_strength
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_PLASMA=10000, MAT_URANIUM=5000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/glass=15000, /datum/material/plasma=10000, /datum/material/uranium=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -701,7 +701,7 @@
|
||||
id = "borg_upgrade_piercinghypospray"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/piercing_hypospray
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_TITANIUM=10000, MAT_DIAMOND=5000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/glass=15000, /datum/material/titanium=10000, /datum/material/diamond=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -710,7 +710,7 @@
|
||||
id = "borg_upgrade_surgicalprocessor"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/processor
|
||||
materials = list(MAT_METAL=15000, MAT_GLASS=15000, MAT_SILVER=10000)
|
||||
materials = list(/datum/material/iron=15000, /datum/material/glass=15000, /datum/material/silver=10000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -719,7 +719,7 @@
|
||||
id = "borg_upgrade_trashofholding"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/tboh
|
||||
materials = list(MAT_METAL=10000, MAT_GOLD=1500, MAT_URANIUM=250, MAT_PLASMA=1500)
|
||||
materials = list(/datum/material/iron=10000, /datum/material/gold=1500, /datum/material/uranium=250, /datum/material/plasma=1500)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -728,7 +728,7 @@
|
||||
id = "borg_upgrade_advancedmop"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/amop
|
||||
materials = list(MAT_METAL=10000, MAT_GLASS=200, MAT_TITANIUM=1000)
|
||||
materials = list(/datum/material/iron=10000, /datum/material/glass=200, /datum/material/titanium=1000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -737,7 +737,7 @@
|
||||
id = "borg_upgrade_expand"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/expand
|
||||
materials = list(MAT_METAL=200000, MAT_TITANIUM=5000)
|
||||
materials = list(/datum/material/iron=200000, /datum/material/titanium=5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -746,7 +746,7 @@
|
||||
id = "borg_ai_control"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/ai
|
||||
materials = list(MAT_METAL = 1200, MAT_GLASS = 1500, MAT_GOLD = 200)
|
||||
materials = list(/datum/material/iron = 1200, /datum/material/glass = 1500, /datum/material/gold = 200)
|
||||
construction_time = 50
|
||||
category = list("Misc")
|
||||
|
||||
@@ -755,7 +755,7 @@
|
||||
id = "borg_upgrade_rped"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/rped
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -764,7 +764,7 @@
|
||||
id = "borg_upgrade_pinpointer"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/pinpointer
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 500)
|
||||
construction_time = 120
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -773,7 +773,7 @@
|
||||
id = "borg_upgrade_advhealth"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/borg/upgrade/advhealth
|
||||
materials = list(MAT_METAL=7500, MAT_GLASS=7500, MAT_SILVER=1000, MAT_GOLD=1000, MAT_TITANIUM=2000)
|
||||
materials = list(/datum/material/iron=7500, /datum/material/glass=7500, /datum/material/silver=1000, /datum/material/gold=1000, /datum/material/titanium=2000)
|
||||
construction_time = 100
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
@@ -783,7 +783,7 @@
|
||||
id = "mecha_tracking"
|
||||
build_type = MECHFAB
|
||||
build_path =/obj/item/mecha_parts/mecha_tracking
|
||||
materials = list(MAT_METAL=500)
|
||||
materials = list(/datum/material/iron=500)
|
||||
construction_time = 50
|
||||
category = list("Misc")
|
||||
|
||||
@@ -792,7 +792,7 @@
|
||||
id = "mecha_tracking_ai_control"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_tracking/ai_control
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_SILVER = 200)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/silver = 200)
|
||||
construction_time = 50
|
||||
category = list("Misc")
|
||||
|
||||
@@ -801,7 +801,7 @@
|
||||
desc = "When a problem arises, SCIENCE is the solution."
|
||||
id = "sflash"
|
||||
build_type = MECHFAB
|
||||
materials = list(MAT_METAL = 750, MAT_GLASS = 750)
|
||||
materials = list(/datum/material/iron = 750, /datum/material/glass = 750)
|
||||
construction_time = 100
|
||||
build_path = /obj/item/assembly/flash/handheld
|
||||
category = list("Misc")
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity."
|
||||
id = "mmi"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 500)
|
||||
construction_time = 75
|
||||
build_path = /obj/item/mmi
|
||||
category = list("Misc","Medical Designs")
|
||||
@@ -18,7 +18,7 @@
|
||||
desc = "The latest in Artificial Intelligences."
|
||||
id = "mmi_posi"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG.
|
||||
materials = list(/datum/material/iron = 1700, /datum/material/glass = 1350, /datum/material/gold = 500) //Gold, because SWAG.
|
||||
construction_time = 75
|
||||
build_path = /obj/item/mmi/posibrain
|
||||
category = list("Misc", "Medical Designs")
|
||||
@@ -29,7 +29,7 @@
|
||||
desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units."
|
||||
id = "bluespacebeaker"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 3000, MAT_PLASMA = 3000, MAT_DIAMOND = 250, MAT_BLUESPACE = 250)
|
||||
materials = list(/datum/material/glass = 3000, /datum/material/plasma = 3000, /datum/material/diamond = 250, /datum/material/bluespace = 250)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker/bluespace
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -39,7 +39,7 @@
|
||||
desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units."
|
||||
id = "splitbeaker"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
materials = list(/datum/material/iron = 3000)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker/noreact
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -49,7 +49,7 @@
|
||||
id = "xlarge_beaker"
|
||||
build_type = PROTOLATHE
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 3000)
|
||||
materials = list(/datum/material/glass = 2500, /datum/material/plastic = 3000)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker/plastic
|
||||
category = list("Medical Designs")
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
id = "meta_beaker"
|
||||
build_type = PROTOLATHE
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 3000, MAT_GOLD = 1000, MAT_TITANIUM = 1000)
|
||||
materials = list(/datum/material/glass = 2500, /datum/material/plastic = 3000, /datum/material/gold = 1000, /datum/material/titanium = 1000)
|
||||
build_path = /obj/item/reagent_containers/glass/beaker/meta
|
||||
category = list("Medical Designs")
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
desc = "An advanced syringe that can hold 60 units of chemicals"
|
||||
id = "bluespacesyringe"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 2000, MAT_PLASMA = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 500)
|
||||
materials = list(/datum/material/glass = 2000, /datum/material/plasma = 1000, /datum/material/diamond = 1000, /datum/material/bluespace = 500)
|
||||
build_path = /obj/item/reagent_containers/syringe/bluespace
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -77,7 +77,7 @@
|
||||
desc = "An advanced syringe that stops reagents inside from reacting. It can hold up to 20 units."
|
||||
id = "noreactsyringe"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 2000, MAT_GOLD = 1000)
|
||||
materials = list(/datum/material/glass = 2000, /datum/material/gold = 1000)
|
||||
build_path = /obj/item/reagent_containers/syringe/noreact
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -87,7 +87,7 @@
|
||||
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
|
||||
id = "piercesyringe"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 2000, MAT_DIAMOND = 1000)
|
||||
materials = list(/datum/material/glass = 2000, /datum/material/diamond = 1000)
|
||||
build_path = /obj/item/reagent_containers/syringe/piercing
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -97,7 +97,7 @@
|
||||
desc = "A non-harmful dart that can administer medication from a range. Once it hits a patient using it's smart nanofilter technology only medicines contained within the dart are administered to the patient. Additonally, due to capillary action, injection of chemicals past the overdose limit is prevented."
|
||||
id = "medicinalsmartdart"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 100, MAT_PLASTIC = 100, MAT_METAL = 100)
|
||||
materials = list(/datum/material/glass = 100, /datum/material/plastic = 100, /datum/material/iron = 100)
|
||||
build_path = /obj/item/reagent_containers/syringe/dart
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -107,7 +107,7 @@
|
||||
desc = "A non-harmful dart that can administer medication from a range. Once it hits a patient using it's smart nanofilter technology only medicines contained within the dart are administered to the patient. Additonally, due to capillary action, injection of chemicals past the overdose limit is prevented. Has an extended volume capacity thanks to bluespace foam."
|
||||
id = "bluespacesmartdart"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 250, MAT_PLASTIC = 250, MAT_METAL = 250, MAT_BLUESPACE = 250)
|
||||
materials = list(/datum/material/glass = 250, /datum/material/plastic = 250, /datum/material/iron = 250, /datum/material/bluespace = 250)
|
||||
build_path = /obj/item/reagent_containers/syringe/dart/bluespace
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -117,7 +117,7 @@
|
||||
desc = "A compressed air gun, designed to fit medicinal darts for application of medicine for those patients just out of reach."
|
||||
id = "smartdartgun"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_PLASTIC = 1000, MAT_METAL = 500)
|
||||
materials = list(/datum/material/glass = 500, /datum/material/plastic = 1000, /datum/material/iron = 500)
|
||||
build_path = /obj/item/gun/syringe/dart
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -127,7 +127,7 @@
|
||||
desc = "A bluespace body bag, powered by experimental bluespace technology. It can hold loads of bodies and the largest of creatures."
|
||||
id = "bluespacebodybag"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_PLASMA = 2000, MAT_DIAMOND = 500, MAT_BLUESPACE = 500)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/plasma = 2000, /datum/material/diamond = 500, /datum/material/bluespace = 500)
|
||||
build_path = /obj/item/bodybag/bluespace
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -137,7 +137,7 @@
|
||||
desc = "A refill pack for the auto-extinguisher on Plasma-man suits."
|
||||
id = "plasmarefiller" //Why did this have no plasmatech
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 1000)
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/plasma = 1000)
|
||||
build_path = /obj/item/extinguisher_refill
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL
|
||||
@@ -147,7 +147,7 @@
|
||||
desc = "Allows tracking of someone's location if their suit sensors are turned to tracking beacon."
|
||||
id = "crewpinpointer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1500, MAT_GOLD = 200)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 1500, /datum/material/gold = 200)
|
||||
build_path = /obj/item/pinpointer/crew
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -157,7 +157,7 @@
|
||||
desc = "An IV drip with an advanced infusion pump that can both drain blood into and inject liquids from attached containers. Blood packs are processed at an accelerated rate. This one is telescopic, and can be picked up and put down."
|
||||
id = "telescopiciv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 3500, MAT_SILVER = 1000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 3500, /datum/material/silver = 1000)
|
||||
build_path = /obj/item/tele_iv
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -178,7 +178,7 @@
|
||||
id = "healthanalyzer_advanced"
|
||||
build_path = /obj/item/healthanalyzer/advanced
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 2000, MAT_GOLD = 1500)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 2000, /datum/material/gold = 1500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
id = "medspray"
|
||||
build_path = /obj/item/reagent_containers/medspray
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 2500, /datum/material/glass = 500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
desc = "A plastic medical kit for storging medical items."
|
||||
id = "medicalkit"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_PLASTIC = 5000)
|
||||
materials = list(/datum/material/plastic = 5000)
|
||||
build_path = /obj/item/storage/firstaid //So we dont spawn medical items in it
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -208,7 +208,7 @@
|
||||
id = "blood_bag"
|
||||
build_path = /obj/item/reagent_containers/blood
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 1500, MAT_PLASTIC = 3500)
|
||||
materials = list(/datum/material/glass = 1500, /datum/material/plastic = 3500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
id = "bsblood_bag"
|
||||
build_path = /obj/item/reagent_containers/blood/bluespace
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 4500, MAT_BLUESPACE = 250)
|
||||
materials = list(/datum/material/glass = 2500, /datum/material/plastic = 4500, /datum/material/bluespace = 250)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
desc = "Produce additional disks for storing genetic data."
|
||||
id = "cloning_disk"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 300, MAT_GLASS = 100, MAT_SILVER = 50)
|
||||
materials = list(/datum/material/iron = 300, /datum/material/glass = 100, /datum/material/silver=50)
|
||||
build_path = /obj/item/disk/data
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -237,7 +237,7 @@
|
||||
desc = "A large cool box that can hold large amouts of medical tools or organs."
|
||||
id = "organbox"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_SILVER= 3500, MAT_GOLD = 3500, MAT_PLASTIC = 5000)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000, /datum/material/silver= 3500, /datum/material/gold = 3500, /datum/material/plastic = 5000)
|
||||
build_path = /obj/item/storage/belt/organbox
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -252,7 +252,7 @@
|
||||
id = "defibrillator"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/defibrillator
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 4000, MAT_SILVER = 3000, MAT_GOLD = 1500)
|
||||
materials = list(/datum/material/iron = 8000, /datum/material/glass = 4000, /datum/material/silver = 3000, /datum/material/gold = 1500)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -261,7 +261,7 @@
|
||||
desc = "An all-in-one mounted frame for holding defibrillators, complete with ID-locked clamps and recharging cables."
|
||||
id = "defibmount"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/wallframe/defib_mount
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -271,7 +271,7 @@
|
||||
desc = "An upgrade which increases the healing power of the defibrillator."
|
||||
id = "defib_heal"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000)
|
||||
materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000)
|
||||
build_path = /obj/item/disk/medical/defib_heal
|
||||
construction_time = 10
|
||||
category = list("Misc")
|
||||
@@ -282,7 +282,7 @@
|
||||
desc = "A safety upgrade that guarantees only the patient will get shocked."
|
||||
id = "defib_shock"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 16000, MAT_GLASS = 18000, MAT_GOLD = 6000, MAT_SILVER = 6000)
|
||||
materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 6000, /datum/material/silver = 6000)
|
||||
build_path = /obj/item/disk/medical/defib_shock
|
||||
construction_time = 10
|
||||
category = list("Misc")
|
||||
@@ -293,7 +293,7 @@
|
||||
desc = "An upgrade allowing the defibrillator to work on more decayed bodies."
|
||||
id = "defib_decay"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 16000, MAT_GLASS = 18000, MAT_GOLD = 16000, MAT_SILVER = 6000, MAT_TITANIUM = 2000)
|
||||
materials = list(/datum/material/iron = 16000, /datum/material/glass = 18000, /datum/material/gold = 16000, /datum/material/silver = 6000, /datum/material/titanium = 2000)
|
||||
build_path = /obj/item/disk/medical/defib_decay
|
||||
construction_time = 10
|
||||
category = list("Misc")
|
||||
@@ -305,7 +305,7 @@
|
||||
id = "defib_speed"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/disk/medical/defib_speed
|
||||
materials = list(MAT_METAL = 16000, MAT_GLASS = 8000, MAT_GOLD = 26000, MAT_SILVER = 26000)
|
||||
materials = list(/datum/material/iron = 16000, /datum/material/glass = 8000, /datum/material/gold = 26000, /datum/material/silver = 26000)
|
||||
construction_time = 10
|
||||
category = list("Misc")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -316,7 +316,7 @@
|
||||
id = "defibrillator_compact"
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/defibrillator/compact
|
||||
materials = list(MAT_METAL = 16000, MAT_GLASS = 8000, MAT_SILVER = 6000, MAT_GOLD = 3000)
|
||||
materials = list(/datum/material/iron = 16000, /datum/material/glass = 8000, /datum/material/silver = 6000, /datum/material/gold = 3000)
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -330,7 +330,7 @@
|
||||
id = "ci-welding"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 400)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 400)
|
||||
build_path = /obj/item/organ/eyes/robotic/shield
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -341,7 +341,7 @@
|
||||
id = "ci-gloweyes"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/organ/eyes/robotic/glow
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -352,7 +352,7 @@
|
||||
id = "ci-breather"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 35
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 250)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 250)
|
||||
build_path = /obj/item/organ/cyberimp/mouth/breathing_tube
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -362,7 +362,7 @@
|
||||
desc = "A set of surgical tools hidden behind a concealed panel on the user's arm."
|
||||
id = "ci-surgery"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
|
||||
materials = list (/datum/material/iron = 2500, /datum/material/glass = 1500, /datum/material/silver = 1500)
|
||||
construction_time = 200
|
||||
build_path = /obj/item/organ/cyberimp/arm/surgery
|
||||
category = list("Misc", "Medical Designs")
|
||||
@@ -373,7 +373,7 @@
|
||||
desc = "A stripped-down version of engineering cyborg toolset, designed to be installed on subject's arm."
|
||||
id = "ci-toolset"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list (MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
|
||||
materials = list (/datum/material/iron = 2500, /datum/material/glass = 1500, /datum/material/silver = 1500)
|
||||
construction_time = 200
|
||||
build_path = /obj/item/organ/cyberimp/arm/toolset
|
||||
category = list("Misc", "Medical Designs")
|
||||
@@ -385,7 +385,7 @@
|
||||
id = "ci-medhud"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 500, /datum/material/gold = 500)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/hud/medical
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -396,7 +396,7 @@
|
||||
id = "ci-sechud"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 750, MAT_GOLD = 750)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 750, /datum/material/gold = 750)
|
||||
build_path = /obj/item/organ/cyberimp/eyes/hud/security
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -407,7 +407,7 @@
|
||||
id = "ci-xray"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 1000)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 600, /datum/material/gold = 600, /datum/material/plasma = 1000, /datum/material/uranium = 1000, /datum/material/diamond = 1000, /datum/material/bluespace = 1000)
|
||||
build_path = /obj/item/organ/eyes/robotic/xray
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -418,7 +418,7 @@
|
||||
id = "ci-thermals"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 600, /datum/material/gold = 600, /datum/material/plasma = 1000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/organ/eyes/robotic/thermals
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -429,7 +429,7 @@
|
||||
id = "ci-antidrop"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 400, /datum/material/gold = 400)
|
||||
build_path = /obj/item/organ/cyberimp/brain/anti_drop
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -440,7 +440,7 @@
|
||||
id = "ci-antistun"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/silver = 500, /datum/material/gold = 1000)
|
||||
build_path = /obj/item/organ/cyberimp/brain/anti_stun
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -451,7 +451,7 @@
|
||||
id = "ci-nutriment"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/gold = 500)
|
||||
build_path = /obj/item/organ/cyberimp/chest/nutriment
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -462,7 +462,7 @@
|
||||
id = "ci-nutrimentplus"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/gold = 500, /datum/material/uranium = 750)
|
||||
build_path = /obj/item/organ/cyberimp/chest/nutriment/plus
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -473,7 +473,7 @@
|
||||
id = "ci-reviver"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500)
|
||||
materials = list(/datum/material/iron = 800, /datum/material/glass = 800, /datum/material/gold = 300, /datum/material/uranium = 500)
|
||||
build_path = /obj/item/organ/cyberimp/chest/reviver
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -484,7 +484,7 @@
|
||||
id = "ci-thrusters"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 80
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 2000, MAT_SILVER = 1000, MAT_DIAMOND = 1000)
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/glass = 2000, /datum/material/silver = 1000, /datum/material/diamond = 1000)
|
||||
build_path = /obj/item/organ/cyberimp/chest/thrusters
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -498,7 +498,7 @@
|
||||
desc = "A sterile automatic implant injector."
|
||||
id = "implanter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 200)
|
||||
build_path = /obj/item/implanter
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -508,7 +508,7 @@
|
||||
desc = "A glass case for containing an implant."
|
||||
id = "implantcase"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500)
|
||||
materials = list(/datum/material/glass = 500)
|
||||
build_path = /obj/item/implantcase
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -518,7 +518,7 @@
|
||||
desc = "Makes death amusing."
|
||||
id = "implant_trombone"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_BANANIUM = 500)
|
||||
materials = list(/datum/material/glass = 500, /datum/material/bananium = 500)
|
||||
build_path = /obj/item/implantcase/sad_trombone
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL //if you get bananium you get the sad trombones.
|
||||
@@ -528,7 +528,7 @@
|
||||
desc = "A glass case containing an implant."
|
||||
id = "implant_chem"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 700)
|
||||
materials = list(/datum/material/glass = 700)
|
||||
build_path = /obj/item/implantcase/chem
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -538,7 +538,7 @@
|
||||
desc = "A glass case containing an implant."
|
||||
id = "implant_tracking"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/implantcase/track
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -550,7 +550,7 @@
|
||||
desc = "A cybernetic liver"
|
||||
id = "cybernetic_liver"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/organ/liver/cybernetic
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -560,7 +560,7 @@
|
||||
desc = "A cybernetic heart"
|
||||
id = "cybernetic_heart"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/organ/heart/cybernetic
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -571,7 +571,7 @@
|
||||
id = "cybernetic_heart_u"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 500)
|
||||
build_path = /obj/item/organ/heart/cybernetic/upgraded
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -581,7 +581,7 @@
|
||||
desc = "An upgraded cybernetic liver"
|
||||
id = "cybernetic_liver_u"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/organ/liver/cybernetic/upgraded
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -591,7 +591,7 @@
|
||||
desc = "A pair of cybernetic lungs."
|
||||
id = "cybernetic_lungs"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/organ/lungs/cybernetic
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -601,7 +601,7 @@
|
||||
desc = "A pair of upgraded cybernetic lungs."
|
||||
id = "cybernetic_lungs_u"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 500)
|
||||
build_path = /obj/item/organ/lungs/cybernetic/upgraded
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -611,7 +611,7 @@
|
||||
desc = "A fancy cybernetic tongue."
|
||||
id = "cybernetic_tongue"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/organ/tongue/cybernetic
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -622,7 +622,7 @@
|
||||
id = "cybernetic_ears"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 30
|
||||
materials = list(MAT_METAL = 250, MAT_GLASS = 400)
|
||||
materials = list(/datum/material/iron = 250, /datum/material/glass = 400)
|
||||
build_path = /obj/item/organ/ears/cybernetic
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -633,7 +633,7 @@
|
||||
id = "cybernetic_ears_u"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 500)
|
||||
build_path = /obj/item/organ/ears/cybernetic/upgraded
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -812,7 +812,7 @@
|
||||
desc = "Basic outdated and fragile prosthetic left arm."
|
||||
id = "basic_l_arm"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
|
||||
construction_time = 20
|
||||
build_path = /obj/item/bodypart/l_arm/robot/surplus
|
||||
category = list("Medical Designs")
|
||||
@@ -823,7 +823,7 @@
|
||||
desc = "Basic outdated and fragile prosthetic left arm."
|
||||
id = "basic_r_arm"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
|
||||
construction_time = 20
|
||||
build_path = /obj/item/bodypart/r_arm/robot/surplus
|
||||
category = list("Medical Designs")
|
||||
@@ -834,7 +834,7 @@
|
||||
desc = "Basic outdated and fragile prosthetic left leg."
|
||||
id = "basic_l_leg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
|
||||
construction_time = 20
|
||||
build_path = /obj/item/bodypart/l_leg/robot/surplus
|
||||
category = list("Medical Designs")
|
||||
@@ -845,7 +845,7 @@
|
||||
desc = "Basic outdated and fragile prosthetic right leg."
|
||||
id = "basic_r_leg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500)
|
||||
construction_time = 20
|
||||
build_path = /obj/item/bodypart/r_leg/robot/surplus
|
||||
category = list("Medical Designs")
|
||||
@@ -856,7 +856,7 @@
|
||||
desc = "A renforced prosthetic right leg."
|
||||
id = "adv_r_leg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800)
|
||||
construction_time = 40
|
||||
build_path = /obj/item/bodypart/r_leg/robot/surplus_upgraded
|
||||
category = list("Medical Designs")
|
||||
@@ -867,7 +867,7 @@
|
||||
desc = "A renforced prosthetic left leg."
|
||||
id = "adv_l_leg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800)
|
||||
construction_time = 40
|
||||
build_path = /obj/item/bodypart/l_leg/robot/surplus_upgraded
|
||||
category = list("Medical Designs")
|
||||
@@ -878,7 +878,7 @@
|
||||
desc = "A renforced prosthetic left arm."
|
||||
id = "adv_l_arm"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800)
|
||||
construction_time = 40
|
||||
build_path = /obj/item/bodypart/l_arm/robot/surplus_upgraded
|
||||
category = list("Medical Designs")
|
||||
@@ -889,7 +889,7 @@
|
||||
desc = "A renforced prosthetic right arm."
|
||||
id = "adv_r_arm"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 3500, MAT_GOLD = 500, MAT_TITANIUM = 800)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/glass = 3500, /datum/material/gold = 500, /datum/material/titanium = 800)
|
||||
construction_time = 40
|
||||
build_path = /obj/item/bodypart/r_arm/robot/surplus_upgraded
|
||||
category = list("Medical Designs")
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
desc = "Allows for the construction of circuit boards used to build an Express Supply Console."//who?
|
||||
id = "cargoexpress"//the coder reading this
|
||||
build_type = IMPRINTER
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/glass = 1000)
|
||||
build_path = /obj/item/circuitboard/computer/cargo/express
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -17,7 +17,7 @@
|
||||
desc = "Allows the Cargo Express Console to call down the Bluespace Drop Pod, greatly increasing user safety."//who?
|
||||
id = "bluespace_pod"//the coder reading this
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/glass = 1000)
|
||||
build_path = /obj/item/disk/cargo/bluespace_pod
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -27,7 +27,7 @@
|
||||
desc = "Yours is the drill that will pierce through the rock walls."
|
||||
id = "drill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000) //expensive, but no need for miners.
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/glass = 1000) //expensive, but no need for miners.
|
||||
build_path = /obj/item/pickaxe/drill
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -37,7 +37,7 @@
|
||||
desc = "Yours is the drill that will pierce the heavens!"
|
||||
id = "drill_diamond"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 1000, MAT_DIAMOND = 2000) //Yes, a whole diamond is needed.
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/glass = 1000, /datum/material/diamond = 2000) //Yes, a whole diamond is needed.
|
||||
build_path = /obj/item/pickaxe/drill/diamonddrill
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -47,7 +47,7 @@
|
||||
desc = "You could use it to cut limbs off of xenos! Or, you know, mine stuff."
|
||||
id = "plasmacutter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_GLASS = 500, MAT_PLASMA = 400)
|
||||
materials = list(/datum/material/iron = 1500, /datum/material/glass = 500, /datum/material/plasma = 400)
|
||||
build_path = /obj/item/gun/energy/plasmacutter
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -57,7 +57,7 @@
|
||||
desc = "It's an advanced plasma cutter, oh my god."
|
||||
id = "plasmacutter_adv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000, MAT_PLASMA = 2000, MAT_GOLD = 500)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000, /datum/material/plasma = 2000, /datum/material/gold = 500)
|
||||
build_path = /obj/item/gun/energy/plasmacutter/adv
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -67,7 +67,7 @@
|
||||
desc = "A pickaxe with a plasteel pick head. Less robust at cracking rock walls and digging up dirt than the titanium pickaxe, but better at cracking open skulls."
|
||||
id = "plasteel_pick"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=2000, MAT_PLASMA=2000)
|
||||
materials = list(/datum/material/iron=2000, /datum/material/plasma=2000)
|
||||
build_path = /obj/item/pickaxe/plasteel
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -77,7 +77,7 @@
|
||||
desc = "A pickaxe with a titanium pick head. Extremely robust at cracking rock walls and digging up dirt, but less than the plasteel pickaxe at cracking open skulls."
|
||||
id = "titanium_pick"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_TITANIUM = 4000)
|
||||
materials = list(/datum/material/titanium = 4000)
|
||||
build_path = /obj/item/pickaxe/titanium
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -87,7 +87,7 @@
|
||||
desc = "Essentially a handheld planet-cracker. Can drill through walls with ease as well."
|
||||
id = "jackhammer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 6000, MAT_GLASS = 2000, MAT_SILVER = 2000, MAT_DIAMOND = 6000)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/glass = 2000, /datum/material/silver = 2000, /datum/material/diamond = 6000)
|
||||
build_path = /obj/item/pickaxe/drill/jackhammer
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -97,7 +97,7 @@
|
||||
desc = "An upgraded version of the resonator that allows more fields to be active at once."
|
||||
id = "superresonator"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 1500, MAT_SILVER = 1000, MAT_URANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/glass = 1500, /datum/material/silver = 1000, /datum/material/uranium = 1000)
|
||||
build_path = /obj/item/resonator/upgraded
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -107,7 +107,7 @@
|
||||
desc = "A device which allows kinetic accelerators to be wielded by any organism."
|
||||
id = "triggermod"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/trigger_guard
|
||||
category = list("Mining Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -117,7 +117,7 @@
|
||||
desc = "A device which allows kinetic accelerators to deal more damage."
|
||||
id = "damagemod"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/damage
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -127,7 +127,7 @@
|
||||
desc = "A device which decreases the cooldown of a Kinetic Accelerator."
|
||||
id = "cooldownmod"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/cooldown
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -137,7 +137,7 @@
|
||||
desc = "A device which allows kinetic accelerators to fire at a further range."
|
||||
id = "rangemod"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/glass = 1500, /datum/material/gold = 1500, /datum/material/uranium = 1000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/range
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -147,7 +147,7 @@
|
||||
desc = "A modification kit for Kinetic Accelerators which causes it to fire AoE blasts that destroy rock."
|
||||
id = "hypermod"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_SILVER = 2000, MAT_GOLD = 2000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 8000, /datum/material/glass = 1500, /datum/material/silver = 2000, /datum/material/gold = 2000, /datum/material/diamond = 2000)
|
||||
build_path = /obj/item/borg/upgrade/modkit/aoe/turfs
|
||||
category = list("Mining Designs", "Cyborg Upgrade Modules")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
|
||||
id = "health_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/health
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -17,7 +17,7 @@
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. This one has a prescription lens."
|
||||
id = "health_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -27,7 +27,7 @@
|
||||
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
|
||||
id = "health_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/silver = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/health/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -37,7 +37,7 @@
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
|
||||
id = "security_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/security
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -47,7 +47,7 @@
|
||||
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status. This one has a prescription lens."
|
||||
id = "security_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -57,7 +57,7 @@
|
||||
desc = "A heads-up display which provides id data and vision in complete darkness."
|
||||
id = "security_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/gold = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/security/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -67,7 +67,7 @@
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery."
|
||||
id = "diagnostic_hud"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -77,7 +77,7 @@
|
||||
desc = "A HUD used to analyze and determine faults within robotic machinery. This one has a prescription lens."
|
||||
id = "diagnostic_hud_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 350)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/gold = 350)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -87,7 +87,7 @@
|
||||
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
|
||||
id = "diagnostic_hud_night"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/uranium = 1000, /datum/material/plasma = 300)
|
||||
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -97,7 +97,7 @@
|
||||
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
|
||||
id = "scigoggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/glasses/science
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -107,7 +107,7 @@
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
|
||||
id = "mesons"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -117,7 +117,7 @@
|
||||
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition. Prescription lens has been added into this design."
|
||||
id = "mesons_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 350)
|
||||
build_path = /obj/item/clothing/glasses/meson/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -127,7 +127,7 @@
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
|
||||
id = "engine_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/plasma = 100)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -137,7 +137,7 @@
|
||||
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
|
||||
id = "engine_goggles_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100, MAT_SILVER = 350)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/plasma = 100, /datum/material/silver = 350)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -147,7 +147,7 @@
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
|
||||
id = "tray_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -157,7 +157,7 @@
|
||||
desc = "Used by engineering staff to see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
|
||||
id = "tray_goggles_prescription"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 150)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 150)
|
||||
build_path = /obj/item/clothing/glasses/meson/engine/tray/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -167,7 +167,7 @@
|
||||
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
|
||||
id = "nvgmesons"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000)
|
||||
build_path = /obj/item/clothing/glasses/meson/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
|
||||
@@ -177,7 +177,7 @@
|
||||
desc = "Goggles that let you see through darkness unhindered."
|
||||
id = "night_visision_goggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -187,7 +187,7 @@
|
||||
desc = "Goggles that let you see through darkness unhindered. Corrects vision."
|
||||
id = "night_visision_goggles_glasses"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 600, /datum/material/glass = 600, /datum/material/plasma = 350, /datum/material/uranium = 1000)
|
||||
build_path = /obj/item/clothing/glasses/night/prescription
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -201,7 +201,7 @@
|
||||
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
|
||||
id = "weldingmask"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/clothing/mask/gas/welding
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -211,7 +211,7 @@
|
||||
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
|
||||
id = "portaseeder"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 400)
|
||||
build_path = /obj/item/storage/bag/plants/portaseeder
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -221,7 +221,7 @@
|
||||
desc = "Damn son, where'd you find this?"
|
||||
id = "air_horn"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/bananium = 1000)
|
||||
build_path = /obj/item/bikehorn/airhorn
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK!
|
||||
@@ -231,7 +231,7 @@
|
||||
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
|
||||
id = "magboots"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500)
|
||||
materials = list(/datum/material/iron = 4500, /datum/material/silver = 1500, /datum/material/gold = 2500)
|
||||
build_path = /obj/item/clothing/shoes/magboots
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -241,7 +241,7 @@
|
||||
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
|
||||
id = "scigoggles"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500)
|
||||
build_path = /obj/item/clothing/glasses/science
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -251,7 +251,7 @@
|
||||
desc = "A disk for storing plant genetic data."
|
||||
id = "diskplantgene"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL=200, MAT_GLASS=100)
|
||||
materials = list(/datum/material/iron=200, /datum/material/glass=100)
|
||||
build_path = /obj/item/disk/plantgene
|
||||
category = list("Electronics","Imported")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -261,7 +261,7 @@
|
||||
desc = "A roasting stick for cooking sausages in exotic ovens."
|
||||
id = "roastingstick"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_BLUESPACE = 250)
|
||||
materials = list(/datum/material/iron=1000, /datum/material/glass=500, /datum/material/bluespace = 250)
|
||||
build_path = /obj/item/melee/roastingstick
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -271,7 +271,7 @@
|
||||
desc = "Used to track portable teleportation beacons and targets with embedded tracking implants."
|
||||
id = "locator"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_SILVER = 500)
|
||||
materials = list(/datum/material/iron=1000, /datum/material/glass=500, /datum/material/silver = 500)
|
||||
build_path = /obj/item/locator
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -281,7 +281,7 @@
|
||||
desc = "A refill canister for Donksoft Toy Vendors."
|
||||
id = "donksoft_refill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 25000, MAT_GLASS = 15000, MAT_PLASMA = 20000, MAT_GOLD = 10000, MAT_SILVER = 10000)
|
||||
materials = list(/datum/material/iron = 25000, /datum/material/glass = 15000, /datum/material/plasma = 20000, /datum/material/gold = 10000, /datum/material/silver = 10000)
|
||||
build_path = /obj/item/vending_refill/donksoft
|
||||
category = list("Equipment")
|
||||
|
||||
@@ -289,12 +289,22 @@
|
||||
////////////Janitor Designs//////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
/datum/design/broom
|
||||
name = "Broom"
|
||||
desc = "Just your everyday standard broom."
|
||||
id = "broom"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 600)
|
||||
build_path = /obj/item/twohanded/broom
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
|
||||
/datum/design/mop
|
||||
name = "Mop"
|
||||
desc = "Just your everyday standard mop."
|
||||
id = "mop"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1200, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 1200, /datum/material/glass = 100)
|
||||
build_path = /obj/item/mop
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -304,7 +314,7 @@
|
||||
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
|
||||
id = "advmop"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 2500, /datum/material/glass = 200)
|
||||
build_path = /obj/item/mop/advanced
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -314,7 +324,7 @@
|
||||
desc = "A device to automatically replace lights. Refill with working light bulbs."
|
||||
id = "light_replacer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_SILVER = 150, MAT_GLASS = 3000)
|
||||
materials = list(/datum/material/iron = 1500, /datum/material/silver = 150, /datum/material/glass = 3000)
|
||||
build_path = /obj/item/lightreplacer
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -324,7 +334,7 @@
|
||||
desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage."
|
||||
id = "blutrash"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500)
|
||||
materials = list(/datum/material/gold = 1500, /datum/material/uranium = 250, /datum/material/plasma = 1500)
|
||||
build_path = /obj/item/storage/bag/trash/bluespace
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -334,7 +344,7 @@
|
||||
desc = "A floor buffer that can be attached to vehicular janicarts."
|
||||
id = "buffer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 200)
|
||||
build_path = /obj/item/janiupgrade
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -344,7 +354,7 @@
|
||||
desc = "A spray bottle, with an unscrewable top."
|
||||
id = "spraybottle"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 200)
|
||||
build_path = /obj/item/reagent_containers/spray
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -354,7 +364,7 @@
|
||||
desc = "A trap used to catch space bears and other legged creatures."
|
||||
id = "beartrap"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_TITANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/titanium = 1000)
|
||||
build_path = /obj/item/restraints/legcuffs/beartrap
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -368,7 +378,7 @@
|
||||
desc = "A holograpic projector used to project various warning signs."
|
||||
id = "holosign"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/holosign_creator
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
|
||||
@@ -378,7 +388,7 @@
|
||||
desc = "A holographic projector that creates holographic security barriers."
|
||||
id = "holosignsec"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000)
|
||||
build_path = /obj/item/holosign_creator/security
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -388,7 +398,7 @@
|
||||
desc = "A holographic projector that creates holographic engineering barriers."
|
||||
id = "holosignengi"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000)
|
||||
build_path = /obj/item/holosign_creator/engineering
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -398,7 +408,7 @@
|
||||
desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric conditions."
|
||||
id = "holosignatmos"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000)
|
||||
build_path = /obj/item/holosign_creator/atmos
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -408,7 +418,7 @@
|
||||
desc = "A holographic projector that creates holographic barriers that prevent changes in temperature conditions."
|
||||
id = "holosignfirelock"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 1000, /datum/material/silver = 1000)
|
||||
build_path = /obj/item/holosign_creator/firelock
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -418,7 +428,7 @@
|
||||
desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric and temperature conditions."
|
||||
id = "holosigncombifan"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 7500, MAT_GLASS = 2500, MAT_SILVER = 2500, MAT_GOLD = 2500, MAT_TITANIUM = 1750)
|
||||
materials = list(/datum/material/iron = 7500, /datum/material/glass = 2500, /datum/material/silver = 2500, /datum/material/gold = 2500, /datum/material/titanium = 1750)
|
||||
build_path = /obj/item/holosign_creator/combifan
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -428,7 +438,7 @@
|
||||
desc = "A device which can project temporary forcefields to seal off an area."
|
||||
id = "forcefield_projector"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 2500, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/forcefield_projector
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -438,7 +448,7 @@
|
||||
desc = "PENLITE holobarriers, a device that halts individuals with malicious diseases."
|
||||
build_type = PROTOLATHE
|
||||
build_path = /obj/item/holosign_creator/medical
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 100) //a hint of silver since it can troll 2 antags (bad viros and sentient disease)
|
||||
id = "holobarrier_med"
|
||||
category = list("Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -452,7 +462,7 @@
|
||||
desc = "Allows for the construction of a quantum keycard."
|
||||
id = "quantum_keycard"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 500, MAT_METAL = 500, MAT_SILVER = 500, MAT_BLUESPACE = 1000)
|
||||
materials = list(/datum/material/glass = 500, /datum/material/iron = 500, /datum/material/silver = 500, /datum/material/bluespace = 1000)
|
||||
build_path = /obj/item/quantum_keycard
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -462,7 +472,7 @@
|
||||
desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine."
|
||||
id = "anomaly_neutralizer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GOLD = 2000, MAT_PLASMA = 5000, MAT_URANIUM = 2000)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/gold = 2000, /datum/material/plasma = 5000, /datum/material/uranium = 2000)
|
||||
build_path = /obj/item/anomaly_neutralizer
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -472,7 +482,7 @@
|
||||
desc = "A a electrode attached to a small circuit box that will tell you the pH of a solution."
|
||||
id = "pHmeter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_SILVER = 100, MAT_PLASTIC = 100)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/silver = 100, /datum/material/plastic = 100)
|
||||
build_path = /obj/item/fermichem/pHmeter
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -486,11 +496,29 @@
|
||||
desc = "An experimental suit of armour capable of utilizing an implanted anomaly core to protect the user."
|
||||
id = "reactive_armour"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/diamond = 5000, /datum/material/uranium = 8000, /datum/material/silver = 4500, /datum/material/gold = 5000)
|
||||
build_path = /obj/item/reactive_armour_shell
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/knight_armour
|
||||
name = "Knight Armour"
|
||||
desc = "A royal knight's favorite garments. Can be trimmed by any friendly person."
|
||||
id = "knight_armour"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_CATEGORY_RIGID = 10000)
|
||||
build_path = /obj/item/clothing/suit/armor/riot/knight/greyscale
|
||||
category = list("Imported")
|
||||
|
||||
/datum/design/knight_helmet
|
||||
name = "Knight Helmet"
|
||||
desc = "A royal knight's favorite hat. If you hold it upside down it's actually a bucket."
|
||||
id = "knight_helmet"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_CATEGORY_RIGID = 5000)
|
||||
build_path = /obj/item/clothing/head/helmet/knight/greyscale
|
||||
category = list("Imported")
|
||||
|
||||
/////////////////////////////////////////
|
||||
/////////////Security////////////////////
|
||||
/////////////////////////////////////////
|
||||
@@ -500,57 +528,57 @@
|
||||
desc = "A robust flashlight used by security."
|
||||
id = "seclite"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500)
|
||||
materials = list(/datum/material/iron = 2500)
|
||||
build_path = /obj/item/flashlight/seclite
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
|
||||
/datum/design/detective_scanner
|
||||
name = "Forensic Scanner"
|
||||
desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings."
|
||||
id = "detective_scanner"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 2500, MAT_SILVER = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000, /datum/material/gold = 2500, /datum/material/silver = 2000)
|
||||
build_path = /obj/item/detective_scanner
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
|
||||
/datum/design/pepperspray
|
||||
name = "Pepper Spray"
|
||||
desc = "Manufactured by UhangInc, used to blind and down an opponent quickly. Printed pepper sprays do not contain reagents."
|
||||
id = "pepperspray"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/reagent_containers/spray/pepper/empty
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
|
||||
/datum/design/bola_energy
|
||||
name = "Energy Bola"
|
||||
desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests."
|
||||
id = "bola_energy"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 500, MAT_PLASMA = 500, MAT_TITANIUM = 500)
|
||||
materials = list(/datum/material/silver = 500, /datum/material/plasma = 500, /datum/material/titanium = 500)
|
||||
build_path = /obj/item/restraints/legcuffs/bola/energy
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
|
||||
/datum/design/zipties
|
||||
name = "Zipties"
|
||||
desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use."
|
||||
id = "zipties"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_PLASTIC = 250)
|
||||
materials = list(/datum/material/plastic = 250)
|
||||
build_path = /obj/item/restraints/handcuffs/cable/zipties
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
|
||||
/datum/design/evidencebag
|
||||
name = "Evidence Bag"
|
||||
desc = "An empty evidence bag."
|
||||
id = "evidencebag"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_PLASTIC = 100)
|
||||
materials = list(/datum/material/plastic = 100)
|
||||
build_path = /obj/item/evidencebag
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -564,7 +592,7 @@
|
||||
desc = "A blue print of a early model of the Meteor defence turret."
|
||||
id = "meteor_defence"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 50000, MAT_GLASS = 50000, MAT_SILVER = 8500, MAT_GOLD = 8500, MAT_TITANIUM = 7500, MAT_URANIUM = 7500)
|
||||
materials = list(/datum/material/iron = 50000, /datum/material/glass = 50000, /datum/material/silver = 8500, /datum/material/gold = 8500, /datum/material/titanium = 7500, /datum/material/uranium = 7500)
|
||||
build_path = /obj/machinery/satellite/meteor_shield/sci
|
||||
category = list("Equipment")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -574,7 +602,7 @@
|
||||
desc = "A disk containing debugging programming to solve and monitor meteors more effectively."
|
||||
id = "meteor_disk"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_GLASS = 1500, MAT_SILVER = 2500, MAT_GOLD = 1000)
|
||||
materials = list(/datum/material/iron = 1500, /datum/material/glass = 1500, /datum/material/silver = 2500, /datum/material/gold = 1000)
|
||||
build_path = /obj/item/disk/meteor
|
||||
category = list("Electronics")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
name = "Host Scan"
|
||||
desc = "The nanites display a detailed readout of a body scan to the host."
|
||||
id = "selfscan_nanites"
|
||||
program_type = /datum/nanite_program/triggered/self_scan
|
||||
program_type = /datum/nanite_program/self_scan
|
||||
category = list("Utility Nanites")
|
||||
|
||||
/datum/design/nanites/dermal_button
|
||||
@@ -67,7 +67,6 @@
|
||||
program_type = /datum/nanite_program/stealth
|
||||
category = list("Utility Nanites")
|
||||
|
||||
|
||||
/datum/design/nanites/reduced_diagnostics
|
||||
name = "Reduced Diagnostics"
|
||||
desc = "Disables some high-cost diagnostics in the nanites, making them unable to communicate their program list to portable scanners. \
|
||||
@@ -80,7 +79,7 @@
|
||||
name = "Subdermal ID"
|
||||
desc = "The nanites store the host's ID access rights in a subdermal magnetic strip. Updates when triggered, copying the host's current access."
|
||||
id = "access_nanites"
|
||||
program_type = /datum/nanite_program/triggered/access
|
||||
program_type = /datum/nanite_program/access
|
||||
category = list("Utility Nanites")
|
||||
|
||||
/datum/design/nanites/relay
|
||||
@@ -106,9 +105,9 @@
|
||||
|
||||
/datum/design/nanites/emp
|
||||
name = "Electromagnetic Resonance"
|
||||
desc = "The nanites cause an elctromagnetic pulse around the host when triggered. Will corrupt other nanite programs!"
|
||||
desc = "The nanites cause an electromagnetic pulse around the host when triggered. Will corrupt other nanite programs!"
|
||||
id = "emp_nanites"
|
||||
program_type = /datum/nanite_program/triggered/emp
|
||||
program_type = /datum/nanite_program/emp
|
||||
category = list("Utility Nanites")
|
||||
|
||||
/datum/design/nanites/spreading
|
||||
@@ -119,6 +118,13 @@
|
||||
program_type = /datum/nanite_program/spreading
|
||||
category = list("Utility Nanites")
|
||||
|
||||
/datum/design/nanites/nanite_sting
|
||||
name = "Nanite Sting"
|
||||
desc = "When triggered, projects a nearly invisible spike of nanites that attempts to infect a nearby non-host with a copy of the host's nanites cluster."
|
||||
id = "nanite_sting_nanites"
|
||||
program_type = /datum/nanite_program/nanite_sting
|
||||
category = list("Utility Nanites")
|
||||
|
||||
/datum/design/nanites/mitosis
|
||||
name = "Mitosis"
|
||||
desc = "The nanites gain the ability to self-replicate, using bluespace to power the process, instead of drawing from a template. This rapidly speeds up the replication rate,\
|
||||
@@ -197,7 +203,7 @@
|
||||
name = "Defibrillation"
|
||||
desc = "The nanites, when triggered, send a defibrillating shock to the host's heart."
|
||||
id = "defib_nanites"
|
||||
program_type = /datum/nanite_program/triggered/defib
|
||||
program_type = /datum/nanite_program/defib
|
||||
category = list("Medical Nanites")
|
||||
|
||||
|
||||
@@ -242,7 +248,7 @@
|
||||
name = "Adrenaline Burst"
|
||||
desc = "The nanites cause a burst of adrenaline when triggered, waking the host from stuns and temporarily increasing their speed."
|
||||
id = "adrenaline_nanites"
|
||||
program_type = /datum/nanite_program/triggered/adrenaline
|
||||
program_type = /datum/nanite_program/adrenaline
|
||||
category = list("Augmentation Nanites")
|
||||
|
||||
/datum/design/nanites/mindshield
|
||||
@@ -366,21 +372,21 @@
|
||||
name = "Heart-Stopper"
|
||||
desc = "Stops the host's heart when triggered; restarts it if triggered again."
|
||||
id = "heartstop_nanites"
|
||||
program_type = /datum/nanite_program/triggered/heart_stop
|
||||
program_type = /datum/nanite_program/heart_stop
|
||||
category = list("Weaponized Nanites")
|
||||
|
||||
/datum/design/nanites/explosive
|
||||
name = "Chain Detonation"
|
||||
desc = "Blows up all the nanites inside the host in a chain reaction when triggered."
|
||||
id = "explosive_nanites"
|
||||
program_type = /datum/nanite_program/triggered/explosive
|
||||
program_type = /datum/nanite_program/explosive
|
||||
category = list("Weaponized Nanites")
|
||||
|
||||
/datum/design/nanites/mind_control
|
||||
name = "Mind Control"
|
||||
desc = "The nanites imprint an absolute directive onto the host's brain while they're active."
|
||||
id = "mindcontrol_nanites"
|
||||
program_type = /datum/nanite_program/triggered/comm/mind_control
|
||||
program_type = /datum/nanite_program/comm/mind_control
|
||||
category = list("Weaponized Nanites")
|
||||
|
||||
////////////////////SUPPRESSION NANITES//////////////////////////////////////
|
||||
@@ -389,21 +395,21 @@
|
||||
name = "Electric Shock"
|
||||
desc = "The nanites shock the host when triggered. Destroys a large amount of nanites!"
|
||||
id = "shock_nanites"
|
||||
program_type = /datum/nanite_program/triggered/shocking
|
||||
program_type = /datum/nanite_program/shocking
|
||||
category = list("Suppression Nanites")
|
||||
|
||||
/datum/design/nanites/stun
|
||||
name = "Neural Shock"
|
||||
desc = "The nanites pulse the host's nerves when triggered, inapacitating them for a short period."
|
||||
id = "stun_nanites"
|
||||
program_type = /datum/nanite_program/triggered/stun
|
||||
program_type = /datum/nanite_program/stun
|
||||
category = list("Suppression Nanites")
|
||||
|
||||
/datum/design/nanites/sleepy
|
||||
name = "Sleep Induction"
|
||||
desc = "The nanites cause rapid narcolepsy when triggered."
|
||||
id = "sleep_nanites"
|
||||
program_type = /datum/nanite_program/triggered/sleepy
|
||||
program_type = /datum/nanite_program/sleepy
|
||||
category = list("Suppression Nanites")
|
||||
|
||||
/datum/design/nanites/paralyzing
|
||||
@@ -445,21 +451,21 @@
|
||||
name = "Skull Echo"
|
||||
desc = "The nanites echo a synthesized message inside the host's skull."
|
||||
id = "voice_nanites"
|
||||
program_type = /datum/nanite_program/triggered/comm/voice
|
||||
program_type = /datum/nanite_program/comm/voice
|
||||
category = list("Suppression Nanites")
|
||||
|
||||
/datum/design/nanites/speech
|
||||
name = "Forced Speech"
|
||||
desc = "The nanites force the host to say a pre-programmed sentence when triggered."
|
||||
id = "speech_nanites"
|
||||
program_type = /datum/nanite_program/triggered/comm/speech
|
||||
program_type = /datum/nanite_program/comm/speech
|
||||
category = list("Suppression Nanites")
|
||||
|
||||
/datum/design/nanites/hallucination
|
||||
name = "Hallucination"
|
||||
desc = "The nanites make the host see and hear things that aren't real."
|
||||
id = "hallucination_nanites"
|
||||
program_type = /datum/nanite_program/triggered/comm/hallucination
|
||||
program_type = /datum/nanite_program/comm/hallucination
|
||||
category = list("Suppression Nanites")
|
||||
|
||||
/datum/design/nanites/good_mood
|
||||
@@ -513,9 +519,42 @@
|
||||
program_type = /datum/nanite_program/sensor/voice
|
||||
category = list("Sensor Nanites")
|
||||
|
||||
/datum/design/nanites/sensor__nanite_volume
|
||||
/datum/design/nanites/sensor_nanite_volume
|
||||
name = "Nanite Volume Sensor"
|
||||
desc = "The nanites receive a signal when the nanite supply is above/below a certain percentage."
|
||||
id = "sensor_nanite_volume"
|
||||
program_type = /datum/nanite_program/sensor/nanite_volume
|
||||
category = list("Sensor Nanites")
|
||||
category = list("Sensor Nanites")
|
||||
|
||||
////////////////////NANITE PROTOCOLS//////////////////////////////////////
|
||||
//Note about the category name: The UI cuts the last 8 characters from the category name to remove the " Nanites" in the other categories
|
||||
//Because of this, Protocols was getting cut down to "P", so i had to add some padding
|
||||
/*
|
||||
/datum/design/nanites/kickstart
|
||||
name = "Kickstart Protocol"
|
||||
desc = "Replication Protocol: the nanites focus on early growth, heavily boosting replication rate for a few minutes after the initial implantation."
|
||||
id = "kickstart_nanites"
|
||||
program_type = /datum/nanite_program/protocol/kickstart
|
||||
category = list("Protocols_Nanites")
|
||||
|
||||
/datum/design/nanites/factory
|
||||
name = "Factory Protocol"
|
||||
desc = "Replication Protocol: the nanites build a factory matrix within the host, gradually increasing replication speed over time. The factory decays if the protocol is not active."
|
||||
id = "factory_nanites"
|
||||
program_type = /datum/nanite_program/protocol/factory
|
||||
category = list("Protocols_Nanites")
|
||||
|
||||
/datum/design/nanites/tinker
|
||||
name = "Tinker Protocol"
|
||||
desc = "Replication Protocol: the nanites learn to use metallic material in the host's bloodstream to speed up the replication process."
|
||||
id = "tinker_nanites"
|
||||
program_type = /datum/nanite_program/protocol/tinker
|
||||
category = list("Protocols_Nanites")
|
||||
|
||||
/datum/design/nanites/offline
|
||||
name = "Offline Production Protocol"
|
||||
desc = "Replication Protocol: while the host is asleep or otherwise unconcious, the nanites exploit the reduced interference to replicate more quickly."
|
||||
id = "offline_nanites"
|
||||
program_type = /datum/nanite_program/protocol/offline
|
||||
category = list("Protocols_Nanites")
|
||||
*/
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
desc = "A basic power cell that holds 1 MJ of energy."
|
||||
id = "basic_cell"
|
||||
build_type = PROTOLATHE | AUTOLATHE |MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 700, /datum/material/glass = 50)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/empty
|
||||
category = list("Misc","Power Designs","Machinery","initial")
|
||||
@@ -18,7 +18,7 @@
|
||||
desc = "A power cell that holds 10 MJ of energy."
|
||||
id = "high_cell"
|
||||
build_type = PROTOLATHE | AUTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 60)
|
||||
materials = list(/datum/material/iron = 700, /datum/material/glass = 60)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/high/empty
|
||||
category = list("Misc","Power Designs")
|
||||
@@ -29,7 +29,7 @@
|
||||
desc = "A power cell that holds 20 MJ of energy."
|
||||
id = "super_cell"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GLASS = 70)
|
||||
materials = list(/datum/material/iron = 700, /datum/material/glass = 70)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/super/empty
|
||||
category = list("Misc","Power Designs")
|
||||
@@ -40,7 +40,7 @@
|
||||
desc = "A power cell that holds 30 MJ of energy."
|
||||
id = "hyper_cell"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 700, MAT_GOLD = 150, MAT_SILVER = 150, MAT_GLASS = 80)
|
||||
materials = list(/datum/material/iron = 700, /datum/material/gold = 150, /datum/material/silver = 150, /datum/material/glass = 80)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/hyper/empty
|
||||
category = list("Misc","Power Designs")
|
||||
@@ -51,7 +51,7 @@
|
||||
desc = "A power cell that holds 40 MJ of energy."
|
||||
id = "bluespace_cell"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 800, MAT_GOLD = 120, MAT_GLASS = 160, MAT_DIAMOND = 160, MAT_TITANIUM = 300, MAT_BLUESPACE = 100)
|
||||
materials = list(/datum/material/iron = 800, /datum/material/gold = 120, /datum/material/glass = 160, /datum/material/diamond = 160, /datum/material/titanium = 300, /datum/material/bluespace = 100)
|
||||
construction_time=100
|
||||
build_path = /obj/item/stock_parts/cell/bluespace/empty
|
||||
category = list("Misc","Power Designs")
|
||||
@@ -62,7 +62,7 @@
|
||||
desc = "The NT-75 Electromagnetic Power Inducer can wirelessly induce electric charge in an object, allowing you to recharge power cells without having to remove them."
|
||||
id = "inducer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/inducer/sci
|
||||
category = list("Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -72,7 +72,7 @@
|
||||
desc = "The improved NT-8475 Electromagnetic Power Inducer can this one has been SCIENCED to allow for combat. It still comes printed with SCIENCED colors!"
|
||||
id = "combatinducer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 13000, MAT_GLASS = 10000, MAT_SILVER = 1500, MAT_GOLD = 1250, MAT_DIAMOND = 500, MAT_TITANIUM = 1200)
|
||||
materials = list(/datum/material/iron = 13000, /datum/material/glass = 10000, /datum/material/silver = 1500, /datum/material/gold = 1250, /datum/material/diamond = 500, /datum/material/titanium = 1200)
|
||||
build_path = /obj/item/inducer/sci/combat/dry
|
||||
category = list("Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
name = "Plasma + Iron alloy"
|
||||
id = "plasteel"
|
||||
build_type = SMELTER | PROTOLATHE
|
||||
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/plasteel
|
||||
category = list("initial", "Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -14,7 +14,7 @@
|
||||
name = "Plasma + Titanium alloy"
|
||||
id = "plastitanium"
|
||||
build_type = SMELTER | PROTOLATHE
|
||||
materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/titanium = MINERAL_MATERIAL_AMOUNT, /datum/material/plasma = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/mineral/plastitanium
|
||||
category = list("initial", "Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -24,7 +24,7 @@
|
||||
name = "Plasma + Glass alloy"
|
||||
id = "plasmaglass"
|
||||
build_type = SMELTER | PROTOLATHE
|
||||
materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/plasmaglass
|
||||
category = list("initial", "Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -34,7 +34,7 @@
|
||||
name = "Plasma + Metal + Glass alloy"
|
||||
id = "plasmareinforcedglass"
|
||||
build_type = SMELTER | PROTOLATHE
|
||||
materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_METAL = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/iron = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/plasmarglass
|
||||
category = list("initial", "Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -44,7 +44,7 @@
|
||||
name = "Titanium + Glass alloy"
|
||||
id = "titaniumglass"
|
||||
build_type = SMELTER | PROTOLATHE
|
||||
materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/titanium = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/titaniumglass
|
||||
category = list("initial", "Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -54,7 +54,7 @@
|
||||
name = "Plasma + Titanium + Glass alloy"
|
||||
id = "plastitaniumglass"
|
||||
build_type = SMELTER | PROTOLATHE
|
||||
materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS = MINERAL_MATERIAL_AMOUNT)
|
||||
materials = list(/datum/material/plasma = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/titanium = MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = MINERAL_MATERIAL_AMOUNT)
|
||||
build_path = /obj/item/stack/sheet/plastitaniumglass
|
||||
category = list("initial", "Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -65,7 +65,7 @@
|
||||
desc = "A sheet of reverse-engineered alien alloy."
|
||||
id = "alienalloy"
|
||||
build_type = PROTOLATHE | SMELTER
|
||||
materials = list(MAT_METAL = 4000, MAT_PLASMA = 4000)
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/plasma = 4000)
|
||||
build_path = /obj/item/stack/sheet/mineral/abductor
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
|
||||
id = "rped"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000) //hardcore
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000) //hardcore
|
||||
build_path = /obj/item/storage/part_replacer
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -17,7 +17,7 @@
|
||||
desc = "Powered by bluespace technology, this RPED variant can upgrade buildings from a distance, without needing to remove the panel first."
|
||||
id = "bs_rped"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 5000, MAT_SILVER = 2500) //hardcore
|
||||
materials = list(/datum/material/iron = 15000, /datum/material/glass = 5000, /datum/material/silver = 2500) //hardcore
|
||||
build_path = /obj/item/storage/part_replacer/bluespace
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -28,7 +28,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_capacitor"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/glass = 100)
|
||||
build_path = /obj/item/stock_parts/capacitor
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -39,7 +39,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_capacitor"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
|
||||
materials = list(/datum/material/iron = 150, /datum/material/glass = 150)
|
||||
build_path = /obj/item/stock_parts/capacitor/adv
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -50,7 +50,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "super_capacitor"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100)
|
||||
materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/gold = 100)
|
||||
build_path = /obj/item/stock_parts/capacitor/super
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -61,7 +61,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "quadratic_capacitor"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_GOLD = 100, MAT_DIAMOND = 100)
|
||||
materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/gold = 100, /datum/material/diamond = 100)
|
||||
build_path = /obj/item/stock_parts/capacitor/quadratic
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -73,7 +73,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_scanning"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/glass = 50)
|
||||
build_path = /obj/item/stock_parts/scanning_module
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -84,7 +84,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_scanning"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 150, /datum/material/glass = 100)
|
||||
build_path = /obj/item/stock_parts/scanning_module/adv
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -95,7 +95,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "phasic_scanning"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_SILVER = 60)
|
||||
materials = list(/datum/material/iron = 200, /datum/material/glass = 150, /datum/material/silver = 60)
|
||||
build_path = /obj/item/stock_parts/scanning_module/phasic
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -106,7 +106,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "triphasic_scanning"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_DIAMOND = 30, MAT_BLUESPACE = 30)
|
||||
materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/diamond = 30, /datum/material/bluespace = 30)
|
||||
build_path = /obj/item/stock_parts/scanning_module/triphasic
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -118,7 +118,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "micro_mani"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100)
|
||||
materials = list(/datum/material/iron = 100)
|
||||
build_path = /obj/item/stock_parts/manipulator
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -129,7 +129,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "nano_mani"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
materials = list(/datum/material/iron = 150)
|
||||
build_path = /obj/item/stock_parts/manipulator/nano
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -140,7 +140,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "pico_mani"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
materials = list(/datum/material/iron = 200)
|
||||
build_path = /obj/item/stock_parts/manipulator/pico
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -151,7 +151,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "femto_mani"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_DIAMOND = 30, MAT_TITANIUM = 30)
|
||||
materials = list(/datum/material/iron = 200, /datum/material/diamond = 30, /datum/material/titanium = 30)
|
||||
build_path = /obj/item/stock_parts/manipulator/femto
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -163,7 +163,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_micro_laser"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GLASS = 50)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/glass = 50)
|
||||
build_path = /obj/item/stock_parts/micro_laser
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -174,7 +174,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "high_micro_laser"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150, MAT_GLASS = 100)
|
||||
materials = list(/datum/material/iron = 150, /datum/material/glass = 100)
|
||||
build_path = /obj/item/stock_parts/micro_laser/high
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -185,7 +185,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "ultra_micro_laser"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 150, MAT_URANIUM = 60)
|
||||
materials = list(/datum/material/iron = 200, /datum/material/glass = 150, /datum/material/uranium = 60)
|
||||
build_path = /obj/item/stock_parts/micro_laser/ultra
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -196,7 +196,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "quadultra_micro_laser"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_URANIUM = 100, MAT_DIAMOND = 60)
|
||||
materials = list(/datum/material/iron = 200, /datum/material/glass = 200, /datum/material/uranium = 100, /datum/material/diamond = 60)
|
||||
build_path = /obj/item/stock_parts/micro_laser/quadultra
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -207,7 +207,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "basic_matter_bin"
|
||||
build_type = PROTOLATHE | AUTOLATHE
|
||||
materials = list(MAT_METAL = 100)
|
||||
materials = list(/datum/material/iron = 100)
|
||||
build_path = /obj/item/stock_parts/matter_bin
|
||||
category = list("Stock Parts","Machinery","initial")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -218,7 +218,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "adv_matter_bin"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 150)
|
||||
materials = list(/datum/material/iron = 150)
|
||||
build_path = /obj/item/stock_parts/matter_bin/adv
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -229,7 +229,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "super_matter_bin"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
materials = list(/datum/material/iron = 200)
|
||||
build_path = /obj/item/stock_parts/matter_bin/super
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -240,7 +240,7 @@
|
||||
desc = "A stock part used in the construction of various devices."
|
||||
id = "bluespace_matter_bin"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 250, MAT_DIAMOND = 100, MAT_BLUESPACE = 100)
|
||||
materials = list(/datum/material/iron = 250, /datum/material/diamond = 100, /datum/material/bluespace = 100)
|
||||
build_path = /obj/item/stock_parts/matter_bin/bluespace
|
||||
category = list("Stock Parts")
|
||||
lathe_time_factor = 0.2
|
||||
@@ -252,7 +252,7 @@
|
||||
desc = "A compact module capable of sensing extradimensional activity."
|
||||
id = "s-ansible"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 100)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/silver = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/ansible
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -262,7 +262,7 @@
|
||||
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
||||
id = "s-filter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 100)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/silver = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/filter
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -272,7 +272,7 @@
|
||||
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
|
||||
id = "s-amplifier"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GOLD = 100, MAT_URANIUM = 100)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/gold = 100, /datum/material/uranium = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/amplifier
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -282,7 +282,7 @@
|
||||
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
|
||||
id = "s-treatment"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_SILVER = 200)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/silver = 200)
|
||||
build_path = /obj/item/stock_parts/subspace/treatment
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -292,7 +292,7 @@
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
id = "s-analyzer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 100, MAT_GOLD = 100)
|
||||
materials = list(/datum/material/iron = 100, /datum/material/gold = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/analyzer
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -302,7 +302,7 @@
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
id = "s-crystal"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 800, MAT_SILVER = 100, MAT_GOLD = 100)
|
||||
materials = list(/datum/material/glass = 800, /datum/material/silver = 100, /datum/material/gold = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/crystal
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -312,7 +312,7 @@
|
||||
desc = "A large piece of equipment used to open a window into the subspace dimension."
|
||||
id = "s-transmitter"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GLASS = 100, MAT_SILVER = 100, MAT_URANIUM = 100)
|
||||
materials = list(/datum/material/glass = 100, /datum/material/silver = 100, /datum/material/uranium = 100)
|
||||
build_path = /obj/item/stock_parts/subspace/transmitter
|
||||
category = list("Stock Parts")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
desc = "Adds the computer frame and machine frame to the RCD."
|
||||
id = "rcd_upgrade_frames"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 1500, MAT_TITANIUM = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 1500, /datum/material/titanium = 2000)
|
||||
build_path = /obj/item/rcd_upgrade/frames
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -17,7 +17,7 @@
|
||||
desc = "Adds the simple circuits to the RCD."
|
||||
id = "rcd_upgrade_simple_circuits"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 2500, MAT_SILVER = 1500, MAT_TITANIUM = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 1500, /datum/material/titanium = 2000)
|
||||
build_path = /obj/item/rcd_upgrade/simple_circuits
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -27,7 +27,7 @@
|
||||
desc = "A tool that can construct and deconstruct walls, airlocks and floors on the fly."
|
||||
id = "rcd_loaded"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 36000) // costs more than what it did in the autolathe, this one comes loaded.
|
||||
materials = list(/datum/material/iron = 36000) // costs more than what it did in the autolathe, this one comes loaded.
|
||||
build_path = /obj/item/construction/rcd/loaded
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -37,7 +37,7 @@
|
||||
desc = "A tool that can construct and deconstruct pipes on the fly."
|
||||
id = "rpd"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 75000, MAT_GLASS = 37500)
|
||||
materials = list(/datum/material/iron = 75000, /datum/material/glass = 37500)
|
||||
build_path = /obj/item/pipe_dispenser
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -47,7 +47,7 @@
|
||||
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
|
||||
id = "handdrill"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
|
||||
materials = list(/datum/material/iron = 3500, /datum/material/silver = 1500, /datum/material/titanium = 2500)
|
||||
build_path = /obj/item/screwdriver/power
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -58,7 +58,7 @@
|
||||
id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP
|
||||
build_path = /obj/item/crowbar/power
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
|
||||
materials = list(/datum/material/iron = 4500, /datum/material/silver = 2500, /datum/material/titanium = 3500)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
desc = "An experimental welder capable of self-fuel generation."
|
||||
id = "exwelder"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 500, /datum/material/plasma = 1500, /datum/material/uranium = 200)
|
||||
build_path = /obj/item/weldingtool/experimental
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
@@ -82,7 +82,7 @@
|
||||
id = "alien_wrench"
|
||||
build_path = /obj/item/wrench/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
id = "alien_wirecutters"
|
||||
build_path = /obj/item/wirecutters/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
id = "alien_screwdriver"
|
||||
build_path = /obj/item/screwdriver/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
id = "alien_crowbar"
|
||||
build_path = /obj/item/crowbar/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
id = "alien_welder"
|
||||
build_path = /obj/item/weldingtool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 5000, /datum/material/titanium = 2000, /datum/material/diamond = 2000)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
id = "alien_multitool"
|
||||
build_path = /obj/item/multitool/abductor
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 5000, /datum/material/titanium = 2000, /datum/material/diamond = 2000)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
id = "alien_scalpel"
|
||||
build_path = /obj/item/scalpel/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
id = "alien_hemostat"
|
||||
build_path = /obj/item/hemostat/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
id = "alien_retractor"
|
||||
build_path = /obj/item/retractor/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
id = "alien_saw"
|
||||
build_path = /obj/item/circular_saw/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 1500)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
id = "alien_drill"
|
||||
build_path = /obj/item/surgicaldrill/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 1500)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 1500)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
id = "alien_cautery"
|
||||
build_path = /obj/item/cautery/alien
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 1500, MAT_PLASMA = 500, MAT_TITANIUM = 1500)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/silver = 1500, /datum/material/plasma = 500, /datum/material/titanium = 1500)
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
desc = "A large surgery drape made of plastic."
|
||||
id = "drapes"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_PLASTIC = 2500)
|
||||
materials = list(/datum/material/plastic = 2500)
|
||||
build_path = /obj/item/surgical_drapes
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -220,7 +220,7 @@
|
||||
desc = "An almagation of rods and gears, able to function as both a surgical clamp and retractor. "
|
||||
id = "retractor_adv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 1500, MAT_GOLD = 1000)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/silver = 1500, /datum/material/gold = 1000)
|
||||
build_path = /obj/item/retractor/advanced
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -230,7 +230,7 @@
|
||||
desc = "It projects a high power laser used for medical applications."
|
||||
id = "surgicaldrill_adv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 2500, MAT_SILVER = 6000, MAT_GOLD = 5500, MAT_DIAMOND = 3500)
|
||||
materials = list(/datum/material/iron = 2500, /datum/material/glass = 2500, /datum/material/silver = 6000, /datum/material/gold = 5500, /datum/material/diamond = 3500)
|
||||
build_path = /obj/item/surgicaldrill/advanced
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -240,7 +240,7 @@
|
||||
desc = "An advanced scalpel which uses laser technology to cut."
|
||||
id = "scalpel_adv"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_GLASS = 1500, MAT_SILVER = 4000, MAT_GOLD = 2500)
|
||||
materials = list(/datum/material/iron = 1500, /datum/material/glass = 1500, /datum/material/silver = 4000, /datum/material/gold = 2500)
|
||||
build_path = /obj/item/scalpel/advanced
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
desc = "Designed to quickly reload revolvers. TRAC bullets embed a tracking implant within the target's body."
|
||||
id = "c38_trac"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 20000, MAT_SILVER = 5000, MAT_GOLD = 1000)
|
||||
materials = list(/datum/material/iron = 20000, /datum/material/silver = 5000, /datum/material/gold = 1000)
|
||||
build_path = /obj/item/ammo_box/c38/trac
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -32,7 +32,7 @@
|
||||
desc = "Designed to quickly reload revolvers. Hot Shot bullets contain an incendiary payload."
|
||||
id = "c38_hotshot"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 20000, MAT_PLASMA = 5000)
|
||||
materials = list(/datum/material/iron = 20000, /datum/material/plasma = 5000)
|
||||
build_path = /obj/item/ammo_box/c38/hotshot
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -42,7 +42,7 @@
|
||||
desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload."
|
||||
id = "c38_iceblox"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 20000, MAT_PLASMA = 5000)
|
||||
materials = list(/datum/material/iron = 20000, /datum/material/plasma = 5000)
|
||||
build_path = /obj/item/ammo_box/c38/iceblox
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -56,7 +56,7 @@
|
||||
desc = "A 24-round magazine for the Magrifle."
|
||||
id = "mag_magrifle"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 8000, MAT_SILVER = 1000)
|
||||
materials = list(/datum/material/iron = 8000, /datum/material/silver = 1000)
|
||||
build_path = /obj/item/ammo_box/magazine/mmag/lethal
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -65,7 +65,7 @@
|
||||
name = "Magrifle Magazine (Non-Lethal)"
|
||||
desc = "A 24- round non-lethal magazine for the Magrifle."
|
||||
id = "mag_magrifle_nl"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/silver = 500, /datum/material/titanium = 500)
|
||||
build_path = /obj/item/ammo_box/magazine/mmag
|
||||
|
||||
/datum/design/mag_magpistol
|
||||
@@ -73,7 +73,7 @@
|
||||
desc = "A 14 round magazine for the Magpistol."
|
||||
id = "mag_magpistol"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_SILVER = 500)
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/silver = 500)
|
||||
build_path = /obj/item/ammo_box/magazine/mmag/small/lethal
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -82,7 +82,7 @@
|
||||
name = "Magpistol Magazine (Non-Lethal)"
|
||||
desc = "A 14 round non-lethal magazine for the Magpistol."
|
||||
id = "mag_magpistol_nl"
|
||||
materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/silver = 250, /datum/material/titanium = 250)
|
||||
build_path = /obj/item/ammo_box/magazine/mmag/small
|
||||
|
||||
//////////////
|
||||
@@ -94,7 +94,7 @@
|
||||
desc = "A 20 round magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000)
|
||||
materials = list(/datum/material/iron = 4000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -103,7 +103,7 @@
|
||||
name = "WT-550 Semi-Auto SMG Armour Piercing Magazine (4.6x30mm AP)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg_ap"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/silver = 600)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtap
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
name = "WT-550 Semi-Auto SMG Incendiary Magazine (4.6x30mm IC)"
|
||||
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg_ic"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/silver = 600, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
name = "WT-550 Semi-Auto SMG Uranium Magazine (4.6x30mm TX)"
|
||||
desc = "A 20 round uranium tipped magazine for the out of date security WT-550 Semi-Auto SMG."
|
||||
id = "mag_oldsmg_tx"
|
||||
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000)
|
||||
materials = list(/datum/material/iron = 6000, /datum/material/silver = 600, /datum/material/uranium = 2000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wttx
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
name = "WT-550 Semi-Auto SMG rubberbullets Magazine (4.6x30mm rubber)"
|
||||
desc = "A 20 round rubber shots magazine for the out of date security WT-550 Semi-Auto SMG"
|
||||
id = "mag_oldsmg_rubber"
|
||||
materials = list(MAT_METAL = 6000)
|
||||
materials = list(/datum/material/iron = 6000)
|
||||
build_path = /obj/item/ammo_box/magazine/wt550m9/wtrubber
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
desc = "A stunning shell for a shotgun."
|
||||
id = "stunshell"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 200)
|
||||
materials = list(/datum/material/iron = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/stunslug
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -186,7 +186,7 @@
|
||||
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
|
||||
id = "techshotshell"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 200)
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 200)
|
||||
build_path = /obj/item/ammo_casing/shotgun/techshell
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -196,7 +196,7 @@
|
||||
desc = "A shotgun dart designed with similar internals to that of a cryostatis beaker, allowing reagents to not react when inside."
|
||||
id = "shotgundartcryostatis"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3500)
|
||||
materials = list(/datum/material/iron = 3500)
|
||||
build_path = /obj/item/ammo_casing/shotgun/dart/noreact
|
||||
category = list("Ammo")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -210,7 +210,7 @@
|
||||
desc = "This safety firing pin allows firearms to be operated within proximity to a firing range."
|
||||
id = "pin_testing"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 300)
|
||||
materials = list(/datum/material/iron = 500, /datum/material/glass = 300)
|
||||
build_path = /obj/item/firing_pin/test_range
|
||||
category = list("Firing Pins")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -220,7 +220,7 @@
|
||||
desc = "This is a security firing pin which only authorizes users who are mindshield-implanted."
|
||||
id = "pin_loyalty"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 600, MAT_DIAMOND = 600, MAT_URANIUM = 200)
|
||||
materials = list(/datum/material/silver = 600, /datum/material/diamond = 600, /datum/material/uranium = 200)
|
||||
build_path = /obj/item/firing_pin/implant/mindshield
|
||||
category = list("Firing Pins")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -230,7 +230,7 @@
|
||||
desc = "This is a security firing pin which only authorizes users who are off station."
|
||||
id = "pin_away"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 1500, MAT_GLASS = 2000)
|
||||
materials = list(/datum/material/iron = 1500, /datum/material/glass = 2000)
|
||||
build_path = /obj/item/firing_pin/away
|
||||
category = list("Firing Pins")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -244,7 +244,7 @@
|
||||
desc = "Beefed up version of a standard laser gun."
|
||||
id = "lasercarbine"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 10000, MAT_GOLD = 2500, MAT_SILVER = 2500)
|
||||
materials = list(/datum/material/iron = 15000, /datum/material/glass = 10000, /datum/material/gold = 2500, /datum/material/silver = 2500)
|
||||
build_path = /obj/item/gun/energy/laser/carbine/nopin
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -254,7 +254,7 @@
|
||||
desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers."
|
||||
id = "stunrevolver"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 10000, MAT_SILVER = 10000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 10000, /datum/material/silver = 10000)
|
||||
build_path = /obj/item/gun/energy/tesla_revolver
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -264,7 +264,7 @@
|
||||
desc = "An energy gun with an experimental miniaturized reactor."
|
||||
id = "nuclear_gun"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 3000, MAT_TITANIUM = 1000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 2000, /datum/material/uranium = 3000, /datum/material/titanium = 1000)
|
||||
build_path = /obj/item/gun/energy/e_gun/nuclear
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -274,7 +274,7 @@
|
||||
desc = "A powerful long ranged anti-material rifle that fires charged particle beams to obliterate targets."
|
||||
id = "beamrifle"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 5000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 5000, /datum/material/diamond = 5000, /datum/material/uranium = 8000, /datum/material/silver = 4500, /datum/material/gold = 5000)
|
||||
build_path = /obj/item/gun/energy/beam_rifle
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -284,7 +284,7 @@
|
||||
desc = "Your opponent will bubble into a messy pile of goop."
|
||||
id = "decloner"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000)
|
||||
materials = list(/datum/material/gold = 5000,/datum/material/uranium = 10000)
|
||||
reagents_list = list(/datum/reagent/toxin/mutagen = 40)
|
||||
build_path = /obj/item/gun/energy/decloner
|
||||
category = list("Weapons")
|
||||
@@ -295,7 +295,7 @@
|
||||
desc = "A gun that fires many syringes."
|
||||
id = "rapidsyringe"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/gun/syringe/rapidsyringe
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
@@ -305,7 +305,7 @@
|
||||
desc = "A gun that shoots temperature beam like projectiles to change temperature."
|
||||
id = "temp_gun"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 500, /datum/material/silver = 3000)
|
||||
build_path = /obj/item/gun/energy/temperature
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -315,7 +315,7 @@
|
||||
desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life."
|
||||
id = "flora_gun"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/glass = 500)
|
||||
reagents_list = list(/datum/reagent/radium = 20)
|
||||
build_path = /obj/item/gun/energy/floragun
|
||||
category = list("Weapons")
|
||||
@@ -326,7 +326,7 @@
|
||||
desc = "Not quite as menacing as it sounds"
|
||||
id = "xray_laser"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_GOLD = 5000, MAT_URANIUM = 4000, MAT_METAL = 5000, MAT_TITANIUM = 2000, MAT_BLUESPACE = 2000)
|
||||
materials = list(/datum/material/gold = 5000, /datum/material/uranium = 4000, /datum/material/iron = 5000, /datum/material/titanium = 2000, /datum/material/bluespace = 2000)
|
||||
build_path = /obj/item/gun/energy/xray
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -336,7 +336,7 @@
|
||||
desc = "How to dismantle a cyborg : The gun."
|
||||
id = "ioncarbine"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 6000, MAT_METAL = 8000, MAT_URANIUM = 2000)
|
||||
materials = list(/datum/material/silver = 6000, /datum/material/iron = 8000, /datum/material/uranium = 2000)
|
||||
build_path = /obj/item/gun/energy/ionrifle/carbine
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -346,7 +346,7 @@
|
||||
desc = "A projector that emits high density quantum-coupled bluespace beams."
|
||||
id = "wormholeprojector"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 2000, MAT_METAL = 5000, MAT_DIAMOND = 2000, MAT_BLUESPACE = 3000)
|
||||
materials = list(/datum/material/silver = 2000, /datum/material/iron = 5000, /datum/material/diamond = 2000, /datum/material/bluespace = 3000)
|
||||
build_path = /obj/item/gun/energy/wormhole_projector
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -356,7 +356,7 @@
|
||||
desc = "A multi-mode device that blasts one-point bluespace-gravitational bolts that locally distort gravity."
|
||||
id = "gravitygun"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_SILVER = 8000, MAT_URANIUM = 8000, MAT_GLASS = 12000, MAT_METAL = 12000, MAT_DIAMOND = 3000, MAT_BLUESPACE = 3000)
|
||||
materials = list(/datum/material/silver = 8000, /datum/material/uranium = 8000, /datum/material/glass = 12000, /datum/material/iron = 12000, /datum/material/diamond = 3000, /datum/material/bluespace = 3000)
|
||||
build_path = /obj/item/gun/energy/gravity_gun
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -366,7 +366,7 @@
|
||||
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
|
||||
id = "largecrossbow"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 5000, MAT_GLASS = 1500, MAT_URANIUM = 1500, MAT_SILVER = 1500)
|
||||
materials = list(/datum/material/iron = 5000, /datum/material/glass = 1500, /datum/material/uranium = 1500, /datum/material/silver = 1500)
|
||||
build_path = /obj/item/gun/energy/kinetic_accelerator/crossbow/large
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -376,7 +376,7 @@
|
||||
desc = "A weapon which fires ferromagnetic slugs."
|
||||
id = "magpistol"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000)
|
||||
materials = list(/datum/material/iron = 7500, /datum/material/glass = 1000, /datum/material/uranium = 1000, /datum/material/titanium = 5000, /datum/material/silver = 2000)
|
||||
build_path = /obj/item/gun/ballistic/automatic/magrifle/pistol/nopin
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -386,7 +386,7 @@
|
||||
desc = "An upscaled Magpistol in rifle form."
|
||||
id = "magrifle"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000)
|
||||
materials = list(/datum/material/iron = 10000, /datum/material/glass = 2000, /datum/material/uranium = 2000, /datum/material/titanium = 10000, /datum/material/silver = 4000, /datum/material/gold = 2000)
|
||||
build_path = /obj/item/gun/ballistic/automatic/magrifle/nopin
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -400,7 +400,7 @@
|
||||
desc = "A grenade that affects a larger area and use larger containers."
|
||||
id = "large_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000)
|
||||
materials = list(/datum/material/iron = 3000)
|
||||
build_path = /obj/item/grenade/chem_grenade/large
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -410,7 +410,7 @@
|
||||
desc = "An advanced grenade that is able to self ignite its mixture."
|
||||
id = "pyro_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_PLASMA = 500)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/plasma = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/pyro
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -420,7 +420,7 @@
|
||||
desc = "An advanced grenade that rapidly cools its contents upon detonation."
|
||||
id = "cryo_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/silver = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/cryo
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -430,7 +430,7 @@
|
||||
desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter."
|
||||
id = "adv_Grenade"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 3000, MAT_GLASS = 500)
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 500)
|
||||
build_path = /obj/item/grenade/chem_grenade/adv_release
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -444,7 +444,7 @@
|
||||
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
|
||||
id = "tele_shield"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/glass = 4000, /datum/material/silver = 300, /datum/material/titanium = 200)
|
||||
build_path = /obj/item/shield/riot/tele
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
@@ -454,7 +454,16 @@
|
||||
desc = "A reverse-engineered suppressor that fits on most small arms with threaded barrels."
|
||||
id = "suppressor"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
|
||||
materials = list(/datum/material/iron = 2000, /datum/material/silver = 500)
|
||||
build_path = /obj/item/suppressor
|
||||
category = list("Weapons")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
|
||||
|
||||
/datum/design/cleric_mace
|
||||
name = "Cleric Mace"
|
||||
desc = "A mace fit for a cleric. Useful for bypassing plate armor, but too bulky for much else."
|
||||
id = "cleric_mace"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(MAT_CATEGORY_RIGID = 12000)
|
||||
build_path = /obj/item/melee/cleric_mace
|
||||
category = list("Imported")
|
||||
|
||||
@@ -61,12 +61,12 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
. = 0
|
||||
var/datum/component/material_container/storage = linked_console?.linked_lathe?.materials.mat_container
|
||||
if(storage) //Also sends salvaged materials to a linked protolathe, if any.
|
||||
for(var/material in thing.materials)
|
||||
var/can_insert = min((storage.max_amount - storage.total_amount), (max(thing.materials[material]*(decon_mod/10), thing.materials[material])))
|
||||
storage.insert_amount(can_insert, material)
|
||||
for(var/material in thing.custom_materials)
|
||||
var/can_insert = min((storage.max_amount - storage.total_amount), (min(thing.custom_materials[material]*(decon_mod/10), thing.custom_materials[material])))
|
||||
storage.insert_amount_mat(can_insert, material)
|
||||
. += can_insert
|
||||
if (.)
|
||||
linked_console.linked_lathe.materials.silo_log(src, "reclaimed", 1, "[thing.name]", thing.materials)
|
||||
linked_console.linked_lathe.materials.silo_log(src, "reclaimed", 1, "[thing.name]", thing.custom_materials)
|
||||
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/destroy_item(obj/item/thing, innermode = FALSE)
|
||||
if(QDELETED(thing) || QDELETED(src) || QDELETED(linked_console))
|
||||
@@ -132,7 +132,7 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
var/user_mode_string = ""
|
||||
if(length(point_value))
|
||||
user_mode_string = " for [json_encode(point_value)] points"
|
||||
else if(loaded_item.materials.len)
|
||||
else if(loaded_item.custom_materials?.len)
|
||||
user_mode_string = " for material reclamation"
|
||||
var/choice = input("Are you sure you want to destroy [loaded_item][user_mode_string]?") in list("Proceed", "Cancel")
|
||||
if(choice == "Cancel")
|
||||
|
||||
@@ -430,8 +430,8 @@
|
||||
visible_message("<span class='warning'>[exp_on] activates the crushing mechanism, [exp_on] is destroyed!</span>")
|
||||
if(linked_console.linked_lathe)
|
||||
var/datum/component/material_container/linked_materials = linked_console.linked_lathe.GetComponent(/datum/component/material_container)
|
||||
for(var/material in exp_on.materials)
|
||||
linked_materials.insert_amount( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.materials[material])), material)
|
||||
for(var/material in exp_on.custom_materials)
|
||||
linked_materials.insert_amount_mat( min((linked_materials.max_amount - linked_materials.total_amount), (exp_on.custom_materials[material])), material)
|
||||
if(prob(EFFECT_PROB_LOW) && criticalReaction)
|
||||
visible_message("<span class='warning'>[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!</span>")
|
||||
new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src))))
|
||||
|
||||
@@ -29,6 +29,14 @@
|
||||
materials = AddComponent(/datum/component/remote_materials, "lathe", mapload)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/rnd/production/Destroy()
|
||||
materials = null
|
||||
cached_designs = null
|
||||
matching_designs = null
|
||||
QDEL_NULL(stored_research)
|
||||
host_research = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/rnd/production/proc/update_research()
|
||||
host_research.copy_research_to(stored_research, TRUE)
|
||||
update_designs()
|
||||
@@ -51,10 +59,6 @@
|
||||
popup.set_content(generate_ui())
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/rnd/production/Destroy()
|
||||
QDEL_NULL(stored_research)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/rnd/production/proc/calculate_efficiency()
|
||||
efficiency_coeff = 1
|
||||
if(reagents) //If reagents/materials aren't initialized, don't bother, we'll be doing this again after reagents init anyways.
|
||||
@@ -92,23 +96,24 @@
|
||||
var/obj/O = new path(get_turf(src))
|
||||
if(efficient_with(O.type) && isitem(O))
|
||||
var/obj/item/I = O
|
||||
I.materials = matlist.Copy()
|
||||
I.material_flags |= MATERIAL_NO_EFFECTS //Find a better way to do this.
|
||||
I.set_custom_materials(matlist.Copy())
|
||||
SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[type]", "[path]"))
|
||||
investigate_log("[key_name(user)] built [amount] of [path] at [src]([type]).", INVESTIGATE_RESEARCH)
|
||||
|
||||
/obj/machinery/rnd/production/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material
|
||||
/obj/machinery/rnd/production/proc/check_mat(datum/design/being_built, var/mat) // now returns how many times the item can be built with the material
|
||||
if (!materials.mat_container) // no connected silo
|
||||
return 0
|
||||
var/list/all_materials = being_built.reagents_list + being_built.materials
|
||||
|
||||
var/A = materials.mat_container.amount(M)
|
||||
var/A = materials.mat_container.get_material_amount(mat)
|
||||
if(!A)
|
||||
A = reagents.get_reagent_amount(M)
|
||||
A = reagents.get_reagent_amount(mat)
|
||||
|
||||
// these types don't have their .materials set in do_print, so don't allow
|
||||
// them to be constructed efficiently
|
||||
var/ef = efficient_with(being_built.build_path) ? efficiency_coeff : 1
|
||||
return round(A / max(1, all_materials[M] / ef))
|
||||
return round(A / max(1, all_materials[mat] / ef))
|
||||
|
||||
/obj/machinery/rnd/production/proc/efficient_with(path)
|
||||
return !ispath(path, /obj/item/stack/sheet) && !ispath(path, /obj/item/stack/ore/bluespace_crystal)
|
||||
@@ -152,7 +157,7 @@
|
||||
if(!reagents.has_reagent(R, D.reagents_list[R]*amount/coeff))
|
||||
say("Not enough reagents to complete prototype[amount > 1? "s" : ""].")
|
||||
return FALSE
|
||||
materials.mat_container.use_amount(efficient_mats, amount)
|
||||
materials.mat_container.use_materials(efficient_mats, amount)
|
||||
materials.silo_log(src, "built", -amount, "[D.name]", efficient_mats)
|
||||
for(var/R in D.reagents_list)
|
||||
reagents.remove_reagent(R, D.reagents_list[R]*amount/coeff)
|
||||
@@ -213,11 +218,13 @@
|
||||
var/list/l = list()
|
||||
l += "<div class='statusDisplay'><h3>Material Storage:</h3>"
|
||||
for(var/mat_id in materials.mat_container.materials)
|
||||
var/datum/material/M = materials.mat_container.materials[mat_id]
|
||||
l += "* [M.amount] of [M.name]: "
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=1'>Eject</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=5'>5x</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=50'>All</A>[RDSCREEN_NOBREAK]"
|
||||
var/datum/material/M = mat_id
|
||||
var/amount = materials.mat_container.materials[mat_id]
|
||||
var/ref = REF(M)
|
||||
l += "* [amount] of [M.name]: "
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[ref];eject_amt=1'>Eject</A> [RDSCREEN_NOBREAK]"
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT*5) l += "<A href='?src=[REF(src)];ejectsheet=[ref];eject_amt=5'>5x</A> [RDSCREEN_NOBREAK]"
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[ref];eject_amt=50'>All</A>[RDSCREEN_NOBREAK]"
|
||||
l += ""
|
||||
l += "</div>[RDSCREEN_NOBREAK]"
|
||||
return l
|
||||
@@ -305,7 +312,8 @@
|
||||
if(ls["disposeall"]) //Causes the protolathe to dispose of all it's reagents.
|
||||
reagents.clear_reagents()
|
||||
if(ls["ejectsheet"]) //Causes the protolathe to eject a sheet of material
|
||||
eject_sheets(ls["ejectsheet"], ls["eject_amt"])
|
||||
var/datum/material/M = locate(ls["ejectsheet"])
|
||||
eject_sheets(M, ls["eject_amt"])
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/rnd/production/proc/eject_sheets(eject_sheet, eject_amt)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/datum/nanite_extra_setting
|
||||
var/setting_type
|
||||
var/value
|
||||
|
||||
/datum/nanite_extra_setting/proc/get_value()
|
||||
return value
|
||||
|
||||
/datum/nanite_extra_setting/proc/set_value(value)
|
||||
src.value = value
|
||||
|
||||
/datum/nanite_extra_setting/proc/get_copy()
|
||||
return
|
||||
|
||||
//I made the choice to send the name as part of the parameter instead of storing it directly on
|
||||
//this datum as a way of avoiding duplication of data between the containing assoc list
|
||||
//and this datum.
|
||||
//Also make sure to double wrap the list when implementing this as
|
||||
//+= is interpreted as a combine on lists, so the outer list gets unwrapped
|
||||
/datum/nanite_extra_setting/proc/get_frontend_list(name)
|
||||
return
|
||||
@@ -0,0 +1,27 @@
|
||||
/datum/nanite_extra_setting/boolean
|
||||
setting_type = NESTYPE_BOOLEAN
|
||||
var/true_text
|
||||
var/false_text
|
||||
|
||||
/datum/nanite_extra_setting/boolean/New(initial, true_text, false_text)
|
||||
value = initial
|
||||
src.true_text = true_text
|
||||
src.false_text = false_text
|
||||
|
||||
/datum/nanite_extra_setting/boolean/set_value(value)
|
||||
if(isnull(value))
|
||||
src.value = !src.value
|
||||
return
|
||||
. = ..()
|
||||
|
||||
/datum/nanite_extra_setting/boolean/get_copy()
|
||||
return new /datum/nanite_extra_setting/boolean(value, true_text, false_text)
|
||||
|
||||
/datum/nanite_extra_setting/boolean/get_frontend_list(name)
|
||||
return list(list(
|
||||
"name" = name,
|
||||
"type" = setting_type,
|
||||
"value" = value,
|
||||
"true_text" = true_text,
|
||||
"false_text" = false_text
|
||||
))
|
||||
@@ -0,0 +1,32 @@
|
||||
/datum/nanite_extra_setting/number
|
||||
setting_type = NESTYPE_NUMBER
|
||||
var/min
|
||||
var/max
|
||||
var/unit = ""
|
||||
|
||||
/datum/nanite_extra_setting/number/New(initial, min, max, unit)
|
||||
value = initial
|
||||
src.min = min
|
||||
src.max = max
|
||||
if(unit)
|
||||
src.unit = unit
|
||||
|
||||
/datum/nanite_extra_setting/number/set_value(value)
|
||||
if(istext(value))
|
||||
value = text2num(value)
|
||||
if(!value || !isnum(value))
|
||||
return
|
||||
src.value = CLAMP(value, min, max)
|
||||
|
||||
/datum/nanite_extra_setting/number/get_copy()
|
||||
return new /datum/nanite_extra_setting/number(value, min, max, unit)
|
||||
|
||||
/datum/nanite_extra_setting/number/get_frontend_list(name)
|
||||
return list(list(
|
||||
"name" = name,
|
||||
"type" = setting_type,
|
||||
"value" = value,
|
||||
"min" = min,
|
||||
"max" = max,
|
||||
"unit" = unit
|
||||
))
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/nanite_extra_setting/text
|
||||
setting_type = NESTYPE_TEXT
|
||||
|
||||
/datum/nanite_extra_setting/text/New(initial)
|
||||
value = initial
|
||||
|
||||
/datum/nanite_extra_setting/text/set_value(value)
|
||||
src.value = trim(value)
|
||||
|
||||
/datum/nanite_extra_setting/text/get_copy()
|
||||
return new /datum/nanite_extra_setting/text(value)
|
||||
|
||||
/datum/nanite_extra_setting/text/get_frontend_list(name)
|
||||
return list(list(
|
||||
"name" = name,
|
||||
"type" = setting_type,
|
||||
"value" = value
|
||||
))
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/nanite_extra_setting/type
|
||||
setting_type = NESTYPE_TYPE
|
||||
var/list/types
|
||||
|
||||
/datum/nanite_extra_setting/type/New(initial, types)
|
||||
value = initial
|
||||
src.types = types
|
||||
|
||||
/datum/nanite_extra_setting/type/get_copy()
|
||||
return new /datum/nanite_extra_setting/type(value, types)
|
||||
|
||||
/datum/nanite_extra_setting/type/get_frontend_list(name)
|
||||
return list(list(
|
||||
"name" = name,
|
||||
"type" = setting_type,
|
||||
"value" = value,
|
||||
"types" = types
|
||||
))
|
||||
@@ -77,7 +77,7 @@
|
||||
return
|
||||
occupant.AddComponent(/datum/component/nanites, 100)
|
||||
|
||||
/obj/machinery/nanite_chamber/proc/install_program(datum/nanite_program/NP)
|
||||
/obj/machinery/nanite_chamber/proc/remove_nanites(datum/nanite_program/NP)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if((stat & MAINT) || panel_open)
|
||||
@@ -88,74 +88,46 @@
|
||||
var/locked_state = locked
|
||||
locked = TRUE
|
||||
|
||||
//TODO COMPUTERY MACHINE SOUNDS
|
||||
set_busy(TRUE, "Initializing installation protocol...", "[initial(icon_state)]_raising")
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Connecting to nanite framework...", "[initial(icon_state)]_active"),20)
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Installing program...", "[initial(icon_state)]_falling"),35)
|
||||
addtimer(CALLBACK(src, .proc/complete_installation, locked_state, NP),55)
|
||||
//TODO OMINOUS MACHINE SOUNDS
|
||||
set_busy(TRUE, "Initializing cleanup protocol...", "[initial(icon_state)]_raising")
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Pinging nanites...", "[initial(icon_state)]_active"),40)
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Initiating graceful self-destruct sequence...", "[initial(icon_state)]_active"),70)
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Removing debris...", "[initial(icon_state)]_falling"),110)
|
||||
addtimer(CALLBACK(src, .proc/complete_removal, locked_state),130)
|
||||
|
||||
/obj/machinery/nanite_chamber/proc/complete_installation(locked_state, datum/nanite_program/NP)
|
||||
/obj/machinery/nanite_chamber/proc/complete_removal(locked_state)
|
||||
//TODO MACHINE DING
|
||||
locked = locked_state
|
||||
set_busy(FALSE)
|
||||
if(!occupant)
|
||||
return
|
||||
SEND_SIGNAL(occupant, COMSIG_NANITE_DELETE)
|
||||
|
||||
SEND_SIGNAL(occupant, COMSIG_NANITE_ADD_PROGRAM, NP.copy())
|
||||
|
||||
/obj/machinery/nanite_chamber/proc/uninstall_program(datum/nanite_program/NP)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if((stat & MAINT) || panel_open)
|
||||
return
|
||||
if(!occupant || busy)
|
||||
return
|
||||
|
||||
var/locked_state = locked
|
||||
locked = TRUE
|
||||
|
||||
//TODO COMPUTERY MACHINE SOUNDS
|
||||
set_busy(TRUE, "Initializing uninstallation protocol...", "[initial(icon_state)]_raising")
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Connecting to nanite framework...", "[initial(icon_state)]_active"),20)
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Uninstalling program...", "[initial(icon_state)]_falling"),35)
|
||||
addtimer(CALLBACK(src, .proc/complete_uninstallation, locked_state, NP),55)
|
||||
|
||||
/obj/machinery/nanite_chamber/proc/complete_uninstallation(locked_state, datum/nanite_program/NP)
|
||||
//TODO MACHINE DING
|
||||
locked = locked_state
|
||||
set_busy(FALSE)
|
||||
if(!occupant)
|
||||
return
|
||||
qdel(NP)
|
||||
|
||||
/obj/machinery/nanite_chamber/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
if((stat & MAINT) || panel_open)
|
||||
add_overlay("maint")
|
||||
|
||||
else if(!(stat & (NOPOWER|BROKEN)))
|
||||
if(busy || locked)
|
||||
add_overlay("red")
|
||||
if(locked)
|
||||
add_overlay("bolted")
|
||||
else
|
||||
add_overlay("green")
|
||||
|
||||
/obj/machinery/nanite_chamber/update_icon_state()
|
||||
//running and someone in there
|
||||
if(occupant)
|
||||
if(busy)
|
||||
icon_state = busy_icon_state
|
||||
else
|
||||
icon_state = initial(icon_state)+ "_occupied"
|
||||
return
|
||||
icon_state = initial(icon_state) + "_occupied"
|
||||
else
|
||||
//running
|
||||
icon_state = initial(icon_state) + (state_open ? "_open" : "")
|
||||
|
||||
//running
|
||||
icon_state = initial(icon_state)+ (state_open ? "_open" : "")
|
||||
/obj/machinery/nanite_chamber/update_overlays()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/nanite_chamber/power_change()
|
||||
..()
|
||||
update_icon()
|
||||
if((stat & MAINT) || panel_open)
|
||||
. += "maint"
|
||||
|
||||
else if(!(stat & (NOPOWER|BROKEN)))
|
||||
if(busy || locked)
|
||||
. += "red"
|
||||
if(locked)
|
||||
. += "bolted"
|
||||
else
|
||||
. += "green"
|
||||
|
||||
/obj/machinery/nanite_chamber/proc/toggle_open(mob/user)
|
||||
if(panel_open)
|
||||
@@ -182,7 +154,7 @@
|
||||
user.last_special = world.time + CLICK_CD_BREAKOUT
|
||||
user.visible_message("<span class='notice'>You see [user] kicking against the door of [src]!</span>", \
|
||||
"<span class='notice'>You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)</span>", \
|
||||
"<span class='italics'>You hear a metallic creaking from [src].</span>")
|
||||
"<span class='hear'>You hear a metallic creaking from [src].</span>")
|
||||
if(do_after(user,(breakout_time), target = src))
|
||||
if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked || busy)
|
||||
return
|
||||
@@ -231,6 +203,8 @@
|
||||
toggle_open(user)
|
||||
|
||||
/obj/machinery/nanite_chamber/MouseDrop_T(mob/target, mob/user)
|
||||
if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || !Adjacent(target) || !user.Adjacent(target) || !iscarbon(target))
|
||||
return
|
||||
close_machine(target)
|
||||
if(close_machine(target))
|
||||
log_combat(user, target, "inserted", null, "into [src].")
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -5,30 +5,13 @@
|
||||
var/obj/item/disk/nanite_program/disk
|
||||
circuit = /obj/item/circuitboard/computer/nanite_chamber_control
|
||||
icon_screen = "nanite_chamber_control"
|
||||
ui_x = 380
|
||||
ui_y = 570
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/Initialize()
|
||||
. = ..()
|
||||
find_chamber()
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
var/obj/item/disk/nanite_program/N = I
|
||||
if(disk)
|
||||
eject(user)
|
||||
if(user.transferItemToLoc(N, src))
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src]</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
|
||||
disk = N
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/proc/eject(mob/living/user)
|
||||
if(!disk)
|
||||
return
|
||||
if(!istype(user) || !Adjacent(user) || !user.put_in_active_hand(disk))
|
||||
disk.forceMove(drop_location())
|
||||
disk = null
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/proc/find_chamber()
|
||||
for(var/direction in GLOB.cardinals)
|
||||
var/C = locate(/obj/machinery/nanite_chamber, get_step(src, direction))
|
||||
@@ -43,41 +26,13 @@
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "nanite_chamber_control", name, 550, 800, master_ui, state)
|
||||
ui = new(user, src, ui_key, "nanite_chamber_control", name, ui_x, ui_y, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/ui_data()
|
||||
var/list/data = list()
|
||||
if(disk)
|
||||
data["has_disk"] = TRUE
|
||||
var/list/disk_data = list()
|
||||
var/datum/nanite_program/P = disk.program
|
||||
if(P)
|
||||
data["has_program"] = TRUE
|
||||
disk_data["name"] = P.name
|
||||
disk_data["desc"] = P.desc
|
||||
|
||||
disk_data["activated"] = P.activated
|
||||
disk_data["activation_delay"] = P.activation_delay
|
||||
disk_data["timer"] = P.timer
|
||||
disk_data["activation_code"] = P.activation_code
|
||||
disk_data["deactivation_code"] = P.deactivation_code
|
||||
disk_data["kill_code"] = P.kill_code
|
||||
disk_data["trigger_code"] = P.trigger_code
|
||||
disk_data["timer_type"] = P.get_timer_type_text()
|
||||
|
||||
var/list/extra_settings = list()
|
||||
for(var/X in P.extra_settings)
|
||||
var/list/setting = list()
|
||||
setting["name"] = X
|
||||
setting["value"] = P.get_extra_setting(X)
|
||||
extra_settings += list(setting)
|
||||
disk_data["extra_settings"] = extra_settings
|
||||
if(LAZYLEN(extra_settings))
|
||||
disk_data["has_extra_settings"] = TRUE
|
||||
data["disk"] = disk_data
|
||||
|
||||
if(!chamber)
|
||||
data["status_msg"] = "No chamber detected."
|
||||
@@ -97,6 +52,7 @@
|
||||
data["status_msg"] = chamber.busy_message
|
||||
return data
|
||||
|
||||
data["status_msg"] = null
|
||||
data["scan_level"] = chamber.scan_level
|
||||
data["locked"] = chamber.locked
|
||||
data["occupant_name"] = chamber.occupant.name
|
||||
@@ -113,46 +69,32 @@
|
||||
chamber.locked = !chamber.locked
|
||||
chamber.update_icon()
|
||||
. = TRUE
|
||||
if("eject")
|
||||
eject(usr)
|
||||
. = TRUE
|
||||
if("set_safety")
|
||||
var/threshold = input("Set safety threshold (0-500):", name, null) as null|num
|
||||
var/threshold = text2num(params["value"])
|
||||
if(!isnull(threshold))
|
||||
chamber.set_safety(CLAMP(round(threshold, 1),0,500))
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
investigate_log("[key_name(chamber.occupant)]'s nanites' safety threshold was set to [threshold] by [key_name(usr)].", INVESTIGATE_NANITES)
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
chamber.occupant.investigate_log("'s nanites' safety threshold was set to [threshold] by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
if("set_cloud")
|
||||
var/cloud_id = input("Set cloud ID (1-100, 0 to disable):", name, null) as null|num
|
||||
var/cloud_id = text2num(params["value"])
|
||||
if(!isnull(cloud_id))
|
||||
chamber.set_cloud(CLAMP(round(cloud_id, 1),0,100))
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
investigate_log("[key_name(chamber.occupant)]'s nanites' cloud id was set to [cloud_id] by [key_name(usr)].", INVESTIGATE_NANITES)
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
chamber.occupant.investigate_log("'s nanites' cloud id was set to [cloud_id] by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
if("connect_chamber")
|
||||
find_chamber()
|
||||
. = TRUE
|
||||
if("remove_nanites")
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE)
|
||||
chamber.remove_nanites()
|
||||
log_combat(usr, chamber.occupant, "cleared nanites from", null, "via [src]")
|
||||
chamber.occupant.investigate_log("'s nanites were cleared by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
if("nanite_injection")
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 25, 0)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE)
|
||||
chamber.inject_nanites()
|
||||
investigate_log("[key_name(chamber.occupant)] was injected with nanites by [key_name(usr)] using a nanite chamber.", INVESTIGATE_NANITES)
|
||||
log_combat(usr, chamber.occupant, "injected", null, "with nanites via [src]")
|
||||
chamber.occupant.investigate_log("was injected with nanites by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
if("add_program")
|
||||
if(!disk || !chamber || !chamber.occupant)
|
||||
return
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 25, 0)
|
||||
chamber.install_program(disk.program)
|
||||
investigate_log("Program of type [disk.program.type] was installed into [key_name(chamber.occupant)]'s nanites with a nanite chamber by [key_name(usr)].", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
if("remove_program")
|
||||
if(!chamber || !chamber.occupant)
|
||||
return
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 25, 0)
|
||||
var/list/nanite_programs = list()
|
||||
SEND_SIGNAL(chamber.occupant, COMSIG_NANITE_GET_PROGRAMS, nanite_programs)
|
||||
if(LAZYLEN(nanite_programs))
|
||||
var/datum/nanite_program/P = nanite_programs[text2num(params["program_id"])]
|
||||
chamber.uninstall_program(P)
|
||||
investigate_log("Program of type [P.type] was uninstalled from [key_name(chamber.occupant)]'s nanites with a nanite chamber by [key_name(usr)].", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
@@ -4,9 +4,13 @@
|
||||
circuit = /obj/item/circuitboard/computer/nanite_cloud_controller
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
icon_state = "nanite_cloud_controller"
|
||||
ui_x = 375
|
||||
ui_y = 700
|
||||
|
||||
var/obj/item/disk/nanite_program/disk
|
||||
var/list/datum/nanite_cloud_backup/cloud_backups = list()
|
||||
var/current_view = 0 //0 is the main menu, any other number is the page of the backup with that ID
|
||||
var/new_backup_id = 1
|
||||
|
||||
/obj/machinery/computer/nanite_cloud_controller/Destroy()
|
||||
QDEL_LIST(cloud_backups) //rip backups
|
||||
@@ -19,8 +23,8 @@
|
||||
if(disk)
|
||||
eject(user)
|
||||
if(user.transferItemToLoc(N, src))
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src]</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
disk = N
|
||||
else
|
||||
..()
|
||||
@@ -50,13 +54,14 @@
|
||||
investigate_log("[key_name(user)] created a new nanite cloud backup with id #[cloud_id]", INVESTIGATE_NANITES)
|
||||
|
||||
/obj/machinery/computer/nanite_cloud_controller/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "nanite_cloud_control", name, 600, 800, master_ui, state)
|
||||
ui = new(user, src, ui_key, "nanite_cloud_control", name, ui_x, ui_y, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/nanite_cloud_controller/ui_data()
|
||||
var/list/data = list()
|
||||
|
||||
if(disk)
|
||||
data["has_disk"] = TRUE
|
||||
var/list/disk_data = list()
|
||||
@@ -71,24 +76,28 @@
|
||||
disk_data["trigger_cooldown"] = P.trigger_cooldown / 10
|
||||
|
||||
disk_data["activated"] = P.activated
|
||||
disk_data["activation_delay"] = P.activation_delay
|
||||
disk_data["timer"] = P.timer
|
||||
disk_data["activation_code"] = P.activation_code
|
||||
disk_data["deactivation_code"] = P.deactivation_code
|
||||
disk_data["kill_code"] = P.kill_code
|
||||
disk_data["trigger_code"] = P.trigger_code
|
||||
disk_data["timer_type"] = P.get_timer_type_text()
|
||||
disk_data["timer_restart"] = P.timer_restart / 10
|
||||
disk_data["timer_shutdown"] = P.timer_shutdown / 10
|
||||
disk_data["timer_trigger"] = P.timer_trigger / 10
|
||||
disk_data["timer_trigger_delay"] = P.timer_trigger_delay / 10
|
||||
|
||||
var/list/extra_settings = list()
|
||||
for(var/X in P.extra_settings)
|
||||
var/list/setting = list()
|
||||
setting["name"] = X
|
||||
setting["value"] = P.get_extra_setting(X)
|
||||
extra_settings += list(setting)
|
||||
var/list/extra_settings = P.get_extra_settings_frontend()
|
||||
disk_data["extra_settings"] = extra_settings
|
||||
if(LAZYLEN(extra_settings))
|
||||
disk_data["has_extra_settings"] = TRUE
|
||||
if(istype(P, /datum/nanite_program/sensor))
|
||||
var/datum/nanite_program/sensor/sensor = P
|
||||
if(sensor.can_rule)
|
||||
disk_data["can_rule"] = TRUE
|
||||
data["disk"] = disk_data
|
||||
else
|
||||
data["has_disk"] = FALSE
|
||||
|
||||
data["new_backup_id"] = new_backup_id
|
||||
|
||||
data["current_view"] = current_view
|
||||
if(current_view)
|
||||
@@ -108,19 +117,30 @@
|
||||
cloud_program["trigger_cost"] = P.trigger_cost
|
||||
cloud_program["trigger_cooldown"] = P.trigger_cooldown / 10
|
||||
cloud_program["activated"] = P.activated
|
||||
cloud_program["activation_delay"] = P.activation_delay
|
||||
cloud_program["timer"] = P.timer
|
||||
cloud_program["timer_type"] = P.get_timer_type_text()
|
||||
cloud_program["timer_restart"] = P.timer_restart / 10
|
||||
cloud_program["timer_shutdown"] = P.timer_shutdown / 10
|
||||
cloud_program["timer_trigger"] = P.timer_trigger / 10
|
||||
cloud_program["timer_trigger_delay"] = P.timer_trigger_delay / 10
|
||||
|
||||
cloud_program["activation_code"] = P.activation_code
|
||||
cloud_program["deactivation_code"] = P.deactivation_code
|
||||
cloud_program["kill_code"] = P.kill_code
|
||||
cloud_program["trigger_code"] = P.trigger_code
|
||||
var/list/extra_settings = list()
|
||||
for(var/X in P.extra_settings)
|
||||
var/list/setting = list()
|
||||
setting["name"] = X
|
||||
setting["value"] = P.get_extra_setting(X)
|
||||
extra_settings += list(setting)
|
||||
var/list/rules = list()
|
||||
var/rule_id = 1
|
||||
for(var/X in P.rules)
|
||||
var/datum/nanite_rule/nanite_rule = X
|
||||
var/list/rule = list()
|
||||
rule["display"] = nanite_rule.display()
|
||||
rule["program_id"] = id
|
||||
rule["id"] = rule_id
|
||||
rules += list(rule)
|
||||
rule_id++
|
||||
cloud_program["rules"] = rules
|
||||
if(LAZYLEN(rules))
|
||||
cloud_program["has_rules"] = TRUE
|
||||
|
||||
var/list/extra_settings = P.get_extra_settings_frontend()
|
||||
cloud_program["extra_settings"] = extra_settings
|
||||
if(LAZYLEN(extra_settings))
|
||||
cloud_program["has_extra_settings"] = TRUE
|
||||
@@ -147,17 +167,20 @@
|
||||
if("set_view")
|
||||
current_view = text2num(params["view"])
|
||||
. = TRUE
|
||||
if("update_new_backup_value")
|
||||
var/backup_value = text2num(params["value"])
|
||||
new_backup_id = backup_value
|
||||
if("create_backup")
|
||||
var/cloud_id = input("Choose a cloud ID (1-100):", name, null) as null|num
|
||||
var/cloud_id = new_backup_id
|
||||
if(!isnull(cloud_id))
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE)
|
||||
cloud_id = CLAMP(round(cloud_id, 1),1,100)
|
||||
generate_backup(cloud_id, usr)
|
||||
. = TRUE
|
||||
if("delete_backup")
|
||||
var/datum/nanite_cloud_backup/backup = get_backup(current_view)
|
||||
if(backup)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE)
|
||||
qdel(backup)
|
||||
investigate_log("[key_name(usr)] deleted the nanite cloud backup #[current_view]", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
@@ -165,7 +188,7 @@
|
||||
if(disk && disk.program)
|
||||
var/datum/nanite_cloud_backup/backup = get_backup(current_view)
|
||||
if(backup)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE)
|
||||
var/datum/component/nanites/nanites = backup.nanites
|
||||
nanites.add_program(null, disk.program.copy())
|
||||
investigate_log("[key_name(usr)] uploaded program [disk.program.name] to cloud #[current_view]", INVESTIGATE_NANITES)
|
||||
@@ -173,12 +196,37 @@
|
||||
if("remove_program")
|
||||
var/datum/nanite_cloud_backup/backup = get_backup(current_view)
|
||||
if(backup)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE)
|
||||
var/datum/component/nanites/nanites = backup.nanites
|
||||
var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])]
|
||||
investigate_log("[key_name(usr)] deleted program [P.name] from cloud #[current_view]", INVESTIGATE_NANITES)
|
||||
qdel(P)
|
||||
. = TRUE
|
||||
if("add_rule")
|
||||
if(disk && disk.program && istype(disk.program, /datum/nanite_program/sensor))
|
||||
var/datum/nanite_program/sensor/rule_template = disk.program
|
||||
if(!rule_template.can_rule)
|
||||
return
|
||||
var/datum/nanite_cloud_backup/backup = get_backup(current_view)
|
||||
if(backup)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
||||
var/datum/component/nanites/nanites = backup.nanites
|
||||
var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])]
|
||||
var/datum/nanite_rule/rule = rule_template.make_rule(P)
|
||||
|
||||
investigate_log("[key_name(usr)] added rule [rule.display()] to program [P.name] in cloud #[current_view]", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
if("remove_rule")
|
||||
var/datum/nanite_cloud_backup/backup = get_backup(current_view)
|
||||
if(backup)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 50, 0)
|
||||
var/datum/component/nanites/nanites = backup.nanites
|
||||
var/datum/nanite_program/P = nanites.programs[text2num(params["program_id"])]
|
||||
var/datum/nanite_rule/rule = P.rules[text2num(params["rule_id"])]
|
||||
rule.remove()
|
||||
|
||||
investigate_log("[key_name(usr)] removed rule [rule.display()] from program [P.name] in cloud #[current_view]", INVESTIGATE_NANITES)
|
||||
. = TRUE
|
||||
|
||||
/datum/nanite_cloud_backup
|
||||
var/cloud_id = 0
|
||||
@@ -193,4 +241,4 @@
|
||||
/datum/nanite_cloud_backup/Destroy()
|
||||
storage.cloud_backups -= src
|
||||
SSnanites.cloud_backups -= src
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
@@ -1,157 +0,0 @@
|
||||
/obj/item/nanite_hijacker
|
||||
name = "nanite remote control" //fake name
|
||||
desc = "A device that can load nanite programming disks, edit them at will, and imprint them to nanites remotely."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "nanite_remote"
|
||||
item_flags = NOBLUDGEON
|
||||
var/obj/item/disk/nanite_program/disk
|
||||
var/datum/nanite_program/program
|
||||
|
||||
/obj/item/nanite_hijacker/AltClick(mob/user)
|
||||
. = ..()
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
return
|
||||
if(disk)
|
||||
eject()
|
||||
return TRUE
|
||||
|
||||
/obj/item/nanite_hijacker/examine(mob/user)
|
||||
. = ..()
|
||||
if(disk)
|
||||
. += "<span class='notice'>Alt-click [src] to eject the disk.</span>"
|
||||
|
||||
/obj/item/nanite_hijacker/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
var/obj/item/disk/nanite_program/N = I
|
||||
if(disk)
|
||||
eject()
|
||||
if(user.transferItemToLoc(N, src))
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src]</span>")
|
||||
disk = N
|
||||
program = N.program
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/nanite_hijacker/proc/eject(mob/living/user)
|
||||
if(!disk)
|
||||
return
|
||||
if(!istype(user) || !Adjacent(user) || !user.put_in_hand(disk))
|
||||
disk.forceMove(drop_location())
|
||||
disk = null
|
||||
program = null
|
||||
|
||||
/obj/item/nanite_hijacker/afterattack(atom/target, mob/user, etc)
|
||||
if(!disk || !disk.program)
|
||||
return
|
||||
if(isliving(target))
|
||||
var/success = SEND_SIGNAL(target, COMSIG_NANITE_ADD_PROGRAM, program.copy())
|
||||
switch(success)
|
||||
if(NONE)
|
||||
to_chat(user, "<span class='notice'>You don't detect any nanites in [target].</span>")
|
||||
if(COMPONENT_PROGRAM_INSTALLED)
|
||||
to_chat(user, "<span class='notice'>You insert the currently loaded program into [target]'s nanites.</span>")
|
||||
if(COMPONENT_PROGRAM_NOT_INSTALLED)
|
||||
to_chat(user, "<span class='warning'>You try to insert the currently loaded program into [target]'s nanites, but the installation fails.</span>")
|
||||
|
||||
//Same UI as the nanite programmer, as it pretty much does the same
|
||||
/obj/item/nanite_hijacker/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
|
||||
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "nanite_programmer", "Internal Nanite Programmer", 420, 800, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/item/nanite_hijacker/ui_data()
|
||||
var/list/data = list()
|
||||
data["has_disk"] = istype(disk)
|
||||
data["has_program"] = istype(program)
|
||||
if(program)
|
||||
data["name"] = program.name
|
||||
data["desc"] = program.desc
|
||||
data["use_rate"] = program.use_rate
|
||||
data["can_trigger"] = program.can_trigger
|
||||
data["trigger_cost"] = program.trigger_cost
|
||||
data["trigger_cooldown"] = program.trigger_cooldown / 10
|
||||
|
||||
data["activated"] = program.activated
|
||||
data["activation_delay"] = program.activation_delay
|
||||
data["timer"] = program.timer
|
||||
data["activation_code"] = program.activation_code
|
||||
data["deactivation_code"] = program.deactivation_code
|
||||
data["kill_code"] = program.kill_code
|
||||
data["trigger_code"] = program.trigger_code
|
||||
data["timer_type"] = program.get_timer_type_text()
|
||||
|
||||
var/list/extra_settings = list()
|
||||
for(var/X in program.extra_settings)
|
||||
var/list/setting = list()
|
||||
setting["name"] = X
|
||||
setting["value"] = program.get_extra_setting(X)
|
||||
extra_settings += list(setting)
|
||||
data["extra_settings"] = extra_settings
|
||||
if(LAZYLEN(extra_settings))
|
||||
data["has_extra_settings"] = TRUE
|
||||
|
||||
return data
|
||||
|
||||
/obj/item/nanite_hijacker/ui_act(action, params)
|
||||
if(..())
|
||||
return
|
||||
switch(action)
|
||||
if("eject")
|
||||
eject(usr)
|
||||
. = TRUE
|
||||
if("toggle_active")
|
||||
program.activated = !program.activated //we don't use the activation procs since we aren't in a mob
|
||||
if(program.activated)
|
||||
program.activation_delay = 0
|
||||
. = TRUE
|
||||
if("set_code")
|
||||
var/new_code = input("Set code (0000-9999):", name, null) as null|num
|
||||
if(!isnull(new_code))
|
||||
new_code = CLAMP(round(new_code, 1),0,9999)
|
||||
else
|
||||
return
|
||||
|
||||
var/target_code = params["target_code"]
|
||||
switch(target_code)
|
||||
if("activation")
|
||||
program.activation_code = CLAMP(round(new_code, 1),0,9999)
|
||||
if("deactivation")
|
||||
program.deactivation_code = CLAMP(round(new_code, 1),0,9999)
|
||||
if("kill")
|
||||
program.kill_code = CLAMP(round(new_code, 1),0,9999)
|
||||
if("trigger")
|
||||
program.trigger_code = CLAMP(round(new_code, 1),0,9999)
|
||||
. = TRUE
|
||||
if("set_extra_setting")
|
||||
program.set_extra_setting(usr, params["target_setting"])
|
||||
. = TRUE
|
||||
if("set_activation_delay")
|
||||
var/delay = input("Set activation delay in seconds (0-1800):", name, program.activation_delay) as null|num
|
||||
if(!isnull(delay))
|
||||
delay = CLAMP(round(delay, 1),0,1800)
|
||||
program.activation_delay = delay
|
||||
if(delay)
|
||||
program.activated = FALSE
|
||||
. = TRUE
|
||||
if("set_timer")
|
||||
var/timer = input("Set timer in seconds (10-3600):", name, program.timer) as null|num
|
||||
if(!isnull(timer))
|
||||
if(!timer == 0)
|
||||
timer = CLAMP(round(timer, 1),10,3600)
|
||||
program.timer = timer
|
||||
. = TRUE
|
||||
if("set_timer_type")
|
||||
var/new_type = input("Choose the timer effect","Timer Effect") as null|anything in list("Deactivate","Self-Delete","Trigger","Reset Activation Timer")
|
||||
if(new_type)
|
||||
switch(new_type)
|
||||
if("Deactivate")
|
||||
program.timer_type = NANITE_TIMER_DEACTIVATE
|
||||
if("Self-Delete")
|
||||
program.timer_type = NANITE_TIMER_SELFDELETE
|
||||
if("Trigger")
|
||||
program.timer_type = NANITE_TIMER_TRIGGER
|
||||
if("Reset Activation Timer")
|
||||
program.timer_type = NANITE_TIMER_RESET
|
||||
. = TRUE
|
||||
@@ -6,4 +6,4 @@
|
||||
icon_state = "nanite_remote"
|
||||
|
||||
/obj/item/nanite_injector/attack_self(mob/user)
|
||||
user.AddComponent(/datum/component/nanites, 150)
|
||||
user.AddComponent(/datum/component/nanites, 150)
|
||||
|
||||
@@ -7,18 +7,21 @@
|
||||
use_power = IDLE_POWER_USE
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
ui_x = 500
|
||||
ui_y = 700
|
||||
|
||||
var/obj/item/disk/nanite_program/disk
|
||||
var/datum/techweb/linked_techweb
|
||||
var/current_category = "Main"
|
||||
var/detail_view = FALSE
|
||||
var/detail_view = TRUE
|
||||
var/categories = list(
|
||||
list(name = "Utility Nanites"),
|
||||
list(name = "Medical Nanites"),
|
||||
list(name = "Sensor Nanites"),
|
||||
list(name = "Augmentation Nanites"),
|
||||
list(name = "Suppression Nanites"),
|
||||
list(name = "Weaponized Nanites")
|
||||
list(name = "Weaponized Nanites"),
|
||||
//list(name = "Protocols") B.E.P.I.S Content, which we dont have
|
||||
)
|
||||
|
||||
/obj/machinery/nanite_program_hub/Initialize()
|
||||
@@ -31,8 +34,8 @@
|
||||
if(disk)
|
||||
eject(user)
|
||||
if(user.transferItemToLoc(N, src))
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src]</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
disk = N
|
||||
else
|
||||
..()
|
||||
@@ -45,10 +48,9 @@
|
||||
disk = null
|
||||
|
||||
/obj/machinery/nanite_program_hub/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "nanite_program_hub", name, 500, 700, master_ui, state)
|
||||
ui.set_autoupdate(FALSE) //to avoid making the whole program list every second
|
||||
ui = new(user, src, ui_key, "nanite_program_hub", name, ui_x, ui_y, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/nanite_program_hub/ui_data()
|
||||
@@ -62,25 +64,31 @@
|
||||
disk_data["name"] = P.name
|
||||
disk_data["desc"] = P.desc
|
||||
data["disk"] = disk_data
|
||||
else
|
||||
data["has_disk"] = FALSE
|
||||
|
||||
data["detail_view"] = detail_view
|
||||
data["category"] = current_category
|
||||
|
||||
if(current_category != "Main")
|
||||
var/list/program_list = list()
|
||||
for(var/i in linked_techweb.researched_designs)
|
||||
var/datum/design/nanites/D = SSresearch.techweb_design_by_id(i)
|
||||
if(!istype(D))
|
||||
continue
|
||||
if(current_category in D.category)
|
||||
var/list/program_design = list()
|
||||
program_design["id"] = D.id
|
||||
program_design["name"] = D.name
|
||||
program_design["desc"] = D.desc
|
||||
program_list += list(program_design)
|
||||
data["program_list"] = program_list
|
||||
else
|
||||
data["categories"] = categories
|
||||
return data
|
||||
|
||||
/obj/machinery/nanite_program_hub/ui_static_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["programs"] = list()
|
||||
for(var/i in linked_techweb.researched_designs)
|
||||
var/datum/design/nanites/D = SSresearch.techweb_design_by_id(i)
|
||||
if(!istype(D))
|
||||
continue
|
||||
var/cat_name = D.category[1] //just put them in the first category fuck it
|
||||
if(isnull(data["programs"][cat_name]))
|
||||
data["programs"][cat_name] = list()
|
||||
var/list/program_design = list()
|
||||
program_design["id"] = D.id
|
||||
program_design["name"] = D.name
|
||||
program_design["desc"] = D.desc
|
||||
data["programs"][cat_name] += list(program_design)
|
||||
|
||||
if(!length(data["programs"]))
|
||||
data["programs"] = null
|
||||
|
||||
return data
|
||||
|
||||
@@ -101,11 +109,10 @@
|
||||
qdel(disk.program)
|
||||
disk.program = new downloaded.program_type
|
||||
disk.name = "[initial(disk.name)] \[[disk.program.name]\]"
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 25, 0)
|
||||
playsound(src, 'sound/machines/terminal_prompt.ogg', 25, FALSE)
|
||||
. = TRUE
|
||||
if("set_category")
|
||||
var/new_category = params["category"]
|
||||
current_category = new_category
|
||||
if("refresh")
|
||||
update_static_data(usr)
|
||||
. = TRUE
|
||||
if("toggle_details")
|
||||
detail_view = !detail_view
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
use_power = IDLE_POWER_USE
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
flags_1 = HEAR_1
|
||||
ui_x = 420
|
||||
ui_y = 550
|
||||
|
||||
/obj/machinery/nanite_programmer/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
@@ -17,7 +20,7 @@
|
||||
eject(user)
|
||||
if(user.transferItemToLoc(N, src))
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src]</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
disk = N
|
||||
program = N.program
|
||||
else
|
||||
@@ -32,9 +35,9 @@
|
||||
program = null
|
||||
|
||||
/obj/machinery/nanite_programmer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "nanite_programmer", name, 600, 800, master_ui, state)
|
||||
ui = new(user, src, ui_key, "nanite_programmer", name, ui_x, ui_y, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/nanite_programmer/ui_data()
|
||||
@@ -50,20 +53,16 @@
|
||||
data["trigger_cooldown"] = program.trigger_cooldown / 10
|
||||
|
||||
data["activated"] = program.activated
|
||||
data["activation_delay"] = program.activation_delay
|
||||
data["timer"] = program.timer
|
||||
data["activation_code"] = program.activation_code
|
||||
data["deactivation_code"] = program.deactivation_code
|
||||
data["kill_code"] = program.kill_code
|
||||
data["trigger_code"] = program.trigger_code
|
||||
data["timer_type"] = program.get_timer_type_text()
|
||||
data["timer_restart"] = program.timer_restart / 10
|
||||
data["timer_shutdown"] = program.timer_shutdown / 10
|
||||
data["timer_trigger"] = program.timer_trigger / 10
|
||||
data["timer_trigger_delay"] = program.timer_trigger_delay / 10
|
||||
|
||||
var/list/extra_settings = list()
|
||||
for(var/X in program.extra_settings)
|
||||
var/list/setting = list()
|
||||
setting["name"] = X
|
||||
setting["value"] = program.get_extra_setting(X)
|
||||
extra_settings += list(setting)
|
||||
var/list/extra_settings = program.get_extra_settings_frontend()
|
||||
data["extra_settings"] = extra_settings
|
||||
if(LAZYLEN(extra_settings))
|
||||
data["has_extra_settings"] = TRUE
|
||||
@@ -78,20 +77,12 @@
|
||||
eject(usr)
|
||||
. = TRUE
|
||||
if("toggle_active")
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
program.activated = !program.activated //we don't use the activation procs since we aren't in a mob
|
||||
if(program.activated)
|
||||
program.activation_delay = 0
|
||||
. = TRUE
|
||||
if("set_code")
|
||||
var/new_code = input("Set code (0000-9999):", name, null) as null|num
|
||||
if(!isnull(new_code))
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
new_code = CLAMP(round(new_code, 1),0,9999)
|
||||
else
|
||||
return
|
||||
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
var/new_code = text2num(params["code"])
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
var/target_code = params["target_code"]
|
||||
switch(target_code)
|
||||
if("activation")
|
||||
@@ -104,37 +95,44 @@
|
||||
program.trigger_code = CLAMP(round(new_code, 1),0,9999)
|
||||
. = TRUE
|
||||
if("set_extra_setting")
|
||||
program.set_extra_setting(usr, params["target_setting"])
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
program.set_extra_setting(params["target_setting"], params["value"])
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
. = TRUE
|
||||
if("set_activation_delay")
|
||||
var/delay = input("Set activation delay in seconds (0-1800):", name, program.activation_delay) as null|num
|
||||
if(!isnull(delay))
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
delay = CLAMP(round(delay, 1),0,1800)
|
||||
program.activation_delay = delay
|
||||
if(delay)
|
||||
program.activated = FALSE
|
||||
. = TRUE
|
||||
if("set_timer")
|
||||
var/timer = input("Set timer in seconds (10-3600):", name, program.timer) as null|num
|
||||
if("set_restart_timer")
|
||||
var/timer = text2num(params["delay"])
|
||||
if(!isnull(timer))
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
if(!timer == 0)
|
||||
timer = CLAMP(round(timer, 1),10,3600)
|
||||
program.timer = timer
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
timer = CLAMP(round(timer, 1), 0, 3600)
|
||||
timer *= 10 //convert to deciseconds
|
||||
program.timer_restart = timer
|
||||
. = TRUE
|
||||
if("set_timer_type")
|
||||
var/new_type = input("Choose the timer effect","Timer Effect") as null|anything in list("Deactivate","Self-Delete","Trigger","Reset Activation Timer")
|
||||
if(new_type)
|
||||
playsound(src, "terminal_type", 25, 0)
|
||||
switch(new_type)
|
||||
if("Deactivate")
|
||||
program.timer_type = NANITE_TIMER_DEACTIVATE
|
||||
if("Self-Delete")
|
||||
program.timer_type = NANITE_TIMER_SELFDELETE
|
||||
if("Trigger")
|
||||
program.timer_type = NANITE_TIMER_TRIGGER
|
||||
if("Reset Activation Timer")
|
||||
program.timer_type = NANITE_TIMER_RESET
|
||||
. = TRUE
|
||||
if("set_shutdown_timer")
|
||||
var/timer = text2num(params["delay"])
|
||||
if(!isnull(timer))
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
timer = CLAMP(round(timer, 1), 0, 3600)
|
||||
timer *= 10 //convert to deciseconds
|
||||
program.timer_shutdown = timer
|
||||
. = TRUE
|
||||
if("set_trigger_timer")
|
||||
var/timer = text2num(params["delay"])
|
||||
if(!isnull(timer))
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
timer = CLAMP(round(timer, 1), 0, 3600)
|
||||
timer *= 10 //convert to deciseconds
|
||||
program.timer_trigger = timer
|
||||
. = TRUE
|
||||
if("set_timer_trigger_delay")
|
||||
var/timer = text2num(params["delay"])
|
||||
if(!isnull(timer))
|
||||
playsound(src, "terminal_type", 25, FALSE)
|
||||
timer = CLAMP(round(timer, 1), 0, 3600)
|
||||
timer *= 10 //convert to deciseconds
|
||||
program.timer_trigger_delay = timer
|
||||
. = TRUE
|
||||
|
||||
/obj/machinery/nanite_programmer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode, atom/movable/source)
|
||||
. = ..()
|
||||
var/static/regex/when = regex("(?:^\\W*when|when\\W*$)", "i") //starts or ends with when
|
||||
if(findtext(raw_message, when) && !istype(speaker, /obj/machinery/nanite_programmer))
|
||||
say("When you code it!!")
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/trigger_cost = 0 //Amount of nanites required to trigger
|
||||
var/trigger_cooldown = 50 //Deciseconds required between each trigger activation
|
||||
var/next_trigger = 0 //World time required for the next trigger activation
|
||||
var/timer_counter = 0 //Counts up while active. Used for the timer and the activation delay.
|
||||
|
||||
var/program_flags = NONE
|
||||
var/passive_enabled = FALSE //If the nanites have an on/off-style effect, it's tracked by this var
|
||||
|
||||
@@ -28,9 +28,17 @@
|
||||
|
||||
//The following vars are customizable
|
||||
var/activated = TRUE //If FALSE, the program won't process, disables passive effects, can't trigger and doesn't consume nanites
|
||||
var/activation_delay = 0 //Seconds before the program self-activates.
|
||||
var/timer = 0 //Seconds before the timer effect activates. Starts counting AFTER the activation delay
|
||||
var/timer_type = NANITE_TIMER_DEACTIVATE //What happens when the timer runs out
|
||||
|
||||
var/timer_restart = 0 //When deactivated, the program will wait X deciseconds before self-reactivating. Also works if the program begins deactivated.
|
||||
var/timer_shutdown = 0 //When activated, the program will wait X deciseconds before self-deactivating. Also works if the program begins activated.
|
||||
var/timer_trigger = 0 //[Trigger only] While active, the program will attempt to trigger once every x deciseconds.
|
||||
var/timer_trigger_delay = 0 //[Trigger only] While active, the program will delay trigger signals by X deciseconds.
|
||||
|
||||
//Indicates the next world.time tick where these timers will act
|
||||
var/timer_restart_next = 0
|
||||
var/timer_shutdown_next = 0
|
||||
var/timer_trigger_next = 0
|
||||
var/timer_trigger_delay_next = 0
|
||||
|
||||
//Signal codes, these handle remote input to the nanites. If set to 0 they'll ignore signals.
|
||||
var/activation_code = 0 //Code that activates the program [1-9999]
|
||||
@@ -39,19 +47,19 @@
|
||||
var/trigger_code = 0 //Code that triggers the program (if available) [1-9999]
|
||||
|
||||
//Extra settings
|
||||
//Must be listed in text form, with the same title they'll be displayed in the programmer UI
|
||||
//Changing these values is handled by set_extra_setting()
|
||||
//Viewing these values is handled by get_extra_setting()
|
||||
//Copying these values is handled by copy_extra_settings_to()
|
||||
///Don't ever override this or I will come to your house and stand menacingly behind a bush
|
||||
var/list/extra_settings = list()
|
||||
|
||||
/datum/nanite_program/triggered
|
||||
use_rate = 0
|
||||
trigger_cost = 5
|
||||
trigger_cooldown = 50
|
||||
can_trigger = TRUE
|
||||
//Rules
|
||||
//Rules that automatically manage if the program's active without requiring separate sensor programs
|
||||
var/list/datum/nanite_rule/rules = list()
|
||||
|
||||
/datum/nanite_program/New()
|
||||
. = ..()
|
||||
register_extra_settings()
|
||||
|
||||
/datum/nanite_program/Destroy()
|
||||
extra_settings = null
|
||||
if(host_mob)
|
||||
if(activated)
|
||||
deactivate()
|
||||
@@ -64,39 +72,60 @@
|
||||
|
||||
/datum/nanite_program/proc/copy()
|
||||
var/datum/nanite_program/new_program = new type()
|
||||
|
||||
new_program.activated = activated
|
||||
new_program.activation_delay = activation_delay
|
||||
new_program.timer = timer
|
||||
new_program.timer_type = timer_type
|
||||
new_program.activation_code = activation_code
|
||||
new_program.deactivation_code = deactivation_code
|
||||
new_program.kill_code = kill_code
|
||||
new_program.trigger_code = trigger_code
|
||||
copy_extra_settings_to(new_program)
|
||||
copy_programming(new_program, TRUE)
|
||||
|
||||
return new_program
|
||||
|
||||
/datum/nanite_program/proc/copy_programming(datum/nanite_program/target, copy_activated = TRUE)
|
||||
if(copy_activated)
|
||||
target.activated = activated
|
||||
target.activation_delay = activation_delay
|
||||
target.timer = timer
|
||||
target.timer_type = timer_type
|
||||
target.timer_restart = timer_restart
|
||||
target.timer_shutdown = timer_shutdown
|
||||
target.timer_trigger = timer_trigger
|
||||
target.timer_trigger_delay = timer_trigger_delay
|
||||
target.activation_code = activation_code
|
||||
target.deactivation_code = deactivation_code
|
||||
target.kill_code = kill_code
|
||||
target.trigger_code = trigger_code
|
||||
copy_extra_settings_to(target)
|
||||
|
||||
/datum/nanite_program/proc/set_extra_setting(user, setting)
|
||||
target.rules = list()
|
||||
for(var/R in rules)
|
||||
var/datum/nanite_rule/rule = R
|
||||
rule.copy_to(target)
|
||||
|
||||
if(istype(target,src))
|
||||
copy_extra_settings_to(target)
|
||||
|
||||
///Register extra settings by overriding this.
|
||||
///extra_settings[name] = new typepath() for each extra setting
|
||||
/datum/nanite_program/proc/register_extra_settings()
|
||||
return
|
||||
|
||||
/datum/nanite_program/proc/get_extra_setting(setting)
|
||||
return
|
||||
///You can override this if you need to have special behavior after setting certain settings.
|
||||
/datum/nanite_program/proc/set_extra_setting(setting, value)
|
||||
var/datum/nanite_extra_setting/ES = extra_settings[setting]
|
||||
return ES.set_value(value)
|
||||
|
||||
///You probably shouldn't be overriding this one, but I'm not a cop.
|
||||
/datum/nanite_program/proc/get_extra_setting_value(setting)
|
||||
var/datum/nanite_extra_setting/ES = extra_settings[setting]
|
||||
return ES.get_value()
|
||||
|
||||
///Used for getting information about the extra settings to the frontend
|
||||
/datum/nanite_program/proc/get_extra_settings_frontend()
|
||||
var/list/out = list()
|
||||
for(var/name in extra_settings)
|
||||
var/datum/nanite_extra_setting/ES = extra_settings[name]
|
||||
out += ES.get_frontend_list(name)
|
||||
return out
|
||||
|
||||
///Copy of the list instead of direct reference for obvious reasons
|
||||
/datum/nanite_program/proc/copy_extra_settings_to(datum/nanite_program/target)
|
||||
return
|
||||
var/list/copy_list = list()
|
||||
for(var/ns_name in extra_settings)
|
||||
var/datum/nanite_extra_setting/extra_setting = extra_settings[ns_name]
|
||||
copy_list[ns_name] = extra_setting.get_copy()
|
||||
target.extra_settings = copy_list
|
||||
|
||||
/datum/nanite_program/proc/on_add(datum/component/nanites/_nanites)
|
||||
nanites = _nanites
|
||||
@@ -105,10 +134,12 @@
|
||||
|
||||
/datum/nanite_program/proc/on_mob_add()
|
||||
host_mob = nanites.host_mob
|
||||
if(activated) //apply activation effects if it starts active
|
||||
if(activated) //apply activation effects depending on initial status; starts the restart and shutdown timers
|
||||
activate()
|
||||
else
|
||||
deactivate()
|
||||
|
||||
datum/nanite_program/proc/on_mob_remove()
|
||||
/datum/nanite_program/proc/on_mob_remove()
|
||||
return
|
||||
|
||||
/datum/nanite_program/proc/toggle()
|
||||
@@ -119,36 +150,35 @@ datum/nanite_program/proc/on_mob_remove()
|
||||
|
||||
/datum/nanite_program/proc/activate()
|
||||
activated = TRUE
|
||||
timer_counter = activation_delay
|
||||
if(timer_shutdown)
|
||||
timer_shutdown_next = world.time + timer_shutdown
|
||||
|
||||
/datum/nanite_program/proc/deactivate()
|
||||
if(passive_enabled)
|
||||
disable_passive_effect()
|
||||
activated = FALSE
|
||||
if(timer_restart)
|
||||
timer_restart_next = world.time + timer_restart
|
||||
|
||||
/datum/nanite_program/proc/on_process()
|
||||
timer_counter++
|
||||
|
||||
if(activation_delay)
|
||||
if(activated && timer_counter < activation_delay)
|
||||
deactivate()
|
||||
else if(!activated && timer_counter >= activation_delay)
|
||||
activate()
|
||||
if(!activated)
|
||||
if(timer_restart_next && world.time > timer_restart_next)
|
||||
activate()
|
||||
timer_restart_next = 0
|
||||
return
|
||||
|
||||
if(timer && timer_counter > timer)
|
||||
if(timer_type == NANITE_TIMER_DEACTIVATE)
|
||||
deactivate()
|
||||
return
|
||||
else if(timer_type == NANITE_TIMER_SELFDELETE)
|
||||
qdel(src)
|
||||
return
|
||||
else if(can_trigger && timer_type == NANITE_TIMER_TRIGGER)
|
||||
trigger()
|
||||
timer_counter = activation_delay
|
||||
else if(timer_type == NANITE_TIMER_RESET)
|
||||
timer_counter = 0
|
||||
if(timer_shutdown_next && world.time > timer_shutdown_next)
|
||||
deactivate()
|
||||
timer_shutdown_next = 0
|
||||
|
||||
if(timer_trigger && world.time > timer_trigger_next)
|
||||
trigger()
|
||||
timer_trigger_next = world.time + timer_trigger
|
||||
|
||||
if(timer_trigger_delay_next && world.time > timer_trigger_delay_next)
|
||||
trigger(delayed = TRUE)
|
||||
timer_trigger_delay_next = 0
|
||||
|
||||
if(check_conditions() && consume_nanites(use_rate))
|
||||
if(!passive_enabled)
|
||||
enable_passive_effect()
|
||||
@@ -160,6 +190,10 @@ datum/nanite_program/proc/on_mob_remove()
|
||||
//If false, disables active and passive effects, but doesn't consume nanites
|
||||
//Can be used to avoid consuming nanites for nothing
|
||||
/datum/nanite_program/proc/check_conditions()
|
||||
for(var/R in rules)
|
||||
var/datum/nanite_rule/rule = R
|
||||
if(!rule.check_rule())
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
//Constantly procs as long as the program is active
|
||||
@@ -174,15 +208,25 @@ datum/nanite_program/proc/on_mob_remove()
|
||||
/datum/nanite_program/proc/disable_passive_effect()
|
||||
passive_enabled = FALSE
|
||||
|
||||
/datum/nanite_program/proc/trigger()
|
||||
//Checks conditions then fires the nanite trigger effect
|
||||
/datum/nanite_program/proc/trigger(delayed = FALSE, comm_message)
|
||||
if(!can_trigger)
|
||||
return
|
||||
if(!activated)
|
||||
return FALSE
|
||||
return
|
||||
if(timer_trigger_delay && !delayed)
|
||||
timer_trigger_delay_next = world.time + timer_trigger_delay
|
||||
return
|
||||
if(world.time < next_trigger)
|
||||
return FALSE
|
||||
return
|
||||
if(!consume_nanites(trigger_cost))
|
||||
return FALSE
|
||||
return
|
||||
next_trigger = world.time + trigger_cooldown
|
||||
return TRUE
|
||||
on_trigger(comm_message)
|
||||
|
||||
//Nanite trigger effect, requires can_trigger to be used
|
||||
/datum/nanite_program/proc/on_trigger(comm_message)
|
||||
return
|
||||
|
||||
/datum/nanite_program/proc/consume_nanites(amount, force = FALSE)
|
||||
return nanites.consume_nanites(amount, force)
|
||||
@@ -234,24 +278,36 @@ datum/nanite_program/proc/on_mob_remove()
|
||||
/datum/nanite_program/proc/receive_signal(code, source)
|
||||
if(activation_code && code == activation_code && !activated)
|
||||
activate()
|
||||
host_mob.investigate_log("[host_mob]'s [name] nanite program was activated by [source] with code [code].", INVESTIGATE_NANITES)
|
||||
host_mob.investigate_log("'s [name] nanite program was activated by [source] with code [code].", INVESTIGATE_NANITES)
|
||||
else if(deactivation_code && code == deactivation_code && activated)
|
||||
deactivate()
|
||||
host_mob.investigate_log("[host_mob]'s [name] nanite program was deactivated by [source] with code [code].", INVESTIGATE_NANITES)
|
||||
if(kill_code && code == kill_code)
|
||||
host_mob.investigate_log("[host_mob]'s [name] nanite program was deleted by [source] with code [code].", INVESTIGATE_NANITES)
|
||||
qdel(src)
|
||||
else if(can_trigger && trigger_code && code == trigger_code)
|
||||
host_mob.investigate_log("'s [name] nanite program was deactivated by [source] with code [code].", INVESTIGATE_NANITES)
|
||||
if(can_trigger && trigger_code && code == trigger_code)
|
||||
trigger()
|
||||
host_mob.investigate_log("[host_mob]'s [name] nanite program was triggered by [source] with code [code].", INVESTIGATE_NANITES)
|
||||
host_mob.investigate_log("'s [name] nanite program was triggered by [source] with code [code].", INVESTIGATE_NANITES)
|
||||
if(kill_code && code == kill_code)
|
||||
host_mob.investigate_log("'s [name] nanite program was deleted by [source] with code [code].", INVESTIGATE_NANITES)
|
||||
qdel(src)
|
||||
|
||||
///A nanite program containing a behaviour protocol. Only one protocol of each class can be active at once.
|
||||
//Currently unused due to us lacking the B.E.P.I.S
|
||||
/datum/nanite_program/protocol
|
||||
name = "Nanite Protocol"
|
||||
var/protocol_class = NONE
|
||||
|
||||
/datum/nanite_program/protocol/check_conditions()
|
||||
. = ..()
|
||||
for(var/protocol in nanites.protocols)
|
||||
var/datum/nanite_program/protocol/P = protocol
|
||||
if(P != src && P.activated && P.protocol_class == protocol_class)
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_program/protocol/on_add(datum/component/nanites/_nanites)
|
||||
..()
|
||||
nanites.protocols += src
|
||||
|
||||
/datum/nanite_program/protocol/Destroy()
|
||||
if(nanites)
|
||||
nanites.protocols -= src
|
||||
return ..()
|
||||
|
||||
/datum/nanite_program/proc/get_timer_type_text()
|
||||
switch(timer_type)
|
||||
if(NANITE_TIMER_DEACTIVATE)
|
||||
return "Deactivate"
|
||||
if(NANITE_TIMER_SELFDELETE)
|
||||
return "Self-Delete"
|
||||
if(NANITE_TIMER_TRIGGER)
|
||||
return "Trigger"
|
||||
if(NANITE_TIMER_RESET)
|
||||
return "Reset Activation Timer"
|
||||
|
||||
@@ -18,24 +18,16 @@
|
||||
var/mob/living/carbon/human/H = host_mob
|
||||
H.physiology.stun_mod *= 2
|
||||
|
||||
/datum/nanite_program/triggered/adrenaline
|
||||
/datum/nanite_program/adrenaline
|
||||
name = "Adrenaline Burst"
|
||||
desc = "The nanites cause a burst of adrenaline when triggered, waking the host from stuns and temporarily increasing their speed."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 25
|
||||
trigger_cooldown = 1200
|
||||
rogue_types = list(/datum/nanite_program/toxic, /datum/nanite_program/nerve_decay)
|
||||
|
||||
/datum/nanite_program/triggered/adrenaline/trigger()
|
||||
if(!..())
|
||||
return
|
||||
to_chat(host_mob, "<span class='notice'>You feel a sudden surge of energy!</span>")
|
||||
host_mob.SetStun(0)
|
||||
host_mob.SetKnockdown(0)
|
||||
host_mob.SetUnconscious(0)
|
||||
host_mob.adjustStaminaLoss(-10) //stimulants give stamina heal now
|
||||
host_mob.lying = 0
|
||||
host_mob.update_canmove()
|
||||
host_mob.reagents.add_reagent(/datum/reagent/medicine/stimulants, 1.5)
|
||||
/datum/nanite_program/adrenaline/on_trigger()
|
||||
host_mob.do_adrenaline(-10, TRUE, TRUE, FALSE, TRUE, list(/datum/reagent/medicine/stimulants = 1.5), "<span class='notice'>You feel a sudden surge of energy!</span>", FALSE, FALSE, FALSE)
|
||||
|
||||
/datum/nanite_program/hardening
|
||||
name = "Dermal Hardening"
|
||||
@@ -120,7 +112,7 @@
|
||||
|
||||
/datum/nanite_program/mindshield/enable_passive_effect()
|
||||
. = ..()
|
||||
if(!host_mob.mind.has_antag_datum(/datum/antagonist/rev)) //won't work if on a rev, to avoid having implanted revs
|
||||
if(!host_mob.mind.has_antag_datum(/datum/antagonist/rev, TRUE)) //won't work if on a rev, to avoid having implanted revs.
|
||||
ADD_TRAIT(host_mob, TRAIT_MINDSHIELD, "nanites")
|
||||
host_mob.sec_hud_set_implants()
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
if(!parts.len)
|
||||
return
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(0.5/parts.len, 0.5/parts.len, null, BODYPART_ORGANIC))
|
||||
if(L.heal_damage(0.5/parts.len, 0.5/parts.len))
|
||||
host_mob.update_damage_overlays()
|
||||
else
|
||||
host_mob.adjustBruteLoss(-0.5, TRUE)
|
||||
@@ -48,12 +48,12 @@
|
||||
|
||||
/datum/nanite_program/purging
|
||||
name = "Blood Purification"
|
||||
desc = "The nanites purge toxins and chemicals from the host's bloodstream, however it is dangerous to slimepeople biology due to inaccuracy."
|
||||
desc = "The nanites purge toxins and chemicals from the host's bloodstream, however it is dangerous to slime biology due to inaccuracy."
|
||||
use_rate = 1
|
||||
rogue_types = list(/datum/nanite_program/suffocating, /datum/nanite_program/necrotic)
|
||||
|
||||
/datum/nanite_program/purging/check_conditions()
|
||||
var/foreign_reagent = LAZYLEN(host_mob.reagents.reagent_list)
|
||||
var/foreign_reagent = length(host_mob.reagents?.reagent_list)
|
||||
if(!host_mob.getToxLoss() && !foreign_reagent)
|
||||
return FALSE
|
||||
return ..()
|
||||
@@ -73,18 +73,17 @@
|
||||
rogue_types = list(/datum/nanite_program/brain_decay)
|
||||
|
||||
/datum/nanite_program/brain_heal/check_conditions()
|
||||
var/problems = FALSE
|
||||
if(iscarbon(host_mob))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
for(var/X in C.get_traumas())
|
||||
var/datum/brain_trauma/BT = X
|
||||
if(BT.resilience <= TRAUMA_RESILIENCE_BASIC)
|
||||
return ..()
|
||||
if(host_mob.getOrganLoss(ORGAN_SLOT_BRAIN))
|
||||
return ..()
|
||||
return FALSE
|
||||
if(length(C.get_traumas()))
|
||||
problems = TRUE
|
||||
if(host_mob.getOrganLoss(ORGAN_SLOT_BRAIN) > 0)
|
||||
problems = TRUE
|
||||
return problems ? ..() : FALSE
|
||||
|
||||
/datum/nanite_program/brain_heal/active_effect()
|
||||
host_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1, TRUE)
|
||||
host_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1)
|
||||
if(iscarbon(host_mob) && prob(10))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC)
|
||||
@@ -137,7 +136,7 @@
|
||||
return
|
||||
var/update = FALSE
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(1.5/parts.len, 1.5/parts.len, null, BODYPART_ROBOTIC)) //much faster than organic healing
|
||||
if(L.heal_damage(1.5/parts.len, 1.5/parts.len, null, TRUE, FALSE)) //much faster than organic healing
|
||||
update = TRUE
|
||||
if(update)
|
||||
host_mob.update_damage_overlays()
|
||||
@@ -148,7 +147,7 @@
|
||||
/datum/nanite_program/purging_advanced
|
||||
name = "Selective Blood Purification"
|
||||
desc = "The nanites purge toxins and dangerous chemicals from the host's bloodstream, while ignoring beneficial chemicals. \
|
||||
The added processing power required to analyze the chemicals severely increases the nanite consumption rate. Due to added complexity, it is safe with slimepeople biology."
|
||||
The added processing power required to analyze the chemicals severely increases the nanite consumption rate. This program is safe with slime biology due to the increased precision."
|
||||
use_rate = 2
|
||||
rogue_types = list(/datum/nanite_program/suffocating, /datum/nanite_program/necrotic)
|
||||
|
||||
@@ -181,7 +180,7 @@
|
||||
return
|
||||
var/update = FALSE
|
||||
for(var/obj/item/bodypart/L in parts)
|
||||
if(L.heal_damage(3/parts.len, 3/parts.len))
|
||||
if(L.heal_damage(3/parts.len, 3/parts.len, FALSE))
|
||||
update = TRUE
|
||||
if(update)
|
||||
host_mob.update_damage_overlays()
|
||||
@@ -196,70 +195,54 @@
|
||||
rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire)
|
||||
|
||||
/datum/nanite_program/brain_heal_advanced/check_conditions()
|
||||
var/problems = FALSE
|
||||
if(iscarbon(host_mob))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
for(var/X in C.get_traumas())
|
||||
var/datum/brain_trauma/BT = X
|
||||
if(BT.resilience <= TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
return ..()
|
||||
if(host_mob.getOrganLoss(ORGAN_SLOT_BRAIN))
|
||||
return ..()
|
||||
return FALSE
|
||||
if(length(C.get_traumas()))
|
||||
problems = TRUE
|
||||
if(host_mob.getOrganLoss(ORGAN_SLOT_BRAIN) > 0)
|
||||
problems = TRUE
|
||||
return problems ? ..() : FALSE
|
||||
|
||||
/datum/nanite_program/brain_heal_advanced/active_effect()
|
||||
host_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -2, TRUE)
|
||||
host_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -2)
|
||||
if(iscarbon(host_mob) && prob(10))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
|
||||
/datum/nanite_program/triggered/defib
|
||||
/datum/nanite_program/defib
|
||||
name = "Defibrillation"
|
||||
desc = "The nanites shock the host's heart when triggered, bringing them back to life if the body can sustain it."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 25
|
||||
trigger_cooldown = 120
|
||||
rogue_types = list(/datum/nanite_program/triggered/shocking)
|
||||
|
||||
/datum/nanite_program/triggered/defib/trigger()
|
||||
if(!..())
|
||||
return
|
||||
rogue_types = list(/datum/nanite_program/shocking)
|
||||
|
||||
/datum/nanite_program/defib/on_trigger(comm_message)
|
||||
host_mob.notify_ghost_cloning("Your heart is being defibrillated by nanites. Re-enter your corpse if you want to be revived!")
|
||||
addtimer(CALLBACK(src, .proc/zap), 50)
|
||||
|
||||
/datum/nanite_program/triggered/defib/proc/check_revivable()
|
||||
/datum/nanite_program/defib/proc/check_revivable()
|
||||
if(!iscarbon(host_mob)) //nonstandard biology
|
||||
return FALSE
|
||||
var/mob/living/carbon/C = host_mob
|
||||
if(C.suiciding || HAS_TRAIT(C, TRAIT_NOCLONE) || C.hellbound) //can't revive
|
||||
return FALSE
|
||||
if((world.time - C.timeofdeath) > 1800) //too late
|
||||
return FALSE
|
||||
if((C.getBruteLoss() > 180) || (C.getFireLoss() > 180) || !C.can_be_revived()) //too damaged
|
||||
return FALSE
|
||||
if(!C.getorgan(/obj/item/organ/heart)) //what are we even shocking
|
||||
return FALSE
|
||||
var/obj/item/organ/brain/BR = C.getorgan(/obj/item/organ/brain)
|
||||
if(QDELETED(BR) || BR.brain_death || (BR.organ_flags & ORGAN_FAILING) || C.suiciding)
|
||||
return FALSE
|
||||
if(C.get_ghost())
|
||||
return FALSE
|
||||
return TRUE
|
||||
return C.can_defib()
|
||||
|
||||
/datum/nanite_program/triggered/defib/proc/zap()
|
||||
/datum/nanite_program/defib/proc/zap()
|
||||
var/mob/living/carbon/C = host_mob
|
||||
playsound(C, 'sound/machines/defib_charge.ogg', 50, 0)
|
||||
playsound(C, 'sound/machines/defib_charge.ogg', 50, FALSE)
|
||||
sleep(30)
|
||||
playsound(C, 'sound/machines/defib_zap.ogg', 50, 0)
|
||||
playsound(C, 'sound/machines/defib_zap.ogg', 50, FALSE)
|
||||
if(check_revivable())
|
||||
playsound(C, 'sound/machines/defib_success.ogg', 50, 0)
|
||||
playsound(C, 'sound/machines/defib_success.ogg', 50, FALSE)
|
||||
C.set_heartattack(FALSE)
|
||||
C.revive()
|
||||
C.revive(full_heal = FALSE, admin_revive = FALSE)
|
||||
C.emote("gasp")
|
||||
C.Jitter(100)
|
||||
SEND_SIGNAL(C, COMSIG_LIVING_MINOR_SHOCK)
|
||||
var/tplus = world.time - C.timeofdeath
|
||||
if(tplus > 600)
|
||||
C.adjustOrganLoss(ORGAN_SLOT_BRAIN, max(0, ((1800 - tplus) / 1800 * 150)), 150)
|
||||
log_game("[C] has been successfully defibrillated by nanites.")
|
||||
else
|
||||
playsound(C, 'sound/machines/defib_failed.ogg', 50, 0)
|
||||
playsound(C, 'sound/machines/defib_failed.ogg', 50, FALSE)
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
//Replication Protocols
|
||||
/datum/nanite_program/protocol/kickstart
|
||||
name = "Kickstart Protocol"
|
||||
desc = "Replication Protocol: the nanites focus on early growth, heavily boosting replication rate for a few minutes after the initial implantation."
|
||||
use_rate = 0
|
||||
rogue_types = list(/datum/nanite_program/necrotic)
|
||||
protocol_class = NANITE_PROTOCOL_REPLICATION
|
||||
var/boost_duration = 1200
|
||||
|
||||
/datum/nanite_program/protocol/kickstart/check_conditions()
|
||||
if(!(world.time < nanites.start_time + boost_duration))
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/nanite_program/protocol/kickstart/active_effect()
|
||||
nanites.adjust_nanites(null, 3.5)
|
||||
|
||||
/datum/nanite_program/protocol/factory
|
||||
name = "Factory Protocol"
|
||||
desc = "Replication Protocol: the nanites build a factory matrix within the host, gradually increasing replication speed over time. \
|
||||
The factory decays if the protocol is not active, or if the nanites are disrupted by shocks or EMPs."
|
||||
use_rate = 0
|
||||
rogue_types = list(/datum/nanite_program/necrotic)
|
||||
protocol_class = NANITE_PROTOCOL_REPLICATION
|
||||
var/factory_efficiency = 0
|
||||
var/max_efficiency = 1000 //Goes up to 2 bonus regen per tick after 16 minutes and 40 seconds
|
||||
|
||||
/datum/nanite_program/protocol/factory/on_process()
|
||||
if(!activated || !check_conditions())
|
||||
factory_efficiency = max(0, factory_efficiency - 5)
|
||||
..()
|
||||
|
||||
/datum/nanite_program/protocol/factory/on_emp(severity)
|
||||
..()
|
||||
factory_efficiency = max(0, factory_efficiency - 300)
|
||||
|
||||
/datum/nanite_program/protocol/factory/on_shock(shock_damage)
|
||||
..()
|
||||
factory_efficiency = max(0, factory_efficiency - 200)
|
||||
|
||||
/datum/nanite_program/protocol/factory/on_minor_shock()
|
||||
..()
|
||||
factory_efficiency = max(0, factory_efficiency - 100)
|
||||
|
||||
/datum/nanite_program/protocol/factory/active_effect()
|
||||
factory_efficiency = min(factory_efficiency + 1, max_efficiency)
|
||||
nanites.adjust_nanites(null, round(0.002 * factory_efficiency, 0.1))
|
||||
|
||||
/datum/nanite_program/protocol/tinker
|
||||
name = "Tinker Protocol"
|
||||
desc = "Replication Protocol: the nanites learn to use metallic material in the host's bloodstream to speed up the replication process."
|
||||
use_rate = 0
|
||||
rogue_types = list(/datum/nanite_program/necrotic)
|
||||
protocol_class = NANITE_PROTOCOL_REPLICATION
|
||||
var/boost = 2
|
||||
var/list/valid_reagents = list(
|
||||
/datum/reagent/iron,
|
||||
/datum/reagent/copper,
|
||||
/datum/reagent/gold,
|
||||
/datum/reagent/silver,
|
||||
/datum/reagent/mercury,
|
||||
/datum/reagent/aluminium,
|
||||
/datum/reagent/silicon)
|
||||
|
||||
/datum/nanite_program/protocol/tinker/check_conditions()
|
||||
if(!nanites.host_mob.reagents)
|
||||
return FALSE
|
||||
|
||||
var/found_reagent = FALSE
|
||||
|
||||
var/datum/reagents/R = nanites.host_mob.reagents
|
||||
for(var/VR in valid_reagents)
|
||||
if(R.has_reagent(VR, 0.5))
|
||||
R.remove_reagent(VR, 0.5)
|
||||
found_reagent = TRUE
|
||||
break
|
||||
if(!found_reagent)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/nanite_program/protocol/tinker/active_effect()
|
||||
nanites.adjust_nanites(null, boost)
|
||||
|
||||
/datum/nanite_program/protocol/offline
|
||||
name = "Offline Production Protocol"
|
||||
desc = "Replication Protocol: while the host is asleep or otherwise unconcious, the nanites exploit the reduced interference to replicate more quickly."
|
||||
use_rate = 0
|
||||
rogue_types = list(/datum/nanite_program/necrotic)
|
||||
protocol_class = NANITE_PROTOCOL_REPLICATION
|
||||
var/boost = 3
|
||||
|
||||
/datum/nanite_program/protocol/offline/check_conditions()
|
||||
var/is_offline = FALSE
|
||||
if(nanites.host_mob.IsSleeping() || nanites.host_mob.IsUnconscious())
|
||||
is_offline = TRUE
|
||||
if(nanites.host_mob.stat == DEAD || HAS_TRAIT(nanites.host_mob, TRAIT_DEATHCOMA))
|
||||
is_offline = TRUE
|
||||
if(nanites.host_mob.InCritical() && !HAS_TRAIT(nanites.host_mob, TRAIT_NOSOFTCRIT))
|
||||
is_offline = TRUE
|
||||
if(nanites.host_mob.InFullCritical() && !HAS_TRAIT(nanites.host_mob, TRAIT_NOHARDCRIT))
|
||||
is_offline = TRUE
|
||||
if(!is_offline)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/nanite_program/protocol/offline/active_effect()
|
||||
nanites.adjust_nanites(null, boost)
|
||||
@@ -2,71 +2,41 @@
|
||||
name = "Sensor Nanites"
|
||||
desc = "These nanites send a signal code when a certain condition is met."
|
||||
unique = FALSE
|
||||
extra_settings = list("Sent Code")
|
||||
var/can_rule = FALSE
|
||||
|
||||
var/sent_code = 0
|
||||
|
||||
/datum/nanite_program/sensor/set_extra_setting(user, setting)
|
||||
if(setting == "Sent Code")
|
||||
var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
sent_code = CLAMP(round(new_code, 1), 1, 9999)
|
||||
|
||||
/datum/nanite_program/sensor/get_extra_setting(setting)
|
||||
if(setting == "Sent Code")
|
||||
return sent_code
|
||||
|
||||
/datum/nanite_program/sensor/copy_extra_settings_to(datum/nanite_program/sensor/target)
|
||||
target.sent_code = sent_code
|
||||
/datum/nanite_program/sensor/register_extra_settings()
|
||||
extra_settings[NES_SENT_CODE] = new /datum/nanite_extra_setting/number(0, 1, 9999)
|
||||
|
||||
/datum/nanite_program/sensor/proc/check_event()
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_program/sensor/proc/send_code()
|
||||
if(activated)
|
||||
SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, sent_code, "a [name] program")
|
||||
var/datum/nanite_extra_setting/ES = extra_settings[NES_SENT_CODE]
|
||||
SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, ES.value, "a [name] program")
|
||||
|
||||
/datum/nanite_program/sensor/active_effect()
|
||||
if(sent_code && check_event())
|
||||
if(check_event())
|
||||
send_code()
|
||||
|
||||
/datum/nanite_program/sensor/proc/make_rule(datum/nanite_program/target)
|
||||
return
|
||||
|
||||
/datum/nanite_program/sensor/repeat
|
||||
name = "Signal Repeater"
|
||||
desc = "When triggered, sends another signal to the nanites, optionally with a delay."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 0
|
||||
trigger_cooldown = 10
|
||||
extra_settings = list("Sent Code","Delay")
|
||||
var/spent = FALSE
|
||||
var/delay = 0
|
||||
|
||||
/datum/nanite_program/sensor/repeat/set_extra_setting(user, setting)
|
||||
if(setting == "Sent Code")
|
||||
var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
sent_code = CLAMP(round(new_code, 1), 1, 9999)
|
||||
if(setting == "Delay")
|
||||
var/new_delay = input(user, "Set the delay in seconds:", name, null) as null|num
|
||||
if(isnull(new_delay))
|
||||
return
|
||||
delay = (CLAMP(round(new_delay, 1), 0, 3600)) * 10 //max 1 hour
|
||||
/datum/nanite_program/sensor/repeat/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_DELAY] = new /datum/nanite_extra_setting/number(0, 0, 3600, "s")
|
||||
|
||||
/datum/nanite_program/sensor/repeat/get_extra_setting(setting)
|
||||
if(setting == "Sent Code")
|
||||
return sent_code
|
||||
if(setting == "Delay")
|
||||
return "[delay/10] seconds"
|
||||
|
||||
/datum/nanite_program/sensor/repeat/copy_extra_settings_to(datum/nanite_program/sensor/repeat/target)
|
||||
target.sent_code = sent_code
|
||||
target.delay = delay
|
||||
|
||||
/datum/nanite_program/sensor/repeat/trigger()
|
||||
if(!..())
|
||||
return
|
||||
addtimer(CALLBACK(src, .proc/send_code), delay)
|
||||
/datum/nanite_program/sensor/repeat/on_trigger(comm_message)
|
||||
var/datum/nanite_extra_setting/ES = extra_settings[NES_DELAY]
|
||||
addtimer(CALLBACK(src, .proc/send_code), ES.get_value() * 10)
|
||||
|
||||
/datum/nanite_program/sensor/relay_repeat
|
||||
name = "Relay Signal Repeater"
|
||||
@@ -74,98 +44,46 @@
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 0
|
||||
trigger_cooldown = 10
|
||||
extra_settings = list("Sent Code","Relay Channel","Delay")
|
||||
var/spent = FALSE
|
||||
var/delay = 0
|
||||
var/relay_channel = 0
|
||||
|
||||
/datum/nanite_program/sensor/relay_repeat/set_extra_setting(user, setting)
|
||||
if(setting == "Sent Code")
|
||||
var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
sent_code = CLAMP(round(new_code, 1), 1, 9999)
|
||||
if(setting == "Relay Channel")
|
||||
var/new_channel = input(user, "Set the relay channel (1-9999):", name, null) as null|num
|
||||
if(isnull(new_channel))
|
||||
return
|
||||
relay_channel = CLAMP(round(new_channel, 1), 1, 9999)
|
||||
if(setting == "Delay")
|
||||
var/new_delay = input(user, "Set the delay in seconds:", name, null) as null|num
|
||||
if(isnull(new_delay))
|
||||
return
|
||||
delay = (CLAMP(round(new_delay, 1), 0, 3600)) * 10 //max 1 hour
|
||||
/datum/nanite_program/sensor/relay_repeat/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_RELAY_CHANNEL] = new /datum/nanite_extra_setting/number(1, 1, 9999)
|
||||
extra_settings[NES_DELAY] = new /datum/nanite_extra_setting/number(0, 0, 3600, "s")
|
||||
|
||||
/datum/nanite_program/sensor/relay_repeat/get_extra_setting(setting)
|
||||
if(setting == "Sent Code")
|
||||
return sent_code
|
||||
if(setting == "Relay Channel")
|
||||
return relay_channel
|
||||
if(setting == "Delay")
|
||||
return "[delay/10] seconds"
|
||||
|
||||
/datum/nanite_program/sensor/relay_repeat/copy_extra_settings_to(datum/nanite_program/sensor/relay_repeat/target)
|
||||
target.sent_code = sent_code
|
||||
target.delay = delay
|
||||
target.relay_channel = relay_channel
|
||||
|
||||
/datum/nanite_program/sensor/relay_repeat/trigger()
|
||||
if(!..())
|
||||
return
|
||||
addtimer(CALLBACK(src, .proc/send_code), delay)
|
||||
/datum/nanite_program/sensor/relay_repeat/on_trigger(comm_message)
|
||||
var/datum/nanite_extra_setting/ES = extra_settings[NES_DELAY]
|
||||
addtimer(CALLBACK(src, .proc/send_code), ES.get_value() * 10)
|
||||
|
||||
/datum/nanite_program/sensor/relay_repeat/send_code()
|
||||
if(activated && relay_channel)
|
||||
var/datum/nanite_extra_setting/relay = extra_settings[NES_RELAY_CHANNEL]
|
||||
if(activated && relay.get_value())
|
||||
for(var/X in SSnanites.nanite_relays)
|
||||
var/datum/nanite_program/relay/N = X
|
||||
N.relay_signal(sent_code, relay_channel, "a [name] program")
|
||||
var/datum/nanite_extra_setting/code = extra_settings[NES_SENT_CODE]
|
||||
N.relay_signal(code.get_value(), relay.get_value(), "a [name] program")
|
||||
|
||||
/datum/nanite_program/sensor/health
|
||||
name = "Health Sensor"
|
||||
desc = "The nanites receive a signal when the host's health is above/below a target percentage."
|
||||
extra_settings = list("Sent Code","Health Percent","Direction")
|
||||
can_rule = TRUE
|
||||
var/spent = FALSE
|
||||
var/percent = 50
|
||||
var/direction = "Above"
|
||||
|
||||
/datum/nanite_program/sensor/health/set_extra_setting(user, setting)
|
||||
if(setting == "Sent Code")
|
||||
var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
sent_code = CLAMP(round(new_code, 1), 1, 9999)
|
||||
if(setting == "Health Percent")
|
||||
var/new_percent = input(user, "Set the health percentage:", name, null) as null|num
|
||||
if(isnull(new_percent))
|
||||
return
|
||||
percent = CLAMP(round(new_percent, 1), -99, 100)
|
||||
if(setting == "Direction")
|
||||
if(direction == "Above")
|
||||
direction = "Below"
|
||||
else
|
||||
direction = "Above"
|
||||
|
||||
/datum/nanite_program/sensor/health/get_extra_setting(setting)
|
||||
if(setting == "Sent Code")
|
||||
return sent_code
|
||||
if(setting == "Health Percent")
|
||||
return "[percent]%"
|
||||
if(setting == "Direction")
|
||||
return direction
|
||||
|
||||
/datum/nanite_program/sensor/health/copy_extra_settings_to(datum/nanite_program/sensor/health/target)
|
||||
target.sent_code = sent_code
|
||||
target.percent = percent
|
||||
target.direction = direction
|
||||
/datum/nanite_program/sensor/health/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_HEALTH_PERCENT] = new /datum/nanite_extra_setting/number(50, -99, 100, "%")
|
||||
extra_settings[NES_DIRECTION] = new /datum/nanite_extra_setting/boolean(TRUE, "Above", "Below")
|
||||
|
||||
/datum/nanite_program/sensor/health/check_event()
|
||||
var/health_percent = host_mob.health / host_mob.maxHealth * 100
|
||||
var/datum/nanite_extra_setting/percent = extra_settings[NES_HEALTH_PERCENT]
|
||||
var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION]
|
||||
var/detected = FALSE
|
||||
if(direction == "Above")
|
||||
if(health_percent >= percent)
|
||||
if(direction.get_value())
|
||||
if(health_percent >= percent.get_value())
|
||||
detected = TRUE
|
||||
else
|
||||
if(health_percent < percent)
|
||||
if(health_percent < percent.get_value())
|
||||
detected = TRUE
|
||||
|
||||
if(detected)
|
||||
@@ -177,9 +95,18 @@
|
||||
spent = FALSE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_program/sensor/health/make_rule(datum/nanite_program/target)
|
||||
var/datum/nanite_rule/health/rule = new(target)
|
||||
var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION]
|
||||
var/datum/nanite_extra_setting/percent = extra_settings[NES_HEALTH_PERCENT]
|
||||
rule.above = direction.get_value()
|
||||
rule.threshold = percent.get_value()
|
||||
return rule
|
||||
|
||||
/datum/nanite_program/sensor/crit
|
||||
name = "Critical Health Sensor"
|
||||
desc = "The nanites receive a signal when the host first reaches critical health."
|
||||
can_rule = TRUE
|
||||
var/spent = FALSE
|
||||
|
||||
/datum/nanite_program/sensor/crit/check_event()
|
||||
@@ -192,61 +119,44 @@
|
||||
spent = FALSE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_program/sensor/crit/make_rule(datum/nanite_program/target)
|
||||
var/datum/nanite_rule/crit/rule = new(target)
|
||||
return rule
|
||||
|
||||
/datum/nanite_program/sensor/death
|
||||
name = "Death Sensor"
|
||||
desc = "The nanites receive a signal when they detect the host is dead."
|
||||
can_rule = TRUE
|
||||
var/spent = FALSE
|
||||
|
||||
/datum/nanite_program/sensor/death/on_death()
|
||||
send_code()
|
||||
|
||||
/datum/nanite_program/sensor/death/make_rule(datum/nanite_program/target)
|
||||
var/datum/nanite_rule/death/rule = new(target)
|
||||
return rule
|
||||
|
||||
/datum/nanite_program/sensor/nanite_volume
|
||||
name = "Nanite Volume Sensor"
|
||||
desc = "The nanites receive a signal when the nanite supply is above/below a certain percentage."
|
||||
extra_settings = list("Sent Code","Nanite Percent","Direction")
|
||||
can_rule = TRUE
|
||||
var/spent = FALSE
|
||||
var/percent = 50
|
||||
var/direction = "Above"
|
||||
|
||||
/datum/nanite_program/sensor/nanite_volume/set_extra_setting(user, setting)
|
||||
if(setting == "Sent Code")
|
||||
var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
sent_code = CLAMP(round(new_code, 1), 1, 9999)
|
||||
if(setting == "Nanite Percent")
|
||||
var/new_percent = input(user, "Set the nanite percentage:", name, null) as null|num
|
||||
if(isnull(new_percent))
|
||||
return
|
||||
percent = CLAMP(round(new_percent, 1), 1, 100)
|
||||
if(setting == "Direction")
|
||||
if(direction == "Above")
|
||||
direction = "Below"
|
||||
else
|
||||
direction = "Above"
|
||||
|
||||
/datum/nanite_program/sensor/nanite_volume/get_extra_setting(setting)
|
||||
if(setting == "Sent Code")
|
||||
return sent_code
|
||||
if(setting == "Nanite Percent")
|
||||
return "[percent]%"
|
||||
if(setting == "Direction")
|
||||
return direction
|
||||
|
||||
/datum/nanite_program/sensor/nanite_volume/copy_extra_settings_to(datum/nanite_program/sensor/nanite_volume/target)
|
||||
target.sent_code = sent_code
|
||||
target.percent = percent
|
||||
target.direction = direction
|
||||
/datum/nanite_program/sensor/nanite_volume/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_NANITE_PERCENT] = new /datum/nanite_extra_setting/number(50, -99, 100, "%")
|
||||
extra_settings[NES_DIRECTION] = new /datum/nanite_extra_setting/boolean(TRUE, "Above", "Below")
|
||||
|
||||
/datum/nanite_program/sensor/nanite_volume/check_event()
|
||||
var/nanite_percent = (nanites.nanite_volume - nanites.safety_threshold)/(nanites.max_nanites - nanites.safety_threshold)*100
|
||||
var/datum/nanite_extra_setting/percent = extra_settings[NES_NANITE_PERCENT]
|
||||
var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION]
|
||||
var/detected = FALSE
|
||||
|
||||
if(direction == "Above")
|
||||
if(nanite_percent >= percent)
|
||||
if(direction.get_value())
|
||||
if(nanite_percent >= percent.get_value())
|
||||
detected = TRUE
|
||||
else
|
||||
if(nanite_percent < percent)
|
||||
if(nanite_percent < percent.get_value())
|
||||
detected = TRUE
|
||||
|
||||
if(detected)
|
||||
@@ -258,75 +168,51 @@
|
||||
spent = FALSE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_program/sensor/nanite_volume/make_rule(datum/nanite_program/target)
|
||||
var/datum/nanite_rule/nanites/rule = new(target)
|
||||
var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION]
|
||||
var/datum/nanite_extra_setting/percent = extra_settings[NES_NANITE_PERCENT]
|
||||
rule.above = direction.get_value()
|
||||
rule.threshold = percent.get_value()
|
||||
return rule
|
||||
|
||||
/datum/nanite_program/sensor/damage
|
||||
name = "Damage Sensor"
|
||||
desc = "The nanites receive a signal when a host's specific damage type is above/below a target value."
|
||||
extra_settings = list("Sent Code","Damage Type","Damage","Direction")
|
||||
can_rule = TRUE
|
||||
var/spent = FALSE
|
||||
var/damage_type = "Brute"
|
||||
var/damage = 50
|
||||
var/direction = "Above"
|
||||
|
||||
/datum/nanite_program/sensor/damage/set_extra_setting(user, setting)
|
||||
if(setting == "Sent Code")
|
||||
var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
sent_code = CLAMP(round(new_code, 1), 1, 9999)
|
||||
if(setting == "Damage")
|
||||
var/new_damage = input(user, "Set the damage threshold:", name, null) as null|num
|
||||
if(isnull(new_damage))
|
||||
return
|
||||
damage = CLAMP(round(new_damage, 1), 0, 500)
|
||||
if(setting == "Damage Type")
|
||||
var/list/damage_types = list("Brute","Burn","Toxin","Oxygen","Cellular")
|
||||
var/new_damage_type = input("Choose the damage type", name) as null|anything in damage_types
|
||||
if(!new_damage_type)
|
||||
return
|
||||
damage_type = new_damage_type
|
||||
if(setting == "Direction")
|
||||
if(direction == "Above")
|
||||
direction = "Below"
|
||||
else
|
||||
direction = "Above"
|
||||
|
||||
/datum/nanite_program/sensor/damage/get_extra_setting(setting)
|
||||
if(setting == "Sent Code")
|
||||
return sent_code
|
||||
if(setting == "Damage")
|
||||
return damage
|
||||
if(setting == "Damage Type")
|
||||
return damage_type
|
||||
if(setting == "Direction")
|
||||
return direction
|
||||
|
||||
/datum/nanite_program/sensor/damage/copy_extra_settings_to(datum/nanite_program/sensor/damage/target)
|
||||
target.sent_code = sent_code
|
||||
target.damage = damage
|
||||
target.damage_type = damage_type
|
||||
target.direction = direction
|
||||
/datum/nanite_program/sensor/damage/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_DAMAGE_TYPE] = new /datum/nanite_extra_setting/type(BRUTE, list(BRUTE, BURN, TOX, OXY, CLONE))
|
||||
extra_settings[NES_DAMAGE] = new /datum/nanite_extra_setting/number(50, 0, 500)
|
||||
extra_settings[NES_DIRECTION] = new /datum/nanite_extra_setting/boolean(TRUE, "Above", "Below")
|
||||
|
||||
/datum/nanite_program/sensor/damage/check_event()
|
||||
var/reached_threshold = FALSE
|
||||
var/check_above = (direction == "Above")
|
||||
var/datum/nanite_extra_setting/type = extra_settings[NES_DAMAGE_TYPE]
|
||||
var/datum/nanite_extra_setting/damage = extra_settings[NES_DAMAGE]
|
||||
var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION]
|
||||
var/check_above = direction.get_value()
|
||||
var/damage_amt = 0
|
||||
switch(damage_type)
|
||||
if("Brute")
|
||||
switch(type.get_value())
|
||||
if(BRUTE)
|
||||
damage_amt = host_mob.getBruteLoss()
|
||||
if("Burn")
|
||||
if(BURN)
|
||||
damage_amt = host_mob.getFireLoss()
|
||||
if("Toxin")
|
||||
if(TOX)
|
||||
damage_amt = host_mob.getToxLoss()
|
||||
if("Oxygen")
|
||||
if(OXY)
|
||||
damage_amt = host_mob.getOxyLoss()
|
||||
if("Cellular")
|
||||
if(CLONE)
|
||||
damage_amt = host_mob.getCloneLoss()
|
||||
|
||||
if(damage_amt >= damage)
|
||||
if(check_above)
|
||||
if(check_above)
|
||||
if(damage_amt >= damage.get_value())
|
||||
reached_threshold = TRUE
|
||||
else
|
||||
if(damage_amt < damage.get_value())
|
||||
reached_threshold = TRUE
|
||||
else if(!check_above)
|
||||
reached_threshold = TRUE
|
||||
|
||||
if(reached_threshold)
|
||||
if(!spent)
|
||||
@@ -337,14 +223,25 @@
|
||||
spent = FALSE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_program/sensor/damage/make_rule(datum/nanite_program/target)
|
||||
var/datum/nanite_rule/damage/rule = new(target)
|
||||
var/datum/nanite_extra_setting/direction = extra_settings[NES_DIRECTION]
|
||||
var/datum/nanite_extra_setting/damage_type = extra_settings[NES_DAMAGE_TYPE]
|
||||
var/datum/nanite_extra_setting/damage = extra_settings[NES_DAMAGE]
|
||||
rule.above = direction.get_value()
|
||||
rule.threshold = damage.get_value()
|
||||
rule.damage_type = damage_type.get_value()
|
||||
return rule
|
||||
|
||||
/datum/nanite_program/sensor/voice
|
||||
name = "Voice Sensor"
|
||||
desc = "Sends a signal when the nanites hear a determined word or sentence."
|
||||
extra_settings = list("Sent Code","Sentence","Inclusive Mode")
|
||||
var/spent = FALSE
|
||||
var/sentence = ""
|
||||
var/inclusive = TRUE
|
||||
|
||||
/datum/nanite_program/sensor/voice/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_SENTENCE] = new /datum/nanite_extra_setting/text("")
|
||||
extra_settings[NES_INCLUSIVE_MODE] = new /datum/nanite_extra_setting/boolean(TRUE, "Inclusive", "Exclusive")
|
||||
|
||||
/datum/nanite_program/sensor/voice/on_mob_add()
|
||||
. = ..()
|
||||
@@ -353,45 +250,14 @@
|
||||
/datum/nanite_program/sensor/voice/on_mob_remove()
|
||||
UnregisterSignal(host_mob, COMSIG_MOVABLE_HEAR, .proc/on_hear)
|
||||
|
||||
/datum/nanite_program/sensor/voice/set_extra_setting(user, setting)
|
||||
if(setting == "Sent Code")
|
||||
var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
sent_code = CLAMP(round(new_code, 1), 1, 9999)
|
||||
if(setting == "Sentence")
|
||||
var/new_sentence = stripped_input(user, "Choose the sentence that triggers the sensor.", "Sentence", sentence, MAX_MESSAGE_LEN)
|
||||
if(!new_sentence)
|
||||
return
|
||||
sentence = new_sentence
|
||||
if(setting == "Inclusive Mode")
|
||||
var/new_inclusive = input("Should the sensor detect the sentence if contained within another sentence?", name) as null|anything in list("Inclusive","Exclusive")
|
||||
if(!new_inclusive)
|
||||
return
|
||||
inclusive = (new_inclusive == "Inclusive")
|
||||
|
||||
/datum/nanite_program/sensor/voice/get_extra_setting(setting)
|
||||
if(setting == "Sent Code")
|
||||
return sent_code
|
||||
if(setting == "Sentence")
|
||||
return sentence
|
||||
if(setting == "Inclusive Mode")
|
||||
if(inclusive)
|
||||
return "Inclusive"
|
||||
else
|
||||
return "Exclusive"
|
||||
|
||||
/datum/nanite_program/sensor/voice/copy_extra_settings_to(datum/nanite_program/sensor/voice/target)
|
||||
target.sent_code = sent_code
|
||||
target.sentence = sentence
|
||||
target.inclusive = inclusive
|
||||
|
||||
/datum/nanite_program/sensor/voice/proc/on_hear(datum/source, list/hearing_args)
|
||||
if(!sentence)
|
||||
var/datum/nanite_extra_setting/sentence = extra_settings[NES_SENTENCE]
|
||||
var/datum/nanite_extra_setting/inclusive = extra_settings[NES_INCLUSIVE_MODE]
|
||||
if(!sentence.get_value())
|
||||
return
|
||||
if(inclusive)
|
||||
if(inclusive.get_value())
|
||||
if(findtextEx(hearing_args[HEARING_RAW_MESSAGE], sentence))
|
||||
send_code()
|
||||
else
|
||||
if(hearing_args[HEARING_RAW_MESSAGE] == sentence)
|
||||
send_code()
|
||||
send_code()
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
//Programs that are generally useful for population control and non-harmful suppression.
|
||||
|
||||
/datum/nanite_program/triggered/sleepy
|
||||
/datum/nanite_program/sleepy
|
||||
name = "Sleep Induction"
|
||||
desc = "The nanites cause rapid narcolepsy when triggered."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 15
|
||||
trigger_cooldown = 1200
|
||||
rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay)
|
||||
|
||||
/datum/nanite_program/triggered/sleepy/trigger()
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/sleepy/on_trigger(comm_message)
|
||||
to_chat(host_mob, "<span class='warning'>You start to feel very sleepy...</span>")
|
||||
host_mob.drowsyness += 20
|
||||
addtimer(CALLBACK(host_mob, /mob/living.proc/Sleeping, 200), rand(60,200))
|
||||
@@ -31,30 +30,28 @@
|
||||
. = ..()
|
||||
to_chat(host_mob, "<span class='notice'>Your muscles relax, and you can move again.</span>")
|
||||
|
||||
/datum/nanite_program/triggered/shocking
|
||||
/datum/nanite_program/shocking
|
||||
name = "Electric Shock"
|
||||
desc = "The nanites shock the host when triggered. Destroys a large amount of nanites!"
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 10
|
||||
trigger_cooldown = 300
|
||||
program_flags = NANITE_SHOCK_IMMUNE
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
/datum/nanite_program/triggered/shocking/trigger()
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/shocking/on_trigger(comm_message)
|
||||
host_mob.electrocute_act(rand(5,10), "shock nanites", TRUE, TRUE)
|
||||
|
||||
/datum/nanite_program/triggered/stun
|
||||
/datum/nanite_program/stun
|
||||
name = "Neural Shock"
|
||||
desc = "The nanites pulse the host's nerves when triggered, inapacitating them for a short period."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 4
|
||||
trigger_cooldown = 300
|
||||
rogue_types = list(/datum/nanite_program/triggered/shocking, /datum/nanite_program/nerve_decay)
|
||||
rogue_types = list(/datum/nanite_program/shocking, /datum/nanite_program/nerve_decay)
|
||||
|
||||
/datum/nanite_program/triggered/stun/trigger()
|
||||
if(!..())
|
||||
return
|
||||
playsound(host_mob, "sparks", 75, 1, -1)
|
||||
/datum/nanite_program/stun/on_trigger(comm_message)
|
||||
playsound(host_mob, "sparks", 75, TRUE, -1)
|
||||
host_mob.Knockdown(80)
|
||||
|
||||
/datum/nanite_program/pacifying
|
||||
@@ -115,64 +112,50 @@
|
||||
host_mob.cure_fakedeath("nanites")
|
||||
|
||||
//Can receive transmissions from a nanite communication remote for customized messages
|
||||
/datum/nanite_program/triggered/comm
|
||||
/datum/nanite_program/comm
|
||||
can_trigger = TRUE
|
||||
var/comm_code = 0
|
||||
var/comm_message = ""
|
||||
|
||||
/datum/nanite_program/triggered/comm/proc/receive_comm_signal(signal_comm_code, comm_message, comm_source)
|
||||
/datum/nanite_program/comm/register_extra_settings()
|
||||
extra_settings[NES_COMM_CODE] = new /datum/nanite_extra_setting/number(0, 0, 9999)
|
||||
|
||||
/datum/nanite_program/comm/proc/receive_comm_signal(signal_comm_code, comm_message, comm_source)
|
||||
if(!activated || !comm_code)
|
||||
return
|
||||
if(signal_comm_code == comm_code)
|
||||
host_mob.investigate_log("'s [name] nanite program was messaged by [comm_source] with comm code [signal_comm_code] and message '[comm_message]'.", INVESTIGATE_NANITES)
|
||||
trigger(comm_message)
|
||||
|
||||
/datum/nanite_program/triggered/comm/speech
|
||||
/datum/nanite_program/comm/speech
|
||||
name = "Forced Speech"
|
||||
desc = "The nanites force the host to say a pre-programmed sentence when triggered."
|
||||
unique = FALSE
|
||||
trigger_cost = 3
|
||||
trigger_cooldown = 20
|
||||
rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay)
|
||||
var/static/list/blacklist = list(
|
||||
"*surrender",
|
||||
"*collapse"
|
||||
)
|
||||
|
||||
extra_settings = list("Sentence","Comm Code")
|
||||
var/sentence = ""
|
||||
/datum/nanite_program/comm/speech/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_SENTENCE] = new /datum/nanite_extra_setting/text("")
|
||||
|
||||
/datum/nanite_program/triggered/comm/speech/set_extra_setting(user, setting)
|
||||
if(setting == "Sentence")
|
||||
var/new_sentence = stripped_input(user, "Choose the sentence that the host will be forced to say.", "Sentence", sentence, MAX_MESSAGE_LEN)
|
||||
if(!new_sentence)
|
||||
return
|
||||
if(new_sentence[1] == "*") //emotes are abusable, like surrender
|
||||
return
|
||||
sentence = new_sentence
|
||||
if(setting == "Comm Code")
|
||||
var/new_code = input(user, "Set the communication code (1-9999) or set to 0 to disable external signals.", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
comm_code = CLAMP(round(new_code, 1), 0, 9999)
|
||||
|
||||
/datum/nanite_program/triggered/comm/speech/get_extra_setting(setting)
|
||||
if(setting == "Sentence")
|
||||
return sentence
|
||||
if(setting == "Comm Code")
|
||||
return comm_code
|
||||
|
||||
/datum/nanite_program/triggered/comm/speech/copy_extra_settings_to(datum/nanite_program/triggered/comm/speech/target)
|
||||
target.sentence = sentence
|
||||
target.comm_code = comm_code
|
||||
|
||||
/datum/nanite_program/triggered/comm/speech/trigger(comm_message)
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/comm/speech/on_trigger(comm_message)
|
||||
var/sent_message = comm_message
|
||||
if(!comm_message)
|
||||
sent_message = sentence
|
||||
var/datum/nanite_extra_setting/sentence = extra_settings[NES_SENTENCE]
|
||||
sent_message = sentence.get_value()
|
||||
if(sent_message in blacklist)
|
||||
return
|
||||
if(host_mob.stat == DEAD)
|
||||
return
|
||||
to_chat(host_mob, "<span class='warning'>You feel compelled to speak...</span>")
|
||||
host_mob.say(sent_message, forced = "nanite speech")
|
||||
|
||||
/datum/nanite_program/triggered/comm/voice
|
||||
/datum/nanite_program/comm/voice
|
||||
name = "Skull Echo"
|
||||
desc = "The nanites echo a synthesized message inside the host's skull."
|
||||
unique = FALSE
|
||||
@@ -180,56 +163,50 @@
|
||||
trigger_cooldown = 20
|
||||
rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay)
|
||||
|
||||
extra_settings = list("Message","Comm Code")
|
||||
var/message = ""
|
||||
/datum/nanite_program/comm/voice/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_MESSAGE] = new /datum/nanite_extra_setting/text("")
|
||||
|
||||
/datum/nanite_program/triggered/comm/voice/set_extra_setting(user, setting)
|
||||
if(setting == "Message")
|
||||
var/new_message = stripped_input(user, "Choose the message sent to the host.", "Message", message, MAX_MESSAGE_LEN)
|
||||
if(!new_message)
|
||||
return
|
||||
message = new_message
|
||||
if(setting == "Comm Code")
|
||||
var/new_code = input(user, "Set the communication code (1-9999) or set to 0 to disable external signals.", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
comm_code = CLAMP(round(new_code, 1), 0, 9999)
|
||||
|
||||
/datum/nanite_program/triggered/comm/voice/get_extra_setting(setting)
|
||||
if(setting == "Message")
|
||||
return message
|
||||
if(setting == "Comm Code")
|
||||
return comm_code
|
||||
|
||||
/datum/nanite_program/triggered/comm/voice/copy_extra_settings_to(datum/nanite_program/triggered/comm/voice/target)
|
||||
target.message = message
|
||||
target.comm_code = comm_code
|
||||
|
||||
/datum/nanite_program/triggered/comm/voice/trigger(comm_message)
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/comm/voice/on_trigger(comm_message)
|
||||
var/sent_message = comm_message
|
||||
if(!comm_message)
|
||||
sent_message = message
|
||||
var/datum/nanite_extra_setting/message_setting = extra_settings[NES_MESSAGE]
|
||||
sent_message = message_setting.get_value()
|
||||
if(host_mob.stat == DEAD)
|
||||
return
|
||||
to_chat(host_mob, "<i>You hear a strange, robotic voice in your head...</i> \"<span class='robot'>[sent_message]</span>\"")
|
||||
|
||||
/datum/nanite_program/triggered/comm/hallucination
|
||||
/datum/nanite_program/comm/hallucination
|
||||
name = "Hallucination"
|
||||
desc = "The nanites make the host hallucinate something when triggered."
|
||||
trigger_cost = 4
|
||||
trigger_cooldown = 80
|
||||
unique = FALSE
|
||||
rogue_types = list(/datum/nanite_program/brain_misfire)
|
||||
extra_settings = list("Hallucination Type", "Comm Code")
|
||||
var/hal_type
|
||||
var/hal_details
|
||||
|
||||
/datum/nanite_program/triggered/comm/hallucination/trigger(comm_message)
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/comm/hallucination/register_extra_settings()
|
||||
. = ..()
|
||||
var/list/options = list(
|
||||
"Message",
|
||||
"Battle",
|
||||
"Sound",
|
||||
"Weird Sound",
|
||||
"Station Message",
|
||||
"Health",
|
||||
"Alert",
|
||||
"Fire",
|
||||
"Shock",
|
||||
"Plasma Flood",
|
||||
"Random"
|
||||
)
|
||||
extra_settings[NES_HALLUCINATION_TYPE] = new /datum/nanite_extra_setting/type("Message", options)
|
||||
extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/text("")
|
||||
|
||||
/datum/nanite_program/comm/hallucination/on_trigger(comm_message)
|
||||
var/datum/nanite_extra_setting/hal_setting = extra_settings[NES_HALLUCINATION_TYPE]
|
||||
var/hal_type = hal_setting.get_value()
|
||||
var/datum/nanite_extra_setting/hal_detail_setting = extra_settings[NES_HALLUCINATION_DETAIL]
|
||||
var/hal_details = hal_detail_setting.get_value()
|
||||
if(comm_message && (hal_type != "Message")) //Triggered via comm remote, but not set to a message hallucination
|
||||
return
|
||||
var/sent_message = comm_message //Comm remotes can send custom hallucination messages for the chat hallucination
|
||||
@@ -239,7 +216,9 @@
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
var/mob/living/carbon/C = host_mob
|
||||
if(!hal_type)
|
||||
if(hal_details == "random")
|
||||
hal_details = null
|
||||
if(hal_type == "Random")
|
||||
C.hallucination += 15
|
||||
else
|
||||
switch(hal_type)
|
||||
@@ -254,6 +233,13 @@
|
||||
if("Station Message")
|
||||
new /datum/hallucination/stationmessage(C, TRUE, hal_details)
|
||||
if("Health")
|
||||
switch(hal_details)
|
||||
if("critical")
|
||||
hal_details = SCREWYHUD_CRIT
|
||||
if("dead")
|
||||
hal_details = SCREWYHUD_DEAD
|
||||
if("healthy")
|
||||
hal_details = SCREWYHUD_HEALTHY
|
||||
new /datum/hallucination/hudscrew(C, TRUE, hal_details)
|
||||
if("Alert")
|
||||
new /datum/hallucination/fake_alert(C, TRUE, hal_details)
|
||||
@@ -264,127 +250,40 @@
|
||||
if("Plasma Flood")
|
||||
new /datum/hallucination/fake_flood(C, TRUE)
|
||||
|
||||
/datum/nanite_program/triggered/comm/hallucination/set_extra_setting(user, setting)
|
||||
if(setting == "Comm Code")
|
||||
var/new_code = input(user, "(Only for Message) Set the communication code (1-9999) or set to 0 to disable external signals.", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
comm_code = CLAMP(round(new_code, 1), 0, 9999)
|
||||
|
||||
if(setting == "Hallucination Type")
|
||||
var/list/possible_hallucinations = list("Random","Message","Battle","Sound","Weird Sound","Station Message","Health","Alert","Fire","Shock","Plasma Flood")
|
||||
var/hal_type_choice = input("Choose the hallucination type", name) as null|anything in possible_hallucinations
|
||||
if(!hal_type_choice)
|
||||
return
|
||||
switch(hal_type_choice)
|
||||
if("Random")
|
||||
hal_type = null
|
||||
hal_details = null
|
||||
/datum/nanite_program/comm/hallucination/set_extra_setting(setting, value)
|
||||
. = ..()
|
||||
if(setting == NES_HALLUCINATION_TYPE)
|
||||
switch(value)
|
||||
if("Message")
|
||||
hal_type = "Message"
|
||||
var/hal_chat = stripped_input(user, "Choose the message the host will hear, or leave empty for random messages.", "Message", hal_details, MAX_MESSAGE_LEN)
|
||||
if(hal_chat)
|
||||
hal_details = hal_chat
|
||||
extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/text("")
|
||||
if("Battle")
|
||||
hal_type = "Battle"
|
||||
var/sound_list = list("random","laser","disabler","esword","gun","stunprod","harmbaton","bomb")
|
||||
var/hal_choice = input("Choose the hallucination battle type", name) as null|anything in sound_list
|
||||
if(!hal_choice || hal_choice == "random")
|
||||
hal_details = null
|
||||
else
|
||||
hal_details = hal_choice
|
||||
extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","laser","disabler","esword","gun","stunprod","harmbaton","bomb"))
|
||||
if("Sound")
|
||||
hal_type = "Sound"
|
||||
var/sound_list = list("random","airlock","airlock pry","console","explosion","far explosion","mech","glass","alarm","beepsky","mech","wall decon","door hack")
|
||||
var/hal_choice = input("Choose the hallucination sound", name) as null|anything in sound_list
|
||||
if(!hal_choice || hal_choice == "random")
|
||||
hal_details = null
|
||||
else
|
||||
hal_details = hal_choice
|
||||
extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","airlock","airlock pry","console","explosion","far explosion","mech","glass","alarm","beepsky","mech","wall decon","door hack"))
|
||||
if("Weird Sound")
|
||||
hal_type = "Weird Sound"
|
||||
var/sound_list = list("random","phone","hallelujah","highlander","laughter","hyperspace","game over","creepy","tesla")
|
||||
var/hal_choice = input("Choose the hallucination sound", name) as null|anything in sound_list
|
||||
if(!hal_choice || hal_choice == "random")
|
||||
hal_details = null
|
||||
else
|
||||
hal_details = hal_choice
|
||||
extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","phone","hallelujah","highlander","laughter","hyperspace","game over","creepy","tesla"))
|
||||
if("Station Message")
|
||||
hal_type = "Station Message"
|
||||
var/msg_list = list("random","ratvar","shuttle dock","blob alert","malf ai","meteors","supermatter")
|
||||
var/hal_choice = input("Choose the hallucination station message", name) as null|anything in msg_list
|
||||
if(!hal_choice || hal_choice == "random")
|
||||
hal_details = null
|
||||
else
|
||||
hal_details = hal_choice
|
||||
extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","ratvar","shuttle dock","blob alert","malf ai","meteors","supermatter"))
|
||||
if("Health")
|
||||
hal_type = "Health"
|
||||
var/health_list = list("random","critical","dead","healthy")
|
||||
var/hal_choice = input("Choose the health status", name) as null|anything in health_list
|
||||
if(!hal_choice || hal_choice == "random")
|
||||
hal_details = null
|
||||
else
|
||||
switch(hal_choice)
|
||||
if("critical")
|
||||
hal_details = SCREWYHUD_CRIT
|
||||
if("dead")
|
||||
hal_details = SCREWYHUD_DEAD
|
||||
if("healthy")
|
||||
hal_details = SCREWYHUD_HEALTHY
|
||||
extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","critical","dead","healthy"))
|
||||
if("Alert")
|
||||
hal_type = "Alert"
|
||||
var/alert_list = list("random","not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","gravity","fire","locked","hacked","temphot","tempcold","pressure")
|
||||
var/hal_choice = input("Choose the alert", name) as null|anything in alert_list
|
||||
if(!hal_choice || hal_choice == "random")
|
||||
hal_details = null
|
||||
else
|
||||
hal_details = hal_choice
|
||||
if("Fire")
|
||||
hal_type = "Fire"
|
||||
if("Shock")
|
||||
hal_type = "Shock"
|
||||
if("Plasma Flood")
|
||||
hal_type = "Plasma Flood"
|
||||
|
||||
/datum/nanite_program/triggered/comm/hallucination/get_extra_setting(setting)
|
||||
if(setting == "Hallucination Type")
|
||||
if(!hal_type)
|
||||
return "Random"
|
||||
else
|
||||
return hal_type
|
||||
if(setting == "Comm Code")
|
||||
return comm_code
|
||||
|
||||
/datum/nanite_program/triggered/comm/hallucination/copy_extra_settings_to(datum/nanite_program/triggered/comm/hallucination/target)
|
||||
target.hal_type = hal_type
|
||||
target.hal_details = hal_details
|
||||
target.comm_code = comm_code
|
||||
extra_settings[NES_HALLUCINATION_DETAIL] = new /datum/nanite_extra_setting/type("random", list("random","not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","gravity","fire","locked","hacked","temphot","tempcold","pressure"))
|
||||
else
|
||||
extra_settings.Remove(NES_HALLUCINATION_DETAIL)
|
||||
|
||||
/datum/nanite_program/good_mood
|
||||
name = "Happiness Enhancer"
|
||||
desc = "The nanites synthesize serotonin inside the host's brain, creating an artificial sense of happiness."
|
||||
use_rate = 0.1
|
||||
rogue_types = list(/datum/nanite_program/brain_decay)
|
||||
extra_settings = list("Mood Message")
|
||||
var/message = "HAPPINESS ENHANCEMENT"
|
||||
|
||||
/datum/nanite_program/good_mood/set_extra_setting(user, setting)
|
||||
if(setting == "Mood Message")
|
||||
var/new_message = stripped_input(user, "Choose the message visible on the mood effect.", "Message", message, MAX_NAME_LEN)
|
||||
if(!new_message)
|
||||
return
|
||||
message = new_message
|
||||
|
||||
/datum/nanite_program/good_mood/get_extra_setting(setting)
|
||||
if(setting == "Mood Message")
|
||||
return message
|
||||
|
||||
/datum/nanite_program/good_mood/copy_extra_settings_to(datum/nanite_program/good_mood/target)
|
||||
target.message = message
|
||||
/datum/nanite_program/good_mood/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_MOOD_MESSAGE] = new /datum/nanite_extra_setting/text("HAPPINESS ENHANCEMENT")
|
||||
|
||||
/datum/nanite_program/good_mood/enable_passive_effect()
|
||||
. = ..()
|
||||
SEND_SIGNAL(host_mob, COMSIG_ADD_MOOD_EVENT, "nanite_happy", /datum/mood_event/nanite_happiness, message)
|
||||
SEND_SIGNAL(host_mob, COMSIG_ADD_MOOD_EVENT, "nanite_happy", /datum/mood_event/nanite_happiness, get_extra_setting_value(NES_MOOD_MESSAGE))
|
||||
|
||||
/datum/nanite_program/good_mood/disable_passive_effect()
|
||||
. = ..()
|
||||
@@ -395,26 +294,14 @@
|
||||
desc = "The nanites suppress the production of serotonin inside the host's brain, creating an artificial state of depression."
|
||||
use_rate = 0.1
|
||||
rogue_types = list(/datum/nanite_program/brain_decay)
|
||||
extra_settings = list("Mood Message")
|
||||
var/message = "HAPPINESS SUPPRESSION"
|
||||
|
||||
/datum/nanite_program/bad_mood/set_extra_setting(user, setting)
|
||||
if(setting == "Mood Message")
|
||||
var/new_message = stripped_input(user, "Choose the message visible on the mood effect.", "Message", message, MAX_NAME_LEN)
|
||||
if(!new_message)
|
||||
return
|
||||
message = new_message
|
||||
|
||||
/datum/nanite_program/bad_mood/get_extra_setting(setting)
|
||||
if(setting == "Mood Message")
|
||||
return message
|
||||
|
||||
/datum/nanite_program/bad_mood/copy_extra_settings_to(datum/nanite_program/bad_mood/target)
|
||||
target.message = message
|
||||
/datum/nanite_program/bad_mood/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_MOOD_MESSAGE] = new /datum/nanite_extra_setting/text("HAPPINESS SUPPRESSION")
|
||||
|
||||
/datum/nanite_program/bad_mood/enable_passive_effect()
|
||||
. = ..()
|
||||
SEND_SIGNAL(host_mob, COMSIG_ADD_MOOD_EVENT, "nanite_sadness", /datum/mood_event/nanite_sadness, message)
|
||||
SEND_SIGNAL(host_mob, COMSIG_ADD_MOOD_EVENT, "nanite_sadness", /datum/mood_event/nanite_sadness, get_extra_setting_value(NES_MOOD_MESSAGE))
|
||||
|
||||
/datum/nanite_program/bad_mood/disable_passive_effect()
|
||||
. = ..()
|
||||
|
||||
@@ -1,82 +1,29 @@
|
||||
//Programs that interact with other programs or nanites directly, or have other special purposes.
|
||||
/datum/nanite_program/viral
|
||||
name = "Viral Replica"
|
||||
desc = "The nanites constantly send encrypted signals attempting to forcefully copy their own programming into other nanite clusters."
|
||||
desc = "The nanites constantly send encrypted signals attempting to forcefully copy their own programming into other nanite clusters, also overriding or disabling their cloud sync."
|
||||
use_rate = 0.5
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
extra_settings = list("Program Overwrite","Cloud Overwrite")
|
||||
|
||||
var/pulse_cooldown = 0
|
||||
var/sync_programs = TRUE
|
||||
var/sync_overwrite = FALSE
|
||||
var/overwrite_cloud = FALSE
|
||||
var/set_cloud = 0
|
||||
|
||||
/datum/nanite_program/viral/set_extra_setting(user, setting)
|
||||
if(setting == "Program Overwrite")
|
||||
var/overwrite_type = input("Choose what to do with the target's programs", name) as null|anything in list("Overwrite","Add To","Ignore")
|
||||
if(!overwrite_type)
|
||||
return
|
||||
switch(overwrite_type)
|
||||
if("Ignore") //Do not affect programs (if you only want to set the cloud ID)
|
||||
sync_programs = FALSE
|
||||
sync_overwrite = FALSE
|
||||
if("Add To") //Add to existing programs (so the target does not notice theirs are missing)
|
||||
sync_programs = TRUE
|
||||
sync_overwrite = FALSE
|
||||
if("Overwrite") //Replace target's programs with the source
|
||||
sync_programs = TRUE
|
||||
sync_overwrite = TRUE
|
||||
if(setting == "Cloud Overwrite")
|
||||
var/overwrite_type = input("Choose what to do with the target's Cloud ID", name) as null|anything in list("Overwrite","Disable","Keep")
|
||||
if(!overwrite_type)
|
||||
return
|
||||
switch(overwrite_type)
|
||||
if("Keep") //Don't change the cloud ID
|
||||
overwrite_cloud = FALSE
|
||||
set_cloud = 0
|
||||
if("Disable") //Set the cloud ID to disabled
|
||||
overwrite_cloud = TRUE
|
||||
set_cloud = 0
|
||||
if("Overwrite") //Set the cloud ID to what we choose
|
||||
var/new_cloud = input(user, "Choose the Cloud ID to set on infected nanites (1-100)", name, null) as null|num
|
||||
if(isnull(new_cloud))
|
||||
return
|
||||
overwrite_cloud = TRUE
|
||||
set_cloud = CLAMP(round(new_cloud, 1), 1, 100)
|
||||
|
||||
/datum/nanite_program/viral/get_extra_setting(setting)
|
||||
if(setting == "Program Overwrite")
|
||||
if(!sync_programs)
|
||||
return "Ignore"
|
||||
else if(sync_overwrite)
|
||||
return "Overwrite"
|
||||
else
|
||||
return "Add To"
|
||||
if(setting == "Cloud Overwrite")
|
||||
if(!overwrite_cloud)
|
||||
return "None"
|
||||
else if(set_cloud == 0)
|
||||
return "Disable"
|
||||
else
|
||||
return set_cloud
|
||||
|
||||
/datum/nanite_program/viral/copy_extra_settings_to(datum/nanite_program/viral/target)
|
||||
target.overwrite_cloud = overwrite_cloud
|
||||
target.set_cloud = set_cloud
|
||||
target.sync_programs = sync_programs
|
||||
target.sync_overwrite = sync_overwrite
|
||||
/datum/nanite_program/viral/register_extra_settings()
|
||||
extra_settings[NES_PROGRAM_OVERWRITE] = new /datum/nanite_extra_setting/type("Add To", list("Overwrite", "Add To", "Ignore"))
|
||||
extra_settings[NES_CLOUD_OVERWRITE] = new /datum/nanite_extra_setting/number(0, 0, 100)
|
||||
|
||||
/datum/nanite_program/viral/active_effect()
|
||||
if(world.time < pulse_cooldown)
|
||||
return
|
||||
var/datum/nanite_extra_setting/program = extra_settings[NES_PROGRAM_OVERWRITE]
|
||||
var/datum/nanite_extra_setting/cloud = extra_settings[NES_CLOUD_OVERWRITE]
|
||||
for(var/mob/M in orange(host_mob, 5))
|
||||
if(SEND_SIGNAL(M, COMSIG_NANITE_IS_STEALTHY))
|
||||
continue
|
||||
if(sync_programs)
|
||||
SEND_SIGNAL(M, COMSIG_NANITE_SYNC, nanites, sync_overwrite)
|
||||
if(overwrite_cloud)
|
||||
SEND_SIGNAL(M, COMSIG_NANITE_SET_CLOUD, set_cloud)
|
||||
switch(program.get_value())
|
||||
if("Overwrite")
|
||||
SEND_SIGNAL(M, COMSIG_NANITE_SYNC, nanites, TRUE)
|
||||
if("Add To")
|
||||
SEND_SIGNAL(M, COMSIG_NANITE_SYNC, nanites, FALSE)
|
||||
SEND_SIGNAL(M, COMSIG_NANITE_SET_CLOUD, cloud.get_value())
|
||||
pulse_cooldown = world.time + 75
|
||||
|
||||
/datum/nanite_program/monitoring
|
||||
@@ -94,38 +41,23 @@
|
||||
SSnanites.nanite_monitored_mobs -= host_mob
|
||||
host_mob.hud_set_nanite_indicator()
|
||||
|
||||
/datum/nanite_program/triggered/self_scan
|
||||
/datum/nanite_program/self_scan
|
||||
name = "Host Scan"
|
||||
desc = "The nanites display a detailed readout of a body scan to the host."
|
||||
unique = FALSE
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 3
|
||||
trigger_cooldown = 50
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
extra_settings = list("Scan Type")
|
||||
var/scan_type = "Medical"
|
||||
/datum/nanite_program/self_scan/register_extra_settings()
|
||||
extra_settings[NES_SCAN_TYPE] = new /datum/nanite_extra_setting/type("Medical", list("Medical", "Chemical", "Nanite"))
|
||||
|
||||
/datum/nanite_program/triggered/self_scan/set_extra_setting(user, setting)
|
||||
if(setting == "Scan Type")
|
||||
var/list/scan_types = list("Medical","Chemical","Nanite")
|
||||
var/new_scan_type = input("Choose the scan type", name) as null|anything in scan_types
|
||||
if(!new_scan_type)
|
||||
return
|
||||
scan_type = new_scan_type
|
||||
|
||||
/datum/nanite_program/triggered/self_scan/get_extra_setting(setting)
|
||||
if(setting == "Scan Type")
|
||||
return scan_type
|
||||
|
||||
/datum/nanite_program/triggered/self_scan/copy_extra_settings_to(datum/nanite_program/triggered/self_scan/target)
|
||||
target.scan_type = scan_type
|
||||
|
||||
/datum/nanite_program/triggered/self_scan/trigger()
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/self_scan/on_trigger(comm_message)
|
||||
if(host_mob.stat == DEAD)
|
||||
return
|
||||
switch(scan_type)
|
||||
var/datum/nanite_extra_setting/NS = extra_settings[NES_SCAN_TYPE]
|
||||
switch(NS.get_value())
|
||||
if("Medical")
|
||||
healthscan(host_mob, host_mob)
|
||||
if("Chemical")
|
||||
@@ -162,28 +94,13 @@
|
||||
. = ..()
|
||||
nanites.diagnostics = TRUE
|
||||
|
||||
|
||||
/datum/nanite_program/relay
|
||||
name = "Relay"
|
||||
desc = "The nanites receive and relay long-range nanite signals."
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
extra_settings = list("Relay Channel")
|
||||
var/relay_channel = 1
|
||||
|
||||
/datum/nanite_program/relay/set_extra_setting(user, setting)
|
||||
if(setting == "Relay Channel")
|
||||
var/new_channel = input(user, "Set the relay channel (1-9999):", name, null) as null|num
|
||||
if(isnull(new_channel))
|
||||
return
|
||||
relay_channel = CLAMP(round(new_channel, 1), 1, 9999)
|
||||
|
||||
/datum/nanite_program/relay/get_extra_setting(setting)
|
||||
if(setting == "Relay Channel")
|
||||
return relay_channel
|
||||
|
||||
/datum/nanite_program/relay/copy_extra_settings_to(datum/nanite_program/relay/target)
|
||||
target.relay_channel = relay_channel
|
||||
/datum/nanite_program/relay/register_extra_settings()
|
||||
extra_settings[NES_RELAY_CHANNEL] = new /datum/nanite_extra_setting/number(1, 1, 9999)
|
||||
|
||||
/datum/nanite_program/relay/enable_passive_effect()
|
||||
. = ..()
|
||||
@@ -198,7 +115,8 @@
|
||||
return
|
||||
if(!host_mob)
|
||||
return
|
||||
if(relay_code != relay_channel)
|
||||
var/datum/nanite_extra_setting/NS = extra_settings[NES_RELAY_CHANNEL]
|
||||
if(relay_code != NS.get_value())
|
||||
return
|
||||
SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, code, source)
|
||||
|
||||
@@ -207,7 +125,8 @@
|
||||
return
|
||||
if(!host_mob)
|
||||
return
|
||||
if(relay_code != relay_channel)
|
||||
var/datum/nanite_extra_setting/NS = extra_settings[NES_RELAY_CHANNEL]
|
||||
if(relay_code != NS.get_value())
|
||||
return
|
||||
SEND_SIGNAL(host_mob, COMSIG_NANITE_COMM_SIGNAL, comm_code, comm_message)
|
||||
|
||||
@@ -228,14 +147,64 @@
|
||||
host_mob.nutrition -= 0.5
|
||||
nanites.adjust_nanites(src, 0.5)
|
||||
|
||||
/datum/nanite_program/triggered/access
|
||||
/datum/nanite_program/research
|
||||
name = "Distributed Computing"
|
||||
desc = "The nanites aid the research servers by performing a portion of its calculations, increasing research point generation."
|
||||
use_rate = 0.2
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
/datum/nanite_program/research/active_effect()
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
var/points = 1
|
||||
if(!host_mob.client) //less brainpower
|
||||
points *= 0.25
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points))
|
||||
|
||||
/datum/nanite_program/researchplus
|
||||
name = "Neural Network"
|
||||
desc = "The nanites link the host's brains together forming a neural research network, that becomes more efficient with the amount of total hosts."
|
||||
use_rate = 0.3
|
||||
rogue_types = list(/datum/nanite_program/brain_decay)
|
||||
|
||||
/datum/nanite_program/researchplus/enable_passive_effect()
|
||||
. = ..()
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
if(host_mob.client)
|
||||
SSnanites.neural_network_count++
|
||||
else
|
||||
SSnanites.neural_network_count += 0.25
|
||||
|
||||
/datum/nanite_program/researchplus/disable_passive_effect()
|
||||
. = ..()
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
if(host_mob.client)
|
||||
SSnanites.neural_network_count--
|
||||
else
|
||||
SSnanites.neural_network_count -= 0.25
|
||||
|
||||
/datum/nanite_program/researchplus/active_effect()
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
var/mob/living/carbon/C = host_mob
|
||||
var/points = round(SSnanites.neural_network_count / 12, 0.1)
|
||||
if(!C.client) //less brainpower
|
||||
points *= 0.25
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points))
|
||||
|
||||
/datum/nanite_program/access
|
||||
name = "Subdermal ID"
|
||||
desc = "The nanites store the host's ID access rights in a subdermal magnetic strip. Updates when triggered, copying the host's current access."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 3
|
||||
trigger_cooldown = 30
|
||||
rogue_types = list(/datum/nanite_program/skin_decay)
|
||||
var/access = list()
|
||||
|
||||
//Syncs the nanites with the cumulative current mob's access level. Can potentially wipe existing access.
|
||||
/datum/nanite_program/triggered/access/trigger()
|
||||
/datum/nanite_program/access/on_trigger(comm_message)
|
||||
var/list/new_access = list()
|
||||
var/obj/item/current_item
|
||||
current_item = host_mob.get_active_held_item()
|
||||
@@ -284,19 +253,42 @@
|
||||
SEND_SIGNAL(infectee, COMSIG_NANITE_SYNC, nanites)
|
||||
infectee.investigate_log("was infected by spreading nanites by [key_name(host_mob)] at [AREACOORD(infectee)].", INVESTIGATE_NANITES)
|
||||
|
||||
/datum/nanite_program/nanite_sting
|
||||
name = "Nanite Sting"
|
||||
desc = "When triggered, projects a nearly invisible spike of nanites that attempts to infect a nearby non-host with a copy of the host's nanites cluster."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 5
|
||||
trigger_cooldown = 100
|
||||
rogue_types = list(/datum/nanite_program/glitch, /datum/nanite_program/toxic)
|
||||
|
||||
/datum/nanite_program/nanite_sting/on_trigger(comm_message)
|
||||
var/list/mob/living/target_hosts = list()
|
||||
for(var/mob/living/L in oview(1, host_mob))
|
||||
if(!(L.mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD)) || SEND_SIGNAL(L, COMSIG_HAS_NANITES) || !L.Adjacent(host_mob))
|
||||
continue
|
||||
target_hosts += L
|
||||
if(!target_hosts.len)
|
||||
consume_nanites(-5)
|
||||
return
|
||||
var/mob/living/infectee = pick(target_hosts)
|
||||
if(prob(100 - (infectee.get_permeability_protection() * 100)))
|
||||
//unlike with Infective Exo-Locomotion, this can't take over existing nanites, because Nanite Sting only targets non-hosts.
|
||||
infectee.AddComponent(/datum/component/nanites, 5)
|
||||
SEND_SIGNAL(infectee, COMSIG_NANITE_SYNC, nanites)
|
||||
infectee.investigate_log("was infected by a nanite cluster by [key_name(host_mob)] at [AREACOORD(infectee)].", INVESTIGATE_NANITES)
|
||||
to_chat(infectee, "<span class='warning'>You feel a tiny prick.</span>")
|
||||
|
||||
/datum/nanite_program/mitosis
|
||||
name = "Mitosis"
|
||||
desc = "The nanites gain the ability to self-replicate, using bluespace to power the process, instead of drawing from a template. This rapidly speeds up the replication rate,\
|
||||
but it causes occasional software errors due to faulty copies. Not compatible with cloud sync."
|
||||
desc = "The nanites gain the ability to self-replicate, using bluespace to power the process. Becomes more effective the more nanites are already in the host.\
|
||||
The replication has also a chance to corrupt the nanite programming due to copy faults - cloud sync is highly recommended."
|
||||
use_rate = 0
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
/datum/nanite_program/mitosis/active_effect()
|
||||
if(nanites.cloud_id)
|
||||
return
|
||||
var/rep_rate = round(nanites.nanite_volume / 50, 1) //0.5 per 50 nanite volume
|
||||
rep_rate *= 0.5
|
||||
nanites.adjust_nanites(rep_rate)
|
||||
nanites.adjust_nanites(null, rep_rate)
|
||||
if(prob(rep_rate))
|
||||
var/datum/nanite_program/fault = pick(nanites.programs)
|
||||
if(fault == src)
|
||||
@@ -306,56 +298,22 @@
|
||||
/datum/nanite_program/dermal_button
|
||||
name = "Dermal Button"
|
||||
desc = "Displays a button on the host's skin, which can be used to send a signal to the nanites."
|
||||
extra_settings = list("Sent Code","Button Name","Icon","Color")
|
||||
unique = FALSE
|
||||
var/datum/action/innate/nanite_button/button
|
||||
var/button_name = "Button"
|
||||
var/icon = "power"
|
||||
var/color = "green"
|
||||
var/sent_code = 0
|
||||
|
||||
/datum/nanite_program/dermal_button/set_extra_setting(user, setting)
|
||||
if(setting == "Sent Code")
|
||||
var/new_code = input(user, "Set the sent code (1-9999):", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
sent_code = CLAMP(round(new_code, 1), 1, 9999)
|
||||
if(setting == "Button Name")
|
||||
var/new_button_name = stripped_input(user, "Choose the name for the button.", "Button Name", button_name, MAX_NAME_LEN)
|
||||
if(!new_button_name)
|
||||
return
|
||||
button_name = new_button_name
|
||||
if(setting == "Icon")
|
||||
var/new_icon = input("Select the icon to display on the button:", name) as null|anything in list("one","two","three","four","five","plus","minus","power")
|
||||
if(!new_icon)
|
||||
return
|
||||
icon = new_icon
|
||||
if(setting == "Color")
|
||||
var/new_color = input("Select the color of the button's icon:", name) as null|anything in list("green","red","yellow","blue")
|
||||
if(!new_color)
|
||||
return
|
||||
color = new_color
|
||||
|
||||
/datum/nanite_program/dermal_button/get_extra_setting(setting)
|
||||
if(setting == "Sent Code")
|
||||
return sent_code
|
||||
if(setting == "Button Name")
|
||||
return button_name
|
||||
if(setting == "Icon")
|
||||
return capitalize(icon)
|
||||
if(setting == "Color")
|
||||
return capitalize(color)
|
||||
|
||||
/datum/nanite_program/dermal_button/copy_extra_settings_to(datum/nanite_program/dermal_button/target)
|
||||
target.sent_code = sent_code
|
||||
target.button_name = button_name
|
||||
target.icon = icon
|
||||
target.color = color
|
||||
/datum/nanite_program/dermal_button/register_extra_settings()
|
||||
extra_settings[NES_SENT_CODE] = new /datum/nanite_extra_setting/number(1, 1, 9999)
|
||||
extra_settings[NES_BUTTON_NAME] = new /datum/nanite_extra_setting/text("Button")
|
||||
extra_settings[NES_ICON] = new /datum/nanite_extra_setting/type("power", list("one","two","three","four","five","plus","minus","power"))
|
||||
extra_settings[NES_COLOR] = new /datum/nanite_extra_setting/type("green", list("green","red","yellow","blue"))
|
||||
|
||||
/datum/nanite_program/dermal_button/enable_passive_effect()
|
||||
. = ..()
|
||||
var/datum/nanite_extra_setting/bn_name = extra_settings[NES_BUTTON_NAME]
|
||||
var/datum/nanite_extra_setting/bn_icon = extra_settings[NES_ICON]
|
||||
var/datum/nanite_extra_setting/bn_color = extra_settings[NES_COLOR]
|
||||
if(!button)
|
||||
button = new(src, button_name, icon, color)
|
||||
button = new(src, bn_name.get_value(), bn_icon.get_value(), bn_color.get_value())
|
||||
button.target = host_mob
|
||||
button.Grant(host_mob)
|
||||
|
||||
@@ -372,7 +330,8 @@
|
||||
if(activated)
|
||||
host_mob.visible_message("<span class='notice'>[host_mob] presses a button on [host_mob.p_their()] forearm.</span>",
|
||||
"<span class='notice'>You press the nanite button on your forearm.</span>", null, 2)
|
||||
SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, sent_code, "a [name] program")
|
||||
var/datum/nanite_extra_setting/sent_code = extra_settings[NES_SENT_CODE]
|
||||
SEND_SIGNAL(host_mob, COMSIG_NANITE_SIGNAL, sent_code.get_value(), "a [name] program")
|
||||
|
||||
/datum/action/innate/nanite_button
|
||||
name = "Button"
|
||||
@@ -389,51 +348,3 @@
|
||||
|
||||
/datum/action/innate/nanite_button/Activate()
|
||||
program.press()
|
||||
|
||||
/datum/nanite_program/research
|
||||
name = "Distributed Computing"
|
||||
desc = "The nanites aid the research servers by performing a portion of its calculations, increasing research point generation."
|
||||
use_rate = 0.2
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
/datum/nanite_program/research/active_effect()
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
var/points = 1
|
||||
if(!host_mob.client) //less brainpower
|
||||
points *= 0.25
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points))
|
||||
|
||||
/datum/nanite_program/researchplus
|
||||
name = "Neural Network"
|
||||
desc = "The nanites link the host's brains together forming a neural research network, that becomes more efficient with the amount of total hosts."
|
||||
use_rate = 0.3
|
||||
rogue_types = list(/datum/nanite_program/brain_decay)
|
||||
|
||||
/datum/nanite_program/researchplus/enable_passive_effect()
|
||||
. = ..()
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
if(host_mob.client)
|
||||
SSnanites.neural_network_count++
|
||||
else
|
||||
SSnanites.neural_network_count += 0.25
|
||||
|
||||
/datum/nanite_program/researchplus/disable_passive_effect()
|
||||
. = ..()
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
if(host_mob.client)
|
||||
SSnanites.neural_network_count--
|
||||
else
|
||||
SSnanites.neural_network_count -= 0.25
|
||||
|
||||
/datum/nanite_program/researchplus/active_effect()
|
||||
if(!iscarbon(host_mob))
|
||||
return
|
||||
var/mob/living/carbon/C = host_mob
|
||||
var/points = round(SSnanites.neural_network_count / 12, 0.1)
|
||||
if(!C.client) //less brainpower
|
||||
points *= 0.25
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points))
|
||||
|
||||
|
||||
@@ -73,21 +73,20 @@
|
||||
. = ..()
|
||||
to_chat(host_mob, "<span class='warning'>Your blood cools down, and the pain gradually fades.</span>")
|
||||
|
||||
/datum/nanite_program/triggered/explosive
|
||||
/datum/nanite_program/explosive
|
||||
name = "Chain Detonation"
|
||||
desc = "Detonates all the nanites inside the host in a chain reaction when triggered."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 25 //plus every idle nanite left afterwards
|
||||
trigger_cooldown = 100 //Just to avoid double-triggering
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
/datum/nanite_program/triggered/explosive/trigger()
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/explosive/on_trigger(comm_message)
|
||||
host_mob.visible_message("<span class='warning'>[host_mob] starts emitting a high-pitched buzzing, and [host_mob.p_their()] skin begins to glow...</span>",\
|
||||
"<span class='userdanger'>You start emitting a high-pitched buzzing, and your skin begins to glow...</span>")
|
||||
addtimer(CALLBACK(src, .proc/boom), CLAMP((nanites.nanite_volume * 0.35), 25, 150))
|
||||
|
||||
/datum/nanite_program/triggered/explosive/proc/boom()
|
||||
/datum/nanite_program/explosive/proc/boom()
|
||||
var/nanite_amount = nanites.nanite_volume
|
||||
var/heavy_range = FLOOR(nanite_amount/100, 1) - 1
|
||||
var/light_range = FLOOR(nanite_amount/50, 1) - 1
|
||||
@@ -96,16 +95,15 @@
|
||||
|
||||
//TODO make it defuse if triggered again
|
||||
|
||||
/datum/nanite_program/triggered/heart_stop
|
||||
/datum/nanite_program/heart_stop
|
||||
name = "Heart-Stopper"
|
||||
desc = "Stops the host's heart when triggered; restarts it if triggered again."
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 12
|
||||
trigger_cooldown = 10
|
||||
rogue_types = list(/datum/nanite_program/nerve_decay)
|
||||
|
||||
/datum/nanite_program/triggered/heart_stop/trigger()
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/heart_stop/on_trigger(comm_message)
|
||||
if(iscarbon(host_mob))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
var/obj/item/organ/heart/heart = C.getorganslot(ORGAN_SLOT_HEART)
|
||||
@@ -115,16 +113,16 @@
|
||||
else
|
||||
heart.Restart()
|
||||
|
||||
/datum/nanite_program/triggered/emp
|
||||
/datum/nanite_program/emp
|
||||
name = "Electromagnetic Resonance"
|
||||
desc = "The nanites cause an elctromagnetic pulse around the host when triggered. Will corrupt other nanite programs!"
|
||||
desc = "The nanites cause an electromagnetic pulse around the host when triggered. Will corrupt other nanite programs!"
|
||||
can_trigger = TRUE
|
||||
trigger_cost = 10
|
||||
trigger_cooldown = 50
|
||||
program_flags = NANITE_EMP_IMMUNE
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
/datum/nanite_program/triggered/emp/trigger()
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/emp/on_trigger(comm_message)
|
||||
empulse(host_mob, 1, 2)
|
||||
|
||||
/datum/nanite_program/pyro/active_effect()
|
||||
@@ -148,7 +146,7 @@
|
||||
|
||||
/datum/nanite_program/cryo
|
||||
name = "Cryogenic Treatment"
|
||||
desc = "The nanites rapidly skin heat through the host's skin, lowering their temperature."
|
||||
desc = "The nanites rapidly sink heat through the host's skin, lowering their temperature."
|
||||
use_rate = 1
|
||||
rogue_types = list(/datum/nanite_program/skin_decay, /datum/nanite_program/pyro)
|
||||
|
||||
@@ -160,55 +158,33 @@
|
||||
/datum/nanite_program/cryo/active_effect()
|
||||
host_mob.adjust_bodytemperature(-rand(15,25), 50)
|
||||
|
||||
/datum/nanite_program/triggered/comm/mind_control
|
||||
/datum/nanite_program/comm/mind_control
|
||||
name = "Mind Control"
|
||||
desc = "The nanites imprint an absolute directive onto the host's brain for one minute when triggered."
|
||||
trigger_cost = 30
|
||||
trigger_cooldown = 1800
|
||||
rogue_types = list(/datum/nanite_program/brain_decay, /datum/nanite_program/brain_misfire)
|
||||
|
||||
extra_settings = list("Directive","Comm Code")
|
||||
var/directive = "..."
|
||||
/datum/nanite_program/comm/mind_control/register_extra_settings()
|
||||
. = ..()
|
||||
extra_settings[NES_DIRECTIVE] = new /datum/nanite_extra_setting/text("...")
|
||||
|
||||
/datum/nanite_program/triggered/comm/mind_control/set_extra_setting(user, setting)
|
||||
if(setting == "Directive")
|
||||
var/new_directive = stripped_input(user, "Choose the directive to imprint with mind control.", "Directive", directive, MAX_MESSAGE_LEN)
|
||||
if(!new_directive)
|
||||
return
|
||||
directive = new_directive
|
||||
if(setting == "Comm Code")
|
||||
var/new_code = input(user, "Set the communication code (1-9999) or set to 0 to disable external signals.", name, null) as null|num
|
||||
if(isnull(new_code))
|
||||
return
|
||||
comm_code = CLAMP(round(new_code, 1), 0, 9999)
|
||||
|
||||
/datum/nanite_program/triggered/comm/mind_control/get_extra_setting(setting)
|
||||
if(setting == "Directive")
|
||||
return directive
|
||||
if(setting == "Comm Code")
|
||||
return comm_code
|
||||
|
||||
/datum/nanite_program/triggered/comm/mind_control/copy_extra_settings_to(datum/nanite_program/triggered/comm/mind_control/target)
|
||||
target.directive = directive
|
||||
target.comm_code = comm_code
|
||||
|
||||
/datum/nanite_program/triggered/comm/mind_control/trigger(comm_message)
|
||||
if(!..())
|
||||
return
|
||||
/datum/nanite_program/comm/mind_control/on_trigger(comm_message)
|
||||
if(host_mob.stat == DEAD)
|
||||
return
|
||||
var/sent_directive = comm_message
|
||||
if(!comm_message)
|
||||
sent_directive = directive
|
||||
var/datum/nanite_extra_setting/ES = extra_settings[NES_DIRECTIVE]
|
||||
sent_directive = ES.get_value()
|
||||
brainwash(host_mob, sent_directive)
|
||||
log_game("A mind control nanite program brainwashed [key_name(host_mob)] with the objective '[directive]'.")
|
||||
log_game("A mind control nanite program brainwashed [key_name(host_mob)] with the objective '[sent_directive]'.")
|
||||
addtimer(CALLBACK(src, .proc/end_brainwashing), 600)
|
||||
|
||||
/datum/nanite_program/triggered/comm/mind_control/proc/end_brainwashing()
|
||||
/datum/nanite_program/comm/mind_control/proc/end_brainwashing()
|
||||
if(host_mob.mind && host_mob.mind.has_antag_datum(/datum/antagonist/brainwashed))
|
||||
host_mob.mind.remove_antag_datum(/datum/antagonist/brainwashed)
|
||||
log_game("[key_name(host_mob)] is no longer brainwashed by nanites.")
|
||||
|
||||
/datum/nanite_program/triggered/comm/mind_control/disable_passive_effect()
|
||||
|
||||
/datum/nanite_program/comm/mind_control/disable_passive_effect()
|
||||
. = ..()
|
||||
end_brainwashing()
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
var/last_id = 0
|
||||
var/code = 0
|
||||
var/relay_code = 0
|
||||
var/current_program_name = "Program"
|
||||
|
||||
/obj/item/nanite_remote/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -35,10 +36,8 @@
|
||||
update_icon()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>Access denied.</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/item/nanite_remote/emag_act(mob/user)
|
||||
. = ..()
|
||||
if(obj_flags & EMAGGED)
|
||||
return
|
||||
to_chat(user, "<span class='warning'>You override [src]'s ID lock.</span>")
|
||||
@@ -46,33 +45,31 @@
|
||||
if(locked)
|
||||
locked = FALSE
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
/obj/item/nanite_remote/update_icon()
|
||||
/obj/item/nanite_remote/update_overlays()
|
||||
. = ..()
|
||||
cut_overlays()
|
||||
if(obj_flags & EMAGGED)
|
||||
add_overlay("nanite_remote_emagged")
|
||||
. += "nanite_remote_emagged"
|
||||
if(locked)
|
||||
add_overlay("nanite_remote_locked")
|
||||
. += "nanite_remote_locked"
|
||||
|
||||
/obj/item/nanite_remote/afterattack(atom/target, mob/user, etc)
|
||||
switch(mode)
|
||||
if(REMOTE_MODE_OFF)
|
||||
return
|
||||
if(REMOTE_MODE_SELF)
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites in your bloodstream.<span>")
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites in your bloodstream.</span>")
|
||||
signal_mob(user, code, key_name(user))
|
||||
if(REMOTE_MODE_TARGET)
|
||||
if(isliving(target) && (get_dist(target, get_turf(src)) <= 7))
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites inside [target].<span>")
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites inside [target].</span>")
|
||||
signal_mob(target, code, key_name(user))
|
||||
if(REMOTE_MODE_AOE)
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites inside every host around you.<span>")
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites inside every host around you.</span>")
|
||||
for(var/mob/living/L in view(user, 7))
|
||||
signal_mob(L, code, key_name(user))
|
||||
if(REMOTE_MODE_RELAY)
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling all connected relay nanites.<span>")
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling all connected relay nanites.</span>")
|
||||
signal_relay(code, relay_code, key_name(user))
|
||||
|
||||
/obj/item/nanite_remote/proc/signal_mob(mob/living/M, code, source)
|
||||
@@ -84,9 +81,9 @@
|
||||
N.relay_signal(code, relay_code, source)
|
||||
|
||||
/obj/item/nanite_remote/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
|
||||
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "nanite_remote", name, 420, 800, master_ui, state)
|
||||
ui = new(user, src, ui_key, "nanite_remote", name, 420, 500, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/item/nanite_remote/ui_data()
|
||||
@@ -96,6 +93,7 @@
|
||||
data["mode"] = mode
|
||||
data["locked"] = locked
|
||||
data["saved_settings"] = saved_settings
|
||||
data["program_name"] = current_program_name
|
||||
|
||||
return data
|
||||
|
||||
@@ -106,7 +104,7 @@
|
||||
if("set_code")
|
||||
if(locked)
|
||||
return
|
||||
var/new_code = input("Set code (0000-9999):", name, code) as null|num
|
||||
var/new_code = text2num(params["code"])
|
||||
if(!isnull(new_code))
|
||||
new_code = CLAMP(round(new_code, 1),0,9999)
|
||||
code = new_code
|
||||
@@ -114,21 +112,21 @@
|
||||
if("set_relay_code")
|
||||
if(locked)
|
||||
return
|
||||
var/new_code = input("Set relay code (0000-9999):", name, code) as null|num
|
||||
var/new_code = text2num(params["code"])
|
||||
if(!isnull(new_code))
|
||||
new_code = CLAMP(round(new_code, 1),0,9999)
|
||||
relay_code = new_code
|
||||
. = TRUE
|
||||
if("update_name")
|
||||
current_program_name = params["name"]
|
||||
. = TRUE
|
||||
if("save")
|
||||
if(locked)
|
||||
return
|
||||
var/code_name = stripped_input(usr, "Set the setting name", "Set Name", null , 15)
|
||||
if(!code_name)
|
||||
return
|
||||
var/new_save = list()
|
||||
new_save["id"] = last_id + 1
|
||||
last_id++
|
||||
new_save["name"] = code_name
|
||||
new_save["name"] = current_program_name
|
||||
new_save["code"] = code
|
||||
new_save["mode"] = mode
|
||||
new_save["relay_code"] = relay_code
|
||||
@@ -172,7 +170,6 @@
|
||||
name = "nanite communication remote"
|
||||
desc = "A device that can send text messages to specific programs."
|
||||
icon_state = "nanite_comm_remote"
|
||||
var/comm_code = 0
|
||||
var/comm_message = ""
|
||||
|
||||
/obj/item/nanite_remote/comm/afterattack(atom/target, mob/user, etc)
|
||||
@@ -180,42 +177,38 @@
|
||||
if(REMOTE_MODE_OFF)
|
||||
return
|
||||
if(REMOTE_MODE_SELF)
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites in your bloodstream.<span>")
|
||||
signal_mob(user, comm_code, comm_message)
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites in your bloodstream.</span>")
|
||||
signal_mob(user, code, comm_message)
|
||||
if(REMOTE_MODE_TARGET)
|
||||
if(isliving(target) && (get_dist(target, get_turf(src)) <= 7))
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites inside [target].<span>")
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites inside [target].</span>")
|
||||
signal_mob(target, code, comm_message, key_name(user))
|
||||
if(REMOTE_MODE_AOE)
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites inside every host around you.<span>")
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling the nanites inside every host around you.</span>")
|
||||
for(var/mob/living/L in view(user, 7))
|
||||
signal_mob(L, code, comm_message, key_name(user))
|
||||
if(REMOTE_MODE_RELAY)
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling all connected relay nanites.<span>")
|
||||
to_chat(user, "<span class='notice'>You activate [src], signaling all connected relay nanites.</span>")
|
||||
signal_relay(code, relay_code, comm_message, key_name(user))
|
||||
|
||||
/obj/item/nanite_remote/comm/signal_mob(mob/living/M, code, source)
|
||||
SEND_SIGNAL(M, COMSIG_NANITE_COMM_SIGNAL, comm_code, comm_message)
|
||||
SEND_SIGNAL(M, COMSIG_NANITE_COMM_SIGNAL, code, comm_message)
|
||||
|
||||
/obj/item/nanite_remote/comm/signal_relay(code, relay_code, source)
|
||||
for(var/X in SSnanites.nanite_relays)
|
||||
var/datum/nanite_program/relay/N = X
|
||||
N.relay_comm_signal(comm_code, relay_code, comm_message)
|
||||
|
||||
/obj/item/nanite_remote/comm/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
|
||||
SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "nanite_comm_remote", name, 420, 800, master_ui, state)
|
||||
ui.open()
|
||||
N.relay_comm_signal(code, relay_code, comm_message)
|
||||
|
||||
/obj/item/nanite_remote/comm/ui_data()
|
||||
var/list/data = list()
|
||||
data["comm_code"] = comm_code
|
||||
data["comms"] = TRUE
|
||||
data["code"] = code
|
||||
data["relay_code"] = relay_code
|
||||
data["comm_message"] = comm_message
|
||||
data["message"] = comm_message
|
||||
data["mode"] = mode
|
||||
data["locked"] = locked
|
||||
data["saved_settings"] = saved_settings
|
||||
data["program_name"] = current_program_name
|
||||
|
||||
return data
|
||||
|
||||
@@ -223,56 +216,17 @@
|
||||
if(..())
|
||||
return
|
||||
switch(action)
|
||||
if("set_comm_code")
|
||||
if(locked)
|
||||
return
|
||||
var/new_code = input("Set comm code (0000-9999):", name, code) as null|num
|
||||
if(!isnull(new_code))
|
||||
new_code = CLAMP(round(new_code, 1),0,9999)
|
||||
comm_code = new_code
|
||||
. = TRUE
|
||||
if("set_message")
|
||||
if(locked)
|
||||
return
|
||||
var/new_message = stripped_input(usr, "Set the message (Max 300 characters):", "Set Message", null , 300)
|
||||
var/new_message = html_encode(params["value"])
|
||||
if(!new_message)
|
||||
return
|
||||
comm_message = new_message
|
||||
. = TRUE
|
||||
if("comm_save")
|
||||
if(locked)
|
||||
return
|
||||
var/code_name = stripped_input(usr, "Set the setting name", "Set Name", null , 15)
|
||||
if(!code_name)
|
||||
return
|
||||
var/new_save = list()
|
||||
new_save["id"] = last_id + 1
|
||||
last_id++
|
||||
new_save["name"] = code_name
|
||||
new_save["code"] = comm_code
|
||||
new_save["mode"] = mode
|
||||
new_save["relay_code"] = relay_code
|
||||
new_save["message"] = comm_message
|
||||
|
||||
saved_settings += list(new_save)
|
||||
. = TRUE
|
||||
if("comm_load")
|
||||
var/code_id = params["save_id"]
|
||||
var/list/setting
|
||||
for(var/list/X in saved_settings)
|
||||
if(X["id"] == text2num(code_id))
|
||||
setting = X
|
||||
break
|
||||
if(setting)
|
||||
comm_code = setting["code"]
|
||||
mode = setting["mode"]
|
||||
relay_code = setting["relay_code"]
|
||||
comm_message = setting["message"]
|
||||
. = TRUE
|
||||
|
||||
|
||||
#undef REMOTE_MODE_OFF
|
||||
#undef REMOTE_MODE_SELF
|
||||
#undef REMOTE_MODE_TARGET
|
||||
#undef REMOTE_MODE_AOE
|
||||
#undef REMOTE_MODE_RELAY
|
||||
#undef REMOTE_MODE_RELAY
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
program_type = /datum/nanite_program/relay
|
||||
|
||||
/obj/item/disk/nanite_program/emp
|
||||
program_type = /datum/nanite_program/triggered/emp
|
||||
program_type = /datum/nanite_program/emp
|
||||
|
||||
/obj/item/disk/nanite_program/spreading
|
||||
program_type = /datum/nanite_program/spreading
|
||||
@@ -91,16 +91,16 @@
|
||||
program_type = /datum/nanite_program/suffocating
|
||||
|
||||
/obj/item/disk/nanite_program/heart_stop
|
||||
program_type = /datum/nanite_program/triggered/heart_stop
|
||||
program_type = /datum/nanite_program/heart_stop
|
||||
|
||||
/obj/item/disk/nanite_program/explosive
|
||||
program_type = /datum/nanite_program/triggered/explosive
|
||||
program_type = /datum/nanite_program/explosive
|
||||
|
||||
/obj/item/disk/nanite_program/shock
|
||||
program_type = /datum/nanite_program/triggered/shocking
|
||||
program_type = /datum/nanite_program/shocking
|
||||
|
||||
/obj/item/disk/nanite_program/sleepy
|
||||
program_type = /datum/nanite_program/triggered/sleepy
|
||||
program_type = /datum/nanite_program/sleepy
|
||||
|
||||
/obj/item/disk/nanite_program/paralyzing
|
||||
program_type = /datum/nanite_program/paralyzing
|
||||
@@ -130,7 +130,7 @@
|
||||
program_type = /datum/nanite_program/pacifying
|
||||
|
||||
/obj/item/disk/nanite_program/stun
|
||||
program_type = /datum/nanite_program/triggered/stun
|
||||
program_type = /datum/nanite_program/stun
|
||||
|
||||
/obj/item/disk/nanite_program/dermal_button
|
||||
program_type = /datum/nanite_program/dermal_button
|
||||
@@ -149,3 +149,4 @@
|
||||
|
||||
/obj/item/disk/nanite_program/bad_mood
|
||||
program_type = /datum/nanite_program/bad_mood
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
busy_icon_state = working_icon
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/public_nanite_chamber/proc/inject_nanites()
|
||||
/obj/machinery/public_nanite_chamber/proc/inject_nanites(mob/living/attacker)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if((stat & MAINT) || panel_open)
|
||||
@@ -47,46 +47,67 @@
|
||||
set_busy(TRUE, "[initial(icon_state)]_raising")
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20)
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),60)
|
||||
addtimer(CALLBACK(src, .proc/complete_injection, locked_state),80)
|
||||
addtimer(CALLBACK(src, .proc/complete_injection, locked_state, attacker),80)
|
||||
|
||||
/obj/machinery/public_nanite_chamber/proc/complete_injection(locked_state)
|
||||
/obj/machinery/public_nanite_chamber/proc/complete_injection(locked_state, mob/living/attacker)
|
||||
//TODO MACHINE DING
|
||||
locked = locked_state
|
||||
set_busy(FALSE)
|
||||
if(!occupant)
|
||||
return
|
||||
if(attacker)
|
||||
occupant.investigate_log("was injected with nanites by [key_name(attacker)] using [src] at [AREACOORD(src)].", INVESTIGATE_NANITES)
|
||||
log_combat(attacker, occupant, "injected", null, "with nanites via [src]")
|
||||
occupant.AddComponent(/datum/component/nanites, 75, cloud_id)
|
||||
|
||||
/obj/machinery/public_nanite_chamber/update_icon()
|
||||
cut_overlays()
|
||||
|
||||
/obj/machinery/public_nanite_chamber/proc/change_cloud(mob/living/attacker)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if((stat & MAINT) || panel_open)
|
||||
add_overlay("maint")
|
||||
return
|
||||
if(!occupant || busy)
|
||||
return
|
||||
|
||||
else if(!(stat & (NOPOWER|BROKEN)))
|
||||
if(busy || locked)
|
||||
add_overlay("red")
|
||||
if(locked)
|
||||
add_overlay("bolted")
|
||||
else
|
||||
add_overlay("green")
|
||||
var/locked_state = locked
|
||||
locked = TRUE
|
||||
|
||||
set_busy(TRUE, "[initial(icon_state)]_raising")
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20)
|
||||
addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),40)
|
||||
addtimer(CALLBACK(src, .proc/complete_cloud_change, locked_state, attacker),60)
|
||||
|
||||
/obj/machinery/public_nanite_chamber/proc/complete_cloud_change(locked_state, mob/living/attacker)
|
||||
locked = locked_state
|
||||
set_busy(FALSE)
|
||||
if(!occupant)
|
||||
return
|
||||
if(attacker)
|
||||
occupant.investigate_log("had their nanite cloud ID changed into [cloud_id] by [key_name(attacker)] using [src] at [AREACOORD(src)].", INVESTIGATE_NANITES)
|
||||
SEND_SIGNAL(occupant, COMSIG_NANITE_SET_CLOUD, cloud_id)
|
||||
|
||||
/obj/machinery/public_nanite_chamber/update_icon_state()
|
||||
//running and someone in there
|
||||
if(occupant)
|
||||
if(busy)
|
||||
icon_state = busy_icon_state
|
||||
else
|
||||
icon_state = initial(icon_state)+ "_occupied"
|
||||
return
|
||||
else
|
||||
//running
|
||||
icon_state = initial(icon_state)+ (state_open ? "_open" : "")
|
||||
|
||||
//running
|
||||
icon_state = initial(icon_state)+ (state_open ? "_open" : "")
|
||||
|
||||
/obj/machinery/public_nanite_chamber/power_change()
|
||||
/obj/machinery/public_nanite_chamber/update_overlays()
|
||||
. = ..()
|
||||
update_icon()
|
||||
if((stat & MAINT) || panel_open)
|
||||
. += "maint"
|
||||
|
||||
else if(!(stat & (NOPOWER|BROKEN)))
|
||||
if(busy || locked)
|
||||
. += "red"
|
||||
if(locked)
|
||||
. += "bolted"
|
||||
else
|
||||
. += "green"
|
||||
|
||||
/obj/machinery/public_nanite_chamber/proc/toggle_open(mob/user)
|
||||
if(panel_open)
|
||||
@@ -94,7 +115,7 @@
|
||||
return
|
||||
|
||||
if(state_open)
|
||||
close_machine()
|
||||
close_machine(null, user)
|
||||
return
|
||||
|
||||
else if(locked)
|
||||
@@ -113,7 +134,7 @@
|
||||
user.last_special = world.time + CLICK_CD_BREAKOUT
|
||||
user.visible_message("<span class='notice'>You see [user] kicking against the door of [src]!</span>", \
|
||||
"<span class='notice'>You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)</span>", \
|
||||
"<span class='italics'>You hear a metallic creaking from [src].</span>")
|
||||
"<span class='hear'>You hear a metallic creaking from [src].</span>")
|
||||
if(do_after(user,(breakout_time), target = src))
|
||||
if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked || busy)
|
||||
return
|
||||
@@ -122,7 +143,7 @@
|
||||
"<span class='notice'>You successfully break out of [src]!</span>")
|
||||
open_machine()
|
||||
|
||||
/obj/machinery/public_nanite_chamber/close_machine(mob/living/carbon/user)
|
||||
/obj/machinery/public_nanite_chamber/close_machine(mob/living/carbon/user, mob/living/attacker)
|
||||
if(!state_open)
|
||||
return FALSE
|
||||
|
||||
@@ -130,15 +151,18 @@
|
||||
|
||||
. = TRUE
|
||||
|
||||
addtimer(CALLBACK(src, .proc/try_inject_nanites), 30) //If someone is shoved in give them a chance to get out before the injection starts
|
||||
addtimer(CALLBACK(src, .proc/try_inject_nanites, attacker), 30) //If someone is shoved in give them a chance to get out before the injection starts
|
||||
|
||||
/obj/machinery/public_nanite_chamber/proc/try_inject_nanites()
|
||||
/obj/machinery/public_nanite_chamber/proc/try_inject_nanites(mob/living/attacker)
|
||||
if(occupant)
|
||||
var/mob/living/L = occupant
|
||||
if(SEND_SIGNAL(L, COMSIG_HAS_NANITES))
|
||||
var/datum/component/nanites/nanites = L.GetComponent(/datum/component/nanites)
|
||||
if(nanites && nanites.cloud_id != cloud_id)
|
||||
change_cloud(attacker)
|
||||
return
|
||||
if(L.mob_biotypes & (MOB_ORGANIC | MOB_UNDEAD))
|
||||
inject_nanites()
|
||||
inject_nanites(attacker)
|
||||
|
||||
/obj/machinery/public_nanite_chamber/open_machine()
|
||||
if(state_open)
|
||||
@@ -173,6 +197,8 @@
|
||||
toggle_open(user)
|
||||
|
||||
/obj/machinery/public_nanite_chamber/MouseDrop_T(mob/target, mob/user)
|
||||
if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || !Adjacent(target) || !user.Adjacent(target) || !iscarbon(target))
|
||||
return
|
||||
close_machine(target)
|
||||
if(close_machine(target, user))
|
||||
log_combat(user, target, "inserted", null, "into [src].")
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -0,0 +1,151 @@
|
||||
/datum/nanite_rule
|
||||
var/name = "Generic Condition"
|
||||
var/desc = "When triggered, the program is active"
|
||||
var/datum/nanite_program/program
|
||||
|
||||
/datum/nanite_rule/New(datum/nanite_program/new_program)
|
||||
program = new_program
|
||||
if(LAZYLEN(new_program.rules) <= 5) //Avoid infinite stacking rules
|
||||
new_program.rules += src
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
/datum/nanite_rule/proc/remove()
|
||||
program.rules -= src
|
||||
program = null
|
||||
qdel(src)
|
||||
|
||||
/datum/nanite_rule/proc/check_rule()
|
||||
return TRUE
|
||||
|
||||
/datum/nanite_rule/proc/display()
|
||||
return name
|
||||
|
||||
/datum/nanite_rule/proc/copy_to(datum/nanite_program/new_program)
|
||||
new type(new_program)
|
||||
|
||||
/datum/nanite_rule/health
|
||||
name = "Health"
|
||||
desc = "Checks the host's health status."
|
||||
|
||||
var/threshold = 50
|
||||
var/above = TRUE
|
||||
|
||||
/datum/nanite_rule/health/check_rule()
|
||||
var/health_percent = program.host_mob.health / program.host_mob.maxHealth * 100
|
||||
if(above)
|
||||
if(health_percent >= threshold)
|
||||
return TRUE
|
||||
else
|
||||
if(health_percent < threshold)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_rule/health/display()
|
||||
return "[name] [above ? ">" : "<"] [threshold]%"
|
||||
|
||||
/datum/nanite_rule/health/copy_to(datum/nanite_program/new_program)
|
||||
var/datum/nanite_rule/health/rule = new(new_program)
|
||||
rule.above = above
|
||||
rule.threshold = threshold
|
||||
|
||||
//TODO allow inversion
|
||||
/datum/nanite_rule/crit
|
||||
name = "Crit"
|
||||
desc = "Checks if the host is in critical condition."
|
||||
|
||||
/datum/nanite_rule/crit/check_rule()
|
||||
if(program.host_mob.InCritical())
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_rule/death
|
||||
name = "Death"
|
||||
desc = "Checks if the host is dead."
|
||||
|
||||
/datum/nanite_rule/death/check_rule()
|
||||
if(program.host_mob.stat == DEAD || HAS_TRAIT(program.host_mob, TRAIT_FAKEDEATH))
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_rule/cloud_sync
|
||||
name = "Cloud Sync"
|
||||
desc = "Checks if the nanites have cloud sync enabled or disabled."
|
||||
var/check_type = "Enabled"
|
||||
|
||||
/datum/nanite_rule/cloud_sync/check_rule()
|
||||
if(check_type == "Enabled")
|
||||
return program.nanites.cloud_active
|
||||
else
|
||||
return !program.nanites.cloud_active
|
||||
|
||||
/datum/nanite_rule/cloud_sync/copy_to(datum/nanite_program/new_program)
|
||||
var/datum/nanite_rule/cloud_sync/rule = new(new_program)
|
||||
rule.check_type = check_type
|
||||
|
||||
/datum/nanite_rule/cloud_sync/display()
|
||||
return "[name]:[check_type]"
|
||||
|
||||
/datum/nanite_rule/nanites
|
||||
name = "Nanite Volume"
|
||||
desc = "Checks the host's nanite volume."
|
||||
|
||||
var/threshold = 50
|
||||
var/above = TRUE
|
||||
|
||||
/datum/nanite_rule/nanites/check_rule()
|
||||
var/nanite_percent = (program.nanites.nanite_volume - program.nanites.safety_threshold)/(program.nanites.max_nanites - program.nanites.safety_threshold)*100
|
||||
if(above)
|
||||
if(nanite_percent >= threshold)
|
||||
return TRUE
|
||||
else
|
||||
if(nanite_percent < threshold)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_rule/nanites/copy_to(datum/nanite_program/new_program)
|
||||
var/datum/nanite_rule/nanites/rule = new(new_program)
|
||||
rule.above = above
|
||||
rule.threshold = threshold
|
||||
|
||||
/datum/nanite_rule/nanites/display()
|
||||
return "[name] [above ? ">" : "<"] [threshold]%"
|
||||
|
||||
/datum/nanite_rule/damage
|
||||
name = "Damage"
|
||||
desc = "Checks the host's damage."
|
||||
|
||||
var/threshold = 50
|
||||
var/above = TRUE
|
||||
var/damage_type = BRUTE
|
||||
|
||||
/datum/nanite_rule/damage/check_rule()
|
||||
var/damage_amt = 0
|
||||
switch(damage_type)
|
||||
if(BRUTE)
|
||||
damage_amt = program.host_mob.getBruteLoss()
|
||||
if(BURN)
|
||||
damage_amt = program.host_mob.getFireLoss()
|
||||
if(TOX)
|
||||
damage_amt = program.host_mob.getToxLoss()
|
||||
if(OXY)
|
||||
damage_amt = program.host_mob.getOxyLoss()
|
||||
if(CLONE)
|
||||
damage_amt = program.host_mob.getCloneLoss()
|
||||
|
||||
if(above)
|
||||
if(damage_amt >= threshold)
|
||||
return TRUE
|
||||
else
|
||||
if(damage_amt < threshold)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/nanite_rule/damage/copy_to(datum/nanite_program/new_program)
|
||||
var/datum/nanite_rule/damage/rule = new(new_program)
|
||||
rule.above = above
|
||||
rule.threshold = threshold
|
||||
rule.damage_type = damage_type
|
||||
|
||||
/datum/nanite_rule/damage/display()
|
||||
return "[damage_type] [above ? ">" : "<"] [threshold]"
|
||||
@@ -52,13 +52,10 @@ Nothing else in the console has ID requirements.
|
||||
research_control = FALSE
|
||||
|
||||
/proc/CallMaterialName(ID)
|
||||
if(GLOB.chemical_reagents_list[ID])
|
||||
var/datum/reagent/reagent = GLOB.chemical_reagents_list[ID]
|
||||
return reagent.name
|
||||
if (ID[1] == "$" && GLOB.materials_list[ID])
|
||||
var/datum/material/material = GLOB.materials_list[ID]
|
||||
if (istype(ID, /datum/material))
|
||||
var/datum/material/material = ID
|
||||
return material.name
|
||||
return "ERROR: Report This"
|
||||
return ID
|
||||
|
||||
/obj/machinery/computer/rdconsole/proc/SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any).
|
||||
for(var/obj/machinery/rnd/D in oview(3,src))
|
||||
@@ -376,11 +373,13 @@ Nothing else in the console has ID requirements.
|
||||
l += ui_protolathe_header()
|
||||
l += "<div class='statusDisplay'><h3>Material Storage:</h3>"
|
||||
for(var/mat_id in mat_container.materials)
|
||||
var/datum/material/M = mat_container.materials[mat_id]
|
||||
l += "* [M.amount] of [M.name]: "
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=1'>Eject</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=5'>5x</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[M.id];eject_amt=50'>All</A>[RDSCREEN_NOBREAK]"
|
||||
var/datum/material/M = mat_id
|
||||
var/amount = mat_container.materials[mat_id]
|
||||
var/ref = REF(M)
|
||||
l += "* [amount] of [M.name]: "
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[ref];eject_amt=1'>Eject</A> [RDSCREEN_NOBREAK]"
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT*5) l += "<A href='?src=[REF(src)];ejectsheet=[ref];eject_amt=5'>5x</A> [RDSCREEN_NOBREAK]"
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];ejectsheet=[ref];eject_amt=50'>All</A>[RDSCREEN_NOBREAK]"
|
||||
l += ""
|
||||
l += "</div>[RDSCREEN_NOBREAK]"
|
||||
return l
|
||||
@@ -509,11 +508,13 @@ Nothing else in the console has ID requirements.
|
||||
l += ui_circuit_header()
|
||||
l += "<h3><div class='statusDisplay'>Material Storage:</h3>"
|
||||
for(var/mat_id in mat_container.materials)
|
||||
var/datum/material/M = mat_container.materials[mat_id]
|
||||
l += "* [M.amount] of [M.name]: "
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];imprinter_ejectsheet=[M.id];eject_amt=1'>Eject</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT*5) l += "<A href='?src=[REF(src)];imprinter_ejectsheet=[M.id];eject_amt=5'>5x</A> [RDSCREEN_NOBREAK]"
|
||||
if(M.amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];imprinter_ejectsheet=[M.id];eject_amt=50'>All</A>[RDSCREEN_NOBREAK]</div>"
|
||||
var/datum/material/M = mat_id
|
||||
var/amount = mat_container.materials[mat_id]
|
||||
var/ref = REF(M)
|
||||
l += "* [amount] of [M.name]: "
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];imprinter_ejectsheet=[ref];eject_amt=1'>Eject</A> [RDSCREEN_NOBREAK]"
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT*5) l += "<A href='?src=[REF(src)];imprinter_ejectsheet=[ref];eject_amt=5'>5x</A> [RDSCREEN_NOBREAK]"
|
||||
if(amount >= MINERAL_MATERIAL_AMOUNT) l += "<A href='?src=[REF(src)];imprinter_ejectsheet=[ref];eject_amt=50'>All</A>[RDSCREEN_NOBREAK]</div>"
|
||||
return l
|
||||
|
||||
/obj/machinery/computer/rdconsole/proc/ui_techdisk() //Legacy code
|
||||
@@ -615,8 +616,8 @@ Nothing else in the console has ID requirements.
|
||||
l += "</div>[RDSCREEN_NOBREAK]"
|
||||
|
||||
if(!(linked_destroy.loaded_item.resistance_flags & INDESTRUCTIBLE))
|
||||
var/list/materials = linked_destroy.loaded_item.materials
|
||||
l += "<div class='statusDisplay'><A href='?src=[REF(src)];deconstruct=[RESEARCH_MATERIAL_RECLAMATION_ID]'>[materials.len? "Material Reclamation" : "Destroy Item"]</A>"
|
||||
var/list/materials = linked_destroy.loaded_item.custom_materials
|
||||
l += "<div class='statusDisplay'><A href='?src=[REF(src)];deconstruct=[RESEARCH_MATERIAL_RECLAMATION_ID]'>[LAZYLEN(materials)? "Material Reclamation" : "Destroy Item"]</A>"
|
||||
for (var/M in materials)
|
||||
l += "* [CallMaterialName(M)] x [materials[M]]"
|
||||
l += "</div>[RDSCREEN_NOBREAK]"
|
||||
@@ -933,7 +934,8 @@ Nothing else in the console has ID requirements.
|
||||
if(!linked_lathe.materials.mat_container)
|
||||
say("No material storage linked to protolathe!")
|
||||
return
|
||||
linked_lathe.eject_sheets(ls["ejectsheet"], ls["eject_amt"])
|
||||
var/datum/material/M = locate(ls["ejectsheet"]) in linked_lathe.materials.mat_container.materials
|
||||
linked_lathe.eject_sheets(M, ls["eject_amt"])
|
||||
//Circuit Imprinter Materials
|
||||
if(ls["disposeI"]) //Causes the circuit imprinter to dispose of a single reagent (all of it)
|
||||
if(QDELETED(linked_imprinter))
|
||||
@@ -952,7 +954,8 @@ Nothing else in the console has ID requirements.
|
||||
if(!linked_imprinter.materials.mat_container)
|
||||
say("No material storage linked to circuit imprinter!")
|
||||
return
|
||||
linked_imprinter.eject_sheets(ls["imprinter_ejectsheet"], ls["eject_amt"])
|
||||
var/datum/material/M = locate(ls["imprinter_ejectsheet"]) in linked_imprinter.materials.mat_container.materials
|
||||
linked_imprinter.eject_sheets(M, ls["eject_amt"])
|
||||
if(ls["disk_slot"])
|
||||
disk_slot_selected = text2num(ls["disk_slot"])
|
||||
if(ls["research_node"])
|
||||
@@ -1015,7 +1018,7 @@ Nothing else in the console has ID requirements.
|
||||
D.category -= "Imported"
|
||||
else
|
||||
for(var/x in D.materials)
|
||||
if( !(x in list(MAT_METAL, MAT_GLASS)))
|
||||
if( !(x in list(/datum/material/iron, /datum/material/glass)))
|
||||
autolathe_friendly = FALSE
|
||||
D.category -= "Imported"
|
||||
|
||||
|
||||
@@ -93,14 +93,14 @@
|
||||
loaded_item.forceMove(loc)
|
||||
..()
|
||||
|
||||
/obj/machinery/rnd/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted)
|
||||
/obj/machinery/rnd/proc/AfterMaterialInsert(item_inserted, id_inserted, amount_inserted)
|
||||
var/stack_name
|
||||
if(ispath(type_inserted, /obj/item/stack/ore/bluespace_crystal))
|
||||
if(istype(item_inserted, /obj/item/stack/ore/bluespace_crystal))
|
||||
stack_name = "bluespace"
|
||||
use_power(MINERAL_MATERIAL_AMOUNT / 10)
|
||||
else
|
||||
var/obj/item/stack/S = type_inserted
|
||||
stack_name = initial(S.name)
|
||||
var/obj/item/stack/S = item_inserted
|
||||
stack_name = S.name
|
||||
use_power(min(1000, (amount_inserted / 100)))
|
||||
add_overlay("protolathe_[stack_name]")
|
||||
addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
name = "technology disk"
|
||||
desc = "A disk for storing technology data for further research."
|
||||
icon_state = "datadisk0"
|
||||
materials = list(MAT_METAL=300, MAT_GLASS=100)
|
||||
custom_materials = list(/datum/material/iron=300, /datum/material/glass=100)
|
||||
var/datum/techweb/stored_research
|
||||
|
||||
/obj/item/disk/tech_disk/Initialize()
|
||||
@@ -15,7 +15,7 @@
|
||||
/obj/item/disk/tech_disk/debug
|
||||
name = "\improper CentCom technology disk"
|
||||
desc = "A debug item for research"
|
||||
materials = list()
|
||||
custom_materials = null
|
||||
|
||||
/obj/item/disk/tech_disk/debug/Initialize()
|
||||
. = ..()
|
||||
@@ -24,7 +24,7 @@
|
||||
/obj/item/disk/tech_disk/illegal
|
||||
name = "Illegal technology disk"
|
||||
desc = "A technology disk containing schematics for syndicate inspired equipment."
|
||||
materials = list()
|
||||
custom_materials = null
|
||||
|
||||
/obj/item/disk/tech_disk/illegal/Initialize()
|
||||
. = ..()
|
||||
@@ -33,7 +33,7 @@
|
||||
/obj/item/disk/tech_disk/abductor
|
||||
name = "Gray technology disk"
|
||||
desc = "You feel like it's not Gray because of its color."
|
||||
materials = list()
|
||||
custom_materials = null
|
||||
|
||||
/obj/item/disk/tech_disk/abductor/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -136,31 +136,31 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "capacitor"
|
||||
desc = "A basic capacitor used in the construction of a variety of devices."
|
||||
icon_state = "capacitor"
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
|
||||
|
||||
/obj/item/stock_parts/scanning_module
|
||||
name = "scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
icon_state = "scan_module"
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
|
||||
|
||||
/obj/item/stock_parts/manipulator
|
||||
name = "micro-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "micro_mani"
|
||||
materials = list(MAT_METAL=30)
|
||||
custom_materials = list(/datum/material/iron=30)
|
||||
|
||||
/obj/item/stock_parts/micro_laser
|
||||
name = "micro-laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
icon_state = "micro_laser"
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
|
||||
|
||||
/obj/item/stock_parts/matter_bin
|
||||
name = "matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "matter_bin"
|
||||
materials = list(MAT_METAL=80)
|
||||
custom_materials = list(/datum/material/iron=80)
|
||||
|
||||
//Rating 2
|
||||
|
||||
@@ -169,35 +169,35 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
desc = "An advanced capacitor used in the construction of a variety of devices."
|
||||
icon_state = "adv_capacitor"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
|
||||
|
||||
/obj/item/stock_parts/scanning_module/adv
|
||||
name = "advanced scanning module"
|
||||
desc = "A compact, high resolution scanning module used in the construction of certain devices."
|
||||
icon_state = "adv_scan_module"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
|
||||
|
||||
/obj/item/stock_parts/manipulator/nano
|
||||
name = "nano-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "nano_mani"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=30)
|
||||
custom_materials = list(/datum/material/iron=30)
|
||||
|
||||
/obj/item/stock_parts/micro_laser/high
|
||||
name = "high-power micro-laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
icon_state = "high_micro_laser"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
|
||||
|
||||
/obj/item/stock_parts/matter_bin/adv
|
||||
name = "advanced matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "advanced_matter_bin"
|
||||
rating = 2
|
||||
materials = list(MAT_METAL=80)
|
||||
custom_materials = list(/datum/material/iron=80)
|
||||
|
||||
//Rating 3
|
||||
|
||||
@@ -206,35 +206,35 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
|
||||
icon_state = "super_capacitor"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
|
||||
|
||||
/obj/item/stock_parts/scanning_module/phasic
|
||||
name = "phasic scanning module"
|
||||
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
|
||||
icon_state = "super_scan_module"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
|
||||
|
||||
/obj/item/stock_parts/manipulator/pico
|
||||
name = "pico-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "pico_mani"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=30)
|
||||
custom_materials = list(/datum/material/iron=30)
|
||||
|
||||
/obj/item/stock_parts/micro_laser/ultra
|
||||
name = "ultra-high-power micro-laser"
|
||||
icon_state = "ultra_high_micro_laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
|
||||
|
||||
/obj/item/stock_parts/matter_bin/super
|
||||
name = "super matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "super_matter_bin"
|
||||
rating = 3
|
||||
materials = list(MAT_METAL=80)
|
||||
custom_materials = list(/datum/material/iron=80)
|
||||
|
||||
//Rating 4
|
||||
|
||||
@@ -243,35 +243,35 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
desc = "An capacity capacitor used in the construction of a variety of devices."
|
||||
icon_state = "quadratic_capacitor"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=50)
|
||||
|
||||
/obj/item/stock_parts/scanning_module/triphasic
|
||||
name = "triphasic scanning module"
|
||||
desc = "A compact, ultra resolution triphasic scanning module used in the construction of certain devices."
|
||||
icon_state = "triphasic_scan_module"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=20)
|
||||
|
||||
/obj/item/stock_parts/manipulator/femto
|
||||
name = "femto-manipulator"
|
||||
desc = "A tiny little manipulator used in the construction of certain devices."
|
||||
icon_state = "femto_mani"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=30)
|
||||
custom_materials = list(/datum/material/iron=30)
|
||||
|
||||
/obj/item/stock_parts/micro_laser/quadultra
|
||||
name = "quad-ultra micro-laser"
|
||||
icon_state = "quadultra_micro_laser"
|
||||
desc = "A tiny laser used in certain devices."
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=10, MAT_GLASS=20)
|
||||
custom_materials = list(/datum/material/iron=10, /datum/material/glass=20)
|
||||
|
||||
/obj/item/stock_parts/matter_bin/bluespace
|
||||
name = "bluespace matter bin"
|
||||
desc = "A container designed to hold compressed matter awaiting reconstruction."
|
||||
icon_state = "bluespace_matter_bin"
|
||||
rating = 4
|
||||
materials = list(MAT_METAL=80)
|
||||
custom_materials = list(/datum/material/iron=80)
|
||||
|
||||
// Subspace stock parts
|
||||
|
||||
@@ -279,43 +279,43 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi
|
||||
name = "subspace ansible"
|
||||
icon_state = "subspace_ansible"
|
||||
desc = "A compact module capable of sensing extradimensional activity."
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
custom_materials = list(/datum/material/iron=30, /datum/material/glass=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/filter
|
||||
name = "hyperwave filter"
|
||||
icon_state = "hyperwave_filter"
|
||||
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
custom_materials = list(/datum/material/iron=30, /datum/material/glass=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/amplifier
|
||||
name = "subspace amplifier"
|
||||
icon_state = "subspace_amplifier"
|
||||
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
custom_materials = list(/datum/material/iron=30, /datum/material/glass=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/treatment
|
||||
name = "subspace treatment disk"
|
||||
icon_state = "treatment_disk"
|
||||
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
custom_materials = list(/datum/material/iron=30, /datum/material/glass=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/analyzer
|
||||
name = "subspace wavelength analyzer"
|
||||
icon_state = "wavelength_analyzer"
|
||||
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
|
||||
materials = list(MAT_METAL=30, MAT_GLASS=10)
|
||||
custom_materials = list(/datum/material/iron=30, /datum/material/glass=10)
|
||||
|
||||
/obj/item/stock_parts/subspace/crystal
|
||||
name = "ansible crystal"
|
||||
icon_state = "ansible_crystal"
|
||||
desc = "A crystal made from pure glass used to transmit laser databursts to subspace."
|
||||
materials = list(MAT_GLASS=50)
|
||||
custom_materials = list(/datum/material/glass=50)
|
||||
|
||||
/obj/item/stock_parts/subspace/transmitter
|
||||
name = "subspace transmitter"
|
||||
icon_state = "subspace_transmitter"
|
||||
desc = "A large piece of equipment used to open a window into the subspace dimension."
|
||||
materials = list(MAT_METAL=50)
|
||||
custom_materials = list(/datum/material/iron=50)
|
||||
|
||||
/obj/item/research//Makes testing much less of a pain -Sieve
|
||||
name = "research"
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
description = "A refresher course on modern engineering technology."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("solarcontrol", "recharger", "powermonitor", "rped", "pacman", "adv_capacitor", "adv_scanning", "emitter", "high_cell", "adv_matter_bin",
|
||||
"atmosalerts", "atmos_control", "recycler", "autolathe", "high_micro_laser", "nano_mani", "mesons", "thermomachine", "rad_collector", "tesla_coil", "grounding_rod",
|
||||
"atmosalerts", "atmos_control", "recycler", "autolathe", "autolathe_secure", "high_micro_laser", "nano_mani", "mesons", "thermomachine", "rad_collector", "tesla_coil", "grounding_rod",
|
||||
"apc_control", "cell_charger", "power control", "airlock_board", "firelock_board", "airalarm_electronics", "firealarm_electronics", "cell_charger", "stack_console", "stack_machine", "rcd_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 6000)
|
||||
export_price = 5000
|
||||
@@ -602,7 +602,7 @@
|
||||
display_name = "Basic Tools"
|
||||
description = "Basic mechanical, electronic, surgical and botanical tools."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("screwdriver", "wrench", "wirecutters", "crowbar", "multitool", "welding_tool", "tscanner", "analyzer", "cable_coil", "pipe_painter", "airlock_painter", "scalpel", "circular_saw", "surgicaldrill", "retractor", "cautery", "hemostat", "cultivator", "plant_analyzer", "shovel", "spade", "hatchet", "mop")
|
||||
design_ids = list("screwdriver", "wrench", "wirecutters", "crowbar", "multitool", "welding_tool", "tscanner", "analyzer", "cable_coil", "pipe_painter", "airlock_painter", "scalpel", "circular_saw", "surgicaldrill", "retractor", "cautery", "hemostat", "cultivator", "plant_analyzer", "shovel", "spade", "hatchet", "mop", "broom")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 500)
|
||||
export_price = 5000
|
||||
|
||||
@@ -851,7 +851,7 @@
|
||||
display_name = "Exosuit Weapon (LBX AC 10 \"Scattershot\")"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("ballistic_weapons")
|
||||
design_ids = list("mech_scattershot")
|
||||
design_ids = list("mech_scattershot", "mech_scattershot_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
@@ -869,7 +869,7 @@
|
||||
display_name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("ballistic_weapons")
|
||||
design_ids = list("mech_carbine")
|
||||
design_ids = list("mech_carbine", "mech_carbine_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
@@ -914,16 +914,16 @@
|
||||
display_name = "Exosuit Weapon (SGL-6 Grenade Launcher)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("explosive_weapons")
|
||||
design_ids = list("mech_grenade_launcher")
|
||||
design_ids = list("mech_grenade_launcher", "mech_grenade_launcher_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
/datum/techweb_node/mech_missile_rack
|
||||
id = "mech_missile_rack"
|
||||
display_name = "Exosuit Weapon (SRM-8 Missile Rack)"
|
||||
display_name = "Exosuit Weapon (BRM-6 Missile Rack)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("explosive_weapons")
|
||||
design_ids = list("mech_missile_rack")
|
||||
design_ids = list("mech_missile_rack", "mech_missile_rack_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
@@ -932,7 +932,7 @@
|
||||
display_name = "Exosuit Module (SOB-3 Clusterbang Launcher)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("explosive_weapons")
|
||||
design_ids = list("clusterbang_launcher")
|
||||
design_ids = list("clusterbang_launcher", "clusterbang_launcher_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
@@ -968,7 +968,7 @@
|
||||
display_name = "Exosuit Weapon (\"Ultra AC 2\" LMG)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("ballistic_weapons")
|
||||
design_ids = list("mech_lmg")
|
||||
design_ids = list("mech_lmg", "mech_lmg_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
|
||||
@@ -890,8 +890,8 @@ datum/status_effect/stabilized/blue/on_remove()
|
||||
healing_types += TOX
|
||||
if(owner.getCloneLoss() > 0)
|
||||
healing_types += CLONE
|
||||
|
||||
owner.apply_damage_type(-heal_amount, damagetype=pick(healing_types))
|
||||
if(length(healing_types))
|
||||
owner.apply_damage_type(-heal_amount, damagetype=pick(healing_types))
|
||||
owner.nutrition += 3
|
||||
M.adjustCloneLoss(heal_amount * 1.2) //This way, two people can't just convert each other's damage away.
|
||||
else
|
||||
|
||||
@@ -983,7 +983,7 @@
|
||||
icon_state = "tile-bluespace"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
force = 6
|
||||
materials = list(MAT_METAL=500)
|
||||
custom_materials = list(/datum/material/iron=500)
|
||||
throwforce = 10
|
||||
throw_speed = 3
|
||||
throw_range = 7
|
||||
@@ -999,7 +999,7 @@
|
||||
icon_state = "tile-sepia"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
force = 6
|
||||
materials = list(MAT_METAL=500)
|
||||
custom_materials = list(/datum/material/iron=500)
|
||||
throwforce = 10
|
||||
throw_speed = 0.1
|
||||
throw_range = 28
|
||||
|
||||
Reference in New Issue
Block a user