From a34b1c34df49f9dac5e20694210e2544c1497777 Mon Sep 17 00:00:00 2001 From: ClairionCM <115504494+ClairionCM@users.noreply.github.com> Date: Sun, 21 Jan 2024 00:15:50 +0100 Subject: [PATCH] Adds a semi-big whistle cooldown. (#5469) Adds a 10 second cooldown to the whistles to make them less spammy # About the pull request This PR gives the whistles a 10 second cooldown to have people spam them less. It also sends a message telling the player how long they need to wait before they can use it again. # Explain why it's good for the game Right now what often ends up happening is people deleting all of the whistles because they are VERY loud and VERY spammy. This should make that less of an issue. # Testing Photographs and Procedure
It works :D ![image](https://github.com/cmss13-devs/cmss13/assets/115504494/58487e7c-3584-4ff1-ad63-c8fc918fa5a0)
# Changelog :cl: qol: made whistles less spammy /:cl: --------- Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com> --- code/game/objects/items/devices/whistle.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/devices/whistle.dm b/code/game/objects/items/devices/whistle.dm index d017a430b88a..331df3ffa006 100644 --- a/code/game/objects/items/devices/whistle.dm +++ b/code/game/objects/items/devices/whistle.dm @@ -8,7 +8,8 @@ actions_types = list(/datum/action/item_action) var/volume = 60 - var/spamcheck = 0 + var/spam_cooldown_time = 10 SECONDS + COOLDOWN_DECLARE(spam_cooldown) /obj/item/device/whistle/attack_self(mob/user) ..() @@ -28,14 +29,14 @@ ..() /obj/item/device/whistle/proc/whistle_playsound(mob/user) - if (spamcheck) + if(!COOLDOWN_FINISHED(src, spam_cooldown)) + to_chat(user, SPAN_DANGER("You are out of breath after using [src]! Wait [COOLDOWN_SECONDSLEFT(src, spam_cooldown)] second\s.")) return user.visible_message(SPAN_WARNING("[user] blows into [src]!")) playsound(get_turf(src), 'sound/items/whistle.ogg', volume, 1, vary = 0) - spamcheck = 1 - addtimer(VARSET_CALLBACK(src, spamcheck, FALSE), 3 SECONDS) + COOLDOWN_START(src, spam_cooldown, spam_cooldown_time) /obj/item/device/whistle/MouseDrop(obj/over_object) if(ishuman(usr))