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 "Errors.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
564{
565 float DamageMin = 0.0f;
566 float DamageMax = 0.0f;
567 uint32 DamageType = 0; // id from Resistances.dbc
568};
569
575
577{
578 int32 SpellID = 0; // id from Spell.dbc
581 float SpellPPMRate = 0.0f;
583 uint32 SpellCategoryID = 0; // id from SpellCategory.dbc
585};
586
588{
591};
592
593#define MAX_ITEM_PROTO_FLAGS 2
594#define MAX_ITEM_PROTO_DAMAGES 2 // changed in 3.1.0
595#define MAX_ITEM_PROTO_SOCKETS 3
596#define MAX_ITEM_PROTO_SPELLS 5
597#define MAX_ITEM_PROTO_STATS 10
598
600{
601 friend class ObjectMgr;
602
604 uint32 Class; // id from ItemClass.dbc
605 uint32 SubClass; // id from ItemSubClass.dbc
606 int32 SoundOverrideSubclass; // < 0: id from ItemSubClass.dbc, used to override weapon sound from actual SubClass
607 std::string Name1;
608 uint32 DisplayInfoID; // id from ItemDisplayInfo.dbc
610 std::array<uint32, MAX_ITEM_PROTO_FLAGS> Flags;
619 uint32 RequiredSkill; // id from SkillLine.dbc
621 uint32 RequiredSpell; // id from Spell.dbc
624 uint32 RequiredReputationFaction; // id from Faction.dbc
626 int32 MaxCount; // <= 0: no limit
627 int32 Stackable; // 0: not allowed, -1: put in player coin info tab and don't limit stacking (so 1 slot)
630 std::array<_ItemStat, MAX_ITEM_PROTO_STATS> ItemStat;
631 uint32 ScalingStatDistribution; // id from ScalingStatDistribution.dbc
632 uint32 ScalingStatValue; // mask for selecting column in ScalingStatValues.dbc
633 std::array<_Damage, MAX_ITEM_PROTO_DAMAGES> Damage;
644 std::array<ItemEffect, MAX_ITEM_PROTO_SPELLS> Effects;
646 std::string Description;
650 uint32 StartQuest; // id from QuestCache.wdb
652 int32 Material; // id from Material.dbc
654 int32 RandomProperty; // id from ItemRandomProperties.dbc
655 int32 RandomSuffix; // id from ItemRandomSuffix.dbc
657 uint32 ItemSet; // id from ItemSet.dbc
659 uint32 Area; // id from AreaTable.dbc
660 uint32 Map; // id from Map.dbc
661 uint32 BagFamily; // bit mask (1 << id from ItemBagFamily.dbc)
662 uint32 TotemCategory; // id from TotemCategory.dbc
663 std::array<_Socket, MAX_ITEM_PROTO_SOCKETS> Socket;
664 uint32 socketBonus; // id from SpellItemEnchantment.dbc
665 uint32 GemProperties; // id from GemProperties.dbc
669 uint32 ItemLimitCategory; // id from ItemLimitCategory.dbc
670 uint32 HolidayId; // id from Holidays.dbc
677 std::array<WorldPacket, TOTAL_LOCALES> QueryData;
678
679 uint32 GetId() const { return ItemId; }
680 uint32 GetClass() const { return Class; }
681 uint32 GetSubClass() const { return SubClass; }
682 uint32 GetSheatheType() const { return Sheath; }
683 uint32 GetDisplayId() const { return DisplayInfoID; }
684 uint32 GetQuality() const { return Quality; }
685 uint32 GetBuyCount() const { return BuyCount; }
686 uint32 GetBuyPrice() const { return BuyPrice; }
687 uint32 GetSellPrice() const { return SellPrice; }
688 ::InventoryType GetInventoryType() const { return ::InventoryType(InventoryType); }
689 int32 GetAllowableClass() const { return AllowableClass; }
690 uint32 GetAllowableRace() const { return AllowableRace; }
691 uint32 GetBaseItemLevel() const { return ItemLevel; }
692 int32 GetRequiredLevel() const { return RequiredLevel; }
693 uint32 GetRequiredSkill() const { return RequiredSkill; }
694 uint32 GetRequiredSkillRank() const { return RequiredSkillRank; }
695 uint32 GetRequiredSpell() const { return RequiredSpell; }
696 uint32 GetRequiredReputationFaction() const { return RequiredReputationFaction; }
697 uint32 GetRequiredReputationRank() const { return RequiredReputationRank; }
698 int32 GetMaxCount() const { return MaxCount; }
699 uint32 GetContainerSlots() const { return ContainerSlots; }
700 uint32 GetStatsCount() const { return StatsCount; }
701 int32 GetStatModifierBonusStat(uint32 index) const { ASSERT(index < MAX_ITEM_PROTO_STATS); return ItemStat[index].ItemStatType; }
702 int32 GetStatValue(uint32 index) const { ASSERT(index < MAX_ITEM_PROTO_STATS); return ItemStat[index].ItemStatValue; }
703 uint32 GetScalingStatDistribution() const { return ScalingStatDistribution; }
704 uint32 GetScalingStatValue() const { return ScalingStatValue; }
705 void GetDamage(uint32 index, float& minDamage, float& maxDamage) const { ASSERT(index < MAX_ITEM_PROTO_DAMAGES); minDamage = Damage[index].DamageMin; maxDamage = Damage[index].DamageMax; }
706 uint32 GetDamageType(uint32 index) const { ASSERT(index < MAX_ITEM_PROTO_DAMAGES); return Damage[index].DamageType; }
707 uint32 GetArmor() const { return Armor; }
708 uint32 GetHolyRes() const { return HolyRes; }
709 uint32 GetFireRes() const { return FireRes; }
710 uint32 GetNatureRes() const { return NatureRes; }
711 uint32 GetFrostRes() const { return FrostRes; }
712 uint32 GetShadowRes() const { return ShadowRes; }
713 uint32 GetArcaneRes() const { return ArcaneRes; }
714 uint32 GetDelay() const { return Delay; }
715 float GetRangedModRange() const { return RangedModRange; }
716 ItemBondingType GetBonding() const { return ItemBondingType(Bonding); }
717 std::string const& GetName(LocaleConstant locale) const;
718 uint32 GetPageText() const { return PageText; }
719 uint32 GetStartQuest() const { return StartQuest; }
720 uint32 GetLockID() const { return LockID; }
721 uint32 GetRandomProperty() const { return RandomProperty; }
722 uint32 GetRandomSuffix() const { return RandomSuffix; }
723 uint32 GetBlock() const { return Block; }
724 uint32 GetItemSet() const { return ItemSet; }
725 uint32 GetArea() const { return Area; }
726 uint32 GetMap() const { return Map; }
727 uint32 GetBagFamily() const { return BagFamily; }
729 SocketColor GetSocketColor(uint32 index) const { ASSERT(index < MAX_ITEM_PROTO_SOCKETS); return SocketColor(Socket[index].Color); }
730 uint32 GetSocketBonus() const { return socketBonus; }
731 uint32 GetGemProperties() const { return GemProperties; }
732 uint32 GetRequiredDisenchantSkill() const { return RequiredDisenchantSkill; }
733 float GetArmorDamageModifier() const { return ArmorDamageModifier; }
734 uint32 GetDuration() const { return Duration; }
735 uint32 GetItemLimitCategory() const { return ItemLimitCategory; }
736 HolidayIds GetHolidayID() const { return HolidayIds(HolidayId); }
737
738 // helpers
739 bool CanChangeEquipStateInCombat() const;
740
741 bool IsCurrencyToken() const { return (GetBagFamily() & BAG_FAMILY_MASK_CURRENCY_TOKENS) != 0; }
742
744 {
745 return (Stackable == 2147483647 || Stackable <= 0) ? uint32(0x7FFFFFFF - 1) : uint32(Stackable);
746 }
747
748 float GetDPS() const;
749
750 int32 getFeralBonus(int32 extraDPS = 0) const;
751 int32 GetTotalAPBonus() const { return _totalAP; }
752
753 float GetItemLevelIncludingQuality() const;
754
755 uint32 GetSkill() const;
756
757 bool IsPotion() const { return Class == ITEM_CLASS_CONSUMABLE && SubClass == ITEM_SUBCLASS_POTION; }
758 bool IsWeaponVellum() const { return Class == ITEM_CLASS_TRADE_GOODS && SubClass == ITEM_SUBCLASS_WEAPON_ENCHANTMENT; }
759 bool IsArmorVellum() const { return Class == ITEM_CLASS_TRADE_GOODS && SubClass == ITEM_SUBCLASS_ARMOR_ENCHANTMENT; }
760 bool IsConjuredConsumable() const { return Class == ITEM_CLASS_CONSUMABLE && HasFlag(ITEM_FLAG_CONJURED); }
761 bool HasSignature() const;
762
763 inline bool HasFlag(ItemFlags flag) const { return (Flags[0] & flag) != 0; }
764 inline bool HasFlag(ItemFlags2 flag) const { return (Flags[1] & flag) != 0; }
765 inline bool HasFlag(ItemFlagsCustom customFlag) const { return (FlagsCu & customFlag) != 0; }
766
767 std::string const& GetDefaultLocaleName() const;
768
769 void InitializeQueryData();
770 WorldPacket BuildQueryData(LocaleConstant loc) const;
771
772private:
773 // Cached info
775
776 // Loading Helpers
777 void _LoadTotalAP();
778};
779
781{
782 std::vector<std::string> Name;
783 std::vector<std::string> Description;
784};
785
787{
788 std::string name;
790};
791
793{
794 std::vector<std::string> Name;
795};
796
797#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 ASSERT
Definition Errors.h:68
#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_PROTO_SOCKETS
#define MAX_ITEM_SUBCLASS_JUNK
#define MAX_ITEM_SUBCLASS_GEM
#define MAX_ITEM_PROTO_DAMAGES
#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
#define MAX_ITEM_PROTO_STATS
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
TotemCategory
HolidayIds
Definition Map.h:302
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
uint32 GetArcaneRes() const
int32 RandomProperty
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
uint32 DisenchantID
void GetDamage(uint32 index, float &minDamage, float &maxDamage) const
uint32 GetQuality() const
HolidayIds GetHolidayID() const
int32 GetStatModifierBonusStat(uint32 index) const
bool IsPotion() const
uint32 GetDuration() const
uint32 GetBuyCount() const
uint32 RequiredCityRank
uint32 RequiredSkill
int32 GetAllowableClass() const
uint32 GetContainerSlots() const
uint32 RequiredSpell
uint32 ScalingStatValue
std::string Description
uint32 AllowableClass
uint32 GetFrostRes() const
int32 GetTotalAPBonus() const
uint32 RequiredSkillRank
uint32 GetPageText() const
uint32 GetGemProperties() const
uint32 GetBlock() const
uint32 GetId() const
uint32 RequiredHonorRank
uint32 GetMaxStackSize() const
float RangedModRange
uint32 GetArmor() 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 socketBonus
uint32 GetFireRes() const
uint32 GetStartQuest() const
uint32 RequiredDisenchantSkill
bool IsArmorVellum() const
uint32 TotemCategory
uint32 MinMoneyLoot
uint32 MaxMoneyLoot
uint32 GetMap() const
float GetRangedModRange() const
uint32 GetRequiredReputationFaction() const
uint32 GetDisplayId() const
uint32 GetAllowableRace() const
uint32 PageMaterial
int32 GetRequiredLevel() const
uint32 RequiredLevel
std::string Name1
uint32 GemProperties
bool IsConjuredConsumable() const
uint32 GetRequiredReputationRank() const
uint32 RequiredReputationRank
uint32 GetItemLimitCategory() const
uint32 GetRequiredDisenchantSkill() const
uint32 ContainerSlots
uint32 DisplayInfoID
uint32 AllowableRace
uint32 RequiredReputationFaction
bool HasFlag(ItemFlags flag) const
uint32 ItemLimitCategory
uint32 GetHolyRes() const
uint32 GetRandomSuffix() const
uint32 GetSubClass() const
uint32 GetSellPrice() const
bool HasFlag(ItemFlagsCustom customFlag) const
uint32 ScalingStatDistribution
::InventoryType GetInventoryType() const
uint32 GetArea() const
uint32 MaxDurability
uint32 InventoryType
uint32 LanguageID
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 GetLockID() const
uint32 GetSocketBonus() const
uint32 GetClass() const
uint32 GetRequiredSkill() const
std::array< _ItemStat, MAX_ITEM_PROTO_STATS > ItemStat
uint32 StartQuest
int32 SoundOverrideSubclass
uint32 GetDamageType(uint32 index) const
bool IsWeaponVellum() const
std::array< _Damage, MAX_ITEM_PROTO_DAMAGES > Damage
uint32 StatsCount
uint32 GetDelay() const
uint32 GetBagFamily() const
float DamageMin
uint32 DamageType
float DamageMax
int32 ItemStatValue
uint32 ItemStatType
uint32 Content
uint32 Color