diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index a0ce1f390..a4d975296 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2322,7 +2322,12 @@ void Spell::cast(bool skipCheck) { // Divine Shield, Divine Protection or Hand of Protection if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000000400080)) + { AddPrecastSpell(25771); // Forbearance + AddPrecastSpell(61987); // Avenging Wrath Marker + } + else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x200000000000)) + AddPrecastSpell(61987); // Avenging Wrath Marker break; } case SPELLFAMILY_SHAMAN: @@ -3666,8 +3671,17 @@ SpellCastResult Spell::CheckCast(bool strict) // Caster aura req check if need if(m_spellInfo->casterAuraSpell && !m_caster->HasAura(m_spellInfo->casterAuraSpell)) return SPELL_FAILED_CASTER_AURASTATE; - if(m_spellInfo->excludeCasterAuraSpell && m_caster->HasAura(m_spellInfo->excludeCasterAuraSpell)) - return SPELL_FAILED_CASTER_AURASTATE; + if(m_spellInfo->excludeCasterAuraSpell) + { + // Special cases of non existing auras handling + if(m_spellInfo->excludeCasterAuraSpell == 61988) + { + if(m_caster->HasAura(61987)) + return SPELL_FAILED_CASTER_AURASTATE; + } + else if(m_caster->HasAura(m_spellInfo->excludeCasterAuraSpell)) + return SPELL_FAILED_CASTER_AURASTATE; + } // cancel autorepeat spells if cast start when moving // (not wand currently autorepeat cast delayed to moving stop anyway in spell update code)