Core/Auras: Implement SPELL_AURA_IGNORE_SPELL_COOLDOWN (#29157)

This commit is contained in:
Aqua Deus
2023-07-19 23:03:26 +02:00
committed by GitHub
parent 19db88fd1b
commit 87f350b1c1
4 changed files with 8 additions and 3 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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;

View File

@@ -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;