TrinityCore
Loading...
Searching...
No Matches
ItemTemplate.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef _ITEMPROTOTYPE_H
19#define _ITEMPROTOTYPE_H
20
21#include "Common.h"
22#include "SharedDefines.h"
23#include "WorldPacket.h"
24#include <vector>
25
26class ObjectMgr;
27
29{
65 //ITEM_MOD_FERAL_ATTACK_POWER = 40, not in 3.3
66 ITEM_MOD_SPELL_HEALING_DONE = 41, // deprecated
67 ITEM_MOD_SPELL_DAMAGE_DONE = 42, // deprecated
74};
75
76#define MAX_ITEM_MOD 49
77
79{
80 ITEM_SPELLTRIGGER_ON_USE = 0, // use after equip cooldown
84 /*
85 * ItemSpelltriggerType 5 might have changed on 2.4.3/3.0.3: Such auras
86 * will be applied on item pickup and removed on item loss - maybe on the
87 * other hand the item is destroyed if the aura is removed ("removed on
88 * death" of spell 57348 makes me think so)
89 */
90 ITEM_SPELLTRIGGER_ON_NO_DELAY_USE = 5, // no equip cooldown
91 ITEM_SPELLTRIGGER_LEARN_SPELL_ID = 6 // used in item_template.spell_2 with spell_id with SPELL_GENERIC_LEARN in spell_1
92};
93
94#define MAX_ITEM_SPELLTRIGGER 7
95
105
106#define MAX_BIND_TYPE 6
107
108/* /// @todo: Requiring actual cases in which using (an) item isn't allowed while shapeshifted. Else, this flag would need an implementation.
109 ITEM_FLAG_USE_WHEN_SHAPESHIFTED = 0x00800000, // Item can be used in shapeshift forms */
110
111// ITEM_FIELD_FLAGS
113{
114 ITEM_FIELD_FLAG_SOULBOUND = 0x00000001, // Item is soulbound and cannot be traded <<--
115 ITEM_FIELD_FLAG_UNK1 = 0x00000002, // ?
116 ITEM_FIELD_FLAG_UNLOCKED = 0x00000004, // Item had lock but can be opened now
117 ITEM_FIELD_FLAG_WRAPPED = 0x00000008, // Item is wrapped and contains another item
118 ITEM_FIELD_FLAG_UNK2 = 0x00000010, // ?
119 ITEM_FIELD_FLAG_UNK3 = 0x00000020, // ?
120 ITEM_FIELD_FLAG_UNK4 = 0x00000040, // ?
121 ITEM_FIELD_FLAG_UNK5 = 0x00000080, // ?
122 ITEM_FIELD_FLAG_BOP_TRADEABLE = 0x00000100, // Allows trading soulbound items
123 ITEM_FIELD_FLAG_READABLE = 0x00000200, // Opens text page when right clicked
124 ITEM_FIELD_FLAG_UNK6 = 0x00000400, // ?
125 ITEM_FIELD_FLAG_UNK7 = 0x00000800, // ?
126 ITEM_FIELD_FLAG_REFUNDABLE = 0x00001000, // Item can be returned to vendor for its original cost (extended cost)
127 ITEM_FIELD_FLAG_UNK8 = 0x00002000, // ?
128 ITEM_FIELD_FLAG_UNK9 = 0x00004000, // ?
129 ITEM_FIELD_FLAG_UNK10 = 0x00008000, // ?
130 ITEM_FIELD_FLAG_UNK11 = 0x00010000, // ?
131 ITEM_FIELD_FLAG_UNK12 = 0x00020000, // ?
132 ITEM_FIELD_FLAG_UNK13 = 0x00040000, // ?
133 ITEM_FIELD_FLAG_UNK14 = 0x00080000, // ?
134 ITEM_FIELD_FLAG_UNK15 = 0x00100000, // ?
135 ITEM_FIELD_FLAG_UNK16 = 0x00200000, // ?
136 ITEM_FIELD_FLAG_UNK17 = 0x00400000, // ?
137 ITEM_FIELD_FLAG_UNK18 = 0x00800000, // ?
138 ITEM_FIELD_FLAG_UNK19 = 0x01000000, // ?
139 ITEM_FIELD_FLAG_UNK20 = 0x02000000, // ?
140 ITEM_FIELD_FLAG_UNK21 = 0x04000000, // ?
141 ITEM_FIELD_FLAG_UNK22 = 0x08000000, // ?
142 ITEM_FIELD_FLAG_UNK23 = 0x10000000, // ?
143 ITEM_FIELD_FLAG_UNK24 = 0x20000000, // ?
144 ITEM_FIELD_FLAG_UNK25 = 0x40000000, // ?
145 ITEM_FIELD_FLAG_UNK26 = 0x80000000, // ?
146
149
151{
153 ITEM_FLAG_CONJURED = 0x00000002, // Conjured item
154 ITEM_FLAG_HAS_LOOT = 0x00000004, // Item can be right clicked to open for loot
155 ITEM_FLAG_HEROIC_TOOLTIP = 0x00000008, // Makes green "Heroic" text appear on item
156 ITEM_FLAG_DEPRECATED = 0x00000010, // Cannot equip or use
157 ITEM_FLAG_NO_USER_DESTROY = 0x00000020, // Item can not be destroyed, except by using spell (item can be reagent for spell)
158 ITEM_FLAG_PLAYERCAST = 0x00000040, // Item's spells are castable by players
159 ITEM_FLAG_NO_EQUIP_COOLDOWN = 0x00000080, // No default 30 seconds cooldown when equipped
161 ITEM_FLAG_IS_WRAPPER = 0x00000200, // Item can wrap other items
163 ITEM_FLAG_MULTI_DROP = 0x00000800, // Looting this item does not remove it from available loot
164 ITEM_FLAG_ITEM_PURCHASE_RECORD = 0x00001000, // Item can be returned to vendor for its original cost (extended cost)
165 ITEM_FLAG_PETITION = 0x00002000, // Item is guild or arena charter
166 ITEM_FLAG_HAS_TEXT = 0x00004000, // Only readable items have this (but not all)
170 ITEM_FLAG_IS_PROSPECTABLE = 0x00040000, // Item can be prospected
171 ITEM_FLAG_UNIQUE_EQUIPPABLE = 0x00080000, // You can only equip one of these
173 ITEM_FLAG_IGNORE_DEFAULT_ARENA_RESTRICTIONS = 0x00200000, // Item can be used during arena match
174 ITEM_FLAG_NO_DURABILITY_LOSS = 0x00400000, // Some Thrown weapons have it (and only Thrown) but not all
175 ITEM_FLAG_USE_WHEN_SHAPESHIFTED = 0x00800000, // Item can be used in shapeshift forms
177 ITEM_FLAG_HIDE_UNUSABLE_RECIPE = 0x02000000, // Profession recipes: can only be looted if you meet requirements and don't already know it
178 ITEM_FLAG_NOT_USEABLE_IN_ARENA = 0x04000000, // Item cannot be used in arena
179 ITEM_FLAG_IS_BOUND_TO_ACCOUNT = 0x08000000, // Item binds to account and can be sent only to your own characters
180 ITEM_FLAG_NO_REAGENT_COST = 0x10000000, // Spell is cast ignoring reagents
181 ITEM_FLAG_IS_MILLABLE = 0x20000000, // Item can be milled
185
187{
190 ITEM_FLAG2_DONT_IGNORE_BUY_PRICE = 0x00000004, // when item uses extended cost, gold is also required
221
223{
224 ITEM_FLAGS_CU_DURATION_REAL_TIME = 0x0001, // Item duration will tick even if player is offline
225 ITEM_FLAGS_CU_IGNORE_QUEST_STATUS = 0x0002, // No quest status will be checked when this item drops
226 ITEM_FLAGS_CU_FOLLOW_LOOT_RULES = 0x0004 // Item will always follow group/master/need before greed looting rules
228
248
256
257#define SOCKET_COLOR_ALL (SOCKET_COLOR_META | SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE)
258
291
292#define MAX_INVTYPE 29
293
314
315#define MAX_ITEM_CLASS 17
316
329
330#define MAX_ITEM_SUBCLASS_CONSUMABLE 9
331
344
345#define MAX_ITEM_SUBCLASS_CONTAINER 9
346
371
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))
375
376#define MAX_ITEM_SUBCLASS_WEAPON 21
377
390
391#define MAX_ITEM_SUBCLASS_GEM 9
392
407
408#define MAX_ITEM_SUBCLASS_ARMOR 11
409
414
415#define MAX_ITEM_SUBCLASS_REAGENT 1
416
425
426#define MAX_ITEM_SUBCLASS_PROJECTILE 5
427
447
448#define MAX_ITEM_SUBCLASS_TRADE_GOODS 16
449
454
455#define MAX_ITEM_SUBCLASS_GENERIC 1
456
472
473#define MAX_ITEM_SUBCLASS_RECIPE 12
474
479
480#define MAX_ITEM_SUBCLASS_MONEY 1
481
489
490#define MAX_ITEM_SUBCLASS_QUIVER 4
491
496
497#define MAX_ITEM_SUBCLASS_QUEST 1
498
504
505#define MAX_ITEM_SUBCLASS_KEY 2
506
511
512#define MAX_ITEM_SUBCLASS_PERMANENT 1
513
523
524#define MAX_ITEM_SUBCLASS_JUNK 6
525
539
540#define MAX_ITEM_SUBCLASS_GLYPH 12
541
562
563#pragma pack(push, 1)
564
566{
567 float DamageMin = 0.0f;
568 float DamageMax = 0.0f;
569 uint32 DamageType = 0; // id from Resistances.dbc
570};
571
577
579{
580 int32 SpellID = 0; // id from Spell.dbc
583 float SpellPPMRate = 0.0f;
585 uint32 SpellCategoryID = 0; // id from SpellCategory.dbc
587};
588
590{
593};
594
595#pragma pack(pop)
596
597#define MAX_ITEM_PROTO_DAMAGES 2 // changed in 3.1.0
598#define MAX_ITEM_PROTO_SOCKETS 3
599#define MAX_ITEM_PROTO_SPELLS 5
600#define MAX_ITEM_PROTO_STATS 10
601
603{
604 friend class ObjectMgr;
605
607 uint32 Class; // id from ItemClass.dbc
608 uint32 SubClass; // id from ItemSubClass.dbc
609 int32 SoundOverrideSubclass; // < 0: id from ItemSubClass.dbc, used to override weapon sound from actual SubClass
610 std::string Name1;
611 uint32 DisplayInfoID; // id from ItemDisplayInfo.dbc
623 uint32 RequiredSkill; // id from SkillLine.dbc
625 uint32 RequiredSpell; // id from Spell.dbc
628 uint32 RequiredReputationFaction; // id from Faction.dbc
630 int32 MaxCount; // <= 0: no limit
631 int32 Stackable; // 0: not allowed, -1: put in player coin info tab and don't limit stacking (so 1 slot)
634 std::array<_ItemStat, MAX_ITEM_PROTO_STATS> ItemStat;
635 uint32 ScalingStatDistribution; // id from ScalingStatDistribution.dbc
636 uint32 ScalingStatValue; // mask for selecting column in ScalingStatValues.dbc
637 std::array<_Damage, MAX_ITEM_PROTO_DAMAGES> Damage;
648 std::array<ItemEffect, MAX_ITEM_PROTO_SPELLS> Effects;
650 std::string Description;
654 uint32 StartQuest; // id from QuestCache.wdb
656 int32 Material; // id from Material.dbc
658 int32 RandomProperty; // id from ItemRandomProperties.dbc
659 int32 RandomSuffix; // id from ItemRandomSuffix.dbc
661 uint32 ItemSet; // id from ItemSet.dbc
663 uint32 Area; // id from AreaTable.dbc
664 uint32 Map; // id from Map.dbc
665 uint32 BagFamily; // bit mask (1 << id from ItemBagFamily.dbc)
666 uint32 TotemCategory; // id from TotemCategory.dbc
667 std::array<_Socket, MAX_ITEM_PROTO_SOCKETS> Socket;
668 uint32 socketBonus; // id from SpellItemEnchantment.dbc
669 uint32 GemProperties; // id from GemProperties.dbc
673 uint32 ItemLimitCategory; // id from ItemLimitCategory.dbc
674 uint32 HolidayId; // id from Holidays.dbc
681 std::array<WorldPacket, TOTAL_LOCALES> QueryData;
682
683 // helpers
684 bool CanChangeEquipStateInCombat() const;
685
686 bool IsCurrencyToken() const { return (BagFamily & BAG_FAMILY_MASK_CURRENCY_TOKENS) != 0; }
687
689 {
690 return (Stackable == 2147483647 || Stackable <= 0) ? uint32(0x7FFFFFFF-1) : uint32(Stackable);
691 }
692
693 float getDPS() const;
694
695 int32 getFeralBonus(int32 extraDPS = 0) const;
696 int32 GetTotalAPBonus() const { return _totalAP; }
697
698 float GetItemLevelIncludingQuality() const;
699
700 uint32 GetSkill() const;
701
702 bool IsPotion() const { return Class == ITEM_CLASS_CONSUMABLE && SubClass == ITEM_SUBCLASS_POTION; }
703 bool IsWeaponVellum() const { return Class == ITEM_CLASS_TRADE_GOODS && SubClass == ITEM_SUBCLASS_WEAPON_ENCHANTMENT; }
704 bool IsArmorVellum() const { return Class == ITEM_CLASS_TRADE_GOODS && SubClass == ITEM_SUBCLASS_ARMOR_ENCHANTMENT; }
705 bool IsConjuredConsumable() const { return Class == ITEM_CLASS_CONSUMABLE && HasFlag(ITEM_FLAG_CONJURED); }
706 bool HasSignature() const;
707
708 inline bool HasFlag(ItemFlags flag) const { return (Flags & flag) != 0; }
709 inline bool HasFlag(ItemFlags2 flag) const { return (Flags2 & flag) != 0; }
710 inline bool HasFlag(ItemFlagsCustom customFlag) const { return (FlagsCu & customFlag) != 0; }
711
712 void InitializeQueryData();
713 WorldPacket BuildQueryData(LocaleConstant loc) const;
714
715private:
716 // Cached info
718
719 // Loading Helpers
720 void _LoadTotalAP();
721};
722
724{
725 std::vector<std::string> Name;
726 std::vector<std::string> Description;
727};
728
730{
731 std::string name;
733};
734
736{
737 std::vector<std::string> Name;
738};
739
740#endif
LocaleConstant
Definition Common.h:48
#define TC_GAME_API
Definition Define.h:114
uint8_t uint8
Definition Define.h:135
int32_t int32
Definition Define.h:129
uint32_t uint32
Definition Define.h:133
#define MAX_ITEM_SUBCLASS_MONEY
ItemClass
@ ITEM_CLASS_QUIVER
@ ITEM_CLASS_GENERIC
@ ITEM_CLASS_RECIPE
@ ITEM_CLASS_KEY
@ ITEM_CLASS_CONTAINER
@ ITEM_CLASS_TRADE_GOODS
@ ITEM_CLASS_REAGENT
@ ITEM_CLASS_MONEY
@ ITEM_CLASS_PERMANENT
@ ITEM_CLASS_GLYPH
@ ITEM_CLASS_PROJECTILE
@ ITEM_CLASS_GEM
@ ITEM_CLASS_ARMOR
@ ITEM_CLASS_QUEST
@ ITEM_CLASS_MISCELLANEOUS
@ ITEM_CLASS_WEAPON
@ ITEM_CLASS_CONSUMABLE
ItemFlags2
@ ITEM_FLAG2_USED_IN_A_TRADESKILL
@ ITEM_FLAG2_CAN_DROP_IN_CHALLENGE_MODE
@ ITEM_FLAG2_NEVER_STACK_IN_LOOT_UI
@ ITEM_FLAG2_ROLE_HEALER
@ ITEM_FLAG2_ROLE_DAMAGE
@ 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_FLAG2_ROLE_TANK
ItemSubclassWeapon
@ 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
ItemSubclassGlyph
@ 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
ItemFieldFlags
@ ITEM_FIELD_FLAG_UNK15
@ ITEM_FIELD_FLAG_UNK26
@ ITEM_FIELD_FLAG_UNK24
@ ITEM_FIELD_FLAG_REFUNDABLE
@ ITEM_FIELD_FLAG_UNLOCKED
@ ITEM_FIELD_FLAG_UNK9
@ ITEM_FLAG_MAIL_TEXT_MASK
@ ITEM_FIELD_FLAG_READABLE
@ ITEM_FIELD_FLAG_UNK21
@ ITEM_FIELD_FLAG_UNK23
@ ITEM_FIELD_FLAG_SOULBOUND
@ ITEM_FIELD_FLAG_UNK4
@ ITEM_FIELD_FLAG_UNK12
@ ITEM_FIELD_FLAG_UNK8
@ ITEM_FIELD_FLAG_WRAPPED
@ ITEM_FIELD_FLAG_UNK18
@ ITEM_FIELD_FLAG_UNK17
@ ITEM_FIELD_FLAG_UNK3
@ ITEM_FIELD_FLAG_UNK14
@ ITEM_FIELD_FLAG_UNK25
@ ITEM_FIELD_FLAG_UNK20
@ ITEM_FIELD_FLAG_UNK7
@ ITEM_FIELD_FLAG_UNK22
@ ITEM_FIELD_FLAG_UNK2
@ ITEM_FIELD_FLAG_UNK13
@ ITEM_FIELD_FLAG_UNK6
@ ITEM_FIELD_FLAG_BOP_TRADEABLE
@ ITEM_FIELD_FLAG_UNK5
@ ITEM_FIELD_FLAG_UNK19
@ ITEM_FIELD_FLAG_UNK16
@ ITEM_FIELD_FLAG_UNK1
@ ITEM_FIELD_FLAG_UNK10
@ ITEM_FIELD_FLAG_UNK11
#define MAX_ITEM_SUBCLASS_GENERIC
ItemSpelltriggerType
@ 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
@ BAG_FAMILY_MASK_MINING_SUPP
@ BAG_FAMILY_MASK_HERBS
@ BAG_FAMILY_MASK_ENCHANTING_SUPP
@ BAG_FAMILY_MASK_SOUL_SHARDS
@ BAG_FAMILY_MASK_CURRENCY_TOKENS
@ BAG_FAMILY_MASK_INSCRIPTION_SUPP
@ BAG_FAMILY_MASK_NONE
@ BAG_FAMILY_MASK_GEMS
@ BAG_FAMILY_MASK_VANITY_PETS
@ BAG_FAMILY_MASK_SOULBOUND_EQUIPMENT
@ BAG_FAMILY_MASK_ARROWS
@ BAG_FAMILY_MASK_BULLETS
@ BAG_FAMILY_MASK_QUEST_ITEMS
@ BAG_FAMILY_MASK_KEYS
@ BAG_FAMILY_MASK_ENGINEERING_SUPP
@ BAG_FAMILY_MASK_LEATHERWORKING_SUPP
ItemSubclassContainer
@ 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
ItemSubclassQuiver
@ ITEM_SUBCLASS_QUIVER1
@ ITEM_SUBCLASS_QUIVER0
@ ITEM_SUBCLASS_QUIVER
@ ITEM_SUBCLASS_AMMO_POUCH
ItemFlags
@ ITEM_FLAG_NO_PICKUP
@ ITEM_FLAG_NO_DURABILITY_LOSS
@ ITEM_FLAG_IS_MILLABLE
@ ITEM_FLAG_REAL_DURATION
@ ITEM_FLAG_NO_REAGENT_COST
@ ITEM_FLAG_IS_WRAPPER
@ ITEM_FLAG_IS_PROSPECTABLE
@ ITEM_FLAG_IGNORE_DEFAULT_ARENA_RESTRICTIONS
@ ITEM_FLAG_USE_WHEN_SHAPESHIFTED
@ ITEM_FLAG_HIDE_UNUSABLE_RECIPE
@ ITEM_FLAG_PETITION
@ ITEM_FLAG_NO_USER_DESTROY
@ ITEM_FLAG_HAS_LOOT
@ 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_DEPRECATED
@ ITEM_FLAG_HEROIC_TOOLTIP
@ ITEM_FLAG_USES_RESOURCES
@ ITEM_FLAG_PLAYERCAST
@ ITEM_FLAG_MULTI_DROP
@ ITEM_FLAG_MULTI_LOOT_QUEST
@ ITEM_FLAG_IGNORE_FOR_AURAS
@ ITEM_FLAG_NOT_USEABLE_IN_ARENA
@ ITEM_FLAG_NO_CREATOR
@ ITEM_FLAG_IS_BOUND_TO_ACCOUNT
@ ITEM_FLAG_HAS_QUEST_GLOW
@ ITEM_FLAG_CONJURED
@ ITEM_FLAG_HAS_TEXT
ItemModType
@ ITEM_MOD_CRIT_TAKEN_RANGED_RATING
@ ITEM_MOD_HIT_MELEE_RATING
@ ITEM_MOD_HIT_TAKEN_MELEE_RATING
@ ITEM_MOD_STAMINA
@ ITEM_MOD_HIT_SPELL_RATING
@ ITEM_MOD_SPELL_PENETRATION
@ ITEM_MOD_PARRY_RATING
@ ITEM_MOD_DEFENSE_SKILL_RATING
@ ITEM_MOD_HASTE_RANGED_RATING
@ ITEM_MOD_CRIT_TAKEN_RATING
@ ITEM_MOD_EXPERTISE_RATING
@ ITEM_MOD_MANA
@ ITEM_MOD_RANGED_ATTACK_POWER
@ ITEM_MOD_HEALTH
@ ITEM_MOD_CRIT_TAKEN_SPELL_RATING
@ ITEM_MOD_HIT_TAKEN_SPELL_RATING
@ ITEM_MOD_SPIRIT
@ ITEM_MOD_SPELL_POWER
@ ITEM_MOD_HASTE_SPELL_RATING
@ ITEM_MOD_ATTACK_POWER
@ ITEM_MOD_HASTE_RATING
@ ITEM_MOD_HIT_RANGED_RATING
@ ITEM_MOD_CRIT_SPELL_RATING
@ ITEM_MOD_BLOCK_VALUE
@ ITEM_MOD_CRIT_RANGED_RATING
@ ITEM_MOD_CRIT_MELEE_RATING
@ ITEM_MOD_STRENGTH
@ ITEM_MOD_HEALTH_REGEN
@ ITEM_MOD_BLOCK_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_HIT_RATING
@ ITEM_MOD_INTELLECT
@ ITEM_MOD_RESILIENCE_RATING
@ ITEM_MOD_AGILITY
@ ITEM_MOD_DODGE_RATING
@ ITEM_MOD_CRIT_RATING
@ ITEM_MOD_SPELL_DAMAGE_DONE
@ ITEM_MOD_HIT_TAKEN_RANGED_RATING
#define MAX_ITEM_SUBCLASS_REAGENT
#define MAX_ITEM_CLASS
ItemSubclassArmor
@ 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
ItemSubclassProjectile
@ ITEM_SUBCLASS_ARROW
@ ITEM_SUBCLASS_THROWN
@ ITEM_SUBCLASS_BULLET
@ ITEM_SUBCLASS_BOLT
@ ITEM_SUBCLASS_WAND
ItemSubclassTradeGoods
@ ITEM_SUBCLASS_PARTS
@ ITEM_SUBCLASS_ENCHANTING
@ ITEM_SUBCLASS_TRADE_GOODS
@ ITEM_SUBCLASS_HERB
@ ITEM_SUBCLASS_ARMOR_ENCHANTMENT
@ ITEM_SUBCLASS_EXPLOSIVES
@ ITEM_SUBCLASS_TRADE_GOODS_OTHER
@ ITEM_SUBCLASS_METAL_STONE
@ ITEM_SUBCLASS_JEWELCRAFTING
@ ITEM_SUBCLASS_MATERIAL
@ ITEM_SUBCLASS_LEATHER
@ ITEM_SUBCLASS_CLOTH
@ ITEM_SUBCLASS_DEVICES
@ ITEM_SUBCLASS_MEAT
@ ITEM_SUBCLASS_ELEMENTAL
@ ITEM_SUBCLASS_WEAPON_ENCHANTMENT
#define MAX_ITEM_SUBCLASS_ARMOR
#define MAX_ITEM_SUBCLASS_TRADE_GOODS
ItemSubclassRecipe
@ ITEM_SUBCLASS_BOOK
@ 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
SocketColor
@ SOCKET_COLOR_META
@ SOCKET_COLOR_YELLOW
@ SOCKET_COLOR_RED
@ SOCKET_COLOR_BLUE
ItemSubclassGem
@ ITEM_SUBCLASS_GEM_BLUE
@ ITEM_SUBCLASS_GEM_META
@ ITEM_SUBCLASS_GEM_PRISMATIC
@ ITEM_SUBCLASS_GEM_YELLOW
@ ITEM_SUBCLASS_GEM_ORANGE
@ ITEM_SUBCLASS_GEM_RED
@ ITEM_SUBCLASS_GEM_GREEN
@ ITEM_SUBCLASS_GEM_SIMPLE
@ ITEM_SUBCLASS_GEM_PURPLE
ItemSubclassMoney
@ ITEM_SUBCLASS_MONEY
ItemSubclassKey
@ ITEM_SUBCLASS_KEY
@ ITEM_SUBCLASS_LOCKPICK
ItemBondingType
@ BIND_WHEN_EQUIPED
@ BIND_WHEN_USE
@ NO_BIND
@ BIND_QUEST_ITEM
@ BIND_WHEN_PICKED_UP
@ BIND_QUEST_ITEM1
ItemSubclassReagent
@ ITEM_SUBCLASS_REAGENT
#define MAX_ITEM_SUBCLASS_CONSUMABLE
ItemSubclassPermanent
@ ITEM_SUBCLASS_PERMANENT
#define MAX_ITEM_SUBCLASS_QUIVER
#define MAX_ITEM_SUBCLASS_PROJECTILE
#define MAX_ITEM_SUBCLASS_QUEST
#define MAX_ITEM_SUBCLASS_WEAPON
ItemSubclassJunk
@ ITEM_SUBCLASS_JUNK
@ ITEM_SUBCLASS_JUNK_HOLIDAY
@ ITEM_SUBCLASS_JUNK_MOUNT
@ ITEM_SUBCLASS_JUNK_PET
@ ITEM_SUBCLASS_JUNK_OTHER
@ ITEM_SUBCLASS_JUNK_REAGENT
ItemSubclassConsumable
@ ITEM_SUBCLASS_CONSUMABLE_OTHER
@ ITEM_SUBCLASS_FOOD_DRINK
@ ITEM_SUBCLASS_SCROLL
@ ITEM_SUBCLASS_FLASK
@ ITEM_SUBCLASS_POTION
@ ITEM_SUBCLASS_CONSUMABLE
@ ITEM_SUBCLASS_ELIXIR
@ ITEM_SUBCLASS_BANDAGE
@ ITEM_SUBCLASS_ITEM_ENHANCEMENT
ItemSubclassQuest
@ ITEM_SUBCLASS_QUEST
ItemSubclassGeneric
@ ITEM_SUBCLASS_GENERIC
const uint32 MaxItemSubclassValues[MAX_ITEM_CLASS]
#define MAX_ITEM_SUBCLASS_GLYPH
ItemFlagsCustom
@ ITEM_FLAGS_CU_DURATION_REAL_TIME
@ ITEM_FLAGS_CU_FOLLOW_LOOT_RULES
@ ITEM_FLAGS_CU_IGNORE_QUEST_STATUS
InventoryType
@ INVTYPE_BODY
@ INVTYPE_FINGER
@ INVTYPE_HEAD
@ INVTYPE_CLOAK
@ INVTYPE_ROBE
@ INVTYPE_HOLDABLE
@ INVTYPE_TRINKET
@ INVTYPE_RELIC
@ INVTYPE_RANGED
@ INVTYPE_THROWN
@ INVTYPE_WAIST
@ INVTYPE_RANGEDRIGHT
@ INVTYPE_WRISTS
@ INVTYPE_WEAPON
@ INVTYPE_WEAPONMAINHAND
@ INVTYPE_WEAPONOFFHAND
@ INVTYPE_2HWEAPON
@ INVTYPE_BAG
@ INVTYPE_NECK
@ INVTYPE_SHOULDERS
@ INVTYPE_FEET
@ INVTYPE_NON_EQUIP
@ INVTYPE_AMMO
@ INVTYPE_QUIVER
@ INVTYPE_SHIELD
@ INVTYPE_TABARD
@ INVTYPE_LEGS
@ INVTYPE_CHEST
@ INVTYPE_HANDS
float SpellPPMRate
uint32 SpellCategoryID
int32 CategoryCoolDownMSec
int32 CoolDownMSec
uint32 TriggerType
std::vector< std::string > Description
std::vector< std::string > Name
std::string name
std::vector< std::string > Name
int32 RandomProperty
std::array< ItemEffect, MAX_ITEM_PROTO_SPELLS > Effects
uint32 DisenchantID
bool IsPotion() const
uint32 RequiredCityRank
uint32 RequiredSkill
uint32 RequiredSpell
uint32 ScalingStatValue
std::string Description
uint32 AllowableClass
int32 GetTotalAPBonus() const
uint32 RequiredSkillRank
uint32 RequiredHonorRank
uint32 GetMaxStackSize() const
float RangedModRange
float ArmorDamageModifier
bool IsCurrencyToken() const
std::array< _Socket, MAX_ITEM_PROTO_SOCKETS > Socket
uint32 socketBonus
uint32 RequiredDisenchantSkill
bool IsArmorVellum() const
uint32 TotemCategory
uint32 MinMoneyLoot
uint32 MaxMoneyLoot
uint32 PageMaterial
uint32 RequiredLevel
std::string Name1
uint32 GemProperties
bool IsConjuredConsumable() const
uint32 RequiredReputationRank
uint32 ContainerSlots
uint32 DisplayInfoID
uint32 AllowableRace
uint32 RequiredReputationFaction
bool HasFlag(ItemFlags flag) const
uint32 ItemLimitCategory
bool HasFlag(ItemFlagsCustom customFlag) const
uint32 ScalingStatDistribution
uint32 MaxDurability
uint32 InventoryType
uint32 LanguageID
bool HasFlag(ItemFlags2 flag) const
std::array< WorldPacket, TOTAL_LOCALES > QueryData
std::array< _ItemStat, MAX_ITEM_PROTO_STATS > ItemStat
uint32 StartQuest
int32 SoundOverrideSubclass
bool IsWeaponVellum() const
std::array< _Damage, MAX_ITEM_PROTO_DAMAGES > Damage
uint32 StatsCount
float DamageMin
uint32 DamageType
float DamageMax
int32 ItemStatValue
uint32 ItemStatType
uint32 Content
uint32 Color