diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 4ff998cb4dc..91166e411e7 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -24050,16 +24050,28 @@ bool Player::HasItemFitToSpellRequirements(SpellInfo const* spellInfo, Item cons } case ITEM_CLASS_ARMOR: { - // tabard not have dependent spells - for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_MAINHAND; ++i) - if (Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, i)) + if (!spellInfo->HasAttribute(SPELL_ATTR8_ARMOR_SPECIALIZATION)) + { + // tabard not have dependent spells + for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_MAINHAND; ++i) + if (Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, i)) + if (item != ignoreItem && item->IsFitToSpellRequirements(spellInfo)) + return true; + + // shields can be equipped to offhand slot + if (Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND)) if (item != ignoreItem && item->IsFitToSpellRequirements(spellInfo)) return true; - - // shields can be equipped to offhand slot - if (Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND)) - if (item != ignoreItem && item->IsFitToSpellRequirements(spellInfo)) - return true; + } + else + { + for (uint8 i : {EQUIPMENT_SLOT_HEAD, EQUIPMENT_SLOT_SHOULDERS, EQUIPMENT_SLOT_CHEST, EQUIPMENT_SLOT_WAIST, EQUIPMENT_SLOT_LEGS, EQUIPMENT_SLOT_FEET, EQUIPMENT_SLOT_WRISTS, EQUIPMENT_SLOT_HANDS}) + { + Item* item = GetUseableItemByPos(INVENTORY_SLOT_BAG_0, i); + if (!item || !item->IsFitToSpellRequirements(spellInfo)) + return false; + } + } break; } |