diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2023-07-19 23:03:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-19 23:03:26 +0200 |
commit | 87f350b1c194442ff48cbb9290c162d21a93f0e8 (patch) | |
tree | c373122162aadcafe0c9c6d74faf9cb6cfa927a8 /src | |
parent | 19db88fd1b1dd3ee9432f9f5facda0129f470a2c (diff) |
Core/Auras: Implement SPELL_AURA_IGNORE_SPELL_COOLDOWN (#29157)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellHistory.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 4 |
4 files changed, 8 insertions, 3 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index b95b1e51b01..4f7a78bb01a 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -474,7 +474,7 @@ enum AuraType : uint32 SPELL_AURA_380 = 380, SPELL_AURA_MOD_DAMAGE_TAKEN_FROM_CASTER_PET = 381, // NYI SPELL_AURA_MOD_PET_STAT_PCT = 382, // NYI - SPELL_AURA_IGNORE_SPELL_COOLDOWN = 383, // NYI + SPELL_AURA_IGNORE_SPELL_COOLDOWN = 383, SPELL_AURA_384 = 384, SPELL_AURA_385 = 385, SPELL_AURA_386 = 386, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 4e3cb502aae..0b7eed47f7c 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -450,7 +450,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //380 &AuraEffect::HandleNULL, //381 SPELL_AURA_MOD_DAMAGE_TAKEN_FROM_CASTER_PET &AuraEffect::HandleNULL, //382 SPELL_AURA_MOD_PET_STAT_PCT - &AuraEffect::HandleNULL, //383 SPELL_AURA_IGNORE_SPELL_COOLDOWN + &AuraEffect::HandleNoImmediateEffect, //383 SPELL_AURA_IGNORE_SPELL_COOLDOWN implemented in SpellHistory::HasCooldown &AuraEffect::HandleNULL, //384 &AuraEffect::HandleNULL, //385 &AuraEffect::HandleNULL, //386 diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index cf7c87d8929..cad303e31a2 100644 --- a/src/server/game/Spells/SpellHistory.cpp +++ b/src/server/game/Spells/SpellHistory.cpp @@ -668,6 +668,9 @@ void SpellHistory::ResetAllCooldowns() bool SpellHistory::HasCooldown(SpellInfo const* spellInfo, uint32 itemId /*= 0*/) const { + if (_owner->HasAuraTypeWithAffectMask(SPELL_AURA_IGNORE_SPELL_COOLDOWN, spellInfo)) + return false; + if (_spellCooldowns.count(spellInfo->Id) != 0) return true; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index dceb3ad1ed5..28e7296a49b 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -1608,7 +1608,8 @@ void SpellMgr::LoadSpellProcs() continue; if (spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_PCT_MODIFIER || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_FLAT_MODIFIER - || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL) + || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL || spellEffectInfo.ApplyAuraName == SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL + || spellEffectInfo.ApplyAuraName == SPELL_AURA_IGNORE_SPELL_COOLDOWN) { found = true; break; @@ -1706,6 +1707,7 @@ void SpellMgr::LoadSpellProcs() isTriggerAura[SPELL_AURA_MOD_WEAPON_CRIT_PERCENT] = true; isTriggerAura[SPELL_AURA_MOD_BLOCK_PERCENT] = true; isTriggerAura[SPELL_AURA_MOD_ROOT_2] = true; + isTriggerAura[SPELL_AURA_IGNORE_SPELL_COOLDOWN] = true; isAlwaysTriggeredAura[SPELL_AURA_OVERRIDE_CLASS_SCRIPTS] = true; isAlwaysTriggeredAura[SPELL_AURA_MOD_STEALTH] = true; |