diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 6a472fa12..3b951915e 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6518,6 +6518,12 @@ SpellCastResult Spell::CheckItems() Player* player = m_caster->ToPlayer(); if (!player) { + // Non-player case: Check if creature is disarmed + if (!m_caster->CanUseAttackType(m_attackType) && (m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MELEE || m_spellInfo->DmgClass == SPELL_DAMAGE_CLASS_RANGED)) + { + return SPELL_FAILED_EQUIPPED_ITEM_CLASS; + } + return SPELL_CAST_OK; } @@ -7048,11 +7054,11 @@ SpellCastResult Spell::CheckItems() // skip spell if no weapon in slot or broken if (!item || item->IsBroken()) - return SPELL_FAILED_EQUIPPED_ITEM_CLASS; + return SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND; // skip spell if weapon not fit to triggered spell if (!item->IsFitToSpellRequirements(m_spellInfo)) - return SPELL_FAILED_EQUIPPED_ITEM_CLASS; + return SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND; } // offhand hand weapon required @@ -7062,11 +7068,11 @@ SpellCastResult Spell::CheckItems() // skip spell if no weapon in slot or broken if (!item || item->IsBroken()) - return SPELL_FAILED_EQUIPPED_ITEM_CLASS; + return SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND; // skip spell if weapon not fit to triggered spell if (!item->IsFitToSpellRequirements(m_spellInfo)) - return SPELL_FAILED_EQUIPPED_ITEM_CLASS; + return SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND; } }