18#ifndef _ITEMPROTOTYPE_H
19#define _ITEMPROTOTYPE_H
76#define MAX_ITEM_MOD 49
94#define MAX_ITEM_SPELLTRIGGER 7
106#define MAX_BIND_TYPE 6
257#define SOCKET_COLOR_ALL (SOCKET_COLOR_META | SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE)
292#define MAX_INVTYPE 29
315#define MAX_ITEM_CLASS 17
330#define MAX_ITEM_SUBCLASS_CONSUMABLE 9
345#define MAX_ITEM_SUBCLASS_CONTAINER 9
372#define ITEM_SUBCLASS_MASK_WEAPON_RANGED (\
373 (1 << ITEM_SUBCLASS_WEAPON_BOW) | (1 << ITEM_SUBCLASS_WEAPON_GUN) |\
374 (1 << ITEM_SUBCLASS_WEAPON_CROSSBOW) | (1 << ITEM_SUBCLASS_WEAPON_THROWN))
376#define MAX_ITEM_SUBCLASS_WEAPON 21
391#define MAX_ITEM_SUBCLASS_GEM 9
408#define MAX_ITEM_SUBCLASS_ARMOR 11
415#define MAX_ITEM_SUBCLASS_REAGENT 1
426#define MAX_ITEM_SUBCLASS_PROJECTILE 5
448#define MAX_ITEM_SUBCLASS_TRADE_GOODS 16
455#define MAX_ITEM_SUBCLASS_GENERIC 1
473#define MAX_ITEM_SUBCLASS_RECIPE 12
480#define MAX_ITEM_SUBCLASS_MONEY 1
490#define MAX_ITEM_SUBCLASS_QUIVER 4
497#define MAX_ITEM_SUBCLASS_QUEST 1
505#define MAX_ITEM_SUBCLASS_KEY 2
512#define MAX_ITEM_SUBCLASS_PERMANENT 1
524#define MAX_ITEM_SUBCLASS_JUNK 6
540#define MAX_ITEM_SUBCLASS_GLYPH 12
597#define MAX_ITEM_PROTO_DAMAGES 2
598#define MAX_ITEM_PROTO_SOCKETS 3
599#define MAX_ITEM_PROTO_SPELLS 5
600#define MAX_ITEM_PROTO_STATS 10
634 std::array<_ItemStat, MAX_ITEM_PROTO_STATS>
ItemStat;
637 std::array<_Damage, MAX_ITEM_PROTO_DAMAGES>
Damage;
648 std::array<ItemEffect, MAX_ITEM_PROTO_SPELLS>
Effects;
667 std::array<_Socket, MAX_ITEM_PROTO_SOCKETS>
Socket;
684 bool CanChangeEquipStateInCombat()
const;
690 return (Stackable == 2147483647 || Stackable <= 0) ?
uint32(0x7FFFFFFF-1) :
uint32(Stackable);
693 float getDPS()
const;
695 int32 getFeralBonus(
int32 extraDPS = 0)
const;
698 float GetItemLevelIncludingQuality()
const;
706 bool HasSignature()
const;
712 void InitializeQueryData();
#define MAX_ITEM_SUBCLASS_MONEY
@ ITEM_CLASS_MISCELLANEOUS
@ ITEM_FLAG2_USED_IN_A_TRADESKILL
@ ITEM_FLAG2_CAN_DROP_IN_CHALLENGE_MODE
@ ITEM_FLAG2_NEVER_STACK_IN_LOOT_UI
@ ITEM_FLAG2_INTERNAL_ITEM
@ ITEM_FLAG2_CLASSIFY_AS_PHYSICAL
@ ITEM_FLAG2_NOT_USABLE_IN_RATED_BG
@ ITEM_FLAG2_EVERYONE_CAN_ROLL_NEED
@ ITEM_FLAG2_NO_SOURCE_FOR_ITEM_VISUAL
@ ITEM_FLAG2_IGNORE_QUALITY_FOR_ITEM_VISUAL_SOURCE
@ ITEM_FLAG2_CLASSIFY_AS_CASTER
@ ITEM_FLAG2_NO_DURABILITY
@ ITEM_FLAG2_NO_TRADE_BIND_ON_ACQUIRE
@ ITEM_FLAG2_REEVALUATE_BONDING_ON_TRANSFORM
@ ITEM_FLAG2_CONFIRM_BEFORE_USE
@ ITEM_FLAG2_NO_VENDOR_VALUE
@ ITEM_FLAG2_DONT_IGNORE_BUY_PRICE
@ ITEM_FLAG2_CAN_TRADE_BIND_ON_ACQUIRE
@ ITEM_FLAG2_NO_ALTER_ITEM_VISUAL
@ ITEM_FLAG2_FACTION_HORDE
@ ITEM_FLAG2_CASTER_WEAPON
@ ITEM_FLAG2_DISENCHANT_TO_LOOT_TABLE
@ ITEM_FLAG2_FACTION_ALLIANCE
@ ITEM_FLAG2_OVERRIDE_GOLD_COST
@ ITEM_FLAG2_BNET_ACCOUNT_TRADE_OK
@ ITEM_FLAG2_CAN_ONLY_ROLL_GREED
@ ITEM_FLAG2_DELETE_ON_LOGIN
@ ITEM_FLAG2_SHOW_BEFORE_DISCOVERED
@ ITEM_FLAG2_NO_TRANSFORM_ON_CHARGE_DEPLETION
@ ITEM_FLAG2_IGNORE_DEFAULT_RATED_BG_RESTRICTIONS
@ ITEM_SUBCLASS_WEAPON_MISCELLANEOUS
@ ITEM_SUBCLASS_WEAPON_CROSSBOW
@ ITEM_SUBCLASS_WEAPON_GUN
@ ITEM_SUBCLASS_WEAPON_AXE2
@ ITEM_SUBCLASS_WEAPON_SPEAR
@ ITEM_SUBCLASS_WEAPON_STAFF
@ ITEM_SUBCLASS_WEAPON_MACE
@ ITEM_SUBCLASS_WEAPON_EXOTIC2
@ ITEM_SUBCLASS_WEAPON_obsolete
@ ITEM_SUBCLASS_WEAPON_FISHING_POLE
@ ITEM_SUBCLASS_WEAPON_MACE2
@ ITEM_SUBCLASS_WEAPON_DAGGER
@ ITEM_SUBCLASS_WEAPON_BOW
@ ITEM_SUBCLASS_WEAPON_SWORD
@ ITEM_SUBCLASS_WEAPON_AXE
@ ITEM_SUBCLASS_WEAPON_FIST_WEAPON
@ ITEM_SUBCLASS_WEAPON_WAND
@ ITEM_SUBCLASS_WEAPON_EXOTIC
@ ITEM_SUBCLASS_WEAPON_THROWN
@ ITEM_SUBCLASS_WEAPON_SWORD2
@ ITEM_SUBCLASS_WEAPON_POLEARM
@ ITEM_SUBCLASS_GLYPH_WARLOCK
@ ITEM_SUBCLASS_GLYPH_PRIEST
@ ITEM_SUBCLASS_GLYPH_WARRIOR
@ ITEM_SUBCLASS_GLYPH_ROGUE
@ ITEM_SUBCLASS_GLYPH_HUNTER
@ ITEM_SUBCLASS_GLYPH_SHAMAN
@ ITEM_SUBCLASS_GLYPH_DEATH_KNIGHT
@ ITEM_SUBCLASS_GLYPH_PALADIN
@ ITEM_SUBCLASS_GLYPH_MAGE
@ ITEM_SUBCLASS_GLYPH_DRUID
#define MAX_ITEM_SUBCLASS_RECIPE
#define MAX_ITEM_SUBCLASS_KEY
@ ITEM_FIELD_FLAG_REFUNDABLE
@ ITEM_FIELD_FLAG_UNLOCKED
@ ITEM_FLAG_MAIL_TEXT_MASK
@ ITEM_FIELD_FLAG_READABLE
@ ITEM_FIELD_FLAG_SOULBOUND
@ ITEM_FIELD_FLAG_WRAPPED
@ ITEM_FIELD_FLAG_BOP_TRADEABLE
#define MAX_ITEM_SUBCLASS_GENERIC
@ ITEM_SPELLTRIGGER_LEARN_SPELL_ID
@ ITEM_SPELLTRIGGER_SOULSTONE
@ ITEM_SPELLTRIGGER_ON_USE
@ ITEM_SPELLTRIGGER_CHANCE_ON_HIT
@ ITEM_SPELLTRIGGER_ON_NO_DELAY_USE
@ ITEM_SPELLTRIGGER_ON_EQUIP
@ BAG_FAMILY_MASK_MINING_SUPP
@ BAG_FAMILY_MASK_ENCHANTING_SUPP
@ BAG_FAMILY_MASK_SOUL_SHARDS
@ BAG_FAMILY_MASK_CURRENCY_TOKENS
@ BAG_FAMILY_MASK_INSCRIPTION_SUPP
@ BAG_FAMILY_MASK_VANITY_PETS
@ BAG_FAMILY_MASK_SOULBOUND_EQUIPMENT
@ BAG_FAMILY_MASK_BULLETS
@ BAG_FAMILY_MASK_QUEST_ITEMS
@ BAG_FAMILY_MASK_ENGINEERING_SUPP
@ BAG_FAMILY_MASK_LEATHERWORKING_SUPP
@ ITEM_SUBCLASS_CONTAINER
@ ITEM_SUBCLASS_INSCRIPTION_CONTAINER
@ ITEM_SUBCLASS_LEATHERWORKING_CONTAINER
@ ITEM_SUBCLASS_GEM_CONTAINER
@ ITEM_SUBCLASS_SOUL_CONTAINER
@ ITEM_SUBCLASS_ENCHANTING_CONTAINER
@ ITEM_SUBCLASS_MINING_CONTAINER
@ ITEM_SUBCLASS_HERB_CONTAINER
@ ITEM_SUBCLASS_ENGINEERING_CONTAINER
@ ITEM_SUBCLASS_AMMO_POUCH
@ ITEM_FLAG_NO_DURABILITY_LOSS
@ ITEM_FLAG_REAL_DURATION
@ ITEM_FLAG_NO_REAGENT_COST
@ ITEM_FLAG_IS_PROSPECTABLE
@ ITEM_FLAG_IGNORE_DEFAULT_ARENA_RESTRICTIONS
@ ITEM_FLAG_USE_WHEN_SHAPESHIFTED
@ ITEM_FLAG_HIDE_UNUSABLE_RECIPE
@ ITEM_FLAG_NO_USER_DESTROY
@ ITEM_FLAG_NO_DISENCHANT
@ ITEM_FLAG_NO_EQUIP_COOLDOWN
@ ITEM_FLAG_UNIQUE_EQUIPPABLE
@ ITEM_FLAG_REPORT_TO_GUILD_CHAT
@ ITEM_FLAG_NO_PROGRESSIVE_LOOT
@ ITEM_FLAG_ITEM_PURCHASE_RECORD
@ ITEM_FLAG_HEROIC_TOOLTIP
@ ITEM_FLAG_USES_RESOURCES
@ ITEM_FLAG_MULTI_LOOT_QUEST
@ ITEM_FLAG_IGNORE_FOR_AURAS
@ ITEM_FLAG_NOT_USEABLE_IN_ARENA
@ ITEM_FLAG_IS_BOUND_TO_ACCOUNT
@ ITEM_FLAG_HAS_QUEST_GLOW
@ ITEM_MOD_CRIT_TAKEN_RANGED_RATING
@ ITEM_MOD_HIT_MELEE_RATING
@ ITEM_MOD_HIT_TAKEN_MELEE_RATING
@ ITEM_MOD_HIT_SPELL_RATING
@ ITEM_MOD_SPELL_PENETRATION
@ ITEM_MOD_DEFENSE_SKILL_RATING
@ ITEM_MOD_HASTE_RANGED_RATING
@ ITEM_MOD_CRIT_TAKEN_RATING
@ ITEM_MOD_EXPERTISE_RATING
@ ITEM_MOD_RANGED_ATTACK_POWER
@ ITEM_MOD_CRIT_TAKEN_SPELL_RATING
@ ITEM_MOD_HIT_TAKEN_SPELL_RATING
@ ITEM_MOD_HASTE_SPELL_RATING
@ ITEM_MOD_HIT_RANGED_RATING
@ ITEM_MOD_CRIT_SPELL_RATING
@ ITEM_MOD_CRIT_RANGED_RATING
@ ITEM_MOD_CRIT_MELEE_RATING
@ ITEM_MOD_ARMOR_PENETRATION_RATING
@ ITEM_MOD_SPELL_HEALING_DONE
@ ITEM_MOD_CRIT_TAKEN_MELEE_RATING
@ ITEM_MOD_HIT_TAKEN_RATING
@ ITEM_MOD_HASTE_MELEE_RATING
@ ITEM_MOD_MANA_REGENERATION
@ ITEM_MOD_RESILIENCE_RATING
@ ITEM_MOD_SPELL_DAMAGE_DONE
@ ITEM_MOD_HIT_TAKEN_RANGED_RATING
#define MAX_ITEM_SUBCLASS_REAGENT
@ ITEM_SUBCLASS_ARMOR_MAIL
@ ITEM_SUBCLASS_ARMOR_BUCKLER
@ ITEM_SUBCLASS_ARMOR_LIBRAM
@ ITEM_SUBCLASS_ARMOR_CLOTH
@ ITEM_SUBCLASS_ARMOR_LEATHER
@ ITEM_SUBCLASS_ARMOR_SHIELD
@ ITEM_SUBCLASS_ARMOR_SIGIL
@ ITEM_SUBCLASS_ARMOR_PLATE
@ ITEM_SUBCLASS_ARMOR_TOTEM
@ ITEM_SUBCLASS_ARMOR_IDOL
@ ITEM_SUBCLASS_ARMOR_MISCELLANEOUS
#define MAX_ITEM_SUBCLASS_PERMANENT
@ ITEM_SUBCLASS_ENCHANTING
@ ITEM_SUBCLASS_TRADE_GOODS
@ ITEM_SUBCLASS_ARMOR_ENCHANTMENT
@ ITEM_SUBCLASS_EXPLOSIVES
@ ITEM_SUBCLASS_TRADE_GOODS_OTHER
@ ITEM_SUBCLASS_METAL_STONE
@ ITEM_SUBCLASS_JEWELCRAFTING
@ ITEM_SUBCLASS_ELEMENTAL
@ ITEM_SUBCLASS_WEAPON_ENCHANTMENT
#define MAX_ITEM_SUBCLASS_ARMOR
#define MAX_ITEM_SUBCLASS_TRADE_GOODS
@ ITEM_SUBCLASS_TAILORING_PATTERN
@ ITEM_SUBCLASS_JEWELCRAFTING_RECIPE
@ ITEM_SUBCLASS_COOKING_RECIPE
@ ITEM_SUBCLASS_ALCHEMY_RECIPE
@ ITEM_SUBCLASS_ENGINEERING_SCHEMATIC
@ ITEM_SUBCLASS_ENCHANTING_FORMULA
@ ITEM_SUBCLASS_INSCRIPTION_TECHNIQUE
@ ITEM_SUBCLASS_LEATHERWORKING_PATTERN
@ ITEM_SUBCLASS_FISHING_MANUAL
@ ITEM_SUBCLASS_FIRST_AID_MANUAL
@ ITEM_SUBCLASS_BLACKSMITHING
#define MAX_ITEM_SUBCLASS_JUNK
#define MAX_ITEM_SUBCLASS_GEM
#define MAX_ITEM_SUBCLASS_CONTAINER
@ ITEM_SUBCLASS_GEM_PRISMATIC
@ ITEM_SUBCLASS_GEM_YELLOW
@ ITEM_SUBCLASS_GEM_ORANGE
@ ITEM_SUBCLASS_GEM_GREEN
@ ITEM_SUBCLASS_GEM_SIMPLE
@ ITEM_SUBCLASS_GEM_PURPLE
#define MAX_ITEM_SUBCLASS_CONSUMABLE
@ ITEM_SUBCLASS_PERMANENT
#define MAX_ITEM_SUBCLASS_QUIVER
#define MAX_ITEM_SUBCLASS_PROJECTILE
#define MAX_ITEM_SUBCLASS_QUEST
#define MAX_ITEM_SUBCLASS_WEAPON
@ ITEM_SUBCLASS_JUNK_HOLIDAY
@ ITEM_SUBCLASS_JUNK_MOUNT
@ ITEM_SUBCLASS_JUNK_OTHER
@ ITEM_SUBCLASS_JUNK_REAGENT
@ ITEM_SUBCLASS_CONSUMABLE_OTHER
@ ITEM_SUBCLASS_FOOD_DRINK
@ ITEM_SUBCLASS_CONSUMABLE
@ ITEM_SUBCLASS_ITEM_ENHANCEMENT
const uint32 MaxItemSubclassValues[MAX_ITEM_CLASS]
#define MAX_ITEM_SUBCLASS_GLYPH
@ ITEM_FLAGS_CU_DURATION_REAL_TIME
@ ITEM_FLAGS_CU_FOLLOW_LOOT_RULES
@ ITEM_FLAGS_CU_IGNORE_QUEST_STATUS
int32 CategoryCoolDownMSec
std::vector< std::string > Description
std::vector< std::string > Name
std::vector< std::string > Name
std::array< ItemEffect, MAX_ITEM_PROTO_SPELLS > Effects
int32 GetTotalAPBonus() const
uint32 GetMaxStackSize() const
float ArmorDamageModifier
bool IsCurrencyToken() const
std::array< _Socket, MAX_ITEM_PROTO_SOCKETS > Socket
uint32 RequiredDisenchantSkill
bool IsArmorVellum() const
bool IsConjuredConsumable() const
uint32 RequiredReputationRank
uint32 RequiredReputationFaction
bool HasFlag(ItemFlags flag) const
bool HasFlag(ItemFlagsCustom customFlag) const
uint32 ScalingStatDistribution
bool HasFlag(ItemFlags2 flag) const
std::array< WorldPacket, TOTAL_LOCALES > QueryData
std::array< _ItemStat, MAX_ITEM_PROTO_STATS > ItemStat
int32 SoundOverrideSubclass
bool IsWeaponVellum() const
std::array< _Damage, MAX_ITEM_PROTO_DAMAGES > Damage