This repository has been archived by the owner on Apr 16, 2021. It is now read-only.
/
scanners.dm
129 lines (98 loc) · 2.92 KB
/
scanners.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//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
..()