diff --git a/code/modules/detective_work/scanner.dm b/code/modules/detective_work/scanner.dm
index 59466282384..54fa83aa270 100644
--- a/code/modules/detective_work/scanner.dm
+++ b/code/modules/detective_work/scanner.dm
@@ -5,7 +5,8 @@
/obj/item/device/detective_scanner
name = "forensic scanner"
desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings."
- icon_state = "forensic1"
+ icon = 'icons/goonstation/objects/objects.dmi'
+ icon_state = "detscanner"
w_class = 3.0
item_state = "electronic"
flags = CONDUCT | NOBLUDGEON
@@ -15,9 +16,50 @@
var/list/log = list()
/obj/item/device/detective_scanner/attack_self(var/mob/user)
+ var/search = input(user, "Enter name, fingerprint or blood DNA.", "Find record", "")
+
+ if (!search || user.stat)
+ return
+
+ search = lowertext(search)
+
+ var/name
+ var/fingerprint
+ var/dna
+
+ // I really, really wish I didn't have to split this into two seperate loops. But the datacore is awful.
+
+ var/datum/data/record/S = record
+ if(search == lowertext(S.fields["fingerprint"]) || search == lowertext(S.fields["name"]))
+ name = S.fields["name"]
+ continue
+
+ for (var/record in data_core.medical)
+ if (search == lowertext(M.fields["b_dna"]) || name == M.fields["name"])
+ dna = M.fields["b_dna"]
+
+ if(!fingerprint) // We have searched by DNA, and do not have the relevant information from the security records.
+ name = M.fields["name"]
+ if(name == S.fields["name"])
+ fingerprint = S.fields["fingerprint"]
+ continue
+ continue
+
+ if(name && fingerprint && dna)
+ to_chat(user, "Match found in station records: [name]
\
+ Fingerprint: [fingerprint]
\
+ Blood DNA: [dna]")
+ return
+
+
+
+/obj/item/device/detective_scanner/verb/print_scanner_report()
+ set name = "Print Scanner Report"
+ set category = "Object"
+
if(log.len && !scanning)
scanning = 1
- to_chat(user, "Printing report, please wait...")
+ to_chat(usr, "Printing report, please wait...")
playsound(loc, "sound/goonstation/machines/printer_thermal.ogg", 50, 1)
spawn(100)
@@ -38,7 +80,8 @@
log = list()
scanning = 0
else
- to_chat(user, "The scanner has no logs or is in use.")
+ to_chat(usr, "The scanner has no logs or is in use.")
+
/obj/item/device/detective_scanner/attack(mob/living/M as mob, mob/user as mob)
return
diff --git a/icons/goonstation/objects/devices.dmi b/icons/goonstation/objects/devices.dmi
deleted file mode 100644
index cf74d73796c..00000000000
Binary files a/icons/goonstation/objects/devices.dmi and /dev/null differ
diff --git a/icons/goonstation/objects/objects.dmi b/icons/goonstation/objects/objects.dmi
index 41523d18541..8dadb400668 100644
Binary files a/icons/goonstation/objects/objects.dmi and b/icons/goonstation/objects/objects.dmi differ