From d21fb472f0fa29c8d2cda359d6c25983db186dd4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 23 Mar 2025 18:01:40 +0100 Subject: Core/Auras: Fixed SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION (cherry picked from commit 92773e207c94e355fd37b266a219aad977cce9e2) --- src/server/game/Spells/Auras/SpellAuras.cpp | 3 --- src/server/game/Spells/Spell.cpp | 6 ++++++ 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/server') diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index ea99543c16e..5725fce7ed6 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -968,9 +968,6 @@ void Aura::RefreshTimers(bool resetPeriodicTimer) { // Pandemic doesn't reset periodic timer resetPeriodicTimer = false; - - int32 pandemicDuration = CalculatePct(m_maxDuration, 30.f); - m_maxDuration = std::max(GetDuration(), std::min(pandemicDuration, GetDuration()) + m_maxDuration); } RefreshDuration(); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index f0d88451c29..b2142825d9d 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3267,6 +3267,12 @@ void Spell::DoSpellEffectHit(Unit* unit, SpellEffectInfo const& spellEffectInfo, if (!hitInfo.AuraDuration) hitInfo.AuraDuration = int32(origDuration * m_originalCaster->m_unitData->ModCastingSpeed); } + + if (refresh && m_spellInfo->HasAttribute(SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION)) + { + int32 newDuration = hitInfo.AuraDuration + hitInfo.HitAura->GetDuration(); + hitInfo.AuraDuration = std::min(newDuration, CalculatePct(hitInfo.AuraDuration, 130)); + } } } else -- cgit v1.2.3