I'm-too-lazy-to-think-of-something-clever update:

- Moved circuit imprinter to code/game/research. Also, while it's being overhauled as part of the R&D update, it'll be removed from the rest of the station. Don't worry, it'll come back! Also, all the disk closets were removed as well.
- Circuit Imprinter now works like the protolathe: It needs to be connected to an R&D console and it get's it's production list from it.
- Replaced destructive analyzer icon (thanks Deuryn).
- New item type: Stock Parts. Used in the construction of certain items (none added yet but they're there for when they DO get added).

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@937 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
morikou@gmail.com
2011-02-02 06:47:54 +00:00
parent 2649b601d4
commit 470964c12c
18 changed files with 7986 additions and 8323 deletions
+1 -26
View File
@@ -362,29 +362,4 @@
icon_off = "wall-lockeroff"
//too small to put a man in
large = 0
/*////////////////Disk Closets//////////////////
Note: All lockers are locked with a security level LOWER then the room the locker is placed in. This is intentional so that in
case of station emergency where someone needs a disk out of the locker, someone with the lesser access (but still in the
department) can break in and get the disk. */
/obj/secure_closet/disk_security
name = "Security Data Storage"
req_access = list(access_brig)
/obj/secure_closet/disk_medical
name = "Medical Data Storage"
req_access = list(access_medical)
/obj/secure_closet/disk_command
name = "Command and Control Data Storage"
req_access = list(access_heads)
/obj/secure_closet/disk_engineering
name = "Engineering Data Storage"
req_access = list(access_engine)
/obj/secure_closet/disk_research
name = "Research and Development Data Storage"
req_access = list(access_tox)
large = 0
+42 -1
View File
@@ -1648,4 +1648,45 @@ Total SMES charging rate should not exceed total power generation rate, or an ov
flags = FPRINT | TABLEPASS | USEDELAY
w_class = 2.0
var/timer = 10
var/atom/target = null
var/atom/target = null
/obj/item/weapon/stock_parts
name = "stock part"
desc = "What?"
icon = 'stock_parts.dmi'
New()
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
/obj/item/weapon/stock_parts/console_screen
name = "Console Screen"
desc = "Used in the construction of computers and other devices with a interactive console."
icon_state = "screen"
origin_tech = list("materials" = 2)
g_amt = 200
/obj/item/weapon/stock_parts/capacitor
name = "Capacitor"
desc = "A basic capacitor used in the construction of a variety of devices."
icon_state = "capacitor"
var/max_charge = 100
origin_tech = list("energystorage" = 2)
m_amt = 50
g_amt = 50
/obj/item/weapon/stock_parts/scanning_module
name = "Scanning Module"
desc = "A compact, high resolution scanning module used in the construction of certain devices."
icon_state = "scan_module"
var/rating = 1
origin_tech = list("magnets" = 2)
m_amt = 50
g_amt = 20
/obj/item/weapon/stock_parts/micro_manipulator
name = "Micro Manipulator"
desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "micro_mani"
var/rating = 1
origin_tech = list("robotics" = 1)
m_amt = 30
+1
View File
@@ -224,6 +224,7 @@ var/global/list/autolathe_recipes = list( \
new /obj/item/weapon/reagent_containers/glass/bucket(), \
new /obj/item/weapon/ammo/shell/blank(), \
new /obj/item/device/taperecorder(), \
new /obj/item/weapon/stock_parts/console_screen(), \
)
var/global/list/autolathe_recipes_hidden = list( \
-494
View File
@@ -1,494 +0,0 @@
/*///////////////Circuit Imprinter (By Darem)////////////////////////
Used to print new circuit boards (for computers and similar systems) and AI modules. Each circuit board pattern has
as a disk for it. To make the board, you must insert the disk into the imprinter. Materials and reagents are based on the
assumption that SS13 uses optical based computing (hence the use of glass and acid to etch it).
Bits of code borrowed liberally from all over the damn place. Mostly ChemMaster and Autolathe.
Operations Highlights:
- Glass is added to the imprinter by attacking it with it (just like the autolathe).
- Reagents are added to the imprinter by attacking it with a glass container.
- Both Glass and Acid (any) is required to create boards/modules.
- Non-Sulfuric Acid reagents damage the autolathe.
- Plasma reagent not only damages it, but also gives it a small chance of causing a minor explosion.
- The reagents submenu lets the user get an exact count of the reagents it contains. Undesired reagents can be purged.
- Future Feature: Some boards might require special reagents.
- Log Submenu allows users to see who's made what with the imprinter.
- Future Feature: Admins can see who (by player key) made what. Right now, it can be done through viewing the machine's variables.
- Emags wipe the access log (but not the archived one).
- A wrench can be used to repair any damage done to it (assuming it isn't completely destroyed).
*/
/obj/machinery/circuit_imprinter
name = "Circuit Imprinter"
icon_state = "circuit_imprinter"
density = 1
anchored = 1
flags = OPENCONTAINER
var
g_amount = 0
const/max_g_amount = 75000.0
screen = 0 //Screen Mode: 0 = Main; 1 = Operating; 2 = Reagents Submenu; 3 = Log submenu
obj/item/weapon/disk/circuit_disk/dat_disk = null
list/access_log = list() //List of everyone who's used this device.
list/archived_log = list() //List of everyone who's ACTUALLY used the device. Viewable by admins only.
health = 50
max_health = 50
New()
var/datum/reagents/R = new/datum/reagents(100) //Holder for the reagents used as materials.
reagents = R
R.my_atom = src
ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
if (prob(50))
del(src)
return
else
health -= 25
if(3.0)
health -= 10
update_icon()
update_icon()
if(health <= 0)
del(src)
return
else if (health < 25)
stat |= BROKEN
else
stat &= BROKEN
if(health >= 50)
health = 50
blob_act()
if (prob(50))
del(src)
meteorhit()
del(src)
return
attack_paw(mob/user as mob)
return attack_hand(user)
attack_ai(mob/user as mob)
return attack_hand(user)
attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/reagent_containers/glass))
return
else if (istype(O, /obj/item/stack))
var/obj/item/stack/stack = O
var/amount = 1
var/g_amt = O.g_amt
use_power(max(1000, (m_amt+g_amt)*amount/10))
amount = stack.amount
amount = min(amount, round((max_g_amount-src.g_amount)/g_amt))
stack.use(amount)
sleep(32)
src.g_amount += g_amt * amount
user << "\blue You add glass to the [name]."
updateUsrDialog()
else if (istype(O, /obj/item/weapon/card/emag))
access_log = null
user << "\red You clear the [name]'s access log!"
else if (istype(O, /obj/item/weapon/wrench))
user << "\blue You start repairing the [name]."
spawn(40)
health += 5
if(health >= 50)
user << "\blue You've completely repaired the [name]."
else
user << "\blue You've partially repaired the [name]"
else
user << "\red You can't add that to the [name]!"
attack_hand(mob/user as mob)
if(stat & BROKEN)
return
user.machine = src
user.machine = src
var/top = "<TITLE>[name]</TITLE>[name] Status:<BR><HR><BR>"
var/dat = ""
switch(screen)
if(0)
dat += "<B>Available Materials: </B>[g_amount] unit of glass | [reagents.total_volume] unit of chemicals<BR><HR>"
dat += "<B>Disk</B>: "
if(isnull(dat_disk))
dat += "<A href='?src=\ref[src];insert=1'>Insert Disk</A><BR>"
else
dat += "<A href='?src=\ref[src];eject=1'>Eject Disk</A><BR>"
dat += "<B>Create: </B>[dat_disk.circuit]<BR>"
dat += "<B>Department: </B>[dat_disk.department]<BR>"
dat += "<B>Security Level: </B>[dat_disk.security]<BR>"
dat += "<B>Material Requirements:</B>: 2000 units of glass and 20 units of H2SO4.<BR>"
dat += "<U><A href='?src=\ref[src];imprint=1;name=[user.name];key=[user.key]'>Imprint Circuit</A></U><BR>"
if(1)
dat += "<B>Processing...</B><BR>"
if(2)
dat += "Chemical Storage<BR><HR>"
for(var/datum/reagent/R in reagents.reagent_list)
dat += "Name: [R.name] | Units: [R.volume] | Type: "
switch(R.id)
if("acid" || "pacid") dat += "ACID | "
if("plasma") dat += "PLASMA | "
else dat += "OTHER | "
dat += "<A href='?src=\ref[src];dispose=[R.id]'>(Purge)</A><BR>"
dat += "<A href='?src=\ref[src];disposeall=1'><U>Disposal All Chemicals in Storage</U></A><BR>"
if(3)
dat += "Access Log<BR><HR>"
for(var/N in access_log)
dat += "[access_log[N]] created by [N]<BR>"
dat += "<HR>Menus: "
dat += "<A href='?src=\ref[src];main=1'>Main Menu</A> | "
dat += "<A href='?src=\ref[src];chem=1'>Chemical Storage</A> | "
dat += "<A href='?src=\ref[src];access=1'>Access Log</A>"
user << browse("[top][dat]", "window=imprinter;size=575x400")
onclose(user, "imprinter")
return
Topic(href, href_list)
if(stat & BROKEN) return
if(usr.stat || usr.restrained()) return
if(!in_range(src, usr)) return
usr.machine = src
if(href_list["insert"]) //Insert Disk
var/obj/item/I = usr.equipped()
if (istype(I, /obj/item/weapon/disk/circuit_disk))
usr.drop_item()
I.loc = src
dat_disk = I
else if(href_list["eject"]) //Eject Disk
dat_disk.loc = get_turf(src)
dat_disk = null
else if(href_list["imprint"]) //Create the actual board.
if((reagents.get_reagent_amount("acid") + reagents.get_reagent_amount("pacid")) >= 20 && g_amount >= 2000)
src.screen = 1
src.updateUsrDialog()
access_log += href_list["name"]
access_log[href_list["name"]] = dat_disk.circuit
archived_log += href_list["key"]
archived_log[href_list["key"]] = dat_disk.circuit
spawn(32)
var/imprint_chance = 100
for(var/datum/reagent/R in reagents.reagent_list)
switch(R.id)
if("acid")
reagents.remove_reagent("acid", 20)
if("pacid")
reagents.remove_reagent("pacid", 20)
if("plasma") //Plasma = Bad. Causes damage and possibly explosion.
for(var/mob/V in viewers(src, null))
V.show_message(text("\red The plasma in the Circuit Printer reacts violently!"))
sleep(20)
var/datum/effects/system/spark_spread/s = new /datum/effects/system/spark_spread
s.set_up(2, 1, src)
s.start()
if(prob(reagents.get_reagent_amount("plasma")))
explosion(src, -1,-1,1,1)
health -= R.volume
reagents.clear_reagents()
break
else
imprint_chance -= reagents.get_reagent_amount(R)
reagents.del_reagent(R)
g_amount -= 2000
if(prob(imprint_chance))
var/obj/item/weapon/disk/circuit_disk/A = new dat_disk.blueprint(src)
A.loc = get_turf(src)
A = null
else
for(var/mob/V in viewers(src, null))
V.show_message(text("\red The contaminants ruined the circuit board!"))
if(prob(imprint_chance < 100)) //Contaminants damage machine.
health -= ((100 - imprint_chance) / 5)
for(var/mob/V in viewers(src, null))
V.show_message(text("\red The contaminents damaged the Circuit Printer!"))
screen = 0
updateUsrDialog()
else if(href_list["main"]) //Set Menu "Main Main"
screen = 0
else if(href_list["chem"]) //Set Menu "Chemical Storage"
screen = 2
else if(href_list["access"]) //Set Menu "Access Log
screen = 3
else if(href_list["dispose"]) //Purges the specific reagent from the holder.
reagents.del_reagent(href_list["dispose"])
else if(href_list["disposeall"]) //Purges all the reagents from the holder.
reagents.clear_reagents()
updateUsrDialog()
return
///////////////////////////////////////////////////////////////////////////////
/////////////////////////Circuit Design Disk///////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/obj/item/weapon/disk/circuit_disk
name = "Circuit Design Disk"
desc = "A disk for storing circuit board data."
icon = 'cloning.dmi'
icon_state = "datadisk2"
item_state = "card-id"
w_class = 1.0
var
blueprint = "" //File path of circuit board it creates.
department = "" //Department board belongs to.
security = "" //Danger/Value of board.
circuit = "" //The name of the circuit it creates (for display elsewhere).
New()
src.pixel_x = rand(-5.0, 5)
src.pixel_y = rand(-5.0, 5)
///////////////////////////////////////
//////////Circuit Board Disks//////////
///////////////////////////////////////
/obj/item/weapon/disk/circuit_disk/security
name = "Circuit Design (Security)"
blueprint = "/obj/item/weapon/circuitboard/security"
circuit = "Circuit Board (Security)"
department = "Security"
security = "LOW"
/obj/item/weapon/disk/circuit_disk/aicore
name = "Circuit Design (AI core)"
blueprint = "/obj/item/weapon/circuitboard/aicore"
circuit = "Circuit Board (AI Core)"
department = "Research and Development"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/aiupload
name = "Circuit Design (AI Upload)"
blueprint = "/obj/item/weapon/circuitboard/aiupload"
circuit = "Circuit Board (AI Upload)"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/med_data
name = "Circuit Design (Medical Records)"
blueprint = "/obj/item/weapon/circuitboard/med_data"
circuit = "Circuit Board (Medical Records)"
department = "Medical"
security = "Low"
/obj/item/weapon/disk/circuit_disk/pandemic
name = "Circuit Design (PanD.E.M.I.C. 2200)"
blueprint = "/obj/item/weapon/circuitboard/pandemic"
circuit = "Circuit Board (PanD.E.M.I.C. 2200)"
department = "Medical"
security = "MEDIUM"
/obj/item/weapon/disk/circuit_disk/scan_consolenew
name = "Circuit Design (DNA Machine)"
blueprint = "/obj/machinery/scan_consolenew"
circuit = "Circuit Board (DNA Machine)"
department = "Research and Development"
security = "MEDIUM"
/obj/item/weapon/disk/circuit_disk/communications
name = "Circuit Design (Communications)"
blueprint = "/obj/item/weapon/circuitboard/communications"
circuit = "Circuit Board (Communications)"
department = "Command and Control"
security = "MEDIUM"
/obj/item/weapon/disk/circuit_disk/card
name = "Circuit Design (ID Computer)"
blueprint = "/obj/item/weapon/circuitboard/card"
circuit = "Circuit Board (ID Computer)"
department = "Command and Control"
security = "MEDIUM"
/obj/item/weapon/disk/circuit_disk/teleporter
name = "Circuit Design (Teleporter)"
blueprint = "/obj/item/weapon/circuitboard/teleporter"
circuit = "Circuit Board (Teleporter)"
department = "EXPERIMENTAL"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/secure_data
name = "Circuit Design (Security Records)"
blueprint = "/obj/item/weapon/circuitboard/secure_data"
circuit = "Circuit Board (Security Records)"
department = "Security"
security = "MEDIUM"
/obj/item/weapon/disk/circuit_disk/atmospherealerts
name = "Circuit Design (Atmosphere alerts)"
blueprint = "/obj/item/weapon/circuitboard/atmosphere/alerts"
circuit = "Circuit Board (Atmosphere alerts)"
department = "Engineering"
security = "LOW"
/obj/item/weapon/disk/circuit_disk/air_management
name = "Circuit Design (Atmospheric monitor)"
blueprint = "/obj/item/weapon/circuitboard/general_air_control"
circuit = "Circuit Board (Atmospheric monitor)"
department = "Engineering"
security = "LOW"
/obj/item/weapon/disk/circuit_disk/general_alert
name = "Circuit Design (General Alert)"
blueprint = "/obj/item/weapon/circuitboard/general_alert"
circuit = "Circuit Board (General Alert)"
department = "Engineering"
security = "LOW"
/obj/item/weapon/disk/circuit_disk/robotics
name = "Circuit Design (Robotics Control)"
blueprint = "/obj/item/weapon/circuitboard/robotics"
circuit = "Circuit Board (Robotics Control)"
department = "Research and Development"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/cloning
name = "Circuit Design (Cloning)"
blueprint = "/obj/item/weapon/circuitboard/cloning"
circuit = "Circuit Board (Cloning)"
department = "Medical"
security = "MEDIUM"
/obj/item/weapon/disk/circuit_disk/arcade
name = "Circuit Design (Arcade)"
blueprint = "/obj/item/weapon/circuitboard/arcade"
circuit = "Circuit Board (Arcade)"
department = "Rest and Recreation"
security = "LOW"
/obj/item/weapon/disk/circuit_disk/powermonitor
name = "Circuit Design (Power Monitor)"
blueprint = "/obj/machinery/power/monitor"
circuit = "Circuit Board (Power Monitor)"
department = "Engineering"
security = "LOW"
/obj/item/weapon/disk/circuit_disk/prisoner
name = "Circuit Design (Prisoner Management)"
blueprint = "/obj/item/weapon/circuitboard/prisoner"
circuit = "Circuit Board (Prisoner Management)"
department = "Security"
security = "HIGH"
///////////////////////////////////
//////////AI Module Disks//////////
///////////////////////////////////
/obj/item/weapon/disk/circuit_disk/safeguard
name = "Circuit Design (Safeguard Module)"
blueprint = "/obj/item/weapon/aiModule/safeguard"
circuit = "'Safeguard' AI Module"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/oneHuman
name = "Circuit Design (OneHuman Module)"
blueprint = "/obj/item/weapon/aiModule/oneHuman"
circuit = "'OneHuman' AI Module"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/protectStation
name = "Circuit Design (ProtectStation Module)"
blueprint = "/obj/item/weapon/aiModule/protectStation"
circuit = "'ProtectStation' AI Module"
department = "Security"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/prototypeEngineOffline
name = "Circuit Design (PrototypeEngineOffline Module)"
blueprint = "/obj/item/weapon/aiModule/prototypeEngineOffline"
circuit = "'PrototypeEngineOffline' AI Module"
department = "Engineering"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/teleporterOffline
name = "Circuit Design (TeleporterOffline Module)"
blueprint = "/obj/item/weapon/aiModule/teleporterOffline"
circuit = "'TeleporterOffline' AI Module"
department = "Research and Development"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/quarantine
name = "Circuit Design (Quarantine Module)"
blueprint = "/obj/item/weapon/aiModule/quarantine"
circuit = "'Quarantine' AI Module"
department = "Medical"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/oxygen
name = "Circuit Design (OxygenIsToxicToHumans Module)"
blueprint = "/obj/item/weapon/aiModule/oxygen"
circuit = "'OxygenIsToxicToHumans' AI Module"
department = "Medical"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/freeform
name = "Circuit Design (Freeform Module)"
blueprint = "/obj/item/weapon/aiModule/freeform"
circuit = "'Freeform' AI Module"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/reset
name = "Circuit Design (Reset Module)"
blueprint = "/obj/item/weapon/aiModule/reset"
circuit = "'Reset' AI Module"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/purge
name = "Circuit Design (Purge Module)"
blueprint = "/obj/item/weapon/aiModule/purge"
circuit = "'Purge' AI Module"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/freeformcore
name = "Circuit Design (Freeform Core Module)"
blueprint = "/obj/item/weapon/aiModule/freeformcore"
circuit = "'Freeform' AI Core Module"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/asimov
name = "Circuit Design (Asimov Core Module)"
blueprint = "/obj/item/weapon/aiModule/asimov"
circuit = "'Asimov' AI Core Module"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/paladin
name = "Circuit Design (P.A.L.A.D.I.N. Core Module)"
blueprint = "/obj/item/weapon/aiModule/paladin"
circuit = "'P.A.L.A.D.I.N.' AI Core Module"
department = "Command and Control"
security = "HIGH"
/obj/item/weapon/disk/circuit_disk/tyrant
name = "Circuit Design (T.Y.R.A.N.T. Core Module)"
blueprint = "/obj/item/weapon/aiModule/tyrant"
circuit = "'T.Y.R.A.N.T.' AI Core Module"
department = "Command and Control"
security = "ULTRA'"
///////////////////////////////////
//////////Mecha Module Disks///////
///////////////////////////////////
/obj/item/weapon/disk/circuit_disk/mecha/ripley/main
name = "Circuit Design (APLU \"Ripley\" Central Control module)"
blueprint = "/obj/item/mecha_parts/circuitboard/ripley/main"
circuit = "Circuit Board (APLU \"Ripley\" Central Control module)"
department = "Engineering"
security = "MEDIUM"
/obj/item/weapon/disk/circuit_disk/mecha/ripley/peripherals
name = "Circuit Design (APLU \"Ripley\" Peripherals Control module)"
blueprint = "/obj/item/mecha_parts/circuitboard/ripley/peripherals"
circuit = "Circuit Board (APLU \"Ripley\" Peripherals Control module)"
department = "Engineering"
security = "MEDIUM"
-54
View File
@@ -1,54 +0,0 @@
/obj/secure_closet/disk_security/New()
..()
sleep(2)
new /obj/item/weapon/disk/circuit_disk/security( src )
new /obj/item/weapon/disk/circuit_disk/secure_data( src )
new /obj/item/weapon/disk/circuit_disk/prisoner( src )
new /obj/item/weapon/disk/circuit_disk/protectStation( src )
new /obj/item/weapon/disk/circuit_disk/paladin( src )
return
/obj/secure_closet/disk_medical/New()
..()
sleep(2)
new /obj/item/weapon/disk/circuit_disk/med_data( src )
new /obj/item/weapon/disk/circuit_disk/pandemic( src )
new /obj/item/weapon/disk/circuit_disk/scan_consolenew( src )
new /obj/item/weapon/disk/circuit_disk/cloning( src )
new /obj/item/weapon/disk/circuit_disk/quarantine( src )
new /obj/item/weapon/disk/circuit_disk/oxygen( src )
return
/obj/secure_closet/disk_command/New()
..()
sleep(2)
new /obj/item/weapon/disk/circuit_disk/aiupload( src )
new /obj/item/weapon/disk/circuit_disk/communications( src )
new /obj/item/weapon/disk/circuit_disk/card( src )
new /obj/item/weapon/disk/circuit_disk/safeguard( src )
new /obj/item/weapon/disk/circuit_disk/oneHuman( src )
new /obj/item/weapon/disk/circuit_disk/freeform( src )
new /obj/item/weapon/disk/circuit_disk/purge( src )
new /obj/item/weapon/disk/circuit_disk/freeformcore( src )
return
/obj/secure_closet/disk_engineering/New()
..()
sleep(2)
new /obj/item/weapon/disk/circuit_disk/atmospherealerts( src )
new /obj/item/weapon/disk/circuit_disk/air_management( src )
new /obj/item/weapon/disk/circuit_disk/general_alert( src )
new /obj/item/weapon/disk/circuit_disk/powermonitor( src )
new /obj/item/weapon/disk/circuit_disk/prototypeEngineOffline( src )
return
/obj/secure_closet/disk_research/New()
..()
sleep(2)
new /obj/item/weapon/disk/circuit_disk/aicore( src )
new /obj/item/weapon/disk/circuit_disk/aiupload( src )
new /obj/item/weapon/disk/circuit_disk/teleporter( src )
new /obj/item/weapon/disk/circuit_disk/robotics( src )
new /obj/item/weapon/disk/circuit_disk/teleporterOffline( src )
return
+67
View File
@@ -0,0 +1,67 @@
/*///////////////Circuit Imprinter (By Darem)////////////////////////
Used to print new circuit boards (for computers and similar systems) and AI modules. Each circuit board pattern are stored in
a /datum/desgin on the linked R&D console. You can then print them out in a fasion similar to a regular lathe. However, instead of
using metal and glass, it uses glass and reagents (usually sulfuric acis).
*/
/obj/machinery/circuit_imprinter
name = "Circuit Imprinter"
icon_state = "circuit_imprinter"
density = 1
anchored = 1
flags = OPENCONTAINER
var
g_amount = 0
const/max_g_amount = 75000.0
busy = 0
obj/machinery/computer/rdconsole/linked_console = null //Linked R&D Console
New()
var/datum/reagents/R = new/datum/reagents(100) //Holder for the reagents used as materials.
reagents = R
R.my_atom = src
blob_act()
if (prob(50))
del(src)
meteorhit()
del(src)
return
attackby(var/obj/item/O as obj, var/mob/user as mob)
if (!linked_console)
user << "\The [name] must be linked to an R&D console first!"
return 1
if (O.is_open_container())
return 1
if (!istype(O, /obj/item/stack))
user << "\red You cannot insert this item into the [name]!"
return 1
if (stat)
return 1
if (busy)
user << "\red The [name] is busy. Please wait for completion of previous operation."
return 1
if (src.g_amount + O.g_amt > max_g_amount)
user << "\red The [name] is full. Please remove glass from the protolathe in order to insert more."
return 1
var/amount = 1
var/obj/item/stack/stack
var/g_amt = O.g_amt
stack = O
amount = stack.amount
if (g_amt)
amount = min(amount, round((max_g_amount-src.g_amount)/g_amt))
stack.use(amount)
busy = 1
use_power(max(1000, (g_amt)*amount/10))
spawn(16)
src.g_amount += g_amt * amount
if (O && O.loc == src)
del(O)
busy = 0
src.updateUsrDialog()
return
+101 -79
View File
@@ -54,180 +54,180 @@ datum
name = "Circuit Design (Security)"
desc = "Allows for the construction of circuit boards used to build security camera computers."
id = "seccamera"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/security"
aicore
name = "Circuit Design (AI Core)"
desc = "Allows for the construction of circuit boards used to build new AI cores."
id = "aicore"
req_tech = list()
req_tech = list("programming" = 5, "biotech" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/aicore"
aiupload
name = "Circuit Design (AI Upload)"
desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
id = "aiupload"
req_tech = list()
req_tech = list("programming" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/aiupload"
med_data
name = "Circuit Design (Medical Records)"
desc = "Allows for the construction of circuit boards used to build a medical records console."
id = "med_data"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/med_data"
pandemic
name = "Circuit Design (PanD.E.M.I.C. 2200)"
desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console."
id = "pandemic"
req_tech = list()
req_tech = list("programming" = 2, "biotech" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/pandemic"
scan_console
name = "Circuit Design (DNA Machine)"
desc = "Allows for the construction of circuit boards used to build a new DNA scanning console."
id = "scan_console"
req_tech = list()
req_tech = list("programming" = 2, "biotech" = 3)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/machinery/scan_consolenew"
comconsole
name = "Circuit Design (Communications)"
desc = "Allows for the construction of circuit boards used to build a communications console."
id = "comconsole"
req_tech = list()
req_tech = list("programming" = 2, "magnets" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/communications"
idcardconsole
name = "Circuit Design (ID Computer)"
desc = "Allows for the construction of circuit boards used to build an ID computer."
id = "idcardconsole"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/card"
teleconsole
name = "Circuit Design (Teleporter Console)"
desc = "Allows for the construction of circuit boards used to build a teleporter control console."
id = "teleconsole"
req_tech = list()
req_tech = list("programming" = 3, "bluespace" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/teleporter"
secdata
name = "Circuit Design (Security Records Console)"
desc = "Allows for the construction of circuit boards used to build a security records console."
id = "secdata"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/secure_data"
atmosalerts
name = "Circuit Design (Atmosphere Alerts Console)"
desc = "Allows for the construction of circuit boards used to build an atmosphere alert console.."
id = "atmosalerts"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/atmosphere/alerts"
air_management
name = "Circuit Design (Atmospheric Monitor)"
desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor."
id = "air_management"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/general_air_control"
general_alert
name = "Circuit Design (General Alert Console)"
desc = "Allows for the construction of circuit boards used to build a General Alert console."
id = "general_alert"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/general_alert"
robocontrol
name = "Circuit Design (Robotics Control Console)"
desc = "Allows for the construction of circuit boards used to build a Robotics Control console."
id = "robocontrol"
req_tech = list()
req_tech = list("programming" = 4)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/robotics"
clonecontrol
name = "Circuit Design (Cloning Machine Console)"
desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
id = "clonecontrol"
req_tech = list()
req_tech = list("programming" = 3, "biotech" = 4)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/cloning"
arcademachine
name = "Circuit Design (Arcade Machine)"
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
id = "arcademachine"
req_tech = list()
req_tech = list("programming" = 1)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/arcade"
powermonitor
name = "Circuit Design (Power Monitor)"
desc = "Allows for the construction of circuit boards used to build a new power monitor"
id = "powermonitor"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/machinery/power/monitor"
prisonmanage
name = "Circuit Design (Prisoner Management Console)"
desc = "Allows for the construction of circuit boards used to build a prisoner management console."
id = "prisonmanage"
req_tech = list()
req_tech = list("programming" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/circuitboard/prisoner"
///////////////////////////////////
@@ -237,130 +237,130 @@ datum
name = "Module Design (Safeguard)"
desc = "Allows for the construction of a Safeguard AI Module."
id = "safeguard_module"
req_tech = list()
req_tech = list("programming" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/safeguard"
onehuman_module
name = "Module Design (OneHuman)"
desc = "Allows for the construction of a OneHuman AI Module."
id = "onehuman_module"
req_tech = list()
req_tech = list("programming" = 5, "syndicate" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/oneHuman"
protectstation_module
name = "Module Design (ProtectStation)"
desc = "Allows for the construction of a ProtectStation AI Module."
id = "protectstation_module"
req_tech = list()
req_tech = list("programming" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/protectStation"
notele_module
name = "Module Design (TeleporterOffline Module)"
desc = "Allows for the construction of a TeleporterOffline AI Module."
id = "notele_module"
req_tech = list()
req_tech = list("programming" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/teleporterOffline"
quarantine_module
name = "Module Design (Quarantine)"
desc = "Allows for the construction of a Quarantine AI Module."
id = "quarantine_module"
req_tech = list()
req_tech = list("programming" = 5, "biotech" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/quarantine"
oxygen_module
name = "Module Design (OxygenIsToxicToHumans)"
desc = "Allows for the construction of a Safeguard AI Module."
id = "oxygen_module"
req_tech = list()
req_tech = list("programming" = 5, "biotech" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/oxygen"
freeform_module
name = "Module Design (Freeform)"
desc = "Allows for the construction of a Freeform AI Module."
id = "freeform_module"
req_tech = list()
req_tech = list("programming" = 6)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/freeform"
reset_module
name = "Module Design (Reset)"
desc = "Allows for the construction of a Reset AI Module."
id = "reset_module"
req_tech = list()
req_tech = list("programming" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/reset"
purge_module
name = "Module Design (Purge)"
desc = "Allows for the construction of a Purge AI Module."
id = "purge_module"
req_tech = list()
req_tech = list("programming" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/purge"
freeformcore_module
name = "Core Module Design (Freeform)"
desc = "Allows for the construction of a Freeform AI Core Module."
id = "freeformcore_module"
req_tech = list()
req_tech = list("programming" = 6)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/freeformcore"
asimov
name = "Core Module Design (Asimov)"
desc = "Allows for the construction of a Asimov AI Core Module."
id = "asimov_module"
req_tech = list()
req_tech = list("programming" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/asimov"
paladin_module
name = "Core Module Design (P.A.L.A.D.I.N.)"
desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
id = "paladin_module"
req_tech = list()
req_tech = list("programming" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/paladin"
tyrant_module
name = "Core Module Design (T.Y.R.A.N.T.)"
desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
id = "tyrant_module"
req_tech = list()
req_tech = list("programming" = 5, "syndicate" = 2)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/weapon/aiModule/tyrant"
///////////////////////////////////
@@ -371,20 +371,20 @@ datum
name = "Circuit Design (APLU \"Ripley\" Central Control module)"
desc = "Allows for the construction of a Safeguard AI Module."
id = "ripley_main"
req_tech = list()
req_tech = list("programming" = 3, "robotics" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/mecha_parts/circuitboard/ripley/main"
ripley_peri
name = "Circuit Design (APLU \"Ripley\" Peripherals Control module)"
desc = "Allows for the construction of a Safeguard AI Module."
id = "ripley_peri"
req_tech = list()
req_tech = list("programming" = 3, "robotics" = 5)
reliability = 100
build_type = IMPRINTER
materials = list("$metal" = 2000, "acid" = 20)
materials = list("$glass" = 2000, "acid" = 20)
build_path = "/obj/item/mecha_parts/circuitboard/ripley/peripherals"
////////////////////////////////////////
@@ -394,32 +394,52 @@ datum
name = "Design Storage Disk"
desc = "Produce additional disks for storing device designs."
id = "design_disk"
req_tech = list()
req_tech = list("programming" = 1)
reliability = 100
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
materials = list("$metal" = 30, "$glass" = 10)
build_path = "/obj/item/weapon/disk/design_disk"
tech_disk
name = "Technology Data Storage Disk"
desc = "Produce additional disks for storing technology data."
id = "tech_disk"
req_tech = list()
req_tech = list("programming" = 1)
reliability = 100
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 30, "$glass" = 10)
build_path = "/obj/item/weapon/disk/tech_disk"
////////////////////////////////////////
/////////////Stock Parts////////////////
////////////////////////////////////////
basic_capacitor
name = "Basic Capacitor"
desc = "A stock part used in the construction of various devices."
id = "basic_capacitor"
req_tech = list("powerstorage" = 2)
reliability = 100
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
basic_sensor
name = "Basic Sensor Module"
desc = "A stock part used in the construction of various devices."
id = "basic_senosr"
req_tech = list("magnets" = 2)
reliability = 100
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
build_path = "/obj/item/weapon/disk/tech_disk"
dummy_design
name = "Dummy Design"
desc = "Just a design for testing purposes. Makes a d20"
id = "dummy_design"
req_tech = list()
basic_micro_mani
name = "Basic Micro Manipulator"
desc = "A stock part used in the construction of various devices."
id = "basic_micro_mani"
req_tech = list("robotics" = 1)
reliability = 100
build_type = PROTOLATHE
materials = list("$metal" = 2500, "$glass" = 2500)
build_path = "/obj/item/weapon/deconstruction_test"
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 30)
////////////////////////////////////////
@@ -433,6 +453,8 @@ datum
icon_state = "datadisk2"
item_state = "card-id"
w_class = 1.0
m_amt = 30
g_amt = 10
var/datum/design/blueprint
New()
src.pixel_x = rand(-5.0, 5)
+3 -3
View File
@@ -7,8 +7,7 @@ Note: Must be placed east/right of an R&D console to function.
*/
/obj/machinery/destructive_analyzer
name = "Destructive Analyzer"
//icon_state = "d_analyzer"
icon_state = "autolathe"
icon_state = "d_analyzer"
var/obj/item/weapon/loaded_item = null
var/obj/machinery/computer/rdconsole/linked_console
anchored = 1
@@ -30,6 +29,7 @@ Note: Must be placed east/right of an R&D console to function.
user.drop_item()
O.loc = src
user << "\blue You add the [O.name] to the machine!"
image('stationobjs.dmi', icon_state="d_analyzer_o")
return
@@ -41,4 +41,4 @@ Note: Must be placed east/right of an R&D console to function.
icon_state = "d20"
g_amt = 5000
m_amt = 5000
origin_tech = list("materials" = 4, "plasmatech" = 2, "syndicate" = 5)
origin_tech = list("materials" = 4, "plasmatech" = 2, "syndicate" = 5, "programming" = 9)
+3 -1
View File
@@ -8,6 +8,7 @@ Note: Must be placed west/left of and R&D console to function.
*/
/obj/machinery/protolathe
name = "Protolathe"
density = 1
anchored = 1.0
icon_state = "protolathe"
@@ -64,4 +65,5 @@ Note: Must be placed west/left of and R&D console to function.
if (O && O.loc == src)
del(O)
busy = 0
src.updateUsrDialog()
src.updateUsrDialog()
return
+147 -44
View File
@@ -16,6 +16,7 @@ also contains the /datum/research holder with all the known/possible technology
obj/machinery/destructive_analyzer/linked_destroy = null //Linked Destructive Analyzer
obj/machinery/protolathe/linked_lathe = null //Linked Protolathe
obj/machinery/circuit_imprinter/linked_imprinter = null //Linked Circuit Imprinter
screen = 1.0 //Which screen is currently showing.
sync = 1 //Will it get updated when the R&D console does it's syncing process.
@@ -28,14 +29,36 @@ also contains the /datum/research holder with all the known/possible technology
var/return_name = null
for(var/T in typesof(/datum/tech) - /datum/tech)
check_tech = null
check_tech = new T(src)
check_tech = new T()
if(check_tech.id == ID)
return_name = check_tech.name
del(check_tech)
check_tech = null
break
return return_name
CallMaterialName(var/ID)
var/datum/reagent/temp_reagent
var/return_name = null
if (copytext(ID, 1, 2) == "$")
return_name = copytext(ID, 2)
switch(return_name)
if("metal")
return_name = "Metal"
if("glass")
return_name = "Glass"
else
for(var/R in typesof(/datum/reagent) - /datum/reagent)
temp_reagent = null
temp_reagent = new R()
if(temp_reagent.id == ID)
return_name = temp_reagent.name
del(temp_reagent)
temp_reagent = null
break
return return_name
SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any).
linked_destroy = null
linked_destroy = locate(/obj/machinery/destructive_analyzer, get_step(src, EAST))
@@ -43,6 +66,11 @@ also contains the /datum/research holder with all the known/possible technology
linked_lathe = null
linked_lathe = locate(/obj/machinery/protolathe, get_step(src, WEST))
if(linked_lathe) linked_lathe.linked_console = src
linked_imprinter = null
linked_imprinter = locate(/obj/machinery/circuit_imprinter/, get_step(src, WEST))
if(linked_imprinter) linked_imprinter.linked_console = src
return
New()
..()
@@ -156,13 +184,14 @@ also contains the /datum/research holder with all the known/possible technology
else if(href_list["eject_item"]) //Eject the item inside the destructive analyzer.
linked_destroy.loaded_item:loc = src.loc
linked_destroy.loaded_item = null
screen = 2.0
screen = 2.1
else if(href_list["deconstruct"]) //Deconstruct the item in the destructive analyzer and update the research holder.
var/choice = input("Proceeding will destroy loaded item.") in list("Proceed", "Cancel")
if(choice == "Cancel") return
screen = 0.1
updateUsrDialog()
flick("d_analyzer_n", linked_destroy)
spawn(16)
for(var/T in linked_destroy.loaded_item.origin_tech)
files.UpdateTech(T, linked_destroy.loaded_item.origin_tech[T])
@@ -172,6 +201,7 @@ also contains the /datum/research holder with all the known/possible technology
linked_destroy.loaded_item = null
for(var/I in contents)
del(I)
linked_destroy.overlays = null
screen = 1.0
updateUsrDialog()
@@ -190,6 +220,7 @@ also contains the /datum/research holder with all the known/possible technology
C.files.AddTech2Known(T)
for(var/datum/design/D in files.known_designs)
C.files.AddDesign2Known(D)
C.files.RefreshResearch()
screen = 1.6
updateUsrDialog()
@@ -197,35 +228,65 @@ also contains the /datum/research holder with all the known/possible technology
sync = !sync
else if(href_list["build"]) //Causes the Protolathe to build something.
var/turf/T = get_step(linked_lathe.loc, get_dir(linked_lathe,usr))
var/datum/design/being_built = null
for(var/datum/design/D in files.known_designs)
if(D.id == href_list["build"])
being_built = D
break
var/power = max(2000, (text2num(href_list["metal"])+text2num(href_list["glass"]))/5)
if(linked_lathe.m_amount >= text2num(href_list["metal"]) && linked_lathe.g_amount >= text2num(href_list["glass"]))
screen = 0.3
linked_lathe.busy = 1
screen = 0.3
linked_lathe.busy = 1
flick("protolathe_n",linked_lathe)
spawn(16)
use_power(power)
linked_lathe.icon_state = "protolathe"
spawn(16)
use_power(power)
flick("protolathe_n",linked_lathe)
spawn(16)
use_power(power)
spawn(16)
linked_lathe.m_amount -= text2num(href_list["metal"])
linked_lathe.g_amount -= text2num(href_list["glass"])
if(linked_lathe.m_amount < 0)
linked_lathe.m_amount = 0
if(linked_lathe.g_amount < 0)
linked_lathe.g_amount = 0
var/obj/new_item = new being_built.build_path(src)
new_item.loc = T
linked_lathe.busy = 0
screen = 3.0
updateUsrDialog()
linked_lathe.m_amount -= text2num(href_list["metal"])
linked_lathe.g_amount -= text2num(href_list["glass"])
if(linked_lathe.m_amount < 0)
linked_lathe.m_amount = 0
if(linked_lathe.g_amount < 0)
linked_lathe.g_amount = 0
var/obj/new_item = new being_built.build_path(src)
new_item.loc = src.loc
linked_lathe.busy = 0
screen = 3.1
updateUsrDialog()
else if(href_list["imprint"])
linked_imprinter.busy = 1
screen = 0.4
updateUsrDialog()
flick("circuit_imprinter_ani", linked_imprinter)
spawn(16)
var/datum/design/being_built = null
for(var/datum/design/D in files.known_designs)
if(D.id == href_list["imprint"])
being_built = D
break
var/power = 0
for(var/I in being_built.materials)
switch(I)
if("$glass")
linked_imprinter.g_amount -= being_built.materials[I]
power += being_built.materials[I] / 5
if(linked_imprinter.g_amount < 0)
linked_imprinter.g_amount = 0
if("$metal")
continue
else
linked_imprinter.reagents.remove_reagent(I, being_built.materials[I])
power += being_built.materials[I]
var/obj/new_item = new being_built.build_path(src)
new_item.loc = src.loc
linked_imprinter.busy = 0
screen = 4.1
updateUsrDialog()
else if(href_list["dispose"])
linked_imprinter.reagents.del_reagent(href_list["dispose"])
else if(href_list["disposeall"])
linked_imprinter.reagents.clear_reagents()
updateUsrDialog()
return
@@ -236,19 +297,19 @@ also contains the /datum/research holder with all the known/possible technology
user.machine = src
var/dat = ""
SyncRDevices()
if(screen == 2.0 || screen == 2.1) //A quick check to make sure the right screen pops up for the D-analyzer.
if(linked_destroy == null)
screen = 2.2
if(linked_destroy.loaded_item == null)
screen = 2.0
else
screen = 2.1
else if(screen == 3.0 || screen == 3.1)
if(linked_lathe == null)
screen = 3.0
else
screen = 3.1
files.RefreshResearch()
switch(screen) //A quick check to make sure you get the right screen when a device is disconnected.
if(2 to 2.9)
if(linked_destroy == null)
screen = 2.0
else if(linked_destroy.loaded_item == null)
screen = 2.1
if(3 to 3.9)
if(linked_lathe == null)
screen = 3.0
if(4 to 4.9)
if(linked_imprinter == null)
screen = 4.0
switch(screen)
@@ -264,16 +325,21 @@ also contains the /datum/research holder with all the known/possible technology
if(0.3)
dat += "Constructing Prototype. Please Wait..."
if(0.4)
dat += "Imprinting Circuit. Please Wait..."
if(1.0) //Main Menu
dat += "Main Menu:<BR><BR>"
dat += "<A href='?src=\ref[src];menu=1.1'>Current Research Levels</A><BR>"
if(t_disk) dat += "<A href='?src=\ref[src];menu=1.2'>Disk Operations</A><BR>"
else if(d_disk) dat += "<A href='?src=\ref[src];menu=1.4'>Disk Operations</A><BR>"
else dat += "(Please Insert Disk)<BR>"
if(linked_destroy != null) dat += "<A href='?src=\ref[src];menu=2.0'>Destructive Analyzer Menu</A><BR>"
if(linked_destroy != null) dat += "<A href='?src=\ref[src];menu=2.2'>Destructive Analyzer Menu</A><BR>"
else dat += "(NO DESTRUCTIVE ANALYZER CONNECTED TO CONSOLE)<BR>"
if(linked_lathe != null) dat += "<A href='?src=\ref[src];menu=3.0'>Protolathe Construction Menu</A><BR>"
if(linked_lathe != null) dat += "<A href='?src=\ref[src];menu=3.1'>Protolathe Construction Menu</A><BR>"
else dat += "(NO PROTOLATHE CONNECTED TO CONSOLE)<BR>"
if(linked_imprinter != null) dat += "<A href='?src=\ref[src];menu=4.1'>Circuit Construction Menu</A><BR>"
else dat += "(NO IMPRINTER CONNECTED TO CONSOLE)<BR>"
dat += "<A href='?src=\ref[src];menu=1.6'>Settings</A>"
if(1.1) //Research viewer
@@ -349,10 +415,14 @@ also contains the /datum/research holder with all the known/possible technology
////////////////////DESTRUCTIVE ANALYZER SCREENS////////////////////////////
if(2.0)
dat += "No Item Loaded. Standing-by...<BR><HR>"
dat += "NO DESTRUCTIVE ANALYZER LINKED TO CONSOLE<BR><BR>"
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
if(2.1)
dat += "No Item Loaded. Standing-by...<BR><HR>"
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
if(2.2)
dat += "Deconstruction Menu<HR>"
dat += "Name: [linked_destroy.loaded_item.name]<BR>"
dat += "Origin Tech:<BR>"
@@ -362,14 +432,11 @@ also contains the /datum/research holder with all the known/possible technology
dat += "<A href='?src=\ref[src];eject_item=1'>Eject Item</A> || "
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
if(2.2)
dat += "NO DESTRUCTIVE ANALYZER LINKED TO CONSOLE<BR><BR>"
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
/////////////////////PROTOLATHE SCREENS/////////////////////////
if(3.0)
dat += "NO PROTOLATHE LINKED TO CONSOLE<BR><BR>"
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
if(3.1)
dat += "Protolathe Menu:<BR><BR>"
dat += "<B>Metal Amount:</B> [linked_lathe.m_amount] cm<sup>3</sup> (MAX: [linked_lathe.max_m_amount])<BR>"
@@ -388,7 +455,43 @@ also contains the /datum/research holder with all the known/possible technology
dat += "<HR><A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
///////////////////CIRCUIT IMPRINTER SCREENS////////////////////
//if(4.0) Add later.
if(4.0)
dat += "NO CIRCUIT IMPRINTER LINKED TO CONSOLE<BR><BR>"
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
if(4.1)
dat += "Circuit Imprinter Menu:<BR><BR>"
dat += "Glass Amount: [linked_imprinter.g_amount] cm<sup>3</sup><BR>"
dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]<HR>"
for(var/datum/design/D in files.known_designs)
if(!(D.build_type & IMPRINTER))
continue
var/temp_dat = "[D.name]"
var/temp_glass = 0
var/check_reagents = 1
for(var/M in D.materials)
temp_dat += " [D.materials[M]] [CallMaterialName(M)]"
if(M == "$glass")
temp_glass = D.materials[M]
else if (copytext(M, 1, 2) != "$" && !linked_imprinter.reagents.has_reagent(M, D.materials[M]))
check_reagents = 0
if ((linked_imprinter.g_amount >= temp_glass) && check_reagents)
dat += "* <A href='?src=\ref[src];imprint=[D.id]'>[temp_dat]</A><BR>"
else
dat += "* [temp_dat]<BR>"
dat += "<HR><A href='?src=\ref[src];menu=4.2'>Chemical Storage</A> | "
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
if(4.2)
dat += "Chemical Storage<BR><HR>"
for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list)
dat += "Name: [R.name] | Units: [R.volume] "
dat += "<A href='?src=\ref[src];dispose=[R.id]'>(Purge)</A><BR>"
dat += "<A href='?src=\ref[src];disposeall=1'><U>Disposal All Chemicals in Storage</U></A><BR>"
dat += "<HR><A href='?src=\ref[src];menu=4.1'>Imprinter Menu</A> | "
dat += "<A href='?src=\ref[src];menu=1.0'>Main Menu</A>"
user << browse("<TITLE>Research and Development Console</TITLE><HR>[dat]", "window=rdconsole;size=575x400")
onclose(user, "rdconsole")
+18 -15
View File
@@ -69,8 +69,9 @@ research holder datum.
var/matches = 0
for(var/req in T.req_tech)
for(var/datum/tech/known in known_tech)
if(req == known && T.req_tech[req] <= known_tech[known])
if((req == known.id) && (known.level >= T.req_tech[req]))
matches++
break
if(matches == T.req_tech.len)
return 1
else
@@ -81,11 +82,12 @@ research holder datum.
DesignHasReqs(var/datum/design/D)
if(D.req_tech.len == 0)
return 1
var/matches
var/matches = 0
for(var/req in D.req_tech)
for(var/datum/tech/known in known_tech)
if(req == known && D.req_tech[req] <= known_tech[known])
if((req == known.id) && (known.level >= D.req_tech[req]))
matches++
break
if(matches == D.req_tech.len)
return 1
else
@@ -100,26 +102,24 @@ research holder datum.
known.level = T.level
return
known_tech += T
RefreshResearch()
return
AddDesign2Known(var/datum/design/D)
for(var/datum/design/known in known_designs)
if(D.id == known.id)
if(D.reliability > known.reliability)
known.reliability = D.reliability
if(D.reliability_mod > known.reliability_mod)
known.reliability_mod = D.reliability_mod
return
known_designs += D
RefreshResearch()
return
//Refreshes known_tech and known_designs list. Then updates the reliability vars of the designs in the known_designs list.
//Input/Output: n/a
RefreshResearch()
for(var/datum/tech/PT in possible_tech - known_tech)
for(var/datum/tech/PT in possible_tech)
if(TechHasReqs(PT))
AddTech2Known(PT)
for(var/datum/design/PD in possible_designs - known_designs)
for(var/datum/design/PD in possible_designs)
if(DesignHasReqs(PD))
AddDesign2Known(PD)
for(var/datum/tech/T in known_tech)
@@ -188,7 +188,7 @@ datum
programming
name = "Data Theory Research"
desc = "The development of new computer and artificial intelligence systems."
desc = "The development of new computer and artificial intelligence and datat storage systems."
id = "programming"
syndicate
@@ -227,11 +227,12 @@ datum
id = "smestech"
req_tech = list("powerstorage" = 3, "magnets" = 3)
cybernetics
name = "Cybernetic Technology"
desc = "The development of advanced man/machine interfaces."
id = "cybernetics"
req_tech = list("biotech" = 3, "programming" = 3)
robotics
name = "Robotics Technology"
desc = "The development of advanced automated, autonomous machines."
id = "robotics"
req_tech = list("materials" = 3, "programming" = 3)
/obj/item/weapon/disk/tech_disk
name = "Technology Disk"
@@ -240,6 +241,8 @@ datum
icon_state = "datadisk2"
item_state = "card-id"
w_class = 1.0
m_amt = 30
g_amt = 10
var/datum/tech/stored
New()
src.pixel_x = rand(-5.0, 5)