From 7e24764ad23a85d71cadc5334842857b23640381 Mon Sep 17 00:00:00 2001 From: nyterage Date: Fri, 20 Jun 2025 07:55:39 -0700 Subject: [PATCH] [Buff] Parse `buff_refresh_behavior::TICK` Round 2 --- engine/buff/buff.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/engine/buff/buff.cpp b/engine/buff/buff.cpp index 08982745e08..9451cd60f5f 100644 --- a/engine/buff/buff.cpp +++ b/engine/buff/buff.cpp @@ -1100,6 +1100,9 @@ buff_t* buff_t::set_period( timespan_t period ) // Recheck tick behaviour, which is dependent on buff_period. set_tick_behavior( tick_behavior ); + // Tick behavior can affect refresh behavior, recheck refresh behavior once tick behavior has been set + set_refresh_behavior( buff_refresh_behavior::NONE ); + return this; } @@ -1311,9 +1314,13 @@ buff_t* buff_t::set_refresh_behavior( buff_refresh_behavior b ) if ( b == buff_refresh_behavior::NONE ) { // In wod, default behavior for ticking buffs is to pandemic-extend the duration - if ( tick_behavior == buff_tick_behavior::CLIP || tick_behavior == buff_tick_behavior::REFRESH ) + if ( buff_period > timespan_t::zero() && + ( tick_behavior == buff_tick_behavior::CLIP || tick_behavior == buff_tick_behavior::REFRESH ) ) { - refresh_behavior = buff_refresh_behavior::PANDEMIC; + if ( data().flags( spell_attribute::SX_REFRESH_EXTENDS_DURATION ) ) + refresh_behavior = buff_refresh_behavior::PANDEMIC; + else + refresh_behavior = buff_refresh_behavior::TICK; } // Otherwise, just do the full-duration refresh else