aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h4
-rw-r--r--src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp6
-rw-r--r--src/server/game/Spells/Auras/SpellAuras.cpp10
3 files changed, 15 insertions, 5 deletions
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 7b50a922715..54b90231206 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -907,7 +907,7 @@ enum SpellAttr12 : uint32
// EnumUtils: DESCRIBE THIS
enum SpellAttr13 : uint32
{
- SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS = 0x00000001, // TITLE Allow Class Ability Procs
+ SPELL_ATTR13_ALLOW_CLASS_ABILITY_PROCS = 0x00000001, // TITLE Allow Class Ability Procs
SPELL_ATTR13_UNK1 = 0x00000002, // TITLE Unknown attribute 0@Attr13
SPELL_ATTR13_PASSIVE_IS_UPGRADE = 0x00000004, // TITLE Is Upgrade DESCRIPTION Displays "Upgrade" in spell tooltip instead of "Passive"
SPELL_ATTR13_UNK3 = 0x00000008, // TITLE Unknown attribute 3@Attr13
@@ -927,7 +927,7 @@ enum SpellAttr13 : uint32
SPELL_ATTR13_UNK17 = 0x00020000, // TITLE Unknown attribute 17@Attr13
SPELL_ATTR13_ACTIVATES_REQUIRED_SHAPESHIFT = 0x00040000, // TITLE Do Not Enforce Shapeshift Requirements
SPELL_ATTR13_UNK19 = 0x00080000, // TITLE Unknown attribute 19@Attr13
- SPELL_ATTR13_UNK20 = 0x00100000, // TITLE Unknown attribute 20@Attr13
+ SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION = 0x00100000, // TITLE Periodic Refresh Extends Duration
SPELL_ATTR13_UNK21 = 0x00200000, // TITLE Unknown attribute 21@Attr13
SPELL_ATTR13_UNK22 = 0x00400000, // TITLE Unknown attribute 22@Attr13
SPELL_ATTR13_UNK23 = 0x00800000, // TITLE Unknown attribute 23@Attr13
diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
index db9992394c6..52bdc2be059 100644
--- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
+++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp
@@ -1971,7 +1971,7 @@ TC_API_EXPORT EnumText EnumUtils<SpellAttr13>::ToString(SpellAttr13 value)
case SPELL_ATTR13_UNK17: return { "SPELL_ATTR13_UNK17", "Unknown attribute 17@Attr13", "" };
case SPELL_ATTR13_ACTIVATES_REQUIRED_SHAPESHIFT: return { "SPELL_ATTR13_ACTIVATES_REQUIRED_SHAPESHIFT", "Do Not Enforce Shapeshift Requirements", "" };
case SPELL_ATTR13_UNK19: return { "SPELL_ATTR13_UNK19", "Unknown attribute 19@Attr13", "" };
- case SPELL_ATTR13_UNK20: return { "SPELL_ATTR13_UNK20", "Unknown attribute 20@Attr13", "" };
+ case SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION: return { "SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION", "Periodic Refresh Extends Duration", "" };
case SPELL_ATTR13_UNK21: return { "SPELL_ATTR13_UNK21", "Unknown attribute 21@Attr13", "" };
case SPELL_ATTR13_UNK22: return { "SPELL_ATTR13_UNK22", "Unknown attribute 22@Attr13", "" };
case SPELL_ATTR13_UNK23: return { "SPELL_ATTR13_UNK23", "Unknown attribute 23@Attr13", "" };
@@ -2015,7 +2015,7 @@ TC_API_EXPORT SpellAttr13 EnumUtils<SpellAttr13>::FromIndex(size_t index)
case 17: return SPELL_ATTR13_UNK17;
case 18: return SPELL_ATTR13_ACTIVATES_REQUIRED_SHAPESHIFT;
case 19: return SPELL_ATTR13_UNK19;
- case 20: return SPELL_ATTR13_UNK20;
+ case 20: return SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION;
case 21: return SPELL_ATTR13_UNK21;
case 22: return SPELL_ATTR13_UNK22;
case 23: return SPELL_ATTR13_UNK23;
@@ -2056,7 +2056,7 @@ TC_API_EXPORT size_t EnumUtils<SpellAttr13>::ToIndex(SpellAttr13 value)
case SPELL_ATTR13_UNK17: return 17;
case SPELL_ATTR13_ACTIVATES_REQUIRED_SHAPESHIFT: return 18;
case SPELL_ATTR13_UNK19: return 19;
- case SPELL_ATTR13_UNK20: return 20;
+ case SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION: return 20;
case SPELL_ATTR13_UNK21: return 21;
case SPELL_ATTR13_UNK22: return 22;
case SPELL_ATTR13_UNK23: return 23;
diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp
index e884f1c25e4..cb504c77865 100644
--- a/src/server/game/Spells/Auras/SpellAuras.cpp
+++ b/src/server/game/Spells/Auras/SpellAuras.cpp
@@ -926,6 +926,16 @@ void Aura::RefreshTimers(bool resetPeriodicTimer)
{
m_maxDuration = CalcMaxDuration();
+ // Pandemic Mechanic
+ if (m_spellInfo->HasAttribute(SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION))
+ {
+ // 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();
Unit* caster = GetCaster();