From 757179e76ac56a2fcd1ccadcfab07eb33d4cb25f Mon Sep 17 00:00:00 2001 From: Byemoh Date: Thu, 5 May 2022 14:38:31 -0500 Subject: [PATCH] yep (#13984) --- code/datums/action.dm | 1 + .../modules/antagonists/bloodsuckers/powers/_powers.dm | 9 +++++++++ .../antagonists/bloodsuckers/powers/targeted/lunge.dm | 10 +++++++--- code/modules/spells/spell.dm | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/code/datums/action.dm b/code/datums/action.dm index cd7339082e28..ee46c3c6fc62 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -20,6 +20,7 @@ var/button_icon_state = "default" //And this is the state for the action icon var/mob/owner var/syndicate = FALSE // are these buttons only for syndicates? + var/obj/screen/cooldown_overlay/cooldown_overlay /datum/action/New(Target) link_to(Target) diff --git a/code/modules/antagonists/bloodsuckers/powers/_powers.dm b/code/modules/antagonists/bloodsuckers/powers/_powers.dm index 66225e2fa896..696680d4de40 100644 --- a/code/modules/antagonists/bloodsuckers/powers/_powers.dm +++ b/code/modules/antagonists/bloodsuckers/powers/_powers.dm @@ -44,6 +44,7 @@ /datum/action/bloodsucker/New(Target) . = ..() UpdateDesc() + START_PROCESSING(SSfastprocess, src) /datum/action/bloodsucker/proc/UpdateDesc() desc = initial(desc) @@ -58,8 +59,13 @@ /datum/action/bloodsucker/Destroy() bloodsuckerdatum_power = null + STOP_PROCESSING(SSfastprocess, src) return ..() +/datum/action/bloodsucker/process() + cooldown_overlay?.tick() + + /datum/action/bloodsucker/IsAvailable() return TRUE @@ -154,9 +160,12 @@ // Wait for cooldown COOLDOWN_START(src, bloodsucker_power_cooldown, this_cooldown) + cooldown_overlay = start_cooldown(button,world.time + this_cooldown) addtimer(CALLBACK(src, .proc/alpha_in), this_cooldown) /datum/action/bloodsucker/proc/alpha_in() + if(cooldown_overlay) + QDEL_NULL(cooldown_overlay) button.color = rgb(255,255,255,255) button.alpha = 255 diff --git a/code/modules/antagonists/bloodsuckers/powers/targeted/lunge.dm b/code/modules/antagonists/bloodsuckers/powers/targeted/lunge.dm index b4c29f467852..1c6336b46eb6 100644 --- a/code/modules/antagonists/bloodsuckers/powers/targeted/lunge.dm +++ b/code/modules/antagonists/bloodsuckers/powers/targeted/lunge.dm @@ -15,6 +15,7 @@ cooldown = 10 SECONDS target_range = 6 power_activates_immediately = FALSE + var/casting = FALSE //yogs - special snowflake!!! /* * Level 1: Grapple level 2 @@ -77,7 +78,7 @@ PowerActivatedSuccessfully() /datum/action/bloodsucker/targeted/lunge/proc/prepare_target_lunge(atom/target_atom) - START_PROCESSING(SSprocessing, src) + casting = TRUE; to_chat(owner, span_notice("You prepare to lunge!")) //animate them shake var/base_x = owner.pixel_x @@ -90,13 +91,16 @@ if(!do_after(owner, 4 SECONDS, extra_checks = CALLBACK(src, .proc/CheckCanTarget, target_atom))) animate(owner, pixel_x = base_x, pixel_y = base_y, time = 1) - STOP_PROCESSING(SSprocessing, src) + casting = FALSE return FALSE animate(owner, pixel_x = base_x, pixel_y = base_y, time = 1) - STOP_PROCESSING(SSprocessing, src) + casting = FALSE return TRUE /datum/action/bloodsucker/targeted/lunge/process() + ..() + if(!casting) //snowflake code for cooldowns + return if(prob(75)) owner.spin(8, 1) owner.visible_message( diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 0e7f44ffcf4a..2fd22620d3a1 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -320,7 +320,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if(user && user.ckey) user.log_message(span_danger("cast the spell [name]."), LOG_ATTACK) if(recharge) - recharging = TRUE + start_recharge() if(sound) playMagSound() cast(targets,user=user)