2 * Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef _ITEMPROTOTYPE_H
20 #define _ITEMPROTOTYPE_H
29 ITEM_MOD_STRENGTH
= 4,
30 ITEM_MOD_INTELLECT
= 5,
33 ITEM_MOD_DEFENSE_SKILL_RATING
= 12,
34 ITEM_MOD_DODGE_RATING
= 13,
35 ITEM_MOD_PARRY_RATING
= 14,
36 ITEM_MOD_BLOCK_RATING
= 15,
37 ITEM_MOD_HIT_MELEE_RATING
= 16,
38 ITEM_MOD_HIT_RANGED_RATING
= 17,
39 ITEM_MOD_HIT_SPELL_RATING
= 18,
40 ITEM_MOD_CRIT_MELEE_RATING
= 19,
41 ITEM_MOD_CRIT_RANGED_RATING
= 20,
42 ITEM_MOD_CRIT_SPELL_RATING
= 21,
43 ITEM_MOD_HIT_TAKEN_MELEE_RATING
= 22,
44 ITEM_MOD_HIT_TAKEN_RANGED_RATING
= 23,
45 ITEM_MOD_HIT_TAKEN_SPELL_RATING
= 24,
46 ITEM_MOD_CRIT_TAKEN_MELEE_RATING
= 25,
47 ITEM_MOD_CRIT_TAKEN_RANGED_RATING
= 26,
48 ITEM_MOD_CRIT_TAKEN_SPELL_RATING
= 27,
49 ITEM_MOD_HASTE_MELEE_RATING
= 28,
50 ITEM_MOD_HASTE_RANGED_RATING
= 29,
51 ITEM_MOD_HASTE_SPELL_RATING
= 30,
52 ITEM_MOD_HIT_RATING
= 31,
53 ITEM_MOD_CRIT_RATING
= 32,
54 ITEM_MOD_HIT_TAKEN_RATING
= 33,
55 ITEM_MOD_CRIT_TAKEN_RATING
= 34,
56 ITEM_MOD_RESILIENCE_RATING
= 35,
57 ITEM_MOD_HASTE_RATING
= 36,
58 ITEM_MOD_EXPERTISE_RATING
= 37,
59 ITEM_MOD_ATTACK_POWER
= 38,
60 ITEM_MOD_RANGED_ATTACK_POWER
= 39,
61 ITEM_MOD_FERAL_ATTACK_POWER
= 40,
62 ITEM_MOD_SPELL_HEALING_DONE
= 41,
63 ITEM_MOD_SPELL_DAMAGE_DONE
= 42,
64 ITEM_MOD_MANA_REGENERATION
= 43,
65 ITEM_MOD_ARMOR_PENETRATION_RATING
= 44,
66 ITEM_MOD_SPELL_POWER
= 45
69 #define MAX_ITEM_MOD 46
71 enum ItemSpelltriggerType
73 ITEM_SPELLTRIGGER_ON_USE
= 0, // use after equip cooldown
74 ITEM_SPELLTRIGGER_ON_EQUIP
= 1,
75 ITEM_SPELLTRIGGER_CHANCE_ON_HIT
= 2,
76 ITEM_SPELLTRIGGER_SOULSTONE
= 4,
78 * ItemSpelltriggerType 5 might have changed on 2.4.3/3.0.3: Such auras
79 * will be applied on item pickup and removed on item loss - maybe on the
80 * other hand the item is destroyed if the aura is removed ("removed on
81 * death" of spell 57348 makes me think so)
83 ITEM_SPELLTRIGGER_ON_NO_DELAY_USE
= 5, // no equip cooldown
84 ITEM_SPELLTRIGGER_LEARN_SPELL_ID
= 6 // used in item_template.spell_2 with spell_id with SPELL_GENERIC_LEARN in spell_1
87 #define MAX_ITEM_SPELLTRIGGER 7
92 BIND_WHEN_PICKED_UP
= 1,
93 BIND_WHEN_EQUIPED
= 2,
96 BIND_QUEST_ITEM1
= 5 // not used in game
99 #define MAX_BIND_TYPE 6
101 // masks for ITEM_FIELD_FLAGS field
104 ITEM_FLAGS_BINDED
= 0x00000001,
105 ITEM_FLAGS_CONJURED
= 0x00000002,
106 ITEM_FLAGS_OPENABLE
= 0x00000004,
107 ITEM_FLAGS_WRAPPED
= 0x00000008,
108 ITEM_FLAGS_BROKEN
= 0x00000010, // appears red icon (like when item durability==0)
109 ITEM_FLAGS_WRAPPER
= 0x00000200, // used or not used wrapper
110 ITEM_FLAGS_PARTY_LOOT
= 0x00000800, // determines if item is party loot or not
111 ITEM_FLAGS_CHARTER
= 0x00002000, // arena/guild charter
112 ITEM_FLAGS_PROSPECTABLE
= 0x00040000,
113 ITEM_FLAGS_UNIQUE_EQUIPPED
= 0x00080000,
114 ITEM_FLAGS_USEABLE_IN_ARENA
= 0x00200000,
115 ITEM_FLAGS_THROWABLE
= 0x00400000, // not used in game for check trow possibility, only for item in game tooltip
116 ITEM_FLAGS_SPECIALUSE
= 0x00800000, // last used flag in 2.3.0
117 ITEM_FLAGS_BOA
= 0x08000000, // bind on account
118 ITEM_FLAGS_MILLABLE
= 0x20000000
123 BAG_FAMILY_MASK_ARROWS
= 0x00000001,
124 BAG_FAMILY_MASK_BULLETS
= 0x00000002,
125 BAG_FAMILY_MASK_SOUL_SHARDS
= 0x00000004,
126 BAG_FAMILY_MASK_LEATHERWORKING_SUPP
= 0x00000008,
127 BAG_FAMILY_MASK_INSCRIPTION_SUPP
= 0x00000010,
128 BAG_FAMILY_MASK_HERBS
= 0x00000020,
129 BAG_FAMILY_MASK_ENCHANTING_SUPP
= 0x00000040,
130 BAG_FAMILY_MASK_ENGINEERING_SUPP
= 0x00000080,
131 BAG_FAMILY_MASK_KEYS
= 0x00000100,
132 BAG_FAMILY_MASK_GEMS
= 0x00000200,
133 BAG_FAMILY_MASK_MINING_SUPP
= 0x00000400,
134 BAG_FAMILY_MASK_SOULBOUND_EQUIPMENT
= 0x00000800,
135 BAG_FAMILY_MASK_VANITY_PETS
= 0x00001000,
136 BAG_FAMILY_MASK_CURRENCY_TOKENS
= 0x00002000,
137 BAG_FAMILY_MASK_QUEST_ITEMS
= 0x00004000
142 SOCKET_COLOR_META
= 1,
143 SOCKET_COLOR_RED
= 2,
144 SOCKET_COLOR_YELLOW
= 4,
145 SOCKET_COLOR_BLUE
= 8
148 #define SOCKET_COLOR_ALL (SOCKET_COLOR_META | SOCKET_COLOR_RED | SOCKET_COLOR_YELLOW | SOCKET_COLOR_BLUE)
152 INVTYPE_NON_EQUIP
= 0,
155 INVTYPE_SHOULDERS
= 3,
164 INVTYPE_TRINKET
= 12,
169 INVTYPE_2HWEAPON
= 17,
173 INVTYPE_WEAPONMAINHAND
= 21,
174 INVTYPE_WEAPONOFFHAND
= 22,
175 INVTYPE_HOLDABLE
= 23,
178 INVTYPE_RANGEDRIGHT
= 26,
183 #define MAX_INVTYPE 29
187 ITEM_CLASS_CONSUMABLE
= 0,
188 ITEM_CLASS_CONTAINER
= 1,
189 ITEM_CLASS_WEAPON
= 2,
191 ITEM_CLASS_ARMOR
= 4,
192 ITEM_CLASS_REAGENT
= 5,
193 ITEM_CLASS_PROJECTILE
= 6,
194 ITEM_CLASS_TRADE_GOODS
= 7,
195 ITEM_CLASS_GENERIC
= 8,
196 ITEM_CLASS_RECIPE
= 9,
197 ITEM_CLASS_MONEY
= 10,
198 ITEM_CLASS_QUIVER
= 11,
199 ITEM_CLASS_QUEST
= 12,
201 ITEM_CLASS_PERMANENT
= 14,
202 ITEM_CLASS_MISC
= 15,
203 ITEM_CLASS_GLYPH
= 16
206 #define MAX_ITEM_CLASS 17
208 enum ItemSubclassConsumable
210 ITEM_SUBCLASS_CONSUMABLE
= 0,
211 ITEM_SUBCLASS_POTION
= 1,
212 ITEM_SUBCLASS_ELIXIR
= 2,
213 ITEM_SUBCLASS_FLASK
= 3,
214 ITEM_SUBCLASS_SCROLL
= 4,
215 ITEM_SUBCLASS_FOOD
= 5,
216 ITEM_SUBCLASS_ITEM_ENHANCEMENT
= 6,
217 ITEM_SUBCLASS_BANDAGE
= 7,
218 ITEM_SUBCLASS_CONSUMABLE_OTHER
= 8
221 #define MAX_ITEM_SUBCLASS_CONSUMABLE 9
223 enum ItemSubclassContainer
225 ITEM_SUBCLASS_CONTAINER
= 0,
226 ITEM_SUBCLASS_SOUL_CONTAINER
= 1,
227 ITEM_SUBCLASS_HERB_CONTAINER
= 2,
228 ITEM_SUBCLASS_ENCHANTING_CONTAINER
= 3,
229 ITEM_SUBCLASS_ENGINEERING_CONTAINER
= 4,
230 ITEM_SUBCLASS_GEM_CONTAINER
= 5,
231 ITEM_SUBCLASS_MINING_CONTAINER
= 6,
232 ITEM_SUBCLASS_LEATHERWORKING_CONTAINER
= 7,
233 ITEM_SUBCLASS_INSCRIPTION_CONTAINER
= 8
236 #define MAX_ITEM_SUBCLASS_CONTAINER 9
238 enum ItemSubclassWeapon
240 ITEM_SUBCLASS_WEAPON_AXE
= 0,
241 ITEM_SUBCLASS_WEAPON_AXE2
= 1,
242 ITEM_SUBCLASS_WEAPON_BOW
= 2,
243 ITEM_SUBCLASS_WEAPON_GUN
= 3,
244 ITEM_SUBCLASS_WEAPON_MACE
= 4,
245 ITEM_SUBCLASS_WEAPON_MACE2
= 5,
246 ITEM_SUBCLASS_WEAPON_POLEARM
= 6,
247 ITEM_SUBCLASS_WEAPON_SWORD
= 7,
248 ITEM_SUBCLASS_WEAPON_SWORD2
= 8,
249 ITEM_SUBCLASS_WEAPON_obsolete
= 9,
250 ITEM_SUBCLASS_WEAPON_STAFF
= 10,
251 ITEM_SUBCLASS_WEAPON_EXOTIC
= 11,
252 ITEM_SUBCLASS_WEAPON_EXOTIC2
= 12,
253 ITEM_SUBCLASS_WEAPON_FIST
= 13,
254 ITEM_SUBCLASS_WEAPON_MISC
= 14,
255 ITEM_SUBCLASS_WEAPON_DAGGER
= 15,
256 ITEM_SUBCLASS_WEAPON_THROWN
= 16,
257 ITEM_SUBCLASS_WEAPON_SPEAR
= 17,
258 ITEM_SUBCLASS_WEAPON_CROSSBOW
= 18,
259 ITEM_SUBCLASS_WEAPON_WAND
= 19,
260 ITEM_SUBCLASS_WEAPON_FISHING_POLE
= 20
263 #define MAX_ITEM_SUBCLASS_WEAPON 21
267 ITEM_SUBCLASS_GEM_RED
= 0,
268 ITEM_SUBCLASS_GEM_BLUE
= 1,
269 ITEM_SUBCLASS_GEM_YELLOW
= 2,
270 ITEM_SUBCLASS_GEM_PURPLE
= 3,
271 ITEM_SUBCLASS_GEM_GREEN
= 4,
272 ITEM_SUBCLASS_GEM_ORANGE
= 5,
273 ITEM_SUBCLASS_GEM_META
= 6,
274 ITEM_SUBCLASS_GEM_SIMPLE
= 7,
275 ITEM_SUBCLASS_GEM_PRISMATIC
= 8
278 #define MAX_ITEM_SUBCLASS_GEM 9
280 enum ItemSubclassArmor
282 ITEM_SUBCLASS_ARMOR_MISC
= 0,
283 ITEM_SUBCLASS_ARMOR_CLOTH
= 1,
284 ITEM_SUBCLASS_ARMOR_LEATHER
= 2,
285 ITEM_SUBCLASS_ARMOR_MAIL
= 3,
286 ITEM_SUBCLASS_ARMOR_PLATE
= 4,
287 ITEM_SUBCLASS_ARMOR_BUCKLER
= 5,
288 ITEM_SUBCLASS_ARMOR_SHIELD
= 6,
289 ITEM_SUBCLASS_ARMOR_LIBRAM
= 7,
290 ITEM_SUBCLASS_ARMOR_IDOL
= 8,
291 ITEM_SUBCLASS_ARMOR_TOTEM
= 9,
292 ITEM_SUBCLASS_ARMOR_SIGIL
= 10
295 #define MAX_ITEM_SUBCLASS_ARMOR 11
297 enum ItemSubclassReagent
299 ITEM_SUBCLASS_REAGENT
= 0
302 #define MAX_ITEM_SUBCLASS_REAGENT 1
304 enum ItemSubclassProjectile
306 ITEM_SUBCLASS_WAND
= 0, // ABS
307 ITEM_SUBCLASS_BOLT
= 1, // ABS
308 ITEM_SUBCLASS_ARROW
= 2,
309 ITEM_SUBCLASS_BULLET
= 3,
310 ITEM_SUBCLASS_THROWN
= 4 // ABS
313 #define MAX_ITEM_SUBCLASS_PROJECTILE 5
315 enum ItemSubclassTradeGoods
317 ITEM_SUBCLASS_TRADE_GOODS
= 0,
318 ITEM_SUBCLASS_PARTS
= 1,
319 ITEM_SUBCLASS_EXPLOSIVES
= 2,
320 ITEM_SUBCLASS_DEVICES
= 3,
321 ITEM_SUBCLASS_JEWELCRAFTING
= 4,
322 ITEM_SUBCLASS_CLOTH
= 5,
323 ITEM_SUBCLASS_LEATHER
= 6,
324 ITEM_SUBCLASS_METAL_STONE
= 7,
325 ITEM_SUBCLASS_MEAT
= 8,
326 ITEM_SUBCLASS_HERB
= 9,
327 ITEM_SUBCLASS_ELEMENTAL
= 10,
328 ITEM_SUBCLASS_TRADE_GOODS_OTHER
= 11,
329 ITEM_SUBCLASS_ENCHANTING
= 12,
330 ITEM_SUBCLASS_MATERIAL
= 13,
331 ITEM_SUBCLASS_ARMOR_ENCHANTMENT
= 14,
332 ITEM_SUBCLASS_WEAPON_ENCHANTMENT
= 15
335 #define MAX_ITEM_SUBCLASS_TRADE_GOODS 16
337 enum ItemSubclassGeneric
339 ITEM_SUBCLASS_GENERIC
= 0
342 #define MAX_ITEM_SUBCLASS_GENERIC 1
344 enum ItemSubclassRecipe
346 ITEM_SUBCLASS_BOOK
= 0,
347 ITEM_SUBCLASS_LEATHERWORKING_PATTERN
= 1,
348 ITEM_SUBCLASS_TAILORING_PATTERN
= 2,
349 ITEM_SUBCLASS_ENGINEERING_SCHEMATIC
= 3,
350 ITEM_SUBCLASS_BLACKSMITHING
= 4,
351 ITEM_SUBCLASS_COOKING_RECIPE
= 5,
352 ITEM_SUBCLASS_ALCHEMY_RECIPE
= 6,
353 ITEM_SUBCLASS_FIRST_AID_MANUAL
= 7,
354 ITEM_SUBCLASS_ENCHANTING_FORMULA
= 8,
355 ITEM_SUBCLASS_FISHING_MANUAL
= 9,
356 ITEM_SUBCLASS_JEWELCRAFTING_RECIPE
= 10
359 #define MAX_ITEM_SUBCLASS_RECIPE 11
361 enum ItemSubclassMoney
363 ITEM_SUBCLASS_MONEY
= 0
366 #define MAX_ITEM_SUBCLASS_MONEY 1
368 enum ItemSubclassQuiver
370 ITEM_SUBCLASS_QUIVER0
= 0, // ABS
371 ITEM_SUBCLASS_QUIVER1
= 1, // ABS
372 ITEM_SUBCLASS_QUIVER
= 2,
373 ITEM_SUBCLASS_AMMO_POUCH
= 3
376 #define MAX_ITEM_SUBCLASS_QUIVER 4
378 enum ItemSubclassQuest
380 ITEM_SUBCLASS_QUEST
= 0
383 #define MAX_ITEM_SUBCLASS_QUEST 1
387 ITEM_SUBCLASS_KEY
= 0,
388 ITEM_SUBCLASS_LOCKPICK
= 1
391 #define MAX_ITEM_SUBCLASS_KEY 2
393 enum ItemSubclassPermanent
395 ITEM_SUBCLASS_PERMANENT
= 0
398 #define MAX_ITEM_SUBCLASS_PERMANENT 1
400 enum ItemSubclassJunk
402 ITEM_SUBCLASS_JUNK
= 0,
403 ITEM_SUBCLASS_JUNK_REAGENT
= 1,
404 ITEM_SUBCLASS_JUNK_PET
= 2,
405 ITEM_SUBCLASS_JUNK_HOLIDAY
= 3,
406 ITEM_SUBCLASS_JUNK_OTHER
= 4,
407 ITEM_SUBCLASS_JUNK_MOUNT
= 5
410 #define MAX_ITEM_SUBCLASS_JUNK 6
412 enum ItemSubclassGlyph
414 ITEM_SUBCLASS_GLYPH_WARRIOR
= 1,
415 ITEM_SUBCLASS_GLYPH_PALADIN
= 2,
416 ITEM_SUBCLASS_GLYPH_HUNTER
= 3,
417 ITEM_SUBCLASS_GLYPH_ROGUE
= 4,
418 ITEM_SUBCLASS_GLYPH_PRIEST
= 5,
419 ITEM_SUBCLASS_GLYPH_DEATH_KNIGHT
= 6,
420 ITEM_SUBCLASS_GLYPH_SHAMAN
= 7,
421 ITEM_SUBCLASS_GLYPH_MAGE
= 8,
422 ITEM_SUBCLASS_GLYPH_WARLOCK
= 9,
423 ITEM_SUBCLASS_GLYPH_DRUID
= 11
426 #define MAX_ITEM_SUBCLASS_GLYPH 12
428 const uint32 MaxItemSubclassValues
[MAX_ITEM_CLASS
] =
430 MAX_ITEM_SUBCLASS_CONSUMABLE
,
431 MAX_ITEM_SUBCLASS_CONTAINER
,
432 MAX_ITEM_SUBCLASS_WEAPON
,
433 MAX_ITEM_SUBCLASS_GEM
,
434 MAX_ITEM_SUBCLASS_ARMOR
,
435 MAX_ITEM_SUBCLASS_REAGENT
,
436 MAX_ITEM_SUBCLASS_PROJECTILE
,
437 MAX_ITEM_SUBCLASS_TRADE_GOODS
,
438 MAX_ITEM_SUBCLASS_GENERIC
,
439 MAX_ITEM_SUBCLASS_RECIPE
,
440 MAX_ITEM_SUBCLASS_MONEY
,
441 MAX_ITEM_SUBCLASS_QUIVER
,
442 MAX_ITEM_SUBCLASS_QUEST
,
443 MAX_ITEM_SUBCLASS_KEY
,
444 MAX_ITEM_SUBCLASS_PERMANENT
,
445 MAX_ITEM_SUBCLASS_JUNK
,
446 MAX_ITEM_SUBCLASS_GLYPH
449 inline uint8
ItemSubClassToDurabilityMultiplierId(uint32 ItemClass
, uint32 ItemSubClass
)
453 case ITEM_CLASS_WEAPON
: return ItemSubClass
;
454 case ITEM_CLASS_ARMOR
: return ItemSubClass
+ 21;
459 // GCC have alternative #pragma pack(N) syntax and old gcc version not support pack(push,N), also any gcc version not support it at some platform
460 #if defined( __GNUC__ )
470 uint32 DamageType
; // id from Resistances.dbc
480 uint32 SpellId
; // id from Spell.dbc
485 uint32 SpellCategory
; // id from SpellCategory.dbc
486 int32 SpellCategoryCooldown
;
495 #define MAX_ITEM_PROTO_DAMAGES 5
496 #define MAX_ITEM_PROTO_SOCKETS 3
497 #define MAX_ITEM_PROTO_SPELLS 5
498 #define MAX_ITEM_PROTO_STATS 10
503 uint32 Class
; // id from ItemClass.dbc
504 uint32 SubClass
; // id from ItemSubClass.dbc
507 uint32 DisplayInfoID
; // id from ItemDisplayInfo.dbc
513 uint32 InventoryType
;
514 uint32 AllowableClass
;
515 uint32 AllowableRace
;
517 uint32 RequiredLevel
;
518 uint32 RequiredSkill
; // id from SkillLine.dbc
519 uint32 RequiredSkillRank
;
520 uint32 RequiredSpell
; // id from Spell.dbc
521 uint32 RequiredHonorRank
;
522 uint32 RequiredCityRank
;
523 uint32 RequiredReputationFaction
; // id from Faction.dbc
524 uint32 RequiredReputationRank
;
525 int32 MaxCount
; // <=0: no limit
526 int32 Stackable
; // 0: not allowed, -1: put in player coin info tab and don't limit stacking (so 1 slot)
527 uint32 ContainerSlots
;
529 _ItemStat ItemStat
[MAX_ITEM_PROTO_STATS
];
530 uint32 ScalingStatDistribution
; // id from ScalingStatDistribution.dbc
531 uint32 ScalingStatValue
; // mask for selecting column in ScalingStatValues.dbc
532 _Damage Damage
[MAX_ITEM_PROTO_DAMAGES
];
542 float RangedModRange
;
543 _Spell Spells
[MAX_ITEM_PROTO_SPELLS
];
549 uint32 StartQuest
; // id from QuestCache.wdb
551 int32 Material
; // id from Material.dbc
553 uint32 RandomProperty
; // id from ItemRandomProperties.dbc
554 uint32 RandomSuffix
; // id from ItemRandomSuffix.dbc
556 uint32 ItemSet
; // id from ItemSet.dbc
557 uint32 MaxDurability
;
558 uint32 Area
; // id from AreaTable.dbc
559 uint32 Map
; // id from Map.dbc
560 uint32 BagFamily
; // bit string (1 << id from ItemBagFamily.dbc)
561 uint32 TotemCategory
; // id from TotemCategory.dbc
562 _Socket Socket
[MAX_ITEM_PROTO_SOCKETS
];
563 uint32 socketBonus
; // id from SpellItemEnchantment.dbc
564 uint32 GemProperties
; // id from GemProperties.dbc
565 uint32 RequiredDisenchantSkill
;
566 float ArmorDamageModifier
;
567 int32 Duration
; // negative = realtime, positive = ingame time
568 uint32 ItemLimitCategory
; // id from ItemLimitCategory.dbc
576 bool CanChangeEquipStateInCombat() const
578 switch(InventoryType
)
582 case INVTYPE_HOLDABLE
:
588 case ITEM_CLASS_WEAPON
:
589 case ITEM_CLASS_PROJECTILE
:
596 uint32
GetScalingStatValuesColumn() const
598 if(ScalingStatValue
& 0x00000001) // stat mod
600 if(ScalingStatValue
& 0x00000002) // stat mod
602 if(ScalingStatValue
& 0x00000004) // stat mod
604 if(ScalingStatValue
& 0x00000008) // stat mod
606 if(ScalingStatValue
& 0x00000010) // stat mod
608 if(ScalingStatValue
& 0x00000020) // armor mod
610 if(ScalingStatValue
& 0x00000040) // armor mod
612 if(ScalingStatValue
& 0x00000080) // armor mod
614 if(ScalingStatValue
& 0x00000100) // armor mod
616 if(ScalingStatValue
& 0x00000200) // damage mod
618 if(ScalingStatValue
& 0x00000400) // damage mod
620 if(ScalingStatValue
& 0x00000800) // damage mod
622 if(ScalingStatValue
& 0x00001000) // damage mod
624 if(ScalingStatValue
& 0x00002000) // damage mod
626 if(ScalingStatValue
& 0x00004000) // damage mod
628 if(ScalingStatValue
& 0x00008000) // spell power
630 if(ScalingStatValue
& 0x00020000) // feral AP
636 uint32
GetMaxStackSize() const { return Stackable
> 0 ? uint32(Stackable
) : uint32(0x7FFFFFFF-1); }
643 for (int i
= 0; i
< MAX_ITEM_PROTO_DAMAGES
; ++i
)
644 temp
+=Damage
[i
].DamageMin
+ Damage
[i
].DamageMax
;
645 return temp
*500/Delay
;
648 int32
getFeralBonus() const
650 // 0x02A5F3 - is mask for Melee weapon from ItemSubClassMask.dbc
651 if (Class
== ITEM_CLASS_WEAPON
&& (1<<SubClass
)&0x02A5F3)
653 int32 bonus
= int32(getDPS()*14.0f
) - 767;
661 bool IsPotion() const { return Class
==ITEM_CLASS_CONSUMABLE
&& SubClass
==ITEM_SUBCLASS_POTION
; }
662 bool IsConjuredConsumable() const { return Class
== ITEM_CLASS_CONSUMABLE
&& (Flags
& ITEM_FLAGS_CONJURED
); }
667 std::vector
<std::string
> Name
;
668 std::vector
<std::string
> Description
;
671 // GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some platform
672 #if defined( __GNUC__ )