mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 05:23:22 +01:00
Changes how forensic machine reports works (#12868)
This commit is contained in:
@@ -102,8 +102,8 @@
|
||||
/obj/item/evidencebag/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(W.ispen() || istype(W, /obj/item/device/flashlight/pen))
|
||||
var/tmp_label = sanitizeSafe(input(user, "Enter a label for [name]", "Label", label_text), MAX_NAME_LEN)
|
||||
if(length(tmp_label) > 15)
|
||||
to_chat(user, "<span class='notice'>The label can be at most 15 characters long.</span>")
|
||||
if(length(tmp_label) > MAX_NAME_LEN)
|
||||
to_chat(user, SPAN_NOTICE("The label can be at most [MAX_NAME_LEN] characters long."))
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You set the label to \"[tmp_label]\".</span>")
|
||||
label_text = tmp_label
|
||||
|
||||
@@ -2,28 +2,32 @@
|
||||
name = "forensic sample"
|
||||
icon = 'icons/obj/forensics.dmi'
|
||||
w_class = ITEMSIZE_TINY
|
||||
var/list/evidence = list()
|
||||
var/list/evidence
|
||||
var/list/source
|
||||
var/label_text = ""
|
||||
|
||||
/obj/item/sample/New(var/newloc, var/atom/supplied)
|
||||
/obj/item/sample/Initialize(var/newloc, var/atom/supplied)
|
||||
..(newloc)
|
||||
if(supplied)
|
||||
copy_evidence(supplied)
|
||||
name = "[initial(name)] (\the [initial(supplied.name)])"
|
||||
name = "[initial(name)] ([supplied.get_swab_name()])"
|
||||
LAZYADD(source, supplied.get_swab_name())
|
||||
|
||||
/obj/item/sample/print/New(var/newloc, var/atom/supplied)
|
||||
/obj/item/sample/print/Initialize(var/newloc, var/atom/supplied)
|
||||
..(newloc, supplied)
|
||||
if(evidence && evidence.len)
|
||||
if(LAZYLEN(evidence))
|
||||
icon_state = "fingerprint1"
|
||||
|
||||
/obj/item/sample/proc/copy_evidence(var/atom/supplied)
|
||||
if(supplied.suit_fibers && supplied.suit_fibers.len)
|
||||
evidence = supplied.suit_fibers.Copy()
|
||||
LAZYADD(evidence, supplied.suit_fibers.Copy())
|
||||
supplied.suit_fibers.Cut()
|
||||
|
||||
/obj/item/sample/proc/merge_evidence(var/obj/item/sample/supplied, var/mob/user)
|
||||
if(!supplied.evidence || !supplied.evidence.len)
|
||||
return 0
|
||||
evidence |= supplied.evidence
|
||||
LAZYDISTINCTADD(evidence, supplied.evidence)
|
||||
LAZYDISTINCTADD(source, supplied.source)
|
||||
name = "[initial(name)] (combined)"
|
||||
to_chat(user, SPAN_NOTICE("You transfer the contents of \the [initial(supplied.name)] into \the [src]."))
|
||||
return 1
|
||||
@@ -32,10 +36,11 @@
|
||||
if(!supplied.evidence || !supplied.evidence.len)
|
||||
return 0
|
||||
for(var/print in supplied.evidence)
|
||||
if(evidence[print])
|
||||
evidence[print] = stringmerge(evidence[print],supplied.evidence[print])
|
||||
if(LAZYISIN(evidence, print))
|
||||
LAZYSET(evidence, print, stringmerge(evidence[print],supplied.evidence[print]))
|
||||
else
|
||||
evidence[print] = supplied.evidence[print]
|
||||
LAZYSET(evidence, print, supplied.evidence[print])
|
||||
LAZYDISTINCTADD(source, supplied.source)
|
||||
name = "[initial(name)] (combined)"
|
||||
to_chat(user, SPAN_NOTICE("You overlay \the [src] and \the [initial(supplied.name)], combining the print records."))
|
||||
return 1
|
||||
@@ -46,8 +51,38 @@
|
||||
if(merge_evidence(O, user))
|
||||
qdel(O)
|
||||
return 1
|
||||
else if (O.ispen())
|
||||
var/tmp_label = sanitizeSafe(input(user, "Enter a label for [name]", "Label", label_text), MAX_NAME_LEN)
|
||||
if(length(tmp_label) > MAX_NAME_LEN)
|
||||
to_chat(user, SPAN_WARNING("The label can be at most [MAX_NAME_LEN] characters long."))
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("You set the label to \"[tmp_label]\"."))
|
||||
label_text = tmp_label
|
||||
update_name_label()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/sample/proc/update_name_label()
|
||||
if(label_text == null)
|
||||
name = initial(name)
|
||||
else
|
||||
name = "[initial(name)] ([label_text])"
|
||||
|
||||
/obj/item/sample/Initialize(var/newloc, var/atom/supplied)
|
||||
..(newloc)
|
||||
if(supplied)
|
||||
copy_evidence(supplied)
|
||||
name = "[initial(name)] ([supplied.get_swab_name()])"
|
||||
LAZYADD(source, supplied.get_swab_name())
|
||||
|
||||
/atom/proc/get_swab_name()
|
||||
return "\the [initial(name)]"
|
||||
|
||||
/obj/machinery/door/get_swab_name()
|
||||
if(name != initial(name))
|
||||
return "\the [initial(name)]: [name]"
|
||||
return ..()
|
||||
|
||||
/obj/item/sample/fibers
|
||||
name = "fiber bag"
|
||||
desc = "Used to hold fiber evidence for the detective."
|
||||
@@ -65,7 +100,7 @@
|
||||
item_state = "paper"
|
||||
|
||||
/obj/item/sample/print/attack_self(var/mob/user)
|
||||
if(evidence && evidence.len)
|
||||
if(LAZYLEN(evidence))
|
||||
return
|
||||
if(!ishuman(user))
|
||||
return
|
||||
@@ -76,7 +111,8 @@
|
||||
|
||||
to_chat(user, SPAN_NOTICE("You firmly press your fingertips onto the card."))
|
||||
var/fullprint = H.get_full_print()
|
||||
evidence[fullprint] = fullprint
|
||||
LAZYSET(evidence, fullprint, fullprint)
|
||||
LAZYADD(source, "[H.name]")
|
||||
name = "[initial(name)] (\the [H])"
|
||||
icon_state = "fingerprint1"
|
||||
|
||||
@@ -85,7 +121,7 @@
|
||||
if(!ishuman(M))
|
||||
return ..()
|
||||
|
||||
if(evidence && evidence.len)
|
||||
if(LAZYLEN(evidence))
|
||||
return 0
|
||||
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -112,8 +148,9 @@
|
||||
return 1
|
||||
user.visible_message("[user] takes a copy of \the [H]'s fingerprints.")
|
||||
var/fullprint = H.get_full_print()
|
||||
evidence[fullprint] = fullprint
|
||||
LAZYSET(evidence, fullprint, fullprint)
|
||||
copy_evidence(src)
|
||||
LAZYADD(source, "[H.name]")
|
||||
name = "[initial(name)] (\the [H])"
|
||||
icon_state = "fingerprint1"
|
||||
return 1
|
||||
@@ -122,7 +159,7 @@
|
||||
/obj/item/sample/print/copy_evidence(var/atom/supplied)
|
||||
if(supplied.fingerprints && supplied.fingerprints.len)
|
||||
for(var/print in supplied.fingerprints)
|
||||
evidence[print] = supplied.fingerprints[print]
|
||||
LAZYSET(evidence, print, supplied.fingerprints[print])
|
||||
supplied.fingerprints.Cut()
|
||||
|
||||
/obj/item/forensics/sample_kit
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
\n\nGSR samples are put in a slide and examined in a microscope. \
|
||||
\nBlood and DNA samples are checked in the DNA analyzer"
|
||||
icon_state = "swab"
|
||||
var/gsr = 0
|
||||
var/list/gsr
|
||||
var/list/dna
|
||||
var/used
|
||||
drop_sound = 'sound/items/drop/glass.ogg'
|
||||
@@ -70,17 +70,17 @@
|
||||
return
|
||||
if(H.gloves)
|
||||
var/obj/item/clothing/B = H.gloves
|
||||
if(!B.gunshot_residue)
|
||||
if(!LAZYLEN(B.gunshot_residue))
|
||||
to_chat(user, SPAN_WARNING("There is no residue on [H]'s [B]."))
|
||||
return
|
||||
user.visible_message("[user] swabs [H]'s [B] for a sample.")
|
||||
gsr = B.gunshot_residue
|
||||
LAZYADD(gsr, B.gunshot_residue)
|
||||
else
|
||||
if(!H.gunshot_residue)
|
||||
if(!LAZYLEN(H.gunshot_residue))
|
||||
to_chat(user, SPAN_WARNING("There is no residue on [H]'s palms."))
|
||||
return
|
||||
user.visible_message("[user] swabs [H]'s palm for a sample.")
|
||||
gsr = H.gunshot_residue
|
||||
LAZYADD(gsr, H.gunshot_residue)
|
||||
sample_type = "GSR"
|
||||
else
|
||||
return
|
||||
@@ -134,10 +134,10 @@
|
||||
|
||||
if (EVIDENCE_TYPE_GSR)
|
||||
var/obj/item/clothing/B = A
|
||||
if(!istype(B) || !B.gunshot_residue)
|
||||
if(!istype(B) || !LAZYLEN(B.gunshot_residue))
|
||||
to_chat(user, SPAN_WARNING("There is no residue on \the [A]."))
|
||||
return
|
||||
gsr = B.gunshot_residue
|
||||
LAZYADD(gsr, B.gunshot_residue)
|
||||
sample_type = "residue"
|
||||
|
||||
if (EVIDENCE_TYPE_SALIVA)
|
||||
|
||||
Reference in New Issue
Block a user