rendered paste bodyIndex: 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();