aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-02-21 16:10:48 +0100
committerShauren <shauren.trinity@gmail.com>2021-02-21 16:10:48 +0100
commitac1ef5efbe0a8c4cf25f4bdf154d5b4e86827c06 (patch)
tree2bc485dfeb1a4fc97e2390116348d12a7af1bb86 /src/server/game/Spells/Spell.cpp
parent1b8ef46808c44e68f213768c6a64ccc0048f3d65 (diff)
Core/Auras: Implemented SPELL_AURA_DISABLE_ATTACKING_EXCEPT_ABILITIES
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 67ac36e5f90..53f8ad117be 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4901,6 +4901,23 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint
&& !m_spellInfo->HasAttribute(SPELL_ATTR12_IGNORE_CASTING_DISABLED)
&& !m_caster->HasAuraTypeWithFamilyFlags(SPELL_AURA_DISABLE_CASTING_EXCEPT_ABILITIES, sChrClassesStore.AssertEntry(m_caster->getClass())->SpellClassSet, m_spellInfo->SpellFamilyFlags));
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
+
+ if (m_caster->HasAuraType(SPELL_AURA_DISABLE_ATTACKING_EXCEPT_ABILITIES))
+ {
+ if (!m_caster->HasAuraTypeWithFamilyFlags(SPELL_AURA_DISABLE_ATTACKING_EXCEPT_ABILITIES, sChrClassesStore.AssertEntry(m_caster->getClass())->SpellClassSet, m_spellInfo->SpellFamilyFlags))
+ {
+ if (m_spellInfo->HasAttribute(SPELL_ATTR0_REQ_AMMO)
+ || m_spellInfo->IsNextMeleeSwingSpell()
+ || m_spellInfo->HasAttribute(SPELL_ATTR1_MELEE_COMBAT_START)
+ || m_spellInfo->HasAttribute(SPELL_ATTR2_UNK20)
+ || m_spellInfo->HasEffect(SPELL_EFFECT_ATTACK)
+ || m_spellInfo->HasEffect(SPELL_EFFECT_NORMALIZED_WEAPON_DMG)
+ || m_spellInfo->HasEffect(SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL)
+ || m_spellInfo->HasEffect(SPELL_EFFECT_WEAPON_PERCENT_DAMAGE)
+ || m_spellInfo->HasEffect(SPELL_EFFECT_WEAPON_DAMAGE))
+ return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
+ }
+ }
}
// check if we are using a potion in combat for the 2nd+ time. Cooldown is added only after caster gets out of combat