All pastes #900694 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-02-12 02:53 UTC
rendered paste body
Index: trunk/src/ascent-shared/Database/DBCStores.cpp
===================================================================
--- trunk/src/ascent-shared/Database/DBCStores.cpp	(revision 3814)
+++ trunk/src/ascent-shared/Database/DBCStores.cpp	(working copy)
@@ -21,69 +21,71 @@
 #include "DataStore.h"
 #include "NGLog.h"
 
-SERVER_DECL DBCStorage<GemPropertyEntry> dbcGemProperty;
-SERVER_DECL DBCStorage<ItemSetEntry> dbcItemSet;
-SERVER_DECL DBCStorage<Lock> dbcLock;
-SERVER_DECL DBCStorage<SpellEntry> dbcSpell;
-SERVER_DECL DBCStorage<SpellDuration> dbcSpellDuration;
-SERVER_DECL DBCStorage<SpellRange> dbcSpellRange;
-SERVER_DECL DBCStorage<emoteentry> dbcEmoteEntry;
-SERVER_DECL DBCStorage<SpellRadius> dbcSpellRadius;
-SERVER_DECL DBCStorage<SpellCastTime> dbcSpellCastTime;
-SERVER_DECL DBCStorage<AreaTable> dbcArea;
+SERVER_DECL DBCStorage<AreaTableDBC> dbcAreaTable;
+SERVER_DECL DBCStorage<AuctionHouseDBC> dbcAuctionHouse;
+SERVER_DECL DBCStorage<ChatChannelsDBC> dbcChatChannels;
+SERVER_DECL DBCStorage<ChrClassesDBC> dbcChrClasses;
+SERVER_DECL DBCStorage<ChrRacesDBC> dbcChrRaces;
+SERVER_DECL DBCStorage<CreatureFamilyDBC> dbcCreatureFamily;
+SERVER_DECL DBCStorage<CreatureSpellDataDBC> dbcCreatureSpellData;
+SERVER_DECL DBCStorage<EmotesTextDBC> dbcEmotesText;
+SERVER_DECL DBCStorage<FactionDBC> dbcFaction;
 SERVER_DECL DBCStorage<FactionTemplateDBC> dbcFactionTemplate;
-SERVER_DECL DBCStorage<FactionDBC> dbcFaction;
-SERVER_DECL DBCStorage<EnchantEntry> dbcEnchant;
-SERVER_DECL DBCStorage<RandomProps> dbcRandomProps;
-SERVER_DECL DBCStorage<skilllinespell> dbcSkillLineSpell;
-SERVER_DECL DBCStorage<skilllineentry> dbcSkillLine;
-SERVER_DECL DBCStorage<DBCTaxiNode> dbcTaxiNode;
-SERVER_DECL DBCStorage<DBCTaxiPath> dbcTaxiPath;
-SERVER_DECL DBCStorage<DBCTaxiPathNode> dbcTaxiPathNode;
-SERVER_DECL DBCStorage<AuctionHouseDBC> dbcAuctionHouse;
-SERVER_DECL DBCStorage<TalentEntry> dbcTalent;
-SERVER_DECL DBCStorage<TalentTabEntry> dbcTalentTab;
-SERVER_DECL DBCStorage<CreatureSpellDataEntry> dbcCreatureSpellData;
-SERVER_DECL DBCStorage<CreatureFamilyEntry> dbcCreatureFamily;
-SERVER_DECL DBCStorage<CharClassEntry> dbcCharClass;
-SERVER_DECL DBCStorage<CharRaceEntry> dbcCharRace;
-SERVER_DECL DBCStorage<MapEntry> dbcMap;
-SERVER_DECL DBCStorage<ItemExtendedCostEntry> dbcItemExtendedCost;
-SERVER_DECL DBCStorage<ItemRandomSuffixEntry> dbcItemRandomSuffix;
-SERVER_DECL DBCStorage<CombatRatingDBC> dbcCombatRating;
-SERVER_DECL DBCStorage<ChatChannelDBC> dbcChatChannels;
+SERVER_DECL DBCStorage<GemPropertiesDBC> dbcGemProperties;
+SERVER_DECL DBCStorage<gtCombatRatingsDBC> dbcgtCombatRatings;
+SERVER_DECL DBCStorage<ItemExtendedCostDBC> dbcItemExtendedCost;
+SERVER_DECL DBCStorage<ItemRandomPropertiesDBC> dbcItemRandomProperties;
+SERVER_DECL DBCStorage<ItemRandomSuffixDBC> dbcItemRandomSuffix;
+SERVER_DECL DBCStorage<ItemSetDBC> dbcItemSet;
+// LFGDungeons.dbc?
+SERVER_DECL DBCStorage<LockDBC> dbcLock;
+SERVER_DECL DBCStorage<MapDBC> dbcMap;
+// NameGen.dbc??
+SERVER_DECL DBCStorage<SkillLineDBC> dbcSkillLine;
+SERVER_DECL DBCStorage<SkillLineAbilityDBC> dbcSkillLineAbility;
+SERVER_DECL DBCStorage<SpellDBC> dbcSpell;
+SERVER_DECL DBCStorage<SpellCastTimesDBC> dbcSpellCastTimes;
+SERVER_DECL DBCStorage<SpellDurationDBC> dbcSpellDuration;
+SERVER_DECL DBCStorage<SpellItemEnchantmentDBC> dbcSpellItemEnchantment;
+SERVER_DECL DBCStorage<SpellRadiusDBC> dbcSpellRadius;
+SERVER_DECL DBCStorage<SpellRangeDBC> dbcSpellRange;
+SERVER_DECL DBCStorage<TalentDBC> dbcTalent;
+SERVER_DECL DBCStorage<TalentTabDBC> dbcTalentTab;
+SERVER_DECL DBCStorage<TaxiNodesDBC> dbcTaxiNodes;
+SERVER_DECL DBCStorage<TaxiPathDBC> dbcTaxiPath;
+SERVER_DECL DBCStorage<TaxiPathNodeDBC> dbcTaxiPathNode;
 
-const char* ItemSetFormat = "usxxxxxxxxxxxxxxxuuuuuuuuuxxxxxxxxxuuuuuuuuuuuuuuuuuu";
+const char* AreaTableFormat = "uuuuuxxxuxusxxxxxxxxxxxxxxxxuxxxxxx";
+const char* AuctionHouseFormat = "uuuusxxxxxxxxxxxxxxxu";
+const char* ChatChannelsFormat = "uuxsxxxxxxxxxxxxxxxusxxxxxxxxxxxxxxxu";
+const char* ChrClassesFormat = "uxuxsxxxxxxxxxxxxxxxusxx";
+const char* ChrRacesFormat = "uxuxuusxuxxxsuxxxxxxxxxxxxxxxxxxxxu";
+const char* CreatureFamilyFormat = "ufufuuuusxxxxxxxxxxxxxxxus";
+const char* CreatureSpellDataFormat = "uuuuuuuuu";
+const char* EmotesTextFormat = "usuuuuxuxuxuuxxuxxx";
+const char* FactionFormat = "uiuuuuxxxxiiiixxxxusxxxxxxxxxxxxxxxusxxxxxxxxxxxxxxxu";
+const char* FactionTemplateFormat = "uuuuuuuuuuuuuu";
+const char* GemPropertiesFormat = "uuuuu";
+const char* gtCombatRatingsFormat = "f";
+const char* ItemExtendedCostFormat = "uuuuuuxxuuuxxx";
+const char* ItemRandomPropertiesFormat = "usuuuxxsxxxxxxxxxxxxxxxu";
+const char* ItemRandomSuffixFormat = "usxxxxxxxxxxxxxxxusuuuuuu";
+const char* ItemSetFormat = "usxxxxxxxxxxxxxxxuuuuuuuuuuuxxxxxxxuuuuuuuuuuuuuuuuuu";
 const char* LockFormat = "uuuuuuxxxuuuuuxxxuuuuuxxxxxxxxxxx";
-const char* EmoteEntryFormat = "uxuuuuxuxuxxxxxxxxx";
-const char* skilllinespellFormat = "uuuxxxxxuuuuxxu";
-const char* EnchantEntrYFormat = "uuuuuuuuuuuuusxxxxxxxxxxxxxxxxuuuu";
-const char* GemPropertyEntryFormat = "uuuuu";
-const char* skilllineentrYFormat = "uuusxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
-const char* spellentrYFormat = "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuiuuuuuuuuuufuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuffffffiiiiiiuuuuuuuuuuuuuuufffuuuuuuuuuuuufffuuuuusxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxuuuuuuuuuuifffuuuuuu";
-const char* itemextendedcostFormat = "uuuuuuuuuuuuux";
-const char* talententryFormat = "uuuuuuuuuxxxxuxxuxxxx";
-const char* talenttabentryFormat = "uxxxxxxxxxxxxxxxxxxxuux";
-const char* spellcasttimeFormat = "uuxx";
-const char* spellradiusFormat = "ufxf";
-const char* spellrangeFormat = "uffxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
-const char* spelldurationFormat = "uuuu";
-const char* randompropsFormat = "uxuuuxxxxxxxxxxxxxxxxxxx";
-const char* areatableFormat = "uuuuuxxxuxusxxxxxxxxxxxxxxxxuxxxxxx";
-const char* factiontemplatedbcFormat = "uuuuuuuuuuuuuu";
-const char* auctionhousedbcFormat = "uuuuxxxxxxxxxxxxxxxxx";
-const char* factiondbcFormat = "uiuuuuxxxxiiiixxxxusxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
-const char* dbctaxinodeFormat = "uufffxxxxxxxxxxxxxxxxxuu";
-const char* dbctaxipathFormat = "uuuu";
-const char* dbctaxipathnodeFormat = "uuuufffuuxx";
-const char* creaturespelldataFormat = "uuuuuuuuu";
-const char* charraceFormat = "uxuxxxxxuxxxsuxxxxxxxxxxxxxxxxxxxxx";
-const char* charclassFormat = "uxuxsxxxxxxxxxxxxxxxxxxx";
-const char* creaturefamilyFormat = "ufufuuuusxxxxxxxxxxxxxxxxx";
-const char* mapentryFormat = "usuxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
-const char* itemrandomsuffixformat = "uxxxxxxxxxxxxxxxxxxuuuuuu";
-const char* combatratingformat = "f";
-const char* chatchannelformat = "uuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+const char* MapFormat = "usuxsxxxxxxxxxxxxxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+const char* SkillLineFormat = "uuusxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+const char* SkillLineAbilityFormat = "uuuuuxxuuuuuxxu";
+const char* SpellFormat = "uuuuuuuuuuuuuuuuuuuuuuuuuuuuuiuuuuuuuuuufuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuffffffiiiiiiuuuuuuuuuuuuuuufffuuuuuuuuuuuufffuuuuusxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxsxxxxxxxxxxxxxxxxuuuuuuuuuuifffuuuuuu";
+const char* SpellCastTimesFormat = "uuxx";
+const char* SpellDurationFormat = "uuuu";
+const char* SpellItemEnchantmentFormat = "uuuuuuuuuuuuusxxxxxxxxxxxxxxxuuuuu";
+const char* SpellRadiusFormat = "ufxf";
+const char* SpellRangeFormat = "uffxsxxxxxxxxxxxxxxxusxxxxxxxxxxxxxxxu";
+const char* TalentFormat = "uuuuuuuuuxxxxuxxuxxxx";
+const char* TalentTabFormat = "usxxxxxxxxxxxxxxxuuxuus";
+const char* TaxiNodesFormat = "uufffsxxxxxxxxxxxxxxxuuu";
+const char* TaxiPathFormat = "uuuu";
+const char* TaxiPathNodeFormat = "uuuufffuuxx";
 
 template<class T>
 bool loader_stub(const char * filename, const char * format, bool ind, T& l, bool loadstrs)
@@ -96,37 +98,40 @@
 
 bool LoadDBCs()
 {
+	LOAD_DBC("DBC/AreaTable.dbc", AreaTableFormat, true, dbcAreaTable, true);
+	LOAD_DBC("DBC/AuctionHouse.dbc", AuctionHouseFormat, true, dbcAuctionHouse, false);
+	LOAD_DBC("DBC/ChatChannels.dbc", ChatChannelsFormat, true, dbcChatChannels, false);
+	LOAD_DBC("DBC/ChrClasses.dbc", ChrClassesFormat, true, dbcChrClasses, true);
+	LOAD_DBC("DBC/ChrRaces.dbc", ChrRacesFormat, true, dbcChrRaces, true);
+	LOAD_DBC("DBC/CreatureFamily.dbc", CreatureFamilyFormat, true, dbcCreatureFamily, true);
+	LOAD_DBC("DBC/CreatureSpellData.dbc", CreatureSpellDataFormat, true, dbcCreatureSpellData, false);
+	LOAD_DBC("DBC/EmotesText.dbc", EmotesTextFormat, true, dbcEmotesText, false);
+	LOAD_DBC("DBC/Faction.dbc", FactionFormat, true, dbcFaction, true);
+	LOAD_DBC("DBC/FactionTemplate.dbc", FactionTemplateFormat, true, dbcFactionTemplate, false);
+	LOAD_DBC("DBC/GemProperties.dbc", GemPropertiesFormat, true, dbcGemProperties, false);
+	LOAD_DBC("DBC/gtCombatRatings.dbc", gtCombatRatingsFormat, false, dbcgtCombatRatings, false);
+	LOAD_DBC("DBC/ItemExtendedCost.dbc", ItemExtendedCostFormat, true, dbcItemExtendedCost, false);
+	LOAD_DBC("DBC/ItemRandomProperties.dbc", ItemRandomPropertiesFormat, true, dbcItemRandomProperties, false);
+	LOAD_DBC("DBC/ItemRandomSuffix.dbc", ItemRandomSuffixFormat, true, dbcItemRandomSuffix, false);
 	LOAD_DBC("DBC/ItemSet.dbc", ItemSetFormat, true, dbcItemSet, true);
 	LOAD_DBC("DBC/Lock.dbc", LockFormat, true, dbcLock, false);
-	LOAD_DBC("DBC/EmotesText.dbc", EmoteEntryFormat, true, dbcEmoteEntry, false);
-	LOAD_DBC("DBC/SkillLineAbility.dbc", skilllinespellFormat, false, dbcSkillLineSpell, false);
-	LOAD_DBC("DBC/SpellItemEnchantment.dbc", EnchantEntrYFormat, true, dbcEnchant, true);
-	LOAD_DBC("DBC/GemProperties.dbc", GemPropertyEntryFormat, true, dbcGemProperty, false);
-	LOAD_DBC("DBC/SkillLine.dbc", skilllineentrYFormat, true, dbcSkillLine, true);
-	LOAD_DBC("DBC/Spell.dbc", spellentrYFormat, true, dbcSpell, true);
-	LOAD_DBC("DBC/ItemExtendedCost.dbc", itemextendedcostFormat, true, dbcItemExtendedCost, false);
-	LOAD_DBC("DBC/Talent.dbc", talententryFormat, true, dbcTalent, false);
-	LOAD_DBC("DBC/TalentTab.dbc", talenttabentryFormat, true, dbcTalentTab, false);
-	LOAD_DBC("DBC/SpellCastTimes.dbc", spellcasttimeFormat, true, dbcSpellCastTime, false);
-	LOAD_DBC("DBC/SpellRadius.dbc", spellradiusFormat, true, dbcSpellRadius, false);
-	LOAD_DBC("DBC/SpellRange.dbc", spellrangeFormat, true, dbcSpellRange, false);
-	LOAD_DBC("DBC/SpellDuration.dbc", spelldurationFormat, true, dbcSpellDuration, false);
-	LOAD_DBC("DBC/ItemRandomProperties.dbc", randompropsFormat, true, dbcRandomProps, false);
-	LOAD_DBC("DBC/AreaTable.dbc", areatableFormat, true, dbcArea, true);
-	LOAD_DBC("DBC/FactionTemplate.dbc", factiontemplatedbcFormat, true, dbcFactionTemplate, false);
-	LOAD_DBC("DBC/Faction.dbc", factiondbcFormat, true, dbcFaction, true);
-	LOAD_DBC("DBC/TaxiNodes.dbc", dbctaxinodeFormat, false, dbcTaxiNode, false);
-	LOAD_DBC("DBC/TaxiPath.dbc", dbctaxipathFormat, false, dbcTaxiPath, false);
-	LOAD_DBC("DBC/TaxiPathNode.dbc", dbctaxipathnodeFormat, false, dbcTaxiPathNode, false);
-	LOAD_DBC("DBC/CreatureSpellData.dbc", creaturespelldataFormat, true, dbcCreatureSpellData, false);
-	LOAD_DBC("DBC/CreatureFamily.dbc", creaturefamilyFormat, true, dbcCreatureFamily, true);
-	LOAD_DBC("DBC/ChrRaces.dbc", charraceFormat, true, dbcCharRace, true);
-	LOAD_DBC("DBC/ChrClasses.dbc", charclassFormat, true, dbcCharClass, true);
-	LOAD_DBC("DBC/Map.dbc", mapentryFormat, true, dbcMap, true);
-	LOAD_DBC("DBC/AuctionHouse.dbc", auctionhousedbcFormat, true, dbcAuctionHouse, false);
-	LOAD_DBC("DBC/ItemRandomSuffix.dbc", itemrandomsuffixformat, true, dbcItemRandomSuffix, false);
-	LOAD_DBC("DBC/gtCombatRatings.dbc", combatratingformat, false, dbcCombatRating, false);
-	LOAD_DBC("DBC/ChatChannels.dbc", chatchannelformat, true, dbcChatChannels, false);
+	LOAD_DBC("DBC/Map.dbc", MapFormat, true, dbcMap, true);
+	LOAD_DBC("DBC/SkillLine.dbc", SkillLineFormat, true, dbcSkillLine, true);
+	LOAD_DBC("DBC/SkillLineAbility.dbc", SkillLineAbilityFormat, false, dbcSkillLineAbility, false);
+	LOAD_DBC("DBC/Spell.dbc", SpellFormat, true, dbcSpell, true);
+	LOAD_DBC("DBC/SpellCastTimes.dbc", SpellCastTimesFormat, true, dbcSpellCastTimes, false);
+	LOAD_DBC("DBC/SpellDuration.dbc", SpellDurationFormat, true, dbcSpellDuration, false);
+	LOAD_DBC("DBC/SpellItemEnchantment.dbc", SpellItemEnchantmentFormat, true, dbcSpellItemEnchantment, true);
+	LOAD_DBC("DBC/SpellRadius.dbc", SpellRadiusFormat, true, dbcSpellRadius, false);
+	LOAD_DBC("DBC/SpellRange.dbc", SpellRangeFormat, true, dbcSpellRange, false);
+	LOAD_DBC("DBC/Talent.dbc", TalentFormat, true, dbcTalent, false);
+	LOAD_DBC("DBC/TalentTab.dbc", TalentTabFormat, true, dbcTalentTab, false);
+	LOAD_DBC("DBC/TaxiNodes.dbc", TaxiNodesFormat, false, dbcTaxiNodes, false);
+	LOAD_DBC("DBC/TaxiPath.dbc", TaxiPathFormat, false, dbcTaxiPath, false);
+	LOAD_DBC("DBC/TaxiPathNode.dbc", TaxiPathNodeFormat, false, dbcTaxiPathNode, false);
+
 	return true;
 }
 
+
+
Index: trunk/src/ascent-shared/Database/DBCStores.h
===================================================================
--- trunk/src/ascent-shared/Database/DBCStores.h	(revision 3814)
+++ trunk/src/ascent-shared/Database/DBCStores.h	(working copy)
@@ -26,866 +26,564 @@
 
 #pragma pack(push,1)
 
-struct ItemSetEntry
+struct AreaTableDBC
 {
-    uint32 id;                  //1
-    char* name;                //2
-    //uint32 unused_shit[15];      //3 - 9
-    uint32 flag;                //10 constant
-    uint32 itemid[8];           //11 - 18
-    //uint32 more_unused_shit[9]; //19 - 27
-    uint32 SpellID[8];          //28 - 35
-    uint32 itemscount[8];       //36 - 43
-    uint32 RequiredSkillID;     //44
-    uint32 RequiredSkillAmt;    //45
+    uint32 AreaId;                     // 0
+    uint32 mapId;                      // 1 |This pointer will refer only to the continents|
+    uint32 ZoneId;                     // 2 |Recursive.if 0 then it's a zone, else it's a zone id of this area|
+    uint32 explorationFlag;            // 3 |Index|
+    uint32 AreaFlags;                  // 4 |Unknown,but 312 for citys|
+    //uint32 unk[3];                   // 5-7
+    uint32 EXP;                        // 8  not XP
+    //uint32 unk5;                     // 9 
+    uint32 level;                      // 10
+    char* name;                        // 11
+    //char altname[15];                // 12-26
+    uint32 nameFlags;                  // 27
+    uint32 category;                   // 28
+    //uint32 unk[6];                   // 29-34
 };
 
-struct Lock
+struct AuctionHouseDBC
 {
-    uint32 Id;
-    uint32 locktype[5]; // 0 - no lock, 1 - item needed for lock, 2 - min lockping skill needed
-    //uint32 unk1[3];
-    uint32 lockmisc[5]; // if type is 1 here is a item to unlock, else is unknow for now
-    //uint32 unk2[3];
-    uint32 minlockskill[5]; // min skill in lockpiking to unlock.
-    //uint32 unk3[11];
+    uint32 id;                         // 0
+    uint32 unk;                        // 1
+    uint32 fee;                        // 2
+    uint32 tax;                        // 3
+    char* name;                        // 4
+    //char* altname[15];               // 5-19
+    uint32 nameFlags;                  // 20
 };
 
-struct emoteentry
+struct ChatChannelsDBC
 {
-    uint32 Id;
-    //uint32 name;
-    uint32 textid;
-    uint32 textid2;
-    uint32 textid3;
-    uint32 textid4;
-    //uint32 unk1;
-    uint32 textid5;
-    //uint32 unk2;
-    uint32 textid6;
-    //uint32 unk3;
-    //uint32 unk4;
-    //uint32 unk5;
-    //uint32 unk6;
-    //uint32 unk7;
-    //uint32 unk8;
-    //uint32 unk9;
-    //uint32 unk10;
-    //uint32 unk11;
+    uint32 id;                         // 0
+    uint32 flags;                      // 1
+    //uint32 unk                       // 2
+    char* pattern;                     // 3
+    //char* altpattern[15];            // 4-18
+    uint32 patternflags;               // 19
+    char* name;                        // 20
+    //char* altname[16];               // 21-35
+    uint32 nameflags;                  // 36
 };
 
-struct skilllinespell //SkillLineAbility.dbc
+struct ChrClassesDBC
 {
-    uint32 Id;
-    uint32 skilline;
-    uint32 spell;
-    //uint32 unk1;
-    //uint32 unk2;
-    //uint32 unk3;
-    //uint32 unk4;
-    //uint32 unk5;
-    uint32 next;
-    uint32 minrank;
-    uint32 grey;
-    uint32 green;
-    //uint32 unk10;
-    //uint32 unk11;
-    uint32 reqTP;
+    uint32 class_id;                   // 0 
+    //uint32 unk1;                     // 1
+    uint32 power_type;                 // 2
+    //uint32 unk2;                     // 3
+    char* name;                        // 4
+    //char* altname[15];               // 5-19
+    uint32 nameflags;                  // 20
+    char* pattern;                     // 21
+    //uint32 unk4;                     // 22
+    //uint32 unk5;                     // 23
 };
 
-struct EnchantEntry
+struct ChrRacesDBC
 {
-    uint32 Id;
-    uint32 type[3];
-    int32 min[3];//for compat, in practice min==max
-    int32 max[3];
-    uint32 spell[3];
-    char* Name;
-    //uint32 NameAlt1;
-    //uint32 NameAlt2;
-    //uint32 NameAlt3;
-    //uint32 NameAlt4;
-    //uint32 NameAlt5;
-    //uint32 NameAlt6;
-    //uint32 NameAlt7;
-    //uint32 NameAlt8;
-    //uint32 NameAlt9;
-    //uint32 NameAlt10;
-    //uint32 NameAlt11;
-    //uint32 NameAlt12;
-    //uint32 NameAlt13;
-    //uint32 NameAlt14;
-    //uint32 NameAlt15;
-    //uint32 NameFlags;
-    uint32 visual;
-    uint32 EnchantGroups;
-    uint32 GemEntry;
-    uint32 unk7;//Gem Related
-
+    uint32 race_id;                    // 0
+    //uint32 unk1;                     // 1
+    uint32 faction_id;                 // 2 |Reference to FactonTemplate.dbc|
+    //uint32 unk2;                     // 3
+    uint32 male_displayid;             // 4
+    uint32 female_displayid;           // 5
+    char* shortname;                   // 6 |Ta for Tauren,Gn for Gnome|
+    //uint32 unk6;                     // 7
+    uint32 team_id;                    // 8 |7 for Alliance,and 1 fo the Horde|
+    //uint32 unk[3];                   // 9-11
+    char* name1;                       // 12
+    uint32 cinematic_id;               // 13
+    //char* name2[16];                 // 14-29
+    //uint32 unkflags;                 // 30
+    //char* unk11;                     // 31 |TUSKS,FEATURES,NORMAL|
+    //char* unk12;                     // 32 |PIERCINGS,MARKINGS,FEATURES,HAIR,EARRINGS,TUSKS,NONE,HORNS,NORMAL|
+    //char* unk13;                     // 33 |NORMAL,HORNS|
+    uint32 isexpansion;                // 34 |0 for anyone, except BE and Draenei, they got 1. Perhaps uint32, but I presume bool.|
 };
 
-struct GemPropertyEntry{
-    uint32 Entry;
-    uint32 EnchantmentID;
-    uint32 unk1;//bool
-    uint32 unk2;//bool
-    uint32 SocketMask;
+struct CreatureFamilyDBC
+{
+    uint32 ID;                         // 0
+    float minsize;                     // 1
+    uint32 minlevel;                   // 2
+    float maxsize;                     // 3
+    uint32 maxlevel;                   // 4
+    uint32 skilline;                   // 5
+    uint32 tameable;                   // 6 |270 for tamable,and 0 for non-tamable|
+    uint32 petdietflags;               // 7
+    char* name;                        // 8
+    //char* altname[15];               // 9-23
+    uint32 nameflags;                  // 24
+    char* InterfaceIcon;               // 25 |File path for tamed icon|
 };
 
-struct skilllineentry //SkillLine.dbc
+struct CreatureSpellDataDBC
 {
-    uint32 id;
-    uint32 type;
-    uint32 unk1;
-    char* Name;
-    //int32 NameAlt1;
-    //uint32 NameAlt2;
-    //uint32 NameAlt3;
-    //uint32 NameAlt4;
-    //uint32 NameAlt5;
-    //uint32 NameAlt6;
-    //uint32 NameAlt7;
-    //uint32 NameAlt8;
-    //uint32 NameAlt9;
-    //uint32 NameAlt10;
-    //uint32 NameAlt11;
-    //uint32 NameAlt12;
-    //uint32 NameAlt13;
-    //uint32 NameAlt14;
-    //uint32 NameAlt15;
-    //uint32 NameFlags;
-    //uint32 Description;
-    //uint32 DescriptionAlt1;
-    //uint32 DescriptionAlt2;
-    //uint32 DescriptionAlt3;
-    //uint32 DescriptionAlt4;
-    //uint32 DescriptionAlt5;
-    //uint32 DescriptionAlt6;
-    //uint32 DescriptionAlt7;
-    //uint32 DescriptionAlt8;
-    //uint32 DescriptionAlt9;
-    //uint32 DescriptionAlt10;
-    //uint32 DescriptionAlt11;
-    //uint32 DescriptionAlt12;
-    //uint32 DescriptionAlt13;
-    //uint32 DescriptionAlt14;
-    //uint32 DescriptionAlt15;
-    //uint32 DescriptionFlags;
-    //uint32 unk2;
-
+    uint32 id;                         // 0 |Reference to column spellDataID from CreatureCache.wdb|
+    uint32 Spells[3];                  // 1-3 |Reference to index of Spell.dbc|
+    uint32 PHSpell;                    // 4
+    uint32 Cooldowns[3];               // 5-7 |Divide by 10 to get seconds|
+    uint32 PH;                         // 8
 };
 
-// Struct for the entry in Spell.dbc
-struct SpellEntry
+struct EmotesTextDBC
 {
-    uint32 Id;                              //1
-    uint32 School;                          //2
-    uint32 Category;                        //3
-    uint32 field4;                          //4 something like spelltype 0: general spells 1: Pet spells 2: Disguise / transormation spells 3: enchantment spells
-    uint32 DispelType;                      //5
-    uint32 MechanicsType;                   //6
-    uint32 Attributes;                      //7
-    uint32 AttributesEx;                    //8
-    uint32 Flags3;                          //9
-    uint32 Flags4;                          //10 // Flags to
-    uint32 field11;                         //11 // Flags....
-    uint32 unk201_1;                        //12 // Flags 2.0.1 unknown one
-    uint32 RequiredShapeShift;              //13 // Flags BitMask for shapeshift spells
-    uint32 UNK14;                           //14-> this is wrong // Flags BitMask for which shapeshift forms this spell can NOT be used in.
-    uint32 Targets;                         //15 - N / M
-    uint32 TargetCreatureType;              //16
-    uint32 RequiresSpellFocus;              //17
-    uint32 CasterAuraState;                 //18
-    uint32 TargetAuraState;                 //19
-    uint32 unk201_2;                        //20 2.0.1 unknown two
-    uint32 unk201_3;                        //21 2.0.1 unknown three
-    uint32 CastingTimeIndex;                //22
-    uint32 RecoveryTime;                    //23
-    uint32 CategoryRecoveryTime;            //24 recoverytime
-    uint32 InterruptFlags;                  //25
-    uint32 AuraInterruptFlags;              //26
-    uint32 ChannelInterruptFlags;           //27
-    uint32 procFlags;                       //28
-    uint32 procChance;                      //29
-    int32 procCharges;                      //30
-    uint32 maxLevel;                        //31
-    uint32 baseLevel;                       //32
-    uint32 spellLevel;                      //33
-    uint32 DurationIndex;                   //34
-    uint32 powerType;                       //35
-    uint32 manaCost;                        //36
-    uint32 manaCostPerlevel;                //37
-    uint32 manaPerSecond;                   //38
-    uint32 manaPerSecondPerLevel;           //39
-    uint32 rangeIndex;                      //40
-    float  speed;                           //41
-    uint32 modalNextSpell;                  //42
-    uint32 maxstack;                        //43
-    uint32 Totem[2];                        //44 - 45
-    uint32 Reagent[8];                      //46 - 53
-    uint32 ReagentCount[8];                 //54 - 61
-    uint32 EquippedItemClass;               //62
-    uint32 EquippedItemSubClass;            //63
-    uint32 RequiredItemFlags;               //64
-    uint32 Effect[3];                       //65 - 67
-    uint32 EffectDieSides[3];               //68 - 70
-    uint32 EffectBaseDice[3];               //71 - 73
-    float  EffectDicePerLevel[3];           //74 - 76
-    float  EffectRealPointsPerLevel[3];     //77 - 79
-    int32  EffectBasePoints[3];             //80 - 82
-    int32  EffectMechanic[3];               //83 - 85       Related to SpellMechanic.dbc
-    uint32 EffectImplicitTargetA[3];        //86 - 88
-    uint32 EffectImplicitTargetB[3];        //89 - 91
-    uint32 EffectRadiusIndex[3];            //92 - 94
-    uint32 EffectApplyAuraName[3];          //95 - 97
-    uint32 EffectAmplitude[3];              //98 - 100
-    float  Effectunknown[3];                //101 - 103     This value is the $ value from description
-    uint32 EffectChainTarget[3];            //104 - 106
-    uint32 EffectSpellGroupRelation[3];     //107 - 109     Not sure maybe we should rename it. its the relation to field: SpellGroupType
-    uint32 EffectMiscValue[3];              //110 - 112
-    uint32 EffectTriggerSpell[3];           //113 - 115
-    float  EffectPointsPerComboPoint[3];    //116 - 118
-    uint32 SpellVisual;                     //119
-    uint32 field114;                        //120
-    uint32 dummy;                           //121
-    uint32 CoSpell;                         //122   activeIconID;
-    uint32 spellPriority;                   //123
-    char* Name;                             //124
-    //uint32 NameAlt1;                        //125
-    //uint32 NameAlt2;                        //126
-    //uint32 NameAlt3;                        //127
-    //uint32 NameAlt4;                        //128
-    //uint32 NameAlt5;                        //129
-    //uint32 NameAlt6;                        //130
-    //uint32 NameAlt7;                        //131
-    //uint32 NameAlt8;                        //132
-    //uint32 NameAlt9;                        //133
-    //uint32 NameAlt10;                       //134
-    //uint32 NameAlt11;                       //135
-    //uint32 NameAlt12;                       //136
-    //uint32 NameAlt13;                       //137
-    //uint32 NameAlt14;                       //138
-    //uint32 NameAlt15;                       //139
-    //uint32 NameFlags;                       //140
-	char * Rank;                            //141
-    //uint32 RankAlt1;                        //142
-    //uint32 RankAlt2;                        //143
-    //uint32 RankAlt3;                        //144
-    //uint32 RankAlt4;                        //145
-    //uint32 RankAlt5;                        //146
-    //uint32 RankAlt6;                        //147
-    //uint32 RankAlt7;                        //148
-    //uint32 RankAlt8;                        //149
-    //uint32 RankAlt9;                        //150
-    //uint32 RankAlt10;                       //151
-    //uint32 RankAlt11;                       //152
-    //uint32 RankAlt12;                       //153
-    //uint32 RankAlt13;                       //154
-    //uint32 RankAlt14;                       //155
-    //uint32 RankAlt15;                       //156
-    //uint32 RankFlags;                       //157
-    char * Description;                     //158
-    //uint32 DescriptionAlt1;                 //159
-    //uint32 DescriptionAlt2;                 //160
-    //uint32 DescriptionAlt3;                 //161
-    //uint32 DescriptionAlt4;                 //162
-    //uint32 DescriptionAlt5;                 //163
-    //uint32 DescriptionAlt6;                 //164
-    //uint32 DescriptionAlt7;                 //165
-    //uint32 DescriptionAlt8;                 //166
-    //uint32 DescriptionAlt9;                 //167
-    //uint32 DescriptionAlt10;                //168
-    //uint32 DescriptionAlt11;                //169
-    //uint32 DescriptionAlt12;                //170
-    //uint32 DescriptionAlt13;                //171
-    //uint32 DescriptionAlt14;                //172
-    //uint32 DescriptionAlt15;                //173
-    //uint32 DescriptionFlags;                //174
-    char * BuffDescription;                 //175
-    //uint32 BuffDescriptionAlt1;             //176
-    //uint32 BuffDescriptionAlt2;             //177
-    //uint32 BuffDescriptionAlt3;             //178
-    //uint32 BuffDescriptionAlt4;             //179
-    //uint32 BuffDescriptionAlt5;             //180
-    //uint32 BuffDescriptionAlt6;             //181
-    //uint32 BuffDescriptionAlt7;             //182
-    //uint32 BuffDescriptionAlt8;             //183
-    //uint32 BuffDescriptionAlt9;             //184
-    //uint32 BuffDescriptionAlt10;            //185
-    //uint32 BuffDescriptionAlt11;            //186
-    //uint32 BuffDescriptionAlt12;            //187
-    //uint32 BuffDescriptionAlt13;            //188
-    //uint32 BuffDescriptionAlt14;            //189
-	//uint32 BuffDescriptionAlt15;            //190
-	//uint32 buffdescflags;                   //191
-    uint32 ManaCostPercentage;              //192
-    uint32 unkflags;                        //193 
-    uint32 StartRecoveryTime;               //194
-    uint32 StartRecoveryCategory;           //195
-    uint32 SpellFamilyName;                 //196
-	uint64 SpellGroupType;					//197+198
-    uint32 MaxTargets;                      //199 
-    uint32 Spell_Dmg_Type;                  //200   dmg_class Integer      0=None, 1=Magic, 2=Melee, 3=Ranged
-    uint32 FG;                              //201   0,1,2 related to Spell_Dmg_Type I think
-    int32 FH;                               //202   related to paladin aura's 
-    float dmg_multiplier[3];                //203 - 205   if the name is correct I dono
-    uint32 FL;                              //206   only one spellid:6994 has this value = 369
-    uint32 FM;                              //207   only one spellid:6994 has this value = 4
-    uint32 FN;                              //208   only one spellid:26869  has this flag = 1   
-    uint32 unk201_4;						//209 
-    uint32 unk201_5;						//210 
-    uint32 unk201_6;						//211 
-
-    /// CUSTOM: these fields are used for the modifications made in the world.cpp
-    uint32 DiminishStatus;                  //
-    uint32 proc_interval;                   //!!! CUSTOM, <Fill description for variable>
-    uint32 buffIndexType;					//!!! CUSTOM, <Fill description for variable>
-    uint32 c_is_flags;						//!!! CUSTOM, store spell checks in a static way : isdamageind,ishealing
-    uint32 buffType;                        //!!! CUSTOM, these are related to creating a item through a spell
-    uint32 RankNumber;                      //!!! CUSTOM, this protects players from having >1 rank of a spell
-    uint32 NameHash;                        //!!! CUSTOM, related to custom spells, summon spell quest related spells
-    float base_range_or_radius_sqr;         //!!! CUSTOM, needed for aoe spells most of the time
-	uint32 talent_tree;						//!!! CUSTOM,
-	bool removable_by_immunity;				//!!! CUSTOM,
-	uint32 in_front_status;					//!!! CUSTOM,
-	bool is_melee_spell;					//!!! CUSTOM,
-	bool is_ranged_spell;					//!!! CUSTOM,
-    uint32 EffectSpellGroupRelation_high[3];     //!!! this is not contained in client dbc but server must have it
-	uint32 ThreatForSpell;
-	bool can_be_dispelled;					//!!! CUSTOM
+    uint32 Id;                         // 0
+    char* name;                        // 1
+    uint32 textid;                     // 2 |Reference to EmotesTextData.dbc.|
+    uint32 textid2;                    // 3 |Reference to EmotesTextData.dbc. Text shown for nearby player| e.g. "%s agrees with %s."
+    uint32 textid3;                    // 4 |Reference to EmotesTextData.dbc. Text shown for selected player| e.g. "%s agrees with you."
+    uint32 textid4;                    // 5 |Reference to EmotesTextData.dbc. Text shown for source player| e.g. "You agree with %s."
+    //uint32 unk1;                     // 6
+    uint32 textid5;                    // 7 |Reference to EmotesTextData.dbc. Text shown for nearby player if player emotes with no selection| e.g. "%s agrees."
+    //uint32 unk2;                     // 8
+    uint32 textid6;                    // 9 |Reference to EmotesTextData.dbc. Text shown for source player if player emotes with no selection| e.g. "You agree."
+    //uint32 unk3;                     // 10
+    uint32 textid7;                    // 11 |Reference to EmotesTextData.dbc. Same as #3 but for female| e.g. "%s raises her fist in anger at %s."
+    uint32 textid8;                    // 12 |Reference to EmotesTextData.dbc. Same as #4 but for female| e.g. "%s raises her fist in anger at you."
+    //uint32 unk6;                     // 13
+    //uint32 unk7;                     // 14
+    uint32 textid9;                    // 15 |Reference to EmotesTextData.dbc. Same as #7 but for female| e.g. "%s raises her fist in anger."
+    //uint32 unk9;                     // 16
+    //uint32 unk10;                    // 17
+    //uint32 unk11;                    // 18
 };
 
-struct ItemExtendedCostEntry
+struct FactionDBC
 {
-    uint32 costid;
-    uint32 honor;
-    uint32 arena;
-    uint32 item[5];
-    uint32 count[5];
+    uint32 ID;                         // 0
+    int32 RepListId;                   // 1
+    uint32 baseRepMask[4];             // 2-5 |Base reputation masks.|
+    //uint32 unk1[4];                  // 6-9
+    int32 baseRepValue[4];             // 10-13 |Base reputation values.|
+    //uint32 unk2[4];                  // 14-17
+    uint32 parentFaction;              // 18
+    char* Name;                        // 19
+    //char* altname[15];               // 20-34
+    uint32 nameflags;                  // 35
+    char* Description;                 // 36
+    //char* Description[15];           // 37-51
+    uint32 descflags;                  // 52
 };
 
-struct TalentEntry
+struct FactionTemplateDBC
 {
-    uint32  TalentID;
-    uint32  TalentTree;
-    uint32  Row;
-    uint32  Col;
-    uint32  RankID[5];
-    //uint32  unk[4];
-    uint32  DependsOn;
-    //uint32  unk1[2];
-    uint32  DependsOnRank;
-    //uint32  unk2[4];
+    uint32 ID;                         // 0
+    uint32 Faction;                    // 1
+    uint32 FactionGroup;               // 2
+    uint32 Mask;                       // 3 |If mask set then faction included in masked team.|
+    uint32 FriendlyMask;               // 4 |If mask set then faction friendly to masked team.|
+    uint32 HostileMask;                // 5 |If mask set then faction hostile to masked team.|
+    uint32 EnemyFactions[4];           // 6-9
+    uint32 FriendlyFactions[4];        // 10-13
 };
 
-struct TalentTabEntry
+struct GemPropertiesDBC
 {
-    uint32	TalentTabID;
-    //char*	Name;
-	//unit32  unk3
-	//unit32  unk4
-	//unit32  unk5
-	//unit32  unk6
-	//unit32  unk7
-	//unit32  unk8
-	//unit32  unk9
-	//unit32  unk10
-	//unit32  unk11
-	//unit32  unk12
-	//unit32  unk13
-	//unit32  unk14
-	//unit32  unk15
-	//unit32  unk16
-	//unit32  unk17
-	//unit32  unk18
-	//unit32  unk19
-	//unit32  unk20
-    uint32	ClassMask;
-    uint32	TabPage;
-    //char*	InternalName;
+    uint32 Entry;                      // 0
+    uint32 EnchantmentID;              // 1
+    uint32 unk1;//bool                 // 2
+    uint32 unk2;//bool                 // 3
+    uint32 SocketMask;                 // 4
 };
 
-struct Trainerspell
+struct gtCombatRatingsDBC
 {
-    uint32 Id;
-    uint32 skilline1;
-    uint32 skilline2;
-    uint32 skilline3;
-    uint32 maxlvl;
-    uint32 charclass;
+    float val;                         // 0
 };
 
-struct SpellCastTime
+struct ItemExtendedCostDBC
 {
-    uint32 ID;
-    uint32 CastTime;
-    //uint32 unk1;
-    //uint32 unk2;
+    uint32 costid;                     // 0
+    uint32 honor;                      // 1 |Required honor points.|
+    uint32 arena;                      // 2 |Required arena points.|
+    uint32 item[3];                    // 3-5 |Required itemid.|
+    //uint32 unk[2]                    // 6-7
+    uint32 count[3];                   // 8-10 |Required count of item.|
+    //uint32 unk2[3]                   // 11-13
 };
 
-struct SpellRadius
+struct ItemRandomPropertiesDBC
 {
-    uint32 ID;
-    float Radius;
-    //float unk1;
-    float Radius2;
+    uint32 ID;                         // 0
+    char* name1;                       // 1 |Name of property| e.g. "of Stamina"
+    uint32 spells[3];                  // 2-4
+    //uint32 unk[2];                   // 5-6 |Only 0 values, maybe reserved for additional enchantments.|
+    char* SuffixName;                  // 7
+    //char* AltSuffixName[15];         // 8-22
+    uint32 RankFlags;                  // 23 |Perhaps suffix flags.|
 };
 
-struct SpellRange
+struct ItemRandomSuffixDBC
 {
-    uint32 ID;
-    float minRange;
-    float maxRange;
-    //uint32 unks[35];
+    uint32 id;                         // 0
+    char* name;                        // 1 |E.g. "of Power".|
+    //char* altname[15];               // 2-16 
+    uint32 nameflags;                  // 17
+    char* name2;                       // 18 |E.g. "Frozen Wrath".|
+    uint32 enchantments[3];            // 19-21
+    uint32 prefixes[3];                // 22-24
 };
 
-struct SpellDuration
+struct ItemSetDBC
 {
-    uint32 ID;
-    uint32 Duration1;
-    uint32 Duration2;
-    uint32 Duration3;
+    uint32 id;                         // 0
+    char* name;                        // 1
+    //char* altname[15];               // 2-16
+    uint32 flag;                       // 17 |Constant.|
+    uint32 itemid[10];                 // 18-27 |Not all items listed.|
+    //uint32 unk[7]                    // 28-34
+    uint32 SpellID[8];                 // 36-43
+    uint32 itemscount[8];              // 44-51
+    uint32 RequiredSkillID;            // 52
+    uint32 RequiredSkillAmt;           // 53
 };
 
-struct RandomProps
+struct LockDBC
 {
-    uint32 ID;
-    //uint32 name1;
-    uint32 spells[3];
-    //uint32 unk1;
-    //uint32 unk2;
-    //uint32 name2;
-    //uint32 RankAlt1;
-    //uint32 RankAlt2;
-    //uint32 RankAlt3;
-    //uint32 RankAlt4;
-    //uint32 RankAlt5;
-    //uint32 RankAlt6;
-    //uint32 RankAlt7;
-    //uint32 RankAlt8;
-    //uint32 RankAlt9;
-    //uint32 RankAlt10;
-    //uint32 RankAlt11;
-    //uint32 RankAlt12;
-    //uint32 RankAlt13;
-    //uint32 RankAlt14;
-    //uint32 RankAlt15;
-    //uint32 RankFlags;
-
+    uint32 Id;                         // 0
+    uint32 locktype[5];                // 1-5 |0 if no lock, 1 if item needed for lock, 2 if min lockping skill needed.|
+    //uint32 unk1[3];                  // 6-8
+    uint32 lockmisc[5];                // 9-13 |If type is 1 here is a item to unlock, else is unknow for now.|
+    //uint32 unk2[3];                  // 14-16
+    uint32 minlockskill[5];            // 17-21 |Min skill in lockpiking to unlock.|
+    //uint32 unk3[3];                  // 22-24
+    //uint32 unk4[5];                  // 25-29
+    //uint32 unk5[3];                  // 30-32
 };
 
-struct AreaTable
+struct MapDBC
 {
-    uint32 AreaId;
-    uint32 mapId;
-    uint32 ZoneId;
-    uint32 explorationFlag;
-    uint32 AreaFlags;
-    //uint32 unk2;
-    //uint32 unk3;
-    //uint32 unk4;
-    uint32 EXP;//not XP
-    //uint32 unk5;
-    uint32 level;
-    char* name;
-    //uint32 nameAlt1;
-    //uint32 nameAlt2;
-    //uint32 nameAlt3;
-    //uint32 nameAlt4;
-    //uint32 nameAlt5;
-    //uint32 nameAlt6;
-    //uint32 nameAlt7;
-    //uint32 nameAlt8;
-    //uint32 nameAlt9;
-    //uint32 nameAlt10;
-    //uint32 nameAlt11;
-    //uint32 nameAlt12;
-    //uint32 nameAlt13;
-    //uint32 nameAlt14;
-    //uint32 nameAlt15;
-    //uint32 nameFlags;
-    uint32 category;
-    //uint32 unk7;
-    //uint32 unk8;
-    //uint32 unk9;
-    //uint32 unk10;
-    //uint32 unk11;
-    //uint32 unk12;
+    uint32 id;                         // 0
+    char* name_internal;               // 1
+    uint32 map_type;                   // 2 |Generic is 0, Instance is 1, Raid is 2, BG is 3, Arena is 4.|
+    //uint32 unk;                      // 3 |0 or 1.|
+    char* real_name;                   // 4
+    //char* Altreal_name[15];          // 5-19
+    uint32 nameflags;                  // 20
+    //uint32 unk[3];                   // 21-23 |Something PvPZones related. Levels and etc.|
+    //uint32 unk2[4];                  // 24-27
+    //char* HordeText[16];             // 28-43 |Text for PvP Zones.|
+    //uint32 TextFlagH;                // 44
+    //char* AllianceText[16];          // 45-60 |Text for PvP Zones.|
+    //uint32 TextFlagA;                // 61
+    //uint32 unk3[4];                  // 62-65 |Second field must be maxplayers on side.|
+    //char* unk4[16];                  // 66-81 |Empty text fields, possible normal Intro text.|
+    //uint32 unk5;                     // 82 |Text flags.|
+    char* heroicReq;                   // 83 |Heroic mode requirement text.|
+    //char* heroicReq[15];             // 84-98 
+    //uint32 unk6;                     // 99 |Text flags.|
+    //char* unk7[16];                  // 100-115 |Empty text fields, possible normal Intro text.|
+    //uint32 unk8;                     // 116 |Text flags.|
+    //uint32 continent_map;            // 117 |Id of map. 0,1 or 530.Sometimes -1.|
+    //float coord1;                    // 118 |Some coordinates.Perhaps X.|
+    //float coord2;                    // 119 |Some coordinates.Perhaps Y.|
+    //uint32 unk9[3];                  // 120-122 |Flags.|
 };
 
-struct FactionTemplateDBC
+struct SkillLineDBC
 {
-    uint32 ID;
-    uint32 Faction;
-    uint32 FactionGroup;
-    uint32 Mask;
-    uint32 FriendlyMask;
-    uint32 HostileMask;
-    uint32 EnemyFactions[4];
-    uint32 FriendlyFactions[4];
+    uint32 id;                         // 0
+    uint32 type;                       // 1 |Reference to SkillLineCategory.dbc|
+    uint32 unk1;                       // 2 |0 always, except Internal(#769) here is 22|
+    char* Name;                        // 3
+    //char* Name[15];                  // 4-18
+    //uint32 NameFlags;                // 19
+    //char* Description[16];           // 20-35
+    //uint32 DescriptionFlags;         // 36
+    //uint32 spellIcon;                // 37
 };
 
-struct AuctionHouseDBC
+struct SkillLineAbilityDBC
 {
-    uint32 id;
-    uint32 unk;
-    uint32 fee;
-    uint32 tax;
-    //char* name;
-    //char* nameAlt1;
-    //char* nameAlt2;
-    //char* nameAlt3;
-    //char* nameAlt4;
-    //char* nameAlt5;
-    //char* nameAlt6;
-    //char* nameAlt7;
-    //char* nameAlt8;
-    //char* nameAlt9;
-    //char* nameAlt10;
-    //char* nameAlt11;
-    //char* nameAlt12;
-    //char* nameAlt13;
-    //char* nameAlt14;
-    //char* nameAlt15;
-    //char* nameFlags;
+    uint32 Id;                         // 0
+    uint32 skilline;                   // 1 |Reference to SkillLine.dbc|
+    uint32 spell;                      // 2 |Reference to Spell.dbc|
+    uint32 racemask;                   // 3
+    uint32 classmask;                  // 4
+    //uint32 unk[2];                   // 5-6 |Always 0.|
+    uint32 reqskillvalue;              // 7 |Only for trade skills.Not for training.|
+    uint32 next;                       // 8 |Next spell.|
+    uint32 minrank;                    // 9
+    uint32 grey;                       // 10
+    uint32 green;                      // 11
+    //uint32 unk2[2];                  // 12-13
+    uint32 reqTP;                      // 14 |Required training points for hunter pet abilities|
 };
 
-struct FactionDBC
+struct SpellDBC
 {
-    uint32 ID;
-    int32 RepListId;
-    uint32 baseRepMask[4];
-    //uint32 unk1[4];
-    int32 baseRepValue[4];
-    //uint32 unk2[4];
-    uint32 parentFaction;
-    char* Name;
-    //uint32 shit[16];
-    //uint32 Description;
-    //uint32 shit2[16];
+    uint32 Id;                         // 0
+    uint32 School;                     // 1 |School Category. Also can serve at resistance calculating.|
+    uint32 Category;                   // 2
+    uint32 field4;                     // 3 something like spelltype 0: general spells 1: Pet spells 2: Disguise / transormation spells 3: enchantment spells
+    uint32 DispelType;                 // 4 |Reference to SpellDispellType.dbc.|
+    uint32 MechanicsType;              // 5
+    uint32 Attributes;                 // 6
+    uint32 AttributesEx;               // 7
+    uint32 Flags3;                     // 8
+    uint32 Flags4;                     // 9 // Flags to
+    uint32 field11;                    // 10 // Flags....
+    uint32 unk201_1;                   // 11 // Flags 2.0.1 unknown one
+    uint32 RequiredShapeShift;         // 12 |BitMask for which shapeshift forms this spell can be used in.|
+    uint32 ExcludedShapeShift;         // 13 |BitMask for which shapeshift forms this spell cannot be used in.|
+    uint32 Targets;                    // 14 - N / M
+    uint32 TargetCreatureType;         // 15
+    uint32 RequiresSpellFocus;         // 16
+    uint32 CasterAuraState;            // 17
+    uint32 TargetAuraState;            // 18
+    uint32 unk201_2;                   // 19 2.0.1 unknown two
+    uint32 unk201_3;                   // 20 2.0.1 unknown three
+    uint32 CastingTimeIndex;           // 21
+    uint32 RecoveryTime;               // 22
+    uint32 CategoryRecoveryTime;       // 23 recoverytime
+    uint32 InterruptFlags;             // 24
+    uint32 AuraInterruptFlags;         // 25
+    uint32 ChannelInterruptFlags;      // 26
+    uint32 procFlags;                  // 27
+    uint32 procChance;                 // 28
+    int32 procCharges;                 // 29
+    uint32 maxLevel;                   // 30
+    uint32 baseLevel;                  // 31
+    uint32 spellLevel;                 // 32
+    uint32 DurationIndex;              // 33
+    uint32 powerType;                  // 34
+    uint32 manaCost;                   // 35
+    uint32 manaCostPerlevel;           // 36
+    uint32 manaPerSecond;              // 37
+    uint32 manaPerSecondPerLevel;      // 38
+    uint32 rangeIndex;                 // 39
+    float  speed;                      // 40
+    uint32 modalNextSpell;             // 41
+    uint32 maxstack;                   // 42
+    uint32 Totem[2];                   // 43-44
+    uint32 Reagent[8];                 // 45-52
+    uint32 ReagentCount[8];            // 53-60
+    uint32 EquippedItemClass;          // 61
+    uint32 EquippedItemSubClass;       // 62
+    uint32 RequiredItemFlags;          // 63
+    uint32 Effect[3];                  // 64-66
+    uint32 EffectDieSides[3];          // 67-69
+    uint32 EffectBaseDice[3];          // 70-72
+    float EffectDicePerLevel[3];       // 73-75
+    float EffectRealPointsPerLevel[3]; // 76-78
+    int32  EffectBasePoints[3];        // 79-81
+    int32  EffectMechanic[3];          // 82-84 |Reference to SpellMechanic.dbc.|
+    uint32 EffectImplicitTargetA[3];   // 85-87
+    uint32 EffectImplicitTargetB[3];   // 88-90
+    uint32 EffectRadiusIndex[3];       // 91-93 |Reference to SpellRadius.dbc.| 
+    uint32 EffectApplyAuraName[3];     // 94-96
+    uint32 EffectAmplitude[3];         // 97-99
+    float Effectunknown[3];            // 100-102     This value is the $ value from description
+    uint32 EffectChainTarget[3];       // 103-105
+    uint32 EffectSpellGroupRelation[3];// 106-108     Not sure maybe we should rename it. its the relation to field: SpellGroupType
+    uint32 EffectMiscValue[3];         // 109-111
+    uint32 EffectTriggerSpell[3];      // 112-114
+    float EffectPointsPerComboPoint[3];// 115-117
+    uint32 SpellVisual;                // 118
+    uint32 field114;                   // 119
+    uint32 dummy;                      // 120
+    uint32 CoSpell;                    // 121   activeIconID;
+    uint32 spellPriority;              // 122 |Deciding factor if it overrides other effects.Values 0 or 50.|
+    char* Name;                        // 123
+    //char* AltName[15];               // 124-138
+    uint32 NameFlags;                  // 139
+    char * Rank;                       // 140
+    //char * AltRank[15];              // 141-155
+    uint32 RankFlags;                  // 156
+    char * Description;                // 157
+    //char * AltDescription[15];       // 158-172
+    uint32 DescriptionFlags;           // 173
+    char * BuffDescription;            // 174
+    //char * AltBuffDescription[15];   // 175-189
+    uint32 buffdescflags;              // 190
+    uint32 ManaCostPercentage;         // 191
+    uint32 unkflags;                   // 192 
+    uint32 StartRecoveryTime;          // 193 |Global cooldown.|
+    uint32 StartRecoveryCategory;      // 194
+    uint32 SpellFamilyName;            // 195
+    uint64 SpellGroupType;             // 196+197
+    uint32 MaxTargets;                 // 198 
+    uint32 Spell_Dmg_Type;             // 199   dmg_class Integer      0=None, 1=Magic, 2=Melee, 3=Ranged
+    uint32 FG;                         // 200   0,1,2 related to Spell_Dmg_Type I think
+    int32 FH;                          // 201   related to paladin aura's 
+    float dmg_multiplier[3];           // 202-204   if the name is correct I dono
+    uint32 FL;                         // 205   only one spellid:6994 has this value = 369
+    uint32 FM;                         // 206   only one spellid:6994 has this value = 4
+    uint32 FN;                         // 207   only one spellid:26869  has this flag = 1   
+    uint32 TotemType[2];               // 208-209 |Reference to TotemCategory.dbc.|
+    uint32 AreaId;                     // 210 |Area of possible using.|
+
+    /// CUSTOM: these fields are used for the modifications made in the world.cpp
+    uint32 DiminishStatus;             //
+    uint32 proc_interval;              //!!! CUSTOM, <Fill description for variable>
+    uint32 buffIndexType;               //!!! CUSTOM, <Fill description for variable>
+    uint32 c_is_flags;                 //!!! CUSTOM, store spell checks in a static way : isdamageind,ishealing
+    uint32 buffType;                   //!!! CUSTOM, these are related to creating a item through a spell
+    uint32 RankNumber;                 //!!! CUSTOM, this protects players from having >1 rank of a spell
+    uint32 NameHash;                   //!!! CUSTOM, related to custom spells, summon spell quest related spells
+    float base_range_or_radius_sqr;    //!!! CUSTOM, needed for aoe spells most of the time
+    uint32 talent_tree;                 //!!! CUSTOM,
+    bool removable_by_immunity;         //!!! CUSTOM,
+    uint32 in_front_status;             //!!! CUSTOM,
+    bool is_melee_spell;               //!!! CUSTOM,
+    bool is_ranged_spell;               //!!! CUSTOM,
+    uint32 EffectSpellGroupRelation_high[3];//!!! this is not contained in client dbc but server must have it
+    uint32 ThreatForSpell;
+    bool can_be_dispelled;             //!!! CUSTOM
 };
 
-struct DBCTaxiNode
+struct SpellCastTimesDBC
 {
-    uint32 id;
-    uint32 mapid;
-    float x;
-    float y;
-    float z;
-    //uint32 name;
-    //uint32 namealt1;
-    //uint32 namealt2;
-    //uint32 namealt3;
-    //uint32 namealt4;
-    //uint32 namealt5;
-    //uint32 namealt6;
-    //uint32 namealt7;
-    //uint32 namealt8;
-    //uint32 namealt9;
-    //uint32 namealt10;
-    //uint32 namealt11;
-    //uint32 namealt12;
-    //uint32 namealt13;
-    //uint32 namealt14;
-    //uint32 namealt15;
-    //uint32 nameflags;
-    uint32 horde_mount;
-    uint32 alliance_mount;
+    uint32 ID;                         // 0
+    uint32 CastTime;                   // 1
+    //uint32 unk1;                     // 2 |0 or Null.|
+    //uint32 unk2;                     // 3 |Sometimes same as #1, but often less value.|
 };
 
-struct DBCTaxiPath
+struct SpellDurationDBC
 {
-    uint32 id;
-    uint32 from;
-    uint32 to;
-    uint32 price;
+    uint32 ID;                         // 0
+    uint32 Duration1;                  // 1
+    uint32 Duration2;                  // 2
+    uint32 Duration3;                  // 3
 };
 
-struct DBCTaxiPathNode
+struct SpellItemEnchantmentDBC
 {
-    uint32 id;
-    uint32 path;
-    uint32 seq;
-    uint32 mapid;
-    float x;
-    float y;
-    float z;
-    uint32 unk1;
-    uint32 waittime;
-    //uint32 unk2;
-    //uint32 unk3;
+    uint32 Id;                         // 0
+    uint32 type[3];                    // 1-3
+    int32 min[3];                      // 4-6 |For compat, in practice min==max|
+    int32 max[3];                      // 7-9
+    uint32 spell[3];                   // 10-12
+    char* Name;                        // 13
+    //char* AltName[15];               // 14-28
+    uint32 NameFlags;                  // 29
+    uint32 visual;                     // 30 |Aura Id.|
+    uint32 EnchantGroups;              // 31 |Slot.|
+    uint32 GemEntry;                   // 32 |GemId.|
+    uint32 unk7;                       // 33 |Gem Related.Enchantment Condition.|
 };
 
-struct CreatureSpellDataEntry
+struct SpellRadiusDBC
 {
-    uint32 id;
-    uint32 Spells[3];
-    uint32 PHSpell;
-    uint32 Cooldowns[3];
-    uint32 PH;
+    uint32 ID;                         // 0
+    float Radius;                      // 1
+    //float unk1;                      // 2
+    float Radius2;                     // 3
 };
 
-struct CharRaceEntry
+struct SpellRangeDBC
 {
-    uint32 race_id;
-    //uint32 unk1;
-    uint32 faction_id;
-    //uint32 unk2;
-    //uint32 unk3;
-    //uint32 unk4;
-    //uint32 unk5;
-    //uint32 unk6;
-    uint32 team_id;
-    //uint32 unk7;
-    //uint32 unk8;
-    //uint32 unk9;
-    char* name1;
-    uint32 cinematic_id;
-    //uint32 name2;
-    //uint32 unk10;
-    //uint32 unk11;
-    //uint32 unk12;
-    //uint32 unk13;
-    //uint32 unk14;
-    //uint32 unk15;
-    //uint32 unk16;
-    //uint32 unk17;
-    //uint32 unk18;
-    //uint32 unk19;
-    //uint32 unk20;
-    //uint32 unk21;
-    //uint32 unk22;
-    //uint32 unk23;
-    //uint32 unk24;
-    //uint32 unk25;
-    //uint32 unk26;
-    //uint32 unk27;
-    //uint32 unk28;
-    //uint32 unk29;
+    uint32 ID;                         // 0
+    float minRange;                    // 1
+    float maxRange;                    // 2
+    //uint32 someflags;                // 3
+    char* Name_Internal;               // 4
+    //char* AltName_Internal[15];      // 5-19
+    uint32 intern_nameflags;           // 20
+    char* Name;                        // 21
+    //char* AltName[15];               // 22-36
+    uint32 nameflags;                  // 37
 };
 
-struct CharClassEntry
+
+struct TalentDBC
 {
-    uint32 class_id;
-    //uint32 unk1;
-    uint32 power_type;
-    //uint32 unk2;
-    char* name;
-    //uint32 namealt1;
-    //uint32 namealt2;
-    //uint32 namealt3;
-    //uint32 namealt4;
-    //uint32 namealt5;
-    //uint32 namealt6;
-    //uint32 namealt7;
-    //uint32 namealt8;
-    //uint32 namealt9;
-    //uint32 namealt10;
-    //uint32 namealt11;
-    //uint32 namealt12;
-    //uint32 namealt13;
-    //uint32 namealt14;
-    //uint32 namealt15;
-    //uint32 nameflags;
-    //uint32 unk3;
-    //uint32 unk4;
-    //uint32 unk5;
+    uint32  TalentID;                  // 0
+    uint32  TalentTree;                // 1 |Reference to TalentTab.dbc.|
+    uint32  Row;                       // 2
+    uint32  Col;                       // 3
+    uint32  RankID[5];                 // 4-8
+    //uint32  unk[4];                  // 9-12 |Always 0, maybe not used high ranks.|
+    uint32  DependsOn;                 // 13 |Index in Talent.dbc (TalentId).|
+    //uint32  unk1[2];                 // 14-15
+    uint32  DependsOnRank;             // 16
+    //uint32  unk2[4];                 // 17-20 |Field #19 is bool. Perhaps 0 - for Auras, 1 for spells.Field #20 always 0, except Nature's Grace is 339.|
 };
 
-struct CreatureFamilyEntry
+struct TalentTabDBC
 {
-    uint32 ID;
-    float minsize;
-    uint32 minlevel;
-    float maxsize;
-    uint32 maxlevel;
-    uint32 skilline;
-    uint32 tameable;		//second skill line - 270 Generic
-    uint32 petdietflags;
-    char* name;
-    //uint32 namealt1;
-    //uint32 namealt2;
-    //uint32 namealt3;
-    //uint32 namealt4;
-    //uint32 namealt5;
-    //uint32 namealt6;
-    //uint32 namealt7;
-    //uint32 namealt8;
-    //uint32 namealt9;
-    //uint32 namealt10;
-    //uint32 namealt11;
-    //uint32 namealt12;
-    //uint32 namealt13;
-    //uint32 namealt14;
-    //uint32 namealt15;
-    //uint32 nameflags;
-    //uint32 unk1;
+    uint32  TalentTabID;               // 0
+    char* Name;                        // 1
+    //char*  AltName[15];               // 2-16
+    uint32 nameflags;                  // 17
+    uint32 spellicon;                  // 18
+    //uint32 unk;                      // 19 |Always 2047.|
+    uint32  ClassMask;                 // 20
+    uint32  TabPage;                   // 21
+    char* InternalName;                // 22
 };
 
-struct MapEntry
+struct Trainerspell
 {
-    uint32 id;
-    char* name_internal;
-    uint32 map_type;
-    //uint32 unk;
-    char* real_name;
-    //uint32 unk_1;
-    //uint32 unk1;
-    //uint32 unk2;
-    //uint32 unk3;
-    //uint32 unk4;
-    //uint32 unk5;
-    //uint32 unk6;
-    //uint32 unk7;
-    //uint32 unk8;
-    //uint32 unk9;
-    //uint32 unk10;
-    //uint32 unk11;
-    //uint32 unk12;
-    //uint32 unk13;
-    //uint32 unk14;
-    //uint32 unk15;
-    //uint32 unk16;
-    //uint32 unk17;
-    //uint32 unk18;
-    //uint32 unk19;
-    //uint32 unk20;
-    //uint32 unk21;
-    //uint32 unk22;
-    //uint32 unk23;
-    //uint32 unk24;
-    //uint32 unk25;
-    //uint32 unk26;
-    //uint32 unk27;
-    //uint32 unk28;
-    //uint32 unk29;
-    //uint32 unk30;
-    //uint32 unk31;
-    //uint32 unk32;
-    //uint32 unk33;
-    //uint32 unk34;
-    //uint32 unk35;
-    //uint32 unk36;
-    //uint32 unk37;
-    //uint32 unk38;
-    //uint32 unk39;
-    //uint32 unk40;
-    //uint32 unk41;
-    //uint32 unk42;
-    //uint32 unk43;
-    //uint32 unk44;
-    //uint32 unk45;
-    //uint32 unk46;
-    //uint32 unk47;
-    //uint32 unk48;
-    //uint32 unk49;
-    //uint32 unk50;
-    //uint32 unk51;
-    //uint32 unk52;
-    //uint32 unk53;
-    //uint32 unk54;
-    //uint32 unk55;
-    //uint32 unk56;
-    //uint32 unk57;
-    //uint32 unk58;
-    //uint32 unk59;
-    //uint32 unk60;
-    //uint32 unk61;
-    //uint32 unk62;
-    //uint32 unk63;
-    //uint32 unk64;
-    //uint32 unk65;
-    //uint32 unk66;
-    //uint32 unk67;
-    //uint32 unk68;
-    //uint32 unk69;
-    //uint32 aunk1;
-    //uint32 aunk2;
-    //uint32 aunk3;
-    //uint32 aunk4;
-    //uint32 aunk5;
-    //uint32 aunk6;
-    //uint32 aunk7;
-    //uint32 aunk8;
-    //uint32 aunk9;
-    //uint32 aunk10;
-    //uint32 aunk11;
-    //uint32 aunk12;
-    //uint32 aunk13;
-    //uint32 aunk14;
-    //uint32 aunk15;
-    //uint32 aunk16;
-    //uint32 aunk17;
-    //uint32 aunk18;
-    //uint32 aunk19;
-    //uint32 aunk20;
-    //uint32 aunk21;
-    //uint32 aunk22;
-    //uint32 aunk23;
-    //uint32 aunk24;
-    //uint32 bunk1;
-    //uint32 bunk2;
-    //uint32 bunk3;
-    //uint32 bunk4;
-    //uint32 bunk5;
-    //uint32 bunk6;
-    //uint32 bunk7;
-    //uint32 bunk8;
-    //uint32 bunk9;
-    //uint32 bunk10;
-    //uint32 bunk11;
-    //uint32 bunk12;
-    //uint32 bunk13;
-    //uint32 bunk14;
-    //uint32 bunk15;
-    //uint32 bunk16;
-    //uint32 bunk17;
-    //uint32 bunk18;
-    //uint32 bunk19;
-    //uint32 bunk20;
-    //uint32 bunk21;
-    //uint32 bunk22;
-    //uint32 bunk23;
-    //uint32 bunk24;
+    uint32 Id;
+    uint32 skilline1;
+    uint32 skilline2;
+    uint32 skilline3;
+    uint32 maxlvl;
+    uint32 charclass;
 };
 
-struct ItemRandomSuffixEntry
+struct TaxiNodesDBC
 {
-	uint32 id;
-	uint32 enchantments[3];
-	uint32 prefixes[3];
+    uint32 id;                         // 0
+    uint32 mapid;                      // 1
+    float x;                           // 2
+    float y;                           // 3
+    float z;                           // 4
+    char* name;                        // 5
+    //char* Altname[15];               // 6-20
+    uint32 nameflags;                  // 21
+    uint32 horde_mount;                // 22 |Type of mount.|
+    uint32 alliance_mount;             // 23 |Type of mount.|
 };
 
-struct CombatRatingDBC
+struct TaxiPathDBC
 {
-	float val;
+    uint32 id;                         // 0
+    uint32 from;                       // 1
+    uint32 to;                         // 2
+    uint32 price;                      // 3 |Price in copper for a flight.|
 };
 
-struct ChatChannelDBC
+struct TaxiPathNodeDBC
 {
-	uint32 id;
-	uint32 flags;
+    uint32 id;                         // 0
+    uint32 path;                       // 1
+    uint32 seq;                        // 2
+    uint32 mapid;                      // 3
+    float x;                           // 4
+    float y;                           // 5
+    float z;                           // 6
+    uint32 unk1;                       // 7
+    uint32 waittime;                   // 8
+    //uint32 unk2;                     // 9
+    //uint32 unk3;                     // 10
 };
 
 #pragma pack(pop)
 
-ASCENT_INLINE float GetRadius(SpellRadius *radius)
+ASCENT_INLINE float GetRadius(SpellRadiusDBC *radius)
 {
     return radius->Radius;
 }
-ASCENT_INLINE uint32 GetCastTime(SpellCastTime *time)
+ASCENT_INLINE uint32 GetCastTime(SpellCastTimesDBC *time)
 {
     return time->CastTime;
 }
-ASCENT_INLINE float GetMaxRange(SpellRange *range)
+ASCENT_INLINE float GetMaxRange(SpellRangeDBC *range)
 {
     return range->maxRange;
 }
-ASCENT_INLINE float GetMinRange(SpellRange *range)
+ASCENT_INLINE float GetMinRange(SpellRangeDBC *range)
 {
     return range->minRange;
 }
-ASCENT_INLINE uint32 GetDuration(SpellDuration *dur)
+ASCENT_INLINE uint32 GetDuration(SpellDurationDBC *dur)
 {
     return dur->Duration1;
 }
@@ -1140,37 +838,39 @@
 #endif
 };
 
-extern SERVER_DECL DBCStorage<GemPropertyEntry> dbcGemProperty;
-extern SERVER_DECL DBCStorage<ItemSetEntry> dbcItemSet;
-extern SERVER_DECL DBCStorage<Lock> dbcLock;
-extern SERVER_DECL DBCStorage<SpellEntry> dbcSpell;
-extern SERVER_DECL DBCStorage<SpellDuration> dbcSpellDuration;
-extern SERVER_DECL DBCStorage<SpellRange> dbcSpellRange;
-extern SERVER_DECL DBCStorage<emoteentry> dbcEmoteEntry;
-extern SERVER_DECL DBCStorage<SpellRadius> dbcSpellRadius;
-extern SERVER_DECL DBCStorage<SpellCastTime> dbcSpellCastTime;
-extern SERVER_DECL DBCStorage<AreaTable> dbcArea;
-extern SERVER_DECL DBCStorage<FactionTemplateDBC> dbcFactionTemplate;
-extern SERVER_DECL DBCStorage<FactionDBC> dbcFaction;
-extern SERVER_DECL DBCStorage<EnchantEntry> dbcEnchant;
-extern SERVER_DECL DBCStorage<RandomProps> dbcRandomProps;
-extern SERVER_DECL DBCStorage<skilllinespell> dbcSkillLineSpell;
-extern SERVER_DECL DBCStorage<skilllineentry> dbcSkillLine;
-extern SERVER_DECL DBCStorage<DBCTaxiNode> dbcTaxiNode;
-extern SERVER_DECL DBCStorage<DBCTaxiPath> dbcTaxiPath;
-extern SERVER_DECL DBCStorage<DBCTaxiPathNode> dbcTaxiPathNode;
+extern SERVER_DECL DBCStorage<AreaTableDBC> dbcAreaTable;
 extern SERVER_DECL DBCStorage<AuctionHouseDBC> dbcAuctionHouse;
-extern SERVER_DECL DBCStorage<TalentEntry> dbcTalent;
-extern SERVER_DECL DBCStorage<TalentTabEntry> dbcTalentTab;
-extern SERVER_DECL DBCStorage<CreatureSpellDataEntry> dbcCreatureSpellData;
-extern SERVER_DECL DBCStorage<CreatureFamilyEntry> dbcCreatureFamily;
-extern SERVER_DECL DBCStorage<CharClassEntry> dbcCharClass;
-extern SERVER_DECL DBCStorage<CharRaceEntry> dbcCharRace;
-extern SERVER_DECL DBCStorage<MapEntry> dbcMap;
-extern SERVER_DECL DBCStorage<ItemExtendedCostEntry> dbcItemExtendedCost;
-extern SERVER_DECL DBCStorage<ItemRandomSuffixEntry> dbcItemRandomSuffix;
-extern SERVER_DECL DBCStorage<CombatRatingDBC> dbcCombatRating;
-extern SERVER_DECL DBCStorage<ChatChannelDBC> dbcChatChannels;
+extern SERVER_DECL DBCStorage<ChatChannelsDBC> dbcChatChannels;
+extern SERVER_DECL DBCStorage<ChrClassesDBC> dbcChrClasses;
+extern SERVER_DECL DBCStorage<ChrRacesDBC> dbcChrRaces;
+extern SERVER_DECL DBCStorage<CreatureFamilyDBC> dbcCreatureFamily;
+extern SERVER_DECL DBCStorage<CreatureSpellDataDBC> dbcCreatureSpellData;
+extern SERVER_DECL DBCStorage<EmotesTextDBC> dbcEmotesText;
+extern SERVER_DECL DBCStorage<FactionDBC> dbcFaction;
+extern SERVER_DECL DBCStorage<FactionTemplateDBC> dbcFactionTemplate;
+extern SERVER_DECL DBCStorage<GemPropertiesDBC> dbcGemProperties;
+extern SERVER_DECL DBCStorage<gtCombatRatingsDBC> dbcgtCombatRatings;
+extern SERVER_DECL DBCStorage<ItemExtendedCostDBC> dbcItemExtendedCost;
+extern SERVER_DECL DBCStorage<ItemRandomPropertiesDBC> dbcItemRandomProperties;
+extern SERVER_DECL DBCStorage<ItemRandomSuffixDBC> dbcItemRandomSuffix;
+extern SERVER_DECL DBCStorage<ItemSetDBC> dbcItemSet;
+// LFGDungeons.dbc?
+extern SERVER_DECL DBCStorage<LockDBC> dbcLock;
+extern SERVER_DECL DBCStorage<MapDBC> dbcMap;
+// NameGen.dbc??
+extern SERVER_DECL DBCStorage<SkillLineDBC> dbcSkillLine;
+extern SERVER_DECL DBCStorage<SkillLineAbilityDBC> dbcSkillLineAbility;
+extern SERVER_DECL DBCStorage<SpellDBC> dbcSpell;
+extern SERVER_DECL DBCStorage<SpellCastTimesDBC> dbcSpellCastTimes;
+extern SERVER_DECL DBCStorage<SpellDurationDBC> dbcSpellDuration;
+extern SERVER_DECL DBCStorage<SpellItemEnchantmentDBC> dbcSpellItemEnchantment;
+extern SERVER_DECL DBCStorage<SpellRadiusDBC> dbcSpellRadius;
+extern SERVER_DECL DBCStorage<SpellRangeDBC> dbcSpellRange;
+extern SERVER_DECL DBCStorage<TalentDBC> dbcTalent;
+extern SERVER_DECL DBCStorage<TalentTabDBC> dbcTalentTab;
+extern SERVER_DECL DBCStorage<TaxiNodesDBC> dbcTaxiNodes;
+extern SERVER_DECL DBCStorage<TaxiPathDBC> dbcTaxiPath;
+extern SERVER_DECL DBCStorage<TaxiPathNodeDBC> dbcTaxiPathNode;
 
 bool LoadDBCs();