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."