root/trunk/src/arcemu-world/ItemPrototype.h @ 3151

Revision 3151, 19.8 kB (checked in by AlexisB, 7 months ago)

ADDED: You can now log in with 3.3.2 build 11403. Expect client crashes and weird behavior! Thanks to Mangos for the packet/dbc changes.

  • Property ff set to
    *.cpp = svn:eol-style=native
    Makefile = svn:eol-style=native
    README = svn:eol-style=native
    CHANGELOG = svn:eol-style=native
    LICENSE = svn:eol-style=native
  • Property svn:keywords set to Date Author Rev
Line 
1/*
2 * ArcEmu MMORPG Server
3 * Copyright (C) 2005-2007 Ascent Team <http://www.ascentemu.com/>
4 * Copyright (C) 2008-2010 <http://www.ArcEmu.org/>
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 * GNU Affero General Public License for more details.
15 *
16 * You should have received a copy of the GNU Affero General Public License
17 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 *
19 */
20
21#ifndef _ITEMPROTOTYPE_H
22#define _ITEMPROTOTYPE_H
23class Spell;
24
25#define MAX_INVENTORY_SLOT 150
26#define MAX_BUYBACK_SLOT 12
27//#define MAX_BUYBACK_SLOT ((PLAYER_FIELD_KEYRING_SLOT_1 - PLAYER_FIELD_VENDORBUYBACK_SLOT_1) >> 1)
28
29#define ITEM_NO_SLOT_AVAILABLE -1 //works for all kind of slots now
30#define INVENTORY_SLOT_NOT_SET -1
31
32#define EQUIPMENT_SLOT_START            0
33#define EQUIPMENT_SLOT_HEAD                     0
34#define EQUIPMENT_SLOT_NECK                     1
35#define EQUIPMENT_SLOT_SHOULDERS        2
36#define EQUIPMENT_SLOT_BODY                     3
37#define EQUIPMENT_SLOT_CHEST            4
38#define EQUIPMENT_SLOT_WAIST            5
39#define EQUIPMENT_SLOT_LEGS                     6
40#define EQUIPMENT_SLOT_FEET                     7
41#define EQUIPMENT_SLOT_WRISTS           8
42#define EQUIPMENT_SLOT_HANDS            9
43#define EQUIPMENT_SLOT_FINGER1     10
44#define EQUIPMENT_SLOT_FINGER2     11
45#define EQUIPMENT_SLOT_TRINKET1    12
46#define EQUIPMENT_SLOT_TRINKET2    13
47#define EQUIPMENT_SLOT_BACK                14
48#define EQUIPMENT_SLOT_MAINHAND    15
49#define EQUIPMENT_SLOT_OFFHAND     16
50#define EQUIPMENT_SLOT_RANGED      17
51#define EQUIPMENT_SLOT_TABARD      18
52#define EQUIPMENT_SLOT_END                 19
53
54#define INVENTORY_SLOT_BAG_START         19
55#define INVENTORY_SLOT_BAG_1             19
56#define INVENTORY_SLOT_BAG_2             20
57#define INVENTORY_SLOT_BAG_3             21
58#define INVENTORY_SLOT_BAG_4             22
59#define INVENTORY_SLOT_BAG_END           23
60
61#define INVENTORY_SLOT_ITEM_START       23
62#define INVENTORY_SLOT_ITEM_1           23
63#define INVENTORY_SLOT_ITEM_2           24
64#define INVENTORY_SLOT_ITEM_3           25
65#define INVENTORY_SLOT_ITEM_4           26
66#define INVENTORY_SLOT_ITEM_5           27
67#define INVENTORY_SLOT_ITEM_6           28
68#define INVENTORY_SLOT_ITEM_7           29
69#define INVENTORY_SLOT_ITEM_8           30
70#define INVENTORY_SLOT_ITEM_9           31
71#define INVENTORY_SLOT_ITEM_10      32
72#define INVENTORY_SLOT_ITEM_11      33
73#define INVENTORY_SLOT_ITEM_12      34
74#define INVENTORY_SLOT_ITEM_13      35
75#define INVENTORY_SLOT_ITEM_14      36
76#define INVENTORY_SLOT_ITEM_15      37
77#define INVENTORY_SLOT_ITEM_16      38
78#define INVENTORY_SLOT_ITEM_END     39
79
80#define BANK_SLOT_ITEM_START             39
81#define BANK_SLOT_ITEM_1                         39
82#define BANK_SLOT_ITEM_2                         40
83#define BANK_SLOT_ITEM_3                         41
84#define BANK_SLOT_ITEM_4                         42
85#define BANK_SLOT_ITEM_5                         43
86#define BANK_SLOT_ITEM_6                         44
87#define BANK_SLOT_ITEM_7                         45
88#define BANK_SLOT_ITEM_8                         46
89#define BANK_SLOT_ITEM_9                         47
90#define BANK_SLOT_ITEM_10                        48
91#define BANK_SLOT_ITEM_11                        49
92#define BANK_SLOT_ITEM_12                        50
93#define BANK_SLOT_ITEM_13                        51
94#define BANK_SLOT_ITEM_14                        52
95#define BANK_SLOT_ITEM_15                        53
96#define BANK_SLOT_ITEM_16                        54
97#define BANK_SLOT_ITEM_17                        55
98#define BANK_SLOT_ITEM_18                        56
99#define BANK_SLOT_ITEM_19                        57
100#define BANK_SLOT_ITEM_20                        58
101#define BANK_SLOT_ITEM_21                        59
102#define BANK_SLOT_ITEM_22                        60
103#define BANK_SLOT_ITEM_23                        61
104#define BANK_SLOT_ITEM_24                        62
105#define BANK_SLOT_ITEM_25                        63
106#define BANK_SLOT_ITEM_26                        64
107#define BANK_SLOT_ITEM_27                        65
108#define BANK_SLOT_ITEM_28                        66
109#define BANK_SLOT_ITEM_END                   67
110
111#define BANK_SLOT_BAG_START               67
112#define BANK_SLOT_BAG_1                   67
113#define BANK_SLOT_BAG_2                   68
114#define BANK_SLOT_BAG_3                   69
115#define BANK_SLOT_BAG_4                   70
116#define BANK_SLOT_BAG_5                   71
117#define BANK_SLOT_BAG_6                   72
118#define BANK_SLOT_BAG_7                   73
119#define BANK_SLOT_BAG_END                 74
120
121#define INVENTORY_KEYRING_START          86
122#define INVENTORY_KEYRING_1                      86
123#define INVENTORY_KEYRING_2                      87
124#define INVENTORY_KEYRING_3                      88
125#define INVENTORY_KEYRING_4                      89
126#define INVENTORY_KEYRING_5                      90
127#define INVENTORY_KEYRING_6                      91
128#define INVENTORY_KEYRING_7                      92
129#define INVENTORY_KEYRING_8                      93
130#define INVENTORY_KEYRING_9                      94
131#define INVENTORY_KEYRING_10             95
132#define INVENTORY_KEYRING_11             96
133#define INVENTORY_KEYRING_12             97
134#define INVENTORY_KEYRING_13             98
135#define INVENTORY_KEYRING_14             99
136#define INVENTORY_KEYRING_15             100
137#define INVENTORY_KEYRING_16             101
138#define INVENTORY_KEYRING_17             102
139#define INVENTORY_KEYRING_18             103
140#define INVENTORY_KEYRING_19             104
141#define INVENTORY_KEYRING_20             105
142#define INVENTORY_KEYRING_21             106
143#define INVENTORY_KEYRING_22             107
144#define INVENTORY_KEYRING_23             108
145#define INVENTORY_KEYRING_24             109
146#define INVENTORY_KEYRING_25             110
147#define INVENTORY_KEYRING_26             111
148#define INVENTORY_KEYRING_27             112
149#define INVENTORY_KEYRING_28             113
150#define INVENTORY_KEYRING_29             114
151#define INVENTORY_KEYRING_30             115
152#define INVENTORY_KEYRING_31             116
153#define INVENTORY_KEYRING_32             117
154#define INVENTORY_KEYRING_END            118
155
156#define CURRENCYTOKEN_SLOT_START        118
157#define CURRENCYTOKEN_SLOT_1            118
158#define CURRENCYTOKEN_SLOT_2            119
159#define CURRENCYTOKEN_SLOT_3            120
160#define CURRENCYTOKEN_SLOT_4            121
161#define CURRENCYTOKEN_SLOT_5            122
162#define CURRENCYTOKEN_SLOT_6            123
163#define CURRENCYTOKEN_SLOT_7            124
164#define CURRENCYTOKEN_SLOT_8            125
165#define CURRENCYTOKEN_SLOT_9            126
166#define CURRENCYTOKEN_SLOT_10           127
167#define CURRENCYTOKEN_SLOT_11           128
168#define CURRENCYTOKEN_SLOT_12           129
169#define CURRENCYTOKEN_SLOT_13           130
170#define CURRENCYTOKEN_SLOT_14           131
171#define CURRENCYTOKEN_SLOT_15           132
172#define CURRENCYTOKEN_SLOT_16           133
173#define CURRENCYTOKEN_SLOT_17           134
174#define CURRENCYTOKEN_SLOT_18           135
175#define CURRENCYTOKEN_SLOT_19           136
176#define CURRENCYTOKEN_SLOT_20           137
177#define CURRENCYTOKEN_SLOT_21           138
178#define CURRENCYTOKEN_SLOT_22           139
179#define CURRENCYTOKEN_SLOT_23           140
180#define CURRENCYTOKEN_SLOT_24           141
181#define CURRENCYTOKEN_SLOT_25           142
182#define CURRENCYTOKEN_SLOT_26           143
183#define CURRENCYTOKEN_SLOT_27           144
184#define CURRENCYTOKEN_SLOT_28           145
185#define CURRENCYTOKEN_SLOT_29           146
186#define CURRENCYTOKEN_SLOT_30           147
187#define CURRENCYTOKEN_SLOT_31           148
188#define CURRENCYTOKEN_SLOT_32           149
189#define CURRENCYTOKEN_SLOT_END          150
190
191enum INV_ERR
192{
193        INV_ERR_OK,
194        INV_ERR_YOU_MUST_REACH_LEVEL_N,
195        INV_ERR_SKILL_ISNT_HIGH_ENOUGH,
196        INV_ERR_ITEM_DOESNT_GO_TO_SLOT,
197        INV_ERR_BAG_FULL,
198        INV_ERR_NONEMPTY_BAG_OVER_OTHER_BAG,
199        INV_ERR_CANT_TRADE_EQUIP_BAGS,
200        INV_ERR_ONLY_AMMO_CAN_GO_HERE,
201        INV_ERR_NO_REQUIRED_PROFICIENCY,
202        INV_ERR_NO_EQUIPMENT_SLOT_AVAILABLE,
203        INV_ERR_YOU_CAN_NEVER_USE_THAT_ITEM,
204        INV_ERR_YOU_CAN_NEVER_USE_THAT_ITEM2,
205        INV_ERR_NO_EQUIPMENT_SLOT_AVAILABLE2,
206        INV_ERR_CANT_EQUIP_WITH_TWOHANDED,
207        INV_ERR_CANT_DUAL_WIELD,
208        INV_ERR_ITEM_DOESNT_GO_INTO_BAG,
209        INV_ERR_ITEM_DOESNT_GO_INTO_BAG2,
210        INV_ERR_CANT_CARRY_MORE_OF_THIS,
211        INV_ERR_NO_EQUIPMENT_SLOT_AVAILABLE3,
212        INV_ERR_ITEM_CANT_STACK,
213        INV_ERR_ITEM_CANT_BE_EQUIPPED,
214        INV_ERR_ITEMS_CANT_BE_SWAPPED,
215        INV_ERR_SLOT_IS_EMPTY,
216        INV_ERR_ITEM_NOT_FOUND,
217        INV_ERR_CANT_DROP_SOULBOUND,
218        INV_ERR_OUT_OF_RANGE,
219        INV_ERR_TRIED_TO_SPLIT_MORE_THAN_COUNT,
220        INV_ERR_COULDNT_SPLIT_ITEMS,
221        INV_ERR_MISSING_REAGENT,
222        INV_ERR_NOT_ENOUGH_MONEY,
223        INV_ERR_NOT_A_BAG,
224        INV_ERR_CAN_ONLY_DO_WITH_EMPTY_BAGS,
225        INV_ERR_DONT_OWN_THAT_ITEM,
226        INV_ERR_CAN_EQUIP_ONLY1_QUIVER,
227        INV_ERR_MUST_PURCHASE_THAT_BAG_SLOT,
228        INV_ERR_TOO_FAR_AWAY_FROM_BANK,
229        INV_ERR_ITEM_LOCKED,
230        INV_ERR_YOU_ARE_STUNNED,
231        INV_ERR_YOU_ARE_DEAD,
232        INV_ERR_CANT_DO_RIGHT_NOW,
233        INV_ERR_BAG_FULL2,
234        INV_ERR_CAN_EQUIP_ONLY1_QUIVER2,
235        INV_ERR_CAN_EQUIP_ONLY1_AMMOPOUCH,
236        INV_ERR_STACKABLE_CANT_BE_WRAPPED,
237        INV_ERR_EQUIPPED_CANT_BE_WRAPPED,
238        INV_ERR_WRAPPED_CANT_BE_WRAPPED,
239        INV_ERR_BOUND_CANT_BE_WRAPPED,
240        INV_ERR_UNIQUE_CANT_BE_WRAPPED,
241        INV_ERR_BAGS_CANT_BE_WRAPPED,
242        INV_ERR_ALREADY_LOOTED,
243        INV_ERR_INVENTORY_FULL,
244        INV_ERR_BANK_FULL,
245        INV_ERR_ITEM_IS_CURRENTLY_SOLD_OUT,
246        INV_ERR_BAG_FULL3,
247        INV_ERR_ITEM_NOT_FOUND2,
248        INV_ERR_ITEM_CANT_STACK2,
249        INV_ERR_BAG_FULL4,
250        INV_ERR_ITEM_SOLD_OUT,
251        INV_ERR_OBJECT_IS_BUSY,
252        INV_ERR_NONE,
253        INV_ERR_CANT_DO_IN_COMBAT,
254        INV_ERR_CANT_DO_WHILE_DISARMED,
255        INV_ERR_BAG_FULL6,
256        INV_ERR_ITEM_RANK_NOT_ENOUGH,
257        INV_ERR_ITEM_REPUTATION_NOT_ENOUGH,
258        INV_ERR_MORE_THAN1_SPECIAL_BAG,
259        INV_ERR_LOOT_CANT_LOOT_THAT_NOW,
260        INV_ERR_ITEM_UNIQUE_EQUIPABLE,
261        INV_ERR_VENDOR_MISSING_TURNINS,
262        INV_ERR_NOT_ENOUGH_HONOR_POINTS,
263        INV_ERR_NOT_ENOUGH_ARENA_POINTS,
264        INV_ERR_ITEM_MAX_COUNT_SOCKETED,
265        INV_ERR_MAIL_BOUND_ITEM,
266        INV_ERR_NO_SPLIT_WHILE_PROSPECTING,
267        INV_ERR_NOT_USED_SO_DO_NOT_USE,
268        INV_ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED,
269        INV_ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED,
270        INV_ERR_TOO_MUCH_GOLD,
271        INV_ERR_NOT_DURING_ARENA_MATCH,
272        INV_ERR_CANNOT_TRADE_THAT,
273        INV_ERR_PERSONAL_ARENA_RATING_TOO_LOW,
274    INV_ERR_EVENT_AUTOEQUIP_BIND_CONFIRM,
275    INV_ERR_ARTEFACTS_ONLY_FOR_OWN_CHARACTERS,
276    INV_ERR_OK2,
277    INV_ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED,
278    INV_ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED,
279    INV_ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED,
280    INV_ERR_PURCHASE_LEVEL_TOO_LOW,
281    INV_ERR_CANT_EQUIP_NEED_TALENT,
282    INV_ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED
283};
284
285enum ITEM_STAT_TYPE
286{
287        POWER                                                           = 0,
288        HEALTH                                                          = 1,
289        UNKNOWN                                                         = 2,
290        AGILITY                                                         = 3,
291        STRENGTH                                                        = 4,
292        INTELLECT                                                       = 5,
293        SPIRIT                                                          = 6,
294        STAMINA                                                         = 7,
295        WEAPON_SKILL_RATING                                     = 11,
296        DEFENSE_RATING                                          = 12,
297        DODGE_RATING                                            = 13,
298        PARRY_RATING                                            = 14,
299        SHIELD_BLOCK_RATING                                     = 15,
300        MELEE_HIT_RATING                                        = 16,
301        RANGED_HIT_RATING                                       = 17,
302        SPELL_HIT_RATING                                        = 18,
303        MELEE_CRITICAL_STRIKE_RATING            = 19,
304        RANGED_CRITICAL_STRIKE_RATING           = 20,
305        SPELL_CRITICAL_STRIKE_RATING            = 21,
306        MELEE_HIT_AVOIDANCE_RATING                      = 22,
307        RANGED_HIT_AVOIDANCE_RATING                     = 23,
308        SPELL_HIT_AVOIDANCE_RATING                      = 24,
309        MELEE_CRITICAL_AVOIDANCE_RATING         = 25,
310        RANGED_CRITICAL_AVOIDANCE_RATING        = 26,
311        SPELL_CRITICAL_AVOIDANCE_RATING         = 27,
312        MELEE_HASTE_RATING                                      = 28,
313        RANGED_HASTE_RATING                                     = 29,
314        SPELL_HASTE_RATING                                      = 30,
315        HIT_RATING                                                      = 31,
316        CRITICAL_STRIKE_RATING                          = 32,
317        HIT_AVOIDANCE_RATING                            = 33,
318        CRITICAL_AVOIDANCE_RATING                       = 34,
319        RESILIENCE_RATING                                       = 35,
320        HASTE_RATING                                            = 36,
321        EXPERTISE_RATING                                        = 37,
322        ATTACK_POWER                                            = 38,
323        RANGED_ATTACK_POWER                                     = 39,
324        FERAL_ATTACK_POWER                                      = 40,
325        SPELL_HEALING_DONE                                      = 41,
326        SPELL_DAMAGE_DONE                                       = 42,
327        MANA_REGENERATION                                       = 43,
328        ARMOR_PENETRATION_RATING                        = 44,
329        SPELL_POWER                                                     = 45, 
330        HEALTH_REGEN                                    = 46,
331        SPELL_PENETRATION                               = 47,
332        BLOCK_VALUE                                     = 48,
333};
334
335enum ITEM_DAMAGE_TYPE
336{
337        NORMAL_DAMAGE   = 0,
338        HOLY_DAMAGE             = 1,
339        FIRE_DAMAGE             = 2,
340        NATURE_DAMAGE   = 3,
341        FROST_DAMAGE    = 4,
342        SHADOW_DAMAGE   = 5,
343        ARCANE_DAMAGE   = 6,
344};
345
346enum ITEM_SPELLTRIGGER_TYPE
347{
348        USE                             = 0,
349        ON_EQUIP                = 1,
350        CHANCE_ON_HIT   = 2,
351        SOULSTONE               = 4,
352        LEARNING                = 6,
353};
354
355enum ITEM_BONDING_TYPE
356{
357        ITEM_BIND_NONE          =   0, 
358        ITEM_BIND_ON_PICKUP =   1,
359        ITEM_BIND_ON_EQUIP  =   2,
360        ITEM_BIND_ON_USE        =   3,
361        ITEM_BIND_QUEST     =   4,
362        ITEM_BIND_QUEST2    =   5,
363};
364
365enum INVENTORY_TYPES
366{
367        INVTYPE_NON_EQUIP       = 0x0,
368        INVTYPE_HEAD            = 0x1,
369        INVTYPE_NECK            = 0x2,
370        INVTYPE_SHOULDERS       = 0x3,
371        INVTYPE_BODY            = 0x4,
372        INVTYPE_CHEST           = 0x5,
373        INVTYPE_WAIST           = 0x6,
374        INVTYPE_LEGS            = 0x7,
375        INVTYPE_FEET            = 0x8,
376        INVTYPE_WRISTS          = 0x9,
377        INVTYPE_HANDS           = 0xa,
378        INVTYPE_FINGER          = 0xb,
379        INVTYPE_TRINKET         = 0xc,
380        INVTYPE_WEAPON          = 0xd,
381        INVTYPE_SHIELD          = 0xe,
382        INVTYPE_RANGED          = 0xf,
383        INVTYPE_CLOAK           = 0x10,
384        INVTYPE_2HWEAPON        = 0x11,
385        INVTYPE_BAG             = 0x12,
386        INVTYPE_TABARD          = 0x13,
387        INVTYPE_ROBE            = 0x14,
388        INVTYPE_WEAPONMAINHAND  = 0x15,
389        INVTYPE_WEAPONOFFHAND   = 0x16,
390        INVTYPE_HOLDABLE        = 0x17,
391        INVTYPE_AMMO            = 0x18,
392        INVTYPE_THROWN          = 0x19,
393        INVTYPE_RANGEDRIGHT     = 0x1a,
394        INVTYPE_QUIVER          = 0x1b,
395        INVTYPE_RELIC           = 0x1c,
396        NUM_INVENTORY_TYPES     = 0x1d,
397};
398
399enum ITEM_CLASS
400{
401        ITEM_CLASS_CONSUMABLE   = 0,
402        ITEM_CLASS_CONTAINER    = 1,
403        ITEM_CLASS_WEAPON               = 2,
404        ITEM_CLASS_JEWELRY              = 3,
405        ITEM_CLASS_ARMOR                = 4,
406        ITEM_CLASS_REAGENT              = 5,
407        ITEM_CLASS_PROJECTILE   = 6,
408        ITEM_CLASS_TRADEGOODS   = 7,
409        ITEM_CLASS_GENERIC              = 8,
410        ITEM_CLASS_RECIPE               = 9,
411        ITEM_CLASS_MONEY                = 10,
412        ITEM_CLASS_QUIVER               = 11,
413        ITEM_CLASS_QUEST                = 12,
414        ITEM_CLASS_KEY                  = 13,
415        ITEM_CLASS_PERMANENT    = 14,
416        ITEM_CLASS_MISCELLANEOUS= 15,
417        ITEM_CLASS_GLYPH        = 16
418};
419
420enum Item_Subclass
421{
422   // Weapon
423   ITEM_SUBCLASS_WEAPON_AXE                                     = 0,
424   ITEM_SUBCLASS_WEAPON_TWOHAND_AXE                     = 1,
425   ITEM_SUBCLASS_WEAPON_BOW                                     = 2,
426   ITEM_SUBCLASS_WEAPON_GUN                                     = 3,
427   ITEM_SUBCLASS_WEAPON_MACE                            = 4,
428   ITEM_SUBCLASS_WEAPON_TWOHAND_MACE            = 5,
429   ITEM_SUBCLASS_WEAPON_POLEARM                         = 6,
430   ITEM_SUBCLASS_WEAPON_SWORD                           = 7,
431   ITEM_SUBCLASS_WEAPON_TWOHAND_SWORD           = 8,
432   ITEM_SUBCLASS_WEAPON_STAFF                           = 10,
433   ITEM_SUBCLASS_WEAPON_FIST_WEAPON                     = 13,
434   ITEM_SUBCLASS_WEAPON_MISC_WEAPON                     = 14,
435   ITEM_SUBCLASS_WEAPON_DAGGER                          = 15,
436   ITEM_SUBCLASS_WEAPON_THROWN                          = 16,
437   ITEM_SUBCLASS_WEAPON_CROSSBOW                        = 18,
438   ITEM_SUBCLASS_WEAPON_WAND                            = 19,
439   ITEM_SUBCLASS_WEAPON_FISHING_POLE            = 20,
440   
441   // Armor
442   ITEM_SUBCLASS_ARMOR_MISC                                     = 0,
443   ITEM_SUBCLASS_ARMOR_CLOTH                            = 1,
444   ITEM_SUBCLASS_ARMOR_LEATHER                          = 2,
445   ITEM_SUBCLASS_ARMOR_MAIL                                     = 3,
446   ITEM_SUBCLASS_ARMOR_PLATE_MAIL                       = 4,
447   ITEM_SUBCLASS_ARMOR_SHIELD                           = 6,
448
449   // Projectile
450   ITEM_SUBCLASS_PROJECTILE_ARROW                       = 2,
451   ITEM_SUBCLASS_PROJECTILE_BULLET                      = 3,
452   
453   // Trade goods
454   ITEM_SUBCLASS_PROJECTILE_TRADE_GOODS         = 0,
455   ITEM_SUBCLASS_PROJECTILE_PARTS                       = 1,
456   ITEM_SUBCLASS_PROJECTILE_EXPLOSIVES      = 2,
457   ITEM_SUBCLASS_PROJECTILE_DEVICES                     = 3,
458   
459   // Recipe
460   ITEM_SUBCLASS_RECIPE_BOOK                            = 0,
461   ITEM_SUBCLASS_RECIPE_LEATHERWORKING          = 1,
462   ITEM_SUBCLASS_RECIPE_TAILORING                       = 2,
463   ITEM_SUBCLASS_RECIPE_ENGINEERING                     = 3,
464   ITEM_SUBCLASS_RECIPE_BLACKSMITHING           = 4,
465   ITEM_SUBCLASS_RECIPE_COOKING                         = 5,
466   ITEM_SUBCLASS_RECIPE_ALCHEMY                         = 6,
467   ITEM_SUBCLASS_RECIPE_FIRST_AID                       = 7,
468   ITEM_SUBCLASS_RECIPE_ENCHANTING                      = 8,
469   ITEM_SUBCLASS_RECIPE_FISNING                         = 9,
470
471   // Quiver
472   ITEM_SUBCLASS_QUIVER_AMMO_POUCH                      = 3,
473   ITEM_SUBCLASS_QUIVER_QUIVER                          = 2,
474
475   // Misc
476   ITEM_SUBCLASS_MISC_JUNK                                      = 0,
477};
478
479enum ITEM_QUALITY
480{
481        ITEM_QUALITY_POOR_GREY             = 0,
482        ITEM_QUALITY_NORMAL_WHITE          = 1,
483        ITEM_QUALITY_UNCOMMON_GREEN        = 2,
484        ITEM_QUALITY_RARE_BLUE             = 3,
485        ITEM_QUALITY_EPIC_PURPLE           = 4,
486        ITEM_QUALITY_LEGENDARY_ORANGE      = 5,
487        ITEM_QUALITY_ARTIFACT_LIGHT_YELLOW = 6,
488        ITEM_QUALITY_HEIRLOOM_LIGHT_YELLOW  = 7,
489};
490
491enum ITEM_FLAG
492{
493        ITEM_FLAG_NONE         = 0x0,
494        ITEM_FLAG_SOULBOUND    = 0x1,      // not used in proto
495        ITEM_FLAG_CONJURED     = 0x2,
496        ITEM_FLAG_LOOTABLE     = 0x4,
497        ITEM_FLAG_WRAPPED      = 0x8,      // not used in proto
498        ITEM_FLAG_UNKNOWN_05   = 0x10,     // many equipable items and bags
499        ITEM_FLAG_UNKNOWN_06   = 0x20,     // totems
500        ITEM_FLAG_UNKNOWN_07   = 0x40,     // many consumables
501        ITEM_FLAG_UNKNOWN_08   = 0x80,     // only 1 wand uses this
502        ITEM_FLAG_UNKNOWN_09   = 0x100,    // some wands & relics
503        ITEM_FLAG_WRAP_GIFT    = 0x200,
504        ITEM_FLAG_CREATE_ITEM  = 0x400,
505        ITEM_FLAG_QUEST        = 0x800,
506        ITEM_FLAG_REFUNDABLE   = 0x1000,   // not used in proto
507        ITEM_FLAG_SIGNABLE     = 0x2000,
508        ITEM_FLAG_READABLE     = 0x4000,
509        ITEM_FLAG_UNKNOWN_16   = 0x8000,
510        ITEM_FLAG_EVENT_REQ    = 0x10000,
511        ITEM_FLAG_UNKNOWN_18   = 0x20000,
512        ITEM_FLAG_PROSPECTABLE = 0x40000,
513        ITEM_FLAG_UNIQUE_EQUIP = 0x80000,
514        ITEM_FLAG_UNKNOWN_21   = 0x100000, // not used in proto
515        ITEM_FLAG_UNKNOWN_22   = 0x200000, // player created health/mana/poisons
516        ITEM_FLAG_THROWN       = 0x400000,
517        ITEM_FLAG_SHAPESHIFT_OK= 0x800000,
518        ITEM_FLAG_UNKNOWN_25   = 0x1000000,
519        ITEM_FLAG_UNKNOWN_26   = 0x2000000,
520        ITEM_FLAG_UNKNOWN_27   = 0x4000000,
521        ITEM_FLAG_ACCOUNTBOUND = 0x8000000,
522        ITEM_FLAG_UNKNOWN_29   = 0x10000000,
523        ITEM_FLAG_MILLABLE     = 0x20000000,
524        ITEM_FLAG_UNKNOWN_31   = 0x40000000,
525        ITEM_FLAG_UNKNOWN_32   = 0x80000000
526};
527
528enum SPECIAL_ITEM_TYPE // dictates what bag-types an item can go into
529{
530        ITEM_TYPE_BOWAMMO               = 0x1,          // Arrows (quivers)
531        ITEM_TYPE_GUNAMMO               = 0x2,          // Bullets (ammo pouches)
532        ITEM_TYPE_SOULSHARD             = 0x4,          // Soul Shards (soul bags)
533        ITEM_TYPE_LEATHERWORK   = 0x8,          // Leatherworking Supplies (lw supply bags)
534        ITEM_TYPE_INSCRIPTION   = 0x10,         // Inscription supplies (inscriber supply bags)
535        ITEM_TYPE_HERBALISM             = 0x20,         // Herbalism supplies (herb bags)
536        ITEM_TYPE_ENCHANTMENT   = 0x40,         // Enchanting Supplies (enchanting bags)
537        ITEM_TYPE_ENGINEERING   = 0x80,         // Engineering Supplies (engineering toolboxes)
538        ITEM_TYPE_KEYRING               = 0x100,        // Keys (the keyring)
539        ITEM_TYPE_GEMS                  = 0x200,        // Jewelcrafting supplies (JC toolboxes)
540        ITEM_TYPE_MINING                = 0x400,        // Mining Supplies (mining toolboxes)
541        ITEM_TYPE_SBEQUIPMENT   = 0x800,        // Soulbound Equipment (wtf is this anyway?)
542        ITEM_TYPE_VANITYPETS    = 0x1000,       // Vanity Pets (no idea what this is here for, there's no 'vanity-pet bag', although perhaps they started on one then changed their minds and made the pets/mounts window)
543        ITEM_TYPE_CURRENCY              = 0x2000,       // Currency. duh. (currency tab in char window)
544        ITEM_TYPE_QUEST_ITEMS   = 0x4000        // Quest items.
545};
546
547enum SOCKET_GEM_COLOR
548{
549        GEM_META_SOCKET         = 1,
550        GEM_RED_SOCKET          = 2,
551        GEM_YELLOW_SOCKET       = 4,
552        GEM_BLUE_SOCKET         = 8
553};
554
555enum ITEM_LIMIT_FLAGS
556{
557        ILFLAG_NONE                     = 0,
558        ILFLAG_EQUIP_ONLY       = 1,
559};
560
561#pragma pack(push,1)
562struct SocketInfo {
563        uint32 SocketColor;
564        uint32 Unk;
565};
566
567struct ItemSpell
568{
569        uint32 Id;
570        uint32 Trigger;
571        int32 Charges;
572        int32 Cooldown;
573        uint32 Category;
574        int32 CategoryCooldown;
575};
576
577struct ItemDamage
578{
579        float Min;
580        float Max;
581        uint32 Type;
582};
583
584struct ItemStat
585{
586        uint32 Type;
587        int32 Value;
588};
589
590struct ItemPrototype
591{
592        uint32 ItemId;
593        uint32 Class;
594        uint32 SubClass;
595        uint32 unknown_bc;
596        char * Name1;
597        uint32 DisplayInfoID;
598        uint32 Quality;
599        uint32 Flags;
600        uint32 Faction;
601        uint32 BuyPrice;
602        uint32 SellPrice;
603        uint32 InventoryType;
604        uint32 AllowableClass;
605        uint32 AllowableRace;
606        uint32 ItemLevel;
607        uint32 RequiredLevel;
608        uint32 RequiredSkill;
609        uint32 RequiredSkillRank;
610        uint32 RequiredSkillSubRank;
611        uint32 RequiredPlayerRank1;
612        uint32 RequiredPlayerRank2;
613        uint32 RequiredFaction;
614        uint32 RequiredFactionStanding;
615        uint32 Unique;
616        uint32 MaxCount;
617        uint32 ContainerSlots;
618        uint32 itemstatscount;
619        ItemStat Stats[10];
620        uint32 ScalingStatsEntry;
621        uint32 ScalingStatsFlag;
622        ItemDamage Damage[2];
623        uint32 Armor;
624        uint32 HolyRes;
625        uint32 FireRes;
626        uint32 NatureRes;
627        uint32 FrostRes;
628        uint32 ShadowRes;
629        uint32 ArcaneRes;
630        uint32 Delay;
631        uint32 AmmoType;
632        float  Range;
633        ItemSpell Spells[5];
634        uint32 Bonding;
635        char * Description;
636        uint32 PageId;
637        uint32 PageLanguage;
638        uint32 PageMaterial;
639        uint32 QuestId;
640        uint32 LockId;
641        uint32 LockMaterial;
642        uint32 SheathID;
643        uint32 RandomPropId;
644        uint32 RandomSuffixId;
645        uint32 Block;
646        uint32 ItemSet;
647        uint32 MaxDurability;
648        uint32 ZoneNameID;
649        uint32 MapID;
650        uint32 BagFamily;
651        uint32 TotemCategory;
652        SocketInfo Sockets[3];
653        uint32 SocketBonus;
654        uint32 GemProperties;
655        int32 DisenchantReqSkill;
656        uint32 ArmorDamageModifier;
657        uint32 ExistingDuration;
658        uint32 ItemLimitCategory;
659        uint32 HolidayId;
660
661        string lowercase_name;  // used in auctions
662        uint32 FoodType;                //pet food type
663        GossipScript * gossip_script;
664        int32 ForcedPetId;
665};
666
667struct ItemName
668{
669        uint32 entry;
670        char *name;
671        uint32 slot;
672};
673
674typedef struct
675{
676        uint32 setid;
677        uint32 itemscount;
678        //Spell* spell[8];
679} ItemSet;
680
681#pragma pack(pop)
682
683#endif
Note: See TracBrowser for help on using the browser.