diff options
author | Seyden <saiifii@live.de> | 2023-09-24 13:23:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-24 13:23:31 +0200 |
commit | e1f345756ba34ccf4d4dd07b90c254097a240b51 (patch) | |
tree | 4862323642e7f7712ca6e1e2a5182ea2d160e416 /src | |
parent | 77429d679a484379f077c1fe2b50f0fd8f742e78 (diff) |
Core/Auras: Implement SPELL_ATTR13_PERIODIC_REFRESH_EXTENDS_DURATION (#29197)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 4 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 10 |
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(); |