105 0,
SKILL_CLOTH,
SKILL_LEATHER,
SKILL_MAIL,
SKILL_PLATE_MAIL, 0,
SKILL_SHIELD, 0, 0, 0, 0
153 if (!armorQuality || !armorTotal)
168 float locationModifier = 1.0f;
172 total = armorTotal->
Cloth;
180 total = armorTotal->
Mail;
184 total = armorTotal->
Plate;
191 return uint32(armorQuality->
Qualitymod[quality] * total * locationModifier + 0.5f);
257 minDamage = maxDamage = 0.0f;
258 float dps =
GetDPS(itemLevel);
261 float avgDamage = dps *
GetDelay() * 0.001f;
263 maxDamage = floor(
float(avgDamage * (
GetDmgVariance() * 0.5f + 1.0f) + 0.5f));
279 if (!chrSpecialization)
282 std::size_t levelIndex = 0;
DB2Storage< ItemDamageTwoHandCasterEntry > sItemDamageTwoHandCasterStore("ItemDamageTwoHandCaster.db2", &ItemDamageTwoHandCasterLoadInfo::Instance)
DB2Storage< ItemDamageOneHandEntry > sItemDamageOneHandStore("ItemDamageOneHand.db2", &ItemDamageOneHandLoadInfo::Instance)
DB2Storage< ItemArmorTotalEntry > sItemArmorTotalStore("ItemArmorTotal.db2", &ItemArmorTotalLoadInfo::Instance)
DB2Storage< ChrSpecializationEntry > sChrSpecializationStore("ChrSpecialization.db2", &ChrSpecializationLoadInfo::Instance)
DB2Storage< ItemArmorShieldEntry > sItemArmorShieldStore("ItemArmorShield.db2", &ItemArmorShieldLoadInfo::Instance)
DB2Storage< ItemArmorQualityEntry > sItemArmorQualityStore("ItemArmorQuality.db2", &ItemArmorQualityLoadInfo::Instance)
DB2Storage< ItemDamageAmmoEntry > sItemDamageAmmoStore("ItemDamageAmmo.db2", &ItemDamageAmmoLoadInfo::Instance)
DB2Storage< ArmorLocationEntry > sArmorLocationStore("ArmorLocation.db2", &ArmorLocationLoadInfo::Instance)
DB2Storage< ItemDamageTwoHandEntry > sItemDamageTwoHandStore("ItemDamageTwoHand.db2", &ItemDamageTwoHandLoadInfo::Instance)
DB2Storage< ItemDamageOneHandCasterEntry > sItemDamageOneHandCasterStore("ItemDamageOneHandCaster.db2", &ItemDamageOneHandCasterLoadInfo::Instance)
int32 const SocketColorToGemTypeMask[26]
@ ITEM_FLAG2_CASTER_WEAPON
@ ITEM_SUBCLASS_WEAPON_CROSSBOW
@ ITEM_SUBCLASS_WEAPON_GUN
@ ITEM_SUBCLASS_WEAPON_BOW
@ ITEM_SUBCLASS_WEAPON_WAND
@ ITEM_FLAG_IS_BOUND_TO_ACCOUNT
@ ITEM_SUBCLASS_ARMOR_MAIL
@ ITEM_SUBCLASS_ARMOR_CLOTH
@ ITEM_SUBCLASS_ARMOR_LEATHER
@ ITEM_SUBCLASS_ARMOR_SHIELD
@ ITEM_SUBCLASS_ARMOR_PLATE
#define MAX_ITEM_SUBCLASS_ARMOR
@ SOCKET_COLOR_RELIC_WIND
@ SOCKET_COLOR_RELIC_FIRE
@ SOCKET_COLOR_RELIC_LIFE
@ SOCKET_COLOR_RELIC_ARCANE
@ SOCKET_COLOR_RELIC_SHADOW
@ SOCKET_COLOR_RELIC_FROST
@ SOCKET_COLOR_PUNCHCARD_YELLOW
@ SOCKET_COLOR_DOMINATION
@ SOCKET_COLOR_RELIC_IRON
@ SOCKET_COLOR_PRIMORDIAL
@ SOCKET_COLOR_RELIC_WATER
@ SOCKET_COLOR_PUNCHCARD_BLUE
@ SOCKET_COLOR_RELIC_HOLY
@ SOCKET_COLOR_PUNCHCARD_RED
@ SOCKET_COLOR_RELIC_BLOOD
#define MAX_ITEM_SUBCLASS_WEAPON
#define MAX_ITEM_SUBCLASS_PROFESSION
#define MAX_SPECIALIZATIONS
@ SKILL_TWO_HANDED_SWORDS
constexpr std::underlying_type< E >::type AsUnderlyingType(E enumValue)
ChrSpecialization GetPrimarySpecialization() const
uint32 GetDefaultSpecId() const
uint32 GetLootSpecId() const
std::array< float, 7 > Qualitymod
std::array< float, 7 > Quality
uint32 GetQuality() const
bool CanChangeEquipStateInCombat() const
uint32 GetMaxStackSize() const
InventoryType GetInventoryType() const
float GetDmgVariance() const
uint32 GetArmor(uint32 itemLevel) const
bool HasSignature() const
std::bitset< MAX_CLASSES *MAX_SPECIALIZATIONS > Specializations[3]
static std::size_t CalculateItemSpecBit(ChrSpecializationEntry const *spec)
ItemSparseEntry const * ExtendedData
bool HasFlag(ItemFlags flag) const
void GetDamage(uint32 itemLevel, float &minDamage, float &maxDamage) const
uint32 GetSubClass() const
bool IsUsableByLootSpecialization(Player const *player, bool alwaysAllowBoundToAccount) const
char const * GetName(LocaleConstant locale) const
char const * GetDefaultLocaleName() const
float GetDPS(uint32 itemLevel) const