diff --git a/code/modules/DetectiveWork/detective_work.dm b/code/modules/DetectiveWork/detective_work.dm
index 2dc409beb6f..77b9e6207a1 100644
--- a/code/modules/DetectiveWork/detective_work.dm
+++ b/code/modules/DetectiveWork/detective_work.dm
@@ -258,10 +258,10 @@ obj/machinery/computer/forensic_scanning
if("databaseprint") //Printing from the "files" database.
if(files)
var/obj/item/weapon/paper/P = new(loc)
- P.name = "\improper Database File (Dossier [files.Find(href_list["identifier"])])"
+ var/list/dossier = files[href_list["identifier"]]
+ P.name = "\improper Database File ([dossier[2]])"
P.overlays += "paper_words"
P.info = "Criminal Evidence Database
"
- var/list/dossier = files[href_list["identifier"]]
P.info += "Consolidated data points: [dossier[2]]
"
var/print_string = "Fingerprints: Print not complete!
"
if(stringpercent(dossier[1]) <= FINGERPRINT_COMPLETE)
@@ -512,10 +512,10 @@ obj/machinery/computer/forensic_scanning
prints[print] = atom_fingerprints[print]
else
var/list/templist[4]
- templist[1] = atom_suit_fibers
- templist[2] = atom_blood_DNA
+ templist[1] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
+ templist[2] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
templist[3] = atom_name
- templist[4] = atom_fingerprints
+ templist[4] = atom_fingerprints ? atom_fingerprints.Copy() : null
misc[atom_reference] = templist //Store it!
//Has prints.
if(atom_fingerprints)
@@ -559,17 +559,17 @@ obj/machinery/computer/forensic_scanning
//It's not in there! We gotta add it.
update_fingerprints(main_print, atom_fingerprints[main_print])
var/list/data_point[4]
- data_point[1] = atom_fingerprints
- data_point[2] = atom_suit_fibers
- data_point[3] = atom_blood_DNA
+ data_point[1] = atom_fingerprints ? atom_fingerprints.Copy() : null
+ data_point[2] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
+ data_point[3] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
data_point[4] = atom_name
data_entry[atom_reference] = data_point
continue
//No print at all! New data entry, go!
var/list/data_point[4]
- data_point[1] = atom_fingerprints
- data_point[2] = atom_suit_fibers
- data_point[3] = atom_blood_DNA
+ data_point[1] = atom_fingerprints ? atom_fingerprints.Copy() : null
+ data_point[2] = atom_suit_fibers ? atom_suit_fibers.Copy() : null
+ data_point[3] = atom_blood_DNA ? atom_blood_DNA.Copy() : null
data_point[4] = atom_name
var/list/new_file[2]
new_file[1] = atom_fingerprints[main_print]
diff --git a/code/modules/DetectiveWork/scanner.dm b/code/modules/DetectiveWork/scanner.dm
index 09eb646a448..76c803ff7be 100644
--- a/code/modules/DetectiveWork/scanner.dm
+++ b/code/modules/DetectiveWork/scanner.dm
@@ -135,7 +135,7 @@
return
proc/add_data(atom/A as mob|obj|turf|area)
- //I love hashtables.
+ //I love associative lists.
var/list/data_entry = stored["\ref [A]"]
if(islist(data_entry)) //Yay, it was already stored!
//Merge the fingerprints.
@@ -164,9 +164,9 @@
blood[main_blood] = A.blood_DNA[blood]
return 1
var/list/sum_list[4] //Pack it back up!
- sum_list[1] = A.fingerprints
- sum_list[2] = A.suit_fibers
- sum_list[3] = A.blood_DNA
+ sum_list[1] = A.fingerprints ? A.fingerprints.Copy() : null
+ sum_list[2] = A.suit_fibers ? A.suit_fibers.Copy() : null
+ sum_list[3] = A.blood_DNA ? A.blood_DNA.Copy() : null
sum_list[4] = "\The [A] in \the [get_area(A)]"
stored["\ref [A]"] = sum_list
return 0
\ No newline at end of file