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