aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp2
-rw-r--r--src/server/game/Spells/SpellHistory.cpp3
-rw-r--r--src/server/game/Spells/SpellMgr.cpp4
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;