aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Player/Player.cpp28
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;
}