From 8552c09133cf3e7d3e4d01a2c59eafa5a69fa85e Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Tue, 7 Mar 2017 18:04:02 -0500 Subject: [PATCH] Forensic scanners can now scan storage objs (#24672) * Fix a spawn * Use pre_attackby * Fix this other spawn --- code/modules/detectivework/scanner.dm | 132 +++++++++++++------------- 1 file changed, 65 insertions(+), 67 deletions(-) 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)