diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm
index 7129e39b12f..9fe97f82534 100644
--- a/code/modules/jobs/job_types/cargo_service.dm
+++ b/code/modules/jobs/job_types/cargo_service.dm
@@ -277,4 +277,4 @@ Janitor
belt = /obj/item/device/pda/janitor
ears = /obj/item/device/radio/headset/headset_srv
uniform = /obj/item/clothing/under/rank/janitor
- backpack_contents = list(/obj/item/device/modular_computer/tablet/preset/advanced=1)
+ backpack_contents = list(/obj/item/device/modular_computer/tablet/preset/advanced=1, /obj/item/soapstone/empty=1)
diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm
index 63216572761..a512f12125d 100644
--- a/code/modules/library/soapstone.dm
+++ b/code/modules/library/soapstone.dm
@@ -1,6 +1,6 @@
/obj/item/soapstone
name = "chisel"
- desc = "Leave informative messages for the crew, including the crew of future shifts!\n(Not suitable for engraving on shuttles, off station or on cats. Side effects may include beatings, bannings and orbital bombardment.)"
+ desc = "Leave informative messages for the crew, including the crew of future shifts!\nEven if out of uses, it can still be used to remove messages.\n(Not suitable for engraving on shuttles, off station or on cats. Side effects may include beatings, bannings and orbital bombardment.)"
icon = 'icons/obj/items.dmi'
icon_state = "soapstone"
throw_speed = 3
@@ -18,6 +18,7 @@
/obj/item/soapstone/New()
. = ..()
random_name()
+ check_name() // could start empty
/obj/item/soapstone/proc/random_name()
name = pick("soapstone", "chisel", "chalk", "magic marker")
@@ -58,7 +59,7 @@
if(already_message)
our_message = already_message.creator_key == user.ckey
- if(!remaining_uses && !our_message)
+ if(!remaining_uses && !already_message)
// The dull chisel is dull.
user << "[src] is [w_dull]."
return
@@ -73,15 +74,13 @@
// Removing our own messages refunds a charge
- if((our_message || can_use()) && do_after(user, tool_speed, target=target) && (our_message || can_use()))
+ if(do_after(user, tool_speed, target=target))
user.visible_message("[user] has erased [already_message].", "You erased [already_message].")
already_message.persists = FALSE
qdel(already_message)
playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1)
if(our_message)
refund_use()
- else
- remove_use()
return
var/message = stripped_input(user, "What would you like to [w_engrave]?", "[name] Message")
@@ -115,18 +114,19 @@
return
remaining_uses--
- if(!remaining_uses)
- non_dull_name = name
- name = "[w_dull] [name]"
+ check_name()
/obj/item/soapstone/proc/refund_use()
if(remaining_uses == -1)
return
- var/was_dull = !remaining_uses
remaining_uses++
+ check_name()
- if(was_dull)
+/obj/item/soapstone/proc/check_name()
+ if(remaining_uses)
name = non_dull_name
+ else
+ name = "[w_dull] [name]"
/* Persistent engraved messages, etched onto the station turfs to serve
as instructions and/or memes for the next generation of spessmen.
@@ -138,6 +138,9 @@
/obj/item/soapstone/infinite
remaining_uses = -1
+/obj/item/soapstone/empty
+ remaining_uses = 0
+
/proc/good_chisel_message_location(turf/T)
if(!T)
. = FALSE