-updated all DBC formats, except spell* ones

-added dbc.zip (all 4.2.2 files + 3.3.5 spells)
-hardcoded map 0's entry for mapdifficulty (dbc has no data for it)
This commit is contained in:
Rat
2011-11-22 13:32:11 +01:00
parent 154612f279
commit a12df963b9
33 changed files with 383 additions and 307 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -618,7 +618,7 @@ void AuctionHouseObject::BuildListAuctionItems(WorldPacket& data, Player* player
if (itemRandProp) if (itemRandProp)
{ {
char* const* temp = itemRandProp->nameSuffix; DBCString temp = itemRandProp->nameSuffix;
//char* temp = itemRandProp->nameSuffix; //char* temp = itemRandProp->nameSuffix;
// dbc local name // dbc local name
+2 -2
View File
@@ -165,7 +165,7 @@ bool ItemChatLink::Initialize(std::istringstream& iss)
return true; return true;
} }
inline std::string ItemChatLink::FormatName(uint8 index, ItemLocale const* locale, char* const* suffixStrings) const inline std::string ItemChatLink::FormatName(uint8 index, ItemLocale const *locale, DBCString suffixStrings) const
{ {
std::stringstream ss; std::stringstream ss;
if (locale == NULL || index >= locale->Name.size()) if (locale == NULL || index >= locale->Name.size())
@@ -181,7 +181,7 @@ bool ItemChatLink::ValidateName(char* buffer, const char* context)
{ {
ChatLink::ValidateName(buffer, context); ChatLink::ValidateName(buffer, context);
char* const* suffixStrings = _suffix ? _suffix->nameSuffix : (_property ? _property->nameSuffix : NULL); DBCString suffixStrings = _suffix ? _suffix->nameSuffix : (_property ? _property->nameSuffix : NULL);
bool res = (FormatName(LOCALE_enUS, NULL, suffixStrings) == buffer); bool res = (FormatName(LOCALE_enUS, NULL, suffixStrings) == buffer);
if (!res) if (!res)
+1 -1
View File
@@ -61,7 +61,7 @@ public:
virtual bool ValidateName(char* buffer, const char* context); virtual bool ValidateName(char* buffer, const char* context);
protected: protected:
std::string FormatName(uint8 index, ItemLocale const* locale, char* const* suffixStrings) const; std::string FormatName(uint8 index, ItemLocale const* locale, DBCString suffixStrings) const;
ItemTemplate const* _item; ItemTemplate const* _item;
int32 _data[8]; int32 _data[8];
+1 -1
View File
@@ -334,7 +334,7 @@ enum Difficulty
enum SpawnMask enum SpawnMask
{ {
SPAWNMASK_CONTINENT = (1 << REGULAR_DIFFICULTY), // any any maps without spawn modes SPAWNMASK_CONTINENT = (1 << REGULAR_DIFFICULTY), // any maps without spawn modes
SPAWNMASK_DUNGEON_NORMAL = (1 << DUNGEON_DIFFICULTY_NORMAL), SPAWNMASK_DUNGEON_NORMAL = (1 << DUNGEON_DIFFICULTY_NORMAL),
SPAWNMASK_DUNGEON_HEROIC = (1 << DUNGEON_DIFFICULTY_HEROIC), SPAWNMASK_DUNGEON_HEROIC = (1 << DUNGEON_DIFFICULTY_HEROIC),
+79 -70
View File
@@ -69,6 +69,7 @@ DBCStorage <CharTitlesEntry> sCharTitlesStore(CharTitlesEntryfmt);
DBCStorage <ChatChannelsEntry> sChatChannelsStore(ChatChannelsEntryfmt); DBCStorage <ChatChannelsEntry> sChatChannelsStore(ChatChannelsEntryfmt);
DBCStorage <ChrClassesEntry> sChrClassesStore(ChrClassesEntryfmt); DBCStorage <ChrClassesEntry> sChrClassesStore(ChrClassesEntryfmt);
DBCStorage <ChrRacesEntry> sChrRacesStore(ChrRacesEntryfmt); DBCStorage <ChrRacesEntry> sChrRacesStore(ChrRacesEntryfmt);
DBCStorage <ChrPowerTypesEntry> sChrPowerTypesStore(ChrClassesXPowerTypesfmt);
DBCStorage <CinematicSequencesEntry> sCinematicSequencesStore(CinematicSequencesEntryfmt); DBCStorage <CinematicSequencesEntry> sCinematicSequencesStore(CinematicSequencesEntryfmt);
DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore(CreatureDisplayInfofmt); DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore(CreatureDisplayInfofmt);
DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore(CreatureFamilyfmt); DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore(CreatureFamilyfmt);
@@ -104,10 +105,12 @@ DBCStorage <GtOCTClassCombatRatingScalarEntry> sGtOCTClassCombatRatingScalarStor
DBCStorage <GtOCTRegenHPEntry> sGtOCTRegenHPStore(GtOCTRegenHPfmt); DBCStorage <GtOCTRegenHPEntry> sGtOCTRegenHPStore(GtOCTRegenHPfmt);
//DBCStorage <GtOCTRegenMPEntry> sGtOCTRegenMPStore(GtOCTRegenMPfmt); -- not used currently //DBCStorage <GtOCTRegenMPEntry> sGtOCTRegenMPStore(GtOCTRegenMPfmt); -- not used currently
DBCStorage <GtRegenHPPerSptEntry> sGtRegenHPPerSptStore(GtRegenHPPerSptfmt); DBCStorage <GtRegenHPPerSptEntry> sGtRegenHPPerSptStore(GtRegenHPPerSptfmt);
DBCStorage <gtOCTHpPerStaminaEntry> sGtOCTHpPerStaminaStore(GtOCTHpPerStaminafmt);
DBCStorage <GtRegenMPPerSptEntry> sGtRegenMPPerSptStore(GtRegenMPPerSptfmt); DBCStorage <GtRegenMPPerSptEntry> sGtRegenMPPerSptStore(GtRegenMPPerSptfmt);
DBCStorage <HolidaysEntry> sHolidaysStore(Holidaysfmt); DBCStorage <HolidaysEntry> sHolidaysStore(Holidaysfmt);
DBCStorage <ItemClassEntry> sItemClassStore(ItemClassfmt);
//DBCStorage <ItemEntry> sItemStore(Itemfmt); //DBCStorage <ItemEntry> sItemStore(Itemfmt);
DBCStorage <ItemBagFamilyEntry> sItemBagFamilyStore(ItemBagFamilyfmt); DBCStorage <ItemBagFamilyEntry> sItemBagFamilyStore(ItemBagFamilyfmt);
//DBCStorage <ItemCondExtCostsEntry> sItemCondExtCostsStore(ItemCondExtCostsEntryfmt); //DBCStorage <ItemCondExtCostsEntry> sItemCondExtCostsStore(ItemCondExtCostsEntryfmt);
@@ -193,6 +196,7 @@ DBCStorage <WMOAreaTableEntry> sWMOAreaTableStore(WMOAreaTableEntryfmt);
DBCStorage <WorldMapAreaEntry> sWorldMapAreaStore(WorldMapAreaEntryfmt); DBCStorage <WorldMapAreaEntry> sWorldMapAreaStore(WorldMapAreaEntryfmt);
DBCStorage <WorldMapOverlayEntry> sWorldMapOverlayStore(WorldMapOverlayEntryfmt); DBCStorage <WorldMapOverlayEntry> sWorldMapOverlayStore(WorldMapOverlayEntryfmt);
DBCStorage <WorldSafeLocsEntry> sWorldSafeLocsStore(WorldSafeLocsEntryfmt); DBCStorage <WorldSafeLocsEntry> sWorldSafeLocsStore(WorldSafeLocsEntryfmt);
DBCStorage <PhaseEntry> sPhaseStores(PhaseEntryfmt);
typedef std::list<std::string> StoreProblemList; typedef std::list<std::string> StoreProblemList;
@@ -291,19 +295,20 @@ void LoadDBCStores(const std::string& dataPath)
LoadDBC(availableDbcLocales, bad_dbc_files, sChatChannelsStore, dbcPath, "ChatChannels.dbc");//14545 LoadDBC(availableDbcLocales, bad_dbc_files, sChatChannelsStore, dbcPath, "ChatChannels.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sChrClassesStore, dbcPath, "ChrClasses.dbc");//14545 LoadDBC(availableDbcLocales, bad_dbc_files, sChrClassesStore, dbcPath, "ChrClasses.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sChrRacesStore, dbcPath, "ChrRaces.dbc");//14545 LoadDBC(availableDbcLocales, bad_dbc_files, sChrRacesStore, dbcPath, "ChrRaces.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sCinematicSequencesStore, dbcPath, "CinematicSequences.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sChrPowerTypesStore, dbcPath, "ChrClassesXPowerTypes.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureDisplayInfoStore, dbcPath, "CreatureDisplayInfo.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sCinematicSequencesStore, dbcPath, "CinematicSequences.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureFamilyStore, dbcPath, "CreatureFamily.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureDisplayInfoStore, dbcPath, "CreatureDisplayInfo.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureSpellDataStore, dbcPath, "CreatureSpellData.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureFamilyStore, dbcPath, "CreatureFamily.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureTypeStore, dbcPath, "CreatureType.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureSpellDataStore, dbcPath, "CreatureSpellData.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sCurrencyTypesStore, dbcPath, "CurrencyTypes.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sCreatureTypeStore, dbcPath, "CreatureType.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sDestructibleModelDataStore, dbcPath, "DestructibleModelData.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sCurrencyTypesStore, dbcPath, "CurrencyTypes.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sDungeonEncounterStore, dbcPath, "DungeonEncounter.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sDestructibleModelDataStore, dbcPath, "DestructibleModelData.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sDurabilityCostsStore, dbcPath, "DurabilityCosts.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sDungeonEncounterStore, dbcPath, "DungeonEncounter.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sDurabilityQualityStore, dbcPath, "DurabilityQuality.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sDurabilityCostsStore, dbcPath, "DurabilityCosts.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sEmotesStore, dbcPath, "Emotes.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sDurabilityQualityStore, dbcPath, "DurabilityQuality.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sEmotesTextStore, dbcPath, "EmotesText.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sEmotesStore, dbcPath, "Emotes.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sFactionStore, dbcPath, "Faction.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sEmotesTextStore, dbcPath, "EmotesText.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sFactionStore, dbcPath, "Faction.dbc");//14545
for (uint32 i=0; i<sFactionStore.GetNumRows(); ++i) for (uint32 i=0; i<sFactionStore.GetNumRows(); ++i)
{ {
FactionEntry const* faction = sFactionStore.LookupEntry(i); FactionEntry const* faction = sFactionStore.LookupEntry(i);
@@ -314,8 +319,8 @@ void LoadDBCStores(const std::string& dataPath)
} }
} }
LoadDBC(availableDbcLocales, bad_dbc_files, sFactionTemplateStore, dbcPath, "FactionTemplate.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sFactionTemplateStore, dbcPath, "FactionTemplate.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGameObjectDisplayInfoStore, dbcPath, "GameObjectDisplayInfo.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGameObjectDisplayInfoStore, dbcPath, "GameObjectDisplayInfo.dbc");//14545
for (uint32 i = 0; i < sGameObjectDisplayInfoStore.GetNumRows(); ++i) for (uint32 i = 0; i < sGameObjectDisplayInfoStore.GetNumRows(); ++i)
{ {
if (GameObjectDisplayInfoEntry const* info = sGameObjectDisplayInfoStore.LookupEntry(i)) if (GameObjectDisplayInfoEntry const* info = sGameObjectDisplayInfoStore.LookupEntry(i))
@@ -329,67 +334,71 @@ void LoadDBCStores(const std::string& dataPath)
} }
} }
LoadDBC(availableDbcLocales, bad_dbc_files, sGemPropertiesStore, dbcPath, "GemProperties.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGemPropertiesStore, dbcPath, "GemProperties.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGlyphPropertiesStore, dbcPath, "GlyphProperties.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGlyphPropertiesStore, dbcPath, "GlyphProperties.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGlyphSlotStore, dbcPath, "GlyphSlot.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGlyphSlotStore, dbcPath, "GlyphSlot.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtBarberShopCostBaseStore, dbcPath, "gtBarberShopCostBase.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGtBarberShopCostBaseStore, dbcPath, "gtBarberShopCostBase.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtCombatRatingsStore, dbcPath, "gtCombatRatings.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGtCombatRatingsStore, dbcPath, "gtCombatRatings.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtChanceToMeleeCritBaseStore, dbcPath, "gtChanceToMeleeCritBase.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGtChanceToMeleeCritBaseStore, dbcPath, "gtChanceToMeleeCritBase.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtChanceToMeleeCritStore, dbcPath, "gtChanceToMeleeCrit.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGtChanceToMeleeCritStore, dbcPath, "gtChanceToMeleeCrit.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtChanceToSpellCritBaseStore, dbcPath, "gtChanceToSpellCritBase.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGtChanceToSpellCritBaseStore, dbcPath, "gtChanceToSpellCritBase.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtChanceToSpellCritStore, dbcPath, "gtChanceToSpellCrit.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGtChanceToSpellCritStore, dbcPath, "gtChanceToSpellCrit.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtOCTClassCombatRatingScalarStore, dbcPath, "gtOCTClassCombatRatingScalar.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGtOCTClassCombatRatingScalarStore, dbcPath, "gtOCTClassCombatRatingScalar.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtOCTRegenHPStore, dbcPath, "gtOCTRegenHP.dbc"); //LoadDBC(availableDbcLocales, bad_dbc_files, sGtOCTRegenHPStore, dbcPath, "gtOCTRegenHP.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtOCTHpPerStaminaStore, dbcPath, "gtOCTHpPerStamina.dbc");//14545
//LoadDBC(dbcCount, availableDbcLocales, bad_dbc_files, sGtOCTRegenMPStore, dbcPath, "gtOCTRegenMP.dbc"); -- not used currently //LoadDBC(dbcCount, availableDbcLocales, bad_dbc_files, sGtOCTRegenMPStore, dbcPath, "gtOCTRegenMP.dbc"); -- not used currently
LoadDBC(availableDbcLocales, bad_dbc_files, sGtRegenHPPerSptStore, dbcPath, "gtRegenHPPerSpt.dbc"); //LoadDBC(availableDbcLocales, bad_dbc_files, sGtRegenHPPerSptStore, dbcPath, "gtRegenHPPerSpt.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sGtRegenMPPerSptStore, dbcPath, "gtRegenMPPerSpt.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sGtRegenMPPerSptStore, dbcPath, "gtRegenMPPerSpt.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sHolidaysStore, dbcPath, "Holidays.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sHolidaysStore, dbcPath, "Holidays.dbc");//14545
// LoadDBC(availableDbcLocales, bad_dbc_files, sItemStore, dbcPath, "Item.dbc"); // LoadDBC(availableDbcLocales, bad_dbc_files, sItemStore, dbcPath, "Item.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sItemBagFamilyStore, dbcPath, "ItemBagFamily.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sItemBagFamilyStore, dbcPath, "ItemBagFamily.dbc");//14545
//LoadDBC(dbcCount, availableDbcLocales, bad_dbc_files, sItemDisplayInfoStore, dbcPath, "ItemDisplayInfo.dbc"); -- not used currently //LoadDBC(dbcCount, availableDbcLocales, bad_dbc_files, sItemDisplayInfoStore, dbcPath, "ItemDisplayInfo.dbc"); -- not used currently
//LoadDBC(dbcCount, availableDbcLocales, bad_dbc_files, sItemCondExtCostsStore, dbcPath, "ItemCondExtCosts.dbc"); //LoadDBC(dbcCount, availableDbcLocales, bad_dbc_files, sItemCondExtCostsStore, dbcPath, "ItemCondExtCosts.dbc");
// LoadDBC(availableDbcLocales, bad_dbc_files, sItemExtendedCostStore, dbcPath, "ItemExtendedCost.dbc"); // LoadDBC(availableDbcLocales, bad_dbc_files, sItemExtendedCostStore, dbcPath, "ItemExtendedCost.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sItemLimitCategoryStore, dbcPath, "ItemLimitCategory.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sItemLimitCategoryStore, dbcPath, "ItemLimitCategory.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sItemRandomPropertiesStore, dbcPath, "ItemRandomProperties.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sItemRandomPropertiesStore, dbcPath, "ItemRandomProperties.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sItemRandomSuffixStore, dbcPath, "ItemRandomSuffix.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sItemRandomSuffixStore, dbcPath, "ItemRandomSuffix.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sItemSetStore, dbcPath, "ItemSet.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sItemSetStore, dbcPath, "ItemSet.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sLFGDungeonStore, dbcPath, "LFGDungeons.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sItemClassStore, dbcPath,"ItemClass.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sLockStore, dbcPath, "Lock.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sLFGDungeonStore, dbcPath, "LFGDungeons.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sLockStore, dbcPath, "Lock.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sPhaseStores, dbcPath, "Phase.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sMailTemplateStore, dbcPath, "MailTemplate.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sMailTemplateStore, dbcPath, "MailTemplate.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sMapStore, dbcPath, "Map.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sMapStore, dbcPath, "Map.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sMapDifficultyStore, dbcPath, "MapDifficulty.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sMapDifficultyStore, dbcPath, "MapDifficulty.dbc");//14545
// fill data // fill data
for (uint32 i = 1; i < sMapDifficultyStore.GetNumRows(); ++i) sMapDifficultyMap[MAKE_PAIR32(0, 0)] = MapDifficulty(0, 0, 0);//map 0 is missingg from MapDifficulty.dbc use this till its ported to sql
for (uint32 i = 0; i < sMapDifficultyStore.GetNumRows(); ++i)
if (MapDifficultyEntry const* entry = sMapDifficultyStore.LookupEntry(i)) if (MapDifficultyEntry const* entry = sMapDifficultyStore.LookupEntry(i))
sMapDifficultyMap[MAKE_PAIR32(entry->MapId, entry->Difficulty)] = MapDifficulty(entry->resetTime, entry->maxPlayers, entry->areaTriggerText[0] != '\0'); sMapDifficultyMap[MAKE_PAIR32(entry->MapId, entry->Difficulty)] = MapDifficulty(entry->resetTime, entry->maxPlayers, entry->areaTriggerText[0] > 0);
sMapDifficultyStore.Clear(); sMapDifficultyStore.Clear();
LoadDBC(availableDbcLocales, bad_dbc_files, sMovieStore, dbcPath, "Movie.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sMovieStore, dbcPath, "Movie.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sOverrideSpellDataStore, dbcPath, "OverrideSpellData.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sOverrideSpellDataStore, dbcPath, "OverrideSpellData.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sPvPDifficultyStore, dbcPath, "PvpDifficulty.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sPvPDifficultyStore, dbcPath, "PvpDifficulty.dbc");//14545
for (uint32 i = 0; i < sPvPDifficultyStore.GetNumRows(); ++i) for (uint32 i = 0; i < sPvPDifficultyStore.GetNumRows(); ++i)
if (PvPDifficultyEntry const* entry = sPvPDifficultyStore.LookupEntry(i)) if (PvPDifficultyEntry const* entry = sPvPDifficultyStore.LookupEntry(i))
if (entry->bracketId > MAX_BATTLEGROUND_BRACKETS) if (entry->bracketId > MAX_BATTLEGROUND_BRACKETS)
ASSERT(false && "Need update MAX_BATTLEGROUND_BRACKETS by DBC data"); ASSERT(false && "Need update MAX_BATTLEGROUND_BRACKETS by DBC data");
LoadDBC(availableDbcLocales, bad_dbc_files, sQuestXPStore, dbcPath, "QuestXP.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sQuestXPStore, dbcPath, "QuestXP.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sQuestFactionRewardStore, dbcPath, "QuestFactionReward.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sQuestFactionRewardStore, dbcPath, "QuestFactionReward.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sQuestSortStore, dbcPath, "QuestSort.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sQuestSortStore, dbcPath, "QuestSort.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sRandomPropertiesPointsStore, dbcPath, "RandPropPoints.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sRandomPropertiesPointsStore, dbcPath, "RandPropPoints.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sScalingStatDistributionStore, dbcPath, "ScalingStatDistribution.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sScalingStatDistributionStore, dbcPath, "ScalingStatDistribution.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sScalingStatValuesStore, dbcPath, "ScalingStatValues.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sScalingStatValuesStore, dbcPath, "ScalingStatValues.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sSkillLineStore, dbcPath, "SkillLine.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sSkillLineStore, dbcPath, "SkillLine.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sSkillLineAbilityStore, dbcPath, "SkillLineAbility.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sSkillLineAbilityStore, dbcPath, "SkillLineAbility.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sSoundEntriesStore, dbcPath, "SoundEntries.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sSoundEntriesStore, dbcPath, "SoundEntries.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sSpellStore, dbcPath, "Spell.dbc", &CustomSpellEntryfmt, &CustomSpellEntryIndex); LoadDBC(availableDbcLocales, bad_dbc_files, sSpellStore, dbcPath, "Spell.dbc", &CustomSpellEntryfmt, &CustomSpellEntryIndex);//todo
for (uint32 i = 1; i < sSpellStore.GetNumRows(); ++i) for (uint32 i = 1; i < sSpellStore.GetNumRows(); ++i)
{ {
SpellEntry const* spell = sSpellStore.LookupEntry(i); SpellEntry const* spell = sSpellStore.LookupEntry(i);
@@ -437,10 +446,10 @@ void LoadDBCStores(const std::string& dataPath)
LoadDBC(availableDbcLocales, bad_dbc_files, sSpellRangeStore, dbcPath, "SpellRange.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sSpellRangeStore, dbcPath, "SpellRange.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sSpellRuneCostStore, dbcPath, "SpellRuneCost.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sSpellRuneCostStore, dbcPath, "SpellRuneCost.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sSpellShapeshiftStore, dbcPath, "SpellShapeshiftForm.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sSpellShapeshiftStore, dbcPath, "SpellShapeshiftForm.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sStableSlotPricesStore, dbcPath, "StableSlotPrices.dbc"); //LoadDBC(availableDbcLocales, bad_dbc_files, sStableSlotPricesStore, dbcPath, "StableSlotPrices.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sSummonPropertiesStore, dbcPath, "SummonProperties.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sSummonPropertiesStore, dbcPath, "SummonProperties.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sTalentStore, dbcPath, "Talent.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sTalentStore, dbcPath, "Talent.dbc");//14545
// Create Spelldifficulty searcher // Create Spelldifficulty searcher
for (uint32 i = 0; i < sSpellDifficultyStore.GetNumRows(); ++i) for (uint32 i = 0; i < sSpellDifficultyStore.GetNumRows(); ++i)
@@ -479,7 +488,7 @@ void LoadDBCStores(const std::string& dataPath)
sTalentSpellPosMap[talentInfo->RankID[j]] = TalentSpellPos(i, j); sTalentSpellPosMap[talentInfo->RankID[j]] = TalentSpellPos(i, j);
} }
LoadDBC(availableDbcLocales, bad_dbc_files, sTalentTabStore, dbcPath, "TalentTab.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sTalentTabStore, dbcPath, "TalentTab.dbc");//14545
// prepare fast data access to bit pos of talent ranks for use at inspecting // prepare fast data access to bit pos of talent ranks for use at inspecting
{ {
@@ -502,15 +511,15 @@ void LoadDBCStores(const std::string& dataPath)
} }
} }
LoadDBC(availableDbcLocales, bad_dbc_files, sTaxiNodesStore, dbcPath, "TaxiNodes.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sTaxiNodesStore, dbcPath, "TaxiNodes.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sTaxiPathStore, dbcPath, "TaxiPath.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sTaxiPathStore, dbcPath, "TaxiPath.dbc");//14545
for (uint32 i = 1; i < sTaxiPathStore.GetNumRows(); ++i) for (uint32 i = 1; i < sTaxiPathStore.GetNumRows(); ++i)
if (TaxiPathEntry const* entry = sTaxiPathStore.LookupEntry(i)) if (TaxiPathEntry const* entry = sTaxiPathStore.LookupEntry(i))
sTaxiPathSetBySource[entry->from][entry->to] = TaxiPathBySourceAndDestination(entry->ID, entry->price); sTaxiPathSetBySource[entry->from][entry->to] = TaxiPathBySourceAndDestination(entry->ID, entry->price);
uint32 pathCount = sTaxiPathStore.GetNumRows(); uint32 pathCount = sTaxiPathStore.GetNumRows();
//## TaxiPathNode.dbc ## Loaded only for initialization different structures //## TaxiPathNode.dbc ## Loaded only for initialization different structures
LoadDBC(availableDbcLocales, bad_dbc_files, sTaxiPathNodeStore, dbcPath, "TaxiPathNode.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sTaxiPathNodeStore, dbcPath, "TaxiPathNode.dbc");//14545
// Calculate path nodes count // Calculate path nodes count
std::vector<uint32> pathLength; std::vector<uint32> pathLength;
pathLength.resize(pathCount); // 0 and some other indexes not used pathLength.resize(pathCount); // 0 and some other indexes not used
@@ -591,19 +600,19 @@ void LoadDBCStores(const std::string& dataPath)
} }
} }
LoadDBC(availableDbcLocales, bad_dbc_files, sTeamContributionPointsStore, dbcPath, "TeamContributionPoints.dbc"); //LoadDBC(availableDbcLocales, bad_dbc_files, sTeamContributionPointsStore, dbcPath, "TeamContributionPoints.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sTotemCategoryStore, dbcPath, "TotemCategory.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sTotemCategoryStore, dbcPath, "TotemCategory.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sVehicleStore, dbcPath, "Vehicle.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sVehicleStore, dbcPath, "Vehicle.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sVehicleSeatStore, dbcPath, "VehicleSeat.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sVehicleSeatStore, dbcPath, "VehicleSeat.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sWMOAreaTableStore, dbcPath, "WMOAreaTable.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sWMOAreaTableStore, dbcPath, "WMOAreaTable.dbc");//14545
for (uint32 i = 0; i < sWMOAreaTableStore.GetNumRows(); ++i) for (uint32 i = 0; i < sWMOAreaTableStore.GetNumRows(); ++i)
if (WMOAreaTableEntry const* entry = sWMOAreaTableStore.LookupEntry(i)) if (WMOAreaTableEntry const* entry = sWMOAreaTableStore.LookupEntry(i))
sWMOAreaInfoByTripple.insert(WMOAreaInfoByTripple::value_type(WMOAreaTableTripple(entry->rootId, entry->adtId, entry->groupId), entry)); sWMOAreaInfoByTripple.insert(WMOAreaInfoByTripple::value_type(WMOAreaTableTripple(entry->rootId, entry->adtId, entry->groupId), entry));
LoadDBC(availableDbcLocales, bad_dbc_files, sWorldMapAreaStore, dbcPath, "WorldMapArea.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sWorldMapAreaStore, dbcPath, "WorldMapArea.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sWorldMapOverlayStore, dbcPath, "WorldMapOverlay.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sWorldMapOverlayStore, dbcPath, "WorldMapOverlay.dbc");//14545
LoadDBC(availableDbcLocales, bad_dbc_files, sWorldSafeLocsStore, dbcPath, "WorldSafeLocs.dbc"); LoadDBC(availableDbcLocales, bad_dbc_files, sWorldSafeLocsStore, dbcPath, "WorldSafeLocs.dbc");//14545
// error checks // error checks
if (bad_dbc_files.size() >= DBCFileCount) if (bad_dbc_files.size() >= DBCFileCount)
@@ -647,7 +656,7 @@ SimpleFactionsList const* GetFactionTeamList(uint32 faction)
return NULL; return NULL;
} }
char* GetPetName(uint32 petfamily, uint32 dbclang) char const* GetPetName(uint32 petfamily, uint32 dbclang)
{ {
if (!petfamily) if (!petfamily)
return NULL; return NULL;
+2 -1
View File
@@ -28,7 +28,7 @@
typedef std::list<uint32> SimpleFactionsList; typedef std::list<uint32> SimpleFactionsList;
SimpleFactionsList const* GetFactionTeamList(uint32 faction); SimpleFactionsList const* GetFactionTeamList(uint32 faction);
char* GetPetName(uint32 petfamily, uint32 dbclang); char const* GetPetName(uint32 petfamily, uint32 dbclang);
uint32 GetTalentSpellCost(uint32 spellId); uint32 GetTalentSpellCost(uint32 spellId);
TalentSpellPos const* GetTalentSpellPos(uint32 spellId); TalentSpellPos const* GetTalentSpellPos(uint32 spellId);
@@ -79,6 +79,7 @@ extern DBCStorage <CharStartOutfitEntry> sCharStartOutfitStore;
extern DBCStorage <CharTitlesEntry> sCharTitlesStore; extern DBCStorage <CharTitlesEntry> sCharTitlesStore;
extern DBCStorage <ChrClassesEntry> sChrClassesStore; extern DBCStorage <ChrClassesEntry> sChrClassesStore;
extern DBCStorage <ChrRacesEntry> sChrRacesStore; extern DBCStorage <ChrRacesEntry> sChrRacesStore;
extern DBCStorage <ChrPowerTypesEntry> sChrPowerTypesStore;
extern DBCStorage <CinematicSequencesEntry> sCinematicSequencesStore; extern DBCStorage <CinematicSequencesEntry> sCinematicSequencesStore;
extern DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore; extern DBCStorage <CreatureDisplayInfoEntry> sCreatureDisplayInfoStore;
extern DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore; extern DBCStorage <CreatureFamilyEntry> sCreatureFamilyStore;
+239 -176
View File
@@ -720,6 +720,13 @@ struct ChrRacesEntry
//uint32 // 23 4.0.0 //uint32 // 23 4.0.0
}; };
struct ChrPowerTypesEntry
{
uint32 entry; // 0
uint32 classId; // 1
uint32 power; // 2
};
/* not used /* not used
struct CinematicCameraEntry struct CinematicCameraEntry
{ {
@@ -757,6 +764,7 @@ struct CreatureDisplayInfoEntry
// 13 m_particleColorID // 13 m_particleColorID
// 14 m_creatureGeosetData // 14 m_creatureGeosetData
// 15 m_objectEffectPackageID // 15 m_objectEffectPackageID
// 16
}; };
struct CreatureFamilyEntry struct CreatureFamilyEntry
@@ -770,9 +778,8 @@ struct CreatureFamilyEntry
uint32 petFoodMask; // 7 m_petFoodMask uint32 petFoodMask; // 7 m_petFoodMask
int32 petTalentType; // 8 m_petTalentType int32 petTalentType; // 8 m_petTalentType
// 9 m_categoryEnumID // 9 m_categoryEnumID
char* Name[16]; // 10-25 m_name_lang DBCString Name; // 10 m_name_lang
// 26 string flags // 11 m_iconFile
// 27 m_iconFile
}; };
#define MAX_CREATURE_SPELL_DATA_SLOT 4 #define MAX_CREATURE_SPELL_DATA_SLOT 4
@@ -787,9 +794,8 @@ struct CreatureSpellDataEntry
struct CreatureTypeEntry struct CreatureTypeEntry
{ {
uint32 ID; // 0 m_ID uint32 ID; // 0 m_ID
//char* Name[16]; // 1-16 name //DBCString Name; // 1 m_name_lang
// 17 string flags //uint32 no_expirience; // 2 m_flags no exp? critters, non-combat pets, gas cloud.
//uint32 no_expirience; // 18 no exp? critters, non-combat pets, gas cloud.
}; };
/* not used /* not used
@@ -820,24 +826,29 @@ struct CurrencyTypesEntry
struct DestructibleModelDataEntry struct DestructibleModelDataEntry
{ {
uint32 Id; uint32 Id;
uint32 DamagedDisplayId;
//uint32 DamagedUnk1; //uint32 DamagedUnk1;
//uint32 DamagedUnk2; //uint32 DamagedUnk2;
uint32 DamagedDisplayId;
//uint32 DamagedUnk3; //uint32 DamagedUnk3;
uint32 DestroyedDisplayId;
//uint32 DestroyedUnk1; //uint32 DestroyedUnk1;
//uint32 DestroyedUnk2; //uint32 DestroyedUnk2;
uint32 DestroyedDisplayId;
//uint32 DestroyedUnk3; //uint32 DestroyedUnk3;
//uint32 DestroyedUnk4;
uint32 RebuildingDisplayId;
//uint32 RebuildingUnk1; //uint32 RebuildingUnk1;
//uint32 RebuildingUnk2; //uint32 RebuildingUnk2;
uint32 RebuildingDisplayId;
//uint32 RebuildingUnk3; //uint32 RebuildingUnk3;
//uint32 RebuildingUnk4;
uint32 SmokeDisplayId;
//uint32 SmokeUnk1; //uint32 SmokeUnk1;
//uint32 SmokeUnk2; //uint32 SmokeUnk2;
uint32 SmokeDisplayId;
//uint32 SmokeUnk3; //uint32 SmokeUnk3;
//uint32 Unk4; //uint32 SmokeUnk4;
//uint32 Unk5; //uint32 UnkDisplayid;
//uint32 Unk6;
//uint32 Unk7;
//uint32 Unk8;
}; };
struct DungeonEncounterEntry struct DungeonEncounterEntry
@@ -847,7 +858,7 @@ struct DungeonEncounterEntry
uint32 difficulty; // 2 instance mode uint32 difficulty; // 2 instance mode
//uint32 unk0; // 3 //uint32 unk0; // 3
uint32 encounterIndex; // 4 encounter index for creating completed mask uint32 encounterIndex; // 4 encounter index for creating completed mask
char* encounterName[16]; // 5-20 encounter name DBCString encounterName; // 5-20 encounter name
//uint32 nameFlags; // 21 //uint32 nameFlags; // 21
//uint32 unk1; // 22 //uint32 unk1; // 22
}; };
@@ -867,12 +878,13 @@ struct DurabilityQualityEntry
struct EmotesEntry struct EmotesEntry
{ {
uint32 Id; // 0 uint32 Id; // 0
//char* Name; // 1, internal name //DBCString Name; // 1, internal name
//uint32 AnimationId; // 2, ref to animationData //uint32 AnimationId; // 2, ref to animationData
uint32 Flags; // 3, bitmask, may be unit_flags uint32 Flags; // 3, bitmask, may be unit_flags
uint32 EmoteType; // 4, Can be 0, 1 or 2 (determine how emote are shown) uint32 EmoteType; // 4, Can be 0, 1 or 2 (determine how emote are shown)
uint32 UnitStandState; // 5, uncomfirmed, may be enum UnitStandStateType uint32 UnitStandState; // 5, uncomfirmed, may be enum UnitStandStateType
//uint32 SoundId; // 6, ref to soundEntries //uint32 SoundId; // 6, ref to soundEntries
//uint32 unk7 // 7
}; };
struct EmotesTextEntry struct EmotesTextEntry
@@ -894,10 +906,9 @@ struct FactionEntry
float spilloverRateOut; // 20 Faction outputs rep * spilloverRateOut as spillover reputation float spilloverRateOut; // 20 Faction outputs rep * spilloverRateOut as spillover reputation
uint32 spilloverMaxRankIn; // 21 The highest rank the faction will profit from incoming spillover uint32 spilloverMaxRankIn; // 21 The highest rank the faction will profit from incoming spillover
//uint32 spilloverRank_unk; // 22 It does not seem to be the max standing at which a faction outputs spillover ...so no idea //uint32 spilloverRank_unk; // 22 It does not seem to be the max standing at which a faction outputs spillover ...so no idea
char* name[16]; // 23-38 m_name_lang DBCString name; // 23 m_name_lang
// 39 string flags //DBCString description; // 24 m_description_lang
//char* description[16]; // 40-55 m_description_lang //uint32 // 25
// 56 string flags
// helpers // helpers
bool CanHaveReputation() const bool CanHaveReputation() const
@@ -923,6 +934,8 @@ struct FactionTemplateEntry
// helpers // helpers
bool IsFriendlyTo(FactionTemplateEntry const& entry) const bool IsFriendlyTo(FactionTemplateEntry const& entry) const
{ {
if (ID == entry.ID)
return true;
if (entry.faction) if (entry.faction)
{ {
for (int i = 0; i < MAX_FACTION_RELATIONS; ++i) for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
@@ -936,6 +949,8 @@ struct FactionTemplateEntry
} }
bool IsHostileTo(FactionTemplateEntry const& entry) const bool IsHostileTo(FactionTemplateEntry const& entry) const
{ {
if (ID == entry.ID)
return false;
if (entry.faction) if (entry.faction)
{ {
for (int i = 0; i < MAX_FACTION_RELATIONS; ++i) for (int i = 0; i < MAX_FACTION_RELATIONS; ++i)
@@ -974,9 +989,12 @@ struct GameObjectDisplayInfoEntry
struct GemPropertiesEntry struct GemPropertiesEntry
{ {
uint32 ID; uint32 ID; // 0 m_id
uint32 spellitemenchantement; uint32 spellitemenchantement; // 1 m_enchant_id
uint32 color; // 2 m_maxcount_inv
// 3 m_maxcount_item
uint32 color; // 4 m_type
//uint32 // 5
}; };
struct GlyphPropertiesEntry struct GlyphPropertiesEntry
@@ -1001,21 +1019,25 @@ struct GlyphSlotEntry
struct GtBarberShopCostBaseEntry struct GtBarberShopCostBaseEntry
{ {
//uint32 level;
float cost; float cost;
}; };
struct GtCombatRatingsEntry struct GtCombatRatingsEntry
{ {
//uint32 level;
float ratio; float ratio;
}; };
struct GtChanceToMeleeCritBaseEntry struct GtChanceToMeleeCritBaseEntry
{ {
//uint32 level;
float base; float base;
}; };
struct GtChanceToMeleeCritEntry struct GtChanceToMeleeCritEntry
{ {
//uint32 level;
float ratio; float ratio;
}; };
@@ -1039,10 +1061,15 @@ struct GtOCTRegenHPEntry
float ratio; float ratio;
}; };
//struct GtOCTRegenMPEntry struct GtOCTRegenMPEntry
//{ {
// float ratio; float ratio;
//}; };
struct gtOCTHpPerStaminaEntry
{
float ratio;
};
struct GtRegenHPPerSptEntry struct GtRegenHPPerSptEntry
{ {
@@ -1058,7 +1085,7 @@ struct GtRegenMPPerSptEntry
struct HolidayDescriptionsEntry struct HolidayDescriptionsEntry
{ {
uint32 ID; // 0, this is NOT holiday id uint32 ID; // 0, this is NOT holiday id
//char* name[16] // 1-16 m_name_lang //DBCString name[16] // 1-16 m_name_lang
// 17 name flags // 17 name flags
}; };
*/ */
@@ -1067,25 +1094,26 @@ struct HolidayDescriptionsEntry
struct HolidayNamesEntry struct HolidayNamesEntry
{ {
uint32 ID; // 0, this is NOT holiday id uint32 ID; // 0, this is NOT holiday id
//char* name[16] // 1-16 m_name_lang //DBCString name[16] // 1-16 m_name_lang
// 17 name flags // 17 name flags
}; };
*/ */
struct HolidaysEntry struct HolidaysEntry
{ {
uint32 ID; // 0 m_ID uint32 ID; // 0, holiday id
//uint32 duration[10]; // 1-10 m_duration //uint32 unk1; // 1
//uint32 date[26]; // 11-36 m_date (dates in unix time starting at January, 1, 2000) //uint32 unk2; // 2
//uint32 region; // 37 m_region (wow region) //uint32 unk3[8] // 3-10, empty fields
//uint32 looping; // 38 m_looping //uint32 unk11[13] // 11-23, some unknown data (bit strings?)
//uint32 calendarFlags[10]; // 39-48 m_calendarFlags //uint32 unk11[13] // 24-36, some empty fields (continue prev?)
//uint32 holidayNameId; // 49 m_holidayNameID (HolidayNames.dbc) //uint32 unk11[12] // 37-48, counters?
//uint32 holidayDescriptionId; // 50 m_holidayDescriptionID (HolidayDescriptions.dbc) //uint32 holidayNameId; // 49, id for HolidayNames.dbc
//char *textureFilename; // 51 m_textureFilename //uint32 holidayDescriptionId; // 50, id for HolidayDescriptions.dbc
//uint32 priority; // 52 m_priority //uint32 unk51; // 51
//uint32 calendarFilterType; // 53 m_calendarFilterType (-1 = Fishing Contest, 0 = Unk, 1 = Darkmoon Festival, 2 = Yearly holiday) //uint32 unk52; // 52
//uint32 flags; // 54 m_flags (0 = Darkmoon Faire, Fishing Contest and Wotlk Launch, rest is 1) //uint32 unk53; // 53
//uint32 unk54; // 54
}; };
/*struct ItemEntry /*struct ItemEntry
@@ -1100,11 +1128,19 @@ struct HolidaysEntry
uint32 Sheath; // 7 uint32 Sheath; // 7
};*/ };*/
struct ItemClassEntry
{
//uint32 id; // 0
uint32 Class; // 1 equal to id
//uint32 unk2; // 2 looks like second class
//uint32 unk3; // 3 1 for weapons
//DBCString name; // 4
};
struct ItemBagFamilyEntry struct ItemBagFamilyEntry
{ {
uint32 ID; // 0 uint32 ID; // 0
//char* name[16] // 1-16 m_name_lang //DBCString name; // 1 m_name_lang
// // 17 name flags
}; };
struct ItemDisplayInfoEntry struct ItemDisplayInfoEntry
@@ -1147,10 +1183,9 @@ struct ItemDisplayInfoEntry
struct ItemLimitCategoryEntry struct ItemLimitCategoryEntry
{ {
uint32 ID; // 0 Id uint32 ID; // 0 Id
//char* name[16] // 1-16 m_name_lang //DBCString name; // 1 m_name_lang
// 17 name flags uint32 maxCount; // 2, m_quantity max allowed equipped as item or in gem slot
uint32 maxCount; // 18, max allowed equipped as item or in gem slot uint32 mode; // 3, m_flags 0 = have, 1 = equip (enum ItemLimitCategoryMode)
uint32 mode; // 19, 0 = have, 1 = equip (enum ItemLimitCategoryMode)
}; };
#define MAX_ITEM_ENCHANTMENT_EFFECTS 3 #define MAX_ITEM_ENCHANTMENT_EFFECTS 3
@@ -1158,23 +1193,19 @@ struct ItemLimitCategoryEntry
struct ItemRandomPropertiesEntry struct ItemRandomPropertiesEntry
{ {
uint32 ID; // 0 m_ID uint32 ID; // 0 m_ID
//char* internalName // 1 m_Name //DBCString internalName // 1 m_Name
uint32 enchant_id[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 2-4 m_Enchantment uint32 enchant_id[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 2-4 m_Enchantment
// 5-6 unused // 5-6 unused
char* nameSuffix[16]; // 7-22 m_name_lang DBCString nameSuffix; // 7 m_name_lang
// 23 name flags
}; };
struct ItemRandomSuffixEntry struct ItemRandomSuffixEntry
{ {
uint32 ID; // 0 m_ID uint32 ID; // 0 m_ID
char* nameSuffix[16]; // 1-16 m_name_lang DBCString nameSuffix; // 1 m_name_lang
// 17, name flags // 2 m_internalName
// 18 m_internalName uint32 enchant_id[5]; // 3-7 m_enchantment
uint32 enchant_id[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 19-21 m_enchantment uint32 prefix[5]; // 8-12 m_allocationPct
//uint32 unk1[2] // 22-23 unknown
uint32 prefix[MAX_ITEM_ENCHANTMENT_EFFECTS]; // 24-26 m_allocationPct
//uint32 unk2[2] // 27-28 unknown
}; };
#define MAX_ITEM_SET_ITEMS 10 #define MAX_ITEM_SET_ITEMS 10
@@ -1183,20 +1214,18 @@ struct ItemRandomSuffixEntry
struct ItemSetEntry struct ItemSetEntry
{ {
//uint32 id // 0 m_ID //uint32 id // 0 m_ID
char* name[16]; // 1-16 m_name_lang DBCString name; // 1 m_name_lang
// 17 string flags, unused uint32 itemId[MAX_ITEM_SET_ITEMS]; // 2-18 m_itemID
uint32 itemId[MAX_ITEM_SET_ITEMS]; // 18-27 m_itemID uint32 spells[MAX_ITEM_SET_SPELLS]; // 19-26 m_setSpellID
//uint32 unknown[7]; // 28-34 unk, all 0 uint32 items_to_triggerspell[MAX_ITEM_SET_SPELLS]; // 27-34 m_setThreshold
uint32 spells[MAX_ITEM_SET_SPELLS]; // 35-42 m_setSpellID uint32 required_skill_id; // 35 m_requiredSkill
uint32 items_to_triggerspell[MAX_ITEM_SET_SPELLS]; // 43-50 m_setThreshold uint32 required_skill_value; // 36 m_requiredSkillRank
uint32 required_skill_id; // 51 m_requiredSkill
uint32 required_skill_value; // 52 m_requiredSkillRank
}; };
struct LFGDungeonEntry struct LFGDungeonEntry
{ {
uint32 ID; // 0 uint32 ID; // 0
//char* name[16]; // 1-17 Name lang //DBCString name[16]; // 1-17 Name lang
uint32 minlevel; // 18 uint32 minlevel; // 18
uint32 maxlevel; // 19 uint32 maxlevel; // 19
uint32 reclevel; // 20 uint32 reclevel; // 20
@@ -1204,14 +1233,14 @@ struct LFGDungeonEntry
uint32 recmaxlevel; // 22 uint32 recmaxlevel; // 22
int32 map; // 23 int32 map; // 23
uint32 difficulty; // 24 uint32 difficulty; // 24
//uint32 flags; // 25 //uint32 unk; // 25
uint32 type; // 26 uint32 type; // 26
//uint32 unk; // 27 //uint32 unk2; // 27
//char* iconname; // 28 //DBCString unk3; // 28
uint32 expansion; // 29 uint32 expansion; // 29
//uint32 unk4; // 30 //uint32 unk4; // 30
uint32 grouptype; // 31 uint32 grouptype; // 31
//char* desc[16]; // 32-47 Description //DBCString desc; // 32-47 Description
// Helpers // Helpers
uint32 Entry() const { return ID + (type << 24); } uint32 Entry() const { return ID + (type << 24); }
}; };
@@ -1249,37 +1278,42 @@ struct LockEntry
//uint32 Action[MAX_LOCK_CASE]; // 25-32 m_Action //uint32 Action[MAX_LOCK_CASE]; // 25-32 m_Action
}; };
struct PhaseEntry
{
uint32 ID; // 0
DBCString Name; // 1
uint32 phaseShift; // 2
};
struct MailTemplateEntry struct MailTemplateEntry
{ {
uint32 ID; // 0 uint32 ID; // 0
//char* subject[16]; // 1-16 //DBCString subject; // 1 m_subject_lang
// 17 name flags, unused DBCString content; // 2 m_body_lang
char* content[16]; // 18-33
}; };
struct MapEntry struct MapEntry
{ {
uint32 MapID; // 0 uint32 MapID; // 0
//char* internalname; // 1 unused //DBCString internalname; // 1 unused
uint32 map_type; // 2 uint32 map_type; // 2
//uint32 unk_330; // 3 //uint32 unk_330; // 3
// 4 0 or 1 for battlegrounds (not arenas) //uint32 unk4; // 4 4.0.1
char* name[16]; // 5-20 //uint32 isPvP; // 5 m_PVP 0 or 1 for battlegrounds (not arenas)
// 21 name flags, unused DBCString name; // 6 m_MapName_lang
uint32 linked_zone; // 22 common zone for instance and continent map uint32 linked_zone; // 7 m_areaTableID
//char* hordeIntro[16]; // 23-38 text for PvP Zones //DBCString hordeIntro; // 8 m_MapDescription0_lang
// 39 intro text flags //DBCString allianceIntro; // 9 m_MapDescription1_lang
//char* allianceIntro[16]; // 40-55 text for PvP Zones uint32 multimap_id; // 10 m_LoadingScreenID (LoadingScreens.dbc)
// 56 intro text flags //float BattlefieldMapIconScale; // 11 m_minimapIconScale
uint32 multimap_id; // 57 int32 entrance_map; // 12 m_corpseMapID map_id of entrance map in ghost mode (continent always and in most cases = normal entrance)
// 58 float entrance_x; // 13 m_corpseX entrance x coordinate in ghost mode (in most cases = normal entrance)
int32 entrance_map; // 59 map_id of entrance map float entrance_y; // 14 m_corpseY entrance y coordinate in ghost mode (in most cases = normal entrance)
float entrance_x; // 60 entrance x coordinate (if exist single entry) //uint32 timeOfDayOverride; // 15 m_timeOfDayOverride
float entrance_y; // 61 entrance y coordinate (if exist single entry) uint32 addon; // 16 m_expansionID
// 62 -1, 0 and 720 uint32 unk_time; // 17 m_raidOffset
uint32 addon; // 63 (0-original maps, 1-tbc addon) //uint32 maxPlayers; // 18 m_maxPlayers
uint32 unk_time; // 64 some kind of time? //uint32 unk400; // 19 new 4.0.0, mapid, related to phasing
//uint32 maxPlayers; // 65 max players
// Helpers // Helpers
uint32 Expansion() const { return addon; } uint32 Expansion() const { return addon; }
@@ -1313,18 +1347,18 @@ struct MapDifficultyEntry
//uint32 Id; // 0 //uint32 Id; // 0
uint32 MapId; // 1 uint32 MapId; // 1
uint32 Difficulty; // 2 (for arenas: arena slot) uint32 Difficulty; // 2 (for arenas: arena slot)
char* areaTriggerText; // 3-18 text showed when transfer to map failed (missing requirements) DBCString areaTriggerText; // 3 m_message_lang (text showed when transfer to map failed)
//uint32 textFlags; // 19 uint32 resetTime; // 4, m_raidDuration in secs, 0 if no fixed reset time
uint32 resetTime; // 20 uint32 maxPlayers; // 5, m_maxPlayers some heroic versions have 0 when expected same amount as in normal version
uint32 maxPlayers; // 21 //DBCString difficultyString; // 6 m_difficultystring
//char* difficultyString; // 22
}; };
struct MovieEntry struct MovieEntry
{ {
uint32 Id; // 0 index uint32 Id; // 0 index
//char* filename; // 1 //DBCString filename; // 1
//uint32 unk2; // 2 always 100 //uint32 unk1; // 2 m_volume
//uint32 unk2; // 3 4.0.0
}; };
#define MAX_OVERRIDE_SPELL 10 #define MAX_OVERRIDE_SPELL 10
@@ -1334,6 +1368,7 @@ struct OverrideSpellDataEntry
uint32 id; // 0 uint32 id; // 0
uint32 spellId[MAX_OVERRIDE_SPELL]; // 1-10 uint32 spellId[MAX_OVERRIDE_SPELL]; // 1-10
//uint32 unk0; // 11 //uint32 unk0; // 11
//uint32 unk3; // 12 possibly flag
}; };
struct PvPDifficultyEntry struct PvPDifficultyEntry
@@ -1352,8 +1387,7 @@ struct PvPDifficultyEntry
struct QuestSortEntry struct QuestSortEntry
{ {
uint32 id; // 0 m_ID uint32 id; // 0 m_ID
//char* name[16]; // 1-16 m_SortName_lang //DBCString name; // 1 m_SortName_lang
// 17 name flags
}; };
struct QuestXPEntry struct QuestXPEntry
@@ -1382,32 +1416,38 @@ struct ScalingStatDistributionEntry
uint32 Id; // 0 uint32 Id; // 0
int32 StatMod[10]; // 1-10 int32 StatMod[10]; // 1-10
uint32 Modifier[10]; // 11-20 uint32 Modifier[10]; // 11-20
uint32 MaxLevel; // 21 //uint32 unk1; // 21
uint32 MaxLevel; // 22 m_maxlevel
}; };
struct ScalingStatValuesEntry struct ScalingStatValuesEntry
{ {
uint32 Id; // 0 uint32 Id; // 0
uint32 Level; // 1 uint32 Level; // 1
uint32 ssdMultiplier[4]; // 2-5 Multiplier for ScalingStatDistribution uint32 dpsMod[6]; // 2-7 DPS mod for level
uint32 armorMod[4]; // 6-9 Armor for level uint32 spellBonus; // 8 spell power for level
uint32 dpsMod[6]; // 10-15 DPS mod for level uint32 ssdMultiplier[5]; // 9-13 Multiplier for ScalingStatDistribution
uint32 spellBonus; // 16 spell power for level uint32 armorMod[4]; // 14-17 Armor for level
uint32 ssdMultiplier2; // 17 there's data from 3.1 dbc ssdMultiplier[3] uint32 armorMod2[4]; // 18-21 Armor for level
uint32 ssdMultiplier3; // 18 3.3 //uint32 trash[24]; // 22-45
//uint32 unk2; // 19 unk, probably also Armor for level (flag 0x80000?) //uint32 unk2; // 46 unk, probably also Armor for level (flag 0x80000?)
uint32 armorMod2[4]; // 20-23 Armor for level
uint32 getssdMultiplier(uint32 mask) const uint32 getssdMultiplier(uint32 mask) const
{ {
if (mask & 0x4001F) if (mask & 0x4001F)
{ {
if (mask & 0x00000001) return ssdMultiplier[0]; if (mask & 0x00000001)
if (mask & 0x00000002) return ssdMultiplier[1]; return ssdMultiplier[1];
if (mask & 0x00000004) return ssdMultiplier[2]; if (mask & 0x00000002)
if (mask & 0x00000008) return ssdMultiplier2; return ssdMultiplier[2]; // 0 and 1 were duplicated
if (mask & 0x00000010) return ssdMultiplier[3]; if (mask & 0x00000004)
if (mask & 0x00040000) return ssdMultiplier3; return ssdMultiplier[3];
if (mask & 0x00000008)
return ssdMultiplier[0];
if (mask & 0x00000010)
return ssdMultiplier[4];
if (mask & 0x00040000)
return ssdMultiplier[2]; // 4.0.0
} }
return 0; return 0;
} }
@@ -1416,15 +1456,23 @@ struct ScalingStatValuesEntry
{ {
if (mask & 0x00F001E0) if (mask & 0x00F001E0)
{ {
if (mask & 0x00000020) return armorMod[0]; if (mask & 0x00000020)
if (mask & 0x00000040) return armorMod[1]; return armorMod[0];
if (mask & 0x00000080) return armorMod[2]; if (mask & 0x00000040)
if (mask & 0x00000100) return armorMod[3]; return armorMod[1];
if (mask & 0x00000080)
return armorMod[2];
if (mask & 0x00000100)
return armorMod[3];
if (mask & 0x00100000) return armorMod2[0]; // cloth if (mask & 0x00100000)
if (mask & 0x00200000) return armorMod2[1]; // leather return armorMod2[0]; // cloth
if (mask & 0x00400000) return armorMod2[2]; // mail if (mask & 0x00200000)
if (mask & 0x00800000) return armorMod2[3]; // plate return armorMod2[1]; // leather
if (mask & 0x00400000)
return armorMod2[2]; // mail
if (mask & 0x00800000)
return armorMod2[3]; // plate
} }
return 0; return 0;
} }
@@ -1432,23 +1480,31 @@ struct ScalingStatValuesEntry
{ {
if (mask&0x7E00) if (mask&0x7E00)
{ {
if (mask & 0x00000200) return dpsMod[0]; if (mask & 0x00000200)
if (mask & 0x00000400) return dpsMod[1]; return dpsMod[0];
if (mask & 0x00000800) return dpsMod[2]; if (mask & 0x00000400)
if (mask & 0x00001000) return dpsMod[3]; return dpsMod[1];
if (mask & 0x00002000) return dpsMod[4]; if (mask & 0x00000800)
if (mask & 0x00004000) return dpsMod[5]; // not used? return dpsMod[2];
if (mask & 0x00001000)
return dpsMod[3];
if (mask & 0x00002000)
return dpsMod[4];
if (mask & 0x00004000)
return dpsMod[5]; // not used?
} }
return 0; return 0;
} }
uint32 getSpellBonus(uint32 mask) const uint32 getSpellBonus(uint32 mask) const
{ {
if (mask & 0x00008000) return spellBonus; if (mask & 0x00008000)
return spellBonus;
return 0; return 0;
} }
uint32 getFeralBonus(uint32 mask) const // removed in 3.2.x? uint32 getFeralBonus(uint32 mask) const // removed in 3.2.x?
{ {
if (mask & 0x00010000) return 0; // not used? if (mask & 0x00010000)
return 0; // not used?
return 0; return 0;
} }
}; };
@@ -1482,14 +1538,11 @@ struct SkillLineEntry
uint32 id; // 0 m_ID uint32 id; // 0 m_ID
int32 categoryId; // 1 m_categoryID int32 categoryId; // 1 m_categoryID
//uint32 skillCostID; // 2 m_skillCostsID //uint32 skillCostID; // 2 m_skillCostsID
char* name[16]; // 3-18 m_displayName_lang DBCString name; // 3 m_displayName_lang
// 19 string flags //DBCString description; // 4 m_description_lang
//char* description[16]; // 20-35 m_description_lang uint32 spellIcon; // 5 m_spellIconID
// 36 string flags //DBCString alternateVerb; // 6 m_alternateVerb_lang
uint32 spellIcon; // 37 m_spellIconID uint32 canLink; // 7 m_canLink (prof. with recipes)
//char* alternateVerb[16]; // 38-53 m_alternateVerb_lang
// 54 string flags
uint32 canLink; // 55 m_canLink (prof. with recipes
}; };
struct SkillLineAbilityEntry struct SkillLineAbilityEntry
@@ -1506,23 +1559,28 @@ struct SkillLineAbilityEntry
uint32 learnOnGetSkill; // 9 m_acquireMethod uint32 learnOnGetSkill; // 9 m_acquireMethod
uint32 max_value; // 10 m_trivialSkillLineRankHigh uint32 max_value; // 10 m_trivialSkillLineRankHigh
uint32 min_value; // 11 m_trivialSkillLineRankLow uint32 min_value; // 11 m_trivialSkillLineRankLow
//uint32 characterPoints[2]; // 12-13 m_characterPoints[2] //uint32 // 12
//uint32 // 13 4.0.0
}; };
struct SoundEntriesEntry struct SoundEntriesEntry
{ {
uint32 Id; // 0 m_ID uint32 Id; // 0 m_ID
//uint32 Type; // 1 m_soundType //uint32 Type; // 1 m_soundType
//char* InternalName; // 2 m_name //DBCString InternalName; // 2 m_name
//char* FileName[10]; // 3-12 m_File[10] //DBCString FileName[10]; // 3-12 m_File[10]
//uint32 Unk13[10]; // 13-22 m_Freq[10] //uint32 Unk13[10]; // 13-22 m_Freq[10]
//char* Path; // 23 m_DirectoryBase //DBCString Path; // 23 m_DirectoryBase
// 24 m_volumeFloat // 24 m_volumeFloat
// 25 m_flags // 25 m_flags
// 26 m_minDistance // 26 m_minDistance
// 27 m_distanceCutoff // 27 m_distanceCutoff
// 28 m_EAXDef // 28 m_EAXDef
// 29 new in 3.1 // 29 m_soundEntriesAdvancedID, new in 3.1
//unk // 30 4.0.0
//unk // 31 4.0.0
//unk // 32 4.0.0
//unk // 33 4.0.0
}; };
#define MAX_SPELL_EFFECTS 3 #define MAX_SPELL_EFFECTS 3
@@ -1782,27 +1840,27 @@ struct TalentEntry
uint32 Row; // 2 uint32 Row; // 2
uint32 Col; // 3 uint32 Col; // 3
uint32 RankID[MAX_TALENT_RANK]; // 4-8 uint32 RankID[MAX_TALENT_RANK]; // 4-8
// 9-12 not used, always 0, maybe not used high ranks uint32 DependsOn; // 9 m_prereqTalent (Talent.dbc)
uint32 DependsOn; // 13 index in Talent.dbc (TalentEntry) // 10-11 part of prev field
// 14-15 not used uint32 DependsOnRank; // 12 m_prereqRank
uint32 DependsOnRank; // 16 // 13-14 part of prev field
// 17-18 not used //uint32 needAddInSpellBook; // 15 m_flags also need disable higest ranks on reset talent tree
//uint32 needAddInSpellBook; // 19 also need disable higest ranks on reset talent tree //uint32 unk2; // 16 m_requiredSpellID
//uint32 unk2; // 20, all 0 //uint64 allowForPet; // 17 m_categoryMask its a 64 bit mask for pet 1<<m_categoryEnumID in CreatureFamily.dbc
//uint64 allowForPet; // 21 its a 64 bit mask for pet 1<<m_categoryEnumID in CreatureFamily.dbc
}; };
struct TalentTabEntry struct TalentTabEntry
{ {
uint32 TalentTabID; // 0 uint32 TalentTabID; // 0
//char* name[16]; // 1-16, unused //DBCString name; // 1 m_name_lang
//uint32 nameFlags; // 17, unused //unit32 spellicon; // 2 m_spellIconID
//unit32 spellicon; // 18 uint32 ClassMask; // 3 m_classMask
// 19 not used uint32 petTalentMask; // 4 m_petTalentMask
uint32 ClassMask; // 20 uint32 tabpage; // 5 m_orderIndex
uint32 petTalentMask; // 21 //DBCString internalname; // 6 m_backgroundFile
uint32 tabpage; // 22 //DBCString description; // 7
//char* internalname; // 23 //uint32 rolesMask; // 8 4.0.0
//uint32 spellIds[2]; // 9-10 passive mastery bonus spells?
}; };
struct TaxiNodesEntry struct TaxiNodesEntry
@@ -1812,9 +1870,8 @@ struct TaxiNodesEntry
float x; // 2 m_x float x; // 2 m_x
float y; // 3 m_y float y; // 3 m_y
float z; // 4 m_z float z; // 4 m_z
char* name[16]; // 5-21 m_Name_lang DBCString name; // 5 m_Name_lang
// 22 string flags uint32 MountCreatureID[2]; // 6-7 m_MountCreatureID[2]
uint32 MountCreatureID[2]; // 23-24 m_MountCreatureID[2]
}; };
struct TaxiPathEntry struct TaxiPathEntry
@@ -1849,10 +1906,9 @@ struct TeamContributionPointsEntry
struct TotemCategoryEntry struct TotemCategoryEntry
{ {
uint32 ID; // 0 uint32 ID; // 0
//char* name[16]; // 1-16 //DBCString name; // 1 m_name_lang
// 17 string flags, unused uint32 categoryType; // 2 m_totemCategoryType (one for specialization)
uint32 categoryType; // 18 (one for specialization) uint32 categoryMask; // 3 m_totemCategoryMask (compatibility mask for same type: different for totems, compatible from high to low for rods)
uint32 categoryMask; // 19 (compatibility mask for same type: different for totems, compatible from high to low for rods)
}; };
#define MAX_VEHICLE_SEATS 8 #define MAX_VEHICLE_SEATS 8
@@ -1882,9 +1938,9 @@ struct VehicleEntry
float m_msslTrgtArcRepeat; // 25 float m_msslTrgtArcRepeat; // 25
float m_msslTrgtArcWidth; // 26 float m_msslTrgtArcWidth; // 26
float m_msslTrgtImpactRadius[2]; // 27-28 float m_msslTrgtImpactRadius[2]; // 27-28
char* m_msslTrgtArcTexture; // 29 DBCString m_msslTrgtArcTexture; // 29
char* m_msslTrgtImpactTexture; // 30 DBCString m_msslTrgtImpactTexture; // 30
char* m_msslTrgtImpactModel[2]; // 31-32 DBCString m_msslTrgtImpactModel[2]; // 31-32
float m_cameraYawOffset; // 33 float m_cameraYawOffset; // 33
uint32 m_uiLocomotionType; // 34 uint32 m_uiLocomotionType; // 34
float m_msslTrgtImpactTexRadius; // 35 float m_msslTrgtImpactTexRadius; // 35
@@ -1964,8 +2020,10 @@ struct WMOAreaTableEntry
//uint32 field8; //uint32 field8;
uint32 Flags; // 9 used for indoor/outdoor determination uint32 Flags; // 9 used for indoor/outdoor determination
uint32 areaId; // 10 link to AreaTableEntry.ID uint32 areaId; // 10 link to AreaTableEntry.ID
//char *Name[16]; //char *Name; // 11 m_AreaName_lang
//uint32 nameFlags; //uint32 field12; // 12
//uint32 field13; // 13
//uint32 field14; // 14
}; };
struct WorldMapAreaEntry struct WorldMapAreaEntry
@@ -1973,7 +2031,7 @@ struct WorldMapAreaEntry
//uint32 ID; // 0 //uint32 ID; // 0
uint32 map_id; // 1 uint32 map_id; // 1
uint32 area_id; // 2 index (continent 0 areas ignored) uint32 area_id; // 2 index (continent 0 areas ignored)
//char* internal_name // 3 //DBCString internal_name // 3
float y1; // 4 float y1; // 4
float y2; // 5 float y2; // 5
float x1; // 6 float x1; // 6
@@ -1990,9 +2048,15 @@ struct WorldMapOverlayEntry
uint32 ID; // 0 uint32 ID; // 0
//uint32 worldMapAreaId; // 1 idx in WorldMapArea.dbc //uint32 worldMapAreaId; // 1 idx in WorldMapArea.dbc
uint32 areatableID[MAX_WORLD_MAP_OVERLAY_AREA_IDX]; // 2-5 uint32 areatableID[MAX_WORLD_MAP_OVERLAY_AREA_IDX]; // 2-5
// 6-7 always 0, possible part of areatableID[] //DBCString internal_name // 6 m_textureName
//char* internal_name // 8 // 7 m_textureWidth
// 9-16 some ints // 8 m_textureHeight
// 9 m_offsetX
// 10 m_offsetY
// 11 m_hitRectTop
// 12 m_hitRectLeft
// 13 m_hitRectBottom
// 14 m_hitRectRight
}; };
struct WorldSafeLocsEntry struct WorldSafeLocsEntry
@@ -2002,8 +2066,7 @@ struct WorldSafeLocsEntry
float x; // 2 float x; // 2
float y; // 3 float y; // 3
float z; // 4 float z; // 4
//char* name[16] // 5-20 name, unused //DBCString name; // 5 m_AreaName_lang
// 21 name flags, unused
}; };
/* /*
+50 -42
View File
@@ -38,64 +38,72 @@ const char ChatChannelsEntryfmt[]="nixsx";
const char ChrClassesEntryfmt[]="nixsxxxixiixxx"; const char ChrClassesEntryfmt[]="nixsxxxixiixxx";
const char ChrRacesEntryfmt[]="nxixiixixxxxixsxxxxxixxx"; const char ChrRacesEntryfmt[]="nxixiixixxxxixsxxxxxixxx";
const char ChrClassesXPowerTypesfmt[]="nii";
const char CinematicSequencesEntryfmt[]="nxxxxxxxxx"; const char CinematicSequencesEntryfmt[]="nxxxxxxxxx";
const char CreatureDisplayInfofmt[]="nxxxfxxxxxxxxxxx"; const char CreatureDisplayInfofmt[]="nxxxfxxxxxxxxxxxx";
const char CreatureFamilyfmt[]="nfifiiiiixssssssssssssssssxx"; const char CreatureFamilyfmt[]="nfifiiiiixsx";
const char CreatureSpellDatafmt[]="niiiixxxx"; const char CreatureSpellDatafmt[]="niiiixxxx";
const char CreatureTypefmt[]="nxxxxxxxxxxxxxxxxxx"; const char CreatureTypefmt[]="nxx";
const char CurrencyTypesfmt[]="nxxxxxxiixx";//14545 const char CurrencyTypesfmt[]="nxxxxxxiixx";
const char DestructibleModelDatafmt[]="nxxixxxixxxixxxixxx";
const char DungeonEncounterfmt[]="niixissssssssssssssssxx"; const char DestructibleModelDatafmt[]="ixxixxxixxxixxxixxxxxxxx";
const char DungeonEncounterfmt[]="iiixisxx";
const char DurabilityCostsfmt[]="niiiiiiiiiiiiiiiiiiiiiiiiiiiii"; const char DurabilityCostsfmt[]="niiiiiiiiiiiiiiiiiiiiiiiiiiiii";
const char DurabilityQualityfmt[]="nf"; const char DurabilityQualityfmt[]="nf";
const char EmotesEntryfmt[]="nxxiiix"; const char EmotesEntryfmt[]="nxxiiixx";
const char EmotesTextEntryfmt[]="nxixxxxxxxxxxxxxxxx"; const char EmotesTextEntryfmt[]="nxixxxxxxxxxxxxxxxx";
const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiiffixssssssssssssssssxxxxxxxxxxxxxxxxxx"; const char FactionEntryfmt[]="niiiiiiiiiiiiiiiiiiffixsxx";
const char FactionTemplateEntryfmt[]="niiiiiiiiiiiii"; const char FactionTemplateEntryfmt[]="niiiiiiiiiiiii";
const char GameObjectDisplayInfofmt[]="nxxxxxxxxxxxffffffx"; const char GameObjectDisplayInfofmt[]="nxxxxxxxxxxxffffffxxx";
const char GemPropertiesEntryfmt[]="nixxi";
const char GemPropertiesEntryfmt[]="nixxix";
const char GlyphPropertiesfmt[]="niii"; const char GlyphPropertiesfmt[]="niii";
const char GlyphSlotfmt[]="nii"; const char GlyphSlotfmt[]="nii";
const char GtBarberShopCostBasefmt[]="f";
const char GtCombatRatingsfmt[]="f"; const char GtBarberShopCostBasefmt[]="xf";
const char GtChanceToMeleeCritBasefmt[]="f"; const char GtCombatRatingsfmt[]="xf";
const char GtChanceToMeleeCritfmt[]="f"; const char GtOCTHpPerStaminafmt[]="xf";
const char GtChanceToSpellCritBasefmt[]="f"; const char GtChanceToMeleeCritBasefmt[]="xf";
const char GtChanceToSpellCritfmt[]="f"; const char GtChanceToMeleeCritfmt[]="xf";
const char GtChanceToSpellCritBasefmt[]="xf";
const char GtChanceToSpellCritfmt[]="xf";
const char GtOCTClassCombatRatingScalarfmt[]="df"; const char GtOCTClassCombatRatingScalarfmt[]="df";
const char GtOCTRegenHPfmt[]="f"; const char GtOCTRegenHPfmt[]="f";
//const char GtOCTRegenMPfmt[]="f"; //const char GtOCTRegenMPfmt[]="f";
const char GtRegenHPPerSptfmt[]="f"; const char GtRegenHPPerSptfmt[]="f";
const char GtRegenMPPerSptfmt[]="f"; const char GtRegenMPPerSptfmt[]="xf";
const char Holidaysfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char Holidaysfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const char Itemfmt[]="niiiiiii"; const char Itemfmt[]="niiiiiii";
const char ItemBagFamilyfmt[]="nxxxxxxxxxxxxxxxxx"; const char ItemBagFamilyfmt[]="nx";
const char ItemClassfmt[]="dixxx";
//const char ItemDisplayTemplateEntryfmt[]="nxxxxxxxxxxixxxxxxxxxxx"; //const char ItemDisplayTemplateEntryfmt[]="nxxxxxxxxxxixxxxxxxxxxx";
//const char ItemCondExtCostsEntryfmt[]="xiii"; //const char ItemCondExtCostsEntryfmt[]="xiii";
const char ItemExtendedCostEntryfmt[]="niiiiiiiiiiiiiix"; const char ItemExtendedCostEntryfmt[]="niiiiiiiiiiiiiix";
const char ItemLimitCategoryEntryfmt[]="nxxxxxxxxxxxxxxxxxii"; const char ItemLimitCategoryEntryfmt[]="nxii";
const char ItemRandomPropertiesfmt[]="nxiiixxssssssssssssssssx"; const char ItemRandomPropertiesfmt[]="nxiiixxs";
const char ItemRandomSuffixfmt[]="nssssssssssssssssxxiiixxiiixx"; const char ItemRandomSuffixfmt[]="nsxiiiiiiiiii";
const char ItemSetEntryfmt[]="dssssssssssssssssxiiiiiiiiiixxxxxxxiiiiiiiiiiiiiiiiii"; const char ItemSetEntryfmt[]="dsiiiiiiiiiixxxxxxxiiiiiiiiiiiiiiiiii";
const char LFGDungeonEntryfmt[]="nxxxxxxxxxxxxxxxxxiiiiiiixixxixixxxxxxxxxxxxxxxxx"; const char LFGDungeonEntryfmt[]="nxiiiiiiixixxixixx";
//const char LiquidTypeEntryfmt[]="nsiiiiffffifiiisssssiiffffffffffffffffffiiii"; //const char LiquidTypeEntryfmt[]="nsiiiiffffifiiisssssiiffffffffffffffffffiiii";
const char LockEntryfmt[]="niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx"; const char LockEntryfmt[]="niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx";
const char MailTemplateEntryfmt[]="nxxxxxxxxxxxxxxxxxssssssssssssssssx"; const char PhaseEntryfmt[]="nsi";
const char MapEntryfmt[]="nxixxssssssssssssssssxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxixiffxiix"; const char MailTemplateEntryfmt[]="nxs";
const char MapDifficultyEntryfmt[]="diisxxxxxxxxxxxxxxxxiix"; const char MapEntryfmt[]="nxixxxsixxixiffxiixx";
const char MovieEntryfmt[]="nxx"; const char MapDifficultyEntryfmt[]="diisiix";
const char OverrideSpellDatafmt[]="niiiiiiiiiix"; const char MovieEntryfmt[]="nxxx";
const char QuestSortEntryfmt[]="nxxxxxxxxxxxxxxxxx"; const char OverrideSpellDatafmt[]="niiiiiiiiiixx";
const char QuestSortEntryfmt[]="nx";
const char QuestXPfmt[]="niiiiiiiiii"; const char QuestXPfmt[]="niiiiiiiiii";
const char QuestFactionRewardfmt[]="niiiiiiiiii"; const char QuestFactionRewardfmt[]="niiiiiiiiii";
const char PvPDifficultyfmt[]="diiiii"; const char PvPDifficultyfmt[]="diiiii";
const char RandomPropertiesPointsfmt[]="niiiiiiiiiiiiiii"; const char RandomPropertiesPointsfmt[]="niiiiiiiiiiiiiii";
const char ScalingStatDistributionfmt[]="niiiiiiiiiiiiiiiiiiiii"; const char ScalingStatDistributionfmt[]="niiiiiiiiiiiiiiiiiiiixi";
const char ScalingStatValuesfmt[]="iniiiiiiiiiiiiiiiiixiiii"; const char ScalingStatValuesfmt[]="iniiiiiiiiiiiiiiiiiiiixxxxxxxxxxxxxxxxxxxxxxxxx";
const char SkillLinefmt[]="nixssssssssssssssssxxxxxxxxxxxxxxxxxxixxxxxxxxxxxxxxxxxi"; const char SkillLinefmt[]="nisxixi";
const char SkillLineAbilityfmt[]="niiiixxiiiiixx"; const char SkillLineAbilityfmt[]="niiiixxiiiiixx";
const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const char SoundEntriesfmt[]="nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const char SpellCastTimefmt[]="nixx"; const char SpellCastTimefmt[]="nixx";
const char SpellDifficultyfmt[]="niiii"; const char SpellDifficultyfmt[]="niiii";
const std::string CustomSpellDifficultyfmt="ppppp"; const std::string CustomSpellDifficultyfmt="ppppp";
@@ -113,18 +121,18 @@ const char SpellRuneCostfmt[]="niiii";
const char SpellShapeshiftfmt[]="nxxxxxxxxxxxxxxxxxxiixiiixxiiiiiiii"; const char SpellShapeshiftfmt[]="nxxxxxxxxxxxxxxxxxxiixiiixxiiiiiiii";
const char StableSlotPricesfmt[] = "ni"; const char StableSlotPricesfmt[] = "ni";
const char SummonPropertiesfmt[] = "niiiii"; const char SummonPropertiesfmt[] = "niiiii";
const char TalentEntryfmt[]="niiiiiiiixxxxixxixxxxxx"; const char TalentEntryfmt[]="niiiiiiiiixxixxxxxx";
const char TalentTabEntryfmt[]="nxxxxxxxxxxxxxxxxxxxiiix"; const char TalentTabEntryfmt[]="nxxiiixxxxx";
const char TaxiNodesEntryfmt[]="nifffssssssssssssssssxii"; const char TaxiNodesEntryfmt[]="nifffsiixxx";
const char TaxiPathEntryfmt[]="niii"; const char TaxiPathEntryfmt[]="niii";
const char TaxiPathNodeEntryfmt[]="diiifffiiii"; const char TaxiPathNodeEntryfmt[]="diiifffiiii";
const char TeamContributionPointsfmt[]="df"; const char TeamContributionPointsfmt[]="df";
const char TotemCategoryEntryfmt[]="nxxxxxxxxxxxxxxxxxii"; const char TotemCategoryEntryfmt[]="nxii";
const char VehicleEntryfmt[]="niffffiiiiiiiifffffffffffffffssssfifiixx"; const char VehicleEntryfmt[]="niffffiiiiiiiifffffffffffffffssssfifiixx";
const char VehicleSeatEntryfmt[]="niiffffffffffiiiiiifffffffiiifffiiiiiiiffiiiiixxxxxxxxxxxx"; const char VehicleSeatEntryfmt[]="niiffffffffffiiiiiifffffffiiifffiiiiiiiffiiiiixxxxxxxxxxxxxxxxxxxx";
const char WMOAreaTableEntryfmt[]="niiixxxxxiixxxxxxxxxxxxxxxxx"; const char WMOAreaTableEntryfmt[]="niiixxxxxiixxxx";
const char WorldMapAreaEntryfmt[]="xinxffffixx"; const char WorldMapAreaEntryfmt[]="xinxffffixxx";
const char WorldMapOverlayEntryfmt[]="nxiiiixxxxxxxxxxx"; const char WorldMapOverlayEntryfmt[]="nxiiiixxxxxxxxx";
const char WorldSafeLocsEntryfmt[]="nifffxxxxxxxxxxxxxxxxx"; const char WorldSafeLocsEntryfmt[]="nifffx";
#endif #endif
+1 -6
View File
@@ -5909,18 +5909,13 @@ float Player::OCTRegenHPPerSpirit()
if (level > GT_MAX_LEVEL) if (level > GT_MAX_LEVEL)
level = GT_MAX_LEVEL; level = GT_MAX_LEVEL;
GtOCTRegenHPEntry const* baseRatio = sGtOCTRegenHPStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
GtRegenHPPerSptEntry const* moreRatio = sGtRegenHPPerSptStore.LookupEntry((pclass-1)*GT_MAX_LEVEL + level-1);
if (baseRatio == NULL || moreRatio == NULL)
return 0.0f;
// Formula from PaperDollFrame script // Formula from PaperDollFrame script
float spirit = GetStat(STAT_SPIRIT); float spirit = GetStat(STAT_SPIRIT);
float baseSpirit = spirit; float baseSpirit = spirit;
if (baseSpirit > 50) if (baseSpirit > 50)
baseSpirit = 50; baseSpirit = 50;
float moreSpirit = spirit - baseSpirit; float moreSpirit = spirit - baseSpirit;
float regen = baseSpirit * baseRatio->ratio + moreSpirit * moreRatio->ratio; float regen = baseSpirit + moreSpirit;
return regen; return regen;
} }
+1 -1
View File
@@ -6712,7 +6712,7 @@ std::string ObjectMgr::GeneratePetName(uint32 entry)
if (list0.empty() || list1.empty()) if (list0.empty() || list1.empty())
{ {
CreatureTemplate const* cinfo = GetCreatureTemplate(entry); CreatureTemplate const* cinfo = GetCreatureTemplate(entry);
char* petname = GetPetName(cinfo->family, sWorld->GetDefaultDbcLocale()); const char* petname = GetPetName(cinfo->family, sWorld->GetDefaultDbcLocale());
if (!petname) if (!petname)
return cinfo->Name; return cinfo->Name;
@@ -753,7 +753,7 @@ void WorldSession::HandleBuyStableSlot(WorldPacket & recv_data)
if (GetPlayer()->m_stableSlots < MAX_PET_STABLES) if (GetPlayer()->m_stableSlots < MAX_PET_STABLES)
{ {
StableSlotPricesEntry const* SlotPrice = sStableSlotPricesStore.LookupEntry(GetPlayer()->m_stableSlots+1); /*StableSlotPricesEntry const* SlotPrice = sStableSlotPricesStore.LookupEntry(GetPlayer()->m_stableSlots+1);
if (_player->HasEnoughMoney(SlotPrice->Price)) if (_player->HasEnoughMoney(SlotPrice->Price))
{ {
++GetPlayer()->m_stableSlots; ++GetPlayer()->m_stableSlots;
@@ -761,7 +761,7 @@ void WorldSession::HandleBuyStableSlot(WorldPacket & recv_data)
SendStableResult(STABLE_SUCCESS_BUY_SLOT); SendStableResult(STABLE_SUCCESS_BUY_SLOT);
} }
else else
SendStableResult(STABLE_ERR_MONEY); SendStableResult(STABLE_ERR_MONEY);*/
} }
else else
SendStableResult(STABLE_ERR_STABLE); SendStableResult(STABLE_ERR_STABLE);
+1 -1
View File
@@ -113,7 +113,7 @@ public:
indexTable = NULL; indexTable = NULL;
delete[] ((char*)m_dataTable); delete[] ((char*)m_dataTable);
m_dataTable = NULL; m_dataTable = NULL;
for (DataTableEx::const_iterator itr = m_dataTableEx.begin(); itr != m_dataTableEx.end(); ++itr) for (typename DataTableEx::const_iterator itr = m_dataTableEx.begin(); itr != m_dataTableEx.end(); ++itr)
delete *itr; delete *itr;
m_dataTableEx.clear(); m_dataTableEx.clear();