From 74a7fdc1bd6bf2526fb1b7666a5b9c3729ee1a4c Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 22 Nov 2016 17:00:26 +0100 Subject: Core/Spells: Implemented SPELL_ATTR8_ARMOR_SPECIALIZATION - requires all slots to be filled with a valid item --- src/server/game/Entities/Player/Player.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3