Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
DBCStructure.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SKYFIRE_DBCSTRUCTURE_H
7#define SKYFIRE_DBCSTRUCTURE_H
8
9#include "Common.h"
10#include "DBCEnums.h"
11#include "Define.h"
12#include "Path.h"
13#include "Util.h"
14
15#include <map>
16#include <set>
17#include <unordered_map>
18#include <vector>
19
20// Structures using to access raw DBC data and required packing to portability
21
22// 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
23#if defined(__GNUC__)
24#pragma pack(1)
25#else
26#pragma pack(push, 1)
27#endif
28
30{
31 uint32 ID; // 0
32 int32 requiredFaction; // 1 -1=all, 0=horde, 1=alliance
33 int32 mapID; // 2 -1=none
34 //uint32 parentAchievement; // 3 its Achievement parent (can`t start while parent uncomplete, use its Criteria if don`t have own, use its progress on begin)
35 char* name; // 4
36 //char* description; // 5
38 uint32 points; // 7 reward points
39 //uint32 OrderInCategory; // 8
41 //uint32 icon; // 10 icon (from SpellIcon.dbc)
42 //char* reward; // 11
43 uint32 count; // 12 - need this count of completed criterias (own or referenced achievement criterias)
44 uint32 refAchievement; // 13 - referenced achievement (counting of all completed criterias)
45 uint32 criteriaTreeID; // 14 - Pandaria
46};
47
48/*
49struct AchievementCategoryEntry
50{
51 uint32 ID; // 0
52 uint32 parentCategory; // 1 -1 for main category
53 //char* name; // 2
54 //uint32 sortOrder; // 3
55};
56
57
58struct AchievementCriteriaEntry
59{
60 uint32 ID; // 0
61 uint32 achievement; // 1
62 uint32 type; // 2
63 union
64 {
65 // ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE = 0
67 struct
68 {
69 uint32 creatureID; // 3
70 uint32 creatureCount; // 4
71 } kill_creature;
72
73 // ACHIEVEMENT_CRITERIA_TYPE_WIN_BG = 1
74 struct
75 {
76 uint32 bgMapID; // 3
77 uint32 winCount; // 4
78 } win_bg;
79 // ACHIEVEMENT_CRITERIA_TYPE_FIND_ARTIFACT = 3
80 struct
81 {
82 uint32 unused; // 3
83 uint32 count; // 4
84 } find_artifact;
85
86 // ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL = 5
87 // ACHIEVEMENT_CRITERIA_TYPE_REACH_GUILD_LEVEL = 125
88 struct
89 {
90 uint32 unused; // 3
91 uint32 level; // 4
92 } reach_level;
93
94 // ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL = 7
95 struct
96 {
97 uint32 skillID; // 3
98 uint32 skillLevel; // 4
99 } reach_skill_level;
100
101 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8
102 struct
103 {
104 uint32 linkedAchievement; // 3
105 } complete_achievement;
106
107 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT = 9
108 struct
109 {
110 uint32 unused; // 3
111 uint32 totalQuestCount; // 4
112 } complete_quest_count;
113
114 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST_DAILY = 10
115 struct
116 {
117 uint32 unused; // 3
118 uint32 numberOfDays; // 4
119 } complete_daily_quest_daily;
120
121 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11
122 struct
123 {
124 uint32 zoneID; // 3
125 uint32 questCount; // 4
126 } complete_quests_in_zone;
127
128 // ACHIEVEMENT_CRITERIA_TYPE_CURRENCY = 12
129 struct
130 {
131 uint32 currency;
132 uint32 count;
133 } currencyGain;
134
135 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST = 14
136 struct
137 {
138 uint32 unused; // 3
139 uint32 questCount; // 4
140 } complete_daily_quest;
141
142 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15
143 struct
144 {
145 uint32 mapID; // 3
146 } complete_battleground;
147
148 // ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP = 16
149 struct
150 {
151 uint32 mapID; // 3
152 } death_at_map;
153
154 // ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON = 18
155 struct
156 {
157 uint32 manLimit; // 3
158 } death_in_dungeon;
159
160 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID = 19
161 struct
162 {
163 uint32 groupSize; // 3 can be 5, 10 or 25
164 } complete_raid;
165
166 // ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE = 20
167 struct
168 {
169 uint32 creatureEntry; // 3
170 } killed_by_creature;
171
172 // ACHIEVEMENT_CRITERIA_TYPE_FALL_WITHOUT_DYING = 24
173 struct
174 {
175 uint32 unused; // 3
176 uint32 fallHeight; // 4
177 } fall_without_dying;
178
179 // ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM = 26
180 struct
181 {
182 uint32 type; // 3, see enum EnviromentalDamage
183 } death_from;
184
185 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST = 27
186 struct
187 {
188 uint32 questID; // 3
189 uint32 questCount; // 4
190 } complete_quest;
191
192 // ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET = 28
193 // ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2 = 69
194 struct
195 {
196 uint32 spellID; // 3
197 uint32 spellCount; // 4
198 } be_spell_target;
199
200 // ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL = 29
201 // ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110
202 struct
203 {
204 uint32 spellID; // 3
205 uint32 castCount; // 4
206 } cast_spell;
207
208 // ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE = 30
209 struct
210 {
211 uint32 objectiveId; // 3
212 uint32 completeCount; // 4
213 } bg_objective;
214
215 // ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
216 struct
217 {
218 uint32 areaID; // 3 Reference to AreaTable.dbc
219 uint32 killCount; // 4
220 } honorable_kill_at_area;
221
222 // ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA = 32
223 struct
224 {
225 uint32 mapID; // 3 Reference to Map.dbc
226 uint32 count; // 4 Number of times that the arena must be won.
227 } win_arena;
228
229 // ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33
230 struct
231 {
232 uint32 mapID; // 3 Reference to Map.dbc
233 } play_arena;
234
235 // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL = 34
236 struct
237 {
238 uint32 spellID; // 3 Reference to Map.dbc
239 } learn_spell;
240
241 // ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36
242 struct
243 {
244 uint32 itemID; // 3
245 uint32 itemCount; // 4
246 } own_item;
247
248 // ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37
249 struct
250 {
251 uint32 unused; // 3
252 uint32 count; // 4
253 } win_rated_arena;
254
255 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38
256 struct
257 {
258 uint32 teamtype; // 3 {2, 3, 5}
259 } highest_team_rating;
260
261 // ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING = 39
262 struct
263 {
264 uint32 teamtype; // 3 {2, 3, 5}
265 uint32 teamrating; // 4
266 } reach_team_rating;
267
268 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39
269 struct
270 {
271 uint32 teamtype; // 3 {2, 3, 5}
272 uint32 PersonalRating; // 4
273 } highest_personal_rating;
274
275 // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40
276 struct
277 {
278 uint32 skillID; // 3
279 uint32 skillLevel; // 4 apprentice=1, journeyman=2, expert=3, artisan=4, master=5, grand master=6
280 } learn_skill_level;
281
282 // ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41
283 struct
284 {
285 uint32 itemID; // 3
286 uint32 itemCount; // 4
287 } use_item;
288
289 // ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM = 42
290 struct
291 {
292 uint32 itemID; // 3
293 uint32 itemCount; // 4
294 } loot_item;
295
296 // ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA = 43
297 struct
298 {
300 uint32 areaReference; // 3
301 } explore_area;
302
303 // ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK = 44
304 struct
305 {
307 uint32 rank; // 3
308 } own_rank;
309
310 // ACHIEVEMENT_CRITERIA_TYPE_BUY_BANK_SLOT = 45
311 struct
312 {
313 uint32 unused; // 3
314 uint32 numberOfSlots; // 4
315 } buy_bank_slot;
316
317 // ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION = 46
318 struct
319 {
320 uint32 factionID; // 3
321 uint32 reputationAmount; // 4 Total reputation amount, so 42000 = exalted
322 } gain_reputation;
323
324 // ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION= 47
325 struct
326 {
327 uint32 unused; // 3
328 uint32 numberOfExaltedFactions; // 4
329 } gain_exalted_reputation;
330
331 // ACHIEVEMENT_CRITERIA_TYPE_VISIT_BARBER_SHOP = 48
332 struct
333 {
334 uint32 unused; // 3
335 uint32 numberOfVisits; // 4
336 } visit_barber;
337
338 // ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49
340 struct
341 {
342 uint32 itemSlot; // 3
343 uint32 count; // 4
344 } equip_epic_item;
345
346 // ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50
347 struct
348 {
349 uint32 rollValue; // 3
350 uint32 count; // 4
351 } roll_need_on_loot;
352 // ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51
353 struct
354 {
355 uint32 rollValue; // 3
356 uint32 count; // 4
357 } roll_greed_on_loot;
358
359 // ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS = 52
360 struct
361 {
362 uint32 classID; // 3
363 uint32 count; // 4
364 } hk_class;
365
366 // ACHIEVEMENT_CRITERIA_TYPE_HK_RACE = 53
367 struct
368 {
369 uint32 raceID; // 3
370 uint32 count; // 4
371 } hk_race;
372
373 // ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54
375 struct
376 {
377 uint32 emoteID; // 3 enum TextEmotes
378 uint32 count; // 4 count of emotes, always required special target or requirements
379 } do_emote;
380 // ACHIEVEMENT_CRITERIA_TYPE_DAMAGE_DONE = 13
381 // ACHIEVEMENT_CRITERIA_TYPE_HEALING_DONE = 55
382 // ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56
383 struct
384 {
385 uint32 unused; // 3
386 uint32 count; // 4
387 } healing_done;
388
389 // ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS = 56
390 struct
391 {
392 uint32 unused;
393 uint32 killCount;
394 } get_killing_blow;
395
396 // ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57
397 struct
398 {
399 uint32 itemID; // 3
400 uint32 count; // 4
401 } equip_item;
402
403 // ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_QUEST_REWARD= 62
404 struct
405 {
406 uint32 unused; // 3
407 uint32 goldInCopper; // 4
408 } quest_reward_money;
409
410 // ACHIEVEMENT_CRITERIA_TYPE_LOOT_MONEY = 67
411 struct
412 {
413 uint32 unused; // 3
414 uint32 goldInCopper; // 4
415 } loot_money;
416
417 // ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT = 68
418 struct
419 {
420 uint32 goEntry; // 3
421 uint32 useCount; // 4
422 } use_gameobject;
423
424 // ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL = 70
426 struct
427 {
428 uint32 unused; // 3
429 uint32 killCount; // 4
430 } special_pvp_kill;
431
432 // ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72
433 struct
434 {
435 uint32 goEntry; // 3
436 uint32 lootCount; // 4
437 } fish_in_gameobject;
438
439 // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75
440 struct
441 {
442 uint32 skillLine; // 3
443 uint32 spellCount; // 4
444 } learn_skillline_spell;
445
446 // ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL = 76
447 struct
448 {
449 uint32 unused; // 3
450 uint32 duelCount; // 4
451 } win_duel;
452
453 // ACHIEVEMENT_CRITERIA_TYPE_COLLECT_BATTLE_PET = 96
454 struct
455 {
456 uint32 creatureID; // 3
457 } collect_battle_pet;
458
459 // ACHIEVEMENT_CRITERIA_TYPE_COLLECT_BATTLE_PET_SPECIES = 155
460 struct
461 {
462 uint32 speciesID; // 3
463 } collect_battle_pet_species;
464
465 // ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET_COUNT = 156
466 struct
467 {
468 uint32 count; // 3
469 } own_battle_pet_count;
470
471 // ACHIEVEMENT_CRITERIA_TYPE_REACH_BATTLE_PET_LEVEL = 160
472 struct
473 {
474 uint32 level; // 3
475 } reach_battle_pet_level;
476
477 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_STAT = 97
478 struct
479 {
480 uint32 statType; // 3 4=spirit, 3=int, 2=stamina, 1=agi, 0=strength
481 } highest_stat;
482
483 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER = 98
484 struct
485 {
486 uint32 spellSchool; // 3
487 } highest_spellpower;
488
489 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_RATING = 100
490 struct
491 {
492 uint32 ratingType; // 3
493 } highest_rating;
494
495 // ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109
496 struct
497 {
498 uint32 lootType; // 3 3=fishing, 2=pickpocket, 4=disentchant
499 uint32 lootTypeCount; // 4
500 } loot_type;
501
502 // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE = 112
503 struct
504 {
505 uint32 skillLine; // 3
506 uint32 spellCount; // 4
507 } learn_skill_line;
508
509 // ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113
510 struct
511 {
512 uint32 unused; // 3
513 uint32 killCount; // 4
514 } honorable_kill;
515
516 // ACHIEVEMENT_CRITERIA_TYPE_114_SUMMON = 114
517 struct
518 {
519 uint32 unused; // 3
520 uint32 unk; // 4 unk is 1 true/false?
521 } summons;
522 // ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINT = 115
523 // ACHIEVEMENT_CRITERIA_TYPE_118_UNK = 118
524 // ACHIEVEMENT_CRITERIA_TYPE_LFG = 119
525 struct
526 {
527 uint32 unused;
528 uint32 dungeonsComplete;
529 } use_lfg;
530 // ACHIEVEMENT_CRITERIA_TYPE_120 = 120
531 // ACHIEVEMENT_CRITERIA_TYPE_121 = 121
532 // ACHIEVEMENT_CRITERIA_TYPE_122 = 122
533 // ACHIEVEMENT_CRITERIA_TYPE_123 = 123
534 // ACHIEVEMENT_CRITERIA_TYPE_GUILD_REPAIR_SPEND = 124
535 struct
536 {
537 uint32 unused; // 3
538 uint32 goldInCopper; // 4
539 } guild_repair_money;
540
541 // ACHIEVEMENT_CRITERIA_TYPE_GUILD_LEVEL = 125
542 struct
543 {
544 uint32 unused; // 3
545 uint32 level; // 4
546 } guild_level;
547 // ACHIEVEMENT_CRITERIA_TYPE_GUILD_CRAFTING = 126
548 struct
549 {
550 uint32 unused; // 3
551 uint32 count; // 4
552 } guild_craft;
553 // ACHIEVEMENT_CRITERIA_TYPE_GUILD_FISHING = 127
554 struct
555 {
556 uint32 unused; // 3
557 uint32 count; // 4
558 } guild_fishing;
559 // ACHIEVEMENT_CRITERIA_TYPE_GUILD_BANK_TAB_BUY = 128
560 struct
561 {
562 uint32 unused; // 3
563 uint32 tab; // 4
564 } guild_tab_bought;
565 // ACHIEVEMENT_CRITERIA_TYPE_EARN_GUILD_ACH_POINTS = 129
566 struct
567 {
568 uint32 unused; // 3
569 uint32 count; // 4
570 } guild_ach_pts;
571 // ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_BG = 130
572 struct
573 {
574 uint32 unused; // 3
575 uint32 count; // 4
576 } rated_bg_won;
577 // ACHIEVEMENT_CRITERIA_TYPE_EARN_RATED_BG_RATING = 132
578 struct
579 {
580 uint32 unused; // 3
581 uint32 rating; // 4
582 } rated_bg_rating;
583
584 // ACHIEVEMENT_CRITERIA_TYPE_CREATE_GUILD_LOGO = 133
585 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST_COUNT2 = 134
586 struct
587 {
588 uint32 unused; // 3
589 uint32 totalQuestCount; // 4
590 } complete_quest_count2;
591
592 // ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL2 = 135
593 struct
594 {
595 uint32 unused; // 3
596 uint32 killCount; // 4
597 } honorable_kill2;
598
599 // ACHIEVEMENT_CRITERIA_TYPE_EARN_CRITTER_KILLS = 136
600 struct
601 {
602 uint32 unused; // 3
603 uint32 killCount; // 4
604 } critter_kills;
605 // ACHIEVEMENT_CRITERIA_TYPE_137 = 137
606 // ACHIEVEMENT_CRITERIA_TYPE_GUILD_CHALLENGES = 138
607 struct
608 {
609 uint32 type; // 3
610 uint32 count; // 4
611 } guild_challenges;
612 // ACHIEVEMENT_CRITERIA_TYPE_GUILD_CHALLENGES2 = 139
613 struct
614 {
615 uint32 unused; // 3
616 uint32 count; // 4
617 } guild_challenges2;
618 // ACHIEVEMENT_CRITERIA_TYPE_140_150_PLACEHOLDER = 140-150
619 struct
620 {
621 uint32 field3; // 3 main requirement
622 uint32 count; // 4 main requirement count
623 } raw;
624 };
625
626 //uint32 unk; // 5
627
628 struct
629 {
630 uint32 additionalRequirement_type;
631 uint32 additionalRequirement_value;
632 } additionalRequirements[MAX_CRITERIA_REQUIREMENTS];
633
634 char* name; // 10 m_description_lang
635 uint32 completionFlag; // 11 m_flags
636 uint32 timedCriteriaStartType; // 12 m_timer_start_event Only appears with timed achievements, seems to be the type of starting a timed Achievement, only type 1 and some of type 6 need manual starting
637 // 1: ByEventId(?) (serverside IDs), 2: ByQuestId, 5: ByCastSpellId(?)
638 // 6: BySpellIdTarget(some of these are unknown spells, some not, some maybe spells)
639 // 7: ByKillNpcId, 9: ByUseItemId
640 uint32 timedCriteriaMiscId; // 13 m_timer_asset_id Alway appears with timed events, used internally to start the achievement, store
641 uint32 timeLimit; // 14 m_timer_time time limit in seconds
642 uint32 showOrder; // 15 m_ui_order also used in achievement shift-links as index in state bitmask
643 //uint32 unk1; // 16 only one value, still unknown
644 //uint32 unk2; // 17 all zeros
645 uint32 additionalConditionType[MAX_ADDITIONAL_CRITERIA_CONDITIONS]; // 18-20
646 uint32 additionalConditionValue[MAX_ADDITIONAL_CRITERIA_CONDITIONS - 1]; // 21-22 WTF one column was cut off here in 4.3.4
647};
648*/
650{
653 uint32 m_ParentAreaID; // 2 if 0 then it's zone, else it's zone id of this area
654 uint32 m_AreaBit; // 3, main index
656 //uint32 m_flags2; // 6, Pandaria
657 //uint32 m_SoundProviderPreferences; // 7,
658 //uint32 m_SoundProviderPreferencesUnderwater; // 8,
659 //uint32 m_AmbienceID; // 9,
660 //uint32 m_ZoneMusic; // 10,
661 //char* m_ZoneName; // 11, without whitespaces
662 //uint32 m_IntroSound; // 12
664 char* m_AreaName; // 14
666 uint32 m_LiquidType[4]; // 16-19 liquid override by type
667 float m_MinElevation; // 20,
668 //float m_AmbientMultiplier; // 21 client only?
669 //uint32 m_LightId; // 22
670 //uint32 m_MountFlags; // 23 4.0.0 - Mounting related
671 //uint32 m_UwIntroSound; // 24 4.0.0
672 //uint32 m_UwZoneMusic; // 25 4.0.0
673 //uint32 m_UwAmbience; // 26 4.0.0
674 //uint32 m_WorldPvPID; // 27 Wintergrasp, TolBarad
675 //uint32 m_PvPCombatWorldStateID // 28 worldstateid
676 //uint32 m_WildPetLevelMin; // 28, Pandaria
677 //uint32 m_WildPetLevelmax; // 29, Pandaria
678
679 // helpers
680 bool IsSanctuary() const
681 {
682 if (m_ContinentID == 609)
683 return true;
684 return (m_flags & AREA_FLAG_SANCTUARY);
685 }
686};
687
688#define MAX_GROUP_AREA_IDS 6
689
691{
694 uint32 nextGroup; // 7 index of next group
695};
696
697/*
698struct AreaPOIEntry
699{
700 uint32 id; // 0
701 uint32 icon[11]; // 1-11
702 float x; // 12
703 float y; // 13
704 uint32 mapId; // 14
705 // uint32 val1; // 15
706 uint32 zoneId; // 16
707 // char* name; // 17 - name
708 // char* name2; // 18 - name2
709 uint32 worldState; // 19
710 // uint32 val2; // 20
711 // uint32 unk; // 21
712 // uint32 unk2; // 21 - Pandaria
713};
714*/
716{
717 uint32 id; // 0 m_ID
718 uint32 mapid; // 1 m_ContinentID
719 float x; // 2 m_x
720 float y; // 3 m_y
721 float z; // 4 m_z
722 //uint32 // 5
723 //uint32 // 6
724 //uint32 // 7
725 float radius; // 8 m_radius
726 float box_x; // 9 m_box_length
727 float box_y; // 10 m_box_width
728 float box_z; // 11 m_box_heigh
729 float box_orientation; // 12 m_box_yaw
730 //uint32 unk1; // 13 - Pandaria
731 //uint32 unk2; // 14 - Pandaria
732 //uint32 unk3; // 15 - Pandaria
733};
734
736{
737 //uint32 InventoryType; // 0
738 float Value[5]; // 1-5 multiplier for armor types (cloth...plate, no armor?)
739};
740
742{
743 uint32 houseId; // 0 index
744 uint32 faction; // 1 id of faction.dbc for player factions associated with city
745 uint32 depositPercent; // 2 1/3 from real
747 //char* name; // 4
748};
749
751{
752 //uint32 ID;
754};
755
757{
759 // uint32 NameMD5[4];
760 // uint32 VersionMD5[4];
761 // uint32 Timestamp;
762 // uint32 State;
763};
764
766{
767 //uint32 Id; // 0
768 uint32 type; // 1 value 0 -> hair, value 2 -> facialhair
769 //char* name; // 2 m_DisplayName_lang
770 //uint32 unk_name; // 3 m_Description_lang
771 //float CostMultiplier; // 4 m_Cost_Modifier
772 uint32 race; // 5 m_race
773 uint32 gender; // 6 m_sex
774 uint32 hair_id; // 7 m_data (real ID to hair/facial hair)
775};
776
778{
779 uint32 id; // 0
780 int32 mapid[16]; // 1-16 mapid
781 uint32 type; // 17 (3 - BG, 4 - arena)
782 //char* unkName; // 18
783 char* name; // 19
784 uint32 maxGroupSize; // 20 maxGroupSize, used for checking if queue as group
786 //uint32 minLevel; // 22, min level (sync with PvPDifficulty.dbc content)
787 //uint32 maxLevel; // 23, max level (sync with PvPDifficulty.dbc content)
788 //uint32 maxGroupSizeRated; // 24 4.0.1
789 //uint32 unk; // 25 - 4.0.6.13596
790 //uint32 maxPlayers; // 26 4.0.1
791 //uint32 unk1; // 27 4.0.3, value 2 for Rated Battlegrounds
792 //uint32 unk2 // 28 - Pandaria
793 //char* strType; // 29 - Pandaria
794};
795
796#define MAX_OUTFIT_ITEMS 24
797
799{
800 //uint32 Id; // 0
804 //uint8 Unused; // 4
806 //int32 ItemDisplayId[MAX_OUTFIT_ITEMS]; // 29-52 not required at server side
807 //int32 ItemInventorySlot[MAX_OUTFIT_ITEMS]; // 53-76 not required at server side
808 //uint32 PetDisplayId; // 77 Pet Model ID for starting pet
809 //uint32 PetFamilyEntry; // 78 Pet Family Entry for starting pet
810};
811
813{
814 //uint32 ID; // 0, title ids, for example in Quest::GetCharTitleId()
815 //uint32 unk1; // 1 flags?
816 char* name; // 2 m_name_lang
817 //char* name2; // 3 m_name1_lang
818 uint32 bit_index; // 4 m_mask_ID used in PLAYER_FIELD_PLAYER_TITLE and 1<<index in PLAYER__FIELD_KNOWN_TITLES
819 //uint32 // 5
820};
821
823{
826 //uint32 // 2 m_factionGroup
827 char* pattern; // 3 m_name_lang
828 //char* name; // 4 m_shortcut_lang
829};
830
832{
833 //uint32 ClassID; // 0
834 uint32 powerType; // 1 m_DisplayPower
835 // 2 m_petNameToken
836 char* name; // 3 m_name_lang
837 //char* nameFemale; // 4 m_name_female_lang
838 //char* nameNeutralGender; // 5 m_name_male_lang
839 //char* capitalizedName // 6, m_filename
840 uint32 spellfamily; // 7 m_spellClassSet
841 //uint32 flags2; // 8 m_flags (0x08 HasRelicSlot)
842 uint32 CinematicSequence; // 9 m_cinematicSequenceID
843 uint32 APPerStrenth; // 10 Attack Power bonus per point of strength
844 uint32 APPerAgility; // 11 Attack Power bonus per point of agility
845 uint32 RAPPerAgility; // 12 Ranged Attack Power bonus per point of agility
846 //uint32 unk1 // 13 Pandaria
847 //uint32 unk1 // 14 Pandaria
848 //uint32 unk1 // 15 Pandaria
849 //uint32 unk1 // 16 Pandaria
850 //uint32 unk1 // 17 Pandaria
851};
852
854{
855 //uint32 RaceID; // 0
856 //uint32 Flags; // 1 0x4 canMount, 0x8 hasBald, 0x10 bindStartArea 0x80 ForceHDModel 0x400 ReputationBonus 0x4000 NoStartingWeapon
857 uint32 FactionID; // 2 facton template id
858 //uin32 ExplorationSoundID; // 3
861 //char* ClientPrefix; // 6
862 //uint32 BaseLanguage; // 7 (42-Neutral 7-Alliance 1-Horde)
863 //uint32 CreatureType; // 8 (All 7)
864 //uint32 ResSickSpell; // 9 (All 15007)
865 //uint32 SplashSoundID; // 10 (All 1096)
866 //char* ClientFileString; // 11
867 uint32 CinematicSequence; // 12 id from CinematicSequences.dbc
868 uint32 TeamID; // 13 (0 alliance, 1 horde, 2 neutral)
869 char* name; // 14 m_name_lang used for DBC language detection/selection
870 //char* nameFemale; // 15 ""
871 //char* nameNeutralGender; // 16 ""
872 //uint32 m_facialHairCustomization[2] // 17-18
873 //uint32 m_hairCustomization // 19
874 //uint32 m_enemyRace; // 20 m_enemyRace
875 //uint32 UnalteredVisualRaceID; // 21 (23 for worgens = Gilnean)
876 //uint32 UaMaleCreatureSoundDataID; // 22 (Gilnean 3133)
877 //uint32 UaFemaleCreatureSoundDataID; // 23 (Gilnean 3134)
878 //uint32 CharComponentTextureLayout; // 24 (All 1, Pandaren 2)
879 //uint32 DefaultClassID // 25
880 //uint32 CreateScreenFileDataID; // 26
881 //uint32 SelectScreenFileDataID; // 27
882 //float MaleCustomizeOffset[3]; // 28 - 30
883 //float FemaleCustomizeOffset[3]; // 31 - 33
884 //uint32 NeutralRaceID; // 34
885 //uint32 LowResScreenFileDataID; // 35
886};
887
889{
890 //uint32 entry; // 0
893};
894
896{
897 uint32 Id; // 0
898 //char* unkName; // 1
901 // uint32 unk // 4 - prolly MasterySpellId[1] - always 0
904 //uint32 RoleMask; // 7
905 // uint32 iconId // 8
906 // uint32 unk1 // 9
907 // uint32 unk2 // 10
908 // char* name // 11
909 // char* definition // 12
910 // char* unkName2 // 13
911};
912
914{
915 uint32 id; // 0 index
916 char* filename; // 1
917 uint32 soundid; // 2 in SoundEntries.dbc or 0
918 float EndPosX; // 3
919 float EndPosY; // 4
920 float EndPosZ; // 5
921 float GlobalRotation; // 6
922};
923
925{
926 uint32 Id; // 0 index
927 //uint32 unk1; // 1 always 0
928 uint32 cinematicCamera; // 2 id in CinematicCamera.dbc
929};
930
932{
933 //uint32 Displayid; // 0 m_ID
934 uint32 ModelId; // 1 m_modelID
935 // 2 m_soundID
936 // 3 m_extendedDisplayInfoID
937 float scale; // 4 m_creatureModelScale
938 // 5 m_creatureModelAlpha
939 // 6-8 m_textureVariation[3]
940 // 9 m_portraitTextureName
941 // 10 m_sizeClass
942 // 11 m_bloodID
943 // 12 m_NPCSoundID
944 // 13 m_particleColorID
945 // 14 m_creatureGeosetData
946 // 15 m_objectEffectPackageID
947 // 16
948 // 17 - Panadria
949 // 18 - Pandaria
950};
951
953{
954 uint32 ID; // 0 m_ID
955 float minScale; // 1 m_minScale
956 uint32 minScaleLevel; // 2 m_minScaleLevel
957 float maxScale; // 3 m_maxScale
958 uint32 maxScaleLevel; // 4 m_maxScaleLevel
959 uint32 skillLine[2]; // 5-6 m_skillLine
960 uint32 petFoodMask; // 7 m_petFoodMask
961 int32 petTalentType; // 8 m_petTalentType
962 // 9 m_categoryEnumID
963 char* Name; // 10 m_name_lang
964 // 11 m_iconFile
965};
966
968{
969 //uint32 Id;
970 //uint32 Flags;
971 //char* ModelPath
972 //uint32 Unk1;
973 //float Scale; // Used in calculation of unit collision data
974 //int32 Unk2
975 //int32 Unk3
976 //uint32 Unk4
977 //uint32 Unk5
978 //float Unk6
979 //uint32 Unk7
980 //float Unk8
981 //uint32 Unk9
982 //uint32 Unk10
983 //float CollisionWidth;
985 float MountHeight; // Used in calculation of unit collision data when mounted
986 //float Unks[11]
987 //uint32 unk11
988 //uint32 unk12
989};
990
991#define MAX_CREATURE_SPELL_DATA_SLOT 4
992
994{
995 //uint32 ID; // 0 m_ID
997 //uint32 availability[MAX_CREATURE_SPELL_DATA_SLOT]; // 4-7 m_availability[4]
998};
999
1001{
1002 uint32 ID; // 0 m_ID
1003 //char* Name; // 1 m_name_lang
1004 //uint32 no_expirience; // 2 m_flags no exp? critters, non-combat pets, gas cloud.
1005};
1006
1007/* not used
1008struct CurrencyCategoryEntry
1009{
1010 uint32 ID; // 0
1011 uint32 Unk1; // 1 0 for known categories and 3 for unknown one (3.0.9)
1012 char* Name[16]; // 2-17 name
1013 // // 18 string flags
1014};
1015*/
1016
1018{
1021 union
1022 {
1023 // ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE = 0
1025 struct
1026 {
1029
1030 // ACHIEVEMENT_CRITERIA_TYPE_WIN_BG = 1
1031 struct
1032 {
1035
1036 // ACHIEVEMENT_CRITERIA_TYPE_REACH_SKILL_LEVEL = 7
1037 struct
1038 {
1041
1042 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT = 8
1043 struct
1044 {
1047
1048 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUESTS_IN_ZONE = 11
1049 struct
1050 {
1053
1054 // ACHIEVEMENT_CRITERIA_TYPE_CURRENCY = 12
1055 struct
1056 {
1059
1060 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND = 15
1061 struct
1062 {
1065
1066 // ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP = 16
1067 struct
1068 {
1069 uint32 mapID; // 2
1071
1072 // ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON = 18
1073 struct
1074 {
1077
1078 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID = 19
1079 struct
1080 {
1081 uint32 groupSize; // 2 can be 5, 10 or 25
1083
1084 // ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE = 20
1085 struct
1086 {
1089
1090 // ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM = 26
1091 struct
1092 {
1093 uint32 type; // 2, see enum EnviromentalDamage
1095
1096 // ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST = 27
1097 struct
1098 {
1101
1102 // ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET = 28
1103 // ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2 = 69
1104 struct
1105 {
1108
1109 // ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL = 29
1110 // ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110
1111 struct
1112 {
1113 uint32 spellID; // 2
1115
1116 // ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE
1117 struct
1118 {
1121
1122 // ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA = 31
1123 struct
1124 {
1125 uint32 areaID; // 2 Reference to AreaTable.dbc
1127
1128 // ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA = 32
1129 struct
1130 {
1131 uint32 mapID; // 2 Reference to Map.dbc
1133
1134 // ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA = 33
1135 struct
1136 {
1137 uint32 mapID; // 2 Reference to Map.dbc
1139
1140 // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL = 34
1141 struct
1142 {
1143 uint32 spellID; // 2 Reference to Map.dbc
1145
1146 // ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM = 36
1147 struct
1148 {
1151
1152 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38
1153 struct
1154 {
1155 uint32 teamtype; // 2 {2, 3, 5}
1157
1158 // ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING = 39
1159 struct
1160 {
1161 uint32 teamtype; // 2 {2, 3, 5}
1163
1164 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39
1165 struct
1166 {
1167 uint32 teamtype; // 2 {2, 3, 5}
1169
1170 // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40
1171 struct
1172 {
1173 uint32 skillID; // 2
1175
1176 // ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41
1177 struct
1178 {
1179 uint32 itemID; // 2
1181
1182 // ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM = 42
1183 struct
1184 {
1185 uint32 itemID; // 2
1187
1188 // ACHIEVEMENT_CRITERIA_TYPE_EXPLORE_AREA = 43
1189 struct
1190 {
1194
1195 // ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK = 44
1196 struct
1197 {
1201
1202 // ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION = 46
1203 struct
1204 {
1207
1208 // ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM = 49
1210 struct
1211 {
1214
1215 // ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT = 50
1216 struct
1217 {
1220 // ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT = 51
1221 struct
1222 {
1223 uint32 rollValue; // 2
1225
1226 // ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS = 52
1227 struct
1228 {
1231
1232 // ACHIEVEMENT_CRITERIA_TYPE_HK_RACE = 53
1233 struct
1234 {
1237
1238 // ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE = 54
1240 struct
1241 {
1242 uint32 emoteID; // 2 enum TextEmotes
1244
1245 // ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM = 57
1246 struct
1247 {
1248 uint32 itemID; // 2
1250
1251 // ACHIEVEMENT_CRITERIA_TYPE_USE_GAMEOBJECT = 68
1252 struct
1253 {
1256
1257 // ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT = 72
1258 struct
1259 {
1260 uint32 goEntry; // 2
1262
1263 // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS = 75
1264 struct
1265 {
1268
1269 // ACHIEVEMENT_CRITERIA_TYPE_COLLECT_BATTLE_PET = 96
1270 struct
1271 {
1272 uint32 creatureID; // 2
1274
1275 // ACHIEVEMENT_CRITERIA_TYPE_COLLECT_BATTLE_PET_SPECIES = 155
1276 struct
1277 {
1280
1281 // ACHIEVEMENT_CRITERIA_TYPE_OWN_BATTLE_PET_COUNT = 156
1282 struct
1283 {
1286
1287 // ACHIEVEMENT_CRITERIA_TYPE_REACH_BATTLE_PET_LEVEL = 160
1288 struct
1289 {
1292
1293 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_STAT = 97
1294 struct
1295 {
1296 uint32 statType; // 2 4=spirit, 3=int, 2=stamina, 1=agi, 0=strength
1298
1299 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER = 98
1300 struct
1301 {
1304
1305 // ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_RATING = 100
1306 struct
1307 {
1310
1311 // ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109
1312 struct
1313 {
1314 uint32 lootType; // 2 3=fishing, 2=pickpocket, 4=disentchant
1316
1317 // ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE = 112
1318 struct
1319 {
1320 uint32 skillLine; // 2
1322
1323 struct
1324 {
1327 };
1328
1338};
1339
1341{
1345 //uint32 unk; // 3
1346 //uint32 op; // 4
1348 //uint32 treeFlags; // 6
1349 //char* name; // 7
1350};
1351
1353{
1354 uint32 ID; // 0 not used
1355 uint32 Category; // 1 may be category
1356 //char* name; // 2
1357 //char* iconName; // 3
1358 //uint32 unk4; // 4 all 0
1359 //uint32 HasSubstitution; // 5 archaeology-related (?)
1360 //uint32 SubstitutionId; // 6
1364 //uint32 unk5 // 10 - Pandaria
1365 //char* description; // 11
1366};
1367
1369{
1370 //uint32 Id;
1372 //uint32 DamagedUnk1;
1373 //uint32 DamagedUnk2;
1374 //uint32 DamagedUnk3;
1376 //uint32 DestroyedUnk1;
1377 //uint32 DestroyedUnk2;
1378 //uint32 DestroyedUnk3;
1379 //uint32 DestroyedUnk4;
1381 //uint32 RebuildingUnk1;
1382 //uint32 RebuildingUnk2;
1383 //uint32 RebuildingUnk3;
1384 //uint32 RebuildingUnk4;
1385 //uint32 SmokeDisplayId;
1386 //uint32 SmokeUnk1;
1387 //uint32 SmokeUnk2;
1388 //uint32 SmokeUnk3;
1389 //uint32 SmokeUnk4;
1390 //uint32 UnkDisplayid;
1391 //uint32 Unk6;
1392 //uint32 Unk7;
1393 //uint32 Unk8;
1394};
1395
1397{
1401 //uint32
1402 //uint32
1403 //uint32 SpawnMode;
1405 //
1406 //
1407 //
1408 //
1409 //
1410};
1411/*
1412enum diffflag
1413{
1414 DIFFICULTY_FLAG_HEROIC = 0x01,
1415 DIFFICULTY_FLAG_DEFAULT = 0x02,
1416 DIFFICULTY_FLAG_CAN_SELECT = 0x04, // Player can select this difficulty in dropdown menu
1417 DIFFICULTY_FLAG_CHALLENGE_MODE = 0x08,
1418};
1419*/
1421{
1422 //uint32 id; // 0 unique id
1423 uint32 mapId; // 1 map id
1424 int32 difficulty; // 2 instance mode
1425 //uint32 unk0; // 3
1426 uint32 encounterIndex; // 4 encounter index for creating completed mask
1427 char* encounterName; // 5 encounter name
1428 //uint32 nameFlags; // 6
1429 //uint32 unk1; // 7
1430 //uint32 unk2; // 8 - Pandaria
1431};
1432
1434{
1435 //uint32 Itemlvl; // 0
1436 uint32 multiplier[29]; // 1-29
1437};
1438
1440{
1441 //uint32 Id; // 0
1442 float quality_mod; // 1
1443};
1444
1446{
1448 //char* Name; // 1, internal name
1449 //uint32 AnimationId; // 2, ref to animationData
1450 //uint32 Flags; // 3, bitmask, may be unit_flags
1451 //uint32 EmoteType; // 4, Can be 0, 1 or 2 (determine how emote are shown)
1452 //uint32 UnitStandState; // 5, uncomfirmed, may be enum UnitStandStateType
1453 //uint32 SoundId; // 6, ref to soundEntries
1454 //uint32 unk7 // 7
1455};
1456
1458{
1459 //uint32 Id;
1461};
1462
1464{
1465 uint32 ID; // 0 m_ID
1466 int32 reputationListID; // 1 m_reputationIndex
1467 uint32 BaseRepRaceMask[4]; // 2-5 m_reputationRaceMask
1468 uint32 BaseRepClassMask[4]; // 6-9 m_reputationClassMask
1469 int32 BaseRepValue[4]; // 10-13 m_reputationBase
1470 uint32 ReputationFlags[4]; // 14-17 m_reputationFlags
1471 uint32 team; // 18 m_parentFactionID
1472 float spilloverRateIn; // 19 Faction gains incoming rep * spilloverRateIn
1473 float spilloverRateOut; // 20 Faction outputs rep * spilloverRateOut as spillover reputation
1474 uint32 spilloverMaxRankIn; // 21 The highest rank the faction will profit from incoming spillover
1475 //uint32 spilloverRank_unk; // 22 It does not seem to be the max standing at which a faction outputs spillover ...so no idea
1476 char* name; // 23 m_name_lang
1477 //char* description; // 24 m_description_lang
1478 //uint32 GroupExpansion; // 25 m_factionGroupExpansion
1479 //uint unk1 // 26 - Pandaria
1480 //uint unk2 // 27 - Pandaria
1481
1482 // helpers
1484 {
1485 return reputationListID >= 0;
1486 }
1487};
1488
1489#define MAX_FACTION_RELATIONS 4
1490
1492{
1493 uint32 ID; // 0 m_ID
1494 uint32 faction; // 1 m_faction
1495 uint32 factionFlags; // 2 m_flags
1496 uint32 ourMask; // 3 m_factionGroup
1497 uint32 friendlyMask; // 4 m_friendGroup
1498 uint32 hostileMask; // 5 m_enemyGroup
1499 uint32 enemyFaction[MAX_FACTION_RELATIONS]; // 6 m_enemies[MAX_FACTION_RELATIONS]
1500 uint32 friendFaction[MAX_FACTION_RELATIONS]; // 10 m_friend[MAX_FACTION_RELATIONS]
1501
1502 // helpers
1503 bool IsFriendlyTo(FactionTemplateEntry const& entry) const
1504 {
1505 if (ID == entry.ID)
1506 return true;
1507 if (entry.faction)
1508 {
1509 for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
1510 if (enemyFaction[i] == entry.faction)
1511 return false;
1512 for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
1513 if (friendFaction[i] == entry.faction)
1514 return true;
1515 }
1516 return (friendlyMask & entry.ourMask) || (ourMask & entry.friendlyMask);
1517 }
1518 bool IsHostileTo(FactionTemplateEntry const& entry) const
1519 {
1520 if (ID == entry.ID)
1521 return false;
1522 if (entry.faction)
1523 {
1524 for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
1525 if (enemyFaction[i] == entry.faction)
1526 return true;
1527 for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
1528 if (friendFaction[i] == entry.faction)
1529 return false;
1530 }
1531 return (hostileMask & entry.ourMask) != 0;
1532 }
1533 bool IsHostileToPlayers() const { return (hostileMask & FACTION_MASK_PLAYER) != 0; }
1534 bool IsNeutralToAll() const
1535 {
1536 for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
1537 if (enemyFaction[i] != 0)
1538 return false;
1539 return hostileMask == 0 && friendlyMask == 0;
1540 }
1542};
1543
1545{
1546 //uint32 Displayid; // 0 m_ID
1547 //char* filename; // 1
1548 //uint32 unk1[10]; //2-11
1549 float minX;
1550 float minY;
1551 float minZ;
1552 float maxX;
1553 float maxY;
1554 float maxZ;
1555 //uint32 transport; //18
1556};
1557
1559{
1560 //uint32 ID; // 0 m_id
1562 // 2 m_maxcount_inv
1563 // 3 m_maxcount_item
1564 uint32 color; // 4 m_type
1565 //uint32 minJewelCraftingSkill; // 5 m_minJewelCraftingSkill
1566};
1567
1569{
1570 //uint32 Id;
1573 //uint32 IconId; // GlyphIconId (SpellIcon.dbc)
1574};
1575
1577{
1580 //uint32 Order;
1581};
1582
1583// All Gt* DBC store data for 100 levels, some by 100 per class/race
1584#define GT_MAX_LEVEL 100
1585// gtOCTClassCombatRatingScalar.dbc stores data for 32 ratings, look at MAX_COMBAT_RATING for real used amount
1586#define GT_MAX_RATING 32
1587
1589{
1590 //uint32 level;
1591 float cost;
1592};
1593
1595{
1596 // uint32 [level][levelOffset]
1597 float value;
1598};
1599
1601{
1602 //uint32 level;
1603 float ratio;
1604};
1605
1607{
1608 //uint32 level;
1609 float base;
1610};
1611
1613{
1614 //uint32 level;
1615 float ratio;
1616};
1617
1619{
1620 float base;
1621};
1622
1624{
1625 float ratio;
1626};
1627
1629{
1630 float ratio;
1631};
1632
1637
1639{
1640 float ratio;
1641};
1642
1643/*
1644struct GtRegenHPPerSptEntry
1645{
1646 float ratio;
1647};
1648*/
1650{
1651 float ratio;
1652};
1653
1655{
1656 float value;
1657};
1658
1660{
1661 float ratio;
1662};
1663
1665{
1666 float ratio;
1667};
1668
1670{
1671 //uint32 Id;
1674};
1675
1676/* no used
1677struct HolidayDescriptionsEntry
1678{
1679 uint32 ID; // 0, m_holidayDescriptionID
1680 //char* name // 1 m_name_lang
1681};
1682*/
1683
1684/* no used
1685struct HolidayNamesEntry
1686{
1687 uint32 ID; // 0, m_holidayNameID
1688 //char* name // 1 m_name_lang
1689};
1690*/
1691
1692#define MAX_HOLIDAY_DURATIONS 10
1693#define MAX_HOLIDAY_DATES 26
1694#define MAX_HOLIDAY_FLAGS 10
1695
1697{
1698 uint32 Id; // 0 m_ID
1699 //uint32 Duration[MAX_HOLIDAY_DURATIONS]; // 1-10 m_duration
1700 //uint32 Date[MAX_HOLIDAY_DATES]; // 11-36 m_date (dates in unix time starting at January, 1, 2000)
1701 //uint32 Region; // 37 m_region (wow region)
1702 //uint32 Looping; // 38 m_looping
1703 //uint32 CalendarFlags[MAX_HOLIDAY_FLAGS]; // 39-48 m_calendarFlags
1704 //uint32 holidayNameId; // 49 m_holidayNameID (HolidayNames.dbc)
1705 //uint32 holidayDescriptionId; // 50 m_holidayDescriptionID (HolidayDescriptions.dbc)
1706 //char* TextureFilename; // 51 m_textureFilename
1707 //uint32 Priority; // 52 m_priority
1708 //uint32 CalendarFilterType; // 53 m_calendarFilterType (-1 = Fishing Contest, 0 = Unk, 1 = Darkmoon Festival, 2 = Yearly holiday)
1709 //uint32 flags; // 54 m_flags (0 = Darkmoon Faire, Fishing Contest and Wotlk Launch, rest is 1)
1710};
1711
1712// ImportPriceArmor.dbc
1714{
1715 //uint32 InventoryType; // 1 Id/InventoryType
1716 float ClothFactor; // 2 Price factor cloth
1717 float LeatherFactor; // 3 Price factor leather
1718 float MailFactor; // 4 Price factor mail
1719 float PlateFactor; // 5 Price factor plate
1720};
1721
1722// ImportPriceQuality.dbc
1724{
1725 //uint32 QualityId; // 1 Quality Id (+1?)
1726 float Factor; // 2 Price factor
1727};
1728
1729// ImportPriceShield.dbc
1731{
1732 //uint32 Id; // 1 Unk id (only 1 and 2)
1733 float Factor; // 2 Price factor
1734};
1735
1736// ImportPriceWeapon.dbc
1738{
1739 //uint32 Id; // 1 Unk id (mainhand - 0, offhand - 1, weapon - 2, 2hweapon - 3, ranged/rangedright/relic - 4)
1740 float Factor; // 2 Price factor
1741};
1742
1743// ItemPriceBase.dbc
1745{
1746 //uint32 id
1747 //uint32 ItemLevel; // 2 Item level (1 - 1000)
1748 float ArmorFactor; // 3 Price factor for armor
1749 float WeaponFactor; // 4 Price factor for weapons
1750};
1751
1760
1762{
1763 //uint32 Id; // 0 item level
1764 float Value[7]; // 1-7 multiplier for item quality
1765 //uint32 Id2; // 8 item level
1766};
1767
1769{
1770 //uint32 Id; // 0 item level
1771 //uint32 Id2; // 1 item level
1772 float Value[7]; // 2-8 multiplier for item quality
1773};
1774
1776{
1777 //uint32 Id; // 0 item level
1778 //uint32 Id2; // 1 item level
1779 float Value[4]; // 2-5 multiplier for armor types (cloth...plate)
1780};
1781
1782// ItemClass.dbc
1784{
1785 //uint32 Class; // 1 item class id
1786 //uint32 IsWeapon; // 2 1 for weapon, 0 for everything else
1787 float PriceFactor; // 3 used to calculate certain prices
1788 //char* Name; // 4 class name
1789};
1790
1791// common struct for:
1792// ItemDamageAmmo.dbc
1793// ItemDamageOneHand.dbc
1794// ItemDamageOneHandCaster.dbc
1795// ItemDamageRanged.dbc
1796// ItemDamageThrown.dbc
1797// ItemDamageTwoHand.dbc
1798// ItemDamageTwoHandCaster.dbc
1799// ItemDamageWand.dbc
1801{
1802 //uint32 Id; // 0 item level
1803 float DPS[7]; // 1-7 multiplier for item quality
1804 //uint32 Id2; // 8 item level
1805};
1806
1807/*
1808struct ItemBagFamilyEntry
1809{
1810 uint32 ID; // 0
1811 //char* name; // 1 m_name_lang
1812};
1813
1814struct ItemDisplayInfoEntry
1815{
1816 uint32 ID; // 0 m_ID
1817 // 1 m_modelName[2]
1818 // 2 m_modelTexture[2]
1819 // 3 m_inventoryIcon
1820 // 4 m_geosetGroup[3]
1821 // 5 m_flags
1822 // 6 m_spellVisualID
1823 // 7 m_groupSoundIndex
1824 // 8 m_helmetGeosetVis[2]
1825 // 9 m_texture[2]
1826 // 10 m_itemVisual[8]
1827 // 11 m_particleColorID
1828};
1829*/
1840
1842{
1843 //uint32 ID; // 0 Id
1844 //char* name; // 1 m_name_lang
1845 uint32 maxCount; // 2, m_quantity max allowed equipped as item or in gem slot
1846 uint32 mode; // 3, m_flags 0 = have, 1 = equip (enum ItemLimitCategoryMode)
1847};
1848
1849#define MAX_ITEM_ENCHANTMENT_EFFECTS 3
1850
1852{
1853 uint32 ID; // 0 m_ID
1854 //char* internalName // 1 m_Name
1856 // 5-6 unused
1857 char* nameSuffix; // 7 m_name_lang
1858};
1859
1861{
1862 uint32 ID; // 0 m_ID
1863 char* nameSuffix; // 1 m_name_lang
1864 // 2 m_internalName
1865 uint32 enchant_id[5]; // 3-7 m_enchantment
1866 uint32 prefix[5]; // 8-12 m_allocationPct
1867};
1868
1869//#define MAX_ITEM_SET_ITEMS 17
1870#define MAX_ITEM_SET_SPELLS 8
1871
1873{
1874 //uint32 id // 0 m_ID
1875 char* name; // 1 m_name_lang
1876 //uint32 itemId[MAX_ITEM_SET_ITEMS]; // 2-18 m_itemID
1877 uint32 spells[MAX_ITEM_SET_SPELLS]; // 19-26 m_setSpellID
1879 uint32 required_skill_id; // 35 m_requiredSkill
1880 uint32 required_skill_value; // 36 m_requiredSkillRank
1881};
1882
1884{
1886 char* m_Name; // 1
1893 uint32 m_DifficultyID; // 8 Difficulty.dbc
1895 uint32 m_Type; // 10 (1-Dungeon, 2-Raid, 4-OpenWorld, 6-Random)
1897 //char* m_TextureFileName; // 12
1899 //uint32 m_OrderIndex; // 14
1901 //char* m_Description; // 16
1902 uint32 m_RandomDungeonID; // 17 RandomDungeonID assigned for this dungeon
1906 //uint32 m_CountTankMin; // 21
1907 //uint32 m_CountHealerMin; // 22
1908 //uint32 m_CountDamageMin; // 23
1910 uint32 m_SubType; // 25 LFG category sent in status packets
1911 //uint32 m_BonusReputationAmount; // 26
1912 //uint32 m_MentorLevel; // 27
1913 //uint32 m_MentorItemLevel; // 28
1914
1915 // Helpers
1916 uint32 Entry() const { return m_ID + (m_Type << 24); }
1917};
1918
1919
1921{
1923 //char* Name;
1924 //uint32 Flags;
1926 //uint32 SoundId;
1928 //float MaxDarkenDepth;
1929 //float FogDarkenIntensity;
1930 //float AmbDarkenIntensity;
1931 //float DirDarkenIntensity;
1932 //uint32 LightID;
1933 //float ParticleScale;
1934 //uint32 ParticleMovement;
1935 //uint32 ParticleTexSlots;
1936 //uint32 LiquidMaterialID;
1937 //char* Texture[6];
1938 //uint32 Color[2];
1939 //float Unk1[18];
1940 //uint32 Unk2[4];
1941};
1942
1943#define MAX_LOCK_CASE 8
1944
1946{
1947 //uint32 ID; // 0 m_ID
1948 uint32 Type[MAX_LOCK_CASE]; // 1-8 m_Type
1949 uint32 Index[MAX_LOCK_CASE]; // 9-16 m_Index
1950 uint32 Skill[MAX_LOCK_CASE]; // 17-24 m_Skill
1951 //uint32 Action[MAX_LOCK_CASE]; // 25-32 m_Action
1952};
1953
1955{
1956 //uint32 ID; // 0
1957 //char* subject; // 1 m_subject_lang
1958 char* content; // 2 m_body_lang
1959};
1960
1962{
1964 //char* internalname; // 1 unused
1966 //uint32 flags; // 3
1967 //uint32 isPvp; // 4
1968 char* name; // 5 m_MapName_lang
1969 uint32 linked_zone; // 6 m_areaTableID
1970 //char* hordeIntro; // 7 m_MapDescription0_lang
1971 //char* allianceIntro; // 8 m_MapDescription1_lang
1972 //uint32 multimap_id; // 9 m_LoadingScreenID (LoadingScreens.dbc)
1973 //float BattlefieldMapIconScale; // 10 m_minimapIconScale
1974 int32 entrance_map; // 11 m_corpseMapID map_id of entrance map in ghost mode (continent always and in most cases = normal entrance)
1975 float entrance_x; // 12 m_corpseX entrance x coordinate in ghost mode (in most cases = normal entrance)
1976 float entrance_y; // 13 m_corpseY entrance y coordinate in ghost mode (in most cases = normal entrance)
1977 //uint32 timeOfDayOverride; // 14 m_timeOfDayOverride
1978 uint32 addon; // 15 m_expansionID
1979 //uint32 expireTime; // 16 m_raidOffset
1980 //uint32 maxPlayers; // 17 m_maxPlayers
1981 int32 rootPhaseMap; // 18 new 4.0.0, mapid, related to phasing
1982
1983 // Helpers
1984 uint32 Expansion() const { return addon; }
1985
1986 bool IsDungeon() const { return map_type == MAP_DUNGEON; }
1989 bool IsRaid() const { return map_type == MAP_RAID; }
1990 bool IsBattleground() const { return map_type == MAP_BATTLEGROUND; }
1991 bool IsBattleArena() const { return map_type == MAP_ARENA; }
1992 bool IsScenario() const { return map_type == MAP_SCENARIO; }
1994 bool IsWorldMap() const { return map_type == MAP_COMMON; }
1995
1996 bool IsInstance() const { return map_type == MAP_DUNGEON || map_type == MAP_RAID || map_type == MAP_SCENARIO; }
1997
1998 bool GetEntrancePos(int32& mapid, float& x, float& y) const
1999 {
2000 if (entrance_map < 0)
2001 return false;
2002 mapid = entrance_map;
2003 x = entrance_x;
2004 y = entrance_y;
2005 return true;
2006 }
2007
2008 bool IsContinent() const
2009 {
2010 return MapID == 0 || MapID == 1 || MapID == 530 || MapID == 571 || MapID == 860 || MapID == 870;
2011 }
2012};
2013
2015{
2016 //uint32 Id; // 0
2018 uint32 Difficulty; // 2 (for arenas: arena slot)
2019 char* areaTriggerText; // 3 m_message_lang (text showed when transfer to map failed)
2020 uint32 resetTime; // 4, m_raidDuration in secs, 0 if no fixed reset time
2021 uint32 maxPlayers; // 5, m_maxPlayers some heroic versions have 0 when expected same amount as in normal version
2022 //char* difficultyString; // 6 m_difficultystring
2023};
2024
2025
2027{
2031 //uint32 op; // 4
2032 // uint32 unk; // 5
2034};
2035
2047
2048#define MAX_MOUNT_CAPABILITIES 24
2049
2055
2057{
2058 uint32 Id; // 0 index
2059 //char* filename; // 1
2060 //uint32 unk1; // 2 m_volume
2061 //uint32 unk2; // 3 4.0.0
2062};
2063
2065{
2066 //uint32 id;
2067 char* name;
2070};
2071
2072#define MAX_OVERRIDE_SPELL 10
2073
2075{
2076 //uint32 id; // 0
2078 //uint32 unk0; // 11
2079 //char* SpellBarName; // 12
2080};
2081
2083{
2085 //char* Name; // 1
2086 //uint32 flag; // 2
2087};
2088
2090{
2091 //uint32 ID;
2094};
2095
2097{
2098 //uint32 id; // 0 m_ID
2104
2105 // helpers
2107};
2108
2110{
2111 //uint32 id;
2113};
2114
2116{
2118 int32 X; // 1
2119 int32 Y; // 2
2121};
2122
2124{
2125 uint32 id; // 0 m_ID
2126 //char* name; // 1 m_SortName_lang
2127};
2128
2130{
2131 //uint32 id;
2133};
2134
2136{
2137 //uint32 Id; // 0 hidden key
2141};
2143{
2145 //char* BranchName; // 1
2146 //uint32 ResearchFieldId; // 2 research field (from ResearchField.dbc)
2148 //char* Icon; // 4
2150};
2151
2152//struct ResearchFieldEntry
2153//{
2154// uint32 Id; // 0
2155// char* FieldName; // 1
2156// uint32 slot; // 2
2157//};
2158
2160{
2162 //char* ProjectName; // 1
2163 //char* ProjectDescription; // 2
2164 uint32 Rarity; // 3 0-common, 1-rare
2165 uint32 ResearchBranchId; // 4 branch id (from ResearchBranch.dbc)
2166 //uint32 SpellId; // 5
2167 //uint32 KeystoneCount; // 6
2168 //char* ProjectIcon; // 7
2170};
2171
2173{
2176 uint32 QuestPOIBlobId; // 2 blob id (from QuestPOIBlob.dbc)
2177 //char* SiteName; // 3
2178 //uint32 IconId; // 4
2179};
2180
2182{
2183 //uint32 Id; // 0
2184 int32 StatMod[10]; // 1-10
2185 uint32 Modifier[10]; // 11-20
2186 //uint32 unk1; // 21
2187 uint32 MaxLevel; // 22 m_maxlevel
2188};
2189
2191{
2192 //uint32 Id; // 0
2193 //uint32 Level; // 1
2194 //uint32 ilvl;
2195 uint32 dpsMod[6]; // 2-8 DPS mod for level
2196 uint32 Spellpower; // 9 spell power for level
2197 uint32 StatMultiplier[5]; // 10-11 Multiplier for ScalingStatDistribution
2198 uint32 Armor[8][4]; // 12-47 Armor for level
2199 uint32 CloakArmor; // 48 armor for cloak
2200 uint32 ShieldArmor; // 49 - Pandaria
2201
2202 uint32 GetStatMultiplier(uint32 inventoryType) const;
2203 uint32 GetArmor(uint32 inventoryType, uint32 armorType) const;
2204 uint32 GetDPSAndDamageMultiplier(uint32 subClass, bool isCasterWeapon, float* damageMultiplier) const;
2205};
2206
2207//struct SkillLineCategoryEntry{
2208// uint32 id; // 0 m_ID
2209// char* name[16]; // 1-17 m_name_lang
2210// // 18 string flag
2211// uint32 displayOrder; // 19 m_sortIndex
2212//};
2213
2214//struct SkillRaceClassInfoEntry{
2215// uint32 id; // 0 m_ID
2216// uint32 skillId; // 1 m_skillID
2217// uint32 raceMask; // 2 m_raceMask
2218// uint32 classMask; // 3 m_classMask
2219// uint32 flags; // 4 m_flags
2220// uint32 reqLevel; // 5 m_minLevel
2221// uint32 skillTierId; // 6 m_skillTierID
2222// uint32 skillCostID; // 7 m_skillCostIndex
2223//};
2224
2225//struct SkillTiersEntry{
2226// uint32 id; // 0 m_ID
2227// uint32 skillValue[16]; // 1-17 m_cost
2228// uint32 maxSkillValue[16]; // 18-32 m_valueMax
2229//};
2230
2232{
2233 uint32 id; // 0 m_ID
2234 int32 categoryId; // 1 m_categoryID
2235 char* name; // 2 m_displayName_lang
2236 //char* description; // 3 m_description_lang
2237 //uint32 spellIcon; // 4 m_spellIconID
2238 //char* alternateVerb; // 5 m_alternateVerb_lang
2239 uint32 canLink; // 6 m_canLink (prof. with recipes)
2240 //uint32 parrentSkillLineID // 7
2241 //uint32 flags // 8
2242};
2243
2245{
2246 //uint32 id; // 0 m_ID
2247 uint32 skillId; // 1 m_skillLine
2248 uint32 spellId; // 2 m_spell
2249 uint32 racemask; // 3 m_raceMask
2250 uint32 classmask; // 4 m_classMask
2251 uint32 req_skill_value; // 5 m_minSkillLineRank
2252 uint32 forward_spellid; // 6 m_supercededBySpell
2253 uint32 learnOnGetSkill; // 7 m_acquireMethod
2254 uint32 max_value; // 8 m_trivialSkillLineRankHigh
2255 uint32 min_value; // 9 m_trivialSkillLineRankLow
2256 //uint32 character_points; // 10 m_characterPoints - Pandaria - No longer an array
2257 //uint32
2258 //uint32 tradeskillCategory
2259};
2260
2262{
2263 uint32 Id; // 0 m_ID
2264 //uint32 Type; // 1 m_soundType
2265 //char* InternalName; // 2 m_name
2266 //char* FileName[10]; // 3-12 m_File[10]
2267 //uint32 Unk13[10]; // 13-22 m_Freq[10]
2268 //char* Path; // 23 m_DirectoryBase
2269 // 24 m_volumeFloat
2270 // 25 m_flags
2271 // 26 m_minDistance
2272 // 27 m_distanceCutoff
2273 // 28 m_EAXDef
2274 // 29 m_soundEntriesAdvancedID, new in 3.1
2275 //unk // 30 4.0.0
2276 //unk // 31 4.0.0
2277 //unk // 32 4.0.0
2278 //unk // 33 4.0.0
2279};
2280
2282{
2283 //uint32 Id; // 0
2287 //uint32 unk; // 4
2288};
2289
2290// SpellAuraOptions.dbc
2292{
2293 //uint32 Id; // 0 m_ID
2294 //uint32 spellId; // 1 - Pandaria
2295 //uint32 unk0; // 2 - Panadraia always after spellId
2296 uint32 StackAmount; // 3 m_cumulativeAura
2297 uint32 procChance; // 4 m_procChance
2298 uint32 procCharges; // 5 m_procCharges
2299 uint32 procFlags; // 6 m_procTypeMask
2300 //uint32 unk1 // 7 - Pandaria
2301 //uint32 unk2 // 8 - Pandaria
2302};
2303
2304// SpellAuraRestrictions.dbc/
2306{
2307 //uint32 Id; // 0 m_ID
2308 //uint32 spellId; // 1 - Pandaria
2309 //uint32 unk0; // 2 - Panadraia always after spellId
2310 uint32 CasterAuraState; // 3 m_casterAuraState
2311 uint32 TargetAuraState; // 4 m_targetAuraState
2312 uint32 CasterAuraStateNot; // 5 m_excludeCasterAuraState
2313 uint32 TargetAuraStateNot; // 6 m_excludeTargetAuraState
2314 uint32 casterAuraSpell; // 7 m_casterAuraSpell
2315 uint32 targetAuraSpell; // 8 m_targetAuraSpell
2316 uint32 excludeCasterAuraSpell; // 9 m_excludeCasterAuraSpell
2317 uint32 excludeTargetAuraSpell; // 10 m_excludeTargetAuraSpell
2318};
2319
2320// SpellCastingRequirements.dbc
2322{
2323 //uint32 Id; // 0 m_ID
2324 uint32 FacingCasterFlags; // 1 m_facingCasterFlags
2325 //uint32 MinFactionId; // 2 m_minFactionID not used
2326 //uint32 MinReputation; // 3 m_minReputation not used
2327 int32 AreaGroupId; // 4 m_requiredAreaGroupId
2328 //uint32 RequiredAuraVision; // 5 m_requiredAuraVision not used
2329 uint32 RequiresSpellFocus; // 6 m_requiresSpellFocus
2330};
2331
2333{
2334 //uint32 ID; // 0
2336 //float CastTimePerLevel; // 2 unsure / per skill?
2337 //int32 MinCastTime; // 3 unsure
2338};
2339
2340// SpellCategories.dbc
2342{
2343 //uint32 Id; // 0 m_ID
2344 //uint32 spellId; // 1 - Pandaria
2345 //uint32 unk0; // 2 - Pandaria always after spellId
2346 uint32 Category; // 3 m_category
2347 uint32 DmgClass; // 4 m_defenseType
2348 uint32 Dispel; // 5 m_dispelType
2349 uint32 Mechanic; // 6 m_mechanic
2350 uint32 PreventionType; // 7 m_preventionType
2351 uint32 StartRecoveryCategory; // 8 m_startRecoveryCategory
2352 //uint32 unk1; // 9 - Pandaria
2353};
2354
2355typedef std::set<uint32> SpellCategorySet;
2356typedef std::map<uint32, SpellCategorySet > SpellCategoryStore;
2357
2359{
2362 // uint32 unk;
2363 // char* Name;
2364 // uint32 unk - Pandaria
2365 // uint32 unk2 - Pandaria - could be shared CD
2366};
2367
2368// SpellClassOptions.dbc
2370{
2371 //uint32 Id; // 0 m_ID
2372 //uint32 modalNextSpell; // 1 m_modalNextSpell not used
2374 uint32 SpellFamilyName; // 6 m_spellClassSet
2375};
2376
2377// SpellCooldowns.dbc
2379{
2380 //uint32 Id; // 0 m_ID
2381 //uint32 spellId; // 1 - Pandaria
2382 //uint32 unk0; // 2 - Panadraia always after spellId
2383 uint32 CategoryRecoveryTime; // 3 m_categoryRecoveryTime
2384 uint32 RecoveryTime; // 4 m_recoveryTime
2385 uint32 StartRecoveryTime; // 5 m_startRecoveryTime
2386};
2387
2389{
2390 //uint32 ID;
2392};
2393
2394// Spell.dbc
2396{
2397 uint32 Id; // 0 m_ID
2398 char* SpellName; // 1 m_name_lang
2399 //char* Rank; // 2 m_nameSubtext_lang
2400 //char* Description; // 3 m_description_lang not used
2401 //char* ToolTip; // 4 m_auraDescription_lang not used
2402 uint32 runeCostID; // 5 m_runeCostID
2403 //uint32 spellMissileID; // 6 m_spellMissileID not used
2404 //uint32 spellDescriptionVariableID; // 7 m_spellDescriptionVariableID, 3.2.0
2405 //float unk_f; // 8 unk_f
2406 uint32 SpellScalingId; // 9 SpellScaling.dbc
2407 uint32 SpellAuraOptionsId; // 10 SpellAuraOptions.dbc
2408 uint32 SpellAuraRestrictionsId; // 11 SpellAuraRestrictions.dbc
2409 uint32 SpellCastingRequirementsId; // 12 SpellCastingRequirements.dbc
2410 uint32 SpellCategoriesId; // 13 SpellCategories.dbc
2411 uint32 SpellClassOptionsId; // 14 SpellClassOptions.dbc
2412 uint32 SpellCooldownsId; // 15 SpellCooldowns.dbc
2413 uint32 SpellEquippedItemsId; // 16 SpellEquippedItems.dbc
2414 uint32 SpellInterruptsId; // 17 SpellInterrupts.dbc
2415 uint32 SpellLevelsId; // 18 SpellLevels.dbc
2416 uint32 SpellReagentsId; // 19 SpellReagents.db2
2417 uint32 SpellShapeshiftId; // 20 SpellShapeshift.dbc
2418 uint32 SpellTargetRestrictionsId; // 21 SpellTargetRestrictions.dbc
2419 uint32 SpellTotemsId; // 22 SpellTotems.dbc
2420 uint32 ResearchProject; // 23 ResearchProject.dbc
2421 uint32 SpellMiscId; // 24 SpellMisc.dbc
2422};
2423
2424// SpellEquippedItems.dbc
2426{
2427 //uint32 Id; // 0 m_ID
2428 //uint32 spellId; // 1 - Pandaria
2429 //uint32 unk0; // 2 - Panadraia always after spellId
2430 int32 EquippedItemClass; // 3 m_equippedItemClass (value)
2431 int32 EquippedItemInventoryTypeMask; // 4 m_equippedItemInvTypes (mask)
2432 int32 EquippedItemSubClassMask; // 5 m_equippedItemSubclass (mask)
2433};
2434
2435// SpellInterrupts.dbc
2437{
2438 //uint32 Id; // 0 m_ID
2439 //uint32 spellId; // 1 - Pandaria
2440 //uint32 unk0; // 2 - Panadraia always after spellId
2441 uint32 AuraInterruptFlags; // 3 m_auraInterruptFlags
2442 //uint32 // 4 4.0.0
2443 uint32 ChannelInterruptFlags; // 5 m_channelInterruptFlags
2444 //uint32 // 6 4.0.0
2445 uint32 InterruptFlags; // 7 m_interruptFlags
2446};
2447
2448// SpellLevels.dbc
2450{
2451 //uint32 Id; // 0 m_ID
2452 //uint32 spellId; // 1 - Pandaria
2453 //uint32 unk0; // 2 - Panadraia always after spellId
2454 uint32 baseLevel; // 3 m_baseLevel
2455 uint32 maxLevel; // 4 m_maxLevel
2456 uint32 spellLevel; // 5 m_spellLevel
2457};
2458
2459// SpellMisc.dbc
2461{
2462 //uint32 Id; // 0 m_ID
2463 //uint32 SpellId // 1
2464 //uint32 SpellDifficultyID; // 2 m_spellDifficultyID
2465 uint32 Attributes; // 3 m_attribute
2466 uint32 AttributesEx; // 4 m_attributesEx
2467 uint32 AttributesEx2; // 5 m_attributesExB
2468 uint32 AttributesEx3; // 6 m_attributesExC
2469 uint32 AttributesEx4; // 7 m_attributesExD
2470 uint32 AttributesEx5; // 8 m_attributesExE
2471 uint32 AttributesEx6; // 9 m_attributesExF
2472 uint32 AttributesEx7; // 10 m_attributesExG
2473 uint32 AttributesEx8; // 11 m_attributesExH
2474 uint32 AttributesEx9; // 12 m_attributesExI
2475 //uint32 AttributesEx10; // 13 m_attributesExJ
2476 //uint32 AttributesEx11; // 14 m_attributesExK
2477 //uint32 AttributesEx12; // 15 m_attributesExL
2478 //uint32 AttributesEx13; // 16 m_attributesExM
2479 uint32 CastingTimeIndex; // 17 m_castingTimeIndex
2480 uint32 DurationIndex; // 18 m_durationIndex
2481 uint32 rangeIndex; // 19 m_rangeIndex
2482 float speed; // 20 m_speed
2483 uint32 SpellVisual[2]; // 21-22 m_spellVisualID
2484 uint32 SpellIconID; // 23 m_spellIconID
2485 uint32 activeIconID; // 24 m_activeIconID
2486 uint32 SchoolMask; // 25 m_schoolMask
2487};
2488
2490{
2495 float maxRangeFriend; //friend means unattackable unit here
2497 //char* Name; // 6 m_displayName_lang
2498 //char* ShortName; // 7 m_displayNameShort_lang
2499};
2500
2501// SpellScaling.dbc
2503{
2504 //uint32 Id; // 0 m_ID
2508 int32 ScalingClass; // 4 (index * 100) + charLevel - 1 => gtSpellScaling.dbc
2509 float CoefBase; // 5 some coefficient, mostly 1.0f
2510 int32 CoefLevelBase; // 6 some level
2511 //int32 unk1 // 7 - Pandaria
2512 //int32 unk2 // 8 - Pandaria
2513};
2514
2515// SpellShapeshift.dbc
2517{
2518 //uint32 Id; // 0 - m_ID
2519 uint32 StancesNot; // 3 - m_shapeshiftExclude
2520 // uint32 unk_320_2; // 2 - 3.2.0
2521 uint32 Stances; // 1 - m_shapeshiftMask
2522 // uint32 unk_320_3; // 4 - 3.2.0
2523 // uint32 StanceBarOrder; // 5 - m_stanceBarOrder not used
2524};
2525
2526// SpellTargetRestrictions.dbc
2528{
2529 //uint32 Id; // 0 m_ID
2530 //uint32 spellId; // 1 - Pandaria
2531 //uint32 unk0; // 2 - Pandaria always after spellId
2532 //float unk0; // 3
2533 //uint32 unk0; // 4 - Pandaria always after spellId
2534 uint32 MaxAffectedTargets; // 5 m_maxTargets
2535 //uint32 MaxTargetLevel; // 6 m_maxTargetLevel
2536 uint32 TargetCreatureType; // 7 m_targetCreatureType
2537 uint32 Targets; // 8 m_targets
2538};
2539
2540#define MAX_SPELL_TOTEMS 2
2541
2542// SpellTotems.dbc
2544{
2545 //uint32 Id; // 0 m_ID
2546 uint32 TotemCategory[MAX_SPELL_TOTEMS]; // 1 m_requiredTotemCategoryID
2548};
2549
2551
2552// SpellEffect.dbc
2554{
2555 uint32 Id; // 0 m_ID
2556 //uint32 Unk0; // 1 unk - Pandaria
2557 uint32 Effect; // 2 m_effect
2558 float EffectValueMultiplier; // 3 m_effectValueMultiplier
2559 uint32 EffectApplyAuraName; // 4 m_effectAura
2560 uint32 EffectAuraTickCount; // 5 m_effectAuraTickCount
2561 int32 EffectBasePoints; // 6 m_effectBasePoints (don't must be used in spell/auras explicitly, must be used cached Spell::m_currentBasePoints)
2562 float EffectBonusMultiplier; // 7 m_effectBonusMultiplier
2563 float EffectDamageMultiplier; // 8 m_effectDamageMultiplier
2564 uint32 EffectChainTarget; // 9 m_effectChainTargets
2565 int32 EffectDieSides; // 10 m_effectDieSides
2566 uint32 EffectItemType; // 11 m_effectItemType
2567 uint32 EffectMechanic; // 12 m_effectMechanic
2568 int32 EffectMiscValue; // 13 m_effectMiscValue
2569 int32 EffectMiscValueB; // 14 m_effectMiscValueB
2570 float EffectPointsPerComboPoint; // 15 m_effectPointsPerCombo
2571 uint32 EffectRadiusIndex; // 16 m_effectRadiusIndex - spellradius.dbc
2573 float EffectRealPointsPerLevel; // 18 m_effectRealPointsPerLevel
2574 flag128 EffectSpellClassMask; // 19 20 21 22 m_effectSpellClassMask1(2/3), effect 0
2575 uint32 EffectTriggerSpell; // 23 m_effectTriggerSpell
2576 //uint32 Unk0 // 24 unk - Pandaria
2577 uint32 EffectImplicitTargetA; // 25 m_implicitTargetA
2578 uint32 EffectImplicitTargetB; // 26 m_implicitTargetB
2579 uint32 EffectSpellId; // 27 new 4.0.0
2580 uint32 EffectIndex; // 28 new 4.0.0
2581 //uint32 Unk0 // 29 4.2.0 only 0 or 1
2582};
2583
2584#define MAX_SPELL_EFFECTS 32
2585#define MAX_EFFECT_MASK 0xFFFFFFFF // Full uint32
2586
2587// SpellEffectScaling.dbc
2589{
2590 uint32 Id; // 1 Id
2591 float Multiplier; // 2
2594 // float UnkMultiplier // 5
2596};
2597
2598
2599typedef std::set<uint32> PetFamilySpellsSet;
2600typedef std::map<uint32, PetFamilySpellsSet > PetFamilySpellsStore;
2604
2606{
2608 int32 SpellID[4]; // 1-4 instance modes: 10N, 25N, 10H, 25H or Normal/Heroic if only 1-2 is set, if 3-4 is 0 then Mode-2
2609};
2610
2612{
2614 //char* Name; // 1 m_name_lang
2615};
2616
2618{
2622 //float unkRadius;
2624};
2625
2626// SpellPower.dbc
2628{
2629 //uint32 Id; // 0 m_ID
2630 uint32 spellId; // 1 - Pandaria
2631 //uint32 RaidDifficulty; // 2 - Pandaria RaidDifficultyID
2632 uint32 powerType; // 3 m_powerType
2633 uint32 manaCost; // 4 m_manaCost
2634 uint32 manaCostPerlevel; // 5 m_manaCostPerLevel
2635 uint32 manaPerSecond; // 6 m_manaPerSecond
2636 uint32 manaPerSecondPerLevel; // 7 m_manaPerSecondPerLevel
2637 //uint32 PowerDisplayId; // 8 m_powerDisplayID - id from PowerDisplay.dbc, new in 3.1
2638 float ManaCostPercentageFloat; // 9 4.3.0
2639 float ChannelCostPercentageFloat; // 10 - Pandaria - ChannelCostPercentageFloat
2640 uint32 ShapeShiftSpellID; // 11 - Pandaria - ShapeShiftSpellID
2641 //float HealthCostPercentageFloat; // 12 - Pandaria - HealthCostPercentageFloat
2642};
2643
2645{
2647 uint32 RuneCost[4]; // 1-4 (0=blood, 1=frost, 2=unholy, 3=death)
2649
2650 bool NoRuneCost() const { return RuneCost[0] == 0 && RuneCost[1] == 0 && RuneCost[2] == 0 && RuneCost[3] == 0; }
2651 bool NoRunicPowerGain() const { return runePowerGain == 0; }
2652};
2653
2654#define MAX_SHAPESHIFT_SPELLS 8
2655
2657{
2659 //uint32 buttonPosition; // 1 unused
2660 //char* Name; // 2 unused
2662 int32 creatureType; // 4 <=0 humanoid, other normal creature types
2663 //uint32 spellIcon; // 5 unused, related to next field
2665 // Models changed, 0 is main model, the rest 3 are unused.
2666 uint32 modelID_A; // 7 alliance modelid (0 means no model)
2667 uint32 modelID_H; // 8 horde modelid (but only for one form)
2668 //uint32 unk3; // 9 unused always 0
2669 //uint32 unk4; // 10 unused always 0
2670 uint32 stanceSpell[MAX_SHAPESHIFT_SPELLS]; // 11-18 spells which appear in the bar after shapeshifting
2671 uint32 mount_type; // MountType.dbc
2672 //uint32 unk6; // 20
2673};
2674
2676{
2677 uint32 ID; // 0 m_ID
2678 //uint32 charges; // 1 m_charges
2679 uint32 type[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 2-4 m_effect[MAX_ITEM_ENCHANTMENT_EFFECTS]
2680 uint32 amount[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 5-7 m_effectPointsMin[MAX_ITEM_ENCHANTMENT_EFFECTS]
2681 uint32 spellid[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 8-10 m_effectArg[MAX_ITEM_ENCHANTMENT_EFFECTS]
2682 char* description; // 11 m_name_lang
2683 uint32 aura_id; // 12 m_itemVisual
2684 uint32 slot; // 13 m_flags
2685 uint32 GemID; // 14 m_src_itemID
2686 uint32 EnchantmentCondition; // 15 m_condition_id
2687 uint32 requiredSkill; // 16 m_requiredSkillID
2688 uint32 requiredSkillValue; // 17 m_requiredSkillRank
2689 uint32 requiredMinLevel; // 18 m_requiredMinLevel
2690 uint32 requiredMaxLevel; // 19 m_requiredMaxLevel
2691 //uint32 unk[MAX_ITEM_ENCHANTMENT_EFFECTS] // 20-22 unk
2692 //float unk2[MAX_ITEM_ENCHANTMENT_EFFECTS] // 23-25 unk2
2693};
2694
2696{
2697 uint32 ID; // 0 m_ID
2698 uint8 Color[5]; // 1-5 m_lt_operandType[5]
2699 //uint32 LT_Operand[5]; // 6-10 m_lt_operand[5]
2700 uint8 Comparator[5]; // 11-15 m_operator[5]
2701 uint8 CompareColor[5]; // 15-20 m_rt_operandType[5]
2702 uint32 Value[5]; // 21-25 m_rt_operand[5]
2703 //uint8 Logic[5] // 25-30 m_logic[5]
2704};
2705
2707{
2709 uint32 Category; // 1, 0 - can't be controlled?, 1 - something guardian?, 2 - pet?, 3 - something controllable?, 4 - taxi/mount?
2710 uint32 Faction; // 2, 14 rows > 0
2711 uint32 Type; // 3, see enum
2712 int32 Slot; // 4, 0-6
2714};
2715
2716#define MAX_TALENT_RANK 1 // REMOVE ME !!!
2717#define MAX_PET_TALENT_RANK 1 // use in calculations, expected <= MAX_TALENT_RANK
2718#define MAX_TALENT_TABS 4
2719
2721{
2723 //uint32 unk0; // 1
2725 //uint32 Col; // 3
2727 //uint32 unk1; // 5
2728 //uint32 unk2; // 6
2729 //uint32 unk3; // 7
2732 //char* description // 10
2733};
2734
2736{
2737 //uint32 ID; // 0 m_ID
2738 uint32 map_id; // 1 m_ContinentID
2739 float x; // 2 m_x
2740 float y; // 3 m_y
2741 float z; // 4 m_z
2742 char* name; // 5 m_Name_lang
2743 uint32 MountCreatureID[2]; // 6-7 m_MountCreatureID[2]
2744 //uint32 conditionId // 8 - Pandaria
2745 //uint32 Flags; // 9 m_Flags
2746 //float mapOffset[2]; // 10-11
2747};
2748
2750{
2751 uint32 ID; // 0 m_ID
2752 uint32 from; // 1 m_FromTaxiNode
2753 uint32 to; // 2 m_ToTaxiNode
2754 uint32 price; // 3 m_Cost
2755};
2756
2758{
2759 // 0 m_ID
2760 uint32 path; // 1 m_PathID
2761 uint32 index; // 2 m_NodeIndex
2762 uint32 mapid; // 3 m_ContinentID
2763 float x; // 4 m_LocX
2764 float y; // 5 m_LocY
2765 float z; // 6 m_LocZ
2766 uint32 actionFlag; // 7 m_flags
2767 uint32 delay; // 8 m_delay
2768 uint32 arrivalEventID; // 9 m_arrivalEventID
2769 uint32 departureEventID; // 10 m_departureEventID
2770};
2771
2773{
2774 //uint32 ID; // 0
2775 //char* name; // 1 m_name_lang
2776 uint32 categoryType; // 2 m_totemCategoryType (one for specialization)
2777 uint32 categoryMask; // 3 m_totemCategoryMask (compatibility mask for same type: different for totems, compatible from high to low for rods)
2778};
2779
2781{
2782 //uint32 Id;
2783 //uint32 MinPower;
2785 //uint32 Unk0;
2786 //uint32 Unk1;
2787 //float Unk2;
2788 //float Unk3;
2789 //uint32 BarType;
2790 //uint32 TextureFile[6];
2791 //uint32 Unk4[6];
2792 //uint32 DisplayFlags;
2793 //char* PowerName;
2794 //char* CostString;
2795 //char* EmptyMessage;
2796 //char* Tooltip;
2797 //float StartInset;
2798 //float EndInset;
2799};
2800
2802{
2803 //uint32 Id;
2806 float X;
2807 float Y;
2808 float Z;
2809 //uint32 MovementId;
2810};
2811
2813{
2814 //uint32 Id;
2817 float X;
2818 float Y;
2819 float Z;
2820 float W;
2821};
2822
2823#define MAX_VEHICLE_SEATS 8
2824
2826{
2829 //uint32 flags2 // 2
2830 //float m_turnSpeed; // 3
2831 //float m_pitchSpeed; // 4
2832 //float m_pitchMin; // 5
2833 //float m_pitchMax; // 6
2835 //float m_mouseLookOffsetPitch; // 15
2836 //float m_cameraFadeDistScalarMin; // 16
2837 //float m_cameraFadeDistScalarMax; // 17
2838 //float m_cameraPitchOffset; // 18
2839 //float m_facingLimitLeft; // 19
2840 //float m_facingLimitRight; // 20
2841 //float m_msslTrgtTurnLingering; // 21
2842 //float m_msslTrgtPitchLingering; // 22
2843 //float m_msslTrgtMouseLingering; // 23
2844 //float m_msslTrgtEndOpacity; // 24
2845 //float m_msslTrgtArcSpeed; // 25
2846 //float m_msslTrgtArcRepeat; // 26
2847 //float m_msslTrgtArcWidth; // 27
2848 //float m_msslTrgtImpactRadius[2]; // 28-29
2849 //char* m_msslTrgtArcTexture; // 30
2850 //char* m_msslTrgtImpactTexture; // 31
2851 //char* m_msslTrgtImpactModel[2]; // 32-33
2852 //float m_cameraYawOffset; // 34
2853 //uint32 m_uiLocomotionType; // 35
2854 //float m_msslTrgtImpactTexRadius; // 36
2855 //uint32 m_uiSeatIndicatorType; // 37
2857 //uint32 // 39
2858 //uint32 // 40
2859};
2860
2862{
2865 //int32 m_attachmentID; // 2
2869 //float m_enterPreDelay; // 6
2870 //float m_enterSpeed; // 7
2871 //float m_enterGravity; // 8
2872 //float m_enterMinDuration; // 9
2873 //float m_enterMaxDuration; // 10
2874 //float m_enterMinArcHeight; // 11
2875 //float m_enterMaxArcHeight; // 12
2876 //int32 m_enterAnimStart; // 13
2877 //int32 m_enterAnimLoop; // 14
2878 //int32 m_rideAnimStart; // 15
2879 //int32 m_rideAnimLoop; // 16
2880 //int32 m_rideUpperAnimStart; // 17
2881 //int32 m_rideUpperAnimLoop; // 18
2882 //float m_exitPreDelay; // 19
2883 //float m_exitSpeed; // 20
2884 //float m_exitGravity; // 21
2885 //float m_exitMinDuration; // 22
2886 //float m_exitMaxDuration; // 23
2887 //float m_exitMinArcHeight; // 24
2888 //float m_exitMaxArcHeight; // 25
2889 //int32 m_exitAnimStart; // 26
2890 //int32 m_exitAnimLoop; // 27
2891 //int32 m_exitAnimEnd; // 28
2892 //float m_passengerYaw; // 29
2893 //float m_passengerPitch; // 30
2894 //float m_passengerRoll; // 31
2895 //int32 m_passengerAttachmentID; // 32
2896 //int32 m_vehicleEnterAnim; // 33
2897 //int32 m_vehicleExitAnim; // 34
2898 //int32 m_vehicleRideAnimLoop; // 35
2899 //int32 m_vehicleEnterAnimBone; // 36
2900 //int32 m_vehicleExitAnimBone; // 37
2901 //int32 m_vehicleRideAnimLoopBone; // 38
2902 //float m_vehicleEnterAnimDelay; // 39
2903 //float m_vehicleExitAnimDelay; // 40
2904 //uint32 m_vehicleAbilityDisplay; // 41
2905 //uint32 m_enterUISoundID; // 42
2906 //uint32 m_exitUISoundID; // 43
2908 // 45-56 added in 3.1, floats mostly
2909
2918};
2919
2921{
2922 //uint32 Id; // 0 index
2923 int32 rootId; // 1 used in root WMO
2924 int32 adtId; // 2 used in adt file
2925 int32 groupId; // 3 used in group WMO
2926 //uint32 field4;
2927 //uint32 field5;
2928 //uint32 field6;
2929 //uint32 field7;
2930 //uint32 field8;
2931 uint32 Flags; // 9 used for indoor/outdoor determination
2932 uint32 areaId; // 10 link to AreaTableEntry.ID
2933 //char *Name; // 11 m_AreaName_lang
2934 //uint32 field12; // 12
2935 //uint32 field13; // 13
2936 //uint32 field14; // 14
2937};
2938
2940{
2941 //uint32 ID; // 0
2943 //uint32 area_id; // 2 index (continent 0 areas ignored)
2944 //char* internal_name // 3
2945 float y1; // 4
2946 float y2; // 5
2947 float x1; // 6
2948 float x2; // 7
2949 int32 virtual_map_id; // 8 -1 (map_id have correct map) other: virtual map where zone show (map_id - where zone in fact internally)
2950 // int32 dungeonMap_id; // 9 pointer to DungeonMap.dbc (owerride x1, x2, y1, y2 coordinates)
2951 // uint32 parentMapID; // 10
2952
2953 // uint32 minRecommendedLevel; // 12 Minimum recommended level displayed on world map
2954 // uint32 maxRecommendedLevel; // 13 Maximum recommended level displayed on world map
2955};
2956
2957#define MAX_WORLD_MAP_OVERLAY_AREA_IDX 4
2958
2960{
2961 //uint32 ID; // 0
2962 //uint32 worldMapAreaId; // 1 idx in WorldMapArea.dbc
2964 //char* internal_name // 6 m_textureName
2965 // 7 m_textureWidth
2966 // 8 m_textureHeight
2967 // 9 m_offsetX
2968 // 10 m_offsetY
2969 // 11 m_hitRectTop
2970 // 12 m_hitRectLeft
2971 // 13 m_hitRectBottom
2972 // 14 m_hitRectRight
2973 // 15 - Pandaria
2974};
2975
2977{
2980 float x; // 2
2981 float y; // 3
2982 float z; // 4
2983 //float unk1; // 5
2984 //char* name; // 6 m_AreaName_lang
2985};
2986
2987/*
2988struct WorldStateSounds
2989{
2990 uint32 ID; // 0 Worldstate
2991 uint32 unk; // 1
2992 uint32 areaTable; // 2
2993 uint32 WMOAreaTable; // 3
2994 uint32 zoneIntroMusicTable; // 4
2995 uint32 zoneIntroMusic; // 5
2996 uint32 zoneMusic; // 6
2997 uint32 soundAmbience; // 7
2998 uint32 soundProviderPreferences; // 8
2999};
3000*/
3001
3002/*
3003struct WorldStateUI
3004{
3005 uint32 ID; // 0
3006 uint32 map_id; // 1 Can be -1 to show up everywhere.
3007 uint32 zone; // 2 Can be zero for "everywhere".
3008 uint32 phaseMask; // 3 Phase this WorldState is avaliable in
3009 uint32 icon; // 4 The icon that is used in the interface.
3010 char* textureFilename; // 5
3011 char* text; // 6-21 The worldstate text
3012 char* description; // 22-38 Text shown when hovering mouse on icon
3013 uint32 worldstateID; // 39 This is the actual ID used
3014 uint32 type; // 40 0 = unknown, 1 = unknown, 2 = not shown in ui, 3 = wintergrasp
3015 uint32 unk1; // 41
3016 uint32 unk2; // 43
3017 uint32 unk3; // 44-58
3018 uint32 unk4; // 59-61 Used for some progress bars.
3019 uint32 unk7; // 62 Unused in 3.3.5a
3020};
3021*/
3022
3023// GCC have alternative #pragma pack() syntax and old gcc version not support pack(pop), also any gcc version not support it at some platform
3024#if defined(__GNUC__)
3025#pragma pack()
3026#else
3027#pragma pack(pop)
3028#endif
3029
3030typedef std::unordered_map<uint32, std::set<uint32>> PhaseGroupContainer;
3031
3033{
3034 std::vector<std::string> stringVectorArray[2];
3035};
3036
3037typedef std::map<uint32, VectorArray> NameGenVectorArraysMap;
3038
3039// Structures not used for casting to loaded DBC data and not required then packing
3041{
3043 MapDifficulty(uint32 difficultyID, std::string _errorMessage, uint32 _resetTime, uint32 _maxPlayers, bool _hasErrorMessage)
3044 : DifficultyID(difficultyID), ErrorMessage(_errorMessage), resetTime(_resetTime), maxPlayers(_maxPlayers), hasErrorMessage(_hasErrorMessage) { }
3045
3047 std::string ErrorMessage;
3051};
3052
3054{
3056 TalentSpellPos(uint16 _talent_id, uint8 _rank) : talent_id(_talent_id), rank(_rank) { }
3057
3060};
3061
3062typedef std::map<uint32, TalentSpellPos> TalentSpellPosMap;
3063
3072typedef std::map<uint32, TaxiPathBySourceAndDestination> TaxiPathSetForSource;
3073typedef std::map<uint32, TaxiPathSetForSource> TaxiPathSetBySource;
3074
3076{
3080 operator TaxiPathNodeEntry const& () const { return *i_ptr; }
3081};
3082
3084typedef std::vector<TaxiPathNodeList> TaxiPathNodesByPath;
3085
3086#define TaxiMaskSize 162
3088#endif
@ VEHICLE_SEAT_FLAG_CAN_SWITCH
Definition DBCEnums.h:544
@ VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT
Definition DBCEnums.h:543
@ VEHICLE_SEAT_FLAG_UNCONTROLLED
Definition DBCEnums.h:531
@ VEHICLE_SEAT_FLAG_UNK18
Definition DBCEnums.h:535
@ MAP_COMMON
Definition DBCEnums.h:393
@ MAP_SCENARIO
Definition DBCEnums.h:398
@ MAP_DUNGEON
Definition DBCEnums.h:394
@ MAP_BATTLEGROUND
Definition DBCEnums.h:396
@ MAP_ARENA
Definition DBCEnums.h:397
@ MAP_RAID
Definition DBCEnums.h:395
@ FACTION_MASK_PLAYER
Definition DBCEnums.h:384
@ VEHICLE_SEAT_FLAG_B_EJECTABLE
Definition DBCEnums.h:557
@ VEHICLE_SEAT_FLAG_B_USABLE_FORCED
Definition DBCEnums.h:555
@ VEHICLE_SEAT_FLAG_B_USABLE_FORCED_3
Definition DBCEnums.h:559
@ VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2
Definition DBCEnums.h:558
@ VEHICLE_SEAT_FLAG_B_USABLE_FORCED_4
Definition DBCEnums.h:560
@ AREA_FLAG_SANCTUARY
Definition DBCEnums.h:308
BattlegroundBracketId
Definition DBCEnums.h:28
@ FACTION_TEMPLATE_FLAG_CONTESTED_GUARD
Definition DBCEnums.h:378
std::unordered_map< uint32, std::set< uint32 > > PhaseGroupContainer
std::vector< TaxiPathNodeList > TaxiPathNodesByPath
std::map< uint32, PetFamilySpellsSet > PetFamilySpellsStore
#define TaxiMaskSize
#define MAX_ITEM_SET_SPELLS
#define MAX_LOCK_CASE
std::map< uint32, TaxiPathBySourceAndDestination > TaxiPathSetForSource
Path< TaxiPathNodePtr, TaxiPathNodeEntry const > TaxiPathNodeList
std::map< uint32, VectorArray > NameGenVectorArraysMap
#define MAX_VEHICLE_SEATS
UNORDERED_MAP< uint32, uint32 > ClassBySkillIdStore
std::map< uint32, SpellCategorySet > SpellCategoryStore
#define MAX_CREATURE_SPELL_DATA_SLOT
#define MAX_SHAPESHIFT_SPELLS
std::map< uint32, TaxiPathSetForSource > TaxiPathSetBySource
UNORDERED_MAP< uint32, std::list< SkillLineAbilityEntry const * > > SpellsPerClassStore
#define MAX_WORLD_MAP_OVERLAY_AREA_IDX
UNORDERED_MAP< uint32, uint32 > SpellEffectScallingByEffectId
#define MAX_GROUP_AREA_IDS
#define MAX_FACTION_RELATIONS
#define MAX_MOUNT_CAPABILITIES
uint8 TaxiMask[TaxiMaskSize]
std::set< uint32 > PetFamilySpellsSet
#define MAX_OUTFIT_ITEMS
std::set< uint32 > SpellCategorySet
std::map< uint32, TalentSpellPos > TalentSpellPosMap
#define MAX_SPELL_TOTEMS
#define MAX_ITEM_ENCHANTMENT_EFFECTS
#define MAX_OVERRIDE_SPELL
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint16_t uint16
Definition Define.h:78
#define UNORDERED_MAP
Definition Path.h:21
uint32 categoryId
uint32 flags
int32 requiredFaction
uint32 ID
uint32 refAchievement
char * name
uint32 count
int32 mapID
uint32 points
uint32 criteriaTreeID
uint32 nextGroup
uint32 AreaGroupId
uint32 AreaId[MAX_GROUP_AREA_IDS]
uint32 m_AreaBit
uint32 m_ID
int32 m_ExplorationLevel
uint32 m_FactionGroupMask
char * m_AreaName
float m_MinElevation
bool IsSanctuary() const
uint32 m_flags
uint32 m_ParentAreaID
uint32 m_LiquidType[4]
uint32 m_ContinentID
float box_orientation
uint32 mapid
float box_x
float radius
float z
float box_z
float box_y
uint32 id
float y
float x
float Value[5]
uint32 houseId
uint32 faction
uint32 cutPercent
uint32 depositPercent
uint32 price
uint32 Id
uint32 type
uint32 race
uint32 gender
uint32 hair_id
int32 mapid[16]
uint32 HolidayWorldStateId
uint32 id
uint32 type
char * name
uint32 maxGroupSize
int32 ItemId[MAX_OUTFIT_ITEMS]
uint8 Gender
uint8 Class
uint8 Race
uint32 bit_index
char * name
char * pattern
uint32 ChannelID
uint32 flags
uint32 RAPPerAgility
uint32 APPerAgility
uint32 spellfamily
uint32 powerType
uint32 CinematicSequence
char * name
uint32 APPerStrenth
uint32 classId
uint32 power
uint32 CinematicSequence
uint32 model_f
uint32 model_m
uint32 FactionID
char * name
uint32 TeamID
uint32 MasterySpellId
uint32 Id
uint32 classId
uint32 TabPage
uint32 PetTabPage
float EndPosY
float EndPosZ
uint32 soundid
uint32 id
float GlobalRotation
char * filename
float EndPosX
uint32 cinematicCamera
uint32 Id
uint32 ModelId
float scale
float maxScale
float minScale
uint32 minScaleLevel
uint32 petFoodMask
int32 petTalentType
uint32 ID
char * Name
uint32 skillLine[2]
uint32 maxScaleLevel
float MountHeight
float CollisionHeight
uint32 spellId[MAX_CREATURE_SPELL_DATA_SLOT]
uint32 ID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@155054343104315247226070332164215206302033027366 bg_objective
uint32 lootType
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@363072277046354060141332027202235316302276212336 gain_reputation
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@170213076040032203356242316360022040077201163357 reach_skill_level
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@315274205240162012350307044336136237232251153207 collect_battle_pet_species
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@227002073247122217017204074123364031136235260326 highest_personal_rating
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@365330015044177022354332336123067002370060350076 do_emote
uint32 bgMapID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@377337335252316161360312250372213142222074313246 own_item
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@230116227014042311017266076326225210312114021076 play_arena
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@142310154004317143375055331275067102137173015014 own_rank
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@046316241355326241376163066335143213363124144336 hk_race
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@345234236313026077117152255011006124312363305150 learn_spell
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@174144145255077235152273004223233200017324167264 currencyGain
uint32 areaReference
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@021203240056244120276046036233301230266254012265 complete_quest
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@272036164363073024020074101121067213256041074141 complete_battleground
uint32 zoneID
uint32 ID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@330357217270324154104324360247137215162104266172 highest_spellpower
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@303224370273354123156275070201154037203323021040 learn_skill_line
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@252141276047360231264041005143012263253252060321 equip_epic_item
uint32 emoteID
uint32 teamtype
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@155224045270122077025256231335026265046243154254 cast_spell
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@200263160026040337222023353106312212300036340373 learn_skillline_spell
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@137206212146252026123010125054215361112224112331 win_arena
uint32 timedCriteriaMiscId
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@365170344020074117207320327077005227062241224215 complete_raid
uint32 manLimit
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@202032204316306143021314120023223157357053237132 roll_greed_on_loot
uint32 speciesID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@202336103114306232331123375244143007076276002002 highest_team_rating
uint32 timedCriteriaStartType
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@261350000125014310000344247113360061326175015106 own_battle_pet_count
uint32 questID
uint32 type
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@124155230370177343123035335307267321042041343165 complete_quests_in_zone
uint32 raceID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@041161311202006352163304157204037126222315142217 highest_stat
uint32 modifierTreeId
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@145020032061045307244276146151306076241166343074 kill_creature
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@040126152076004320345151123073342161374077106175 win_bg
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@377251333175221103040333313262154062016061002177 use_gameobject
uint32 timeLimit
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@344224337173133016032174023000100210306163234367 honorable_kill_at_area
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@244346302212310206347165373262203377033156125356 death_in_dungeon
uint32 spellSchool
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@226166206351331214306246166272022103053025012230 reach_battle_pet_level
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@266307260176344114246031320163044166337075116054 highest_rating
uint32 skillID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@177214247114106113217220330146125332371234032103 hk_class
uint32 itemID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@227023175372070160261247076046030075244063322250 reach_team_rating
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@043245350336207244022374376310206337252016003124 learn_skill_level
uint32 level
uint32 completionFlag
uint32 creatureEntry
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@156371326021026040167240312273017356056170321234 be_spell_target
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@257014116243264075112106007135041333265226315121 explore_area
uint32 linkedAchievement
uint32 goEntry
uint32 statType
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@234250345245021161254340245153131216233003346165 killed_by_creature
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@345223042050174377263075217177002173065115333020 use_item
uint32 objectiveId
uint32 worldStateValue
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@344100020264050077045201301371234012311136275030 loot_item
uint32 spellID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@166000337046172330023301127054026235073161252152 complete_achievement
uint32 skillLine
uint32 failEvent
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@070241247357031051035113042322125241115042267040 collect_battle_pet
uint32 itemSlot
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@017210121314152347012226254260077214375242224331 death_from
uint32 mapID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@203206252056004136317074254276154324014203311247 death_at_map
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@253160372177130002132066366375246177013131122043 roll_need_on_loot
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@212237251022357172040173021300062006341106034137 loot_type
uint32 creatureID
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@026057243202175376126351140041260066004176333172 raw
uint32 failAsset
uint32 areaID
uint32 classID
uint32 rank
uint32 factionID
uint32 count
uint32 worldStateId
uint32 criteriaArg1
uint32 groupSize
uint32 rollValue
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@200167322244331233113111044210152015217015334006 fish_in_gameobject
uint32 currency
uint32 ratingType
struct CriteriaEntry::@350132267162301254113063251105274111176100346071::@033317225107033255210024347312044247305221351170 equip_item
uint32 parentID
uint32 ID
uint32 criteriaCount
uint32 criteriaID
uint32 Flags
uint32 WeekCap
uint32 ID
uint32 Category
uint32 TotalCap
uint32 DamagedDisplayId
uint32 RebuildingDisplayId
uint32 DestroyedDisplayId
uint32 flags
uint32 maptype
uint32 DownscaleID
uint32 DiffID
uint32 encounterIndex
uint32 mapId
int32 difficulty
char * encounterName
uint32 multiplier[29]
float quality_mod
uint32 Id
uint32 textid
uint32 spilloverMaxRankIn
uint32 ID
int32 BaseRepValue[4]
uint32 team
char * name
float spilloverRateIn
float spilloverRateOut
uint32 BaseRepRaceMask[4]
bool CanHaveReputation() const
uint32 ReputationFlags[4]
uint32 BaseRepClassMask[4]
int32 reputationListID
bool IsHostileTo(FactionTemplateEntry const &entry) const
uint32 ID
uint32 faction
bool IsHostileToPlayers() const
bool IsContestedGuardFaction() const
uint32 friendlyMask
uint32 ourMask
bool IsNeutralToAll() const
uint32 friendFaction[MAX_FACTION_RELATIONS]
uint32 hostileMask
bool IsFriendlyTo(FactionTemplateEntry const &entry) const
uint32 enemyFaction[MAX_FACTION_RELATIONS]
uint32 factionFlags
float maxX
float maxY
float minY
float minX
float minZ
float maxZ
uint32 color
uint32 spellitemenchantement
uint32 TypeFlags
uint32 SpellId
uint32 Id
uint32 TypeFlags
float cost
float value
float base
float ratio
float base
float ratio
float ratio
float ratio
float ratio
float ratio
float ratio
float ratio
float value
uint32 SpellId
uint32 Level
uint32 Id
float ClothFactor
float LeatherFactor
float PlateFactor
float MailFactor
float Factor
float Factor
float Factor
float Value[7]
float Value[7]
float Value[4]
float PriceFactor
float DPS[7]
uint32 RequiredDisenchantSkill
uint32 Id
uint32 ItemQuality
uint32 MaxItemLevel
uint32 ItemClass
uint32 MinItemLevel
uint32 maxCount
uint32 mode
float WeaponFactor
float ArmorFactor
uint32 enchant_id[MAX_ITEM_ENCHANTMENT_EFFECTS]
char * nameSuffix
uint32 ID
uint32 enchant_id[5]
uint32 prefix[5]
uint32 ID
char * nameSuffix
float SourceMultiplier
uint32 SourceStat
uint32 FinalStat
float FinalMultiplier
char * name
uint32 required_skill_value
uint32 items_to_triggerspell[MAX_ITEM_SET_SPELLS]
uint32 spells[MAX_ITEM_SET_SPELLS]
uint32 required_skill_id
uint32 m_ID
int32 m_ContinentID
int32 m_Faction
uint32 m_CountTank
uint32 m_MaxLevel
uint32 m_ExpansionLevel
uint32 Entry() const
uint32 m_TargetLevel
uint32 m_RandomDungeonID
uint32 m_ScenarioID
uint32 m_MinLevel
uint32 m_DifficultyID
uint32 m_CountDamage
uint32 m_Flags
uint32 m_CountHealer
uint32 m_Type
uint32 m_SubType
char * m_Name
uint32 m_GroupID
uint32 m_TargetMaxLevel
uint32 m_TargetMinLevel
uint32 Type
uint32 Id
uint32 SpellId
uint32 Type[MAX_LOCK_CASE]
uint32 Index[MAX_LOCK_CASE]
uint32 Skill[MAX_LOCK_CASE]
char * content
uint32 maxPlayers
uint32 resetTime
uint32 MapId
char * areaTriggerText
uint32 Difficulty
std::string ErrorMessage
MapDifficulty(uint32 difficultyID, std::string _errorMessage, uint32 _resetTime, uint32 _maxPlayers, bool _hasErrorMessage)
float entrance_y
bool IsBattleground() const
bool IsScenario() const
bool GetEntrancePos(int32 &mapid, float &x, float &y) const
uint32 addon
bool IsNonRaidInstance() const
int32 entrance_map
int32 rootPhaseMap
uint32 Expansion() const
bool IsContinent() const
uint32 linked_zone
bool IsInstance() const
bool IsWorldMap() const
uint32 MapID
bool IsBattlegroundOrArena() const
float entrance_x
char * name
bool IsDungeon() const
bool IsRaid() const
uint32 map_type
bool IsBattleArena() const
bool Instanceable() const
uint32 ID
uint32 conditionValue[2]
uint32 conditionType
uint32 parent
uint32 RequiredSpell
int32 RequiredMap
uint32 RequiredRidingSkill
uint32 RequiredArea
uint32 Id
uint32 RequiredAura
uint32 SpeedModSpell
uint32 Flags
uint32 MountCapability[MAX_MOUNT_CAPABILITIES]
uint32 Id
char * name
uint32 gender
uint32 race
uint32 spellId[MAX_OVERRIDE_SPELL]
uint32 ID
uint32 PhaseId
uint32 GroupId
uint32 maxLevel
uint32 difficulty
BattlegroundBracketId GetBracketId() const
uint32 mapId
uint32 bracketId
uint32 minLevel
int32 QuestRewFactionValue[10]
uint32 Id
int32 X
uint32 BlobId
int32 Y
uint32 id
uint32 Exp[10]
uint32 EpicPropertiesPoints[5]
uint32 UncommonPropertiesPoints[5]
uint32 RarePropertiesPoints[5]
uint32 Id
uint32 FragmentCurrencyId
uint32 KeystoneItemId
uint32 RequiredFragmentCount
uint32 Id
uint32 Rarity
uint32 ResearchBranchId
uint32 Id
uint32 QuestPOIBlobId
uint32 MapId
uint32 MaxLevel
uint32 Modifier[10]
int32 StatMod[10]
uint32 Spellpower
uint32 ShieldArmor
uint32 GetDPSAndDamageMultiplier(uint32 subClass, bool isCasterWeapon, float *damageMultiplier) const
uint32 GetArmor(uint32 inventoryType, uint32 armorType) const
uint32 StatMultiplier[5]
uint32 GetStatMultiplier(uint32 inventoryType) const
uint32 CloakArmor
uint32 dpsMod[6]
uint32 Armor[8][4]
uint32 req_skill_value
uint32 spellId
uint32 min_value
uint32 classmask
uint32 max_value
uint32 learnOnGetSkill
uint32 racemask
uint32 skillId
uint32 forward_spellid
char * name
uint32 id
int32 categoryId
uint32 canLink
uint32 Id
uint32 SpellId
uint32 RemovesSpellId
uint32 SpecializationId
uint32 StackAmount
uint32 procFlags
uint32 procCharges
uint32 procChance
uint32 excludeTargetAuraSpell
uint32 TargetAuraState
uint32 excludeCasterAuraSpell
uint32 TargetAuraStateNot
uint32 CasterAuraState
uint32 targetAuraSpell
uint32 CasterAuraStateNot
uint32 casterAuraSpell
int32 CastTime
uint32 FacingCasterFlags
uint32 RequiresSpellFocus
int32 AreaGroupId
uint32 PreventionType
uint32 Dispel
uint32 DmgClass
uint32 StartRecoveryCategory
uint32 Category
uint32 Mechanic
uint32 Flags
uint32 Id
uint32 SpellFamilyName
flag128 SpellFamilyFlags
uint32 StartRecoveryTime
uint32 RecoveryTime
uint32 CategoryRecoveryTime
uint32 ID
int32 SpellID[4]
int32 Duration[3]
uint32 EffectApplyAuraName
uint32 EffectChainTarget
uint32 Effect
uint32 EffectItemType
float EffectValueMultiplier
int32 EffectMiscValue
float EffectRealPointsPerLevel
float EffectDamageMultiplier
uint32 EffectTriggerSpell
uint32 EffectRadiusIndex
int32 EffectMiscValueB
uint32 EffectSpellId
float EffectPointsPerComboPoint
uint32 EffectAuraTickCount
uint32 EffectIndex
float EffectBonusMultiplier
uint32 EffectImplicitTargetA
int32 EffectDieSides
uint32 Id
int32 EffectBasePoints
flag128 EffectSpellClassMask
uint32 EffectRadiusMaxIndex
uint32 EffectImplicitTargetB
uint32 EffectMechanic
uint32 Id
float Multiplier
uint32 SpellEffectId
float RandomPointsMultiplier
float OtherMultiplier
uint32 ResearchProject
char * SpellName
uint32 runeCostID
uint32 SpellCastingRequirementsId
uint32 SpellLevelsId
uint32 SpellMiscId
uint32 SpellTargetRestrictionsId
uint32 SpellShapeshiftId
uint32 SpellCategoriesId
uint32 Id
uint32 SpellReagentsId
uint32 SpellAuraOptionsId
uint32 SpellEquippedItemsId
uint32 SpellAuraRestrictionsId
uint32 SpellClassOptionsId
uint32 SpellTotemsId
uint32 SpellScalingId
uint32 SpellInterruptsId
uint32 SpellCooldownsId
int32 EquippedItemSubClassMask
int32 EquippedItemClass
int32 EquippedItemInventoryTypeMask
uint32 ID
uint32 AuraInterruptFlags
uint32 ChannelInterruptFlags
uint32 InterruptFlags
uint8 Color[5]
uint8 CompareColor[5]
uint32 ID
uint32 Value[5]
uint8 Comparator[5]
uint32 EnchantmentCondition
uint32 GemID
uint32 requiredMinLevel
uint32 type[MAX_ITEM_ENCHANTMENT_EFFECTS]
uint32 aura_id
uint32 requiredSkill
uint32 amount[MAX_ITEM_ENCHANTMENT_EFFECTS]
uint32 requiredSkillValue
uint32 requiredMaxLevel
char * description
uint32 ID
uint32 slot
uint32 spellid[MAX_ITEM_ENCHANTMENT_EFFECTS]
uint32 baseLevel
uint32 maxLevel
uint32 spellLevel
uint32 AttributesEx3
uint32 AttributesEx7
uint32 AttributesEx9
uint32 SchoolMask
uint32 AttributesEx8
float speed
uint32 rangeIndex
uint32 DurationIndex
uint32 SpellIconID
uint32 CastingTimeIndex
uint32 AttributesEx5
uint32 AttributesEx2
uint32 SpellVisual[2]
uint32 AttributesEx4
uint32 Attributes
uint32 AttributesEx
uint32 activeIconID
uint32 AttributesEx6
float ManaCostPercentageFloat
uint32 ShapeShiftSpellID
uint32 manaPerSecondPerLevel
float ChannelCostPercentageFloat
uint32 manaCostPerlevel
uint32 spellId
uint32 powerType
uint32 manaPerSecond
uint32 manaCost
float RadiusPerLevel
uint32 ID
float RadiusMax
float RadiusMin
float maxRangeFriend
float minRangeFriend
float minRangeHostile
uint32 ID
float maxRangeHostile
uint32 type
bool NoRuneCost() const
bool NoRunicPowerGain() const
uint32 RuneCost[4]
uint32 runePowerGain
uint32 ID
int32 CoefLevelBase
float CoefBase
int32 ScalingClass
int32 CastTimeMaxLevel
int32 CastTimeMax
int32 CastTimeMin
uint32 StancesNot
uint32 Stances
uint32 flags1
uint32 stanceSpell[MAX_SHAPESHIFT_SPELLS]
uint32 modelID_H
int32 creatureType
uint32 ID
uint32 modelID_A
uint32 attackSpeed
uint32 mount_type
uint32 Targets
uint32 MaxAffectedTargets
uint32 TargetCreatureType
uint32 TotemCategory[MAX_SPELL_TOTEMS]
uint32 Totem[MAX_SPELL_TOTEMS]
uint32 Faction
uint32 Flags
uint32 Type
int32 Slot
uint32 Category
uint32 Id
uint32 SpellId
uint32 Row
uint32 playerClass
uint32 OverrideSpellID
uint32 TalentID
TalentSpellPos(uint16 _talent_id, uint8 _rank)
float z
char * name
uint32 map_id
float x
float y
uint32 MountCreatureID[2]
TaxiPathBySourceAndDestination(uint32 _id, uint32 _price)
uint32 ID
uint32 price
uint32 to
uint32 from
float y
uint32 arrivalEventID
uint32 actionFlag
uint32 departureEventID
float x
uint32 path
uint32 mapid
uint32 delay
float z
uint32 index
TaxiPathNodeEntry const * i_ptr
TaxiPathNodePtr(TaxiPathNodeEntry const *ptr)
uint32 categoryType
uint32 categoryMask
float Y
float Z
uint32 TransportEntry
float X
uint32 TimeSeg
uint32 TimeSeg
float W
float Y
float Z
float X
uint32 TransportEntry
uint32 MaxPower
std::vector< std::string > stringVectorArray[2]
uint32 m_seatID[MAX_VEHICLE_SEATS]
uint32 m_flags
uint32 m_powerType
uint32 m_ID
bool IsEjectable() const
bool CanEnterOrExit() const
uint32 m_flagsB
float m_attachmentOffsetX
uint32 m_ID
float m_attachmentOffsetY
bool IsUsableByOverride() const
bool CanSwitchFromSeat() const
float m_attachmentOffsetZ
uint32 m_flags
int32 groupId
uint32 Flags
int32 rootId
uint32 areaId
int32 adtId
float x2
float x1
float y1
uint32 map_id
float y2
int32 virtual_map_id
uint32 areatableID[MAX_WORLD_MAP_OVERLAY_AREA_IDX]
uint32 ID
float x
float z
float y
uint32 map_id
float ratio