diff --git a/code/game/objects/items/weapons/material/ashtray.dm b/code/game/objects/items/weapons/material/ashtray.dm
index efa3911323c..00630002558 100644
--- a/code/game/objects/items/weapons/material/ashtray.dm
+++ b/code/game/objects/items/weapons/material/ashtray.dm
@@ -18,15 +18,17 @@
return
/obj/item/material/ashtray/shatter()
+ ..()
if(emptyout(get_turf(src)))
visible_message(SPAN_DANGER("The contents of [src] spill everywhere!"))
/obj/item/material/ashtray/proc/emptyout(atom/dest)
- var/count = 0
- for (var/obj/item/clothing/mask/smokable/cigarette/O in contents)
- count++
+ if(!contents.len)
+ return FALSE
+ for (var/obj/O in contents)
O.forceMove(dest)
- return count > 0
+ update_icon()
+ return TRUE
/obj/item/material/ashtray/attack_self(mob/user)
var/turf/dest = get_turf(src)
@@ -68,7 +70,7 @@
if (istype(W,/obj/item/clothing/mask/smokable/cigarette))
var/obj/item/clothing/mask/smokable/cigarette/cig = W
if (cig.lit == TRUE)
- user.visible_message("[user] crushes [cig] in \the [src], putting it out.", SPAN_NOTICE(""))
+ user.visible_message("[user] crushes [cig] in [src], putting it out.", SPAN_NOTICE("You crush [cig] in [src], putting it out."))
playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1)
STOP_PROCESSING(SSprocessing, cig)
var/obj/item/butt = new cig.type_butt(src)
@@ -82,8 +84,9 @@
"[user] places [cig] in [src] without even smoking it.",
SPAN_NOTICE("You place [cig] in [src] without even smoking it. Why would you do that?")
)
+ else
+ user.visible_message("[user] places [W] in [src].", SPAN_NOTICE("You place [W] in [src]."))
- src.visible_message("[user] places [W] in [src].")
user.update_inv_l_hand()
user.update_inv_r_hand()
add_fingerprint(user)
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 0a66c80d5ff..6d1d7d64a4f 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -459,8 +459,6 @@
// Filling/emptying open reagent containers
var/obj/item/reagent_containers/RG = O
- if (istype(RG, /obj/item/reagent_containers/glass/rag))
- return
if (istype(RG) && RG.is_open_container())
var/atype = alert(usr, "Do you want to fill or empty \the [RG] at \the [src]?", "Fill or Empty", "Fill", "Empty", "Cancel")
@@ -534,7 +532,7 @@
// Short of a rewrite, this is necessary to stop monkeycubes being washed.
else if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube))
return
- else if(istype(O, /obj/item/mop) || istype(O, /obj/item/reagent_containers/glass/rag))
+ else if(istype(O, /obj/item/mop))
O.reagents.add_reagent(/decl/reagent/water, 5)
to_chat(user, SPAN_NOTICE("You wet \the [O] in \the [src]."))
playsound(loc, 'sound/effects/slosh.ogg', 25, 1)
diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm
index e62977e2686..07a7deca815 100644
--- a/code/modules/detectivework/tools/rag.dm
+++ b/code/modules/detectivework/tools/rag.dm
@@ -182,7 +182,10 @@
if(!proximity)
return
- if(istype(A, /obj/structure/reagent_dispensers) || istype(A, /obj/structure/mopbucket) || istype(A, /obj/item/reagent_containers/glass) || istype(A, /obj/structure/sink))
+ if(istype(A, /obj/structure/sink))
+ return
+
+ else if(istype(A, /obj/structure/reagent_dispensers) || istype(A, /obj/structure/mopbucket) || istype(A, /obj/item/reagent_containers/glass))
if(!REAGENTS_FREE_SPACE(reagents))
to_chat(user, SPAN_WARNING("\The [src] is already soaked."))
return
@@ -194,7 +197,7 @@
update_icon()
return
- if(!on_fire && istype(A) && (src in user))
+ else if(!on_fire && istype(A) && (src in user))
if(A.is_open_container() && !(A in user))
remove_contents(user, A)
else if(!ismob(A)) //mobs are handled in attack() - this prevents us from wiping down people while smothering them.
diff --git a/html/changelogs/johnwildkins-ashtray.yml b/html/changelogs/johnwildkins-ashtray.yml
new file mode 100644
index 00000000000..b8bd27a811a
--- /dev/null
+++ b/html/changelogs/johnwildkins-ashtray.yml
@@ -0,0 +1,5 @@
+author: JohnWildkins
+delete-after: True
+changes:
+ - bugfix: "Rags can now be filled at sinks once again."
+ - bugfix: "Ashtrays can now be emptied properly, and ashtray icons now update properly when emptied and filled. Ashtrays made of a brittle material will now also shatter if destroyed."