diff --git a/code/WorkInProgress/detective_work.dm b/code/WorkInProgress/detective_work.dm index d4b450ce6e8..1ac12140cfc 100644 --- a/code/WorkInProgress/detective_work.dm +++ b/code/WorkInProgress/detective_work.dm @@ -83,7 +83,7 @@ obj/machinery/computer/forensic_scanning New() ..() - new /obj/item/weapon/book/manual/detective(get_turf(src)) //DEEEERP + new /obj/item/weapon/book/manual/detective(get_turf(src)) return @@ -187,7 +187,7 @@ obj/machinery/computer/forensic_scanning if(files && files.len) temp = "Criminal Evidence Database

" temp += "Consolidated data points:
" - for(var/i = 1, i < (files.len + 1), i++) + for(var/i = 1, i <= files.len, i++) temp += "{Dossier [i]}
" temp += "
{Insert Finger Print Card}


" else @@ -197,7 +197,7 @@ obj/machinery/computer/forensic_scanning delete_record(text2num(href_list["delete"])) temp += "Auxiliary Evidence Database

" temp += "This is where anything without fingerprints goes.

" - for(var/i = 1, i < (misc.len + 1), i++) + for(var/i = 1, i <= misc.len, i++) var/list/temp_list = misc[i] var/item_name = get_name(temp_list[1]) temp += "{[item_name]}
" @@ -213,7 +213,7 @@ obj/machinery/computer/forensic_scanning if(stringpercent(prints[num2text(2)]) <= FINGERPRINT_COMPLETE) print_string = "Fingerprints: (80% or higher completion reached)
" + prints[num2text(2)] + "
" temp += print_string - for(var/i = 2, i < (dossier.len + 1), i++) + for(var/i = 2, i <= dossier.len, i++) var/list/outputs = dossier[i] var/item_name = get_name(outputs[1]) var/list/prints_len = outputs[2] @@ -222,7 +222,7 @@ obj/machinery/computer/forensic_scanning var/list/fibers = outputs[3] if(fibers && fibers.len) var/dat = "[fibers[1]]" - for(var/j = 2, j < (fibers.len + 1), j++) + for(var/j = 2, j <= fibers.len, j++) dat += ",
      [fibers[j]]" temp += "    Fibers: [dat]
" else @@ -231,7 +231,7 @@ obj/machinery/computer/forensic_scanning if(blood && blood.len) var/dat = "[blood[1]]" if(blood.len > 1) - for(var/j = 2, j < (blood.len + 1), j++) + for(var/j = 2, j <= blood.len, j++) dat += ",
      [blood[j]]" temp += "    Blood: [dat]
" else @@ -253,7 +253,7 @@ obj/machinery/computer/forensic_scanning if(stringpercent(prints[num2text(2)]) <= FINGERPRINT_COMPLETE) print_string = "Fingerprints: " + prints[num2text(2)] + "
" P.info += print_string - for(var/i = 2, i < (dossier.len + 1), i++) + for(var/i = 2, i <= dossier.len, i++) var/list/outputs = dossier[i] var/item_name = get_name(outputs[1]) var/list/prints_len = outputs[2] @@ -262,7 +262,7 @@ obj/machinery/computer/forensic_scanning var/list/fibers = outputs[3] if(fibers && fibers.len) var/dat = "[fibers[1]]" - for(var/j = 2, j < (fibers.len + 1), j++) + for(var/j = 2, j <= fibers.len, j++) dat += ",
      [fibers[j]]" P.info += "    Fibers: [dat]
" else @@ -271,7 +271,7 @@ obj/machinery/computer/forensic_scanning if(blood && blood.len) var/dat = "[blood[1]]" if(blood.len > 1) - for(var/j = 2, j < (blood.len + 1), j++) + for(var/j = 2, j <= blood.len, j++) dat += ",
      [blood[j]]" P.info += "    Blood: [dat]
" else @@ -366,7 +366,7 @@ obj/machinery/computer/forensic_scanning scan_data = "[scanning]

" if (scanning.blood_DNA.len) scan_data += "Blood Found:
" - for(var/i = 1, i < (scanning.blood_DNA.len + 1), i++) + for(var/i = 1, i <= scanning.blood_DNA.len, i++) var/list/templist = scanning.blood_DNA[i] scan_data += "-Blood type: [templist[2]]\nDNA: [templist[1]]

" else @@ -432,11 +432,13 @@ obj/machinery/computer/forensic_scanning updateUsrDialog() verb/reset() - set name = "Reset Screen" + set name = "Reset Database" set category = "Object" set src in oview(1) temp = "" add_fingerprint(usr) + files = list() + misc = list() return @@ -445,9 +447,10 @@ obj/machinery/computer/forensic_scanning proc/add_data_scanner(var/obj/item/device/detective_scanner/W) - for(var/i = 1, i < (W.stored.len + 1), i++) + for(var/i = 1, i <= W.stored.len, i++) var/list/data = W.stored[i] add_data(data[1],1,data[2],data[3],data[4]) + W.stored = list() proc/add_data(var/atom/A, var/override = 0, var/tempfingerprints, var/tempsuit_fibers,var/tempblood_DNA) @@ -469,7 +472,7 @@ obj/machinery/computer/forensic_scanning if(!misc) misc = list() if(misc) - for(var/i = 1, i < (misc.len + 1), i++) //Lets see if we can find it. + for(var/i = 1, i <= misc.len, i++) //Lets see if we can find it. var/list/templist = misc[i] var/check = templist[1] if(check == A) //There it is! @@ -478,14 +481,14 @@ obj/machinery/computer/forensic_scanning if(!fibers) fibers = list() if(A.suit_fibers) - for(var/j = 1, j < (A.suit_fibers.len + 1), j++) //Fibers~~~ + for(var/j = 1, j <= A.suit_fibers.len, j++) //Fibers~~~ if(!fibers.Find(A.suit_fibers[j])) //It isn't! Add! fibers += A.suit_fibers[j] var/list/blood = templist[3] if(!blood) blood = list() if(A.blood_DNA) - for(var/j = 1, j < (A.blood_DNA.len + 1), j++) //Blood~~~ + for(var/j = 1, j <= A.blood_DNA.len, j++) //Blood~~~ if(!blood.Find(A.blood_DNA[j])) //It isn't! Add! blood += A.blood_DNA[j] var/list/sum_list[3] //Pack it back up! @@ -504,21 +507,21 @@ obj/machinery/computer/forensic_scanning return !merged else //Has prints. var/list/found_prints[A.fingerprints.len + 1] - for(var/i = 1, i < (found_prints.len + 1), i++) + for(var/i = 1, i <= found_prints.len, i++) found_prints[i] = 0 if(!files) files = list() - for(var/i = 1, i < (files.len + 1), i++) //Lets see if we can find the owner of the prints + for(var/i = 1, i <= files.len, i++) //Lets see if we can find the owner of the prints var/list/perp_list = files[i] var/list/perp_prints = params2list(perp_list[1]) var/perp = perp_prints[num2text(1)] var/found2 = 0 - for(var/m = 1, m < (A.fingerprints.len + 1), m++) //Compare database prints with prints on object. + for(var/m = 1, m <= A.fingerprints.len, m++) //Compare database prints with prints on object. var/list/test_prints_list = params2list(A.fingerprints[m]) var/checker = test_prints_list[num2text(1)] if(checker == perp) //Found 'em! Merge! found_prints[m] = 1 - for(var/n = 2, n < (perp_list.len + 1), n++) //Lets see if it is already in the database + for(var/n = 2, n <= perp_list.len, n++) //Lets see if it is already in the database var/list/target = perp_list[n] if(target[1] == A) //Found the original object! found2 = 1 @@ -526,11 +529,11 @@ obj/machinery/computer/forensic_scanning if(!prints) prints = list() if(A.fingerprints) - for(var/j = 1, j < (A.fingerprints.len + 1), j++) //Fingerprints~~~ + for(var/j = 1, j <= A.fingerprints.len, j++) //Fingerprints~~~ var/list/print_test1 = params2list(A.fingerprints[j]) var/test_print1 = print_test1[num2text(1)] var/found = 0 - for(var/k = 1, k <= (prints.len + 1), k++) //Lets see if the print is already in there + for(var/k = 1, k <= prints.len, k++) //Lets see if the print is already in there var/list/print_test2 = params2list(prints[k]) var/test_print2 = print_test2[num2text(1)] if(test_print2 == test_print1) //It is! Merge! @@ -594,15 +597,15 @@ obj/machinery/computer/forensic_scanning proc/update_fingerprints() //I am tired, but this updates the master print, which is used to determine completion of a print. - for(var/k = 1, k < (files.len + 1), k++) + for(var/k = 1, k <= files.len, k++) var/list/perp_list = files[k] var/list/perp_prints = params2list(perp_list[1]) var/perp = perp_prints[num2text(1)] var/list/found_prints = list() - for(var/i = 2, i < (perp_list.len + 1), i++) + for(var/i = 2, i <= perp_list.len, i++) var/list/test_list = perp_list[i] var/list/test_prints = test_list[2] - for(var/j = 1, j < (test_prints.len + 1), j++) + for(var/j = 1, j <= test_prints.len, j++) var/list/test_list_2 = params2list(test_prints[j]) var/test_prints_2 = test_list_2[num2text(1)] if(test_prints_2 == perp) @@ -617,10 +620,10 @@ obj/machinery/computer/forensic_scanning proc/process_card() //I am tired, but this updates the master print from a fingerprint card //which is used to determine completion of a print. if(card.fingerprints) - for(var/k = 1, k < (card.fingerprints.len + 1), k++) + for(var/k = 1, k <= card.fingerprints.len, k++) var/list/test_prints = params2list(card.fingerprints[k]) var/print = test_prints[num2text(1)] - for(var/i = 1, i < (files.len + 1), i++) + for(var/i = 1, i <= files.len, i++) var/list/test_list = files[i] var/list/perp_prints = params2list(test_list[1]) var/perp = perp_prints[num2text(1)] diff --git a/code/defines/obj.dm b/code/defines/obj.dm index f537f56aaa4..6e19ed87e7c 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -359,6 +359,7 @@ /obj/item/device/hacktool/engineer name = "door debugger" desc = "An item of immense complexion, it appears to work by magic." + icon_state = "hacktool-g" /obj/item/blueprints name = "station blueprints" diff --git a/code/defines/obj/supplypacks.dm b/code/defines/obj/supplypacks.dm index a64ea20d0a6..4aa5b528987 100644 --- a/code/defines/obj/supplypacks.dm +++ b/code/defines/obj/supplypacks.dm @@ -322,7 +322,7 @@ containertype = "/obj/structure/closet/crate" containername = "Replacement lights" -/*/datum/supply_packs/costume +/datum/supply_packs/costume name = "Standard Costume crate" contains = list("/obj/item/weapon/storage/backpack/clown", "/obj/item/clothing/shoes/clown_shoes", @@ -340,7 +340,7 @@ containertype = "/obj/structure/closet/crate/secure" containername = "Standard Costumes" access = access_theatre - group = "Clothing" */ + group = "Clothing" /datum/supply_packs/wizard name = "Wizard costume" @@ -421,7 +421,8 @@ "/obj/item/weapon/reagent_containers/glass/bottle/antitoxin", "/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline", "/obj/item/weapon/reagent_containers/glass/bottle/stoxin", - "/obj/item/weapon/storage/syringes") + "/obj/item/weapon/storage/syringes", + "/obj/item/weapon/reagent_containers/glass/large") cost = 10 containertype = "/obj/structure/closet/crate/medical" containername = "Medical crate" diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm index abd5e107907..6289fb1db55 100644 --- a/code/defines/obj/vending.dm +++ b/code/defines/obj/vending.dm @@ -168,7 +168,7 @@ icon_state = "sec" icon_deny = "sec-deny" req_access_txt = "1" - product_paths = "/obj/item/weapon/handcuffs;/obj/item/weapon/flashbang;/obj/item/device/flash;/obj/item/weapon/reagent_containers/food/snacks/donut;/obj/item/weapon/evidencebag" + product_paths = "/obj/item/weapon/handcuffs;/obj/item/weapon/flashbang;/obj/item/device/flash;/obj/item/weapon/reagent_containers/food/snacks/donut;/obj/item/weapon/storage/box/evidence" product_amounts = "8;4;5;12;6" product_hidden = "/obj/item/clothing/glasses/sunglasses;/obj/item/kitchen/donut_box" product_hideamt = "2;2" diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index aeac2e04bbf..978a4679a68 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -122,6 +122,8 @@ if(new_prints) src.fingerprints[new_prints] = text("1=[]&2=[]", md5(H.dna.uni_identity), stringmerge(prints,stars(md5(H.dna.uni_identity), (H.gloves ? rand(10,20) : rand(25,40))))) else if(new_prints == 0) + if(!src.fingerprints) + src.fingerprints = list(text("1=[]&2=[]", md5(H.dna.uni_identity), stars(md5(H.dna.uni_identity), H.gloves ? rand(10,20) : rand(25,40)))) src.fingerprints += text("1=[]&2=[]", md5(H.dna.uni_identity), stars(md5(H.dna.uni_identity), H.gloves ? rand(10,20) : rand(25,40))) for(var/i = 1, i <= src.fingerprints.len, i++) if(length(src.fingerprints[i]) != 69) @@ -254,8 +256,9 @@ if (istype(src, /turf/simulated)) var/obj/item/source2 = src source2.blood_DNA = list() - var/icon/I = new /icon(source2.icon_old, source2.icon_state) - source2.icon = I + if(source2.icon_old) + var/icon/I = new /icon(source2.icon_old, source2.icon_state) + source2.icon = I if(src.fingerprints && src.fingerprints.len) var/done = 0 while(!done) @@ -275,6 +278,8 @@ break else src.fingerprints[i] = "1=" + prints["1"] + "&2=" + new_print + if(!src.fingerprints) + src.fingerprints = list() return /atom/MouseDrop(atom/over_object as mob|obj|turf|area) diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/devices/scanners.dm index 182730a526d..2b6ccd576d5 100644 --- a/code/game/objects/devices/scanners.dm +++ b/code/game/objects/devices/scanners.dm @@ -207,12 +207,12 @@ MASS SPECTROMETER var/list/prints = temp[2] if(!prints) prints = list() - if(A.fingerprints) - for(var/j = 1, j < (A.fingerprints.len + 1), j++) //Fingerprints~~~ + if(A.fingerprints && A.fingerprints.len) + for(var/j = 1, j <= A.fingerprints.len, j++) //Fingerprints~~~ var/list/print_test1 = params2list(A.fingerprints[j]) var/test_print1 = print_test1[num2text(1)] var/found = 0 - for(var/k = 1, k < (prints.len + 1), k++) //Lets see if the print is already in there + for(var/k = 1, k <= prints.len, k++) //Lets see if the print is already in there var/list/print_test2 = params2list(prints[k]) var/test_print2 = print_test2[num2text(1)] if(test_print2 == test_print1) //It is! Merge! @@ -224,15 +224,15 @@ MASS SPECTROMETER var/list/fibers = temp[3] if(!fibers) fibers = list() - if(A.suit_fibers) - for(var/j = 1, j < (A.suit_fibers.len + 1), j++) //Fibers~~~ + if(A.suit_fibers && A.suit_fibers.len) + for(var/j = 1, j <= A.suit_fibers.len, j++) //Fibers~~~ if(!fibers.Find(A.suit_fibers[j])) //It isn't! Add! fibers += A.suit_fibers[j] var/list/blood = temp[4] if(!blood) blood = list() - if(A.blood_DNA.len) - for(var/j = 1, j < (A.blood_DNA.len + 1), j++) //Blood~~~ + if(A.blood_DNA.len && A.blood_DNA) + for(var/j = 1, j <= A.blood_DNA.len, j++) //Blood~~~ if(!blood.Find(A.blood_DNA[j])) //It isn't! Add! blood += A.blood_DNA[j] var/list/sum_list[4] //Pack it back up! @@ -245,7 +245,11 @@ MASS SPECTROMETER if(!merged) //Uh, oh! New data point! var/list/sum_list[4] //Pack it back up! sum_list[1] = A - sum_list[2] = A.fingerprints + if(!A.fingerprints) + world << "Report this to a dev! [A] was lacking a list() for fingerprints!" + sum_list[2] = list() + else + sum_list[2] = A.fingerprints sum_list[3] = A.suit_fibers sum_list[4] = A.blood_DNA stored.len++ diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 37d1370d4ae..27a5155766c 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -276,7 +276,7 @@ FINGERPRINT CARD var/dat = "Fingerprints on Card
" for(var/i = 1, i < (src.fingerprints.len + 1), i++) var/list/L = params2list(src.fingerprints[i]) - dat += text("[]
", L[1]) + dat += text("[]
", L["1"]) //Foreach goto(41) return dat else diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 7dd5fea99be..161fcab6d3f 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -929,7 +929,7 @@ /obj/item/weapon/book/manual/detective name = "The Film Noir: Proper Procedures for Investigations" icon_state ="bookHacking" - author = "Nanotrasen" + author = "NanoTrasen" dat = {"