TrinityCore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
DBCStores.h File Reference
#include "DBCStore.h"
#include "DBCStructure.h"
#include "DB2Structure.h"
#include "SharedDefines.h"
+ Include dependency graph for DBCStores.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  GameTable< T >
 

Typedefs

typedef ChrSpecializationEntry
const
ChrSpecializationByIndexArray [MAX_CLASSES][MAX_SPECIALIZATIONS]
 
typedef std::vector
< ItemSetSpellEntry const * > 
ItemSetSpells
 
typedef std::unordered_map
< uint32, ItemSetSpells
ItemSetSpellsStore
 
typedef std::unordered_map
< uint32, std::unordered_map
< uint32, MapDifficultyEntry
const * > > 
MapDifficultyMap
 
typedef
std::unordered_multimap
< uint32,
SkillRaceClassInfoEntry const * > 
SkillRaceClassInfoMap
 
typedef std::pair
< SkillRaceClassInfoMap::iterator,
SkillRaceClassInfoMap::iterator > 
SkillRaceClassInfoBounds
 
typedef std::unordered_map
< uint32, uint32
SpellEffectScallingByEffectId
 
typedef std::vector
< TalentEntry const * > 
TalentsByPosition [MAX_CLASSES][MAX_TALENT_TIERS][MAX_TALENT_COLUMNS]
 

Functions

TC_GAME_API CharSectionsEntry
const
GetCharSectionEntry (uint8 race, CharSectionType genType, uint8 gender, uint8 type, uint8 color)
 
TC_GAME_API char constGetClassName (uint8 class_, uint8 locale)
 
TC_GAME_API char constGetRaceName (uint8 race, uint8 locale)
 
TC_GAME_API char constGetCreatureFamilyPetName (uint32 petfamily, uint32 locale)
 
TC_GAME_API
EmotesTextSoundEntry const
FindTextSoundEmoteFor (uint32 emote, uint32 race, uint32 gender)
 
TC_GAME_API std::vector
< uint32 > const
GetFactionTeamList (uint32 faction)
 
TC_GAME_API LFGDungeonEntry constGetLFGDungeon (uint32 mapId, Difficulty difficulty)
 Returns LFGDungeonEntry for a specific map and difficulty. Will return first found entry if multiple dungeons use the same map (such as Scarlet Monastery) More...
 
TC_GAME_API uint32 GetDefaultMapLight (uint32 mapId)
 
TC_GAME_API uint32 GetLiquidFlags (uint32 liquidType)
 
TC_GAME_API MapDifficultyEntry
const
GetDefaultMapDifficulty (uint32 mapId, Difficulty *difficulty=nullptr)
 
TC_GAME_API MapDifficultyEntry
const
GetMapDifficultyData (uint32 mapId, Difficulty difficulty)
 
TC_GAME_API MapDifficultyEntry
const
GetDownscaledMapDifficultyData (uint32 mapId, Difficulty &difficulty)
 
TC_GAME_API PvPDifficultyEntry
const
GetBattlegroundBracketByLevel (uint32 mapid, uint32 level)
 
TC_GAME_API PvPDifficultyEntry
const
GetBattlegroundBracketById (uint32 mapid, BattlegroundBracketId id)
 
TC_GAME_API
SkillRaceClassInfoEntry const
GetSkillRaceClassInfo (uint32 skill, uint8 race, uint8 class_)
 
TC_GAME_API bool IsTotemCategoryCompatibleWith (uint32 itemTotemCategoryId, uint32 requiredTotemCategoryId)
 
TC_GAME_API WMOAreaTableEntry
const
GetWMOAreaTableEntryByTripple (int32 rootid, int32 adtid, int32 groupid)
 
TC_GAME_API uint32 GetVirtualMapForMapAndZone (uint32 mapid, uint32 zoneId)
 
TC_GAME_API void Zone2MapCoordinates (float &x, float &y, uint32 worldMapAreaId)
 
TC_GAME_API void Map2ZoneCoordinates (float &x, float &y, uint32 worldMapAreaId)
 
TC_GAME_API void DeterminaAlternateMapPosition (uint32 mapId, float x, float y, float z, uint32 *newMapId=nullptr, DBCPosition2D *newPos=nullptr)
 
TC_GAME_API uint32 GetMaxLevelForExpansion (uint32 expansion)
 
TC_GAME_API uint32 GetExpansionForLevel (uint32 level)
 
TC_GAME_API void LoadDBCStores (const std::string &dataPath, uint32 defaultLocale)
 
TC_GAME_API void LoadGameTables (const std::string &dataPath, uint32 defaultLocale)
 

Variables

TC_GAME_API DBCStorage
< AnimKitEntry
sAnimKitStore
 
TC_GAME_API DBCStorage
< AreaTableEntry
sAreaTableStore
 
TC_GAME_API DBCStorage
< AreaTriggerEntry
sAreaTriggerStore
 
TC_GAME_API DBCStorage
< ArmorLocationEntry
sArmorLocationStore
 
TC_GAME_API DBCStorage
< BankBagSlotPricesEntry
sBankBagSlotPricesStore
 
TC_GAME_API DBCStorage
< BannedAddOnsEntry
sBannedAddOnsStore
 
TC_GAME_API DBCStorage
< BattlemasterListEntry
sBattlemasterListStore
 
TC_GAME_API DBCStorage
< CharSectionsEntry
sCharSectionsStore
 
TC_GAME_API DBCStorage
< CharTitlesEntry
sCharTitlesStore
 
TC_GAME_API DBCStorage
< ChatChannelsEntry
sChatChannelsStore
 
TC_GAME_API DBCStorage
< ChrClassesEntry
sChrClassesStore
 
TC_GAME_API DBCStorage
< ChrRacesEntry
sChrRacesStore
 
TC_GAME_API DBCStorage
< ChrSpecializationEntry
sChrSpecializationStore
 
TC_GAME_API
ChrSpecializationByIndexArray 
sChrSpecializationByIndexStore
 
TC_GAME_API DBCStorage
< CreatureDisplayInfoExtraEntry
sCreatureDisplayInfoExtraStore
 
TC_GAME_API DBCStorage
< CreatureFamilyEntry
sCreatureFamilyStore
 
TC_GAME_API DBCStorage
< CreatureModelDataEntry
sCreatureModelDataStore
 
TC_GAME_API DBCStorage
< DifficultyEntry
sDifficultyStore
 
TC_GAME_API DBCStorage
< DungeonEncounterEntry
sDungeonEncounterStore
 
TC_GAME_API DBCStorage
< DurabilityCostsEntry
sDurabilityCostsStore
 
TC_GAME_API DBCStorage
< EmotesEntry
sEmotesStore
 
TC_GAME_API DBCStorage
< EmotesTextEntry
sEmotesTextStore
 
TC_GAME_API DBCStorage
< FactionEntry
sFactionStore
 
TC_GAME_API DBCStorage
< FactionTemplateEntry
sFactionTemplateStore
 
TC_GAME_API DBCStorage
< GameObjectDisplayInfoEntry
sGameObjectDisplayInfoStore
 
TC_GAME_API DBCStorage
< GemPropertiesEntry
sGemPropertiesStore
 
TC_GAME_API DBCStorage
< GlyphPropertiesEntry
sGlyphPropertiesStore
 
TC_GAME_API DBCStorage
< GuildColorBackgroundEntry
sGuildColorBackgroundStore
 
TC_GAME_API DBCStorage
< GuildColorBorderEntry
sGuildColorBorderStore
 
TC_GAME_API DBCStorage
< GuildColorEmblemEntry
sGuildColorEmblemStore
 
TC_GAME_API DBCStorage
< ItemArmorQualityEntry
sItemArmorQualityStore
 
TC_GAME_API DBCStorage
< ItemArmorShieldEntry
sItemArmorShieldStore
 
TC_GAME_API DBCStorage
< ItemArmorTotalEntry
sItemArmorTotalStore
 
TC_GAME_API DBCStorage
< ItemBagFamilyEntry
sItemBagFamilyStore
 
TC_GAME_API DBCStorage
< ItemDamageEntry
sItemDamageAmmoStore
 
TC_GAME_API DBCStorage
< ItemDamageEntry
sItemDamageOneHandCasterStore
 
TC_GAME_API DBCStorage
< ItemDamageEntry
sItemDamageOneHandStore
 
TC_GAME_API DBCStorage
< ItemDamageEntry
sItemDamageRangedStore
 
TC_GAME_API DBCStorage
< ItemDamageEntry
sItemDamageThrownStore
 
TC_GAME_API DBCStorage
< ItemDamageEntry
sItemDamageTwoHandCasterStore
 
TC_GAME_API DBCStorage
< ItemDamageEntry
sItemDamageTwoHandStore
 
TC_GAME_API DBCStorage
< ItemDamageEntry
sItemDamageWandStore
 
TC_GAME_API DBCStorage
< ItemSetEntry
sItemSetStore
 
TC_GAME_API DBCStorage
< ItemSetSpellEntry
sItemSetSpellStore
 
TC_GAME_API ItemSetSpellsStore sItemSetSpellsStore
 
TC_GAME_API DBCStorage
< LFGDungeonEntry
sLFGDungeonStore
 
TC_GAME_API DBCStorage
< LiquidTypeEntry
sLiquidTypeStore
 
TC_GAME_API DBCStorage< LockEntrysLockStore
 
TC_GAME_API DBCStorage< MapEntrysMapStore
 
TC_GAME_API MapDifficultyMap sMapDifficultyMap
 
TC_GAME_API DBCStorage
< MovieEntry
sMovieStore
 
TC_GAME_API DBCStorage
< PhaseEntry
sPhaseStore
 
TC_GAME_API DBCStorage
< PowerDisplayEntry
sPowerDisplayStore
 
TC_GAME_API DBCStorage
< QuestFactionRewEntry
sQuestFactionRewardStore
 
TC_GAME_API DBCStorage
< RandomPropertiesPointsEntry
sRandomPropertiesPointsStore
 
TC_GAME_API DBCStorage
< SkillLineAbilityEntry
sSkillLineAbilityStore
 
TC_GAME_API DBCStorage
< SkillLineEntry
sSkillLineStore
 
TC_GAME_API DBCStorage
< SkillRaceClassInfoEntry
sSkillRaceClassInfoStore
 
TC_GAME_API DBCStorage
< SpellAuraOptionsEntry
sSpellAuraOptionsStore
 
TC_GAME_API DBCStorage
< SpellCategoriesEntry
sSpellCategoriesStore
 
TC_GAME_API DBCStorage
< SpellCategoryEntry
sSpellCategoryStore
 
TC_GAME_API DBCStorage
< SpellCooldownsEntry
sSpellCooldownsStore
 
TC_GAME_API DBCStorage
< SpellEffectEntry
sSpellEffectStore
 
TC_GAME_API DBCStorage
< SpellEffectScalingEntry
sSpellEffectScalingStore
 
TC_GAME_API
SpellEffectScallingByEffectId 
sSpellEffectScallingByEffectId
 
TC_GAME_API DBCStorage
< SpellEntry
sSpellStore
 
TC_GAME_API DBCStorage
< SpellEquippedItemsEntry
sSpellEquippedItemsStore
 
TC_GAME_API DBCStorage
< SpellFocusObjectEntry
sSpellFocusObjectStore
 
TC_GAME_API DBCStorage
< SpellInterruptsEntry
sSpellInterruptsStore
 
TC_GAME_API DBCStorage
< SpellItemEnchantmentEntry
sSpellItemEnchantmentStore
 
TC_GAME_API DBCStorage
< SpellLevelsEntry
sSpellLevelsStore
 
TC_GAME_API DBCStorage
< SpellScalingEntry
sSpellScalingStore
 
TC_GAME_API DBCStorage
< SpellShapeshiftEntry
sSpellShapeshiftStore
 
TC_GAME_API DBCStorage
< SpellShapeshiftFormEntry
sSpellShapeshiftFormStore
 
TC_GAME_API DBCStorage
< SpellTargetRestrictionsEntry
sSpellTargetRestrictionsStore
 
TC_GAME_API DBCStorage
< SummonPropertiesEntry
sSummonPropertiesStore
 
TC_GAME_API DBCStorage
< TalentEntry
sTalentStore
 
TC_GAME_API TalentsByPosition sTalentByPos
 
TC_GAME_API DBCStorage
< VehicleEntry
sVehicleStore
 
TC_GAME_API DBCStorage
< VehicleSeatEntry
sVehicleSeatStore
 
TC_GAME_API DBCStorage
< WMOAreaTableEntry
sWMOAreaTableStore
 
TC_GAME_API DBCStorage
< WorldSafeLocsEntry
sWorldSafeLocsStore
 
TC_GAME_API GameTable
< GtBarberShopCostBaseEntry
sGtBarberShopCostBaseStore
 
TC_GAME_API GameTable
< GtChanceToMeleeCritBaseEntry
sGtChanceToMeleeCritBaseStore
 
TC_GAME_API GameTable
< GtChanceToMeleeCritEntry
sGtChanceToMeleeCritStore
 
TC_GAME_API GameTable
< GtChanceToSpellCritBaseEntry
sGtChanceToSpellCritBaseStore
 
TC_GAME_API GameTable
< GtChanceToSpellCritEntry
sGtChanceToSpellCritStore
 
TC_GAME_API GameTable
< GtCombatRatingsEntry
sGtCombatRatingsStore
 
TC_GAME_API GameTable
< GtItemSocketCostPerLevelEntry
sGtItemSocketCostPerLevelStore
 
TC_GAME_API GameTable
< GtNPCManaCostScalerEntry
sGtNPCManaCostScalerStore
 
TC_GAME_API GameTable
< GtNpcTotalHpEntry
sGtNpcTotalHpStore
 
TC_GAME_API GameTable
< GtNpcTotalHpExp1Entry
sGtNpcTotalHpExp1Store
 
TC_GAME_API GameTable
< GtNpcTotalHpExp2Entry
sGtNpcTotalHpExp2Store
 
TC_GAME_API GameTable
< GtNpcTotalHpExp3Entry
sGtNpcTotalHpExp3Store
 
TC_GAME_API GameTable
< GtNpcTotalHpExp4Entry
sGtNpcTotalHpExp4Store
 
TC_GAME_API GameTable
< GtNpcTotalHpExp5Entry
sGtNpcTotalHpExp5Store
 
TC_GAME_API GameTable
< GtOCTBaseHPByClassEntry
sGtOCTBaseHPByClassStore
 
TC_GAME_API GameTable
< GtOCTBaseMPByClassEntry
sGtOCTBaseMPByClassStore
 
TC_GAME_API GameTable
< GtOCTLevelExperienceEntry
sGtOCTLevelExperienceStore
 
TC_GAME_API GameTable
< GtRegenMPPerSptEntry
sGtRegenMPPerSptStore
 
TC_GAME_API GameTable
< GtSpellScalingEntry
sGtSpellScalingStore
 
TC_GAME_API GameTable
< GtOCTHpPerStaminaEntry
sGtOCTHpPerStaminaStore
 

Typedef Documentation

typedef ChrSpecializationEntry const* ChrSpecializationByIndexArray[MAX_CLASSES][MAX_SPECIALIZATIONS]
typedef std::vector<ItemSetSpellEntry const*> ItemSetSpells
typedef std::unordered_map<uint32, ItemSetSpells> ItemSetSpellsStore
typedef std::unordered_map<uint32, std::unordered_map<uint32, MapDifficultyEntry const*> > MapDifficultyMap
typedef std::pair<SkillRaceClassInfoMap::iterator, SkillRaceClassInfoMap::iterator> SkillRaceClassInfoBounds
typedef std::unordered_multimap<uint32, SkillRaceClassInfoEntry const*> SkillRaceClassInfoMap
typedef std::unordered_map<uint32, uint32> SpellEffectScallingByEffectId
typedef std::vector<TalentEntry const*> TalentsByPosition[MAX_CLASSES][MAX_TALENT_TIERS][MAX_TALENT_COLUMNS]

Function Documentation

TC_GAME_API void DeterminaAlternateMapPosition ( uint32  mapId,
float  x,
float  y,
float  z,
uint32 newMapId = nullptr,
DBCPosition2D newPos = nullptr 
)
862 {
863  ASSERT(newMapId || newPos);
864  WorldMapTransformsEntry const* transformation = nullptr;
865  for (WorldMapTransformsEntry const* transform : sWorldMapTransformsStore)
866  {
867  if (transform->MapID != mapId)
868  continue;
869 
870  if (transform->RegionMin.X > x || transform->RegionMax.X < x)
871  continue;
872  if (transform->RegionMin.Y > y || transform->RegionMax.Y < y)
873  continue;
874  if (transform->RegionMin.Z > z || transform->RegionMax.Z < z)
875  continue;
876 
877  transformation = transform;
878  break;
879  }
880 
881  if (!transformation)
882  {
883  if (newMapId)
884  *newMapId = mapId;
885 
886  if (newPos)
887  {
888  newPos->X = x;
889  newPos->Y = y;
890  }
891  return;
892  }
893 
894  if (newMapId)
895  *newMapId = transformation->NewMapID;
896 
897  if (!newPos)
898  return;
899 
900  if (transformation->RegionScale > 0.0f && transformation->RegionScale < 1.0f)
901  {
902  x = (x - transformation->RegionMin.X) * transformation->RegionScale + transformation->RegionMin.X;
903  y = (y - transformation->RegionMin.Y) * transformation->RegionScale + transformation->RegionMin.Y;
904  }
905 
906  newPos->X = x + transformation->RegionOffset.X;
907  newPos->Y = y + transformation->RegionOffset.Y;
908 }
float Y
Definition: DBCEnums.h:35
DBCStorage< WorldMapTransformsEntry > sWorldMapTransformsStore(WorldMapTransformsfmt)
float X
Definition: DBCEnums.h:28
float Y
Definition: DBCEnums.h:29
G3D::int16 z
Definition: Vector3int16.h:46
G3D::int16 y
Definition: Vector2int16.h:38
float X
Definition: DBCEnums.h:34
DBCPosition3D RegionMin
Definition: DBCStructure.h:1424
#define ASSERT
Definition: Errors.h:55
G3D::int16 x
Definition: Vector2int16.h:37
Definition: DBCStructure.h:1420
float RegionScale
Definition: DBCStructure.h:1431
uint32 NewMapID
Definition: DBCStructure.h:1426
DBCPosition2D RegionOffset
Definition: DBCStructure.h:1427

+ Here is the caller graph for this function:

TC_GAME_API EmotesTextSoundEntry const* FindTextSoundEmoteFor ( uint32  emote,
uint32  race,
uint32  gender 
)
574 {
575  auto itr = sEmotesTextSoundMap.find(EmotesTextSoundKey(emote, race, gender));
576  return itr != sEmotesTextSoundMap.end() ? itr->second : nullptr;
577 }
static std::map< EmotesTextSoundKey, EmotesTextSoundEntry const * > sEmotesTextSoundMap
Definition: DBCStores.cpp:79
std::tuple< uint32, uint32, uint32 > EmotesTextSoundKey
Definition: DBCStores.cpp:78

+ Here is the caller graph for this function:

TC_GAME_API PvPDifficultyEntry const* GetBattlegroundBracketById ( uint32  mapid,
BattlegroundBracketId  id 
)
785 {
786  for (uint32 i = 0; i < sPvpDifficultyStore.GetNumRows(); ++i)
787  if (PvPDifficultyEntry const* entry = sPvpDifficultyStore.LookupEntry(i))
788  if (entry->MapID == mapid && entry->GetBracketId() == id)
789  return entry;
790 
791  return NULL;
792 }
arena_t NULL
Definition: jemalloc_internal.h:624
DBCStorage< PvPDifficultyEntry > sPvpDifficultyStore(PvpDifficultyfmt)
uint32_t uint32
Definition: Define.h:150
Definition: DBCStructure.h:926

+ Here is the caller graph for this function:

TC_GAME_API PvPDifficultyEntry const* GetBattlegroundBracketByLevel ( uint32  mapid,
uint32  level 
)
761 {
762  PvPDifficultyEntry const* maxEntry = NULL; // used for level > max listed level case
763  for (uint32 i = 0; i < sPvpDifficultyStore.GetNumRows(); ++i)
764  {
765  if (PvPDifficultyEntry const* entry = sPvpDifficultyStore.LookupEntry(i))
766  {
767  // skip unrelated and too-high brackets
768  if (entry->MapID != mapid || entry->MinLevel > level)
769  continue;
770 
771  // exactly fit
772  if (entry->MaxLevel >= level)
773  return entry;
774 
775  // remember for possible out-of-range case (search higher from existed)
776  if (!maxEntry || maxEntry->MaxLevel < entry->MaxLevel)
777  maxEntry = entry;
778  }
779  }
780 
781  return maxEntry;
782 }
arena_t NULL
Definition: jemalloc_internal.h:624
uint32 MaxLevel
Definition: DBCStructure.h:932
DBCStorage< PvPDifficultyEntry > sPvpDifficultyStore(PvpDifficultyfmt)
uint32_t uint32
Definition: Define.h:150
Definition: DBCStructure.h:926

+ Here is the caller graph for this function:

TC_GAME_API CharSectionsEntry const* GetCharSectionEntry ( uint8  race,
CharSectionType  genType,
uint8  gender,
uint8  type,
uint8  color 
)
803 {
804  std::pair<CharSectionsMap::const_iterator, CharSectionsMap::const_iterator> eqr = sCharSectionMap.equal_range(uint32(genType) | uint32(gender << 8) | uint32(race << 16));
805  for (CharSectionsMap::const_iterator itr = eqr.first; itr != eqr.second; ++itr)
806  {
807  if (itr->second->Type == type && itr->second->Color == color)
808  return itr->second;
809  }
810 
811  return NULL;
812 }
arena_t NULL
Definition: jemalloc_internal.h:624
CharSectionsMap sCharSectionMap
Definition: DBCStores.cpp:61
uint32_t uint32
Definition: g3dmath.h:168
TC_GAME_API char const* GetClassName ( uint8  class_,
uint8  locale 
)
594 {
595  ChrClassesEntry const* classEntry = sChrClassesStore.LookupEntry(class_);
596  return classEntry ? classEntry->Name_lang : NULL;
597 }
DBCStorage< ChrClassesEntry > sChrClassesStore(ChrClassesfmt)
arena_t NULL
Definition: jemalloc_internal.h:624
Definition: DBCStructure.h:181
char * Name_lang
Definition: DBCStructure.h:186

+ Here is the caller graph for this function:

TC_GAME_API char const* GetCreatureFamilyPetName ( uint32  petfamily,
uint32  locale 
)
562 {
563  if (!petfamily)
564  return nullptr;
565 
566  CreatureFamilyEntry const* pet_family = sCreatureFamilyStore.LookupEntry(petfamily);
567  if (!pet_family)
568  return nullptr;
569 
570  return pet_family->Name_lang ? pet_family->Name_lang : NULL;
571 }
arena_t NULL
Definition: jemalloc_internal.h:624
DBCStorage< CreatureFamilyEntry > sCreatureFamilyStore(CreatureFamilyfmt)
char * Name_lang
Definition: DBCStructure.h:290
Definition: DBCStructure.h:279

+ Here is the caller graph for this function:

TC_GAME_API MapDifficultyEntry const* GetDefaultMapDifficulty ( uint32  mapId,
Difficulty difficulty = nullptr 
)
695 {
696  auto itr = sMapDifficultyMap.find(mapId);
697  if (itr == sMapDifficultyMap.end())
698  return nullptr;
699 
700  if (itr->second.empty())
701  return nullptr;
702 
703  for (auto& p : itr->second)
704  {
705  DifficultyEntry const* difficultyEntry = sDifficultyStore.LookupEntry(p.first);
706  if (!difficultyEntry)
707  continue;
708 
709  if (difficultyEntry->Flags & DIFFICULTY_FLAG_DEFAULT)
710  {
711  if (difficulty)
712  *difficulty = Difficulty(p.first);
713 
714  return p.second;
715  }
716  }
717 
718  if (difficulty)
719  *difficulty = Difficulty(itr->second.begin()->first);
720 
721  return itr->second.begin()->second;
722 }
Difficulty
Definition: DBCEnums.h:402
MapDifficultyMap sMapDifficultyMap
Definition: DBCStores.cpp:115
uint32 Flags
Definition: DBCStructure.h:346
Definition: DBCEnums.h:432
DBCStorage< DifficultyEntry > sDifficultyStore(DifficultyFmt)
Definition: DBCStructure.h:338

+ Here is the caller graph for this function:

TC_GAME_API uint32 GetDefaultMapLight ( uint32  mapId)
831 {
832  for (int32 i = sLightStore.GetNumRows(); i >= 0; --i)
833  {
834  LightEntry const* light = sLightStore.LookupEntry(uint32(i));
835  if (!light)
836  continue;
837 
838  if (light->MapID == mapId && light->Pos.X == 0.0f && light->Pos.Y == 0.0f && light->Pos.Z == 0.0f)
839  return light->ID;
840  }
841 
842  return 0;
843 }
uint32 MapID
Definition: DBCStructure.h:782
float Z
Definition: DBCEnums.h:36
float Y
Definition: DBCEnums.h:35
Definition: DBCStructure.h:779
int32_t int32
Definition: Define.h:146
float X
Definition: DBCEnums.h:34
uint32 ID
Definition: DBCStructure.h:781
uint32_t uint32
Definition: g3dmath.h:168
DBCStorage< LightEntry > sLightStore(Lightfmt)
DBCPosition3D Pos
Definition: DBCStructure.h:783
TC_GAME_API MapDifficultyEntry const* GetDownscaledMapDifficultyData ( uint32  mapId,
Difficulty difficulty 
)
738 {
739  DifficultyEntry const* diffEntry = sDifficultyStore.LookupEntry(difficulty);
740  if (!diffEntry)
741  return GetDefaultMapDifficulty(mapId, &difficulty);
742 
743  uint32 tmpDiff = difficulty;
744  MapDifficultyEntry const* mapDiff = GetMapDifficultyData(mapId, Difficulty(tmpDiff));
745  while (!mapDiff)
746  {
747  tmpDiff = diffEntry->FallbackDifficultyID;
748  diffEntry = sDifficultyStore.LookupEntry(tmpDiff);
749  if (!diffEntry)
750  return GetDefaultMapDifficulty(mapId, &difficulty);
751 
752  // pull new data
753  mapDiff = GetMapDifficultyData(mapId, Difficulty(tmpDiff)); // we are 10 normal or 25 normal
754  }
755 
756  difficulty = Difficulty(tmpDiff);
757  return mapDiff;
758 }
Difficulty
Definition: DBCEnums.h:402
MapDifficultyEntry const * GetMapDifficultyData(uint32 mapId, Difficulty difficulty)
Definition: DBCStores.cpp:724
uint32 FallbackDifficultyID
Definition: DBCStructure.h:341
MapDifficultyEntry const * GetDefaultMapDifficulty(uint32 mapId, Difficulty *difficulty)
Definition: DBCStores.cpp:694
uint32_t uint32
Definition: Define.h:150
Definition: DBCStructure.h:885
DBCStorage< DifficultyEntry > sDifficultyStore(DifficultyFmt)
Definition: DBCStructure.h:338

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TC_GAME_API uint32 GetExpansionForLevel ( uint32  level)
633 {
634  if (level < 60)
635  return EXPANSION_CLASSIC;
636  else if (level < 70)
638  else if (level < 80)
640  else if (level < 85)
641  return EXPANSION_CATACLYSM;
642  else if (level < 90)
644  else
645  return CURRENT_EXPANSION;
646 }
Definition: SharedDefines.h:80
#define CURRENT_EXPANSION
Definition: SharedDefines.h:88
Definition: SharedDefines.h:81
Definition: SharedDefines.h:79
Definition: SharedDefines.h:82
Definition: SharedDefines.h:83

+ Here is the caller graph for this function:

TC_GAME_API std::vector<uint32> const* GetFactionTeamList ( uint32  faction)
553 {
554  FactionTeamMap::const_iterator itr = sFactionTeamMap.find(faction);
555  if (itr != sFactionTeamMap.end())
556  return &itr->second;
557 
558  return NULL;
559 }
arena_t NULL
Definition: jemalloc_internal.h:624
static FactionTeamMap sFactionTeamMap
Definition: DBCStores.cpp:83

+ Here is the caller graph for this function:

TC_GAME_API LFGDungeonEntry const* GetLFGDungeon ( uint32  mapId,
Difficulty  difficulty 
)

Returns LFGDungeonEntry for a specific map and difficulty. Will return first found entry if multiple dungeons use the same map (such as Scarlet Monastery)

816 {
817  for (uint32 i = 0; i < sLFGDungeonStore.GetNumRows(); ++i)
818  {
819  LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(i);
820  if (!dungeon)
821  continue;
822 
823  if (dungeon->MapID == int32(mapId) && Difficulty(dungeon->DifficultyID) == difficulty)
824  return dungeon;
825  }
826 
827  return NULL;
828 }
Difficulty
Definition: DBCEnums.h:402
DBCStorage< LFGDungeonEntry > sLFGDungeonStore(LFGDungeonfmt)
arena_t NULL
Definition: jemalloc_internal.h:624
Definition: DBCStructure.h:742
int32_t int32
Definition: Define.h:146
uint32_t uint32
Definition: Define.h:150
int32 MapID
Definition: DBCStructure.h:751
uint32 DifficultyID
Definition: DBCStructure.h:752

+ Here is the caller graph for this function:

TC_GAME_API uint32 GetLiquidFlags ( uint32  liquidType)
795 {
796  if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(liquidType))
797  return 1 << liq->Type;
798 
799  return 0;
800 }
DBCStorage< LiquidTypeEntry > sLiquidTypeStore(LiquidTypefmt)
Definition: DBCStructure.h:789

+ Here is the caller graph for this function:

TC_GAME_API MapDifficultyEntry const* GetMapDifficultyData ( uint32  mapId,
Difficulty  difficulty 
)
725 {
726  auto itr = sMapDifficultyMap.find(mapId);
727  if (itr == sMapDifficultyMap.end())
728  return nullptr;
729 
730  auto diffItr = itr->second.find(difficulty);
731  if (diffItr == itr->second.end())
732  return nullptr;
733 
734  return diffItr->second;
735 }
MapDifficultyMap sMapDifficultyMap
Definition: DBCStores.cpp:115

+ Here is the caller graph for this function:

TC_GAME_API uint32 GetMaxLevelForExpansion ( uint32  expansion)
611 {
612  switch (expansion)
613  {
614  case EXPANSION_CLASSIC:
615  return 60;
617  return 70;
619  return 80;
620  case EXPANSION_CATACLYSM:
621  return 85;
623  return 90;
625  return 100;
626  default:
627  break;
628  }
629  return 0;
630 }
Definition: SharedDefines.h:80
Definition: SharedDefines.h:81
Definition: SharedDefines.h:79
Definition: SharedDefines.h:84
Definition: SharedDefines.h:82
Definition: SharedDefines.h:83

+ Here is the caller graph for this function:

TC_GAME_API char const* GetRaceName ( uint8  race,
uint8  locale 
)
588 {
589  ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race);
590  return raceEntry ? raceEntry->Name_lang : NULL;
591 }
DBCStorage< ChrRacesEntry > sChrRacesStore(ChrRacesfmt)
Definition: DBCStructure.h:204
arena_t NULL
Definition: jemalloc_internal.h:624
char * Name_lang
Definition: DBCStructure.h:220

+ Here is the caller graph for this function:

TC_GAME_API SkillRaceClassInfoEntry const* GetSkillRaceClassInfo ( uint32  skill,
uint8  race,
uint8  class_ 
)
846 {
847  SkillRaceClassInfoBounds bounds = SkillRaceClassInfoBySkill.equal_range(skill);
848  for (SkillRaceClassInfoMap::iterator itr = bounds.first; itr != bounds.second; ++itr)
849  {
850  if (itr->second->RaceMask && !(itr->second->RaceMask & (1 << (race - 1))))
851  continue;
852  if (itr->second->ClassMask && !(itr->second->ClassMask & (1 << (class_ - 1))))
853  continue;
854 
855  return itr->second;
856  }
857 
858  return NULL;
859 }
arena_t NULL
Definition: jemalloc_internal.h:624
std::pair< SkillRaceClassInfoMap::iterator, SkillRaceClassInfoMap::iterator > SkillRaceClassInfoBounds
Definition: DBCStores.h:73
SkillRaceClassInfoMap SkillRaceClassInfoBySkill
Definition: DBCStores.cpp:129

+ Here is the caller graph for this function:

TC_GAME_API uint32 GetVirtualMapForMapAndZone ( uint32  mapid,
uint32  zoneId 
)
600 {
601  if (mapid != 530 && mapid != 571 && mapid != 732) // speed for most cases
602  return mapid;
603 
604  if (WorldMapAreaEntry const* wma = sWorldMapAreaStore.LookupEntry(zoneId))
605  return wma->DisplayMapID >= 0 ? wma->DisplayMapID : wma->MapID;
606 
607  return mapid;
608 }
Definition: DBCStructure.h:1402
DBCStorage< WorldMapAreaEntry > sWorldMapAreaStore(WorldMapAreafmt)

+ Here is the caller graph for this function:

TC_GAME_API WMOAreaTableEntry const* GetWMOAreaTableEntryByTripple ( int32  rootid,
int32  adtid,
int32  groupid 
)
580 {
581  WMOAreaInfoByTripple::iterator i = sWMOAreaInfoByTripple.find(WMOAreaTableTripple(rootid, adtid, groupid));
582  if (i == sWMOAreaInfoByTripple.end())
583  return NULL;
584  return i->second;
585 }
static WMOAreaInfoByTripple sWMOAreaInfoByTripple
Definition: DBCStores.cpp:156
arena_t NULL
Definition: jemalloc_internal.h:624
Definition: DBCStores.cpp:30

+ Here is the caller graph for this function:

TC_GAME_API bool IsTotemCategoryCompatibleWith ( uint32  itemTotemCategoryId,
uint32  requiredTotemCategoryId 
)
649 {
650  if (requiredTotemCategoryId == 0)
651  return true;
652  if (itemTotemCategoryId == 0)
653  return false;
654 
655  TotemCategoryEntry const* itemEntry = sTotemCategoryStore.LookupEntry(itemTotemCategoryId);
656  if (!itemEntry)
657  return false;
658  TotemCategoryEntry const* reqEntry = sTotemCategoryStore.LookupEntry(requiredTotemCategoryId);
659  if (!reqEntry)
660  return false;
661 
662  if (itemEntry->CategoryType != reqEntry->CategoryType)
663  return false;
664 
665  return (itemEntry->CategoryMask & reqEntry->CategoryMask) == reqEntry->CategoryMask;
666 }
DB2Storage< TotemCategoryEntry > sTotemCategoryStore("TotemCategory.db2", TotemCategoryFormat, HOTFIX_SEL_TOTEM_CATEGORY)
uint32 CategoryMask
Definition: DB2Structure.h:1363
Definition: DB2Structure.h:1358
uint32 CategoryType
Definition: DB2Structure.h:1362
TC_GAME_API void LoadDBCStores ( const std::string &  dataPath,
uint32  defaultLocale 
)
289 {
290  uint32 oldMSTime = getMSTime();
291 
292  std::string dbcPath = dataPath + "dbc/";
293 
294  StoreProblemList bad_dbc_files;
295  uint32 availableDbcLocales = 0xFFFFFFFF;
296 
297 #define LOAD_DBC(store, file) LoadDBC(availableDbcLocales, bad_dbc_files, store, dbcPath, file, defaultLocale)
298 
299  LOAD_DBC(sAnimKitStore, "AnimKit.dbc");//20444
300  LOAD_DBC(sAreaTableStore, "AreaTable.dbc");//20444
301  LOAD_DBC(sAreaTriggerStore, "AreaTrigger.dbc");//20444
302  LOAD_DBC(sArmorLocationStore, "ArmorLocation.dbc");//20444
303  LOAD_DBC(sBankBagSlotPricesStore, "BankBagSlotPrices.dbc");//20444
304  LOAD_DBC(sBannedAddOnsStore, "BannedAddOns.dbc");//20444
305  LOAD_DBC(sBattlemasterListStore, "BattlemasterList.dbc");//20444
306  LOAD_DBC(sCharSectionsStore, "CharSections.dbc");//20444
307  LOAD_DBC(sCharTitlesStore, "CharTitles.dbc");//20444
308  LOAD_DBC(sChatChannelsStore, "ChatChannels.dbc");//20444
309  LOAD_DBC(sChrClassesStore, "ChrClasses.dbc");//20444
310  LOAD_DBC(sChrRacesStore, "ChrRaces.dbc");//20444
311  LOAD_DBC(sChrSpecializationStore, "ChrSpecialization.dbc");//20444
312  LOAD_DBC(sCreatureDisplayInfoExtraStore, "CreatureDisplayInfoExtra.dbc");//20444
313  LOAD_DBC(sCreatureFamilyStore, "CreatureFamily.dbc");//20444
314  LOAD_DBC(sCreatureModelDataStore, "CreatureModelData.dbc");//20444
315  LOAD_DBC(sDifficultyStore, "Difficulty.dbc");//20444
316  LOAD_DBC(sDungeonEncounterStore, "DungeonEncounter.dbc");//20444
317  LOAD_DBC(sDurabilityCostsStore, "DurabilityCosts.dbc");//20444
318  LOAD_DBC(sEmotesStore, "Emotes.dbc");//20444
319  LOAD_DBC(sEmotesTextStore, "EmotesText.dbc");//20444
320  LOAD_DBC(sEmotesTextSoundStore, "EmotesTextSound.dbc");
321  LOAD_DBC(sFactionStore, "Faction.dbc");//20444
322  LOAD_DBC(sFactionTemplateStore, "FactionTemplate.dbc");//20444
323  LOAD_DBC(sGameObjectDisplayInfoStore, "GameObjectDisplayInfo.dbc");//20444
324  LOAD_DBC(sGemPropertiesStore, "GemProperties.dbc");//20444
325  LOAD_DBC(sGlyphPropertiesStore, "GlyphProperties.dbc");//20444
326  LOAD_DBC(sGuildColorBackgroundStore, "GuildColorBackground.dbc");//20444
327  LOAD_DBC(sGuildColorBorderStore, "GuildColorBorder.dbc"); //20444
328  LOAD_DBC(sGuildColorEmblemStore, "GuildColorEmblem.dbc");//20444
329  LOAD_DBC(sItemArmorQualityStore, "ItemArmorQuality.dbc");//20444
330  LOAD_DBC(sItemArmorShieldStore, "ItemArmorShield.dbc");//20444
331  LOAD_DBC(sItemArmorTotalStore, "ItemArmorTotal.dbc");//20444
332  LOAD_DBC(sItemBagFamilyStore, "ItemBagFamily.dbc");//20444
333  LOAD_DBC(sItemDamageAmmoStore, "ItemDamageAmmo.dbc");//20444
334  LOAD_DBC(sItemDamageOneHandCasterStore, "ItemDamageOneHandCaster.dbc");//20444
335  LOAD_DBC(sItemDamageOneHandStore, "ItemDamageOneHand.dbc");//20444
336  LOAD_DBC(sItemDamageRangedStore, "ItemDamageRanged.dbc");//20444
337  LOAD_DBC(sItemDamageThrownStore, "ItemDamageThrown.dbc");//20444
338  LOAD_DBC(sItemDamageTwoHandCasterStore, "ItemDamageTwoHandCaster.dbc");//20444
339  LOAD_DBC(sItemDamageTwoHandStore, "ItemDamageTwoHand.dbc");//20444
340  LOAD_DBC(sItemDamageWandStore, "ItemDamageWand.dbc");//20444
341  LOAD_DBC(sItemSetSpellStore, "ItemSetSpell.dbc");//20444
342  LOAD_DBC(sItemSetStore, "ItemSet.dbc");//20444
343  LOAD_DBC(sLFGDungeonStore, "LfgDungeons.dbc");//20444
344  LOAD_DBC(sLightStore, "Light.dbc"); //20444
345  LOAD_DBC(sLiquidTypeStore, "LiquidType.dbc");//20444
346  LOAD_DBC(sLockStore, "Lock.dbc");//20444
347  LOAD_DBC(sMapDifficultyStore, "MapDifficulty.dbc");//20444
348  LOAD_DBC(sMapStore, "Map.dbc");//20444
349  LOAD_DBC(sMovieStore, "Movie.dbc");//20444
350  LOAD_DBC(sPhaseStore, "Phase.dbc"); // 20444
351  LOAD_DBC(sPowerDisplayStore, "PowerDisplay.dbc");//20444
352  LOAD_DBC(sPvpDifficultyStore, "PvpDifficulty.dbc");//20444
353  LOAD_DBC(sQuestFactionRewardStore, "QuestFactionReward.dbc");//20444
354  LOAD_DBC(sRandomPropertiesPointsStore, "RandPropPoints.dbc");//20444
355  LOAD_DBC(sSkillLineAbilityStore, "SkillLineAbility.dbc");//20444
356  LOAD_DBC(sSkillLineStore, "SkillLine.dbc");//20444
357  LOAD_DBC(sSkillRaceClassInfoStore, "SkillRaceClassInfo.dbc");//20444
358  LOAD_DBC(sSpellAuraOptionsStore, "SpellAuraOptions.dbc");//20444
359  LOAD_DBC(sSpellCategoriesStore, "SpellCategories.dbc");//20444
360  LOAD_DBC(sSpellCategoryStore, "SpellCategory.dbc");//20444
361  LOAD_DBC(sSpellCooldownsStore, "SpellCooldowns.dbc");//20444
362  LOAD_DBC(sSpellEffectScalingStore, "SpellEffectScaling.dbc");//20444
363  LOAD_DBC(sSpellEffectStore, "SpellEffect.dbc"/*, &CustomSpellEffectfmt, &CustomSpellEffectEntryIndex*/);//20444
364  LOAD_DBC(sSpellEquippedItemsStore, "SpellEquippedItems.dbc");//20444
365  LOAD_DBC(sSpellFocusObjectStore, "SpellFocusObject.dbc");//20444
366  LOAD_DBC(sSpellInterruptsStore, "SpellInterrupts.dbc");//20444
367  LOAD_DBC(sSpellItemEnchantmentStore, "SpellItemEnchantment.dbc");//20444
368  LOAD_DBC(sSpellLevelsStore, "SpellLevels.dbc");//20444
369  LOAD_DBC(sSpellScalingStore, "SpellScaling.dbc");//20444
370  LOAD_DBC(sSpellShapeshiftFormStore, "SpellShapeshiftForm.dbc");//20444
371  LOAD_DBC(sSpellShapeshiftStore, "SpellShapeshift.dbc");//20444
372  LOAD_DBC(sSpellStore, "Spell.dbc"/*, &CustomSpellfmt, &CustomSpellEntryIndex*/);//20444
373  LOAD_DBC(sSpellTargetRestrictionsStore, "SpellTargetRestrictions.dbc");//20444
374  LOAD_DBC(sSummonPropertiesStore, "SummonProperties.dbc");//20444
375  LOAD_DBC(sTalentStore, "Talent.dbc");//20444
376  LOAD_DBC(sVehicleSeatStore, "VehicleSeat.dbc");//20444
377  LOAD_DBC(sVehicleStore, "Vehicle.dbc");//20444
378  LOAD_DBC(sWMOAreaTableStore, "WMOAreaTable.dbc");//20444
379  LOAD_DBC(sWorldMapAreaStore, "WorldMapArea.dbc");//20444
380  LOAD_DBC(sWorldMapTransformsStore, "WorldMapTransforms.dbc");//20444
381  LOAD_DBC(sWorldSafeLocsStore, "WorldSafeLocs.dbc"); // 20444
382 
383 #undef LOAD_DBC
384 
385  for (uint32 i = 0; i < sCharSectionsStore.GetNumRows(); ++i)
386  if (CharSectionsEntry const* entry = sCharSectionsStore.LookupEntry(i))
387  if (entry->Race && ((1 << (entry->Race - 1)) & RACEMASK_ALL_PLAYABLE) != 0) //ignore Nonplayable races
388  sCharSectionMap.insert({ entry->GenType | (entry->Gender << 8) | (entry->Race << 16), entry });
389 
391  for (uint32 i = 0; i < sChrSpecializationStore.GetNumRows(); ++i)
392  if (ChrSpecializationEntry const* chrSpec = sChrSpecializationStore.LookupEntry(i))
393  sChrSpecializationByIndexStore[chrSpec->ClassID][chrSpec->OrderIndex] = chrSpec;
394 
395  ASSERT(MAX_DIFFICULTY >= sDifficultyStore.GetNumRows(),
396  "MAX_DIFFICULTY is not large enough to contain all difficulties! (current value %d, required %d)",
397  MAX_DIFFICULTY, sDifficultyStore.GetNumRows());
398 
399  for (uint32 i = 0; i < sEmotesTextSoundStore.GetNumRows(); ++i)
400  if (EmotesTextSoundEntry const* entry = sEmotesTextSoundStore.LookupEntry(i))
401  sEmotesTextSoundMap[EmotesTextSoundKey(entry->EmotesTextId, entry->RaceId, entry->SexId)] = entry;
402 
403  for (uint32 i = 0; i < sFactionStore.GetNumRows(); ++i)
404  {
405  FactionEntry const* faction = sFactionStore.LookupEntry(i);
406  if (faction && faction->ParentFactionID)
407  {
408  std::vector<uint32> &flist = sFactionTeamMap[faction->ParentFactionID];
409  flist.push_back(i);
410  }
411  }
412 
413  for (uint32 i = 0; i < sGameObjectDisplayInfoStore.GetNumRows(); ++i)
414  {
415  if (GameObjectDisplayInfoEntry const* info = sGameObjectDisplayInfoStore.LookupEntry(i))
416  {
417  if (info->GeoBoxMax.X < info->GeoBoxMin.X)
418  std::swap(*(float*)(&info->GeoBoxMax.X), *(float*)(&info->GeoBoxMin.X));
419  if (info->GeoBoxMax.Y < info->GeoBoxMin.Y)
420  std::swap(*(float*)(&info->GeoBoxMax.Y), *(float*)(&info->GeoBoxMin.Y));
421  if (info->GeoBoxMax.Z < info->GeoBoxMin.Z)
422  std::swap(*(float*)(&info->GeoBoxMax.Z), *(float*)(&info->GeoBoxMin.Z));
423  }
424  }
425 
426  for (ItemSetSpellEntry const* entry : sItemSetSpellStore)
427  sItemSetSpellsStore[entry->ItemSetID].push_back(entry);
428 
429  // fill data
430  for (uint32 i = 0; i < sMapDifficultyStore.GetNumRows(); ++i)
431  if (MapDifficultyEntry const* entry = sMapDifficultyStore.LookupEntry(i))
432  sMapDifficultyMap[entry->MapID][entry->DifficultyID] = entry;
433  sMapDifficultyMap[0][0] = sMapDifficultyMap[1][0]; //map 0 is missing from MapDifficulty.dbc use this till its ported to sql
434 
435  for (uint32 i = 0; i < sPvpDifficultyStore.GetNumRows(); ++i)
436  if (PvPDifficultyEntry const* entry = sPvpDifficultyStore.LookupEntry(i))
437  if (entry->BracketID > MAX_BATTLEGROUND_BRACKETS)
438  ASSERT(false && "Need update MAX_BATTLEGROUND_BRACKETS by DBC data");
439 
440  for (uint32 i = 0; i < sSkillRaceClassInfoStore.GetNumRows(); ++i)
441  if (SkillRaceClassInfoEntry const* entry = sSkillRaceClassInfoStore.LookupEntry(i))
442  if (sSkillLineStore.LookupEntry(entry->SkillID))
443  SkillRaceClassInfoBySkill.emplace(entry->SkillID, entry);
444 
445  for (uint32 j = 0; j < sSpellEffectScalingStore.GetNumRows(); j++)
446  {
447  SpellEffectScalingEntry const* spellEffectScaling = sSpellEffectScalingStore.LookupEntry(j);
448  if (!spellEffectScaling)
449  continue;
450 
451  sSpellEffectScallingByEffectId.insert(std::make_pair(spellEffectScaling->SpellEffectID, j));
452  }
453 
454  for (uint32 i = 0; i < sTalentStore.GetNumRows(); ++i)
455  {
456  if (TalentEntry const* talentInfo = sTalentStore.LookupEntry(i))
457  {
458  if (talentInfo->ClassID < MAX_CLASSES && talentInfo->TierID < MAX_TALENT_TIERS && talentInfo->ColumnIndex < MAX_TALENT_COLUMNS)
459  sTalentByPos[talentInfo->ClassID][talentInfo->TierID][talentInfo->ColumnIndex].push_back(talentInfo);
460  else
461  TC_LOG_ERROR("server.loading", "Value of class (found: %u, max allowed %u) or (found: %u, max allowed %u) tier or column (found: %u, max allowed %u) is invalid.",
462  talentInfo->ClassID, MAX_CLASSES, talentInfo->TierID, MAX_TALENT_TIERS, talentInfo->ColumnIndex, MAX_TALENT_COLUMNS);
463  }
464  }
465 
466  for (uint32 i = 0; i < sWMOAreaTableStore.GetNumRows(); ++i)
467  if (WMOAreaTableEntry const* entry = sWMOAreaTableStore.LookupEntry(i))
468  sWMOAreaInfoByTripple.insert(WMOAreaInfoByTripple::value_type(WMOAreaTableTripple(entry->WMOID, entry->NameSet, entry->WMOGroupID), entry));
469 
470  // error checks
471  if (bad_dbc_files.size() >= DBCFileCount)
472  {
473  TC_LOG_ERROR("misc", "Incorrect DataDir value in worldserver.conf or ALL required *.dbc files (%d) not found by path: %sdbc/%s/", DBCFileCount, dataPath.c_str(), localeNames[defaultLocale]);
474  exit(1);
475  }
476  else if (!bad_dbc_files.empty())
477  {
478  std::string str;
479  for (StoreProblemList::iterator i = bad_dbc_files.begin(); i != bad_dbc_files.end(); ++i)
480  str += *i + "\n";
481 
482  TC_LOG_ERROR("misc", "Some required *.dbc files (%u from %d) not found or not compatible:\n%s", (uint32)bad_dbc_files.size(), DBCFileCount, str.c_str());
483  exit(1);
484  }
485 
486  // Check loaded DBC files proper version
487  if (!sAreaTableStore.LookupEntry(7941) || // last area added in 6.2.2 (20444)
488  !sCharTitlesStore.LookupEntry(457) || // last char title added in 6.2.2 (20444)
489  !sGemPropertiesStore.LookupEntry(2544) || // last gem property added in 6.2.2 (20444)
490  !sMapStore.LookupEntry(1497) || // last map added in 6.2.2 (20444)
491  !sSpellStore.LookupEntry(197204) ) // last spell added in 6.2.2 (20444)
492  {
493  TC_LOG_ERROR("misc", "You have _outdated_ DBC files. Please extract correct versions from current using client.");
494  exit(1);
495  }
496 
497  TC_LOG_INFO("server.loading", ">> Initialized %d DBC data stores in %u ms", DBCFileCount, GetMSTimeDiffToNow(oldMSTime));
498 }
DBCStorage< EmotesTextSoundEntry > sEmotesTextSoundStore(EmotesTextSoundEntryfmt)
DBCStorage< GemPropertiesEntry > sGemPropertiesStore(GemPropertiesfmt)
DBCStorage< LiquidTypeEntry > sLiquidTypeStore(LiquidTypefmt)
static WMOAreaInfoByTripple sWMOAreaInfoByTripple
Definition: DBCStores.cpp:156
DBCStorage< QuestFactionRewEntry > sQuestFactionRewardStore(QuestFactionRewardfmt)
DBCStorage< SkillLineEntry > sSkillLineStore(SkillLinefmt)
Definition: DBCEnums.h:63
DBCStorage< WorldSafeLocsEntry > sWorldSafeLocsStore(WorldSafeLocsfmt)
DBCStorage< ChrRacesEntry > sChrRacesStore(ChrRacesfmt)
DBCStorage< DurabilityCostsEntry > sDurabilityCostsStore(DurabilityCostsfmt)
DBCStorage< ChrClassesEntry > sChrClassesStore(ChrClassesfmt)
DBCStorage< ItemSetEntry > sItemSetStore(ItemSetfmt)
Definition: DBCStructure.h:1030
DBCStorage< ItemDamageEntry > sItemDamageThrownStore(ItemDamagefmt)
DBCStorage< SpellCooldownsEntry > sSpellCooldownsStore(SpellCooldownsfmt)
uint32 ParentFactionID
Definition: DBCStructure.h:413
DBCStorage< SummonPropertiesEntry > sSummonPropertiesStore(SummonPropertiesfmt)
Definition: DBCStructure.h:396
MapDifficultyMap sMapDifficultyMap
Definition: DBCStores.cpp:115
DBCStorage< LockEntry > sLockStore(Lockfmt)
DBCStorage< ItemDamageEntry > sItemDamageOneHandCasterStore(ItemDamagefmt)
DBCStorage< AreaTriggerEntry > sAreaTriggerStore(AreaTriggerfmt)
DBCStorage< BattlemasterListEntry > sBattlemasterListStore(BattlemasterListfmt)
ItemSetSpellsStore sItemSetSpellsStore
Definition: DBCStores.cpp:106
DBCStorage< BankBagSlotPricesEntry > sBankBagSlotPricesStore(BankBagSlotPricesfmt)
DBCStorage< SpellScalingEntry > sSpellScalingStore(SpellScalingfmt)
uint32 getMSTime()
Definition: Timer.h:24
Definition: DBCEnums.h:426
DBCStorage< LFGDungeonEntry > sLFGDungeonStore(LFGDungeonfmt)
DBCStorage< ArmorLocationEntry > sArmorLocationStore(ArmorLocationfmt)
SpellEffectScallingByEffectId sSpellEffectScallingByEffectId
Definition: DBCStores.cpp:136
uint32 DBCFileCount
Definition: DBCStores.cpp:184
DBCStorage< MapDifficultyEntry > sMapDifficultyStore(MapDifficultyfmt)
DBCStorage< SpellLevelsEntry > sSpellLevelsStore(SpellLevelsfmt)
DBCStorage< ItemDamageEntry > sItemDamageOneHandStore(ItemDamagefmt)
#define LOAD_DBC(store, file)
DBCStorage< WorldMapTransformsEntry > sWorldMapTransformsStore(WorldMapTransformsfmt)
static std::map< EmotesTextSoundKey, EmotesTextSoundEntry const * > sEmotesTextSoundMap
Definition: DBCStores.cpp:79
DBCStorage< CharTitlesEntry > sCharTitlesStore(CharTitlesfmt)
CharSectionsMap sCharSectionMap
Definition: DBCStores.cpp:61
DBCStorage< EmotesEntry > sEmotesStore(Emotesfmt)
DBCStorage< SkillRaceClassInfoEntry > sSkillRaceClassInfoStore(SkillRaceClassInfofmt)
DBCStorage< AreaTableEntry > sAreaTableStore(AreaTablefmt)
DBCStorage< RandomPropertiesPointsEntry > sRandomPropertiesPointsStore(RandPropPointsfmt)
DBCStorage< PvPDifficultyEntry > sPvpDifficultyStore(PvpDifficultyfmt)
Definition: DBCStructure.h:1383
DBCStorage< MovieEntry > sMovieStore(Moviefmt)
DBCStorage< CreatureModelDataEntry > sCreatureModelDataStore(CreatureModelDatafmt)
DBCStorage< ItemArmorTotalEntry > sItemArmorTotalStore(ItemArmorTotalfmt)
Definition: DBCStructure.h:245
std::list< std::string > StoreProblemList
Definition: DBCStores.cpp:182
DBCStorage< GuildColorEmblemEntry > sGuildColorEmblemStore(GuildColorEmblemfmt)
DBCStorage< CreatureDisplayInfoExtraEntry > sCreatureDisplayInfoExtraStore(CreatureDisplayInfoExtrafmt)
DBCStorage< SpellCategoryEntry > sSpellCategoryStore(SpellCategoryfmt)
DBCStorage< SpellEntry > sSpellStore(Spellfmt)
TalentsByPosition sTalentByPos
Definition: DBCStores.cpp:150
DBCStorage< GuildColorBorderEntry > sGuildColorBorderStore(GuildColorBorderfmt)
DBCStorage< ItemBagFamilyEntry > sItemBagFamilyStore(ItemBagFamilyfmt)
DBCStorage< ItemArmorShieldEntry > sItemArmorShieldStore(ItemArmorShieldfmt)
DBCStorage< ItemArmorQualityEntry > sItemArmorQualityStore(ItemArmorQualityfmt)
DBCStorage< SpellFocusObjectEntry > sSpellFocusObjectStore(SpellFocusObjectfmt)
Definition: DBCStructure.h:487
DBCStorage< WorldMapAreaEntry > sWorldMapAreaStore(WorldMapAreafmt)
DBCStorage< CharSectionsEntry > sCharSectionsStore(CharSectionsfmt)
Definition: DBCStructure.h:733
DBCStorage< ItemSetSpellEntry > sItemSetSpellStore(ItemSetSpellfmt)
uint32_t uint32
Definition: Define.h:150
DBCStorage< SpellInterruptsEntry > sSpellInterruptsStore(SpellInterruptsfmt)
DBCStorage< SpellItemEnchantmentEntry > sSpellItemEnchantmentStore(SpellItemEnchantmentfmt)
DBCStorage< GlyphPropertiesEntry > sGlyphPropertiesStore(GlyphPropertiesfmt)
DBCStorage< PowerDisplayEntry > sPowerDisplayStore(PowerDisplayfmt)
DBCStorage< GuildColorBackgroundEntry > sGuildColorBackgroundStore(GuildColorBackgroundfmt)
DBCStorage< PhaseEntry > sPhaseStore(Phasefmt)
DBCStorage< VehicleSeatEntry > sVehicleSeatStore(VehicleSeatfmt)
Definition: DBCStructure.h:982
DBCStorage< CreatureFamilyEntry > sCreatureFamilyStore(CreatureFamilyfmt)
#define MAX_CLASSES
Definition: SharedDefines.h:181
DBCStorage< SpellEquippedItemsEntry > sSpellEquippedItemsStore(SpellEquippedItemsfmt)
DBCStorage< GameObjectDisplayInfoEntry > sGameObjectDisplayInfoStore(GameObjectDisplayInfofmt)
DBCStorage< SpellTargetRestrictionsEntry > sSpellTargetRestrictionsStore(SpellTargetRestrictionsfmt)
Definition: DBCStructure.h:405
DBCStorage< ItemDamageEntry > sItemDamageAmmoStore(ItemDamagefmt)
DBCStorage< TalentEntry > sTalentStore(Talentfmt)
DBCStorage< WMOAreaTableEntry > sWMOAreaTableStore(WMOAreaTablefmt)
DBCStorage< ChrSpecializationEntry > sChrSpecializationStore(ChrSpecializationfmt)
TC_COMMON_API char const * localeNames[TOTAL_LOCALES]
Definition: Common.cpp:21
DBCStorage< VehicleEntry > sVehicleStore(Vehiclefmt)
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition: Timer.h:42
uint32 SpellEffectID
Definition: DBCStructure.h:1036
Definition: DBCStructure.h:885
DBCStorage< MapEntry > sMapStore(Mapfmt)
Definition: DBCStructure.h:926
DBCStorage< SpellEffectScalingEntry > sSpellEffectScalingStore(SpellEffectScalingfmt)
DBCStorage< ItemDamageEntry > sItemDamageWandStore(ItemDamagefmt)
DBCStorage< SpellEffectEntry > sSpellEffectStore(SpellEffectfmt)
DBCStorage< SpellAuraOptionsEntry > sSpellAuraOptionsStore(SpellAuraOptionsfmt)
#define RACEMASK_ALL_PLAYABLE
Definition: SharedDefines.h:133
DBCStorage< ItemDamageEntry > sItemDamageRangedStore(ItemDamagefmt)
DBCStorage< AnimKitEntry > sAnimKitStore(AnimKitfmt)
#define ASSERT
Definition: Errors.h:55
DBCStorage< SpellCategoriesEntry > sSpellCategoriesStore(SpellCategoriesfmt)
#define TC_LOG_INFO(filterType__,...)
Definition: Log.h:201
DBCStorage< EmotesTextEntry > sEmotesTextStore(EmotesTextfmt)
DBCStorage< ItemDamageEntry > sItemDamageTwoHandStore(ItemDamagefmt)
DBCStorage< FactionEntry > sFactionStore(Factionfmt)
#define TC_LOG_ERROR(filterType__,...)
Definition: Log.h:207
static FactionTeamMap sFactionTeamMap
Definition: DBCStores.cpp:83
DBCStorage< ItemDamageEntry > sItemDamageTwoHandCasterStore(ItemDamagefmt)
DBCStorage< LightEntry > sLightStore(Lightfmt)
DBCStorage< SpellShapeshiftFormEntry > sSpellShapeshiftFormStore(SpellShapeshiftFormfmt)
DBCStorage< BannedAddOnsEntry > sBannedAddOnsStore(BannedAddOnsfmt)
Definition: DBCStructure.h:1255
DBCStorage< ChatChannelsEntry > sChatChannelsStore(ChatChannelsfmt)
SkillRaceClassInfoMap SkillRaceClassInfoBySkill
Definition: DBCStores.cpp:129
#define MAX_TALENT_COLUMNS
Definition: DBCStructure.h:1253
DBCStorage< FactionTemplateEntry > sFactionTemplateStore(FactionTemplatefmt)
DBCStorage< DifficultyEntry > sDifficultyStore(DifficultyFmt)
std::tuple< uint32, uint32, uint32 > EmotesTextSoundKey
Definition: DBCStores.cpp:78
ChrSpecializationByIndexArray sChrSpecializationByIndexStore
Definition: DBCStores.cpp:67
DBCStorage< SpellShapeshiftEntry > sSpellShapeshiftStore(SpellShapeshiftfmt)
Definition: DBCStores.cpp:30
Definition: DBCStructure.h:149
#define MAX_TALENT_TIERS
Definition: DBCStructure.h:1252
DBCStorage< DungeonEncounterEntry > sDungeonEncounterStore(DungeonEncounterfmt)
DBCStorage< SkillLineAbilityEntry > sSkillLineAbilityStore(SkillLineAbilityfmt)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TC_GAME_API void LoadGameTables ( const std::string &  dataPath,
uint32  defaultLocale 
)
501 {
502  uint32 oldMSTime = getMSTime();
503 
504  std::string dbcPath = dataPath + "dbc/" + localeNames[defaultLocale] + '/';
505 
506  StoreProblemList bad_dbc_files;
507 
508 #define LOAD_GT(tableName, store, file) LoadGameTable(bad_dbc_files, tableName, store, dbcPath, file)
509 
510  LOAD_GT("BarberShopCostBase", sGtBarberShopCostBaseStore, "gtBarberShopCostBase.dbc"); // 20444
511  LOAD_GT("CombatRatings", sGtCombatRatingsStore, "gtCombatRatings.dbc"); // 20444
512  LOAD_GT("ChanceToMeleeCritBase", sGtChanceToMeleeCritBaseStore, "gtChanceToMeleeCritBase.dbc"); // 20444
513  LOAD_GT("ChanceToMeleeCrit", sGtChanceToMeleeCritStore, "gtChanceToMeleeCrit.dbc"); // 20444
514  LOAD_GT("ChanceToSpellCritBase", sGtChanceToSpellCritBaseStore, "gtChanceToSpellCritBase.dbc"); // 20444
515  LOAD_GT("ChanceToSpellCrit", sGtChanceToSpellCritStore, "gtChanceToSpellCrit.dbc"); // 20444
516  LOAD_GT("ItemSocketCostPerLevel", sGtItemSocketCostPerLevelStore, "gtItemSocketCostPerLevel.dbc"); // 20444
517  LOAD_GT("NPCManaCostScaler", sGtNPCManaCostScalerStore, "gtNPCManaCostScaler.dbc"); // 20444
518  LOAD_GT("NpcTotalHp", sGtNpcTotalHpStore, "gtNpcTotalHp.dbc"); // 20444
519  LOAD_GT("NpcTotalHpExp1", sGtNpcTotalHpExp1Store, "gtNpcTotalHpExp1.dbc"); // 20444
520  LOAD_GT("NpcTotalHpExp2", sGtNpcTotalHpExp2Store, "gtNpcTotalHpExp2.dbc"); // 20444
521  LOAD_GT("NpcTotalHpExp3", sGtNpcTotalHpExp3Store, "gtNpcTotalHpExp3.dbc"); // 20444
522  LOAD_GT("NpcTotalHpExp4", sGtNpcTotalHpExp4Store, "gtNpcTotalHpExp4.dbc"); // 20444
523  LOAD_GT("NpcTotalHpExp5", sGtNpcTotalHpExp5Store, "gtNpcTotalHpExp5.dbc"); // 20444
524  LOAD_GT("OCTHPPerStamina", sGtOCTHpPerStaminaStore, "gtOCTHpPerStamina.dbc"); // 20444
525  LOAD_GT("OCTLevelExperience", sGtOCTLevelExperienceStore, "gtOCTLevelExperience.dbc"); // 20444
526  LOAD_GT("RegenMPPerSpt", sGtRegenMPPerSptStore, "gtRegenMPPerSpt.dbc"); // 20444
527  LOAD_GT("SpellScaling", sGtSpellScalingStore, "gtSpellScaling.dbc"); // 20444
528  LOAD_GT("OCTBaseHPByClass", sGtOCTBaseHPByClassStore, "gtOCTBaseHPByClass.dbc"); // 20444
529  LOAD_GT("OCTBaseMPByClass", sGtOCTBaseMPByClassStore, "gtOCTBaseMPByClass.dbc"); // 20444
530 
531 #undef LOAD_GT
532 
533  // error checks
534  if (bad_dbc_files.size() >= GameTableCount)
535  {
536  TC_LOG_ERROR("misc", "Incorrect DataDir value in worldserver.conf or ALL required *.dbc GameTable files (%d) not found by path: %sdbc/%s/", DBCFileCount, dataPath.c_str(), localeNames[defaultLocale]);
537  exit(1);
538  }
539  else if (!bad_dbc_files.empty())
540  {
541  std::string str;
542  for (StoreProblemList::iterator i = bad_dbc_files.begin(); i != bad_dbc_files.end(); ++i)
543  str += *i + "\n";
544 
545  TC_LOG_ERROR("misc", "Some required *.dbc GameTable files (%u from %d) not found or not compatible:\n%s", (uint32)bad_dbc_files.size(), GameTableCount, str.c_str());
546  exit(1);
547  }
548 
549  TC_LOG_INFO("server.loading", ">> Initialized %d DBC GameTables data stores in %u ms", GameTableCount, GetMSTimeDiffToNow(oldMSTime));
550 }
GameTable< GtSpellScalingEntry > sGtSpellScalingStore(GtSpellScalingfmt)
uint32 GameTableCount
Definition: DBCStores.cpp:185
GameTable< GtNpcTotalHpEntry > sGtNpcTotalHpStore(GtNpcTotalHpfmt)
GameTable< GtNpcTotalHpExp3Entry > sGtNpcTotalHpExp3Store(GtNpcTotalHpExp3fmt)
uint32 getMSTime()
Definition: Timer.h:24
GameTable< GtNpcTotalHpExp1Entry > sGtNpcTotalHpExp1Store(GtNpcTotalHpExp1fmt)
uint32 DBCFileCount
Definition: DBCStores.cpp:184
GameTable< GtNpcTotalHpExp4Entry > sGtNpcTotalHpExp4Store(GtNpcTotalHpExp4fmt)
GameTable< GtRegenMPPerSptEntry > sGtRegenMPPerSptStore(GtRegenMPPerSptfmt)
#define LOAD_GT(tableName, store, file)
std::list< std::string > StoreProblemList
Definition: DBCStores.cpp:182
uint32_t uint32
Definition: Define.h:150
GameTable< GtChanceToMeleeCritEntry > sGtChanceToMeleeCritStore(GtChanceToMeleeCritfmt)
GameTable< GtNPCManaCostScalerEntry > sGtNPCManaCostScalerStore(GtNPCManaCostScalerfmt)
GameTable< GtNpcTotalHpExp5Entry > sGtNpcTotalHpExp5Store(GtNpcTotalHpExp5fmt)
GameTable< GtBarberShopCostBaseEntry > sGtBarberShopCostBaseStore(GtBarberShopCostBasefmt)
GameTable< GtOCTHpPerStaminaEntry > sGtOCTHpPerStaminaStore(GtOCTHpPerStaminafmt)
GameTable< GtItemSocketCostPerLevelEntry > sGtItemSocketCostPerLevelStore(GtItemSocketCostPerLevelfmt)
GameTable< GtOCTLevelExperienceEntry > sGtOCTLevelExperienceStore(GtOCTLevelExperiencefmt)
TC_COMMON_API char const * localeNames[TOTAL_LOCALES]
Definition: Common.cpp:21
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition: Timer.h:42
GameTable< GtChanceToSpellCritEntry > sGtChanceToSpellCritStore(GtChanceToSpellCritfmt)
GameTable< GtOCTBaseHPByClassEntry > sGtOCTBaseHPByClassStore(GtOCTBaseHPByClassfmt)
#define TC_LOG_INFO(filterType__,...)
Definition: Log.h:201
#define TC_LOG_ERROR(filterType__,...)
Definition: Log.h:207
GameTable< GtChanceToSpellCritBaseEntry > sGtChanceToSpellCritBaseStore(GtChanceToSpellCritBasefmt)
GameTable< GtOCTBaseMPByClassEntry > sGtOCTBaseMPByClassStore(GtOCTBaseMPByClassfmt)
GameTable< GtCombatRatingsEntry > sGtCombatRatingsStore(GtCombatRatingsfmt)
GameTable< GtChanceToMeleeCritBaseEntry > sGtChanceToMeleeCritBaseStore(GtChanceToMeleeCritBasefmt)
GameTable< GtNpcTotalHpExp2Entry > sGtNpcTotalHpExp2Store(GtNpcTotalHpExp2fmt)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TC_GAME_API void Map2ZoneCoordinates ( float &  x,
float &  y,
uint32  worldMapAreaId 
)
682 {
683  WorldMapAreaEntry const* maEntry = sWorldMapAreaStore.LookupEntry(worldMapAreaId);
684 
685  // if not listed then map coordinates (instance)
686  if (!maEntry)
687  return;
688 
689  x = (x - maEntry->LocTop) / ((maEntry->LocBottom - maEntry->LocTop) / 100);
690  y = (y - maEntry->LocLeft) / ((maEntry->LocRight - maEntry->LocLeft) / 100); // client y coord from top to down
691  std::swap(x, y); // client have map coords swapped
692 }
float LocLeft
Definition: DBCStructure.h:1408
float LocTop
Definition: DBCStructure.h:1410
Definition: DBCStructure.h:1402
DBCStorage< WorldMapAreaEntry > sWorldMapAreaStore(WorldMapAreafmt)
G3D::int16 y
Definition: Vector2int16.h:38
float LocBottom
Definition: DBCStructure.h:1411
float LocRight
Definition: DBCStructure.h:1409
G3D::int16 x
Definition: Vector2int16.h:37

+ Here is the caller graph for this function:

TC_GAME_API void Zone2MapCoordinates ( float &  x,
float &  y,
uint32  worldMapAreaId 
)
669 {
670  WorldMapAreaEntry const* maEntry = sWorldMapAreaStore.LookupEntry(worldMapAreaId);
671 
672  // if not listed then map coordinates (instance)
673  if (!maEntry)
674  return;
675 
676  std::swap(x, y); // at client map coords swapped
677  x = x*((maEntry->LocBottom-maEntry->LocTop)/100)+maEntry->LocTop;
678  y = y*((maEntry->LocRight-maEntry->LocLeft)/100)+maEntry->LocLeft; // client y coord from top to down
679 }
float LocLeft
Definition: DBCStructure.h:1408
float LocTop
Definition: DBCStructure.h:1410
Definition: DBCStructure.h:1402
DBCStorage< WorldMapAreaEntry > sWorldMapAreaStore(WorldMapAreafmt)
G3D::int16 y
Definition: Vector2int16.h:38
float LocBottom
Definition: DBCStructure.h:1411
float LocRight
Definition: DBCStructure.h:1409
G3D::int16 x
Definition: Vector2int16.h:37

+ Here is the caller graph for this function:

Variable Documentation

TC_GAME_API DBCStorage<BankBagSlotPricesEntry> sBankBagSlotPricesStore
TC_GAME_API DBCStorage<BattlemasterListEntry> sBattlemasterListStore
TC_GAME_API ChrSpecializationByIndexArray sChrSpecializationByIndexStore
TC_GAME_API DBCStorage<ChrSpecializationEntry> sChrSpecializationStore
TC_GAME_API DBCStorage<CreatureDisplayInfoExtraEntry> sCreatureDisplayInfoExtraStore
TC_GAME_API DBCStorage<CreatureModelDataEntry> sCreatureModelDataStore
TC_GAME_API DBCStorage<DungeonEncounterEntry> sDungeonEncounterStore
TC_GAME_API DBCStorage<GameObjectDisplayInfoEntry> sGameObjectDisplayInfoStore
TC_GAME_API GameTable<GtBarberShopCostBaseEntry> sGtBarberShopCostBaseStore
TC_GAME_API GameTable<GtChanceToMeleeCritBaseEntry> sGtChanceToMeleeCritBaseStore
TC_GAME_API GameTable<GtChanceToMeleeCritEntry> sGtChanceToMeleeCritStore
TC_GAME_API GameTable<GtChanceToSpellCritBaseEntry> sGtChanceToSpellCritBaseStore
TC_GAME_API GameTable<GtChanceToSpellCritEntry> sGtChanceToSpellCritStore
TC_GAME_API GameTable<GtCombatRatingsEntry> sGtCombatRatingsStore
TC_GAME_API GameTable<GtItemSocketCostPerLevelEntry> sGtItemSocketCostPerLevelStore
TC_GAME_API GameTable<GtNPCManaCostScalerEntry> sGtNPCManaCostScalerStore
TC_GAME_API GameTable<GtNpcTotalHpExp1Entry> sGtNpcTotalHpExp1Store
TC_GAME_API GameTable<GtNpcTotalHpExp2Entry> sGtNpcTotalHpExp2Store
TC_GAME_API GameTable<GtNpcTotalHpExp3Entry> sGtNpcTotalHpExp3Store
TC_GAME_API GameTable<GtNpcTotalHpExp4Entry> sGtNpcTotalHpExp4Store
TC_GAME_API GameTable<GtNpcTotalHpExp5Entry> sGtNpcTotalHpExp5Store
TC_GAME_API GameTable<GtOCTBaseHPByClassEntry> sGtOCTBaseHPByClassStore
TC_GAME_API GameTable<GtOCTBaseMPByClassEntry> sGtOCTBaseMPByClassStore
TC_GAME_API GameTable<GtOCTHpPerStaminaEntry> sGtOCTHpPerStaminaStore
TC_GAME_API GameTable<GtOCTLevelExperienceEntry> sGtOCTLevelExperienceStore
TC_GAME_API GameTable<GtRegenMPPerSptEntry> sGtRegenMPPerSptStore
TC_GAME_API GameTable<GtSpellScalingEntry> sGtSpellScalingStore
TC_GAME_API DBCStorage<GuildColorBackgroundEntry> sGuildColorBackgroundStore
TC_GAME_API DBCStorage<GuildColorBorderEntry> sGuildColorBorderStore
TC_GAME_API DBCStorage<GuildColorEmblemEntry> sGuildColorEmblemStore
TC_GAME_API DBCStorage<ItemArmorQualityEntry> sItemArmorQualityStore
TC_GAME_API DBCStorage<ItemDamageEntry> sItemDamageAmmoStore
TC_GAME_API DBCStorage<ItemDamageEntry> sItemDamageOneHandCasterStore
TC_GAME_API DBCStorage<ItemDamageEntry> sItemDamageOneHandStore
TC_GAME_API DBCStorage<ItemDamageEntry> sItemDamageRangedStore
TC_GAME_API DBCStorage<ItemDamageEntry> sItemDamageThrownStore
TC_GAME_API DBCStorage<ItemDamageEntry> sItemDamageTwoHandCasterStore
TC_GAME_API DBCStorage<ItemDamageEntry> sItemDamageTwoHandStore
TC_GAME_API DBCStorage<ItemDamageEntry> sItemDamageWandStore
TC_GAME_API ItemSetSpellsStore sItemSetSpellsStore
TC_GAME_API MapDifficultyMap sMapDifficultyMap
TC_GAME_API DBCStorage<QuestFactionRewEntry> sQuestFactionRewardStore
TC_GAME_API DBCStorage<RandomPropertiesPointsEntry> sRandomPropertiesPointsStore
TC_GAME_API DBCStorage<SkillLineAbilityEntry> sSkillLineAbilityStore
TC_GAME_API DBCStorage<SkillRaceClassInfoEntry> sSkillRaceClassInfoStore
TC_GAME_API DBCStorage<SpellAuraOptionsEntry> sSpellAuraOptionsStore
TC_GAME_API DBCStorage<SpellEffectScalingEntry> sSpellEffectScalingStore
TC_GAME_API SpellEffectScallingByEffectId sSpellEffectScallingByEffectId
TC_GAME_API DBCStorage<SpellEquippedItemsEntry> sSpellEquippedItemsStore
TC_GAME_API DBCStorage<SpellFocusObjectEntry> sSpellFocusObjectStore
TC_GAME_API DBCStorage<SpellItemEnchantmentEntry> sSpellItemEnchantmentStore
TC_GAME_API DBCStorage<SpellShapeshiftFormEntry> sSpellShapeshiftFormStore
TC_GAME_API DBCStorage<SpellTargetRestrictionsEntry> sSpellTargetRestrictionsStore
TC_GAME_API DBCStorage<SummonPropertiesEntry> sSummonPropertiesStore