From 6554334e33eaeba6d2d455fdd989c8ac72186602 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Fri, 26 Feb 2021 09:13:35 +0100 Subject: [PATCH] Combo streaks (not just the hud icons) now reset after half a dozen seconds (amount subject to change). (#57167) Co-authored-by: Ghommie <425422238+Ghommie@users.noreply.github.com> --- code/_onclick/hud/screen_objects.dm | 11 ++++++++--- code/datums/martial/_martial.dm | 14 ++++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 3bb1a4818a0..7ac15e1baa2 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -742,16 +742,21 @@ var/timerid /atom/movable/screen/combo/proc/clear_streak() + animate(src, alpha = 0, 2 SECONDS, SINE_EASING) + timerid = addtimer(CALLBACK(src, .proc/reset_icons), 2 SECONDS, TIMER_UNIQUE | TIMER_STOPPABLE) + +/atom/movable/screen/combo/proc/reset_icons() cut_overlays() icon_state = "" -/atom/movable/screen/combo/update_icon_state(streak = "") - clear_streak() +/atom/movable/screen/combo/update_icon_state(streak = "", time = 2 SECONDS) + reset_icons() if(timerid) deltimer(timerid) + alpha = 255 if(!streak) return ..() - timerid = addtimer(CALLBACK(src, .proc/clear_streak), 20, TIMER_UNIQUE | TIMER_STOPPABLE) + timerid = addtimer(CALLBACK(src, .proc/clear_streak), time, TIMER_UNIQUE | TIMER_STOPPABLE) icon_state = "combo" for(var/i = 1; i <= length(streak); ++i) var/intent_text = copytext(streak, i, i + 1) diff --git a/code/datums/martial/_martial.dm b/code/datums/martial/_martial.dm index 47ae8cd89e0..4e831b6703e 100644 --- a/code/datums/martial/_martial.dm +++ b/code/datums/martial/_martial.dm @@ -11,6 +11,8 @@ var/smashes_tables = FALSE //If the martial art smashes tables when performing table slams and head smashes var/datum/weakref/holder //owner of the martial art var/display_combos = FALSE //shows combo meter if true + var/combo_timer = 6 SECONDS // period of time after which the combo streak is reset. + var/timerid /datum/martial_art/proc/help_act(mob/living/A, mob/living/D) return FALSE @@ -35,13 +37,17 @@ streak = copytext(streak, 1 + length(streak[1])) if (display_combos) var/mob/living/holder_living = holder.resolve() - holder_living?.hud_used?.combo_display.update_icon_state(streak) + timerid = addtimer(CALLBACK(src, .proc/reset_streak, null, FALSE), combo_timer, TIMER_UNIQUE | TIMER_STOPPABLE) + holder_living?.hud_used?.combo_display.update_icon_state(streak, combo_timer - 2 SECONDS) -/datum/martial_art/proc/reset_streak(mob/living/new_target) +/datum/martial_art/proc/reset_streak(mob/living/new_target, update_icon = TRUE) + if(timerid) + deltimer(timerid) current_target = new_target streak = "" - var/mob/living/holder_living = holder.resolve() - holder_living?.hud_used?.combo_display.update_icon_state(streak) + if(update_icon) + var/mob/living/holder_living = holder?.resolve() + holder_living?.hud_used?.combo_display.update_icon_state(streak) /datum/martial_art/proc/teach(mob/living/holder_living, make_temporary=FALSE) if(!istype(holder_living) || !holder_living.mind)