/*
* Ascent MMORPG Server
* Copyright (C) 2005-2007 Ascent Team
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
#ifndef __SPELLSTORE_H
#define __SPELLSTORE_H
#include "Common.h"
#include "DataStore.h"
#include "Timer.h"
struct ItemSetEntry
{
uint32 id; //1
uint32 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
};
struct Lock
{
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];
};
struct emoteentry
{
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;
};
struct skilllinespell //SkillLineAbility.dbc
{
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;
};
struct EnchantEntry
{
uint32 Id;
uint32 type[3];
int32 min[3];//for compat, in practice min==max
int32 max[3];
uint32 spell[3];
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 visual;
uint32 EnchantGroups;
uint32 GemEntry;
uint32 unk7;//Gem Related
};
struct GemPropertyEntry{
uint32 Entry;
uint32 EnchantmentID;
uint32 unk1;//bool
uint32 unk2;//bool
uint32 SocketMask;
};
struct skilllineentry //SkillLine.dbc
{
uint32 id;
uint32 type;
uint32 unk1;
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 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;
};
// Struct for the entry in Spell.dbc
struct SpellEntry
{
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
uint32 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
uint32 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
uint32 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
uint32 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 proc_interval; //190 - !!! Using it instead of BuffDescriptionAlt15 !!!
uint32 buffdescflags; //191
uint32 ManaCostPercentage; //192
uint32 unkflags; //193
uint32 StartRecoveryTime; //194
uint32 StartRecoveryCategory; //195
uint32 SpellFamilyName; //196
uint32 SpellGroupType; //197 flags
uint32 unkne; //198 flags hackwow=shit
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
// soz guys, gotta use these 3 vars :p
//uint32 unk201_4; // these are related to creating a item through a spell
//uint32 unk201_5;
//uint32 unk201_6; // related to custom spells, summon spell quest related spells
// custom shit
uint32 buffType; //209
// this protects players from having >1 rank of a spell
uint32 RankNumber; //210
uint32 NameHash; //211
uint32 DiminishStatus; //212
};
struct ItemExtendedCostEntry
{
uint32 costid;
uint32 honor;
uint32 arena;
uint32 item[5];
uint32 count[5];
};
struct TalentEntry
{
uint32 TalentID;
uint32 TalentTree;
uint32 Row;
uint32 Col;
uint32 RankID[5];
uint32 unk[4];
uint32 DependsOn;
uint32 unk1[2];
uint32 DependsOnRank;
uint32 unk2[4];
};
struct Trainerspell
{
uint32 Id;
uint32 skilline1;
uint32 skilline2;
uint32 skilline3;
uint32 maxlvl;
uint32 charclass;
};
struct SpellCastTime
{
uint32 ID;
uint32 CastTime;
uint32 unk1;
uint32 unk2;
};
struct SpellRadius
{
uint32 ID;
float Radius;
float unk1;
float Radius2;
};
struct SpellRange
{
uint32 ID;
float minRange;
float maxRange;
uint32 unks[35];
};
struct SpellDuration
{
uint32 ID;
uint32 Duration1;
uint32 Duration2;
uint32 Duration3;
};
struct RandomProps
{
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;
};
struct AreaTable
{
uint32 AreaId;
uint32 mapId;
uint32 ZoneId;
uint32 explorationFlag;
uint32 AreaFlags;
uint32 unk2;
uint32 unk3;
uint32 unk4;
uint32 EXP;//not XP
uint32 unk5;
uint32 level;
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 category;
uint32 unk7;
uint32 unk8;
uint32 unk9;
uint32 unk10;
uint32 unk11;
uint32 unk12;
};
struct FactionTemplateDBC
{
uint32 ID;
uint32 Faction;
uint32 FactionGroup;
uint32 Mask;
uint32 FriendlyMask;
uint32 HostileMask;
uint32 EnemyFactions[4];
uint32 FriendlyFactions[4];
};
struct AuctionHouseDBC
{
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;
};
struct FactionDBC
{
uint32 ID;
int32 RepListId;
uint32 baseRepMask[4];
uint32 unk1[4];
int32 baseRepValue[4];
uint32 unk2[4];
uint32 parentFaction;
uint32 Name;
uint32 shit[16];
uint32 Description;
uint32 shit2[16];
};
struct WorldMapArea
{
uint32 ID;
uint32 mapId;
uint32 zoneId;
uint32 zoneName;
float y1, y2;
float x1, x2;
uint32 unk;
};
struct WorldMapOverlay
{
uint32 ID;
uint32 worldMapAreaID;
uint32 areaTableID;
uint32 unk1;
uint32 unk2;
uint32 unk3;
uint32 unk4;
uint32 unk5;
uint32 name;
uint32 areaW;
uint32 areaH;
uint32 areaX;
uint32 areaY;
uint32 y1;
uint32 x1;
uint32 y2;
uint32 x2;
};
struct DBCTaxiNode
{
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;
};
struct DBCTaxiPath
{
uint32 id;
uint32 from;
uint32 to;
uint32 price;
};
struct DBCTaxiPathNode
{
uint32 id;
uint32 path;
uint32 seq;
uint32 mapid;
float x;
float y;
float z;
uint32 unk1;
uint32 waittime;
uint32 unk2;
uint32 unk3;
};
struct GraveyardEntry
{
uint32 someid;
uint32 mapid;
float x;
float y;
float z;
uint32 name;
uint32 not_used[15];
uint32 flag;
};
struct NameGenEntry
{
int32 id;
uint32 offsetindex;
int32 unk1;
bool unk2;
};
struct CreatureSpellDataEntry
{
uint32 id;
uint32 Spells[3];
uint32 PHSpell;
uint32 Cooldowns[3];
uint32 PH;
};
struct CharRaceEntry
{
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;
uint32 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;
};
struct CharClassEntry
{
uint32 class_id;
uint32 unk1;
uint32 power_type;
uint32 unk2;
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 unk3;
uint32 unk4;
uint32 unk5;
};
struct CreatureFamilyEntry
{
uint32 ID;
float minsize;
uint32 minlevel;
float maxsize;
uint32 maxlevel;
uint32 skilline;
uint32 tameable;
uint32 pet_food_id;
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 unk1;
};
struct MapEntry
{
uint32 id;
uint32 name_internal;
uint32 map_type;
uint32 unk;
uint32 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;
};
inline float GetRadius(SpellRadius *radius)
{
return radius->Radius;
}
inline uint32 GetCastTime(SpellCastTime *time)
{
return time->CastTime;
}
inline float GetMaxRange(SpellRange *range)
{
return range->maxRange;
}
inline float GetMinRange(SpellRange *range)
{
return range->minRange;
}
inline uint32 GetDuration(SpellDuration *dur)
{
return dur->Duration1;
}
struct TransportAnimation
{
uint32 ID;
uint32 EntryID;
uint32 Time;
float PlusX;
float PlusY;
float PlusZ;
uint32 MovementType;
};
// You need two lines like this for every new DBC store
defineIndexedDBCStore(GemPropertiesStore,GemPropertyEntry);
defineIndexedDBCStore(ItemSetStore,ItemSetEntry);
defineIndexedDBCStore(LockStore,Lock);
defineIndexedDBCStore(SpellStore,SpellEntry);
defineIndexedDBCStore(DurationStore,SpellDuration);
defineIndexedDBCStore(RangeStore,SpellRange);
defineIndexedDBCStore(EmoteStore,emoteentry);
defineIndexedDBCStore(RadiusStore,SpellRadius);
defineIndexedDBCStore(CastTimeStore,SpellCastTime);
defineIndexedDBCStore(AreaStore,AreaTable);
defineIndexedDBCStore(WorldMapAreaStore,WorldMapArea);
defineDBCStore(WorldMapOverlayStore,WorldMapOverlay);
defineIndexedDBCStore(FactionTmpStore,FactionTemplateDBC);
defineIndexedDBCStore(FactionStore,FactionDBC);
defineIndexedDBCStore(EnchantStore,EnchantEntry);
defineIndexedDBCStore(RandomPropStore,RandomProps);
defineDBCStore(SkillStore,skilllinespell);
defineIndexedDBCStore(SkillLineStore,skilllineentry);
defineDBCStore(TaxiNodeStore,DBCTaxiNode);
defineDBCStore(TaxiPathStore,DBCTaxiPath);
defineDBCStore(TaxiPathNodeStore,DBCTaxiPathNode);
defineDBCStore(WorldSafeLocsStore,GraveyardEntry);
defineIndexedDBCStore(TransportAnimationStore,TransportAnimation);
defineDBCStore(NameGenStore, NameGenEntry);
defineIndexedDBCStore(AuctionHouseStore,AuctionHouseDBC);
defineDBCStore(TalentStore,TalentEntry);
defineIndexedDBCStore(CreatureSpellDataStore, CreatureSpellDataEntry);
defineIndexedDBCStore(CreatureFamilyStore, CreatureFamilyEntry);
defineIndexedDBCStore(CharClassStore, CharClassEntry);
defineIndexedDBCStore(CharRaceStore, CharRaceEntry);
defineIndexedDBCStore(MapStore, MapEntry);
defineIndexedDBCStore(ItemExtendedCostStore,ItemExtendedCostEntry);
#define sGemPropertiesStore GemPropertiesStore::getSingleton()
#define sRandomPropStore RandomPropStore::getSingleton()
#define sEnchantStore EnchantStore::getSingleton()
#define sSpellStore SpellStore::getSingleton()
#define sLockStore LockStore::getSingleton()
#define sSkillLineStore SkillLineStore::getSingleton()
#define sSkillStore SkillStore::getSingleton()
#define sEmoteStore EmoteStore::getSingleton()
#define sSpellDuration DurationStore::getSingleton()
#define sSpellRange RangeStore::getSingleton()
#define sSpellRadius RadiusStore::getSingleton()
#define sCastTime CastTimeStore::getSingleton()
#define sAreaStore AreaStore::getSingleton()
#define sWorldMapAreaStore WorldMapAreaStore::getSingleton()
#define sWorldMapOverlayStore WorldMapOverlayStore::getSingleton()
#define sFactionTmpStore FactionTmpStore::getSingleton()
#define sFactionStore FactionStore::getSingleton()
#define sTaxiNodeStore TaxiNodeStore::getSingleton()
#define sTaxiPathStore TaxiPathStore::getSingleton()
#define sTaxiPathNodeStore TaxiPathNodeStore::getSingleton()
#define sItemSetStore ItemSetStore::getSingleton()
#define sWorldSafeLocsStore WorldSafeLocsStore::getSingleton()
#define sTransportAnimationStore TransportAnimationStore::getSingleton()
#define sAuctionHouseStore AuctionHouseStore::getSingleton()
#define sTalentStore TalentStore::getSingleton()
#define sCreatureSpellStore CreatureSpellDataStore::getSingleton()
#define sCreatureFamilyStore CreatureFamilyStore::getSingleton()
#define sCharClassStore CharClassStore::getSingleton()
#define sCharRaceStore CharRaceStore::getSingleton()
#define sMapStore MapStore::getSingleton()
#define sItemExtendedCostStore ItemExtendedCostStore::getSingleton()
#endif