diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm
index fd3c45f1308..6ce527e22a1 100644
--- a/code/modules/detectivework/microscope/dnascanner.dm
+++ b/code/modules/detectivework/microscope/dnascanner.dm
@@ -103,7 +103,7 @@
update_icon()
if(bloodsamp)
var/obj/item/paper/P = new()
- var/pname = "[src] report #[++report_num]: [bloodsamp.name]"
+ var/pname = "[src] report #[++report_num]"
var/info
P.stamped = list(/obj/item/stamp)
P.overlays = list("paper_stamped")
diff --git a/code/modules/detectivework/microscope/microscope.dm b/code/modules/detectivework/microscope/microscope.dm
index 0fc10dcc9ae..1ce56ba1414 100644
--- a/code/modules/detectivework/microscope/microscope.dm
+++ b/code/modules/detectivework/microscope/microscope.dm
@@ -48,7 +48,7 @@
if(slide.has_swab)
var/obj/item/forensics/swab/swab = slide.has_swab
- pname = "GSR report #[++report_num]: [swab.name]"
+ pname = "GSR report #[report_num]"
info = "Scanned item:
[swab.name]
"
if(swab.gsr)
@@ -58,10 +58,10 @@
else if(slide.has_sample)
var/obj/item/sample/fibers/fibers = slide.has_sample
- pname = "Fiber report #[++report_num]: [initial(fibers.name)]"
+ pname = "Fiber report #[report_num]"
info = "Scanned item:
[initial(fibers.name)]
"
if(fibers.evidence)
- info = "Molecular analysis on provided sample has determined the presence of unique fiber strings.
"
+ info = "Molecular analysis on [fibers.name] has determined the presence of unique fiber strings.
"
for(var/fiber in fibers.evidence)
info += "Most likely match for fibers: [fiber]
"
else
@@ -70,7 +70,7 @@
pname = "Empty slide report #[report_num]"
info = "Evidence suggests that there's nothing in this slide."
else if(istype(sample, /obj/item/sample/print))
- pname = "Fingerprint report #[report_num]: [sample.name]"
+ pname = "Fingerprint report #[report_num]"
info = "Fingerprint analysis report #[report_num]: [sample.name]
"
var/obj/item/sample/print/card = sample
if(card.evidence && card.evidence.len)
diff --git a/code/modules/detectivework/tools/evidencebag.dm b/code/modules/detectivework/tools/evidencebag.dm
index e0cf153cec2..f255edb070e 100644
--- a/code/modules/detectivework/tools/evidencebag.dm
+++ b/code/modules/detectivework/tools/evidencebag.dm
@@ -8,6 +8,12 @@
item_state = ""
w_class = ITEMSIZE_SMALL
var/obj/item/stored_item = null
+ var/label_text = ""
+ var/base_name = ""
+
+/obj/item/evidencebag/Initialize()
+ . = ..()
+ base_name = name
/obj/item/evidencebag/MouseDrop(var/obj/item/I as obj)
if (!ishuman(usr))
@@ -92,3 +98,21 @@
/obj/item/evidencebag/examine(mob/user)
..(user)
if (stored_item) user.examinate(stored_item)
+
+/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, "The label can be at most 15 characters long.")
+ else
+ to_chat(user, "You set the label to \"[tmp_label]\".")
+ label_text = tmp_label
+ update_name_label()
+ return
+ . = ..()
+
+/obj/item/evidencebag/proc/update_name_label()
+ if(label_text == "")
+ name = base_name
+ else
+ name = "[base_name] ([label_text])"
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index e644b27b012..c936c1424f2 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -31,6 +31,7 @@
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler0"
item_state = "labeler0"
+ w_class = ITEMSIZE_SMALL
var/label = null
var/labels_left = 30
var/mode = 0 //off or on.
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 881a3909de9..6f2ebc200d0 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -43,10 +43,13 @@
/obj/item/reagent_containers/glass/get_additional_forensics_swab_info()
var/list/additional_evidence = ..()
var/list/Bdata = REAGENT_DATA(reagents, /decl/reagent/blood/)
+ var/list/blood_Data = list(
+ Bdata["blood_DNA"] = Bdata["blood_type"]
+ )
if(Bdata)
additional_evidence["type"] = EVIDENCE_TYPE_BLOOD
additional_evidence["sample_type"] = "blood"
- additional_evidence["dna"] += Bdata["blood_DNA"]
+ additional_evidence["dna"] += blood_Data
additional_evidence["sample_message"] = "You dip the swab inside [src] to sample its contents."
return additional_evidence
diff --git a/html/changelogs/SecLabels.yml b/html/changelogs/SecLabels.yml
new file mode 100644
index 00000000000..c1891e5ea9a
--- /dev/null
+++ b/html/changelogs/SecLabels.yml
@@ -0,0 +1,46 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: TheGreyWolf
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Evidence bags can now be labelled by using a pen on them."
+ - bugfix: "Swabbing a vial with blood will now properly give the dna type."
+ - tweak: "The various evidence reports generated from the forensic equipment are now uniform in their naming."
+ - tweak: "Labelers are now small sized items rather than normal sized."
+ - maptweak: "Added a labeler to evidence storage and moved the labeler & package wrapper from the investigator desk to the rack in their office."
+ - maptweak: "A water cooler has been added to the security lobby along with a sink and a rag in their break room to clean up those donut crumbs everywhere."
diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm
index 1e95eeb1511..f2973d59d0b 100644
--- a/maps/aurora/aurora-4_mainlevel.dmm
+++ b/maps/aurora/aurora-4_mainlevel.dmm
@@ -20454,15 +20454,10 @@
/turf/simulated/floor/tiled,
/area/security/lobby)
"aJz" = (
-/obj/structure/table/standard,
-/obj/item/paper_bin{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/item/pen,
/obj/structure/noticeboard{
pixel_y = 32
},
+/obj/structure/reagent_dispensers/water_cooler,
/turf/simulated/floor/tiled,
/area/security/lobby)
"aJA" = (
@@ -21504,6 +21499,13 @@
/obj/machinery/newscaster{
pixel_x = -27
},
+/obj/structure/table/standard,
+/obj/item/paper_bin{
+ pixel_x = -3;
+ pixel_y = 5
+ },
+/obj/item/pen,
+/obj/item/storage/box/cups,
/turf/simulated/floor/tiled,
/area/security/lobby)
"aLx" = (
@@ -59107,8 +59109,6 @@
/obj/effect/floor_decal/corner/blue{
dir = 9
},
-/obj/item/stack/packageWrap,
-/obj/item/device/hand_labeler,
/turf/simulated/floor/tiled/dark,
/area/security/forensics_office{
name = "Security - Investigations Office"
@@ -61467,6 +61467,8 @@
d2 = 4;
icon_state = "0-4"
},
+/obj/item/stack/packageWrap,
+/obj/item/device/hand_labeler,
/turf/simulated/floor/lino/grey,
/area/security/forensics_office{
name = "Security - Investigations Office"
@@ -71096,6 +71098,7 @@
/obj/structure/table/standard,
/obj/item/folder/sec,
/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/item/device/hand_labeler,
/turf/simulated/floor/tiled{
name = "cooled floor";
temperature = 278
diff --git a/maps/aurora/aurora-5_interstitial.dmm b/maps/aurora/aurora-5_interstitial.dmm
index 1a56b4d4b4b..1c91c44b0b2 100644
--- a/maps/aurora/aurora-5_interstitial.dmm
+++ b/maps/aurora/aurora-5_interstitial.dmm
@@ -2106,6 +2106,7 @@
"eH" = (
/obj/structure/table/standard,
/obj/effect/floor_decal/corner/grey/diagonal,
+/obj/item/reagent_containers/glass/rag,
/obj/item/storage/box/snack{
desc = "A box full of snack foods. A label is attached that reads, 'Sorry about the microwaves.'";
name = "corporate care package"
@@ -10659,6 +10660,11 @@
"Sw" = (
/obj/effect/floor_decal/corner/grey/diagonal,
/obj/structure/disposalpipe/segment,
+/obj/structure/sink{
+ dir = 8;
+ pixel_x = -12;
+ pixel_y = 2
+ },
/turf/simulated/floor/tiled/white,
/area/security/break_room)
"Sx" = (