diff --git a/code/controllers/Processes/scheduler.dm b/code/controllers/Processes/scheduler.dm
index c852264bb75..c68ef116b6e 100644
--- a/code/controllers/Processes/scheduler.dm
+++ b/code/controllers/Processes/scheduler.dm
@@ -137,6 +137,7 @@
var/datum/callback/callback
/datum/scheduled_task/callback/New(var/trigger_time, var/datum/callback, var/proc/task_after_process, var/list/task_after_process_args)
+ src.callback = callback
..(trigger_time = trigger_time, task_after_process = task_after_process, task_after_process_args = task_after_process_args)
/datum/scheduled_task/callback/process()
diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm
index 064f5b37b8b..25148b88132 100644
--- a/code/modules/clothing/under/accessories/accessory_vr.dm
+++ b/code/modules/clothing/under/accessories/accessory_vr.dm
@@ -6,6 +6,7 @@
slot_flags = SLOT_TIE | SLOT_OCLOTHING
icon = 'icons/obj/clothing/collars_vr.dmi'
icon_override = 'icons/obj/clothing/collars_vr.dmi'
+ var/writtenon = 0
/obj/item/clothing/accessory/collar/silver
name = "Silver tag collar"
@@ -27,6 +28,20 @@
icon_state = "collar_bell"
item_state = "collar_bell_overlay"
overlay_state = "collar_bell_overlay"
+ var/jingled = 0
+
+/obj/item/clothing/accessory/collar/bell/verb/jinglebell()
+ set name = "Jingle Bell"
+ set category = "Object"
+ set src in usr
+ if(!istype(usr, /mob/living)) return
+ if(usr.stat) return
+
+ if(!jingled)
+ usr.audible_message("[usr] jingles the [src]'s bell.")
+ jingled = 1
+ schedule_callback_in(5 SECONDS, VARSET_CALLBACK(src, jingled, 0))
+ return
/obj/item/clothing/accessory/collar/shock
name = "Shock collar"
@@ -164,8 +179,14 @@
item_state = "collar_holo_overlay"
overlay_state = "collar_holo_overlay"
-/obj/item/clothing/accessory/collar/holo/attack_self(mob/user as mob)
- to_chat(user,"[name]'s interface is projected onto your hand.")
+/obj/item/clothing/accessory/collar/attack_self(mob/user as mob)
+ if(istype(src,/obj/item/clothing/accessory/collar/holo))
+ to_chat(user,"[name]'s interface is projected onto your hand.")
+ else
+ if(writtenon)
+ to_chat(user,"You need a pen or a screwdriver to edit the tag on this collar.")
+ return
+ to_chat(user,"You adjust the [name]'s tag.")
var/str = copytext(reject_bad_text(input(user,"Tag text?","Set tag","")),1,MAX_NAME_LEN)
@@ -176,7 +197,49 @@
else
to_chat(user,"You set the [name]'s tag to '[str]'.")
name = initial(name) + " ([str])"
- desc = initial(desc) + " The tag says \"[str]\"."
+ if(istype(src,/obj/item/clothing/accessory/collar/holo))
+ desc = initial(desc) + " The tag says \"[str]\"."
+ else
+ desc = initial(desc) + " \"[str]\" has been engraved on the tag."
+ writtenon = 1
+
+/obj/item/clothing/accessory/collar/attackby(obj/item/I, mob/user)
+ if(istype(src,/obj/item/clothing/accessory/collar/holo))
+ return
+
+ if(istype(I,/obj/item/weapon/tool/screwdriver))
+ update_collartag(user, I, "scratched out", "scratch out", "engraved")
+ return
+
+ if(istype(I,/obj/item/weapon/pen))
+ update_collartag(user, I, "crossed out", "cross out", "written")
+ return
+
+ to_chat(user,"You need a pen or a screwdriver to edit the tag on this collar.")
+
+/obj/item/clothing/accessory/collar/proc/update_collartag(mob/user, obj/item/I, var/erasemethod, var/erasing, var/writemethod)
+ if(!(istype(user.get_active_hand(),I)) || !(istype(user.get_inactive_hand(),src)) || (user.stat))
+ return
+
+ var/str = copytext(reject_bad_text(input(user,"Tag text?","Set tag","")),1,MAX_NAME_LEN)
+
+ if(!str || !length(str))
+ if(!writtenon)
+ to_chat(user,"You don't write anything.")
+ else
+ to_chat(user,"You [erasing] the words with the [I].")
+ name = initial(name)
+ desc = initial(desc) + " The tag has had the words [erasemethod]."
+ else
+ if(!writtenon)
+ to_chat(user,"You write '[str]' on the tag with the [I].")
+ name = initial(name) + " ([str])"
+ desc = initial(desc) + " \"[str]\" has been [writemethod] on the tag."
+ writtenon = 1
+ else
+ to_chat(user,"You [erasing] the words on the tag with the [I], and write '[str]'.")
+ name = initial(name) + " ([str])"
+ desc = initial(desc) + " Something has been [erasemethod] on the tag, and it now has \"[str]\" [writemethod] on it."
//Machete Holsters
/obj/item/clothing/accessory/holster/machete
@@ -193,4 +256,4 @@
/obj/item/clothing/accessory/medal/silver/unity
name = "medal of unity"
- desc = "A silver medal awarded to a group which has demonstrated exceptional teamwork to achieve a notable feat."
\ No newline at end of file
+ desc = "A silver medal awarded to a group which has demonstrated exceptional teamwork to achieve a notable feat."