diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 3e7c00f3d0ff..201e34654624 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -510,6 +510,34 @@
/obj/item/storage/pill_bottle/proc/error_idlock(mob/user)
to_chat(user, SPAN_WARNING("It must have some kind of ID lock..."))
+/obj/item/storage/pill_bottle/proc/choose_color(mob/user)
+ if(!user)
+ user = usr
+ var/static/list/possible_colors = list(
+ "Orange" = "",
+ "Blue" = "1",
+ "Yellow" = "2",
+ "Light Purple" = "3",
+ "Light Grey" = "4",
+ "White" = "5",
+ "Light Green" = "6",
+ "Cyan" = "7",
+ "Bordeaux" = "8",
+ "Aquamarine" = "9",
+ "Grey" = "10",
+ "Red" = "11",
+ "Black" = "12",
+ )
+ var/selected_color = tgui_input_list(user, "Select a color.", "Color choice", possible_colors)
+ if(!selected_color)
+ return
+
+ selected_color = possible_colors[selected_color]
+
+ icon_state = "pill_canister" + selected_color
+ to_chat(user, SPAN_NOTICE("You color [src]."))
+ update_icon()
+
/obj/item/storage/pill_bottle/verb/set_maptext()
set category = "Object"
set name = "Set short label (on-sprite)"
diff --git a/code/game/objects/items/tools/misc_tools.dm b/code/game/objects/items/tools/misc_tools.dm
index 06f42aacd56c..b016f0e67b33 100644
--- a/code/game/objects/items/tools/misc_tools.dm
+++ b/code/game/objects/items/tools/misc_tools.dm
@@ -58,6 +58,10 @@
if(isturf(A))
to_chat(user, SPAN_WARNING("The label won't stick to that."))
return
+ if(istype(A, /obj/item/storage/pill_bottle))
+ var/obj/item/storage/pill_bottle/target_pill_bottle = A
+ target_pill_bottle.choose_color(user)
+
if(!label || !length(label))
remove_label(A, user)
return
diff --git a/code/modules/reagents/chemistry_machinery/chem_master.dm b/code/modules/reagents/chemistry_machinery/chem_master.dm
index dc5206bb2df5..5b145f75940f 100644
--- a/code/modules/reagents/chemistry_machinery/chem_master.dm
+++ b/code/modules/reagents/chemistry_machinery/chem_master.dm
@@ -141,7 +141,15 @@
if(length(label) < 3)
loaded_pill_bottle.maptext_label = label
loaded_pill_bottle.update_icon()
+ else if(href_list["setcolor"])
+ // Checking for state changes
+ if(!loaded_pill_bottle)
+ return
+
+ if(!Adjacent(usr))
+ return
+ loaded_pill_bottle.choose_color()
else if(href_list["close"])
close_browser(user, "chemmaster")
@@ -355,7 +363,8 @@
if(pill_maker)
if(loaded_pill_bottle)
dat += "Eject [loaded_pill_bottle] \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\]
"
- dat += "Add label to [loaded_pill_bottle] \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\]
"
+ dat += "Add label to [loaded_pill_bottle] \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\]
"
+ dat += "Set color to [loaded_pill_bottle] \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\]
"
dat += "Transfer [loaded_pill_bottle] \[[loaded_pill_bottle.contents.len]/[loaded_pill_bottle.max_storage_space]\] to the smartfridge
"
else
dat += "No pill bottle inserted.
"