/* * Copyright (C) 2005-2008 MaNGOS * * Copyright (C) 2008 Trinity * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef DBCSTRUCTURE_H #define DBCSTRUCTURE_H #include "DBCEnums.h" #include "Platform/Define.h" #include #include #include // Structures using to access raw DBC data and required packing to portability // 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 #if defined( __GNUC__ ) #pragma pack(1) #else #pragma pack(push,1) #endif struct AreaTableEntry { uint32 ID; // 0 uint32 mapid; // 1 uint32 zone; // 2 if 0 then it's zone, else it's zone id of this area uint32 exploreFlag; // 3, main index uint32 flags; // 4, unknown value but 312 for all cities // 5-9 unused int32 area_level; // 10 char* area_name[16]; // 11-26 // 27, string flags, unused uint32 team; // 28 }; struct AreaTriggerEntry { uint32 id; // 0 uint32 mapid; // 1 float x; // 2 float y; // 3 float z; // 4 float radius; // 5 float box_x; // 6 extent x edge float box_y; // 7 extent y edge float box_z; // 8 extent z edge float box_orientation; // 9 extent rotation by about z axis }; struct BankBagSlotPricesEntry { uint32 ID; uint32 price; }; struct BattlemasterListEntry { uint32 id; // 0 uint32 mapid[3]; // 1-3 mapid // 4-8 unused uint32 type; // 9 (3 - BG, 4 - arena) uint32 minlvl; // 10 uint32 maxlvl; // 11 uint32 maxplayersperteam; // 12 // 13-14 unused char* name[16]; // 15-30 // 31 string flag, unused // 32 unused }; #define MAX_OUTFIT_ITEMS 12 // #define MAX_OUTFIT_ITEMS 24 // 12->24 in 3.0.x struct CharStartOutfitEntry { //uint32 Id; // 0 uint32 RaceClassGender; // 1 (UNIT_FIELD_BYTES_0 & 0x00FFFFFF) comparable (0 byte = race, 1 byte = class, 2 byte = gender) int32 ItemId[MAX_OUTFIT_ITEMS]; // 2-13 //int32 ItemDisplayId[MAX_OUTFIT_ITEMS]; // 14-25 not required at server side //int32 ItemInventorySlot[MAX_OUTFIT_ITEMS]; // 26-37 not required at server side //uint32 Unknown1; // 38, unique values (index-like with gaps ordered in other way as ids) //uint32 Unknown2; // 39 //uint32 Unknown3; // 40 }; struct CharTitlesEntry { uint32 ID; // 0, title ids, for example in Quest::GetCharTitleId() //uint32 unk1; // 1 flags? //char* name[16]; // 2-17, unused // 18 string flag, unused //char* name2[16]; // 19-34, unused // 35 string flag, unused uint32 bit_index; // 36 used in PLAYER_CHOSEN_TITLE and 1<