diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index 3c52df131a7..fcafeb50dbd 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -18,37 +18,37 @@
if(log.len && !scanning)
scanning = 1
user << "Printing report, please wait..."
-
- spawn(100)
-
- // Create our paper
- var/obj/item/weapon/paper/P = new(get_turf(src))
- P.name = "paper- 'Scanner Report'"
- P.info = "
Scanner Report
"
- P.info += jointext(log, "
")
- P.info += "
Notes:
"
- P.info_links = P.info
-
- if(ismob(loc))
- var/mob/M = loc
- M.put_in_hands(P)
- M << "Report printed. Log cleared."
-
- // Clear the logs
- log = list()
- scanning = 0
+ addtimer(CALLBACK(src, .proc/PrintReport), 100)
else
user << "The scanner has no logs or is in use."
/obj/item/device/detective_scanner/attack(mob/living/M, mob/user)
return
+/obj/item/device/detective_scanner/proc/PrintReport()
+ // Create our paper
+ var/obj/item/weapon/paper/P = new(get_turf(src))
+ P.name = "paper- 'Scanner Report'"
+ P.info = "Scanner Report
"
+ P.info += jointext(log, "
")
+ P.info += "
Notes:
"
+ P.info_links = P.info
-/obj/item/device/detective_scanner/afterattack(atom/A, mob/user, proximity)
+ if(ismob(loc))
+ var/mob/M = loc
+ M.put_in_hands(P)
+ M << "Report printed. Log cleared."
+
+ // Clear the logs
+ log = list()
+ scanning = 0
+
+/obj/item/device/detective_scanner/pre_attackby(atom/A, mob/user, params)
scan(A, user)
+ return FALSE
/obj/item/device/detective_scanner/proc/scan(atom/A, mob/user)
-
+ set waitfor = 0
if(!scanning)
// Can remotely scan objects and mobs.
if(!in_range(A, user) && !(A in view(world.view, user)))
@@ -107,59 +107,57 @@
// We gathered everything. Create a fork and slowly display the results to the holder of the scanner.
- spawn(0)
+ var/found_something = 0
+ add_log("[worldtime2text()][get_timestamp()] - [target_name]", 0)
- var/found_something = 0
- add_log("[worldtime2text()][get_timestamp()] - [target_name]", 0)
+ // Fingerprints
+ if(fingerprints && fingerprints.len)
+ sleep(30)
+ add_log("Prints:")
+ for(var/finger in fingerprints)
+ add_log("[finger]")
+ found_something = 1
- // Fingerprints
- if(fingerprints && fingerprints.len)
- sleep(30)
- add_log("Prints:")
- for(var/finger in fingerprints)
- add_log("[finger]")
- found_something = 1
+ // Blood
+ if (blood && blood.len)
+ sleep(30)
+ add_log("Blood:")
+ found_something = 1
+ for(var/B in blood)
+ add_log("Type: [blood[B]] DNA: [B]")
- // Blood
- if (blood && blood.len)
- sleep(30)
- add_log("Blood:")
- found_something = 1
- for(var/B in blood)
- add_log("Type: [blood[B]] DNA: [B]")
+ //Fibers
+ if(fibers && fibers.len)
+ sleep(30)
+ add_log("Fibers:")
+ for(var/fiber in fibers)
+ add_log("[fiber]")
+ found_something = 1
- //Fibers
- if(fibers && fibers.len)
- sleep(30)
- add_log("Fibers:")
- for(var/fiber in fibers)
- add_log("[fiber]")
- found_something = 1
+ //Reagents
+ if(reagents && reagents.len)
+ sleep(30)
+ add_log("Reagents:")
+ for(var/R in reagents)
+ add_log("Reagent: [R] Volume: [reagents[R]]")
+ found_something = 1
- //Reagents
- if(reagents && reagents.len)
- sleep(30)
- add_log("Reagents:")
- for(var/R in reagents)
- add_log("Reagent: [R] Volume: [reagents[R]]")
- found_something = 1
+ // Get a new user
+ var/mob/holder = null
+ if(ismob(src.loc))
+ holder = src.loc
- // Get a new user
- var/mob/holder = null
- if(ismob(src.loc))
- holder = src.loc
+ if(!found_something)
+ add_log("# No forensic traces found #", 0) // Don't display this to the holder user
+ if(holder)
+ holder << "Unable to locate any fingerprints, materials, fibers, or blood on \the [target_name]!"
+ else
+ if(holder)
+ holder << "You finish scanning \the [target_name]."
- if(!found_something)
- add_log("# No forensic traces found #", 0) // Don't display this to the holder user
- if(holder)
- holder << "Unable to locate any fingerprints, materials, fibers, or blood on \the [target_name]!"
- else
- if(holder)
- holder << "You finish scanning \the [target_name]."
-
- add_log("---------------------------------------------------------", 0)
- scanning = 0
- return
+ add_log("---------------------------------------------------------", 0)
+ scanning = 0
+ return
/obj/item/device/detective_scanner/proc/add_log(msg, broadcast = 1)
if(scanning)