mirror of
https://github.com/goonstation/goonstation-2016.git
synced 2026-08-22 21:46:13 +01:00
129 lines
2.9 KiB
Plaintext
129 lines
2.9 KiB
Plaintext
//CONTENTS:
|
|
//Base scanner stuff
|
|
//Health scanner
|
|
//Forensic scanner
|
|
//Reagent scanner
|
|
//Plant scanner
|
|
|
|
/datum/computer/file/pda_program/scan
|
|
return_text()
|
|
return src.return_text_header()
|
|
|
|
proc/scan_atom(atom/A as mob|obj|turf|area)
|
|
|
|
if( !A || (!src.holder) || (!src.master))
|
|
return 1
|
|
|
|
if((!istype(holder)) || (!istype(master)))
|
|
return 1
|
|
|
|
if(!(holder in src.master.contents))
|
|
if(master.scan_program == src)
|
|
master.scan_program = null
|
|
return 1
|
|
|
|
return 0
|
|
|
|
//Health analyzer program
|
|
health_scan
|
|
name = "Health Scan"
|
|
size = 8
|
|
|
|
scan_atom(atom/A as mob|obj|turf|area)
|
|
if (..())
|
|
return
|
|
|
|
if (!iscarbon(A))
|
|
return
|
|
var/mob/living/carbon/C = A
|
|
|
|
. = scan_health(C, 0, 1)
|
|
update_medical_record(C)
|
|
|
|
|
|
//Forensic scanner
|
|
forensic_scan
|
|
name = "Forensic Scan"
|
|
size = 8
|
|
|
|
scan_atom(atom/A as mob|obj|turf|area)
|
|
if(..())
|
|
return
|
|
. = scan_forensic(A) // Moved to scanprocs.dm to cut down on code duplication (Convair880).
|
|
|
|
//Reagent scanning program
|
|
reagent_scan
|
|
name = "Reagent Scan"
|
|
size = 6
|
|
|
|
scan_atom(atom/A as mob|obj|turf|area)
|
|
if (..())
|
|
return
|
|
. = scan_reagents(A)
|
|
|
|
//Plant scanner
|
|
plant_scan
|
|
name = "Plant Scan"
|
|
size = 6
|
|
|
|
scan_atom(atom/A as mob|obj|turf|area)
|
|
if(..())
|
|
return
|
|
. = scan_plant(A, usr) // Moved to scanprocs.dm to cut down on code duplication (Convair880).
|
|
|
|
electronics
|
|
name = "Device Analyzer"
|
|
size = 16
|
|
var/last_address = "02000000"
|
|
|
|
scan_atom(atom/A as obj)
|
|
if (..() || !istype(A, /obj))
|
|
return
|
|
|
|
var/obj/O = A
|
|
if(istype(O,/obj/machinery/rkit))
|
|
return
|
|
|
|
if(O.mats == 0 || O.mats == "Built" || O.is_syndicate != 0)
|
|
return "<span style=\"color:red\">Unable to scan.</span>"
|
|
|
|
if (!istype(master.host_program, /datum/computer/file/pda_program/os/main_os) || !master.host_program:message_on)
|
|
return "<span style=\"color:red\">Messaging must be on to communicate with engineering kit.</span>"
|
|
|
|
var/datum/computer/file/electronics_scan/theScan = new
|
|
theScan.scannedName = initial(O.name)
|
|
theScan.scannedPath = O.mechanics_type_override ? O.mechanics_type_override : O.type
|
|
theScan.scannedMats = O.mats
|
|
|
|
var/datum/signal/signal = get_free_signal()
|
|
signal.source = src.master
|
|
signal.transmission_method = 1
|
|
|
|
if (mechanic_controls.rkit_addresses.len)
|
|
last_address = pick(mechanic_controls.rkit_addresses)
|
|
|
|
signal.data["address_1"] = last_address
|
|
signal.data["command"] = "add"
|
|
|
|
signal.data_file = theScan
|
|
post_signal(signal)
|
|
|
|
/datum/computer/file/electronics_scan
|
|
name = "scanfile"
|
|
extension = "OSCN"
|
|
var/scannedName = null
|
|
var/scannedPath = null
|
|
var/scannedMats = null
|
|
|
|
/datum/computer/file/genetics_scan
|
|
name = "DNA Scan"
|
|
extension = "GSCN"
|
|
var/subject_name = null
|
|
var/subject_uID = null
|
|
var/list/dna_pool = list()
|
|
|
|
disposing()
|
|
if (dna_pool)
|
|
dna_pool = null
|
|
|
|
..() |