diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Item/ItemTemplate.cpp | 60 | ||||
-rw-r--r-- | src/server/game/Entities/Item/ItemTemplate.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 |
3 files changed, 7 insertions, 61 deletions
diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp index bfe841d5c73..c0997b727eb 100644 --- a/src/server/game/Entities/Item/ItemTemplate.cpp +++ b/src/server/game/Entities/Item/ItemTemplate.cpp @@ -139,66 +139,6 @@ char const* ItemTemplate::GetDefaultLocaleName() const return ExtendedData->Display[sWorld->GetDefaultDbcLocale()]; } -uint32 ItemTemplate::GetArmor(uint32 itemLevel) const -{ - uint32 quality = ItemQualities(GetQuality()) != ITEM_QUALITY_HEIRLOOM ? ItemQualities(GetQuality()) : ITEM_QUALITY_RARE; - if (quality > ITEM_QUALITY_ARTIFACT) - return 0; - - // all items but shields - if (GetClass() != ITEM_CLASS_ARMOR || GetSubClass() != ITEM_SUBCLASS_ARMOR_SHIELD) - { - ItemArmorQualityEntry const* armorQuality = sItemArmorQualityStore.LookupEntry(itemLevel); - ItemArmorTotalEntry const* armorTotal = sItemArmorTotalStore.LookupEntry(itemLevel); - if (!armorQuality || !armorTotal) - return 0; - - uint32 inventoryType = GetInventoryType(); - if (inventoryType == INVTYPE_ROBE) - inventoryType = INVTYPE_CHEST; - - ArmorLocationEntry const* location = sArmorLocationStore.LookupEntry(inventoryType); - if (!location) - return 0; - - if (GetSubClass() < ITEM_SUBCLASS_ARMOR_CLOTH || GetSubClass() > ITEM_SUBCLASS_ARMOR_PLATE) - return 0; - - float total = 1.0f; - float locationModifier = 1.0f; - switch (GetSubClass()) - { - case ITEM_SUBCLASS_ARMOR_CLOTH: - total = armorTotal->Cloth; - locationModifier = location->Clothmodifier; - break; - case ITEM_SUBCLASS_ARMOR_LEATHER: - total = armorTotal->Leather; - locationModifier = location->Leathermodifier; - break; - case ITEM_SUBCLASS_ARMOR_MAIL: - total = armorTotal->Mail; - locationModifier = location->Chainmodifier; - break; - case ITEM_SUBCLASS_ARMOR_PLATE: - total = armorTotal->Plate; - locationModifier = location->Platemodifier; - break; - default: - break; - } - - return uint32(armorQuality->Qualitymod[quality] * total * locationModifier + 0.5f); - } - - // shields - ItemArmorShieldEntry const* shield = sItemArmorShieldStore.LookupEntry(itemLevel); - if (!shield) - return 0; - - return uint32(shield->Quality[quality] + 0.5f); -} - float ItemTemplate::GetDPS(uint32 itemLevel) const { uint32 quality = ItemQualities(GetQuality()) != ITEM_QUALITY_HEIRLOOM ? ItemQualities(GetQuality()) : ITEM_QUALITY_RARE; diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index d3785680915..e770e9830c8 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -864,6 +864,7 @@ struct TC_GAME_API ItemTemplate uint16 GetItemRandomSuffixGroupID() const { return ExtendedData->ItemRandomSuffixGroupID; } int32 GetMinDamage(uint8 index) const { return BasicData->MinDamage[index]; } int32 GetMaxDamage(uint8 index) const { return BasicData->MaxDamage[index]; } + int16 GetResistance(SpellSchools school) const { return ExtendedData->Resistances[school]; } uint32 MaxDurability; std::vector<ItemEffectEntry const*> Effects; @@ -916,7 +917,6 @@ struct TC_GAME_API ItemTemplate inline bool HasFlag(ItemFlagsCustom customFlag) const { return (FlagsCu & customFlag) != 0; } char const* GetDefaultLocaleName() const; - uint32 GetArmor(uint32 itemLevel) const; float GetDPS(uint32 itemLevel) const; void GetDamage(uint32 itemLevel, float& minDamage, float& maxDamage) const; bool IsUsableByLootSpecialization(Player const* player, bool alwaysAllowBoundToAccount) const; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c7c5e753656..1b80c16407b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7471,12 +7471,18 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) ApplyItemModModifier(static_cast<ItemModType>(statType), val, apply); } + for (uint8 i = 0; i < MAX_SPELL_SCHOOL; ++i) + if (int16 resistance = proto->GetResistance(SpellSchools(i))) + HandleStatFlatModifier(UnitMods(UNIT_MOD_ARMOR + i), BASE_VALUE, float(resistance), apply); + + /* if (uint32 armor = proto->GetArmor(itemLevel)) { HandleStatFlatModifier(UNIT_MOD_ARMOR, TOTAL_VALUE, float(armor), apply); if (proto->GetClass() == ITEM_CLASS_ARMOR && proto->GetSubClass() == ITEM_SUBCLASS_ARMOR_SHIELD) SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ShieldBlock), apply ? int32(armor * 2.5f) : 0); } + */ WeaponAttackType attType = Player::GetAttackBySlot(slot, proto->GetInventoryType()); if (attType != MAX_ATTACK) |