diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index 8ae7517cb62..6d1008ca8d7 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -28,6 +28,9 @@
if(issilicon(A))
user << "You can't label cyborgs."
return
+ if(istype(A, /obj/item/weapon/reagent_containers/glass))
+ user << "The label can't stick to the [A.name]. (Try using a pen)"
+ return
user.visible_message("[user] labels [A] as [label].", \
"You label [A] as [label].")
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index af30187c1dc..9c8b004c479 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -4,6 +4,7 @@
////////////////////////////////////////////////////////////////////////////////
/obj/item/weapon/reagent_containers/glass
name = " "
+ var/base_name = " "
desc = " "
icon = 'icons/obj/chemical.dmi'
icon_state = "null"
@@ -13,6 +14,8 @@
volume = 50
flags = FPRINT | TABLEPASS | OPENCONTAINER
+ var/label_text = ""
+
var/list/can_be_placed_into = list(
/obj/machinery/chem_master/,
/obj/machinery/chem_dispenser/,
@@ -34,14 +37,17 @@
/mob/living/simple_animal/hostile/retaliate/goat,
/obj/machinery/computer/centrifuge )
+ New()
+ ..()
+ base_name = name
+
examine()
set src in view()
..()
if (!(usr in view(2)) && usr!=src.loc) return
usr << "\blue It contains:"
if(reagents && reagents.reagent_list.len)
- for(var/datum/reagent/R in reagents.reagent_list)
- usr << "\blue [R.volume] units of [R.name]"
+ usr << "\blue [src.reagents.total_volume] units of liquid."
else
usr << "\blue Nothing."
if (!is_open_container())
@@ -122,6 +128,22 @@
spawn(5) src.reagents.clear_reagents()
return
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
+ var/tmp_label = sanitize(input(user, "Enter a label for [src.name]","Label",src.label_text))
+ if(length(tmp_label) > 10)
+ user << "\red The label can be at most 10 characters long."
+ else
+ user << "\blue You set the label to \"[tmp_label]\"."
+ src.label_text = tmp_label
+ src.update_name_label()
+
+ proc/update_name_label()
+ if(src.label_text == "")
+ src.name = src.base_name
+ else
+ src.name = "[src.base_name] ([src.label_text])"
+
/obj/item/weapon/reagent_containers/glass/beaker
name = "beaker"
desc = "A beaker. Can hold up to 50 units."
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 8551a16f2af..d0364d1e4cc 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -88,8 +88,7 @@
/obj/item/weapon/reagent_containers/spray/examine()
set src in usr
..()
- for(var/datum/reagent/R in reagents.reagent_list)
- usr << "[round(R.volume)] units of [R.name] left."
+ usr << "[round(src.reagents.total_volume)] units left."
return
/obj/item/weapon/reagent_containers/spray/verb/empty()