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
593#define MAX_ITEM_PROTO_FLAGS 2
594#define MAX_ITEM_PROTO_DAMAGES 2
595#define MAX_ITEM_PROTO_SOCKETS 3
596#define MAX_ITEM_PROTO_SPELLS 5
597#define MAX_ITEM_PROTO_STATS 10
610 std::array<uint32, MAX_ITEM_PROTO_FLAGS>
Flags;
630 std::array<_ItemStat, MAX_ITEM_PROTO_STATS>
ItemStat;
633 std::array<_Damage, MAX_ITEM_PROTO_DAMAGES>
Damage;
644 std::array<ItemEffect, MAX_ITEM_PROTO_SPELLS>
Effects;
663 std::array<_Socket, MAX_ITEM_PROTO_SOCKETS>
Socket;
739 bool CanChangeEquipStateInCombat()
const;
745 return (Stackable == 2147483647 || Stackable <= 0) ?
uint32(0x7FFFFFFF - 1) :
uint32(Stackable);
748 float GetDPS()
const;
750 int32 getFeralBonus(
int32 extraDPS = 0)
const;
753 float GetItemLevelIncludingQuality()
const;
761 bool HasSignature()
const;
767 std::string
const& GetDefaultLocaleName()
const;
769 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_PROTO_SOCKETS
#define MAX_ITEM_SUBCLASS_JUNK
#define MAX_ITEM_SUBCLASS_GEM
#define MAX_ITEM_PROTO_DAMAGES
#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
#define MAX_ITEM_PROTO_STATS
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
uint32 GetArcaneRes() const
std::array< uint32, MAX_ITEM_PROTO_FLAGS > Flags
uint32 GetRequiredSkillRank() const
std::array< ItemEffect, MAX_ITEM_PROTO_SPELLS > Effects
uint32 GetShadowRes() const
uint32 GetBaseItemLevel() const
uint32 GetNatureRes() const
void GetDamage(uint32 index, float &minDamage, float &maxDamage) const
uint32 GetQuality() const
HolidayIds GetHolidayID() const
int32 GetStatModifierBonusStat(uint32 index) const
uint32 GetDuration() const
uint32 GetBuyCount() const
int32 GetAllowableClass() const
uint32 GetContainerSlots() const
uint32 GetFrostRes() const
int32 GetTotalAPBonus() const
uint32 GetPageText() const
uint32 GetGemProperties() const
uint32 GetMaxStackSize() const
float ArmorDamageModifier
bool IsCurrencyToken() const
SocketColor GetSocketColor(uint32 index) const
int32 GetMaxCount() const
std::array< _Socket, MAX_ITEM_PROTO_SOCKETS > Socket
uint32 GetBuyPrice() const
float GetArmorDamageModifier() const
ItemBondingType GetBonding() const
uint32 GetItemSet() const
int32 GetStatValue(uint32 index) const
uint32 GetFireRes() const
uint32 GetStartQuest() const
uint32 RequiredDisenchantSkill
bool IsArmorVellum() const
float GetRangedModRange() const
uint32 GetRequiredReputationFaction() const
uint32 GetDisplayId() const
uint32 GetAllowableRace() const
int32 GetRequiredLevel() const
bool IsConjuredConsumable() const
uint32 GetRequiredReputationRank() const
uint32 RequiredReputationRank
uint32 GetItemLimitCategory() const
uint32 GetRequiredDisenchantSkill() const
uint32 RequiredReputationFaction
bool HasFlag(ItemFlags flag) const
uint32 GetHolyRes() const
uint32 GetRandomSuffix() const
uint32 GetSubClass() const
uint32 GetSellPrice() const
bool HasFlag(ItemFlagsCustom customFlag) const
uint32 ScalingStatDistribution
::InventoryType GetInventoryType() const
bool HasFlag(ItemFlags2 flag) const
uint32 GetStatsCount() const
uint32 GetRequiredSpell() const
uint32 GetScalingStatDistribution() const
uint32 GetRandomProperty() const
uint32 GetScalingStatValue() const
uint32 GetSheatheType() const
uint32 GetTotemCategory() const
std::array< WorldPacket, TOTAL_LOCALES > QueryData
uint32 GetSocketBonus() const
uint32 GetRequiredSkill() const
std::array< _ItemStat, MAX_ITEM_PROTO_STATS > ItemStat
int32 SoundOverrideSubclass
uint32 GetDamageType(uint32 index) const
bool IsWeaponVellum() const
std::array< _Damage, MAX_ITEM_PROTO_DAMAGES > Damage
uint32 GetBagFamily() const