diff options
29 files changed, 2977 insertions, 1995 deletions
diff --git a/sql/updates/hotfixes/master/2019_06_08_00_hotfixes.sql b/sql/updates/hotfixes/master/2019_06_08_00_hotfixes.sql new file mode 100644 index 00000000000..7a819ef47b0 --- /dev/null +++ b/sql/updates/hotfixes/master/2019_06_08_00_hotfixes.sql @@ -0,0 +1,120 @@ +ALTER TABLE `achievement` ADD COLUMN `RewardItemID` int(11) NOT NULL DEFAULT 0 AFTER `IconFileID`; + +ALTER TABLE `artifact_appearance` ADD COLUMN `UsablePlayerConditionID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `UiCameraID`; + +ALTER TABLE `battle_pet_species_state` MODIFY COLUMN `BattlePetStateID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `broadcast_text` MODIFY COLUMN `ChatBubbleDurationMs` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`; +ALTER TABLE `broadcast_text` MODIFY COLUMN `SoundEntriesID1` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ChatBubbleDurationMs`; +ALTER TABLE `broadcast_text` MODIFY COLUMN `SoundEntriesID2` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `SoundEntriesID1`; +ALTER TABLE `broadcast_text` MODIFY COLUMN `EmoteID1` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `SoundEntriesID2`; + +ALTER TABLE `cfg_regions` ADD COLUMN `ChallengeTimeOffset1` int(11) NOT NULL DEFAULT 0 AFTER `ChallengeOrigin`; +ALTER TABLE `cfg_regions` ADD COLUMN `ChallengeTimeOffset2` int(11) NOT NULL DEFAULT 0 AFTER `ChallengeTimeOffset1`; + +ALTER TABLE `chr_classes` ADD COLUMN `SpellTextureBlobFileDataID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `StartingLevel`; + +ALTER TABLE `chr_races` MODIFY COLUMN `HelmVisFallbackRaceID` int(11) NOT NULL DEFAULT 0 AFTER `MaleSkeletonFileDataID`; +ALTER TABLE `chr_races` MODIFY COLUMN `FactionID` smallint(6) NOT NULL DEFAULT 0 AFTER `HelmVisFallbackRaceID`; +ALTER TABLE `chr_races` MODIFY COLUMN `CinematicSequenceID` smallint(6) NOT NULL DEFAULT 0 AFTER `FactionID`; + +ALTER TABLE `creature_display_info` MODIFY COLUMN `DissolveOutEffectID` int(11) NOT NULL DEFAULT 0 AFTER `Gender`; +ALTER TABLE `creature_display_info` MODIFY COLUMN `CreatureModelMinLod` tinyint(4) NOT NULL DEFAULT 0 AFTER `DissolveOutEffectID`; + +ALTER TABLE `currency_types` ADD COLUMN `ItemGroupSoundsID` int(11) NOT NULL DEFAULT 0 AFTER `FactionID`; + +ALTER TABLE `difficulty` MODIFY COLUMN `Flags` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `MaxPlayers`; + +ALTER TABLE `dungeon_encounter` ADD COLUMN `CompleteWorldStateID` int(11) NOT NULL DEFAULT 0 AFTER `OrderIndex`; +ALTER TABLE `dungeon_encounter` ADD COLUMN `Faction` int(11) NOT NULL DEFAULT 0 AFTER `SpellIconFileID`; + +ALTER TABLE `faction` MODIFY COLUMN `FriendshipRepID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Expansion`; + +ALTER TABLE `heirloom` ADD COLUMN `UpgradeItemID4` int(11) NOT NULL DEFAULT 0 AFTER `UpgradeItemID3`; +ALTER TABLE `heirloom` ADD COLUMN `UpgradeItemBonusListID4` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `UpgradeItemBonusListID3`; + +ALTER TABLE `holidays` ADD COLUMN `Date17` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date16`; +ALTER TABLE `holidays` ADD COLUMN `Date18` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date17`; +ALTER TABLE `holidays` ADD COLUMN `Date19` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date18`; +ALTER TABLE `holidays` ADD COLUMN `Date20` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date19`; +ALTER TABLE `holidays` ADD COLUMN `Date21` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date20`; +ALTER TABLE `holidays` ADD COLUMN `Date22` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date21`; +ALTER TABLE `holidays` ADD COLUMN `Date23` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date22`; +ALTER TABLE `holidays` ADD COLUMN `Date24` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date23`; +ALTER TABLE `holidays` ADD COLUMN `Date25` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date24`; +ALTER TABLE `holidays` ADD COLUMN `Date26` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Date25`; + +ALTER TABLE `item_child_equipment` MODIFY COLUMN `ParentItemID` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `item_level_selector` ADD COLUMN `AzeriteUnlockMappingSet` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemLevelSelectorQualitySetID`; + +DROP TABLE `item_random_properties`; + +DROP TABLE `item_random_properties_locale`; + +DROP TABLE `item_random_suffix`; + +DROP TABLE `item_random_suffix_locale`; + +ALTER TABLE `item_search_name` MODIFY COLUMN `Flags4` int(11) NOT NULL DEFAULT 0 AFTER `Flags3`; + +ALTER TABLE `item_sparse` MODIFY COLUMN `Flags2` int(11) NOT NULL DEFAULT 0 AFTER `Flags1`; +ALTER TABLE `item_sparse` MODIFY COLUMN `Flags3` int(11) NOT NULL DEFAULT 0 AFTER `Flags2`; +ALTER TABLE `item_sparse` MODIFY COLUMN `Flags4` int(11) NOT NULL DEFAULT 0 AFTER `Flags3`; +ALTER TABLE `item_sparse` MODIFY COLUMN `FactionRelated` int(11) NOT NULL DEFAULT 0 AFTER `Flags4`; +ALTER TABLE `item_sparse` MODIFY COLUMN `ItemNameDescriptionID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `FactionRelated`; +ALTER TABLE `item_sparse` MODIFY COLUMN `RequiredTransmogHoliday` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `ItemNameDescriptionID`; +ALTER TABLE `item_sparse` MODIFY COLUMN `RequiredHoliday` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredTransmogHoliday`; +ALTER TABLE `item_sparse` MODIFY COLUMN `LimitCategory` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `RequiredHoliday`; +ALTER TABLE `item_sparse` MODIFY COLUMN `GemProperties` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `LimitCategory`; +ALTER TABLE `item_sparse` MODIFY COLUMN `SocketMatchEnchantmentId` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `GemProperties`; +ALTER TABLE `item_sparse` MODIFY COLUMN `TotemCategoryID` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `SocketMatchEnchantmentId`; +ALTER TABLE `item_sparse` MODIFY COLUMN `InstanceBound` smallint(5) UNSIGNED NOT NULL DEFAULT 0 AFTER `TotemCategoryID`; +ALTER TABLE `item_sparse` DROP COLUMN `ItemRandomSuffixGroupID`; +ALTER TABLE `item_sparse` DROP COLUMN `RandomSelect`; + +ALTER TABLE `liquid_type` MODIFY COLUMN `MinimapStaticCol` int(11) NOT NULL DEFAULT 0 AFTER `MaterialID`; +ALTER TABLE `liquid_type` MODIFY COLUMN `FrameCountTexture1` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `MinimapStaticCol`; +ALTER TABLE `liquid_type` MODIFY COLUMN `FrameCountTexture2` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture1`; +ALTER TABLE `liquid_type` MODIFY COLUMN `FrameCountTexture3` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture2`; +ALTER TABLE `liquid_type` MODIFY COLUMN `FrameCountTexture4` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture3`; +ALTER TABLE `liquid_type` MODIFY COLUMN `FrameCountTexture5` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture4`; +ALTER TABLE `liquid_type` MODIFY COLUMN `FrameCountTexture6` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `FrameCountTexture5`; +ALTER TABLE `liquid_type` MODIFY COLUMN `Color1` int(11) NOT NULL DEFAULT 0 AFTER `FrameCountTexture6`; +ALTER TABLE `liquid_type` MODIFY COLUMN `Color2` int(11) NOT NULL DEFAULT 0 AFTER `Color1`; +ALTER TABLE `liquid_type` MODIFY COLUMN `Float1` float NOT NULL DEFAULT 0 AFTER `Color2`; + +ALTER TABLE `map` ADD COLUMN `WdtFileDataID` int(11) NOT NULL DEFAULT 0 AFTER `ZmpFileDataID`; +ALTER TABLE `map` MODIFY COLUMN `MaxPlayers` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `CorpseMapID`; +ALTER TABLE `map` MODIFY COLUMN `WindSettingsID` smallint(6) NOT NULL DEFAULT 0 AFTER `MaxPlayers`; + +ALTER TABLE `map_difficulty` MODIFY COLUMN `DifficultyID` int(11) NOT NULL DEFAULT 0 AFTER `Message`; +ALTER TABLE `map_difficulty` MODIFY COLUMN `LockID` int(11) NOT NULL DEFAULT 0 AFTER `DifficultyID`; +ALTER TABLE `map_difficulty` MODIFY COLUMN `ResetInterval` tinyint(4) NOT NULL DEFAULT 0 AFTER `LockID`; +ALTER TABLE `map_difficulty` MODIFY COLUMN `MaxPlayers` int(11) NOT NULL DEFAULT 0 AFTER `ResetInterval`; +ALTER TABLE `map_difficulty` MODIFY COLUMN `ItemContext` int(11) NOT NULL DEFAULT 0 AFTER `MaxPlayers`; +ALTER TABLE `map_difficulty` MODIFY COLUMN `ItemContextPickerID` int(11) NOT NULL DEFAULT 0 AFTER `ItemContext`; +ALTER TABLE `map_difficulty` MODIFY COLUMN `Flags` int(11) NOT NULL DEFAULT 0 AFTER `ItemContextPickerID`; +ALTER TABLE `map_difficulty` MODIFY COLUMN `MapID` int(11) NOT NULL DEFAULT 0 AFTER `ContentTuningID`; + +ALTER TABLE `pvp_talent` MODIFY COLUMN `Flags` int(11) NOT NULL DEFAULT 0 AFTER `OverridesSpellID`; +ALTER TABLE `pvp_talent` MODIFY COLUMN `ActionBarSpellID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `scenario` MODIFY COLUMN `UiTextureKitID` int(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `skill_line` MODIFY COLUMN `SpellBookSpellID` int(11) NOT NULL DEFAULT 0 AFTER `Flags`; + +ALTER TABLE `sound_kit` MODIFY COLUMN `SoundType` int(11) NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `spell_misc` MODIFY COLUMN `MinDuration` float NOT NULL DEFAULT 0 AFTER `LaunchDelay`; + +ALTER TABLE `taxi_nodes` ADD COLUMN `MinimapAtlasMemberID` int(11) NOT NULL DEFAULT 0 AFTER `UiTextureKitID`; +ALTER TABLE `taxi_nodes` MODIFY COLUMN `ConditionID` int(11) NOT NULL DEFAULT 0 AFTER `ContinentID`; + +ALTER TABLE `taxi_path_node` MODIFY COLUMN `ArrivalEventID` int(11) NOT NULL DEFAULT 0 AFTER `Delay`; +ALTER TABLE `taxi_path_node` MODIFY COLUMN `DepartureEventID` int(11) NOT NULL DEFAULT 0 AFTER `ArrivalEventID`; + +ALTER TABLE `transmog_set` ADD COLUMN `Unknown810` tinyint(3) UNSIGNED NOT NULL DEFAULT 0 AFTER `ParentTransmogSetID`; +ALTER TABLE `transmog_set` ADD COLUMN `PatchID` int(11) NOT NULL DEFAULT 0 AFTER `ExpansionID`; + +ALTER TABLE `world_effect` MODIFY COLUMN `TargetType` tinyint(4) NOT NULL DEFAULT 0 AFTER `WhenToDisplay`; diff --git a/src/common/DataStores/DB2FileLoader.cpp b/src/common/DataStores/DB2FileLoader.cpp index 47d5a2fc1e0..76aad009683 100644 --- a/src/common/DataStores/DB2FileLoader.cpp +++ b/src/common/DataStores/DB2FileLoader.cpp @@ -35,18 +35,6 @@ enum class DB2ColumnCompression : uint32 #pragma pack(push, 1) -struct DB2SectionHeader -{ - uint64 TactKeyId; - uint32 FileOffset; - uint32 RecordCount; - uint32 StringTableSize; - uint32 CopyTableSize; - uint32 CatalogDataOffset; - uint32 IdTableSize; - uint32 ParentLookupDataSize; -}; - struct DB2FieldEntry { int16 UnusedBits; @@ -116,8 +104,7 @@ struct DB2IndexEntry struct DB2IndexData { - DB2IndexDataInfo Info; - std::unique_ptr<DB2IndexEntry[]> Entries; + std::vector<DB2IndexEntry> Entries; }; DB2FieldMeta::DB2FieldMeta(bool isSigned, DBCFormer type, char const* name) @@ -175,6 +162,7 @@ public: virtual void LoadColumnData(std::unique_ptr<DB2SectionHeader[]> sections, std::unique_ptr<DB2FieldEntry[]> fields, std::unique_ptr<DB2ColumnMeta[]> columnMeta, std::unique_ptr<std::unique_ptr<DB2PalletValue[]>[]> palletValues, std::unique_ptr<std::unique_ptr<DB2PalletValue[]>[]> palletArrayValues, std::unique_ptr<std::unordered_map<uint32, uint32>[]> commonValues) = 0; + virtual void SkipEncryptedSection(uint32 section) = 0; virtual bool LoadTableData(DB2FileSource* source, uint32 section) = 0; virtual bool LoadCatalogData(DB2FileSource* source, uint32 section) = 0; virtual void SetAdditionalData(std::vector<uint32> idTable, std::vector<DB2RecordCopy> copyTable, std::vector<DB2IndexData> parentIndexes) = 0; @@ -192,7 +180,7 @@ public: private: friend class DB2Record; - virtual unsigned char const* GetRawRecordData(uint32 recordNumber) const = 0; + virtual unsigned char const* GetRawRecordData(uint32 recordNumber, uint32 const* section) const = 0; virtual uint32 RecordGetId(uint8 const* record, uint32 recordIndex) const = 0; virtual uint8 RecordGetUInt8(uint8 const* record, uint32 field, uint32 arrayIndex) const = 0; virtual uint16 RecordGetUInt16(uint8 const* record, uint32 field, uint32 arrayIndex) const = 0; @@ -214,6 +202,7 @@ public: void LoadColumnData(std::unique_ptr<DB2SectionHeader[]> sections, std::unique_ptr<DB2FieldEntry[]> fields, std::unique_ptr<DB2ColumnMeta[]> columnMeta, std::unique_ptr<std::unique_ptr<DB2PalletValue[]>[]> palletValues, std::unique_ptr<std::unique_ptr<DB2PalletValue[]>[]> palletArrayValues, std::unique_ptr<std::unordered_map<uint32, uint32>[]> commonValues) override; + void SkipEncryptedSection(uint32 /*section*/) override { } bool LoadTableData(DB2FileSource* source, uint32 section) override; bool LoadCatalogData(DB2FileSource* /*source*/, uint32 /*section*/) override { return true; } void SetAdditionalData(std::vector<uint32> idTable, std::vector<DB2RecordCopy> copyTable, std::vector<DB2IndexData> parentIndexes) override; @@ -231,7 +220,8 @@ public: private: void FillParentLookup(char* dataTable); - uint8 const* GetRawRecordData(uint32 recordNumber) const override; + uint32 GetRecordSection(uint32 recordNumber) const; + unsigned char const* GetRawRecordData(uint32 recordNumber, uint32 const* section) const override; uint32 RecordGetId(uint8 const* record, uint32 recordIndex) const override; uint8 RecordGetUInt8(uint8 const* record, uint32 field, uint32 arrayIndex) const override; uint16 RecordGetUInt16(uint8 const* record, uint32 field, uint32 arrayIndex) const override; @@ -265,18 +255,19 @@ private: class DB2FileLoaderSparseImpl final : public DB2FileLoaderImpl { public: - DB2FileLoaderSparseImpl(char const* fileName, DB2FileLoadInfo const* loadInfo, DB2Header const* header); + DB2FileLoaderSparseImpl(char const* fileName, DB2FileLoadInfo const* loadInfo, DB2Header const* header, DB2FileSource* source); ~DB2FileLoaderSparseImpl(); void LoadColumnData(std::unique_ptr<DB2SectionHeader[]> sections, std::unique_ptr<DB2FieldEntry[]> fields, std::unique_ptr<DB2ColumnMeta[]> columnMeta, std::unique_ptr<std::unique_ptr<DB2PalletValue[]>[]> palletValues, std::unique_ptr<std::unique_ptr<DB2PalletValue[]>[]> palletArrayValues, std::unique_ptr<std::unordered_map<uint32, uint32>[]> commonValues) override; - bool LoadTableData(DB2FileSource* source, uint32 section) override; + void SkipEncryptedSection(uint32 section) override; + bool LoadTableData(DB2FileSource* source, uint32 section) override { return true; } bool LoadCatalogData(DB2FileSource* source, uint32 section) override; - void SetAdditionalData(std::vector<uint32> /*idTable*/, std::vector<DB2RecordCopy> /*copyTable*/, std::vector<DB2IndexData> /*parentIndexes*/) override { } + void SetAdditionalData(std::vector<uint32> /*idTable*/, std::vector<DB2RecordCopy> /*copyTable*/, std::vector<DB2IndexData> /*parentIndexes*/) override; char* AutoProduceData(uint32& records, char**& indexTable, std::vector<char*>& stringPool) override; char* AutoProduceStrings(char** indexTable, uint32 indexTableSize, uint32 locale) override; - void AutoProduceRecordCopies(uint32 /*records*/, char** /*indexTable*/, char* /*dataTable*/) override { } + void AutoProduceRecordCopies(uint32 /*records*/, char** /*indexTable*/, char* /*dataTable*/) override; DB2Record GetRecord(uint32 recordNumber) const override; DB2RecordCopy GetRecordCopy(uint32 copyNumber) const override; uint32 GetRecordCount() const override; @@ -287,7 +278,9 @@ public: bool IsSignedField(uint32 field) const override; private: - uint8 const* GetRawRecordData(uint32 recordNumber) const override; + void FillParentLookup(char* dataTable); + uint32 GetRecordSection(uint32 recordNumber) const; + unsigned char const* GetRawRecordData(uint32 recordNumber, uint32 const* section) const override; uint32 RecordGetId(uint8 const* record, uint32 recordIndex) const override; uint8 RecordGetUInt8(uint8 const* record, uint32 field, uint32 arrayIndex) const override; uint16 RecordGetUInt16(uint8 const* record, uint32 field, uint32 arrayIndex) const override; @@ -309,12 +302,17 @@ private: char const* _fileName; DB2FileLoadInfo const* _loadInfo; DB2Header const* _header; - std::size_t _dataStart; - std::unique_ptr<uint8[]> _data; + DB2FileSource* const _source; + std::size_t _totalRecordSize; + uint16 _maxRecordSize; + std::unique_ptr<uint8[]> _recordBuffer; std::unique_ptr<DB2SectionHeader[]> _sections; std::unique_ptr<DB2FieldEntry[]> _fields; std::unique_ptr<std::size_t[]> _fieldAndArrayOffsets; - std::unique_ptr<DB2CatalogEntry[]> _catalog; + std::vector<uint32> _catalogIds; + std::vector<DB2CatalogEntry> _catalog; + std::vector<DB2RecordCopy> _copyTable; + std::vector<DB2IndexData> _parentIndexes; }; DB2FileLoaderRegularImpl::DB2FileLoaderRegularImpl(char const* fileName, DB2FileLoadInfo const* loadInfo, DB2Header const* header) : @@ -409,122 +407,134 @@ char* DB2FileLoaderRegularImpl::AutoProduceData(uint32& records, char**& indexTa } uint32 offset = 0; + uint32 y = 0; - for (uint32 y = 0; y < _header->RecordCount; y++) + for (uint32 section = 0; section < _header->SectionCount; ++section) { - unsigned char const* rawRecord = GetRawRecordData(y); - if (!rawRecord) + DB2SectionHeader const& sectionHeader = GetSection(section); + if (sectionHeader.TactId) + { + offset += recordsize * sectionHeader.RecordCount; + y += sectionHeader.RecordCount; continue; + } - uint32 indexVal = RecordGetId(rawRecord, y); + for (uint32 sr = 0; sr < sectionHeader.RecordCount; ++sr, ++y) + { + unsigned char const* rawRecord = GetRawRecordData(y, §ion); + if (!rawRecord) + continue; - indexTable[indexVal] = &dataTable[offset]; + uint32 indexVal = RecordGetId(rawRecord, y); - uint32 fieldIndex = 0; - if (!_loadInfo->Meta->HasIndexFieldInData()) - { - *((uint32*)(&dataTable[offset])) = indexVal; - offset += 4; - ++fieldIndex; - } + indexTable[indexVal] = &dataTable[offset]; + + uint32 fieldIndex = 0; + if (!_loadInfo->Meta->HasIndexFieldInData()) + { + *((uint32*)(&dataTable[offset])) = indexVal; + offset += 4; + ++fieldIndex; + } - uint32 stringFieldOffset = 0; + uint32 stringFieldOffset = 0; - for (uint32 x = 0; x < _header->FieldCount; ++x) - { - for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) + for (uint32 x = 0; x < _header->FieldCount; ++x) { - switch (_loadInfo->TypesString[fieldIndex]) + for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) { - case FT_FLOAT: - *((float*)(&dataTable[offset])) = RecordGetFloat(rawRecord, x, z); - offset += 4; - break; - case FT_INT: - *((uint32*)(&dataTable[offset])) = RecordGetVarInt<uint32>(rawRecord, x, z); - offset += 4; - break; - case FT_BYTE: - *((uint8*)(&dataTable[offset])) = RecordGetUInt8(rawRecord, x, z); - offset += 1; - break; - case FT_SHORT: - *((uint16*)(&dataTable[offset])) = RecordGetUInt16(rawRecord, x, z); - offset += 2; - break; - case FT_LONG: - *((uint64*)(&dataTable[offset])) = RecordGetUInt64(rawRecord, x, z); - offset += 8; - break; - case FT_STRING: - case FT_STRING_NOT_LOCALIZED: + switch (_loadInfo->TypesString[fieldIndex]) { - // init db2 string field slots by pointers to string holders - char const*** slot = (char const***)(&dataTable[offset]); - *slot = (char const**)(&stringHoldersPool[stringHoldersRecordPoolSize * y + stringFieldOffset]); - if (_loadInfo->TypesString[fieldIndex] == FT_STRING) - stringFieldOffset += sizeof(LocalizedString); - else - stringFieldOffset += sizeof(char*); - - offset += sizeof(char*); - break; + case FT_FLOAT: + *((float*)(&dataTable[offset])) = RecordGetFloat(rawRecord, x, z); + offset += 4; + break; + case FT_INT: + *((uint32*)(&dataTable[offset])) = RecordGetVarInt<uint32>(rawRecord, x, z); + offset += 4; + break; + case FT_BYTE: + *((uint8*)(&dataTable[offset])) = RecordGetUInt8(rawRecord, x, z); + offset += 1; + break; + case FT_SHORT: + *((uint16*)(&dataTable[offset])) = RecordGetUInt16(rawRecord, x, z); + offset += 2; + break; + case FT_LONG: + *((uint64*)(&dataTable[offset])) = RecordGetUInt64(rawRecord, x, z); + offset += 8; + break; + case FT_STRING: + case FT_STRING_NOT_LOCALIZED: + { + // init db2 string field slots by pointers to string holders + char const*** slot = (char const***)(&dataTable[offset]); + *slot = (char const**)(&stringHoldersPool[stringHoldersRecordPoolSize * y + stringFieldOffset]); + if (_loadInfo->TypesString[fieldIndex] == FT_STRING) + stringFieldOffset += sizeof(LocalizedString); + else + stringFieldOffset += sizeof(char*); + + offset += sizeof(char*); + break; + } + default: + ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", + _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); + break; } - default: - ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", - _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); - break; + ++fieldIndex; } - ++fieldIndex; } - } - for (uint32 x = _header->FieldCount; x < _loadInfo->Meta->FieldCount; ++x) - { - for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) + for (uint32 x = _header->FieldCount; x < _loadInfo->Meta->FieldCount; ++x) { - switch (_loadInfo->TypesString[fieldIndex]) + for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) { - case FT_FLOAT: - *((float*)(&dataTable[offset])) = 0; - offset += 4; - break; - case FT_INT: - *((uint32*)(&dataTable[offset])) = 0; - offset += 4; - break; - case FT_BYTE: - *((uint8*)(&dataTable[offset])) = 0; - offset += 1; - break; - case FT_SHORT: - *((uint16*)(&dataTable[offset])) = 0; - offset += 2; - break; - case FT_LONG: - *((uint64*)(&dataTable[offset])) = 0; - offset += 8; - break; - case FT_STRING: - case FT_STRING_NOT_LOCALIZED: + switch (_loadInfo->TypesString[fieldIndex]) { - // init db2 string field slots by pointers to string holders - char const*** slot = (char const***)(&dataTable[offset]); - *slot = (char const**)(&stringHoldersPool[stringHoldersRecordPoolSize * y + stringFieldOffset]); - if (_loadInfo->TypesString[fieldIndex] == FT_STRING) - stringFieldOffset += sizeof(LocalizedString); - else - stringFieldOffset += sizeof(char*); - - offset += sizeof(char*); - break; + case FT_FLOAT: + *((float*)(&dataTable[offset])) = 0; + offset += 4; + break; + case FT_INT: + *((uint32*)(&dataTable[offset])) = 0; + offset += 4; + break; + case FT_BYTE: + *((uint8*)(&dataTable[offset])) = 0; + offset += 1; + break; + case FT_SHORT: + *((uint16*)(&dataTable[offset])) = 0; + offset += 2; + break; + case FT_LONG: + *((uint64*)(&dataTable[offset])) = 0; + offset += 8; + break; + case FT_STRING: + case FT_STRING_NOT_LOCALIZED: + { + // init db2 string field slots by pointers to string holders + char const*** slot = (char const***)(&dataTable[offset]); + *slot = (char const**)(&stringHoldersPool[stringHoldersRecordPoolSize * y + stringFieldOffset]); + if (_loadInfo->TypesString[fieldIndex] == FT_STRING) + stringFieldOffset += sizeof(LocalizedString); + else + stringFieldOffset += sizeof(char*); + + offset += sizeof(char*); + break; + } + default: + ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", + _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); + break; } - default: - ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", - _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); - break; + ++fieldIndex; } - ++fieldIndex; } } } @@ -557,72 +567,84 @@ char* DB2FileLoaderRegularImpl::AutoProduceStrings(char** indexTable, uint32 ind char* stringPool = new char[_header->StringTableSize]; memcpy(stringPool, _stringTable, _header->StringTableSize); - for (uint32 y = 0; y < _header->RecordCount; y++) + uint32 y = 0; + + for (uint32 section = 0; section < _header->SectionCount; ++section) { - unsigned char const* rawRecord = GetRawRecordData(y); - if (!rawRecord) + DB2SectionHeader const& sectionHeader = GetSection(section); + if (sectionHeader.TactId) + { + y += sectionHeader.RecordCount; continue; + } - uint32 indexVal = RecordGetId(rawRecord, y); - if (indexVal >= indexTableSize) - continue; + for (uint32 sr = 0; sr < sectionHeader.RecordCount; ++sr, ++y) + { + unsigned char const* rawRecord = GetRawRecordData(y, §ion); + if (!rawRecord) + continue; - char* recordData = indexTable[indexVal]; + uint32 indexVal = RecordGetId(rawRecord, y); + if (indexVal >= indexTableSize) + continue; - uint32 offset = 0; - uint32 fieldIndex = 0; - if (!_loadInfo->Meta->HasIndexFieldInData()) - { - offset += 4; - ++fieldIndex; - } + char* recordData = indexTable[indexVal]; - for (uint32 x = 0; x < _loadInfo->Meta->FieldCount; ++x) - { - for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) + uint32 offset = 0; + uint32 fieldIndex = 0; + if (!_loadInfo->Meta->HasIndexFieldInData()) + { + offset += 4; + ++fieldIndex; + } + + for (uint32 x = 0; x < _loadInfo->Meta->FieldCount; ++x) { - switch (_loadInfo->TypesString[fieldIndex]) + for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) { - case FT_FLOAT: - case FT_INT: - offset += 4; - break; - case FT_BYTE: - offset += 1; - break; - case FT_SHORT: - offset += 2; - break; - case FT_LONG: - offset += 8; - break; - case FT_STRING: + switch (_loadInfo->TypesString[fieldIndex]) { - // fill only not filled entries - LocalizedString* db2str = *(LocalizedString**)(&recordData[offset]); - if (db2str->Str[locale] == nullStr) + case FT_FLOAT: + case FT_INT: + offset += 4; + break; + case FT_BYTE: + offset += 1; + break; + case FT_SHORT: + offset += 2; + break; + case FT_LONG: + offset += 8; + break; + case FT_STRING: + { + // fill only not filled entries + LocalizedString* db2str = *(LocalizedString * *)(&recordData[offset]); + if (db2str->Str[locale] == nullStr) + { + char const* st = RecordGetString(rawRecord, x, z); + db2str->Str[locale] = stringPool + (st - (char const*)_stringTable); + } + + offset += sizeof(char*); + break; + } + case FT_STRING_NOT_LOCALIZED: { + char** db2str = (char**)(&recordData[offset]); char const* st = RecordGetString(rawRecord, x, z); - db2str->Str[locale] = stringPool + (st - (char const*)_stringTable); + *db2str = stringPool + (st - (char const*)_stringTable); + offset += sizeof(char*); + break; } - - offset += sizeof(char*); - break; - } - case FT_STRING_NOT_LOCALIZED: - { - char** db2str = (char**)(&recordData[offset]); - char const* st = RecordGetString(rawRecord, x, z); - *db2str = stringPool + (st - (char const*)_stringTable); - offset += sizeof(char*); - break; + default: + ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", + _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); + break; } - default: - ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", - _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); - break; + ++fieldIndex; } - ++fieldIndex; } } } @@ -652,7 +674,7 @@ void DB2FileLoaderRegularImpl::FillParentLookup(char* dataTable) { int32 parentIdOffset = _loadInfo->Meta->GetParentIndexFieldOffset(); uint32 recordSize = _loadInfo->Meta->GetRecordSize(); - for (uint32 i = 0; i < _parentIndexes[0].Info.NumEntries; ++i) + for (std::size_t i = 0; i < _parentIndexes[0].Entries.size(); ++i) { uint32 parentId = _parentIndexes[0].Entries[i].ParentId; char* recordData = &dataTable[_parentIndexes[0].Entries[i].RecordIndex * recordSize]; @@ -698,11 +720,29 @@ uint32 DB2FileLoaderRegularImpl::GetRecordCopyCount() const return _copyTable.size(); } -uint8 const* DB2FileLoaderRegularImpl::GetRawRecordData(uint32 recordNumber) const +uint32 DB2FileLoaderRegularImpl::GetRecordSection(uint32 recordNumber) const +{ + uint32 section = 0; + for (; section < _header->SectionCount; ++section) + { + DB2SectionHeader const& sectionHeader = GetSection(section); + if (recordNumber < sectionHeader.RecordCount) + break; + + recordNumber -= sectionHeader.RecordCount; + } + + return section; +} + +unsigned char const* DB2FileLoaderRegularImpl::GetRawRecordData(uint32 recordNumber, uint32 const* section) const { if (recordNumber >= _header->RecordCount) return nullptr; + if (GetSection(section ? *section : GetRecordSection(recordNumber)).TactId) + return nullptr; + return &_data[recordNumber * _header->RecordSize]; } @@ -873,7 +913,11 @@ uint32 DB2FileLoaderRegularImpl::GetMaxId() const uint32 maxId = 0; for (uint32 row = 0; row < _header->RecordCount; ++row) { - uint32 id = RecordGetId(GetRawRecordData(row), row); + unsigned char const* rawRecord = GetRawRecordData(row, nullptr); + if (!rawRecord) + continue; + + uint32 id = RecordGetId(rawRecord, row); if (id > maxId) maxId = id; } @@ -885,6 +929,7 @@ uint32 DB2FileLoaderRegularImpl::GetMaxId() const maxId = id; } + ASSERT(maxId <= _header->MaxId); return maxId; } @@ -927,12 +972,14 @@ bool DB2FileLoaderRegularImpl::IsSignedField(uint32 field) const return false; } -DB2FileLoaderSparseImpl::DB2FileLoaderSparseImpl(char const* fileName, DB2FileLoadInfo const* loadInfo, DB2Header const* header) : +DB2FileLoaderSparseImpl::DB2FileLoaderSparseImpl(char const* fileName, DB2FileLoadInfo const* loadInfo, DB2Header const* header, DB2FileSource* source) : _fileName(fileName), _loadInfo(loadInfo), _header(header), - _dataStart(0), - _fieldAndArrayOffsets(Trinity::make_unique<std::size_t[]>(loadInfo->Meta->FieldCount + loadInfo->FieldCount - (!loadInfo->Meta->HasIndexFieldInData() ? 1 : 0))) + _source(source), + _totalRecordSize(0), + _maxRecordSize(0), + _fieldAndArrayOffsets(loadInfo ? (Trinity::make_unique<std::size_t[]>(loadInfo->Meta->FieldCount + loadInfo->FieldCount - (!loadInfo->Meta->HasIndexFieldInData() ? 1 : 0))) : nullptr) { } @@ -948,23 +995,46 @@ void DB2FileLoaderSparseImpl::LoadColumnData(std::unique_ptr<DB2SectionHeader[]> _fields = std::move(fields); } -bool DB2FileLoaderSparseImpl::LoadTableData(DB2FileSource* source, uint32 section) +void DB2FileLoaderSparseImpl::SkipEncryptedSection(uint32 section) { - if (section != 0) - return false; - - _dataStart = source->GetPosition(); - _data = Trinity::make_unique<uint8[]>(_sections[0].CatalogDataOffset - _dataStart); - return source->Read(_data.get(), _sections[0].CatalogDataOffset - _dataStart); + _catalogIds.resize(_catalogIds.size() + _sections[section].CatalogDataCount); + _catalog.resize(_catalog.size() + _sections[section].CatalogDataCount); } bool DB2FileLoaderSparseImpl::LoadCatalogData(DB2FileSource* source, uint32 section) { - if (section != 0) + source->SetPosition(_sections[section].CatalogDataOffset); + + std::size_t oldSize = _catalog.size(); + _catalogIds.resize(oldSize + _sections[section].CatalogDataCount); + if (!source->Read(&_catalogIds[oldSize], sizeof(uint32) * _sections[section].CatalogDataCount)) + return false; + + if (_sections[section].CopyTableCount) + { + std::size_t oldCopyTableSize = _copyTable.size(); + _copyTable.resize(oldCopyTableSize + _sections[section].CopyTableCount); + if (!source->Read(&_copyTable[oldSize], sizeof(DB2RecordCopy) * _sections[section].CopyTableCount)) + return false; + } + + _catalog.resize(oldSize + _sections[section].CatalogDataCount); + if (!source->Read(&_catalog[oldSize], sizeof(DB2CatalogEntry) * _sections[section].CatalogDataCount)) return false; - _catalog = Trinity::make_unique<DB2CatalogEntry[]>(_header->MaxId - _header->MinId + 1); - return source->Read(_catalog.get(), sizeof(DB2CatalogEntry) * (_header->MaxId - _header->MinId + 1)); + for (uint32 i = 0; i < _sections[section].CatalogDataCount; ++i) + { + _totalRecordSize += _catalog[oldSize + i].RecordSize; + _maxRecordSize = std::max(_maxRecordSize, _catalog[oldSize + i].RecordSize); + } + + return true; +} + +void DB2FileLoaderSparseImpl::SetAdditionalData(std::vector<uint32> /*idTable*/, std::vector<DB2RecordCopy> /*copyTable*/, std::vector<DB2IndexData> parentIndexes) +{ + _parentIndexes = std::move(parentIndexes); + _recordBuffer = Trinity::make_unique<uint8[]>(_maxRecordSize); } char* DB2FileLoaderSparseImpl::AutoProduceData(uint32& maxId, char**& indexTable, std::vector<char*>& stringPool) @@ -974,18 +1044,7 @@ char* DB2FileLoaderSparseImpl::AutoProduceData(uint32& maxId, char**& indexTable //get struct size and index pos uint32 recordsize = _loadInfo->Meta->GetRecordSize(); - - uint32 offsetCount = _header->MaxId - _header->MinId + 1; - uint32 records = 0; - uint32 expandedDataSize = 0; - for (uint32 i = 0; i < offsetCount; ++i) - { - if (_catalog[i].FileOffset && _catalog[i].RecordSize) - { - ++records; - expandedDataSize += _catalog[i].RecordSize; - } - } + uint32 records = _catalog.size(); using index_entry_t = char*; @@ -993,7 +1052,7 @@ char* DB2FileLoaderSparseImpl::AutoProduceData(uint32& maxId, char**& indexTable indexTable = new index_entry_t[maxId]; memset(indexTable, 0, maxId * sizeof(index_entry_t)); - char* dataTable = new char[records * recordsize]; + char* dataTable = new char[(records + _copyTable.size()) * recordsize]; // we store flat holders pool as single memory block std::size_t stringFields = _loadInfo->GetStringFieldCount(false); @@ -1010,91 +1069,153 @@ char* DB2FileLoaderSparseImpl::AutoProduceData(uint32& maxId, char**& indexTable for (std::size_t i = 0; i < stringHoldersPoolSize / sizeof(char*); ++i) ((char const**)stringHoldersPool)[i] = nullStr; - char* stringTable = new char[expandedDataSize - records * ((recordsize - (!_loadInfo->Meta->HasIndexFieldInData() ? 4 : 0)) - stringFields * sizeof(char*))]; - memset(stringTable, 0, expandedDataSize - records * ((recordsize - (!_loadInfo->Meta->HasIndexFieldInData() ? 4 : 0)) - stringFields * sizeof(char*))); + char* stringTable = new char[_totalRecordSize - records * ((recordsize - (!_loadInfo->Meta->HasIndexFieldInData() ? 4 : 0)) - stringFields * sizeof(char*))]; + memset(stringTable, 0, _totalRecordSize - records * ((recordsize - (!_loadInfo->Meta->HasIndexFieldInData() ? 4 : 0)) - stringFields * sizeof(char*))); stringPool.push_back(stringTable); char* stringPtr = stringTable; uint32 offset = 0; uint32 recordNum = 0; - for (uint32 y = 0; y < offsetCount; ++y) - { - unsigned char const* rawRecord = GetRawRecordData(y); - if (!rawRecord) - continue; + uint32 y = 0; - uint32 indexVal = RecordGetId(rawRecord, y); - indexTable[indexVal] = &dataTable[offset]; - - uint32 fieldIndex = 0; - if (!_loadInfo->Meta->HasIndexFieldInData()) + for (uint32 section = 0; section < _header->SectionCount; ++section) + { + DB2SectionHeader const& sectionHeader = GetSection(section); + if (sectionHeader.TactId) { - *((uint32*)(&dataTable[offset])) = indexVal; - offset += 4; - ++fieldIndex; + offset += recordsize * sectionHeader.RecordCount; + y += sectionHeader.RecordCount; + continue; } - uint32 stringFieldOffset = 0; - for (uint32 x = 0; x < _header->FieldCount; ++x) + for (uint32 sr = 0; sr < sectionHeader.CatalogDataCount; ++sr, ++y) { - for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) + unsigned char const* rawRecord = GetRawRecordData(y, §ion); + if (!rawRecord) + continue; + + uint32 indexVal = _catalogIds[y]; + indexTable[indexVal] = &dataTable[offset]; + + uint32 fieldIndex = 0; + if (!_loadInfo->Meta->HasIndexFieldInData()) + { + *((uint32*)(&dataTable[offset])) = indexVal; + offset += 4; + ++fieldIndex; + } + + uint32 stringFieldOffset = 0; + for (uint32 x = 0; x < _header->FieldCount; ++x) { - switch (_loadInfo->TypesString[fieldIndex]) + for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) { - case FT_FLOAT: - *((float*)(&dataTable[offset])) = RecordGetFloat(rawRecord, x, z); - offset += 4; - break; - case FT_INT: - *((uint32*)(&dataTable[offset])) = RecordGetVarInt(rawRecord, x, z, _loadInfo->Fields[fieldIndex].IsSigned); - offset += 4; - break; - case FT_BYTE: - *((uint8*)(&dataTable[offset])) = RecordGetUInt8(rawRecord, x, z); - offset += 1; - break; - case FT_SHORT: - *((uint16*)(&dataTable[offset])) = RecordGetUInt16(rawRecord, x, z); - offset += 2; - break; - case FT_LONG: - *((uint64*)(&dataTable[offset])) = RecordGetUInt64(rawRecord, x, z); - offset += 8; - break; - case FT_STRING: + switch (_loadInfo->TypesString[fieldIndex]) { - LocalizedString** slot = (LocalizedString**)(&dataTable[offset]); - *slot = (LocalizedString*)(&stringHoldersPool[stringHoldersRecordPoolSize * recordNum + stringFieldOffset]); - for (uint32 locale = 0; locale < TOTAL_LOCALES; ++locale) - if (_header->Locale & (1 << locale)) - (*slot)->Str[locale] = stringPtr; - strcpy(stringPtr, RecordGetString(rawRecord, x, z)); - stringPtr += strlen(stringPtr) + 1; - stringFieldOffset += sizeof(LocalizedString); - offset += sizeof(LocalizedString*); - break; + case FT_FLOAT: + *((float*)(&dataTable[offset])) = RecordGetFloat(rawRecord, x, z); + offset += 4; + break; + case FT_INT: + *((uint32*)(&dataTable[offset])) = RecordGetVarInt(rawRecord, x, z, _loadInfo->Fields[fieldIndex].IsSigned); + offset += 4; + break; + case FT_BYTE: + *((uint8*)(&dataTable[offset])) = RecordGetUInt8(rawRecord, x, z); + offset += 1; + break; + case FT_SHORT: + *((uint16*)(&dataTable[offset])) = RecordGetUInt16(rawRecord, x, z); + offset += 2; + break; + case FT_LONG: + *((uint64*)(&dataTable[offset])) = RecordGetUInt64(rawRecord, x, z); + offset += 8; + break; + case FT_STRING: + { + LocalizedString** slot = (LocalizedString * *)(&dataTable[offset]); + *slot = (LocalizedString*)(&stringHoldersPool[stringHoldersRecordPoolSize * recordNum + stringFieldOffset]); + for (uint32 locale = 0; locale < TOTAL_LOCALES; ++locale) + if (_header->Locale & (1 << locale)) + (*slot)->Str[locale] = stringPtr; + strcpy(stringPtr, RecordGetString(rawRecord, x, z)); + stringPtr += strlen(stringPtr) + 1; + stringFieldOffset += sizeof(LocalizedString); + offset += sizeof(LocalizedString*); + break; + } + case FT_STRING_NOT_LOCALIZED: + { + char const*** slot = (char const***)(&dataTable[offset]); + *slot = (char const**)(&stringHoldersPool[stringHoldersRecordPoolSize * recordNum + stringFieldOffset]); + **slot = stringPtr; + strcpy(stringPtr, RecordGetString(rawRecord, x, z)); + stringPtr += strlen(stringPtr) + 1; + stringFieldOffset += sizeof(char*); + offset += sizeof(char*); + break; + } + default: + ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", + _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); + break; } - case FT_STRING_NOT_LOCALIZED: + ++fieldIndex; + } + } + + for (uint32 x = _header->FieldCount; x < _loadInfo->Meta->FieldCount; ++x) + { + for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) + { + switch (_loadInfo->TypesString[fieldIndex]) { - char const*** slot = (char const***)(&dataTable[offset]); - *slot = (char const**)(&stringHoldersPool[stringHoldersRecordPoolSize * recordNum + stringFieldOffset]); - **slot = stringPtr; - strcpy(stringPtr, RecordGetString(rawRecord, x, z)); - stringPtr += strlen(stringPtr) + 1; - stringFieldOffset += sizeof(char*); - offset += sizeof(char*); - break; + case FT_FLOAT: + *((float*)(&dataTable[offset])) = 0; + offset += 4; + break; + case FT_INT: + *((uint32*)(&dataTable[offset])) = 0; + offset += 4; + break; + case FT_BYTE: + *((uint8*)(&dataTable[offset])) = 0; + offset += 1; + break; + case FT_SHORT: + *((uint16*)(&dataTable[offset])) = 0; + offset += 2; + break; + case FT_LONG: + *((uint64*)(&dataTable[offset])) = 0; + offset += 8; + break; + case FT_STRING: + case FT_STRING_NOT_LOCALIZED: + { + // init db2 string field slots by pointers to string holders + char const*** slot = (char const***)(&dataTable[offset]); + *slot = (char const**)(&stringHoldersPool[stringHoldersRecordPoolSize * recordNum + stringFieldOffset]); + if (_loadInfo->TypesString[fieldIndex] == FT_STRING) + stringFieldOffset += sizeof(LocalizedString); + else + stringFieldOffset += sizeof(char*); + + offset += sizeof(char*); + break; + } + default: + ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", + _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); + break; } - default: - ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", - _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); - break; + ++fieldIndex; } - ++fieldIndex; } - } - ++recordNum; + ++recordNum; + } } return dataTable; @@ -1122,77 +1243,84 @@ char* DB2FileLoaderSparseImpl::AutoProduceStrings(char** indexTable, uint32 inde return nullptr; } - uint32 offsetCount = _header->MaxId - _header->MinId + 1; - uint32 records = 0; - for (uint32 i = 0; i < offsetCount; ++i) - if (_catalog[i].FileOffset && _catalog[i].RecordSize) - ++records; - + uint32 records = _catalog.size(); uint32 recordsize = _loadInfo->Meta->GetRecordSize(); std::size_t stringFields = _loadInfo->GetStringFieldCount(true); - char* stringTable = new char[_sections[0].CatalogDataOffset - _dataStart - records * ((recordsize - (!_loadInfo->Meta->HasIndexFieldInData() ? 4 : 0)) - stringFields * sizeof(char*))]; - memset(stringTable, 0, _sections[0].CatalogDataOffset - _dataStart - records * ((recordsize - (!_loadInfo->Meta->HasIndexFieldInData() ? 4 : 0)) - stringFields * sizeof(char*))); + char* stringTable = new char[_totalRecordSize - records * ((recordsize - (!_loadInfo->Meta->HasIndexFieldInData() ? 4 : 0)) - stringFields * sizeof(char*))]; + memset(stringTable, 0, _totalRecordSize - records * ((recordsize - (!_loadInfo->Meta->HasIndexFieldInData() ? 4 : 0)) - stringFields * sizeof(char*))); char* stringPtr = stringTable; - for (uint32 y = 0; y < offsetCount; y++) + uint32 y = 0; + + for (uint32 section = 0; section < _header->SectionCount; ++section) { - unsigned char const* rawRecord = GetRawRecordData(y); - if (!rawRecord) + DB2SectionHeader const& sectionHeader = GetSection(section); + if (sectionHeader.TactId) + { + y += sectionHeader.RecordCount; continue; + } - uint32 indexVal = RecordGetId(rawRecord, y); - if (indexVal >= indexTableSize) - continue; + for (uint32 sr = 0; sr < sectionHeader.CatalogDataCount; ++sr, ++y) + { + unsigned char const* rawRecord = GetRawRecordData(y, §ion); + if (!rawRecord) + continue; - char* recordData = indexTable[indexVal]; + uint32 indexVal = _catalogIds[y]; + if (indexVal >= indexTableSize) + continue; - uint32 offset = 0; - uint32 fieldIndex = 0; - if (!_loadInfo->Meta->HasIndexFieldInData()) - { - offset += 4; - ++fieldIndex; - } + char* recordData = indexTable[indexVal]; - for (uint32 x = 0; x < _header->FieldCount; ++x) - { - for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) + uint32 offset = 0; + uint32 fieldIndex = 0; + if (!_loadInfo->Meta->HasIndexFieldInData()) { - switch (_loadInfo->TypesString[fieldIndex]) + offset += 4; + ++fieldIndex; + } + + for (uint32 x = 0; x < _header->FieldCount; ++x) + { + for (uint32 z = 0; z < _loadInfo->Meta->Fields[x].ArraySize; ++z) { - case FT_FLOAT: - offset += 4; - break; - case FT_INT: - offset += 4; - break; - case FT_BYTE: - offset += 1; - break; - case FT_SHORT: - offset += 2; - break; - case FT_LONG: - offset += 8; - break; - case FT_STRING: + switch (_loadInfo->TypesString[fieldIndex]) { - LocalizedString* db2str = *(LocalizedString**)(&recordData[offset]); - db2str->Str[locale] = stringPtr; - strcpy(stringPtr, RecordGetString(rawRecord, x, z)); - stringPtr += strlen(stringPtr) + 1; - offset += sizeof(char*); - break; + case FT_FLOAT: + offset += 4; + break; + case FT_INT: + offset += 4; + break; + case FT_BYTE: + offset += 1; + break; + case FT_SHORT: + offset += 2; + break; + case FT_LONG: + offset += 8; + break; + case FT_STRING: + { + LocalizedString* db2str = *(LocalizedString * *)(&recordData[offset]); + db2str->Str[locale] = stringPtr; + strcpy(stringPtr, RecordGetString(rawRecord, x, z)); + stringPtr += strlen(stringPtr) + 1; + offset += sizeof(char*); + break; + } + case FT_STRING_NOT_LOCALIZED: + offset += sizeof(char*); + break; + default: + ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", + _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); + break; } - case FT_STRING_NOT_LOCALIZED: - offset += sizeof(char*); - break; - default: - ASSERT(false, "Unknown format character '%c' found in %s meta for field %s", - _loadInfo->TypesString[fieldIndex], _fileName, _loadInfo->Fields[fieldIndex].Name); - break; + ++fieldIndex; } - ++fieldIndex; } } } @@ -1200,32 +1328,102 @@ char* DB2FileLoaderSparseImpl::AutoProduceStrings(char** indexTable, uint32 inde return stringTable; } +void DB2FileLoaderSparseImpl::AutoProduceRecordCopies(uint32 records, char** indexTable, char* dataTable) +{ + uint32 recordsize = _loadInfo->Meta->GetRecordSize(); + uint32 offset = _header->RecordCount * recordsize; + uint32 idFieldOffset = _loadInfo->Meta->HasIndexFieldInData() ? _loadInfo->Meta->GetIndexFieldOffset() : 0; + for (uint32 c = 0; c < GetRecordCopyCount(); ++c) + { + DB2RecordCopy copy = GetRecordCopy(c); + if (copy.SourceRowId && copy.SourceRowId < records && copy.NewRowId < records && indexTable[copy.SourceRowId]) + { + indexTable[copy.NewRowId] = &dataTable[offset]; + memcpy(indexTable[copy.NewRowId], indexTable[copy.SourceRowId], recordsize); + *((uint32*)(&dataTable[offset + idFieldOffset])) = copy.NewRowId; + offset += recordsize; + } + } +} + DB2Record DB2FileLoaderSparseImpl::GetRecord(uint32 recordNumber) const { return DB2Record(*this, recordNumber, _fieldAndArrayOffsets.get()); } -DB2RecordCopy DB2FileLoaderSparseImpl::GetRecordCopy(uint32 /*recordId*/) const +DB2RecordCopy DB2FileLoaderSparseImpl::GetRecordCopy(uint32 copyNumber) const { - return DB2RecordCopy{}; + if (copyNumber >= GetRecordCopyCount()) + return DB2RecordCopy{}; + + return _copyTable[copyNumber]; } uint32 DB2FileLoaderSparseImpl::GetRecordCount() const { - return _header->MaxId - _header->MinId + 1; + return _catalog.size(); } uint32 DB2FileLoaderSparseImpl::GetRecordCopyCount() const { - return 0; + return _copyTable.size(); +} + +void DB2FileLoaderSparseImpl::FillParentLookup(char* dataTable) +{ + int32 parentIdOffset = _loadInfo->Meta->GetParentIndexFieldOffset(); + uint32 recordSize = _loadInfo->Meta->GetRecordSize(); + for (std::size_t i = 0; i < _parentIndexes[0].Entries.size(); ++i) + { + uint32 parentId = _parentIndexes[0].Entries[i].ParentId; + char* recordData = &dataTable[_parentIndexes[0].Entries[i].RecordIndex * recordSize]; + + switch (_loadInfo->Meta->Fields[_loadInfo->Meta->ParentIndexField].Type) + { + case FT_SHORT: + *reinterpret_cast<uint16*>(&recordData[parentIdOffset]) = uint16(parentId); + break; + case FT_BYTE: + *reinterpret_cast<uint8*>(&recordData[parentIdOffset]) = uint8(parentId); + break; + case FT_INT: + *reinterpret_cast<uint32*>(&recordData[parentIdOffset]) = parentId; + break; + default: + ASSERT(false, "Unhandled parent id type '%c' found in %s", _loadInfo->Meta->Fields[_loadInfo->Meta->ParentIndexField].Type, _fileName); + break; + } + } +} + +uint32 DB2FileLoaderSparseImpl::GetRecordSection(uint32 recordNumber) const +{ + uint32 section = 0; + for (; section < _header->SectionCount; ++section) + { + DB2SectionHeader const& sectionHeader = GetSection(section); + if (recordNumber < sectionHeader.CatalogDataCount) + break; + + recordNumber -= sectionHeader.CatalogDataCount; + } + + return section; } -uint8 const* DB2FileLoaderSparseImpl::GetRawRecordData(uint32 recordNumber) const +unsigned char const* DB2FileLoaderSparseImpl::GetRawRecordData(uint32 recordNumber, uint32 const* section) const { - if (recordNumber > (_header->MaxId - _header->MinId) || !_catalog[recordNumber].FileOffset || !_catalog[recordNumber].RecordSize) + if (recordNumber >= _catalog.size()) + return nullptr; + + if (GetSection(section ? *section : GetRecordSection(recordNumber)).TactId) + return nullptr; + + _source->SetPosition(_catalog[recordNumber].FileOffset); + uint8* rawRecord = _recordBuffer.get(); + if (!_source->Read(rawRecord, _catalog[recordNumber].RecordSize)) return nullptr; - uint8 const* rawRecord = &_data[_catalog[recordNumber].FileOffset - _dataStart]; CalculateAndStoreFieldOffsets(rawRecord); return rawRecord; } @@ -1235,7 +1433,7 @@ uint32 DB2FileLoaderSparseImpl::RecordGetId(uint8 const* record, uint32 recordIn if (_loadInfo->Meta->HasIndexFieldInData()) return RecordGetVarInt(record, _loadInfo->Meta->GetIndexField(), 0, false); - return _header->MinId + recordIndex; + return _catalogIds[recordIndex]; } uint8 DB2FileLoaderSparseImpl::RecordGetUInt8(uint8 const* record, uint32 field, uint32 arrayIndex) const @@ -1383,7 +1581,7 @@ bool DB2FileLoaderSparseImpl::IsSignedField(uint32 field) const } DB2Record::DB2Record(DB2FileLoaderImpl const& db2, uint32 recordIndex, std::size_t* fieldOffsets) - : _db2(db2), _recordIndex(recordIndex), _recordData(db2.GetRawRecordData(recordIndex)), _fieldOffsets(fieldOffsets) + : _db2(db2), _recordIndex(recordIndex), _recordData(db2.GetRawRecordData(recordIndex, nullptr)), _fieldOffsets(fieldOffsets) { } @@ -1500,7 +1698,7 @@ DB2FileLoader::~DB2FileLoader() delete _impl; } -bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) +bool DB2FileLoader::LoadHeaders(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) { if (!source->IsOpen()) return false; @@ -1528,19 +1726,19 @@ bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) EndianConvert(_header.PalletDataSize); EndianConvert(_header.SectionCount); - if (_header.Signature != 0x32434457) //'WDC2' + if (_header.Signature != 0x33434457) //'WDC3' return false; - if (_header.LayoutHash != loadInfo->Meta->LayoutHash) + if (loadInfo && _header.LayoutHash != loadInfo->Meta->LayoutHash) return false; if (_header.ParentLookupCount > 1) return false; - if (_header.TotalFieldCount + (loadInfo->Meta->ParentIndexField >= int32(_header.TotalFieldCount) ? 1 : 0) != loadInfo->Meta->FieldCount) + if (loadInfo && (_header.TotalFieldCount + (loadInfo->Meta->ParentIndexField >= int32(_header.TotalFieldCount) ? 1 : 0) != loadInfo->Meta->FieldCount)) return false; - if (_header.ParentLookupCount && loadInfo->Meta->ParentIndexField == -1) + if (loadInfo && (_header.ParentLookupCount && loadInfo->Meta->ParentIndexField == -1)) return false; std::unique_ptr<DB2SectionHeader[]> sections = Trinity::make_unique<DB2SectionHeader[]>(_header.SectionCount); @@ -1551,11 +1749,11 @@ bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) uint32 totalParentLookupDataSize = 0; for (uint32 i = 0; i < _header.SectionCount; ++i) { - totalCopyTableSize += sections[i].CopyTableSize; + totalCopyTableSize += sections[i].CopyTableCount * sizeof(DB2RecordCopy); totalParentLookupDataSize += sections[i].ParentLookupDataSize; } - if (!(_header.Flags & 0x1)) + if (loadInfo && !(_header.Flags & 0x1)) { std::size_t expectedFileSize = sizeof(DB2Header) + @@ -1588,10 +1786,13 @@ bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) if (!source->Read(columnMeta.get(), _header.ColumnMetaSize)) return false; - ASSERT(!loadInfo->Meta->HasIndexFieldInData() || - columnMeta[loadInfo->Meta->IndexField].CompressionType == DB2ColumnCompression::None || - columnMeta[loadInfo->Meta->IndexField].CompressionType == DB2ColumnCompression::Immediate || - columnMeta[loadInfo->Meta->IndexField].CompressionType == DB2ColumnCompression::SignedImmediate); + if (loadInfo) + { + ASSERT(!loadInfo->Meta->HasIndexFieldInData() || + columnMeta[loadInfo->Meta->IndexField].CompressionType == DB2ColumnCompression::None || + columnMeta[loadInfo->Meta->IndexField].CompressionType == DB2ColumnCompression::Immediate || + columnMeta[loadInfo->Meta->IndexField].CompressionType == DB2ColumnCompression::SignedImmediate); + } palletValues = Trinity::make_unique<std::unique_ptr<DB2PalletValue[]>[]>(_header.TotalFieldCount); for (uint32 i = 0; i < _header.TotalFieldCount; ++i) @@ -1643,20 +1844,34 @@ bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) if (!(_header.Flags & 0x1)) _impl = new DB2FileLoaderRegularImpl(source->GetFileName(), loadInfo, &_header); else - _impl = new DB2FileLoaderSparseImpl(source->GetFileName(), loadInfo, &_header); + _impl = new DB2FileLoaderSparseImpl(source->GetFileName(), loadInfo, &_header, source); _impl->LoadColumnData(std::move(sections), std::move(fieldData), std::move(columnMeta), std::move(palletValues), std::move(palletArrayValues), std::move(commonValues)); + return true; +} + +bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) +{ + if (!LoadHeaders(source, loadInfo)) + return false; std::vector<uint32> idTable; std::vector<DB2RecordCopy> copyTable; std::vector<DB2IndexData> parentIndexes; - if (!loadInfo->Meta->HasIndexFieldInData() && _header.RecordCount) + if (loadInfo && !loadInfo->Meta->HasIndexFieldInData() && _header.RecordCount) idTable.reserve(_header.RecordCount); for (uint32 i = 0; i < _header.SectionCount; ++i) { DB2SectionHeader const& section = _impl->GetSection(i); + if (section.TactId) + { + _impl->SkipEncryptedSection(i); + idTable.resize(idTable.size() + section.IdTableSize / sizeof(uint32)); + continue; + } + if (!source->SetPosition(section.FileOffset)) return false; @@ -1666,22 +1881,25 @@ bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) if (!_impl->LoadCatalogData(source, i)) return false; - ASSERT(!loadInfo->Meta->HasIndexFieldInData() || section.IdTableSize == 0); - ASSERT(loadInfo->Meta->HasIndexFieldInData() || section.IdTableSize == 4 * section.RecordCount); + if (loadInfo) + { + ASSERT(!loadInfo->Meta->HasIndexFieldInData() || section.IdTableSize == 0); + ASSERT(loadInfo->Meta->HasIndexFieldInData() || section.IdTableSize == 4 * section.RecordCount); + } - if (!loadInfo->Meta->HasIndexFieldInData() && section.IdTableSize) + if (section.IdTableSize) { std::size_t idTableSize = idTable.size(); - idTable.resize(idTableSize + section.IdTableSize); + idTable.resize(idTableSize + section.IdTableSize / sizeof(uint32)); if (!source->Read(&idTable[idTableSize], section.IdTableSize)) return false; } - if (section.CopyTableSize) + if (!(_header.Flags & 0x1) && section.CopyTableCount) { std::size_t copyTableSize = copyTable.size(); - copyTable.resize(copyTableSize + section.CopyTableSize / sizeof(DB2RecordCopy)); - if (!source->Read(©Table[copyTableSize], section.CopyTableSize)) + copyTable.resize(copyTableSize + section.CopyTableCount); + if (!source->Read(©Table[copyTableSize], section.CopyTableCount * sizeof(DB2RecordCopy))) return false; } @@ -1690,14 +1908,16 @@ bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) parentIndexes.resize(_header.ParentLookupCount); for (uint32 i = 0; i < _header.ParentLookupCount; ++i) { - if (!source->Read(&parentIndexes[i].Info, sizeof(DB2IndexDataInfo))) + DB2IndexDataInfo indexInfo; + if (!source->Read(&indexInfo, sizeof(DB2IndexDataInfo))) return false; - if (!parentIndexes[i].Info.NumEntries) + if (!indexInfo.NumEntries) continue; - parentIndexes[i].Entries = Trinity::make_unique<DB2IndexEntry[]>(parentIndexes[i].Info.NumEntries); - if (!source->Read(parentIndexes[i].Entries.get(), sizeof(DB2IndexEntry) * parentIndexes[i].Info.NumEntries)) + std::size_t oldSize = parentIndexes[i].Entries.size(); + parentIndexes[i].Entries.resize(oldSize + indexInfo.NumEntries); + if (!source->Read(&parentIndexes[i].Entries[oldSize], sizeof(DB2IndexEntry) * indexInfo.NumEntries)) return false; } } @@ -1705,16 +1925,19 @@ bool DB2FileLoader::Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo) _impl->SetAdditionalData(std::move(idTable), std::move(copyTable), std::move(parentIndexes)); - uint32 fieldIndex = 0; - if (!loadInfo->Meta->HasIndexFieldInData()) + if (loadInfo) { - ASSERT(!loadInfo->Fields[0].IsSigned, "ID must be unsigned"); - ++fieldIndex; - } - for (uint32 f = 0; f < loadInfo->Meta->FieldCount; ++f) - { - ASSERT(loadInfo->Fields[fieldIndex].IsSigned == _impl->IsSignedField(f), "Mismatched field signedness for field %u (%s)", f, loadInfo->Fields[fieldIndex].Name); - fieldIndex += loadInfo->Meta->Fields[f].ArraySize; + uint32 fieldIndex = 0; + if (!loadInfo->Meta->HasIndexFieldInData()) + { + ASSERT(!loadInfo->Fields[0].IsSigned, "ID must be unsigned"); + ++fieldIndex; + } + for (uint32 f = 0; f < loadInfo->Meta->FieldCount; ++f) + { + ASSERT(loadInfo->Fields[fieldIndex].IsSigned == _impl->IsSignedField(f), "Mismatched field signedness for field %u (%s)", f, loadInfo->Fields[fieldIndex].Name); + fieldIndex += loadInfo->Meta->Fields[f].ArraySize; + } } return true; @@ -1750,6 +1973,11 @@ uint32 DB2FileLoader::GetMaxId() const return _impl->GetMaxId(); } +DB2SectionHeader const& DB2FileLoader::GetSectionHeader(uint32 section) const +{ + return _impl->GetSection(section); +} + DB2Record DB2FileLoader::GetRecord(uint32 recordNumber) const { return _impl->GetRecord(recordNumber); diff --git a/src/common/DataStores/DB2FileLoader.h b/src/common/DataStores/DB2FileLoader.h index 0a5edd87873..8442805c64a 100644 --- a/src/common/DataStores/DB2FileLoader.h +++ b/src/common/DataStores/DB2FileLoader.h @@ -27,6 +27,7 @@ struct DB2FieldMeta; struct DB2Meta; #pragma pack(push, 1) + struct DB2Header { uint32 Signature; @@ -49,6 +50,20 @@ struct DB2Header uint32 PalletDataSize; uint32 SectionCount; }; + +struct DB2SectionHeader +{ + uint64 TactId; + uint32 FileOffset; + uint32 RecordCount; + uint32 StringTableSize; + uint32 CatalogDataOffset; + uint32 IdTableSize; + uint32 ParentLookupDataSize; + uint32 CatalogDataCount; + uint32 CopyTableCount; +}; + #pragma pack(pop) struct TC_COMMON_API DB2FieldMeta @@ -146,6 +161,8 @@ public: DB2FileLoader(); ~DB2FileLoader(); + // loadInfo argument is required when trying to read data from the file + bool LoadHeaders(DB2FileSource* source, DB2FileLoadInfo const* loadInfo); bool Load(DB2FileSource* source, DB2FileLoadInfo const* loadInfo); char* AutoProduceData(uint32& count, char**& indexTable, std::vector<char*>& stringPool); char* AutoProduceStrings(char** indexTable, uint32 indexTableSize, uint32 locale); @@ -158,6 +175,8 @@ public: uint32 GetLayoutHash() const { return _header.LayoutHash; } uint32 GetMaxId() const; + DB2Header const& GetHeader() const { return _header; } + DB2SectionHeader const& GetSectionHeader(uint32 section) const; DB2Record GetRecord(uint32 recordNumber) const; DB2RecordCopy GetRecordCopy(uint32 copyNumber) const; diff --git a/src/common/DataStores/DB2Meta.cpp b/src/common/DataStores/DB2Meta.cpp index a2d0f06527a..551442c92a8 100644 --- a/src/common/DataStores/DB2Meta.cpp +++ b/src/common/DataStores/DB2Meta.cpp @@ -22,8 +22,8 @@ DB2MetaField::DB2MetaField(DBCFormer type, uint8 arraySize, bool isSigned) : Typ { } -DB2Meta::DB2Meta(int32 indexField, uint32 fieldCount, uint32 layoutHash, DB2MetaField const* fields, int32 parentIndexField) - : IndexField(indexField), ParentIndexField(parentIndexField), FieldCount(fieldCount), LayoutHash(layoutHash), Fields(fields) +DB2Meta::DB2Meta(uint32 fileDataId, int32 indexField, uint32 fieldCount, uint32 layoutHash, DB2MetaField const* fields, int32 parentIndexField) + : FileDataId(fileDataId),IndexField(indexField), ParentIndexField(parentIndexField), FieldCount(fieldCount), LayoutHash(layoutHash), Fields(fields) { } @@ -76,6 +76,46 @@ uint32 DB2Meta::GetRecordSize() const return size; } +uint32 DB2Meta::GetIndexFieldOffset() const +{ + if (IndexField == -1) + return 0; + + uint32 offset = 0; + + for (int32 i = 0; i < IndexField; ++i) + { + for (uint8 j = 0; j < Fields[i].ArraySize; ++j) + { + switch (Fields[i].Type) + { + case FT_BYTE: + offset += 1; + break; + case FT_SHORT: + offset += 2; + break; + case FT_FLOAT: + case FT_INT: + offset += 4; + break; + case FT_LONG: + offset += 8; + break; + case FT_STRING: + case FT_STRING_NOT_LOCALIZED: + offset += sizeof(char*); + break; + default: + ASSERT(false, "Unsupported column type specified %c", Fields[i].Type); + break; + } + } + } + + return offset; +} + int32 DB2Meta::GetParentIndexFieldOffset() const { if (ParentIndexField == -1) diff --git a/src/common/DataStores/DB2Meta.h b/src/common/DataStores/DB2Meta.h index 6dc163a5c3d..33b89e99fde 100644 --- a/src/common/DataStores/DB2Meta.h +++ b/src/common/DataStores/DB2Meta.h @@ -31,7 +31,7 @@ struct TC_COMMON_API DB2MetaField struct TC_COMMON_API DB2Meta { - DB2Meta(int32 indexField, uint32 fieldCount, uint32 layoutHash, DB2MetaField const* fields, int32 parentIndexField); + DB2Meta(uint32 fileDataId, int32 indexField, uint32 fieldCount, uint32 layoutHash, DB2MetaField const* fields, int32 parentIndexField); bool HasIndexFieldInData() const; @@ -41,6 +41,7 @@ struct TC_COMMON_API DB2Meta // Returns size of final loaded structure uint32 GetRecordSize() const; + uint32 GetIndexFieldOffset() const; int32 GetParentIndexFieldOffset() const; uint32 GetDbIndexField() const; @@ -48,6 +49,7 @@ struct TC_COMMON_API DB2Meta bool IsSignedField(uint32 field) const; + uint32 FileDataId; int32 IndexField; int32 ParentIndexField; uint32 FieldCount; diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index ddb0679e705..df045400b71 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -33,7 +33,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Achievement.db2 PrepareStatement(HOTFIX_SEL_ACHIEVEMENT, "SELECT Description, Title, Reward, ID, InstanceID, Faction, Supercedes, Category, MinimumCriteria, " - "Points, Flags, UiOrder, IconFileID, CriteriaTree, SharesCriteria FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH); + "Points, Flags, UiOrder, IconFileID, RewardItemID, CriteriaTree, SharesCriteria FROM achievement ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ACHIEVEMENT, "SELECT ID, Description_lang, Title_lang, Reward_lang FROM achievement_locale WHERE locale = ?", CONNECTION_SYNCH); // AnimationData.db2 @@ -68,7 +68,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ArtifactAppearance.db2 PrepareStatement(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT Name, ID, ArtifactAppearanceSetID, DisplayIndex, UnlockPlayerConditionID, " "ItemAppearanceModifierID, UiSwatchColor, UiModelSaturation, UiModelOpacity, OverrideShapeshiftFormID, OverrideShapeshiftDisplayID, " - "UiItemAppearanceID, UiAltItemAppearanceID, Flags, UiCameraID FROM artifact_appearance ORDER BY ID DESC", CONNECTION_SYNCH); + "UiItemAppearanceID, UiAltItemAppearanceID, Flags, UiCameraID, UsablePlayerConditionID FROM artifact_appearance ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ARTIFACT_APPEARANCE, "SELECT ID, Name_lang FROM artifact_appearance_locale WHERE locale = ?", CONNECTION_SYNCH); // ArtifactAppearanceSet.db2 @@ -151,7 +151,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_BROADCAST_TEXT, "SELECT ID, Text_lang, Text1_lang FROM broadcast_text_locale WHERE locale = ?", CONNECTION_SYNCH); // CfgRegions.db2 - PrepareStatement(HOTFIX_SEL_CFG_REGIONS, "SELECT ID, Tag, RegionID, Raidorigin, RegionGroupMask, ChallengeOrigin FROM cfg_regions ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CFG_REGIONS, "SELECT ID, Tag, RegionID, Raidorigin, RegionGroupMask, ChallengeOrigin, ChallengeTimeOffset1, " + "ChallengeTimeOffset2 FROM cfg_regions ORDER BY ID DESC", CONNECTION_SYNCH); // CharacterFacialHairStyles.db2 PrepareStatement(HOTFIX_SEL_CHARACTER_FACIAL_HAIR_STYLES, "SELECT ID, Geoset1, Geoset2, Geoset3, Geoset4, Geoset5, RaceID, SexID, VariationID" @@ -180,8 +181,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ChrClasses.db2 PrepareStatement(HOTFIX_SEL_CHR_CLASSES, "SELECT Name, Filename, NameMale, NameFemale, PetNameToken, ID, CreateScreenFileDataID, " - "SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, StartingLevel, Flags, CinematicSequenceID, DefaultSpec, PrimaryStatPriority, " - "DisplayPower, RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet FROM chr_classes ORDER BY ID DESC", CONNECTION_SYNCH); + "SelectScreenFileDataID, IconFileDataID, LowResScreenFileDataID, StartingLevel, SpellTextureBlobFileDataID, Flags, CinematicSequenceID, " + "DefaultSpec, PrimaryStatPriority, DisplayPower, RangedAttackPowerPerAgility, AttackPowerPerAgility, AttackPowerPerStrength, SpellClassSet" + " FROM chr_classes ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CLASSES, "SELECT ID, Name_lang, NameMale_lang, NameFemale_lang FROM chr_classes_locale WHERE locale = ?", CONNECTION_SYNCH); // ChrClassesXPowerTypes.db2 @@ -262,7 +264,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // CurrencyTypes.db2 PrepareStatement(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, " - "MaxEarnablePerWeek, Flags, Quality, FactionID FROM currency_types ORDER BY ID DESC", CONNECTION_SYNCH); + "MaxEarnablePerWeek, Flags, Quality, FactionID, ItemGroupSoundsID FROM currency_types ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name_lang, Description_lang FROM currency_types_locale WHERE locale = ?", CONNECTION_SYNCH); // Curve.db2 @@ -285,8 +287,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_LOCALE_STMT(HOTFIX_SEL_DIFFICULTY, "SELECT ID, Name_lang FROM difficulty_locale WHERE locale = ?", CONNECTION_SYNCH); // DungeonEncounter.db2 - PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, Bit, CreatureDisplayID, Flags, SpellIconFileID" - " FROM dungeon_encounter ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT Name, ID, MapID, DifficultyID, OrderIndex, CompleteWorldStateID, Bit, CreatureDisplayID, " + "Flags, SpellIconFileID, Faction FROM dungeon_encounter ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_DUNGEON_ENCOUNTER, "SELECT ID, Name_lang FROM dungeon_encounter_locale WHERE locale = ?", CONNECTION_SYNCH); // DurabilityCosts.db2 @@ -422,16 +424,17 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Heirloom.db2 PrepareStatement(HOTFIX_SEL_HEIRLOOM, "SELECT SourceText, ID, ItemID, LegacyUpgradedItemID, StaticUpgradedItemID, SourceTypeEnum, Flags, " - "LegacyItemID, UpgradeItemID1, UpgradeItemID2, UpgradeItemID3, UpgradeItemBonusListID1, UpgradeItemBonusListID2, UpgradeItemBonusListID3" - " FROM heirloom ORDER BY ID DESC", CONNECTION_SYNCH); + "LegacyItemID, UpgradeItemID1, UpgradeItemID2, UpgradeItemID3, UpgradeItemID4, UpgradeItemBonusListID1, UpgradeItemBonusListID2, " + "UpgradeItemBonusListID3, UpgradeItemBonusListID4 FROM heirloom ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_HEIRLOOM, "SELECT ID, SourceText_lang FROM heirloom_locale WHERE locale = ?", CONNECTION_SYNCH); // Holidays.db2 PrepareStatement(HOTFIX_SEL_HOLIDAYS, "SELECT ID, Region, Looping, HolidayNameID, HolidayDescriptionID, Priority, CalendarFilterType, Flags, " "Duration1, Duration2, Duration3, Duration4, Duration5, Duration6, Duration7, Duration8, Duration9, Duration10, Date1, Date2, Date3, Date4, " - "Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, Date14, Date15, Date16, CalendarFlags1, CalendarFlags2, CalendarFlags3, " - "CalendarFlags4, CalendarFlags5, CalendarFlags6, CalendarFlags7, CalendarFlags8, CalendarFlags9, CalendarFlags10, TextureFileDataID1, " - "TextureFileDataID2, TextureFileDataID3 FROM holidays ORDER BY ID DESC", CONNECTION_SYNCH); + "Date5, Date6, Date7, Date8, Date9, Date10, Date11, Date12, Date13, Date14, Date15, Date16, Date17, Date18, Date19, Date20, Date21, Date22, " + "Date23, Date24, Date25, Date26, CalendarFlags1, CalendarFlags2, CalendarFlags3, CalendarFlags4, CalendarFlags5, CalendarFlags6, " + "CalendarFlags7, CalendarFlags8, CalendarFlags9, CalendarFlags10, TextureFileDataID1, TextureFileDataID2, TextureFileDataID3 FROM holidays" + " ORDER BY ID DESC", CONNECTION_SYNCH); // ImportPriceArmor.db2 PrepareStatement(HOTFIX_SEL_IMPORT_PRICE_ARMOR, "SELECT ID, ClothModifier, LeatherModifier, ChainModifier, PlateModifier FROM import_price_armor" @@ -481,7 +484,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() "ParentItemBonusTreeID FROM item_bonus_tree_node ORDER BY ID DESC", CONNECTION_SYNCH); // ItemChildEquipment.db2 - PrepareStatement(HOTFIX_SEL_ITEM_CHILD_EQUIPMENT, "SELECT ID, ChildItemID, ChildItemEquipSlot, ParentItemID FROM item_child_equipment" + PrepareStatement(HOTFIX_SEL_ITEM_CHILD_EQUIPMENT, "SELECT ID, ParentItemID, ChildItemID, ChildItemEquipSlot FROM item_child_equipment" " ORDER BY ID DESC", CONNECTION_SYNCH); // ItemClass.db2 @@ -526,7 +529,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() " FROM item_extended_cost ORDER BY ID DESC", CONNECTION_SYNCH); // ItemLevelSelector.db2 - PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, MinItemLevel, ItemLevelSelectorQualitySetID FROM item_level_selector ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR, "SELECT ID, MinItemLevel, ItemLevelSelectorQualitySetID, AzeriteUnlockMappingSet" + " FROM item_level_selector ORDER BY ID DESC", CONNECTION_SYNCH); // ItemLevelSelectorQuality.db2 PrepareStatement(HOTFIX_SEL_ITEM_LEVEL_SELECTOR_QUALITY, "SELECT ID, QualityItemBonusListID, Quality, ParentILSQualitySetID" @@ -550,16 +554,6 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ItemPriceBase.db2 PrepareStatement(HOTFIX_SEL_ITEM_PRICE_BASE, "SELECT ID, ItemLevel, Armor, Weapon FROM item_price_base ORDER BY ID DESC", CONNECTION_SYNCH); - // ItemRandomProperties.db2 - PrepareStatement(HOTFIX_SEL_ITEM_RANDOM_PROPERTIES, "SELECT ID, Name, Enchantment1, Enchantment2, Enchantment3, Enchantment4, Enchantment5" - " FROM item_random_properties ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_RANDOM_PROPERTIES, "SELECT ID, Name_lang FROM item_random_properties_locale WHERE locale = ?", CONNECTION_SYNCH); - - // ItemRandomSuffix.db2 - PrepareStatement(HOTFIX_SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name, Enchantment1, Enchantment2, Enchantment3, Enchantment4, Enchantment5, " - "AllocationPct1, AllocationPct2, AllocationPct3, AllocationPct4, AllocationPct5 FROM item_random_suffix ORDER BY ID DESC", CONNECTION_SYNCH); - PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_RANDOM_SUFFIX, "SELECT ID, Name_lang FROM item_random_suffix_locale WHERE locale = ?", CONNECTION_SYNCH); - // ItemSearchName.db2 PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT AllowableRace, Display, ID, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " "AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4" @@ -583,12 +577,12 @@ void HotfixDatabaseConnection::DoPrepareStatements() "StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, StatPercentEditor10, Stackable, " "MaxCount, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, PriceRandomValue, Flags1, Flags2, Flags3, Flags4, " "FactionRelated, ItemNameDescriptionID, RequiredTransmogHoliday, RequiredHoliday, LimitCategory, GemProperties, SocketMatchEnchantmentId, " - "TotemCategoryID, InstanceBound, ZoneBound, ItemSet, ItemRandomSuffixGroupID, RandomSelect, LockID, StartQuestID, PageID, ItemDelay, " - "ScalingStatDistributionID, MinFactionID, RequiredSkillRank, RequiredSkill, ItemLevel, AllowableClass, ExpansionID, ArtifactID, SpellWeight, " - "SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, PageMaterialID, LanguageID, Bonding, DamageDamageType, " - "StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, StatModifierBonusStat5, " - "StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, StatModifierBonusStat10, ContainerSlots, " - "MinReputation, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse ORDER BY ID DESC", CONNECTION_SYNCH); + "TotemCategoryID, InstanceBound, ZoneBound, ItemSet, LockID, StartQuestID, PageID, ItemDelay, ScalingStatDistributionID, MinFactionID, " + "RequiredSkillRank, RequiredSkill, ItemLevel, AllowableClass, ExpansionID, ArtifactID, SpellWeight, SpellWeightCategory, SocketType1, " + "SocketType2, SocketType3, SheatheType, Material, PageMaterialID, LanguageID, Bonding, DamageDamageType, StatModifierBonusStat1, " + "StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, StatModifierBonusStat5, StatModifierBonusStat6, " + "StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, StatModifierBonusStat10, ContainerSlots, MinReputation, " + "RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang" " FROM item_sparse_locale WHERE locale = ?", CONNECTION_SYNCH); @@ -643,13 +637,13 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Map.db2 PrepareStatement(HOTFIX_SEL_MAP, "SELECT ID, Directory, MapName, MapDescription0, MapDescription1, PvpShortDescription, PvpLongDescription, " "CorpseX, CorpseY, MapType, InstanceType, ExpansionID, AreaTableID, LoadingScreenID, TimeOfDayOverride, ParentMapID, CosmeticParentMapID, " - "TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, Flags1, Flags2 FROM map ORDER BY ID DESC", CONNECTION_SYNCH); + "TimeOffset, MinimapIconScale, CorpseMapID, MaxPlayers, WindSettingsID, ZmpFileDataID, WdtFileDataID, Flags1, Flags2 FROM map ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP, "SELECT ID, MapName_lang, MapDescription0_lang, MapDescription1_lang, PvpShortDescription_lang, " "PvpLongDescription_lang FROM map_locale WHERE locale = ?", CONNECTION_SYNCH); // MapDifficulty.db2 - PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message, ItemContextPickerID, ContentTuningID, DifficultyID, LockID, ResetInterval, " - "MaxPlayers, ItemContext, Flags, MapID FROM map_difficulty ORDER BY ID DESC", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message, DifficultyID, LockID, ResetInterval, MaxPlayers, ItemContext, " + "ItemContextPickerID, Flags, ContentTuningID, MapID FROM map_difficulty ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_MAP_DIFFICULTY, "SELECT ID, Message_lang FROM map_difficulty_locale WHERE locale = ?", CONNECTION_SYNCH); // ModifierTree.db2 @@ -995,8 +989,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() // TaxiNodes.db2 PrepareStatement(HOTFIX_SEL_TAXI_NODES, "SELECT Name, PosX, PosY, PosZ, MapOffsetX, MapOffsetY, FlightMapOffsetX, FlightMapOffsetY, ID, " - "ContinentID, ConditionID, CharacterBitNumber, Flags, UiTextureKitID, Facing, SpecialIconConditionID, VisibilityConditionID, " - "MountCreatureID1, MountCreatureID2 FROM taxi_nodes ORDER BY ID DESC", CONNECTION_SYNCH); + "ContinentID, ConditionID, CharacterBitNumber, Flags, UiTextureKitID, MinimapAtlasMemberID, Facing, SpecialIconConditionID, " + "VisibilityConditionID, MountCreatureID1, MountCreatureID2 FROM taxi_nodes ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TAXI_NODES, "SELECT ID, Name_lang FROM taxi_nodes_locale WHERE locale = ?", CONNECTION_SYNCH); // TaxiPath.db2 @@ -1019,7 +1013,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // TransmogSet.db2 PrepareStatement(HOTFIX_SEL_TRANSMOG_SET, "SELECT Name, ID, ClassMask, TrackingQuestID, Flags, TransmogSetGroupID, ItemNameDescriptionID, " - "ParentTransmogSetID, ExpansionID, UiOrder FROM transmog_set ORDER BY ID DESC", CONNECTION_SYNCH); + "ParentTransmogSetID, Unknown810, ExpansionID, PatchID, UiOrder FROM transmog_set ORDER BY ID DESC", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_SET, "SELECT ID, Name_lang FROM transmog_set_locale WHERE locale = ?", CONNECTION_SYNCH); // TransmogSetGroup.db2 diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 9ea81915ba3..3406421a8fd 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -300,12 +300,6 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_ITEM_PRICE_BASE, - HOTFIX_SEL_ITEM_RANDOM_PROPERTIES, - HOTFIX_SEL_ITEM_RANDOM_PROPERTIES_LOCALE, - - HOTFIX_SEL_ITEM_RANDOM_SUFFIX, - HOTFIX_SEL_ITEM_RANDOM_SUFFIX_LOCALE, - HOTFIX_SEL_ITEM_SEARCH_NAME, HOTFIX_SEL_ITEM_SEARCH_NAME_LOCALE, diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index 2822fb05180..02993db8522 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -43,6 +43,7 @@ struct AchievementLoadInfo { true, FT_INT, "Flags" }, { true, FT_SHORT, "UiOrder" }, { true, FT_INT, "IconFileID" }, + { true, FT_INT, "RewardItemID" }, { false, FT_INT, "CriteriaTree" }, { true, FT_SHORT, "SharesCriteria" }, }; @@ -231,6 +232,7 @@ struct ArtifactAppearanceLoadInfo { false, FT_INT, "UiAltItemAppearanceID" }, { false, FT_BYTE, "Flags" }, { false, FT_SHORT, "UiCameraID" }, + { false, FT_INT, "UsablePlayerConditionID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ArtifactAppearanceMeta::Instance(), HOTFIX_SEL_ARTIFACT_APPEARANCE); return &loadInfo; @@ -527,7 +529,7 @@ struct BattlePetSpeciesStateLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_BYTE, "BattlePetStateID" }, + { false, FT_SHORT, "BattlePetStateID" }, { true, FT_INT, "Value" }, { false, FT_SHORT, "BattlePetSpeciesID" }, }; @@ -621,6 +623,8 @@ struct CfgRegionsLoadInfo { false, FT_INT, "Raidorigin" }, { false, FT_BYTE, "RegionGroupMask" }, { false, FT_INT, "ChallengeOrigin" }, + { true, FT_INT, "ChallengeTimeOffset1" }, + { true, FT_INT, "ChallengeTimeOffset2" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, Cfg_RegionsMeta::Instance(), HOTFIX_SEL_CFG_REGIONS); return &loadInfo; @@ -780,6 +784,7 @@ struct ChrClassesLoadInfo { false, FT_INT, "IconFileDataID" }, { false, FT_INT, "LowResScreenFileDataID" }, { true, FT_INT, "StartingLevel" }, + { false, FT_INT, "SpellTextureBlobFileDataID" }, { false, FT_SHORT, "Flags" }, { false, FT_SHORT, "CinematicSequenceID" }, { false, FT_SHORT, "DefaultSpec" }, @@ -1194,6 +1199,7 @@ struct CurrencyTypesLoadInfo { false, FT_INT, "Flags" }, { true, FT_BYTE, "Quality" }, { true, FT_INT, "FactionID" }, + { true, FT_INT, "ItemGroupSoundsID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, CurrencyTypesMeta::Instance(), HOTFIX_SEL_CURRENCY_TYPES); return &loadInfo; @@ -1281,7 +1287,7 @@ struct DifficultyLoadInfo { false, FT_BYTE, "FallbackDifficultyID" }, { false, FT_BYTE, "MinPlayers" }, { false, FT_BYTE, "MaxPlayers" }, - { false, FT_BYTE, "Flags" }, + { false, FT_SHORT, "Flags" }, { false, FT_BYTE, "ItemContext" }, { false, FT_BYTE, "ToggleDifficultyID" }, { false, FT_SHORT, "GroupSizeHealthCurveID" }, @@ -1304,10 +1310,12 @@ struct DungeonEncounterLoadInfo { true, FT_SHORT, "MapID" }, { true, FT_BYTE, "DifficultyID" }, { true, FT_INT, "OrderIndex" }, + { true, FT_INT, "CompleteWorldStateID" }, { true, FT_BYTE, "Bit" }, { true, FT_INT, "CreatureDisplayID" }, { false, FT_BYTE, "Flags" }, { true, FT_INT, "SpellIconFileID" }, + { true, FT_INT, "Faction" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, DungeonEncounterMeta::Instance(), HOTFIX_SEL_DUNGEON_ENCOUNTER); return &loadInfo; @@ -1487,7 +1495,7 @@ struct FactionLoadInfo { true, FT_SHORT, "ReputationIndex" }, { false, FT_SHORT, "ParentFactionID" }, { false, FT_BYTE, "Expansion" }, - { false, FT_BYTE, "FriendshipRepID" }, + { false, FT_INT, "FriendshipRepID" }, { false, FT_BYTE, "Flags" }, { false, FT_SHORT, "ParagonFactionID" }, { true, FT_SHORT, "ReputationClassMask1" }, @@ -1991,9 +1999,11 @@ struct HeirloomLoadInfo { true, FT_INT, "UpgradeItemID1" }, { true, FT_INT, "UpgradeItemID2" }, { true, FT_INT, "UpgradeItemID3" }, + { true, FT_INT, "UpgradeItemID4" }, { false, FT_SHORT, "UpgradeItemBonusListID1" }, { false, FT_SHORT, "UpgradeItemBonusListID2" }, { false, FT_SHORT, "UpgradeItemBonusListID3" }, + { false, FT_SHORT, "UpgradeItemBonusListID4" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, HeirloomMeta::Instance(), HOTFIX_SEL_HEIRLOOM); return &loadInfo; @@ -2040,6 +2050,16 @@ struct HolidaysLoadInfo { false, FT_INT, "Date14" }, { false, FT_INT, "Date15" }, { false, FT_INT, "Date16" }, + { false, FT_INT, "Date17" }, + { false, FT_INT, "Date18" }, + { false, FT_INT, "Date19" }, + { false, FT_INT, "Date20" }, + { false, FT_INT, "Date21" }, + { false, FT_INT, "Date22" }, + { false, FT_INT, "Date23" }, + { false, FT_INT, "Date24" }, + { false, FT_INT, "Date25" }, + { false, FT_INT, "Date26" }, { false, FT_BYTE, "CalendarFlags1" }, { false, FT_BYTE, "CalendarFlags2" }, { false, FT_BYTE, "CalendarFlags3" }, @@ -2287,9 +2307,9 @@ struct ItemChildEquipmentLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, + { true, FT_INT, "ParentItemID" }, { true, FT_INT, "ChildItemID" }, { false, FT_BYTE, "ChildItemEquipSlot" }, - { true, FT_INT, "ParentItemID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemChildEquipmentMeta::Instance(), HOTFIX_SEL_ITEM_CHILD_EQUIPMENT); return &loadInfo; @@ -2522,6 +2542,7 @@ struct ItemLevelSelectorLoadInfo { false, FT_INT, "ID" }, { false, FT_SHORT, "MinItemLevel" }, { false, FT_SHORT, "ItemLevelSelectorQualitySetID" }, + { false, FT_SHORT, "AzeriteUnlockMappingSet" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemLevelSelectorMeta::Instance(), HOTFIX_SEL_ITEM_LEVEL_SELECTOR); return &loadInfo; @@ -2625,49 +2646,6 @@ struct ItemPriceBaseLoadInfo } }; -struct ItemRandomPropertiesLoadInfo -{ - static DB2LoadInfo const* Instance() - { - static DB2FieldMeta const fields[] = - { - { false, FT_INT, "ID" }, - { false, FT_STRING, "Name" }, - { false, FT_SHORT, "Enchantment1" }, - { false, FT_SHORT, "Enchantment2" }, - { false, FT_SHORT, "Enchantment3" }, - { false, FT_SHORT, "Enchantment4" }, - { false, FT_SHORT, "Enchantment5" }, - }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemRandomPropertiesMeta::Instance(), HOTFIX_SEL_ITEM_RANDOM_PROPERTIES); - return &loadInfo; - } -}; - -struct ItemRandomSuffixLoadInfo -{ - static DB2LoadInfo const* Instance() - { - static DB2FieldMeta const fields[] = - { - { false, FT_INT, "ID" }, - { false, FT_STRING, "Name" }, - { false, FT_SHORT, "Enchantment1" }, - { false, FT_SHORT, "Enchantment2" }, - { false, FT_SHORT, "Enchantment3" }, - { false, FT_SHORT, "Enchantment4" }, - { false, FT_SHORT, "Enchantment5" }, - { false, FT_SHORT, "AllocationPct1" }, - { false, FT_SHORT, "AllocationPct2" }, - { false, FT_SHORT, "AllocationPct3" }, - { false, FT_SHORT, "AllocationPct4" }, - { false, FT_SHORT, "AllocationPct5" }, - }; - static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ItemRandomSuffixMeta::Instance(), HOTFIX_SEL_ITEM_RANDOM_SUFFIX); - return &loadInfo; - } -}; - struct ItemSearchNameLoadInfo { static DB2LoadInfo const* Instance() @@ -2809,8 +2787,6 @@ struct ItemSparseLoadInfo { false, FT_SHORT, "InstanceBound" }, { false, FT_SHORT, "ZoneBound" }, { false, FT_SHORT, "ItemSet" }, - { false, FT_SHORT, "ItemRandomSuffixGroupID" }, - { false, FT_SHORT, "RandomSelect" }, { false, FT_SHORT, "LockID" }, { false, FT_SHORT, "StartQuestID" }, { false, FT_SHORT, "PageID" }, @@ -3199,6 +3175,7 @@ struct MapLoadInfo { false, FT_BYTE, "MaxPlayers" }, { true, FT_SHORT, "WindSettingsID" }, { true, FT_INT, "ZmpFileDataID" }, + { true, FT_INT, "WdtFileDataID" }, { true, FT_INT, "Flags1" }, { true, FT_INT, "Flags2" }, }; @@ -3215,15 +3192,15 @@ struct MapDifficultyLoadInfo { { false, FT_INT, "ID" }, { false, FT_STRING, "Message" }, - { false, FT_INT, "ItemContextPickerID" }, + { true, FT_INT, "DifficultyID" }, + { true, FT_INT, "LockID" }, + { true, FT_BYTE, "ResetInterval" }, + { true, FT_INT, "MaxPlayers" }, + { true, FT_INT, "ItemContext" }, + { true, FT_INT, "ItemContextPickerID" }, + { true, FT_INT, "Flags" }, { true, FT_INT, "ContentTuningID" }, - { false, FT_BYTE, "DifficultyID" }, - { false, FT_BYTE, "LockID" }, - { false, FT_BYTE, "ResetInterval" }, - { false, FT_BYTE, "MaxPlayers" }, - { false, FT_BYTE, "ItemContext" }, - { false, FT_BYTE, "Flags" }, - { false, FT_SHORT, "MapID" }, + { true, FT_INT, "MapID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, MapDifficultyMeta::Instance(), HOTFIX_SEL_MAP_DIFFICULTY); return &loadInfo; @@ -4182,7 +4159,7 @@ struct SoundKitLoadInfo static DB2FieldMeta const fields[] = { { false, FT_INT, "ID" }, - { false, FT_BYTE, "SoundType" }, + { true, FT_INT, "SoundType" }, { false, FT_FLOAT, "VolumeFloat" }, { false, FT_SHORT, "Flags" }, { false, FT_FLOAT, "MinDistance" }, @@ -5026,10 +5003,11 @@ struct TaxiNodesLoadInfo { false, FT_FLOAT, "FlightMapOffsetY" }, { false, FT_INT, "ID" }, { false, FT_SHORT, "ContinentID" }, - { false, FT_SHORT, "ConditionID" }, + { true, FT_INT, "ConditionID" }, { false, FT_SHORT, "CharacterBitNumber" }, { false, FT_BYTE, "Flags" }, { true, FT_INT, "UiTextureKitID" }, + { true, FT_INT, "MinimapAtlasMemberID" }, { false, FT_FLOAT, "Facing" }, { false, FT_INT, "SpecialIconConditionID" }, { false, FT_INT, "VisibilityConditionID" }, @@ -5072,8 +5050,8 @@ struct TaxiPathNodeLoadInfo { false, FT_SHORT, "ContinentID" }, { false, FT_BYTE, "Flags" }, { false, FT_INT, "Delay" }, - { false, FT_SHORT, "ArrivalEventID" }, - { false, FT_SHORT, "DepartureEventID" }, + { true, FT_INT, "ArrivalEventID" }, + { true, FT_INT, "DepartureEventID" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, TaxiPathNodeMeta::Instance(), HOTFIX_SEL_TAXI_PATH_NODE); return &loadInfo; @@ -5141,7 +5119,9 @@ struct TransmogSetLoadInfo { false, FT_INT, "TransmogSetGroupID" }, { true, FT_INT, "ItemNameDescriptionID" }, { false, FT_SHORT, "ParentTransmogSetID" }, + { false, FT_BYTE, "Unknown810" }, { false, FT_BYTE, "ExpansionID" }, + { true, FT_INT, "PatchID" }, { true, FT_SHORT, "UiOrder" }, }; static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, TransmogSetMeta::Instance(), HOTFIX_SEL_TRANSMOG_SET); @@ -5500,7 +5480,7 @@ struct WorldEffectLoadInfo { false, FT_INT, "ID" }, { false, FT_INT, "QuestFeedbackEffectID" }, { false, FT_BYTE, "WhenToDisplay" }, - { false, FT_BYTE, "TargetType" }, + { true, FT_BYTE, "TargetType" }, { true, FT_INT, "TargetAsset" }, { false, FT_INT, "PlayerConditionID" }, { false, FT_SHORT, "CombatConditionID" }, diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index 82e82b4203c..04fc9b76b97 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -24,7 +24,7 @@ struct AchievementMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[15] = + static DB2MetaField const fields[16] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -39,10 +39,11 @@ struct AchievementMeta { FT_INT, 1, true }, { FT_SHORT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(3, 15, 0x13CB7BEE, fields, 11); + static DB2Meta instance(1260179, 3, 16, 0x126B44E5, fields, 11); return &instance; } }; @@ -58,7 +59,7 @@ struct Achievement_CategoryMeta { FT_SHORT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(1, 4, 0x0B008A91, fields, 3); + static DB2Meta instance(1324299, 1, 4, 0x0B008A91, fields, 3); return &instance; } }; @@ -87,12 +88,12 @@ struct AdventureJournalMeta { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_SHORT, 1, false }, - { FT_BYTE, 1, false }, + { FT_INT, 1, false }, { FT_SHORT, 1, false }, { FT_INT, 2, false }, { FT_BYTE, 2, false }, }; - static DB2Meta instance(-1, 22, 0x9D620FC8, fields, -1); + static DB2Meta instance(1115949, -1, 22, 0x4FEAA1F0, fields, -1); return &instance; } }; @@ -116,7 +117,7 @@ struct AdventureMapPOIMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 12, 0x4AABC870, fields, -1); + static DB2Meta instance(1267070, -1, 12, 0x4AABC870, fields, -1); return &instance; } }; @@ -136,7 +137,7 @@ struct AlliedRaceMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 8, 0xE89FA2D2, fields, -1); + static DB2Meta instance(1710672, 0, 8, 0xE89FA2D2, fields, -1); return &instance; } }; @@ -153,7 +154,7 @@ struct AlliedRaceRacialAbilityMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x96902165, fields, 4); + static DB2Meta instance(1720145, -1, 5, 0x96902165, fields, 4); return &instance; } }; @@ -168,7 +169,7 @@ struct AnimKitMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x0C4BCDEC, fields, -1); + static DB2Meta instance(1304323, -1, 3, 0x0C4BCDEC, fields, -1); return &instance; } }; @@ -185,7 +186,7 @@ struct AnimKitBoneSetMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 5, 0x1C432613, fields, -1); + static DB2Meta instance(1375433, -1, 5, 0x1C432613, fields, -1); return &instance; } }; @@ -199,7 +200,7 @@ struct AnimKitBoneSetAliasMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0xB307E8FC, fields, -1); + static DB2Meta instance(1266937, -1, 2, 0xB307E8FC, fields, -1); return &instance; } }; @@ -212,7 +213,7 @@ struct AnimKitConfigMeta { { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 1, 0x972D46F8, fields, -1); + static DB2Meta instance(1300872, -1, 1, 0x972D46F8, fields, -1); return &instance; } }; @@ -227,7 +228,7 @@ struct AnimKitConfigBoneSetMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x48518303, fields, 2); + static DB2Meta instance(1300873, -1, 3, 0x48518303, fields, 2); return &instance; } }; @@ -240,7 +241,7 @@ struct AnimKitPriorityMeta { { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 1, 0x27ED596B, fields, -1); + static DB2Meta instance(1266540, -1, 1, 0x27ED596B, fields, -1); return &instance; } }; @@ -257,7 +258,7 @@ struct AnimKitReplacementMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(0, 5, 0xB0BBA55F, fields, 4); + static DB2Meta instance(1559807, 0, 5, 0xB0BBA55F, fields, 4); return &instance; } }; @@ -287,7 +288,7 @@ struct AnimKitSegmentMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 18, 0xEBF796F5, fields, 0); + static DB2Meta instance(1304324, -1, 18, 0xEBF796F5, fields, 0); return &instance; } }; @@ -304,7 +305,7 @@ struct AnimReplacementMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(0, 5, 0x5D91ABFD, fields, 4); + static DB2Meta instance(1301100, 0, 5, 0x5D91ABFD, fields, 4); return &instance; } }; @@ -317,7 +318,7 @@ struct AnimReplacementSetMeta { { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 1, 0x15AFC3D6, fields, -1); + static DB2Meta instance(1284817, -1, 1, 0x15AFC3D6, fields, -1); return &instance; } }; @@ -333,7 +334,7 @@ struct AnimationDataMeta { FT_INT, 1, true }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 4, 0xFB408E92, fields, -1); + static DB2Meta instance(1375431, -1, 4, 0xFB408E92, fields, -1); return &instance; } }; @@ -350,7 +351,7 @@ struct AoiBoxMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x173154C8, fields, 4); + static DB2Meta instance(2140223, -1, 5, 0x173154C8, fields, 4); return &instance; } }; @@ -367,7 +368,7 @@ struct AreaConditionalDataMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(1, 5, 0xBE8C656A, fields, 4); + static DB2Meta instance(2123730, 1, 5, 0xBE8C656A, fields, 4); return &instance; } }; @@ -383,7 +384,7 @@ struct AreaFarClipOverrideMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xD7028AD6, fields, -1); + static DB2Meta instance(1537162, -1, 4, 0xD7028AD6, fields, -1); return &instance; } }; @@ -397,7 +398,7 @@ struct AreaGroupMemberMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x27C84A16, fields, 1); + static DB2Meta instance(1093406, -1, 2, 0x27C84A16, fields, 1); return &instance; } }; @@ -406,7 +407,7 @@ struct AreaPOIMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[17] = + static DB2MetaField const fields[18] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -423,10 +424,11 @@ struct AreaPOIMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, + { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(2, 17, 0x34D56581, fields, 11); + static DB2Meta instance(1000630, 2, 18, 0xB6C3F3AB, fields, 11); return &instance; } }; @@ -443,7 +445,7 @@ struct AreaPOIStateMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 5, 0xEB8CA12C, fields, 4); + static DB2Meta instance(1000631, -1, 5, 0xEB8CA12C, fields, 4); return &instance; } }; @@ -478,7 +480,7 @@ struct AreaTableMeta { FT_INT, 2, true }, { FT_SHORT, 4, false }, }; - static DB2Meta instance(-1, 23, 0x22229BE7, fields, -1); + static DB2Meta instance(1353545, -1, 23, 0x22229BE7, fields, -1); return &instance; } }; @@ -505,7 +507,7 @@ struct AreaTriggerMeta { FT_SHORT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(1, 15, 0x61A4F966, fields, 2); + static DB2Meta instance(1354401, 1, 15, 0x61A4F966, fields, 2); return &instance; } }; @@ -518,7 +520,7 @@ struct AreaTriggerActionSetMeta { { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xBE34F649, fields, -1); + static DB2Meta instance(1352378, -1, 1, 0xBE34F649, fields, -1); return &instance; } }; @@ -531,7 +533,7 @@ struct AreaTriggerBoxMeta { { FT_FLOAT, 3, true }, }; - static DB2Meta instance(-1, 1, 0x14918F12, fields, -1); + static DB2Meta instance(1332554, -1, 1, 0x14918F12, fields, -1); return &instance; } }; @@ -545,7 +547,7 @@ struct AreaTriggerCreatePropertiesMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xAAE6E300, fields, -1); + static DB2Meta instance(1937227, -1, 2, 0xAAE6E300, fields, -1); return &instance; } }; @@ -560,7 +562,7 @@ struct AreaTriggerCylinderMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x867834A9, fields, -1); + static DB2Meta instance(1121943, -1, 3, 0x867834A9, fields, -1); return &instance; } }; @@ -573,7 +575,7 @@ struct AreaTriggerSphereMeta { { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF1D2220B, fields, -1); + static DB2Meta instance(1315630, -1, 1, 0xF1D2220B, fields, -1); return &instance; } }; @@ -590,7 +592,7 @@ struct ArmorLocationMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x1C0BBC02, fields, -1); + static DB2Meta instance(1284818, -1, 5, 0x1C0BBC02, fields, -1); return &instance; } }; @@ -613,7 +615,7 @@ struct ArtifactMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(1, 11, 0x780D61EA, fields, -1); + static DB2Meta instance(1007934, 1, 11, 0x780D61EA, fields, -1); return &instance; } }; @@ -622,7 +624,7 @@ struct ArtifactAppearanceMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[15] = + static DB2MetaField const fields[16] = { { FT_STRING, 1, true }, { FT_INT, 1, false }, @@ -639,8 +641,9 @@ struct ArtifactAppearanceMeta { FT_INT, 1, false }, { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, + { FT_INT, 1, false }, }; - static DB2Meta instance(1, 15, 0x330F75C9, fields, 2); + static DB2Meta instance(1116407, 1, 16, 0xA4ABF40A, fields, 2); return &instance; } }; @@ -661,7 +664,7 @@ struct ArtifactAppearanceSetMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(2, 9, 0xBB4DB4D3, fields, 8); + static DB2Meta instance(1116408, 2, 9, 0xBB4DB4D3, fields, 8); return &instance; } }; @@ -675,7 +678,7 @@ struct ArtifactCategoryMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x484A6D55, fields, -1); + static DB2Meta instance(1376210, -1, 2, 0x484A6D55, fields, -1); return &instance; } }; @@ -690,7 +693,7 @@ struct ArtifactItemToTransmogMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xD54CBBE1, fields, 0); + static DB2Meta instance(2029780, -1, 3, 0xD54CBBE1, fields, 0); return &instance; } }; @@ -709,7 +712,7 @@ struct ArtifactPowerMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(1, 7, 0x1F7637C8, fields, 2); + static DB2Meta instance(1007937, 1, 7, 0x1F7637C8, fields, 2); return &instance; } }; @@ -723,7 +726,7 @@ struct ArtifactPowerLinkMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xBB7E3584, fields, -1); + static DB2Meta instance(1133731, -1, 2, 0xBB7E3584, fields, -1); return &instance; } }; @@ -736,7 +739,7 @@ struct ArtifactPowerPickerMeta { { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 1, 0x253242BA, fields, -1); + static DB2Meta instance(1597467, -1, 1, 0x253242BA, fields, -1); return &instance; } }; @@ -753,7 +756,7 @@ struct ArtifactPowerRankMeta { FT_FLOAT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 5, 0x7DC78F1E, fields, 4); + static DB2Meta instance(1261405, -1, 5, 0x7DC78F1E, fields, 4); return &instance; } }; @@ -766,7 +769,7 @@ struct ArtifactQuestXPMeta { { FT_INT, 10, false }, }; - static DB2Meta instance(-1, 1, 0x7E00C5B6, fields, -1); + static DB2Meta instance(1036203, -1, 1, 0x7E00C5B6, fields, -1); return &instance; } }; @@ -783,7 +786,7 @@ struct ArtifactTierMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 5, 0xA47F6D9D, fields, -1); + static DB2Meta instance(1600114, -1, 5, 0xA47F6D9D, fields, -1); return &instance; } }; @@ -800,7 +803,7 @@ struct ArtifactUnlockMeta { FT_INT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0x40C54B9F, fields, 4); + static DB2Meta instance(1094540, -1, 5, 0x40C54B9F, fields, 4); return &instance; } }; @@ -816,7 +819,7 @@ struct AuctionHouseMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x61E641BA, fields, -1); + static DB2Meta instance(1237439, -1, 4, 0x61E641BA, fields, -1); return &instance; } }; @@ -831,7 +834,7 @@ struct AzeriteEmpoweredItemMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x4078BECD, fields, -1); + static DB2Meta instance(1846046, -1, 3, 0x4078BECD, fields, -1); return &instance; } }; @@ -844,7 +847,7 @@ struct AzeriteItemMeta { { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xDAC6A93C, fields, -1); + static DB2Meta instance(1846048, -1, 1, 0xDAC6A93C, fields, -1); return &instance; } }; @@ -858,7 +861,7 @@ struct AzeriteItemMilestonePowerMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x7C4DC43D, fields, -1); + static DB2Meta instance(1915395, -1, 2, 0x7C4DC43D, fields, -1); return &instance; } }; @@ -874,7 +877,7 @@ struct AzeritePowerMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xE7FE46AC, fields, -1); + static DB2Meta instance(1846044, -1, 4, 0xE7FE46AC, fields, -1); return &instance; } }; @@ -886,12 +889,12 @@ struct AzeritePowerSetMemberMeta static DB2MetaField const fields[5] = { { FT_SHORT, 1, false }, + { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, - { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 5, 0xDB24A281, fields, 4); + static DB2Meta instance(1846040, -1, 5, 0x62C2D471, fields, 0); return &instance; } }; @@ -907,7 +910,37 @@ struct AzeriteTierUnlockMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x2B04F059, fields, 3); + static DB2Meta instance(1846043, -1, 4, 0x2B04F059, fields, 3); + return &instance; + } +}; + +struct AzeriteTierUnlockSetMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[1] = + { + { FT_INT, 1, true }, + }; + static DB2Meta instance(2446322, -1, 1, 0x78F7B48B, fields, -1); + return &instance; + } +}; + +struct AzeriteUnlockMappingMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[5] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2564314, -1, 5, 0x102F3E5F, fields, 4); return &instance; } }; @@ -920,7 +953,7 @@ struct BankBagSlotPricesMeta { { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 1, 0x897A4D1E, fields, -1); + static DB2Meta instance(1284819, -1, 1, 0x897A4D1E, fields, -1); return &instance; } }; @@ -935,7 +968,7 @@ struct BannedAddonsMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xF4525F59, fields, -1); + static DB2Meta instance(1373459, -1, 3, 0xF4525F59, fields, -1); return &instance; } }; @@ -955,7 +988,31 @@ struct BarberShopStyleMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(2, 8, 0x2DD3952C, fields, -1); + static DB2Meta instance(1237437, 2, 8, 0x2DD3952C, fields, -1); + return &instance; + } +}; + +struct BarrageEffectMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[12] = + { + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_BYTE, 1, true }, + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + }; + static DB2Meta instance(2499852, -1, 12, 0x0CE31822, fields, -1); return &instance; } }; @@ -974,7 +1031,7 @@ struct BattlePetAbilityMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 7, 0x4C3AF583, fields, -1); + static DB2Meta instance(841610, -1, 7, 0x4C3AF583, fields, -1); return &instance; } }; @@ -993,7 +1050,7 @@ struct BattlePetAbilityEffectMeta { FT_SHORT, 1, false }, { FT_SHORT, 6, true }, }; - static DB2Meta instance(0, 7, 0xC850B549, fields, 1); + static DB2Meta instance(801575, 0, 7, 0xC850B549, fields, 1); return &instance; } }; @@ -1004,11 +1061,11 @@ struct BattlePetAbilityStateMeta { static DB2MetaField const fields[3] = { - { FT_BYTE, 1, false }, + { FT_INT, 1, false }, { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x73DDAA6A, fields, 2); + static DB2Meta instance(801576, -1, 3, 0x30DDCC32, fields, 2); return &instance; } }; @@ -1026,7 +1083,7 @@ struct BattlePetAbilityTurnMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(0, 6, 0xF2218887, fields, 1); + static DB2Meta instance(801577, 0, 6, 0xF2218887, fields, 1); return &instance; } }; @@ -1040,7 +1097,7 @@ struct BattlePetBreedQualityMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x6CD46EB5, fields, -1); + static DB2Meta instance(801578, -1, 2, 0x6CD46EB5, fields, -1); return &instance; } }; @@ -1055,7 +1112,7 @@ struct BattlePetBreedStateMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xC1A59CCF, fields, 2); + static DB2Meta instance(801579, -1, 3, 0xC1A59CCF, fields, 2); return &instance; } }; @@ -1071,7 +1128,7 @@ struct BattlePetDisplayOverrideMeta { FT_INT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x6F9CB092, fields, -1); + static DB2Meta instance(1802988, -1, 4, 0x6F9CB092, fields, -1); return &instance; } }; @@ -1086,7 +1143,7 @@ struct BattlePetEffectPropertiesMeta { FT_SHORT, 1, false }, { FT_BYTE, 6, false }, }; - static DB2Meta instance(-1, 3, 0xA2D4ADF5, fields, -1); + static DB2Meta instance(801580, -1, 3, 0xA2D4ADF5, fields, -1); return &instance; } }; @@ -1099,7 +1156,7 @@ struct BattlePetNPCTeamMemberMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0x9F2C8370, fields, -1); + static DB2Meta instance(841648, -1, 1, 0x9F2C8370, fields, -1); return &instance; } }; @@ -1122,7 +1179,7 @@ struct BattlePetSpeciesMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(2, 11, 0x78A6B928, fields, -1); + static DB2Meta instance(841622, 2, 11, 0x78A6B928, fields, -1); return &instance; } }; @@ -1133,11 +1190,11 @@ struct BattlePetSpeciesStateMeta { static DB2MetaField const fields[3] = { - { FT_BYTE, 1, false }, + { FT_SHORT, 1, false }, { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x99EBACAA, fields, 2); + static DB2Meta instance(801581, -1, 3, 0xFE1277C8, fields, 2); return &instance; } }; @@ -1153,7 +1210,7 @@ struct BattlePetSpeciesXAbilityMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x630BA932, fields, 3); + static DB2Meta instance(801582, -1, 4, 0x630BA932, fields, 3); return &instance; } }; @@ -1168,7 +1225,7 @@ struct BattlePetStateMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xF9579FAC, fields, -1); + static DB2Meta instance(801583, -1, 3, 0xF9579FAC, fields, -1); return &instance; } }; @@ -1187,7 +1244,7 @@ struct BattlePetVisualMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 7, 0x284AF258, fields, -1); + static DB2Meta instance(801584, -1, 7, 0x284AF258, fields, -1); return &instance; } }; @@ -1216,7 +1273,7 @@ struct BattlemasterListMeta { FT_SHORT, 1, true }, { FT_SHORT, 16, true }, }; - static DB2Meta instance(-1, 17, 0x167284E8, fields, -1); + static DB2Meta instance(1360265, -1, 17, 0x167284E8, fields, -1); return &instance; } }; @@ -1238,7 +1295,7 @@ struct BeamEffectMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 10, 0x0E55B843, fields, -1); + static DB2Meta instance(1525607, -1, 10, 0x0E55B843, fields, -1); return &instance; } }; @@ -1252,7 +1309,7 @@ struct BoneWindModifierModelMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x77B007CA, fields, 0); + static DB2Meta instance(1467254, -1, 2, 0x77B007CA, fields, 0); return &instance; } }; @@ -1266,7 +1323,7 @@ struct BoneWindModifiersMeta { FT_FLOAT, 3, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xC6F446CE, fields, -1); + static DB2Meta instance(1416756, -1, 2, 0xC6F446CE, fields, -1); return &instance; } }; @@ -1282,7 +1339,7 @@ struct BonusRollMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0xF7A194FA, fields, -1); + static DB2Meta instance(1983274, -1, 4, 0xF7A194FA, fields, -1); return &instance; } }; @@ -1299,7 +1356,7 @@ struct BountyMeta { FT_INT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0x797CCAA0, fields, 4); + static DB2Meta instance(1367866, -1, 5, 0x797CCAA0, fields, 4); return &instance; } }; @@ -1313,7 +1370,7 @@ struct BountySetMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xB67E3F83, fields, -1); + static DB2Meta instance(1367865, -1, 2, 0xB67E3F83, fields, -1); return &instance; } }; @@ -1336,7 +1393,22 @@ struct BroadcastTextMeta { FT_SHORT, 3, false }, { FT_SHORT, 3, false }, }; - static DB2Meta instance(2, 11, 0x6318993B, fields, -1); + static DB2Meta instance(841604, 2, 11, 0x6318993B, fields, -1); + return &instance; + } +}; + +struct BroadcastTextDurationMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2166900, -1, 3, 0x6466B673, fields, 0); return &instance; } }; @@ -1349,7 +1421,7 @@ struct CameraEffectMeta { { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 1, 0xAB0FD78E, fields, -1); + static DB2Meta instance(1117695, -1, 1, 0xAB0FD78E, fields, -1); return &instance; } }; @@ -1377,7 +1449,7 @@ struct CameraEffectEntryMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 16, 0xED27DC2F, fields, 15); + static DB2Meta instance(1117696, -1, 16, 0xED27DC2F, fields, 15); return &instance; } }; @@ -1400,7 +1472,7 @@ struct CameraModeMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 11, 0xEE5489F4, fields, -1); + static DB2Meta instance(1343308, -1, 11, 0xEE5489F4, fields, -1); return &instance; } }; @@ -1419,7 +1491,7 @@ struct CampaignMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(3, 7, 0x2D49AABD, fields, -1); + static DB2Meta instance(2031607, 3, 7, 0x2D49AABD, fields, -1); return &instance; } }; @@ -1434,7 +1506,7 @@ struct CampaignXConditionMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x638FC159, fields, 2); + static DB2Meta instance(2031611, -1, 3, 0x638FC159, fields, 2); return &instance; } }; @@ -1449,7 +1521,7 @@ struct CampaignXQuestLineMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x7303E0F9, fields, 0); + static DB2Meta instance(2036722, -1, 3, 0x7303E0F9, fields, 0); return &instance; } }; @@ -1463,7 +1535,7 @@ struct CastableRaidBuffsMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x3B349C01, fields, 1); + static DB2Meta instance(1283018, -1, 2, 0x3B349C01, fields, 1); return &instance; } }; @@ -1490,7 +1562,7 @@ struct CelestialBodyMeta { FT_FLOAT, 2, true }, { FT_FLOAT, 2, true }, }; - static DB2Meta instance(1, 15, 0xFC417DCA, fields, -1); + static DB2Meta instance(1592470, 1, 15, 0xFC417DCA, fields, -1); return &instance; } }; @@ -1507,7 +1579,7 @@ struct Cfg_CategoriesMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0xB6FEB874, fields, -1); + static DB2Meta instance(1068162, -1, 5, 0xB6FEB874, fields, -1); return &instance; } }; @@ -1523,7 +1595,7 @@ struct Cfg_ConfigsMeta { FT_SHORT, 1, false }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xA275539B, fields, -1); + static DB2Meta instance(1080949, -1, 4, 0xA275539B, fields, -1); return &instance; } }; @@ -1532,15 +1604,16 @@ struct Cfg_RegionsMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[5] = + static DB2MetaField const fields[6] = { { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_SHORT, 1, false }, { FT_INT, 1, false }, { FT_BYTE, 1, false }, { FT_INT, 1, false }, + { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 5, 0x0125202F, fields, -1); + static DB2Meta instance(1082876, -1, 6, 0xF85137B2, fields, -1); return &instance; } }; @@ -1554,7 +1627,7 @@ struct CharBaseInfoMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 2, 0x10AA45F8, fields, -1); + static DB2Meta instance(1343386, -1, 2, 0x10AA45F8, fields, -1); return &instance; } }; @@ -1569,7 +1642,7 @@ struct CharBaseSectionMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xF9D1C513, fields, -1); + static DB2Meta instance(1375798, -1, 3, 0xF9D1C513, fields, -1); return &instance; } }; @@ -1583,7 +1656,7 @@ struct CharComponentTextureLayoutsMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x48D8D7BC, fields, -1); + static DB2Meta instance(1360262, -1, 2, 0x48D8D7BC, fields, -1); return &instance; } }; @@ -1602,7 +1675,7 @@ struct CharComponentTextureSectionsMeta { FT_SHORT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 7, 0xD6EDA743, fields, -1); + static DB2Meta instance(1360263, -1, 7, 0xD6EDA743, fields, -1); return &instance; } }; @@ -1616,7 +1689,7 @@ struct CharHairGeosetsMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, @@ -1624,7 +1697,25 @@ struct CharHairGeosetsMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 10, 0xE3732EA9, fields, 0); + static DB2Meta instance(1256914, -1, 10, 0xC1638C2C, fields, 0); + return &instance; + } +}; + +struct CharSectionConditionMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[6] = + { + { FT_BYTE, 1, true }, + { FT_BYTE, 1, true }, + { FT_BYTE, 1, true }, + { FT_BYTE, 1, true }, + { FT_INT, 1, true }, + { FT_BYTE, 1, true }, + }; + static DB2Meta instance(2388725, -1, 6, 0x4C843BC5, fields, 5); return &instance; } }; @@ -1643,7 +1734,7 @@ struct CharSectionsMeta { FT_SHORT, 1, true }, { FT_INT, 3, true }, }; - static DB2Meta instance(-1, 7, 0x273A7F6F, fields, -1); + static DB2Meta instance(1365366, -1, 7, 0x273A7F6F, fields, -1); return &instance; } }; @@ -1664,7 +1755,7 @@ struct CharShipmentMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 9, 0xD47EC921, fields, 0); + static DB2Meta instance(972425, -1, 9, 0xD47EC921, fields, 0); return &instance; } }; @@ -1692,7 +1783,7 @@ struct CharShipmentContainerMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 16, 0x13048703, fields, -1); + static DB2Meta instance(972405, -1, 16, 0x13048703, fields, -1); return &instance; } }; @@ -1711,7 +1802,7 @@ struct CharStartOutfitMeta { FT_INT, 24, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 7, 0x0F59DD96, fields, 6); + static DB2Meta instance(1237591, -1, 7, 0x0F59DD96, fields, 6); return &instance; } }; @@ -1727,7 +1818,7 @@ struct CharTitlesMeta { FT_SHORT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 4, 0x81B69C5F, fields, -1); + static DB2Meta instance(1349054, -1, 4, 0x81B69C5F, fields, -1); return &instance; } }; @@ -1744,7 +1835,7 @@ struct CharacterFaceBoneSetMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0x3C6DE4D7, fields, 4); + static DB2Meta instance(1028733, -1, 5, 0x3C6DE4D7, fields, 4); return &instance; } }; @@ -1760,7 +1851,7 @@ struct CharacterFacialHairStylesMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xAA817A08, fields, -1); + static DB2Meta instance(1369752, -1, 4, 0xAA817A08, fields, -1); return &instance; } }; @@ -1775,7 +1866,7 @@ struct CharacterLoadoutMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 3, 0xA07F9727, fields, -1); + static DB2Meta instance(1344281, -1, 3, 0xA07F9727, fields, -1); return &instance; } }; @@ -1789,7 +1880,7 @@ struct CharacterLoadoutItemMeta { FT_SHORT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xD892CDA9, fields, 0); + static DB2Meta instance(1302846, -1, 2, 0xD892CDA9, fields, 0); return &instance; } }; @@ -1812,7 +1903,7 @@ struct CharacterServiceInfoMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 11, 0xC263D77C, fields, -1); + static DB2Meta instance(1815417, -1, 11, 0xC263D77C, fields, -1); return &instance; } }; @@ -1828,7 +1919,7 @@ struct ChatChannelsMeta { FT_INT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 4, 0x113E92FA, fields, -1); + static DB2Meta instance(1345278, -1, 4, 0x113E92FA, fields, -1); return &instance; } }; @@ -1842,7 +1933,7 @@ struct ChatProfanityMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 2, 0xAF5F92A6, fields, -1); + static DB2Meta instance(1117084, -1, 2, 0xAF5F92A6, fields, -1); return &instance; } }; @@ -1860,7 +1951,7 @@ struct ChrClassRaceSexMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 6, 0x204BD561, fields, -1); + static DB2Meta instance(1306188, -1, 6, 0x204BD561, fields, -1); return &instance; } }; @@ -1875,7 +1966,7 @@ struct ChrClassTitleMeta { FT_STRING, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xA01D47C8, fields, -1); + static DB2Meta instance(1267497, -1, 3, 0xA01D47C8, fields, -1); return &instance; } }; @@ -1890,7 +1981,7 @@ struct ChrClassUIDisplayMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x3D58F88F, fields, -1); + static DB2Meta instance(1316515, -1, 3, 0x3D58F88F, fields, -1); return &instance; } }; @@ -1905,7 +1996,7 @@ struct ChrClassVillainMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 3, 0x601C7CCD, fields, -1); + static DB2Meta instance(1267498, -1, 3, 0x601C7CCD, fields, -1); return &instance; } }; @@ -1914,7 +2005,7 @@ struct ChrClassesMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[20] = + static DB2MetaField const fields[21] = { { FT_STRING, 1, true }, { FT_STRING_NOT_LOCALIZED, 1, true }, @@ -1927,6 +2018,7 @@ struct ChrClassesMeta { FT_INT, 1, false }, { FT_INT, 1, false }, { FT_INT, 1, true }, + { FT_INT, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, @@ -1937,7 +2029,7 @@ struct ChrClassesMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(5, 20, 0x2CD115AC, fields, -1); + static DB2Meta instance(1361031, 5, 21, 0x16C686A5, fields, -1); return &instance; } }; @@ -1951,7 +2043,7 @@ struct ChrClassesXPowerTypesMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x6DE888E7, fields, 1); + static DB2Meta instance(1121420, -1, 2, 0x6DE888E7, fields, 1); return &instance; } }; @@ -1970,7 +2062,7 @@ struct ChrCustomizationMeta { FT_INT, 3, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 7, 0xC29562A3, fields, 6); + static DB2Meta instance(1611874, -1, 7, 0xC29562A3, fields, 6); return &instance; } }; @@ -2028,7 +2120,7 @@ struct ChrRacesMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(6, 46, 0xC8BCDC89, fields, -1); + static DB2Meta instance(1305311, 6, 46, 0xC8BCDC89, fields, -1); return &instance; } }; @@ -2053,7 +2145,7 @@ struct ChrSpecializationMeta { FT_INT, 1, true }, { FT_INT, 2, true }, }; - static DB2Meta instance(3, 13, 0xFF9DD5DD, fields, 4); + static DB2Meta instance(1343390, 3, 13, 0xFF9DD5DD, fields, 4); return &instance; } }; @@ -2068,7 +2160,7 @@ struct ChrUpgradeBucketMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(0, 3, 0x81B7C74C, fields, 2); + static DB2Meta instance(984529, 0, 3, 0x81B7C74C, fields, 2); return &instance; } }; @@ -2082,7 +2174,7 @@ struct ChrUpgradeBucketSpellMeta { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xC665F469, fields, 1); + static DB2Meta instance(984528, -1, 2, 0xC665F469, fields, 1); return &instance; } }; @@ -2098,7 +2190,7 @@ struct ChrUpgradeTierMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(1, 4, 0xEC517FDD, fields, -1); + static DB2Meta instance(984530, 1, 4, 0xEC517FDD, fields, -1); return &instance; } }; @@ -2114,7 +2206,7 @@ struct CinematicCameraMeta { FT_FLOAT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x20C5E540, fields, -1); + static DB2Meta instance(1294214, -1, 4, 0x20C5E540, fields, -1); return &instance; } }; @@ -2128,7 +2220,7 @@ struct CinematicSequencesMeta { FT_INT, 1, false }, { FT_SHORT, 8, false }, }; - static DB2Meta instance(-1, 2, 0x6A232AD4, fields, -1); + static DB2Meta instance(1134583, -1, 2, 0x6A232AD4, fields, -1); return &instance; } }; @@ -2141,7 +2233,7 @@ struct ClientSceneEffectMeta { { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 1, 0x00EE4486, fields, -1); + static DB2Meta instance(1939843, -1, 1, 0x00EE4486, fields, -1); return &instance; } }; @@ -2160,7 +2252,7 @@ struct CloakDampeningMeta { FT_FLOAT, 2, true }, { FT_FLOAT, 2, true }, }; - static DB2Meta instance(-1, 7, 0xF7C03F6E, fields, -1); + static DB2Meta instance(1465903, -1, 7, 0xF7C03F6E, fields, -1); return &instance; } }; @@ -2180,7 +2272,7 @@ struct CloneEffectMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 8, 0x2F946F74, fields, -1); + static DB2Meta instance(2175218, -1, 8, 0x2F946F74, fields, -1); return &instance; } }; @@ -2203,7 +2295,7 @@ struct CombatConditionMeta { FT_BYTE, 2, false }, { FT_BYTE, 2, false }, }; - static DB2Meta instance(-1, 11, 0x75A29044, fields, -1); + static DB2Meta instance(1120958, -1, 11, 0x75A29044, fields, -1); return &instance; } }; @@ -2217,7 +2309,7 @@ struct CommentatorStartLocationMeta { FT_FLOAT, 3, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xF552D58F, fields, -1); + static DB2Meta instance(1664251, -1, 2, 0xF552D58F, fields, -1); return &instance; } }; @@ -2233,7 +2325,7 @@ struct CommentatorTrackedCooldownMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x3A1476FC, fields, 3); + static DB2Meta instance(1661584, -1, 4, 0x3A1476FC, fields, 3); return &instance; } }; @@ -2248,7 +2340,7 @@ struct CommunityIconMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 3, 0x7E19DEAD, fields, -1); + static DB2Meta instance(2098645, 0, 3, 0x7E19DEAD, fields, -1); return &instance; } }; @@ -2264,7 +2356,7 @@ struct ComponentModelFileDataMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 4, 0x0F90AFAF, fields, -1); + static DB2Meta instance(1349053, -1, 4, 0x0F90AFAF, fields, -1); return &instance; } }; @@ -2279,7 +2371,7 @@ struct ComponentTextureFileDataMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0x263AACE3, fields, -1); + static DB2Meta instance(1278239, -1, 3, 0x263AACE3, fields, -1); return &instance; } }; @@ -2293,7 +2385,7 @@ struct ConfigurationWarningMeta { FT_STRING, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x99BCBA2D, fields, -1); + static DB2Meta instance(1709409, -1, 2, 0x99BCBA2D, fields, -1); return &instance; } }; @@ -2311,7 +2403,7 @@ struct ContentTuningMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 6, 0xD1A210D1, fields, -1); + static DB2Meta instance(1962930, 0, 6, 0xD1A210D1, fields, -1); return &instance; } }; @@ -2330,7 +2422,7 @@ struct ContributionMeta { FT_INT, 1, true }, { FT_INT, 4, true }, }; - static DB2Meta instance(2, 7, 0x37C49135, fields, 3); + static DB2Meta instance(1587153, 2, 7, 0x37C49135, fields, 3); return &instance; } }; @@ -2349,7 +2441,7 @@ struct ContributionStyleMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 7, 0x799AE511, fields, -1); + static DB2Meta instance(2143633, -1, 7, 0x799AE511, fields, -1); return &instance; } }; @@ -2362,7 +2454,7 @@ struct ContributionStyleContainerMeta { { FT_INT, 5, true }, }; - static DB2Meta instance(-1, 1, 0x55DAA69B, fields, -1); + static DB2Meta instance(2143634, -1, 1, 0x55DAA69B, fields, -1); return &instance; } }; @@ -2382,7 +2474,7 @@ struct ConversationLineMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 8, 0x227B5003, fields, -1); + static DB2Meta instance(1260801, -1, 8, 0x227B5003, fields, -1); return &instance; } }; @@ -2405,7 +2497,7 @@ struct CreatureMeta { FT_FLOAT, 4, true }, { FT_INT, 3, true }, }; - static DB2Meta instance(-1, 11, 0x0D492BF3, fields, -1); + static DB2Meta instance(841631, -1, 11, 0x0D492BF3, fields, -1); return &instance; } }; @@ -2424,7 +2516,7 @@ struct CreatureDifficultyMeta { FT_INT, 7, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 7, 0xD344A642, fields, 6); + static DB2Meta instance(879282, -1, 7, 0xD344A642, fields, 6); return &instance; } }; @@ -2438,7 +2530,7 @@ struct CreatureDispXUiCameraMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xD3D075FD, fields, -1); + static DB2Meta instance(1146692, -1, 2, 0xD3D075FD, fields, -1); return &instance; } }; @@ -2475,7 +2567,7 @@ struct CreatureDisplayInfoMeta { FT_BYTE, 1, true }, { FT_INT, 3, true }, }; - static DB2Meta instance(0, 25, 0x613413D1, fields, -1); + static DB2Meta instance(1108759, 0, 25, 0x613413D1, fields, -1); return &instance; } }; @@ -2502,7 +2594,7 @@ struct CreatureDisplayInfoCondMeta { FT_INT, 3, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 15, 0x596B4605, fields, 14); + static DB2Meta instance(1332686, -1, 15, 0x596B4605, fields, 14); return &instance; } }; @@ -2518,7 +2610,7 @@ struct CreatureDisplayInfoEvtMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x16C6EC13, fields, 3); + static DB2Meta instance(1586882, -1, 4, 0x16C6EC13, fields, 3); return &instance; } }; @@ -2542,7 +2634,7 @@ struct CreatureDisplayInfoExtraMeta { FT_INT, 1, true }, { FT_BYTE, 3, false }, }; - static DB2Meta instance(-1, 12, 0x89E31B13, fields, -1); + static DB2Meta instance(1264997, -1, 12, 0x89E31B13, fields, -1); return &instance; } }; @@ -2557,7 +2649,7 @@ struct CreatureDisplayInfoGeosetDataMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x13350FA0, fields, 2); + static DB2Meta instance(1720141, -1, 3, 0x13350FA0, fields, 2); return &instance; } }; @@ -2575,7 +2667,7 @@ struct CreatureDisplayInfoTrnMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 6, 0xC3E28858, fields, 5); + static DB2Meta instance(1146698, -1, 6, 0xC3E28858, fields, 5); return &instance; } }; @@ -2596,7 +2688,7 @@ struct CreatureFamilyMeta { FT_INT, 1, true }, { FT_SHORT, 2, true }, }; - static DB2Meta instance(-1, 9, 0x9D14B492, fields, -1); + static DB2Meta instance(1351351, -1, 9, 0x9D14B492, fields, -1); return &instance; } }; @@ -2617,7 +2709,7 @@ struct CreatureImmunitiesMeta { FT_INT, 9, false }, { FT_INT, 16, false }, }; - static DB2Meta instance(-1, 9, 0x36D9340F, fields, -1); + static DB2Meta instance(1131322, -1, 9, 0x36D9340F, fields, -1); return &instance; } }; @@ -2657,7 +2749,7 @@ struct CreatureModelDataMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 28, 0xF61D550A, fields, -1); + static DB2Meta instance(1365368, -1, 28, 0xF61D550A, fields, -1); return &instance; } }; @@ -2670,7 +2762,7 @@ struct CreatureMovementInfoMeta { { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 1, 0x31BE6397, fields, -1); + static DB2Meta instance(1125666, -1, 1, 0x31BE6397, fields, -1); return &instance; } }; @@ -2719,7 +2811,7 @@ struct CreatureSoundDataMeta { FT_INT, 5, false }, { FT_INT, 4, false }, }; - static DB2Meta instance(-1, 37, 0xA58BDB91, fields, -1); + static DB2Meta instance(1344466, -1, 37, 0xA58BDB91, fields, -1); return &instance; } }; @@ -2733,7 +2825,7 @@ struct CreatureTypeMeta { FT_STRING, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x218D575A, fields, -1); + static DB2Meta instance(1131315, -1, 2, 0x218D575A, fields, -1); return &instance; } }; @@ -2748,7 +2840,7 @@ struct CreatureXContributionMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 3, 0x2DC69C04, fields, 2); + static DB2Meta instance(1587158, 0, 3, 0x2DC69C04, fields, 2); return &instance; } }; @@ -2765,7 +2857,7 @@ struct CreatureXDisplayInfoMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x44D147A6, fields, 4); + static DB2Meta instance(1864302, -1, 5, 0x44D147A6, fields, 4); return &instance; } }; @@ -2788,7 +2880,7 @@ struct CriteriaMeta { FT_SHORT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 11, 0x754DDF45, fields, -1); + static DB2Meta instance(1263817, -1, 11, 0x754DDF45, fields, -1); return &instance; } }; @@ -2807,7 +2899,7 @@ struct CriteriaTreeMeta { FT_INT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 7, 0xC926CF94, fields, -1); + static DB2Meta instance(1263818, -1, 7, 0xC926CF94, fields, -1); return &instance; } }; @@ -2821,7 +2913,7 @@ struct CriteriaTreeXEffectMeta { FT_SHORT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x80C700F5, fields, 1); + static DB2Meta instance(1345969, -1, 2, 0x80C700F5, fields, 1); return &instance; } }; @@ -2836,7 +2928,7 @@ struct CurrencyCategoryMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0x0DB1F53C, fields, -1); + static DB2Meta instance(1125667, -1, 3, 0x0DB1F53C, fields, -1); return &instance; } }; @@ -2856,7 +2948,7 @@ struct CurrencyContainerMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 8, 0xAC6030BF, fields, 7); + static DB2Meta instance(1934603, -1, 8, 0xAC6030BF, fields, 7); return &instance; } }; @@ -2865,7 +2957,7 @@ struct CurrencyTypesMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[11] = + static DB2MetaField const fields[12] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, @@ -2878,8 +2970,9 @@ struct CurrencyTypesMeta { FT_INT, 1, false }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 11, 0x998F0AAA, fields, -1); + static DB2Meta instance(1095531, -1, 12, 0xC6A4670A, fields, -1); return &instance; } }; @@ -2893,7 +2986,7 @@ struct CurveMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x4E6F1184, fields, -1); + static DB2Meta instance(892585, -1, 2, 0x4E6F1184, fields, -1); return &instance; } }; @@ -2908,7 +3001,7 @@ struct CurvePointMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xFA003217, fields, -1); + static DB2Meta instance(892586, -1, 3, 0xFA003217, fields, -1); return &instance; } }; @@ -2924,7 +3017,7 @@ struct DeathThudLookupsMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x3BF7542C, fields, -1); + static DB2Meta instance(1279415, -1, 4, 0x3BF7542C, fields, -1); return &instance; } }; @@ -2954,7 +3047,7 @@ struct DecalPropertiesMeta { FT_INT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(0, 18, 0xB11F3B40, fields, -1); + static DB2Meta instance(1278176, 0, 18, 0xB11F3B40, fields, -1); return &instance; } }; @@ -2968,7 +3061,7 @@ struct DeclinedWordMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(1, 2, 0x10D7C6A6, fields, -1); + static DB2Meta instance(1279100, 1, 2, 0x10D7C6A6, fields, -1); return &instance; } }; @@ -2983,7 +3076,7 @@ struct DeclinedWordCasesMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x3E19B9C5, fields, 2); + static DB2Meta instance(1279099, -1, 3, 0x3E19B9C5, fields, 2); return &instance; } }; @@ -3017,7 +3110,7 @@ struct DestructibleModelDataMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 22, 0xF245BA93, fields, -1); + static DB2Meta instance(1122116, -1, 22, 0xF245BA93, fields, -1); return &instance; } }; @@ -3031,7 +3124,7 @@ struct DeviceBlacklistMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x2A350905, fields, -1); + static DB2Meta instance(922722, -1, 2, 0x2A350905, fields, -1); return &instance; } }; @@ -3046,7 +3139,7 @@ struct DeviceDefaultSettingsMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 3, 0x2AB8A38C, fields, -1); + static DB2Meta instance(925422, -1, 3, 0x2AB8A38C, fields, -1); return &instance; } }; @@ -3064,14 +3157,14 @@ struct DifficultyMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 13, 0x29FC158C, fields, -1); + static DB2Meta instance(1352127, -1, 13, 0xCE2EF986, fields, -1); return &instance; } }; @@ -3097,7 +3190,7 @@ struct DissolveEffectMeta { FT_INT, 1, false }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 14, 0x77C510EC, fields, -1); + static DB2Meta instance(1304325, -1, 14, 0x77C510EC, fields, -1); return &instance; } }; @@ -3116,7 +3209,7 @@ struct DriverBlacklistMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 7, 0x88C28C05, fields, -1); + static DB2Meta instance(922720, -1, 7, 0x88C28C05, fields, -1); return &instance; } }; @@ -3125,19 +3218,21 @@ struct DungeonEncounterMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[9] = + static DB2MetaField const fields[11] = { { FT_STRING, 1, true }, { FT_INT, 1, false }, { FT_SHORT, 1, true }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1, 9, 0x6E5C2332, fields, 2); + static DB2Meta instance(1347279, 1, 11, 0x1FD23060, fields, 2); return &instance; } }; @@ -3151,7 +3246,7 @@ struct DurabilityCostsMeta { FT_SHORT, 21, false }, { FT_SHORT, 8, false }, }; - static DB2Meta instance(-1, 2, 0xBB493F52, fields, -1); + static DB2Meta instance(1283019, -1, 2, 0xBB493F52, fields, -1); return &instance; } }; @@ -3164,7 +3259,7 @@ struct DurabilityQualityMeta { { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xCFF4EEC9, fields, -1); + static DB2Meta instance(1130268, -1, 1, 0xCFF4EEC9, fields, -1); return &instance; } }; @@ -3189,7 +3284,7 @@ struct EdgeGlowEffectMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 13, 0xCBCC7336, fields, -1); + static DB2Meta instance(1387381, -1, 13, 0xCBCC7336, fields, -1); return &instance; } }; @@ -3210,7 +3305,7 @@ struct EmotesMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 9, 0xA909E182, fields, -1); + static DB2Meta instance(1343602, -1, 9, 0xA909E182, fields, -1); return &instance; } }; @@ -3224,7 +3319,7 @@ struct EmotesTextMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xE255C6B0, fields, -1); + static DB2Meta instance(1347273, -1, 2, 0xE255C6B0, fields, -1); return &instance; } }; @@ -3239,7 +3334,7 @@ struct EmotesTextDataMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x460E8F09, fields, 2); + static DB2Meta instance(1283024, -1, 3, 0x460E8F09, fields, 2); return &instance; } }; @@ -3256,7 +3351,7 @@ struct EmotesTextSoundMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 5, 0x3A15105C, fields, 4); + static DB2Meta instance(1286524, -1, 5, 0x3A15105C, fields, 4); return &instance; } }; @@ -3265,14 +3360,12 @@ struct EnvironmentalDamageMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[4] = + static DB2MetaField const fields[2] = { { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, - { FT_BYTE, 1, false }, - { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x448422B4, fields, -1); + static DB2Meta instance(1278398, -1, 2, 0x448422B4, fields, -1); return &instance; } }; @@ -3292,7 +3385,7 @@ struct ExhaustionMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(2, 8, 0xF0F48BB5, fields, -1); + static DB2Meta instance(1343313, 2, 8, 0xF0F48BB5, fields, -1); return &instance; } }; @@ -3315,7 +3408,7 @@ struct ExpectedStatMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 11, 0xF0E61875, fields, 10); + static DB2Meta instance(1937326, -1, 11, 0xF0E61875, fields, 10); return &instance; } }; @@ -3336,7 +3429,7 @@ struct ExpectedStatModMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 9, 0xEA56E599, fields, -1); + static DB2Meta instance(1969773, -1, 9, 0xEA56E599, fields, -1); return &instance; } }; @@ -3354,7 +3447,7 @@ struct FactionMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_INT, 1, false }, { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 4, true }, @@ -3364,7 +3457,7 @@ struct FactionMeta { FT_FLOAT, 2, true }, { FT_BYTE, 2, false }, }; - static DB2Meta instance(3, 16, 0x86FE2D69, fields, -1); + static DB2Meta instance(1361972, 3, 16, 0xB6C3CC81, fields, -1); return &instance; } }; @@ -3382,7 +3475,7 @@ struct FactionGroupMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(2, 6, 0xB9B4369B, fields, -1); + static DB2Meta instance(1343595, 2, 6, 0xB9B4369B, fields, -1); return &instance; } }; @@ -3401,7 +3494,7 @@ struct FactionTemplateMeta { FT_SHORT, 4, false }, { FT_SHORT, 4, false }, }; - static DB2Meta instance(-1, 7, 0xD7143473, fields, -1); + static DB2Meta instance(1361579, -1, 7, 0xD7143473, fields, -1); return &instance; } }; @@ -3416,7 +3509,7 @@ struct FootprintTexturesMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xF82F1359, fields, -1); + static DB2Meta instance(1308056, -1, 3, 0xF82F1359, fields, -1); return &instance; } }; @@ -3432,7 +3525,7 @@ struct FootstepTerrainLookupMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0xC70AACC6, fields, -1); + static DB2Meta instance(1267647, -1, 4, 0xC70AACC6, fields, -1); return &instance; } }; @@ -3444,10 +3537,10 @@ struct FriendshipRepReactionMeta static DB2MetaField const fields[3] = { { FT_STRING, 1, true }, - { FT_BYTE, 1, false }, + { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x8B096063, fields, 1); + static DB2Meta instance(1237638, -1, 3, 0x81C2BAAB, fields, 1); return &instance; } }; @@ -3463,7 +3556,7 @@ struct FriendshipReputationMeta { FT_SHORT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(1, 4, 0xECCE459C, fields, -1); + static DB2Meta instance(1237639, 1, 4, 0xECCE459C, fields, -1); return &instance; } }; @@ -3503,7 +3596,7 @@ struct FullScreenEffectMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 28, 0x9854A6AC, fields, -1); + static DB2Meta instance(1348282, -1, 28, 0x9854A6AC, fields, -1); return &instance; } }; @@ -3518,7 +3611,7 @@ struct GMSurveyAnswersMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xDE59EC07, fields, 2); + static DB2Meta instance(1283025, -1, 3, 0xDE59EC07, fields, 2); return &instance; } }; @@ -3531,7 +3624,7 @@ struct GMSurveyCurrentSurveyMeta { { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 1, 0xAD0D7453, fields, -1); + static DB2Meta instance(1278177, -1, 1, 0xAD0D7453, fields, -1); return &instance; } }; @@ -3544,7 +3637,7 @@ struct GMSurveyQuestionsMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0x12B097E1, fields, -1); + static DB2Meta instance(1278178, -1, 1, 0x12B097E1, fields, -1); return &instance; } }; @@ -3557,7 +3650,7 @@ struct GMSurveySurveysMeta { { FT_BYTE, 15, false }, }; - static DB2Meta instance(-1, 1, 0x24BB51BE, fields, -1); + static DB2Meta instance(1283020, -1, 1, 0x24BB51BE, fields, -1); return &instance; } }; @@ -3571,7 +3664,7 @@ struct GameObjectArtKitMeta { FT_INT, 1, true }, { FT_INT, 3, true }, }; - static DB2Meta instance(-1, 2, 0xECF16719, fields, -1); + static DB2Meta instance(1266737, -1, 2, 0xECF16719, fields, -1); return &instance; } }; @@ -3587,7 +3680,7 @@ struct GameObjectDiffAnimMapMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xDB3508F3, fields, 3); + static DB2Meta instance(1302847, -1, 4, 0xDB3508F3, fields, 3); return &instance; } }; @@ -3604,7 +3697,7 @@ struct GameObjectDisplayInfoMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x7A816799, fields, -1); + static DB2Meta instance(1266277, -1, 5, 0x7A816799, fields, -1); return &instance; } }; @@ -3619,7 +3712,7 @@ struct GameObjectDisplayInfoXSoundKitMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x456E4627, fields, 2); + static DB2Meta instance(1345272, -1, 3, 0x456E4627, fields, 2); return &instance; } }; @@ -3643,7 +3736,7 @@ struct GameObjectsMeta { FT_SHORT, 1, false }, { FT_INT, 8, true }, }; - static DB2Meta instance(3, 12, 0x0995B956, fields, 4); + static DB2Meta instance(841620, 3, 12, 0x0995B956, fields, 4); return &instance; } }; @@ -3659,7 +3752,7 @@ struct GameTipsMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x768EB877, fields, -1); + static DB2Meta instance(1368021, -1, 4, 0x768EB877, fields, -1); return &instance; } }; @@ -3679,7 +3772,7 @@ struct GarrAbilityMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(2, 8, 0x8256E595, fields, -1); + static DB2Meta instance(966238, 2, 8, 0x8256E595, fields, -1); return &instance; } }; @@ -3692,7 +3785,7 @@ struct GarrAbilityCategoryMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0x9F2C8370, fields, -1); + static DB2Meta instance(1020248, -1, 1, 0x9F2C8370, fields, -1); return &instance; } }; @@ -3716,7 +3809,7 @@ struct GarrAbilityEffectMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(0, 12, 0x682EE0E1, fields, 1); + static DB2Meta instance(966241, 0, 12, 0x682EE0E1, fields, 1); return &instance; } }; @@ -3752,7 +3845,7 @@ struct GarrBuildingMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 24, 0x158D48D4, fields, -1); + static DB2Meta instance(929747, -1, 24, 0x158D48D4, fields, -1); return &instance; } }; @@ -3769,7 +3862,7 @@ struct GarrBuildingDoodadSetMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0x9A6DE309, fields, -1); + static DB2Meta instance(943937, -1, 5, 0x9A6DE309, fields, -1); return &instance; } }; @@ -3786,7 +3879,7 @@ struct GarrBuildingPlotInstMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(1, 5, 0xFB61E627, fields, 2); + static DB2Meta instance(983298, 1, 5, 0xFB61E627, fields, 2); return &instance; } }; @@ -3806,7 +3899,7 @@ struct GarrClassSpecMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(3, 8, 0x644E1AC4, fields, -1); + static DB2Meta instance(981570, 3, 8, 0x644E1AC4, fields, -1); return &instance; } }; @@ -3824,7 +3917,7 @@ struct GarrClassSpecPlayerCondMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 6, 0x561DEBFE, fields, -1); + static DB2Meta instance(1380674, -1, 6, 0x561DEBFE, fields, -1); return &instance; } }; @@ -3833,7 +3926,7 @@ struct GarrEncounterMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[7] = + static DB2MetaField const fields[8] = { { FT_STRING, 1, true }, { FT_INT, 1, false }, @@ -3842,8 +3935,9 @@ struct GarrEncounterMeta { FT_INT, 1, false }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1, 7, 0xD193D559, fields, -1); + static DB2Meta instance(975304, 1, 8, 0x5D084137, fields, -1); return &instance; } }; @@ -3858,7 +3952,7 @@ struct GarrEncounterSetXEncounterMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(0, 3, 0xCA7143E7, fields, 2); + static DB2Meta instance(1354772, 0, 3, 0xCA7143E7, fields, 2); return &instance; } }; @@ -3873,7 +3967,7 @@ struct GarrEncounterXMechanicMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x0960A66B, fields, 2); + static DB2Meta instance(967961, -1, 3, 0x0960A66B, fields, 2); return &instance; } }; @@ -3889,7 +3983,7 @@ struct GarrFollItemSetMemberMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x9166B16F, fields, 3); + static DB2Meta instance(981569, -1, 4, 0x9166B16F, fields, 3); return &instance; } }; @@ -3905,7 +3999,7 @@ struct GarrFollSupportSpellMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xDB563FC8, fields, 3); + static DB2Meta instance(1345970, -1, 4, 0xDB563FC8, fields, 3); return &instance; } }; @@ -3949,7 +4043,7 @@ struct GarrFollowerMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(3, 32, 0x7C5C19F1, fields, -1); + static DB2Meta instance(949906, 3, 32, 0x7C5C19F1, fields, -1); return &instance; } }; @@ -3965,7 +4059,7 @@ struct GarrFollowerLevelXPMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0xABD178B2, fields, -1); + static DB2Meta instance(970979, -1, 4, 0xABD178B2, fields, -1); return &instance; } }; @@ -3984,7 +4078,7 @@ struct GarrFollowerQualityMeta { FT_SHORT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 7, 0xCAE87042, fields, -1); + static DB2Meta instance(1027793, -1, 7, 0xCAE87042, fields, -1); return &instance; } }; @@ -3998,7 +4092,7 @@ struct GarrFollowerSetXFollowerMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x621C60FF, fields, 1); + static DB2Meta instance(1361029, -1, 2, 0x621C60FF, fields, 1); return &instance; } }; @@ -4017,7 +4111,7 @@ struct GarrFollowerTypeMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 7, 0xB4B34EF0, fields, -1); + static DB2Meta instance(1118784, -1, 7, 0xB4B34EF0, fields, -1); return &instance; } }; @@ -4035,7 +4129,7 @@ struct GarrFollowerUICreatureMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 6, 0x93A1FAA6, fields, 5); + static DB2Meta instance(1412636, -1, 6, 0x93A1FAA6, fields, 5); return &instance; } }; @@ -4051,7 +4145,7 @@ struct GarrFollowerXAbilityMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x590C69F7, fields, 3); + static DB2Meta instance(968468, -1, 4, 0x590C69F7, fields, 3); return &instance; } }; @@ -4068,7 +4162,7 @@ struct GarrItemLevelUpgradeDataMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 5, 0x6B8723A1, fields, -1); + static DB2Meta instance(1572314, 0, 5, 0x6B8723A1, fields, -1); return &instance; } }; @@ -4083,7 +4177,7 @@ struct GarrMechanicMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xA83BF5A9, fields, -1); + static DB2Meta instance(967963, -1, 3, 0xA83BF5A9, fields, -1); return &instance; } }; @@ -4098,7 +4192,7 @@ struct GarrMechanicSetXMechanicMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(0, 3, 0xFC7F16A3, fields, 2); + static DB2Meta instance(1391531, 0, 3, 0xFC7F16A3, fields, 2); return &instance; } }; @@ -4115,7 +4209,7 @@ struct GarrMechanicTypeMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(2, 5, 0x05F19FE7, fields, -1); + static DB2Meta instance(967964, 2, 5, 0x05F19FE7, fields, -1); return &instance; } }; @@ -4156,7 +4250,7 @@ struct GarrMissionMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(5, 29, 0x00777205, fields, 28); + static DB2Meta instance(967962, 5, 29, 0x00777205, fields, 28); return &instance; } }; @@ -4170,7 +4264,7 @@ struct GarrMissionTextureMeta { FT_FLOAT, 2, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x0D378464, fields, -1); + static DB2Meta instance(1125220, -1, 2, 0x0D378464, fields, -1); return &instance; } }; @@ -4185,7 +4279,7 @@ struct GarrMissionTypeMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x3FC87149, fields, -1); + static DB2Meta instance(984174, -1, 3, 0x3FC87149, fields, -1); return &instance; } }; @@ -4202,7 +4296,7 @@ struct GarrMissionXEncounterMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 5, 0x539B5B1B, fields, 4); + static DB2Meta instance(967960, 0, 5, 0x539B5B1B, fields, 4); return &instance; } }; @@ -4217,7 +4311,7 @@ struct GarrMissionXFollowerMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xFB9C7E3D, fields, 2); + static DB2Meta instance(1359096, -1, 3, 0xFB9C7E3D, fields, 2); return &instance; } }; @@ -4234,7 +4328,7 @@ struct GarrMssnBonusAbilityMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x91DD4CE6, fields, -1); + static DB2Meta instance(1138458, -1, 5, 0x91DD4CE6, fields, -1); return &instance; } }; @@ -4253,7 +4347,7 @@ struct GarrPlotMeta { FT_BYTE, 1, false }, { FT_INT, 2, false }, }; - static DB2Meta instance(-1, 7, 0x3897880E, fields, -1); + static DB2Meta instance(937634, -1, 7, 0x3897880E, fields, -1); return &instance; } }; @@ -4267,7 +4361,7 @@ struct GarrPlotBuildingMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x1ECDCE0A, fields, -1); + static DB2Meta instance(929743, -1, 2, 0x1ECDCE0A, fields, -1); return &instance; } }; @@ -4281,7 +4375,7 @@ struct GarrPlotInstanceMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x1FD77CCF, fields, -1); + static DB2Meta instance(929742, -1, 2, 0x1FD77CCF, fields, -1); return &instance; } }; @@ -4295,7 +4389,7 @@ struct GarrPlotUICategoryMeta { FT_STRING, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x867482E6, fields, -1); + static DB2Meta instance(937635, -1, 2, 0x867482E6, fields, -1); return &instance; } }; @@ -4316,7 +4410,7 @@ struct GarrSiteLevelMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 9, 0x4D823E68, fields, -1); + static DB2Meta instance(939295, -1, 9, 0x4D823E68, fields, -1); return &instance; } }; @@ -4332,7 +4426,7 @@ struct GarrSiteLevelPlotInstMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xA3DF8AD1, fields, 1); + static DB2Meta instance(940404, -1, 4, 0xA3DF8AD1, fields, 1); return &instance; } }; @@ -4351,7 +4445,7 @@ struct GarrSpecializationMeta { FT_INT, 1, true }, { FT_FLOAT, 2, true }, }; - static DB2Meta instance(-1, 7, 0x8400A7E7, fields, -1); + static DB2Meta instance(937647, -1, 7, 0x8400A7E7, fields, -1); return &instance; } }; @@ -4364,7 +4458,7 @@ struct GarrStringMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF404C7D8, fields, -1); + static DB2Meta instance(1416758, -1, 1, 0xF404C7D8, fields, -1); return &instance; } }; @@ -4396,7 +4490,7 @@ struct GarrTalentMeta { FT_INT, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(2, 20, 0x96BE787E, fields, 3); + static DB2Meta instance(1361032, 2, 20, 0x96BE787E, fields, 3); return &instance; } }; @@ -4415,7 +4509,7 @@ struct GarrTalentTreeMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 7, 0x9A3BC97D, fields, -1); + static DB2Meta instance(1361030, -1, 7, 0x9A3BC97D, fields, -1); return &instance; } }; @@ -4432,7 +4526,7 @@ struct GarrTypeMeta { FT_INT, 1, false }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 5, 0xCCA7D7B5, fields, -1); + static DB2Meta instance(1333161, -1, 5, 0xCCA7D7B5, fields, -1); return &instance; } }; @@ -4450,7 +4544,7 @@ struct GarrUiAnimClassInfoMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 6, 0xF6444415, fields, -1); + static DB2Meta instance(976037, -1, 6, 0xF6444415, fields, -1); return &instance; } }; @@ -4475,7 +4569,7 @@ struct GarrUiAnimRaceInfoMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 13, 0x62B1D302, fields, -1); + static DB2Meta instance(976035, -1, 13, 0x62B1D302, fields, -1); return &instance; } }; @@ -4490,7 +4584,7 @@ struct GemPropertiesMeta { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xBCE902DB, fields, -1); + static DB2Meta instance(1343604, -1, 3, 0xBCE902DB, fields, -1); return &instance; } }; @@ -4505,7 +4599,7 @@ struct GlobalStringsMeta { FT_STRING, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0x843675FD, fields, -1); + static DB2Meta instance(1394440, -1, 3, 0x843675FD, fields, -1); return &instance; } }; @@ -4519,7 +4613,7 @@ struct GlyphBindableSpellMeta { FT_INT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x03429C72, fields, 1); + static DB2Meta instance(1270147, -1, 2, 0x03429C72, fields, 1); return &instance; } }; @@ -4532,7 +4626,7 @@ struct GlyphExclusiveCategoryMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0x59622339, fields, -1); + static DB2Meta instance(948546, -1, 1, 0x59622339, fields, -1); return &instance; } }; @@ -4548,7 +4642,7 @@ struct GlyphPropertiesMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x7C1C2F11, fields, -1); + static DB2Meta instance(1345274, -1, 4, 0x7C1C2F11, fields, -1); return &instance; } }; @@ -4562,7 +4656,35 @@ struct GlyphRequiredSpecMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x70D4ECC6, fields, 1); + static DB2Meta instance(948496, -1, 2, 0x70D4ECC6, fields, 1); + return &instance; + } +}; + +struct GradientEffectMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[16] = + { + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2433582, -1, 16, 0x730DC7A1, fields, -1); return &instance; } }; @@ -4578,7 +4700,7 @@ struct GroundEffectDoodadMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xAB0C6E12, fields, -1); + static DB2Meta instance(1308057, -1, 4, 0xAB0C6E12, fields, -1); return &instance; } }; @@ -4594,7 +4716,7 @@ struct GroundEffectTextureMeta { FT_SHORT, 4, false }, { FT_BYTE, 4, true }, }; - static DB2Meta instance(-1, 4, 0xCCBD52E8, fields, -1); + static DB2Meta instance(1308499, -1, 4, 0xCCBD52E8, fields, -1); return &instance; } }; @@ -4620,7 +4742,7 @@ struct GroupFinderActivityMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 14, 0xEC40E4B1, fields, -1); + static DB2Meta instance(974813, -1, 14, 0xEC40E4B1, fields, -1); return &instance; } }; @@ -4634,7 +4756,7 @@ struct GroupFinderActivityGrpMeta { FT_STRING, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x1EC8D046, fields, -1); + static DB2Meta instance(974814, -1, 2, 0x1EC8D046, fields, -1); return &instance; } }; @@ -4649,7 +4771,7 @@ struct GroupFinderCategoryMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xBFF47DC0, fields, -1); + static DB2Meta instance(974812, -1, 3, 0xBFF47DC0, fields, -1); return &instance; } }; @@ -4664,7 +4786,7 @@ struct GuildColorBackgroundMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xCC5FFB4D, fields, -1); + static DB2Meta instance(1286526, -1, 3, 0xCC5FFB4D, fields, -1); return &instance; } }; @@ -4679,7 +4801,7 @@ struct GuildColorBorderMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xCC5FFB4D, fields, -1); + static DB2Meta instance(1286527, -1, 3, 0xCC5FFB4D, fields, -1); return &instance; } }; @@ -4694,7 +4816,21 @@ struct GuildColorEmblemMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xCC5FFB4D, fields, -1); + static DB2Meta instance(1286525, -1, 3, 0xCC5FFB4D, fields, -1); + return &instance; + } +}; + +struct GuildEmblemMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2734754, -1, 2, 0x58D7EB20, fields, -1); return &instance; } }; @@ -4707,7 +4843,7 @@ struct GuildPerkSpellsMeta { { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xC9961BEB, fields, -1); + static DB2Meta instance(1135238, -1, 1, 0xC9961BEB, fields, -1); return &instance; } }; @@ -4726,10 +4862,10 @@ struct HeirloomMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_INT, 1, true }, - { FT_INT, 3, true }, - { FT_SHORT, 3, false }, + { FT_INT, 4, true }, + { FT_SHORT, 4, false }, }; - static DB2Meta instance(1, 10, 0xB5925FE9, fields, -1); + static DB2Meta instance(1097696, 1, 10, 0xB5925FE9, fields, -1); return &instance; } }; @@ -4744,20 +4880,22 @@ struct HelmetAnimScalingMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xC43CA2FC, fields, 2); + static DB2Meta instance(1348283, -1, 3, 0xC43CA2FC, fields, 2); return &instance; } }; -struct HelmetGeosetVisDataMeta +struct HelmetGeosetDataMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[1] = + static DB2MetaField const fields[3] = { - { FT_INT, 9, true }, + { FT_INT, 1, true }, + { FT_BYTE, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 1, 0x2E7C7FED, fields, -1); + static DB2Meta instance(2821752, -1, 3, 0xA88423BF, fields, 2); return &instance; } }; @@ -4774,7 +4912,7 @@ struct HighlightColorMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0xDC14DB43, fields, -1); + static DB2Meta instance(996358, -1, 5, 0xDC14DB43, fields, -1); return &instance; } }; @@ -4787,7 +4925,7 @@ struct HolidayDescriptionsMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0xE70F298C, fields, -1); + static DB2Meta instance(996360, -1, 1, 0xE70F298C, fields, -1); return &instance; } }; @@ -4800,7 +4938,7 @@ struct HolidayNamesMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF2917D77, fields, -1); + static DB2Meta instance(996359, -1, 1, 0xF2917D77, fields, -1); return &instance; } }; @@ -4820,11 +4958,11 @@ struct HolidaysMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, { FT_SHORT, 10, false }, - { FT_INT, 16, false }, + { FT_INT, 26, false }, { FT_BYTE, 10, false }, { FT_INT, 3, true }, }; - static DB2Meta instance(0, 12, 0xF6DA3904, fields, -1); + static DB2Meta instance(996357, 0, 12, 0xF6DA3904, fields, -1); return &instance; } }; @@ -4833,13 +4971,14 @@ struct HotfixesMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[3] = + static DB2MetaField const fields[4] = { { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xB67D3F47, fields, -1); + static DB2Meta instance(1995523, -1, 4, 0x5AA7BA84, fields, -1); return &instance; } }; @@ -4855,7 +4994,7 @@ struct ImportPriceArmorMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xC4C8D847, fields, -1); + static DB2Meta instance(1121229, -1, 4, 0xC4C8D847, fields, -1); return &instance; } }; @@ -4868,7 +5007,7 @@ struct ImportPriceQualityMeta { { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xCFF4EEC9, fields, -1); + static DB2Meta instance(1121228, -1, 1, 0xCFF4EEC9, fields, -1); return &instance; } }; @@ -4881,7 +5020,7 @@ struct ImportPriceShieldMeta { { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xCFF4EEC9, fields, -1); + static DB2Meta instance(1121227, -1, 1, 0xCFF4EEC9, fields, -1); return &instance; } }; @@ -4894,7 +5033,7 @@ struct ImportPriceWeaponMeta { { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xCFF4EEC9, fields, -1); + static DB2Meta instance(1121230, -1, 1, 0xCFF4EEC9, fields, -1); return &instance; } }; @@ -4916,7 +5055,7 @@ struct InvasionClientDataMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(2, 10, 0x04FC0B4F, fields, 9); + static DB2Meta instance(1336651, 2, 10, 0x04FC0B4F, fields, 9); return &instance; } }; @@ -4936,7 +5075,7 @@ struct ItemMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 8, 0xF9600007, fields, -1); + static DB2Meta instance(841626, -1, 8, 0xF9600007, fields, -1); return &instance; } }; @@ -4952,7 +5091,7 @@ struct ItemAppearanceMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x422F764D, fields, -1); + static DB2Meta instance(982462, -1, 4, 0x422F764D, fields, -1); return &instance; } }; @@ -4966,7 +5105,7 @@ struct ItemAppearanceXUiCameraMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xCD3677FD, fields, -1); + static DB2Meta instance(1248126, -1, 2, 0xCD3677FD, fields, -1); return &instance; } }; @@ -4979,7 +5118,7 @@ struct ItemArmorQualityMeta { { FT_FLOAT, 7, true }, }; - static DB2Meta instance(-1, 1, 0x0B17E016, fields, -1); + static DB2Meta instance(1283021, -1, 1, 0x0B17E016, fields, -1); return &instance; } }; @@ -4993,7 +5132,7 @@ struct ItemArmorShieldMeta { FT_FLOAT, 7, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xC88C8C8D, fields, -1); + static DB2Meta instance(1277741, -1, 2, 0xC88C8C8D, fields, -1); return &instance; } }; @@ -5010,7 +5149,7 @@ struct ItemArmorTotalMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xC4CD0FD9, fields, -1); + static DB2Meta instance(1283022, -1, 5, 0xC4CD0FD9, fields, -1); return &instance; } }; @@ -5023,7 +5162,7 @@ struct ItemBagFamilyMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0x9F2C8370, fields, -1); + static DB2Meta instance(1278179, -1, 1, 0x9F2C8370, fields, -1); return &instance; } }; @@ -5039,7 +5178,7 @@ struct ItemBonusMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xB96C1748, fields, 1); + static DB2Meta instance(959070, -1, 4, 0xB96C1748, fields, 1); return &instance; } }; @@ -5053,7 +5192,7 @@ struct ItemBonusListLevelDeltaMeta { FT_SHORT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(1, 2, 0x819C0CC1, fields, -1); + static DB2Meta instance(1320358, 1, 2, 0x819C0CC1, fields, -1); return &instance; } }; @@ -5070,7 +5209,7 @@ struct ItemBonusTreeNodeMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 5, 0x1DDAA885, fields, 4); + static DB2Meta instance(987134, -1, 5, 0x1DDAA885, fields, 4); return &instance; } }; @@ -5082,10 +5221,10 @@ struct ItemChildEquipmentMeta static DB2MetaField const fields[3] = { { FT_INT, 1, true }, - { FT_BYTE, 1, false }, { FT_INT, 1, true }, + { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0x48E64550, fields, 2); + static DB2Meta instance(1247926, -1, 3, 0x50B8B75E, fields, 0); return &instance; } }; @@ -5101,7 +5240,7 @@ struct ItemClassMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xB6C67A3D, fields, -1); + static DB2Meta instance(1140189, -1, 4, 0xB6C67A3D, fields, -1); return &instance; } }; @@ -5119,7 +5258,7 @@ struct ItemContextPickerEntryMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 6, 0x1596EAF3, fields, 5); + static DB2Meta instance(1405665, -1, 6, 0x1596EAF3, fields, 5); return &instance; } }; @@ -5132,7 +5271,7 @@ struct ItemCurrencyCostMeta { { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xDAC6A93C, fields, 0); + static DB2Meta instance(801670, -1, 1, 0xDAC6A93C, fields, 0); return &instance; } }; @@ -5146,7 +5285,7 @@ struct ItemDamageAmmoMeta { FT_SHORT, 1, false }, { FT_FLOAT, 7, true }, }; - static DB2Meta instance(-1, 2, 0x1309BE8D, fields, -1); + static DB2Meta instance(1277740, -1, 2, 0x1309BE8D, fields, -1); return &instance; } }; @@ -5160,7 +5299,7 @@ struct ItemDamageOneHandMeta { FT_SHORT, 1, false }, { FT_FLOAT, 7, true }, }; - static DB2Meta instance(-1, 2, 0x1309BE8D, fields, -1); + static DB2Meta instance(1277743, -1, 2, 0x1309BE8D, fields, -1); return &instance; } }; @@ -5174,7 +5313,7 @@ struct ItemDamageOneHandCasterMeta { FT_SHORT, 1, false }, { FT_FLOAT, 7, true }, }; - static DB2Meta instance(-1, 2, 0x1309BE8D, fields, -1); + static DB2Meta instance(1277739, -1, 2, 0x1309BE8D, fields, -1); return &instance; } }; @@ -5188,7 +5327,7 @@ struct ItemDamageTwoHandMeta { FT_SHORT, 1, false }, { FT_FLOAT, 7, true }, }; - static DB2Meta instance(-1, 2, 0x1309BE8D, fields, -1); + static DB2Meta instance(1277738, -1, 2, 0x1309BE8D, fields, -1); return &instance; } }; @@ -5202,7 +5341,7 @@ struct ItemDamageTwoHandCasterMeta { FT_SHORT, 1, false }, { FT_FLOAT, 7, true }, }; - static DB2Meta instance(-1, 2, 0x1309BE8D, fields, -1); + static DB2Meta instance(1277742, -1, 2, 0x1309BE8D, fields, -1); return &instance; } }; @@ -5221,7 +5360,7 @@ struct ItemDisenchantLootMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 7, 0x146B9F40, fields, 6); + static DB2Meta instance(1134087, -1, 7, 0x146B9F40, fields, 6); return &instance; } }; @@ -5248,7 +5387,7 @@ struct ItemDisplayInfoMeta { FT_INT, 6, true }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 15, 0x089404D9, fields, -1); + static DB2Meta instance(1266429, -1, 15, 0x089404D9, fields, -1); return &instance; } }; @@ -5263,7 +5402,7 @@ struct ItemDisplayInfoMaterialResMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x936E6A99, fields, 2); + static DB2Meta instance(1280614, -1, 3, 0x936E6A99, fields, 2); return &instance; } }; @@ -5277,7 +5416,7 @@ struct ItemDisplayXUiCameraMeta { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x3E999EAA, fields, -1); + static DB2Meta instance(1146690, -1, 2, 0x3E999EAA, fields, -1); return &instance; } }; @@ -5298,7 +5437,7 @@ struct ItemEffectMeta { FT_SHORT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 9, 0x46818AA6, fields, 8); + static DB2Meta instance(969941, -1, 9, 0x46818AA6, fields, 8); return &instance; } }; @@ -5320,7 +5459,22 @@ struct ItemExtendedCostMeta { FT_SHORT, 5, false }, { FT_INT, 5, false }, }; - static DB2Meta instance(-1, 10, 0x2AC5BE11, fields, -1); + static DB2Meta instance(801681, -1, 10, 0x2AC5BE11, fields, -1); + return &instance; + } +}; + +struct ItemFallbackVisualMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2358574, -1, 3, 0x9628BAFD, fields, -1); return &instance; } }; @@ -5333,7 +5487,7 @@ struct ItemGroupSoundsMeta { { FT_INT, 4, false }, }; - static DB2Meta instance(-1, 1, 0x909375D2, fields, -1); + static DB2Meta instance(1283023, -1, 1, 0x909375D2, fields, -1); return &instance; } }; @@ -5342,12 +5496,13 @@ struct ItemLevelSelectorMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[2] = + static DB2MetaField const fields[3] = { { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, + { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x3112276E, fields, -1); + static DB2Meta instance(1588911, -1, 3, 0xED48D0C0, fields, -1); return &instance; } }; @@ -5362,7 +5517,7 @@ struct ItemLevelSelectorQualityMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xC40169D5, fields, 2); + static DB2Meta instance(1624937, -1, 3, 0xC40169D5, fields, 2); return &instance; } }; @@ -5376,7 +5531,7 @@ struct ItemLevelSelectorQualitySetMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x89657A48, fields, -1); + static DB2Meta instance(1624933, -1, 2, 0x89657A48, fields, -1); return &instance; } }; @@ -5391,7 +5546,7 @@ struct ItemLimitCategoryMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xE068171C, fields, -1); + static DB2Meta instance(1237440, -1, 3, 0xE068171C, fields, -1); return &instance; } }; @@ -5406,7 +5561,7 @@ struct ItemLimitCategoryConditionMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x7F847085, fields, 2); + static DB2Meta instance(1378590, -1, 3, 0x7F847085, fields, 2); return &instance; } }; @@ -5424,7 +5579,7 @@ struct ItemModifiedAppearanceMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(0, 6, 0x9C32B7FF, fields, 1); + static DB2Meta instance(982457, 0, 6, 0x9C32B7FF, fields, 1); return &instance; } }; @@ -5441,7 +5596,7 @@ struct ItemModifiedAppearanceExtraMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 5, 0x7E2FD302, fields, -1); + static DB2Meta instance(1278399, -1, 5, 0x7E2FD302, fields, -1); return &instance; } }; @@ -5455,7 +5610,7 @@ struct ItemNameDescriptionMeta { FT_STRING, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xBBF04CCC, fields, -1); + static DB2Meta instance(1332559, -1, 2, 0xBBF04CCC, fields, -1); return &instance; } }; @@ -5468,7 +5623,7 @@ struct ItemPetFoodMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0xD6AB60EB, fields, -1); + static DB2Meta instance(1302240, -1, 1, 0xD6AB60EB, fields, -1); return &instance; } }; @@ -5483,36 +5638,7 @@ struct ItemPriceBaseMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xC90092C7, fields, -1); - return &instance; - } -}; - -struct ItemRandomPropertiesMeta -{ - static DB2Meta const* Instance() - { - static DB2MetaField const fields[2] = - { - { FT_STRING, 1, true }, - { FT_SHORT, 5, false }, - }; - static DB2Meta instance(-1, 2, 0xBDA8BFCD, fields, -1); - return &instance; - } -}; - -struct ItemRandomSuffixMeta -{ - static DB2Meta const* Instance() - { - static DB2MetaField const fields[3] = - { - { FT_STRING, 1, true }, - { FT_SHORT, 5, false }, - { FT_SHORT, 5, false }, - }; - static DB2Meta instance(-1, 3, 0xABCC4871, fields, -1); + static DB2Meta instance(1121231, -1, 3, 0xC90092C7, fields, -1); return &instance; } }; @@ -5528,7 +5654,7 @@ struct ItemRangedDisplayInfoMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0xA6B99F0D, fields, -1); + static DB2Meta instance(1270315, -1, 4, 0xA6B99F0D, fields, -1); return &instance; } }; @@ -5554,7 +5680,7 @@ struct ItemSearchNameMeta { FT_SHORT, 1, false }, { FT_INT, 4, true }, }; - static DB2Meta instance(2, 14, 0xF0940AFC, fields, -1); + static DB2Meta instance(1273408, 2, 14, 0xF0940AFC, fields, -1); return &instance; } }; @@ -5571,7 +5697,7 @@ struct ItemSetMeta { FT_SHORT, 1, false }, { FT_INT, 17, false }, }; - static DB2Meta instance(-1, 5, 0xB02A9041, fields, -1); + static DB2Meta instance(1343609, -1, 5, 0xB02A9041, fields, -1); return &instance; } }; @@ -5587,7 +5713,7 @@ struct ItemSetSpellMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0xD6AEEA60, fields, 3); + static DB2Meta instance(1314689, -1, 4, 0xD6AEEA60, fields, 3); return &instance; } }; @@ -5596,7 +5722,7 @@ struct ItemSparseMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[64] = + static DB2MetaField const fields[62] = { { FT_LONG, 1, true }, { FT_STRING, 1, true }, @@ -5640,8 +5766,6 @@ struct ItemSparseMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, { FT_SHORT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, @@ -5663,7 +5787,7 @@ struct ItemSparseMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 64, 0xF9021F01, fields, -1); + static DB2Meta instance(1572924, -1, 62, 0xF8931063, fields, -1); return &instance; } }; @@ -5681,7 +5805,7 @@ struct ItemSpecMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 6, 0xEB138F8E, fields, 2); + static DB2Meta instance(1135120, -1, 6, 0xEB138F8E, fields, 2); return &instance; } }; @@ -5695,7 +5819,7 @@ struct ItemSpecOverrideMeta { FT_SHORT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xB235D33A, fields, 1); + static DB2Meta instance(1134576, -1, 2, 0xB235D33A, fields, 1); return &instance; } }; @@ -5717,7 +5841,7 @@ struct ItemSubClassMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 10, 0xC7178B11, fields, 2); + static DB2Meta instance(1261604, -1, 10, 0xC7178B11, fields, 2); return &instance; } }; @@ -5732,7 +5856,7 @@ struct ItemSubClassMaskMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x146E3154, fields, -1); + static DB2Meta instance(1302852, -1, 3, 0x146E3154, fields, -1); return &instance; } }; @@ -5749,7 +5873,7 @@ struct ItemUpgradeMeta { FT_SHORT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 5, 0x706FA369, fields, -1); + static DB2Meta instance(801687, -1, 5, 0x706FA369, fields, -1); return &instance; } }; @@ -5762,7 +5886,7 @@ struct ItemVisualsMeta { { FT_INT, 5, true }, }; - static DB2Meta instance(-1, 1, 0x4025FA36, fields, -1); + static DB2Meta instance(1343605, -1, 1, 0x4025FA36, fields, -1); return &instance; } }; @@ -5776,7 +5900,7 @@ struct ItemXBonusTreeMeta { FT_SHORT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x57244BD5, fields, 1); + static DB2Meta instance(987133, -1, 2, 0x57244BD5, fields, 1); return &instance; } }; @@ -5785,12 +5909,13 @@ struct JournalEncounterMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[10] = + static DB2MetaField const fields[11] = { { FT_STRING, 1, true }, { FT_STRING, 1, true }, { FT_FLOAT, 2, true }, { FT_SHORT, 1, false }, + { FT_SHORT, 1, false }, { FT_INT, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, @@ -5798,7 +5923,7 @@ struct JournalEncounterMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 10, 0x5E057FAD, fields, -1); + static DB2Meta instance(1240336, -1, 11, 0x9C7CB433, fields, -1); return &instance; } }; @@ -5818,7 +5943,7 @@ struct JournalEncounterCreatureMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(2, 8, 0x71CE658D, fields, 3); + static DB2Meta instance(1301155, 2, 8, 0x71CE658D, fields, 3); return &instance; } }; @@ -5836,7 +5961,7 @@ struct JournalEncounterItemMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(0, 6, 0x5FD94071, fields, 1); + static DB2Meta instance(1344467, 0, 6, 0x5FD94071, fields, 1); return &instance; } }; @@ -5863,7 +5988,7 @@ struct JournalEncounterSectionMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 15, 0x582FB4F6, fields, -1); + static DB2Meta instance(1134413, -1, 15, 0x582FB4F6, fields, -1); return &instance; } }; @@ -5877,7 +6002,7 @@ struct JournalEncounterXDifficultyMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x436676BA, fields, 1); + static DB2Meta instance(1121901, -1, 2, 0x436676BA, fields, 1); return &instance; } }; @@ -5894,7 +6019,7 @@ struct JournalEncounterXMapLocMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xBCE56697, fields, 4); + static DB2Meta instance(1722928, -1, 5, 0xBCE56697, fields, 4); return &instance; } }; @@ -5917,7 +6042,7 @@ struct JournalInstanceMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(2, 11, 0xBB10478F, fields, -1); + static DB2Meta instance(1237438, 2, 11, 0xBB10478F, fields, -1); return &instance; } }; @@ -5931,7 +6056,7 @@ struct JournalItemXDifficultyMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xF938F4BD, fields, 1); + static DB2Meta instance(1277744, -1, 2, 0xF938F4BD, fields, 1); return &instance; } }; @@ -5945,7 +6070,7 @@ struct JournalSectionXDifficultyMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xE02C355F, fields, 1); + static DB2Meta instance(1121900, -1, 2, 0xE02C355F, fields, 1); return &instance; } }; @@ -5958,7 +6083,7 @@ struct JournalTierMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0xE0D727CB, fields, -1); + static DB2Meta instance(1349056, -1, 1, 0xE0D727CB, fields, -1); return &instance; } }; @@ -5972,7 +6097,7 @@ struct JournalTierXInstanceMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xD584CE6A, fields, 0); + static DB2Meta instance(1285009, -1, 2, 0xD584CE6A, fields, 0); return &instance; } }; @@ -5985,7 +6110,7 @@ struct KeychainMeta { { FT_BYTE, 32, false }, }; - static DB2Meta instance(-1, 1, 0x67DDA82E, fields, -1); + static DB2Meta instance(801693, -1, 1, 0x67DDA82E, fields, -1); return &instance; } }; @@ -6001,7 +6126,7 @@ struct KeystoneAffixMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(2, 4, 0x60D97B7F, fields, -1); + static DB2Meta instance(1344761, 2, 4, 0x60D97B7F, fields, -1); return &instance; } }; @@ -6020,7 +6145,7 @@ struct LFGDungeonExpansionMeta { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 7, 0x6754EDAB, fields, 6); + static DB2Meta instance(1343606, -1, 7, 0x6754EDAB, fields, 6); return &instance; } }; @@ -6036,7 +6161,7 @@ struct LFGDungeonGroupMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x4E84BE76, fields, -1); + static DB2Meta instance(1135058, -1, 4, 0x4E84BE76, fields, -1); return &instance; } }; @@ -6081,7 +6206,7 @@ struct LFGDungeonsMeta { FT_BYTE, 1, false }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 33, 0xD9B678AD, fields, -1); + static DB2Meta instance(1361033, -1, 33, 0xD9B678AD, fields, -1); return &instance; } }; @@ -6096,7 +6221,7 @@ struct LFGRoleRequirementMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x35B34A59, fields, 2); + static DB2Meta instance(982805, -1, 3, 0x35B34A59, fields, 2); return &instance; } }; @@ -6110,7 +6235,7 @@ struct LanguageWordsMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0xFBB33D15, fields, -1); + static DB2Meta instance(984702, -1, 2, 0xFBB33D15, fields, -1); return &instance; } }; @@ -6124,7 +6249,7 @@ struct LanguagesMeta { FT_STRING, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(1, 2, 0xAA508D47, fields, -1); + static DB2Meta instance(1135325, 1, 2, 0xAA508D47, fields, -1); return &instance; } }; @@ -6139,7 +6264,7 @@ struct LfgDungeonsGroupingMapMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xD50B89E4, fields, 2); + static DB2Meta instance(1339818, -1, 3, 0xD50B89E4, fields, 2); return &instance; } }; @@ -6156,7 +6281,7 @@ struct LightMeta { FT_SHORT, 1, true }, { FT_SHORT, 8, false }, }; - static DB2Meta instance(-1, 5, 0x04052B1F, fields, -1); + static DB2Meta instance(1375579, -1, 5, 0x04052B1F, fields, -1); return &instance; } }; @@ -6165,7 +6290,7 @@ struct LightDataMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[36] = + static DB2MetaField const fields[37] = { { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, @@ -6203,8 +6328,9 @@ struct LightDataMeta { FT_INT, 1, false }, { FT_FLOAT, 1, true }, { FT_INT, 1, false }, + { FT_FLOAT, 4, true }, }; - static DB2Meta instance(-1, 36, 0xE7CA3F85, fields, 0); + static DB2Meta instance(1375580, -1, 37, 0xFCED593A, fields, 0); return &instance; } }; @@ -6225,10 +6351,10 @@ struct LightParamsMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, - { FT_BYTE, 1, true }, + { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(1, 12, 0xA08FAABA, fields, -1); + static DB2Meta instance(1334669, 1, 12, 0x92B4D392, fields, -1); return &instance; } }; @@ -6244,7 +6370,7 @@ struct LightSkyboxMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x757E9EB6, fields, -1); + static DB2Meta instance(1308501, -1, 4, 0x757E9EB6, fields, -1); return &instance; } }; @@ -6290,7 +6416,7 @@ struct LightningMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 34, 0x8B6D192C, fields, -1); + static DB2Meta instance(2003383, -1, 34, 0x8B6D192C, fields, -1); return &instance; } }; @@ -6304,7 +6430,7 @@ struct LiquidMaterialMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 2, 0x6A7287A2, fields, -1); + static DB2Meta instance(1132538, -1, 2, 0x6A7287A2, fields, -1); return &instance; } }; @@ -6321,7 +6447,7 @@ struct LiquidObjectMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0x7AF380AA, fields, -1); + static DB2Meta instance(1308058, -1, 5, 0x7AF380AA, fields, -1); return &instance; } }; @@ -6354,7 +6480,23 @@ struct LiquidTypeMeta { FT_INT, 4, false }, { FT_FLOAT, 4, true }, }; - static DB2Meta instance(-1, 21, 0x29F8C65E, fields, -1); + static DB2Meta instance(1371380, -1, 21, 0x29F8C65E, fields, -1); + return &instance; + } +}; + +struct LiquidTypeXTextureMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_BYTE, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2261065, -1, 4, 0x6182D296, fields, 3); return &instance; } }; @@ -6371,7 +6513,7 @@ struct LoadingScreenTaxiSplinesMeta { FT_FLOAT, 10, true }, { FT_FLOAT, 10, true }, }; - static DB2Meta instance(-1, 5, 0xCDF5DDF1, fields, -1); + static DB2Meta instance(1302239, -1, 5, 0xCDF5DDF1, fields, -1); return &instance; } }; @@ -6380,13 +6522,20 @@ struct LoadingScreensMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[3] = + static DB2MetaField const fields[10] = { { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xA2488A1C, fields, -1); + static DB2Meta instance(1266541, -1, 10, 0x13F390BF, fields, -1); return &instance; } }; @@ -6395,14 +6544,15 @@ struct LocaleMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[4] = + static DB2MetaField const fields[5] = { { FT_BYTE, 1, false }, { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, + { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x65638FD5, fields, -1); + static DB2Meta instance(801706, -1, 5, 0x4D136010, fields, -1); return &instance; } }; @@ -6416,7 +6566,7 @@ struct LocationMeta { FT_FLOAT, 3, true }, { FT_FLOAT, 3, true }, }; - static DB2Meta instance(-1, 2, 0x71BD1122, fields, -1); + static DB2Meta instance(801707, -1, 2, 0x71BD1122, fields, -1); return &instance; } }; @@ -6432,7 +6582,7 @@ struct LockMeta { FT_BYTE, 8, false }, { FT_BYTE, 8, false }, }; - static DB2Meta instance(-1, 4, 0x156C0BD7, fields, -1); + static DB2Meta instance(1343608, -1, 4, 0x156C0BD7, fields, -1); return &instance; } }; @@ -6449,7 +6599,7 @@ struct LockTypeMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(4, 5, 0x3F736720, fields, -1); + static DB2Meta instance(1284823, 4, 5, 0x3F736720, fields, -1); return &instance; } }; @@ -6479,7 +6629,7 @@ struct LookAtControllerMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 18, 0x2E077E56, fields, -1); + static DB2Meta instance(1098785, -1, 18, 0x2E077E56, fields, -1); return &instance; } }; @@ -6492,7 +6642,7 @@ struct MailTemplateMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0xC6E0D9B5, fields, -1); + static DB2Meta instance(1240344, -1, 1, 0xC6E0D9B5, fields, -1); return &instance; } }; @@ -6501,7 +6651,7 @@ struct ManagedWorldStateMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[10] = + static DB2MetaField const fields[11] = { { FT_INT, 1, false }, { FT_INT, 1, true }, @@ -6512,9 +6662,10 @@ struct ManagedWorldStateMeta { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, + { FT_BYTE, 1, true }, { FT_INT, 4, true }, }; - static DB2Meta instance(0, 10, 0x043BFC8F, fields, -1); + static DB2Meta instance(1587159, 0, 11, 0x5A184C08, fields, -1); return &instance; } }; @@ -6530,7 +6681,7 @@ struct ManagedWorldStateBuffMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x049B986F, fields, 3); + static DB2Meta instance(1587155, -1, 4, 0x049B986F, fields, 3); return &instance; } }; @@ -6545,7 +6696,7 @@ struct ManagedWorldStateInputMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x21237CDC, fields, -1); + static DB2Meta instance(1587151, -1, 3, 0x21237CDC, fields, -1); return &instance; } }; @@ -6558,7 +6709,7 @@ struct ManifestInterfaceActionIconMeta { { FT_INT, 1, false }, }; - static DB2Meta instance(0, 1, 0xB5EE0DCB, fields, -1); + static DB2Meta instance(1375803, 0, 1, 0xB5EE0DCB, fields, -1); return &instance; } }; @@ -6572,7 +6723,7 @@ struct ManifestInterfaceDataMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 2, 0x03E4C021, fields, -1); + static DB2Meta instance(1375801, -1, 2, 0x03E4C021, fields, -1); return &instance; } }; @@ -6585,7 +6736,7 @@ struct ManifestInterfaceItemIconMeta { { FT_INT, 1, false }, }; - static DB2Meta instance(0, 1, 0xB5EE0DCB, fields, -1); + static DB2Meta instance(1375804, 0, 1, 0xB5EE0DCB, fields, -1); return &instance; } }; @@ -6598,7 +6749,7 @@ struct ManifestInterfaceTOCDataMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xD00DAF09, fields, -1); + static DB2Meta instance(1267335, -1, 1, 0xD00DAF09, fields, -1); return &instance; } }; @@ -6611,7 +6762,7 @@ struct ManifestMP3Meta { { FT_INT, 1, false }, }; - static DB2Meta instance(0, 1, 0xB5EE0DCB, fields, -1); + static DB2Meta instance(1375802, 0, 1, 0xB5EE0DCB, fields, -1); return &instance; } }; @@ -6620,7 +6771,7 @@ struct MapMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[22] = + static DB2MetaField const fields[23] = { { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_STRING, 1, true }, @@ -6643,9 +6794,10 @@ struct MapMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 22, 0x503A3E58, fields, -1); + static DB2Meta instance(1349477, -1, 23, 0xB290D217, fields, -1); return &instance; } }; @@ -6660,7 +6812,7 @@ struct MapCelestialBodyMeta { FT_INT, 1, false }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x14543648, fields, 2); + static DB2Meta instance(1597466, -1, 3, 0x14543648, fields, 2); return &instance; } }; @@ -6677,7 +6829,7 @@ struct MapChallengeModeMeta { FT_BYTE, 1, false }, { FT_SHORT, 3, true }, }; - static DB2Meta instance(1, 5, 0x50F3ABC2, fields, 2); + static DB2Meta instance(801709, 1, 5, 0x50F3ABC2, fields, 2); return &instance; } }; @@ -6689,17 +6841,17 @@ struct MapDifficultyMeta static DB2MetaField const fields[10] = { { FT_STRING, 1, true }, - { FT_INT, 1, false }, { FT_INT, 1, true }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, true }, + { FT_BYTE, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 10, 0xF876E8BA, fields, 9); + static DB2Meta instance(1367868, -1, 10, 0xD3C70303, fields, 9); return &instance; } }; @@ -6715,7 +6867,7 @@ struct MapDifficultyXConditionMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x8DBA5D16, fields, 3); + static DB2Meta instance(1375435, -1, 4, 0x8DBA5D16, fields, 3); return &instance; } }; @@ -6732,7 +6884,7 @@ struct MapLoadingScreenMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xC4CFD9A8, fields, 4); + static DB2Meta instance(1719707, -1, 5, 0xC4CFD9A8, fields, 4); return &instance; } }; @@ -6751,7 +6903,7 @@ struct MarketingPromotionsXLocaleMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 7, 0xC04E61FB, fields, -1); + static DB2Meta instance(801710, -1, 7, 0xC04E61FB, fields, -1); return &instance; } }; @@ -6767,7 +6919,7 @@ struct MaterialMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x370D43B4, fields, -1); + static DB2Meta instance(1294217, -1, 4, 0x370D43B4, fields, -1); return &instance; } }; @@ -6782,7 +6934,7 @@ struct MinorTalentMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x09F57B9C, fields, 2); + static DB2Meta instance(1347274, -1, 3, 0x09F57B9C, fields, 2); return &instance; } }; @@ -6806,7 +6958,7 @@ struct MissileTargetingMeta { FT_FLOAT, 2, true }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 12, 0xF695DDBA, fields, -1); + static DB2Meta instance(1710117, -1, 12, 0xF695DDBA, fields, -1); return &instance; } }; @@ -6821,7 +6973,7 @@ struct ModelAnimCloakDampeningMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xAA668B4F, fields, 2); + static DB2Meta instance(1465904, -1, 3, 0xAA668B4F, fields, 2); return &instance; } }; @@ -6837,7 +6989,7 @@ struct ModelFileDataMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(0, 4, 0x9C9B4543, fields, 3); + static DB2Meta instance(1337833, 0, 4, 0x9C9B4543, fields, 3); return &instance; } }; @@ -6851,7 +7003,7 @@ struct ModelRibbonQualityMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xA26E8DD1, fields, 1); + static DB2Meta instance(1399953, -1, 2, 0xA26E8DD1, fields, 1); return &instance; } }; @@ -6870,7 +7022,7 @@ struct ModifierTreeMeta { FT_INT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 7, 0x643002AE, fields, -1); + static DB2Meta instance(1267645, -1, 7, 0x643002AE, fields, -1); return &instance; } }; @@ -6893,7 +7045,7 @@ struct MountMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(3, 11, 0x629E87E2, fields, -1); + static DB2Meta instance(921760, 3, 11, 0x629E87E2, fields, -1); return &instance; } }; @@ -6913,7 +7065,7 @@ struct MountCapabilityMeta { FT_INT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(0, 8, 0xD8A906D6, fields, -1); + static DB2Meta instance(1114709, 0, 8, 0xD8A906D6, fields, -1); return &instance; } }; @@ -6928,7 +7080,7 @@ struct MountTypeXCapabilityMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0x613701E9, fields, 0); + static DB2Meta instance(1114715, -1, 3, 0x613701E9, fields, 0); return &instance; } }; @@ -6943,7 +7095,7 @@ struct MountXDisplayMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x2D4F3D78, fields, 2); + static DB2Meta instance(1576117, -1, 3, 0x2D4F3D78, fields, 2); return &instance; } }; @@ -6959,7 +7111,7 @@ struct MovieMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x4848C4FB, fields, -1); + static DB2Meta instance(1332556, -1, 4, 0x4848C4FB, fields, -1); return &instance; } }; @@ -6972,7 +7124,7 @@ struct MovieFileDataMeta { { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 1, 0xB24F82EB, fields, -1); + static DB2Meta instance(1301154, -1, 1, 0xB24F82EB, fields, -1); return &instance; } }; @@ -6987,7 +7139,7 @@ struct MovieVariationMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xAEA671AA, fields, 2); + static DB2Meta instance(1339819, -1, 3, 0xAEA671AA, fields, 2); return &instance; } }; @@ -7010,7 +7162,7 @@ struct MultiStatePropertiesMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 11, 0x50BB5EDC, fields, 10); + static DB2Meta instance(1965592, -1, 11, 0x50BB5EDC, fields, 10); return &instance; } }; @@ -7027,7 +7179,21 @@ struct MultiTransitionPropertiesMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x5720F452, fields, -1); + static DB2Meta instance(1965589, -1, 5, 0x5720F452, fields, -1); + return &instance; + } +}; + +struct MythicPlusSeasonMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2400282, 0, 2, 0xC8DCB4C5, fields, -1); return &instance; } }; @@ -7043,7 +7209,7 @@ struct MythicPlusSeasonRewardLevelsMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xAD6A6D9F, fields, 3); + static DB2Meta instance(2123783, -1, 4, 0x5A0606F2, fields, 3); return &instance; } }; @@ -7058,7 +7224,7 @@ struct NPCModelItemSlotDisplayInfoMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xB8EC2628, fields, 2); + static DB2Meta instance(1340661, -1, 3, 0xB8EC2628, fields, 2); return &instance; } }; @@ -7071,7 +7237,7 @@ struct NPCSoundsMeta { { FT_INT, 4, false }, }; - static DB2Meta instance(-1, 1, 0x5EF56D1F, fields, -1); + static DB2Meta instance(1282621, -1, 1, 0x5EF56D1F, fields, -1); return &instance; } }; @@ -7086,7 +7252,7 @@ struct NameGenMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xB0EBC6C9, fields, -1); + static DB2Meta instance(1122117, -1, 3, 0xB0EBC6C9, fields, -1); return &instance; } }; @@ -7100,7 +7266,7 @@ struct NamesProfanityMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 2, 0xCD33D2BE, fields, -1); + static DB2Meta instance(1117086, -1, 2, 0xCD33D2BE, fields, -1); return &instance; } }; @@ -7113,7 +7279,7 @@ struct NamesReservedMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xECCAE96B, fields, -1); + static DB2Meta instance(1117085, -1, 1, 0xECCAE96B, fields, -1); return &instance; } }; @@ -7127,7 +7293,7 @@ struct NamesReservedLocaleMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x5AAEEDD3, fields, -1); + static DB2Meta instance(1117087, -1, 2, 0x5AAEEDD3, fields, -1); return &instance; } }; @@ -7143,7 +7309,7 @@ struct NumTalentsAtLevelMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 4, 0xDE3268EF, fields, -1); + static DB2Meta instance(1953326, 0, 4, 0xDE3268EF, fields, -1); return &instance; } }; @@ -7163,7 +7329,7 @@ struct ObjectEffectMeta { FT_BYTE, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 8, 0x48D89FCF, fields, -1); + static DB2Meta instance(1090577, -1, 8, 0x48D89FCF, fields, -1); return &instance; } }; @@ -7179,7 +7345,7 @@ struct ObjectEffectModifierMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x68D120B3, fields, -1); + static DB2Meta instance(1090575, -1, 4, 0x68D120B3, fields, -1); return &instance; } }; @@ -7194,7 +7360,7 @@ struct ObjectEffectPackageElemMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x3B8C53F9, fields, -1); + static DB2Meta instance(1090578, -1, 3, 0x3B8C53F9, fields, -1); return &instance; } }; @@ -7215,7 +7381,7 @@ struct OccluderMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(0, 9, 0xFEDCAAB3, fields, -1); + static DB2Meta instance(2066958, 0, 9, 0xFEDCAAB3, fields, -1); return &instance; } }; @@ -7231,7 +7397,7 @@ struct OccluderLocationMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(2, 4, 0x95F8BBE4, fields, -1); + static DB2Meta instance(2115224, 2, 4, 0x95F8BBE4, fields, -1); return &instance; } }; @@ -7247,7 +7413,7 @@ struct OccluderNodeMeta { FT_SHORT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 4, 0x19A34490, fields, -1); + static DB2Meta instance(2066959, 0, 4, 0x19A34490, fields, -1); return &instance; } }; @@ -7265,7 +7431,7 @@ struct OutlineEffectMeta { FT_FLOAT, 1, true }, { FT_INT, 2, false }, }; - static DB2Meta instance(-1, 6, 0xECA16738, fields, -1); + static DB2Meta instance(1279739, -1, 6, 0xECA16738, fields, -1); return &instance; } }; @@ -7280,7 +7446,7 @@ struct OverrideSpellDataMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xCEE01938, fields, -1); + static DB2Meta instance(1002186, -1, 3, 0xCEE01938, fields, -1); return &instance; } }; @@ -7294,7 +7460,7 @@ struct PVPBracketTypesMeta { FT_BYTE, 1, true }, { FT_INT, 4, false }, }; - static DB2Meta instance(-1, 2, 0x54CF87FB, fields, -1); + static DB2Meta instance(1394275, -1, 2, 0x54CF87FB, fields, -1); return &instance; } }; @@ -7310,7 +7476,7 @@ struct PVPDifficultyMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x794DB95D, fields, 3); + static DB2Meta instance(1339820, -1, 4, 0x794DB95D, fields, 3); return &instance; } }; @@ -7324,7 +7490,7 @@ struct PVPItemMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x0CD750C1, fields, -1); + static DB2Meta instance(972287, -1, 2, 0x0CD750C1, fields, -1); return &instance; } }; @@ -7337,7 +7503,7 @@ struct PageTextMaterialMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF6F6B04B, fields, -1); + static DB2Meta instance(1271600, -1, 1, 0xF6F6B04B, fields, -1); return &instance; } }; @@ -7352,7 +7518,7 @@ struct PaperDollItemFrameMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0xB85F646E, fields, -1); + static DB2Meta instance(1252503, -1, 3, 0xB85F646E, fields, -1); return &instance; } }; @@ -7367,7 +7533,7 @@ struct ParagonReputationMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xF9AC6E2E, fields, 0); + static DB2Meta instance(1581183, -1, 3, 0xF9AC6E2E, fields, 0); return &instance; } }; @@ -7382,7 +7548,7 @@ struct ParticleColorMeta { FT_INT, 3, true }, { FT_INT, 3, true }, }; - static DB2Meta instance(-1, 3, 0xB44B4D4D, fields, -1); + static DB2Meta instance(1284820, -1, 3, 0xB44B4D4D, fields, -1); return &instance; } }; @@ -7399,7 +7565,7 @@ struct ParticulateSoundMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xF60E0955, fields, 0); + static DB2Meta instance(2053913, -1, 5, 0xF60E0955, fields, 0); return &instance; } }; @@ -7418,7 +7584,21 @@ struct PathMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 7, 0x3551690B, fields, -1); + static DB2Meta instance(801732, -1, 7, 0x3551690B, fields, -1); + return &instance; + } +}; + +struct PathEdgeMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_INT, 2, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2428705, -1, 2, 0xB96C19D5, fields, 1); return &instance; } }; @@ -7434,7 +7614,7 @@ struct PathNodeMeta { FT_SHORT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 4, 0x19A34490, fields, -1); + static DB2Meta instance(801733, 0, 4, 0x19A34490, fields, -1); return &instance; } }; @@ -7443,15 +7623,16 @@ struct PathNodePropertyMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[5] = + static DB2MetaField const fields[6] = { { FT_INT, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, + { FT_INT, 1, true }, { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 5, 0x578DA815, fields, -1); + static DB2Meta instance(801734, 0, 6, 0x496C7404, fields, -1); return &instance; } }; @@ -7467,7 +7648,7 @@ struct PathPropertyMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 4, 0x3B269A90, fields, -1); + static DB2Meta instance(801735, 0, 4, 0x3B269A90, fields, -1); return &instance; } }; @@ -7480,7 +7661,7 @@ struct PhaseMeta { { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 1, 0x60D39728, fields, -1); + static DB2Meta instance(1348558, -1, 1, 0x60D39728, fields, -1); return &instance; } }; @@ -7505,7 +7686,7 @@ struct PhaseShiftZoneSoundsMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 13, 0x7CA0A010, fields, -1); + static DB2Meta instance(1267336, -1, 13, 0x7CA0A010, fields, -1); return &instance; } }; @@ -7519,7 +7700,7 @@ struct PhaseXPhaseGroupMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xF00195AE, fields, 1); + static DB2Meta instance(987581, -1, 2, 0xF00195AE, fields, 1); return &instance; } }; @@ -7612,7 +7793,7 @@ struct PlayerConditionMeta { FT_INT, 6, false }, { FT_INT, 2, true }, }; - static DB2Meta instance(2, 81, 0xF28CBD18, fields, -1); + static DB2Meta instance(1045411, 2, 81, 0xF28CBD18, fields, -1); return &instance; } }; @@ -7628,7 +7809,7 @@ struct PositionerMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x533B33CB, fields, -1); + static DB2Meta instance(1251523, -1, 4, 0x533B33CB, fields, -1); return &instance; } }; @@ -7648,7 +7829,7 @@ struct PositionerStateMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 8, 0x9E87B63A, fields, -1); + static DB2Meta instance(1251506, -1, 8, 0x9E87B63A, fields, -1); return &instance; } }; @@ -7671,7 +7852,7 @@ struct PositionerStateEntryMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 11, 0xBA9A19C4, fields, -1); + static DB2Meta instance(1251533, -1, 11, 0xBA9A19C4, fields, -1); return &instance; } }; @@ -7688,7 +7869,7 @@ struct PowerDisplayMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0xEB89C62F, fields, -1); + static DB2Meta instance(1332557, -1, 5, 0xEB89C62F, fields, -1); return &instance; } }; @@ -7712,7 +7893,7 @@ struct PowerTypeMeta { FT_FLOAT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 12, 0x6D438CB5, fields, -1); + static DB2Meta instance(1266022, -1, 12, 0x6D438CB5, fields, -1); return &instance; } }; @@ -7729,7 +7910,7 @@ struct PrestigeLevelInfoMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x31BD813F, fields, -1); + static DB2Meta instance(1275869, -1, 5, 0x31BD813F, fields, -1); return &instance; } }; @@ -7744,7 +7925,7 @@ struct PvpScalingEffectMeta { FT_INT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xAF88F6DB, fields, 1); + static DB2Meta instance(1591100, -1, 3, 0xAF88F6DB, fields, 1); return &instance; } }; @@ -7757,7 +7938,23 @@ struct PvpScalingEffectTypeMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF6F6B04B, fields, -1); + static DB2Meta instance(1591098, -1, 1, 0xF6F6B04B, fields, -1); + return &instance; + } +}; + +struct PvpSeasonRewardLevelsMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2470695, -1, 4, 0xA1C5D2E9, fields, 3); return &instance; } }; @@ -7778,7 +7975,7 @@ struct PvpTalentMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(1, 9, 0x340BABA3, fields, 2); + static DB2Meta instance(1302853, 1, 9, 0x340BABA3, fields, 2); return &instance; } }; @@ -7791,7 +7988,7 @@ struct PvpTalentCategoryMeta { { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 1, 0xBB4B5731, fields, -1); + static DB2Meta instance(1891534, -1, 1, 0xBB4B5731, fields, -1); return &instance; } }; @@ -7807,7 +8004,7 @@ struct PvpTalentSlotUnlockMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x572DDD84, fields, -1); + static DB2Meta instance(1950197, -1, 4, 0x572DDD84, fields, -1); return &instance; } }; @@ -7827,7 +8024,7 @@ struct PvpTierMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 8, 0x689983C8, fields, 5); + static DB2Meta instance(2066871, -1, 8, 0x689983C8, fields, 5); return &instance; } }; @@ -7840,7 +8037,7 @@ struct QuestFactionRewardMeta { { FT_SHORT, 10, true }, }; - static DB2Meta instance(-1, 1, 0x504FAFB5, fields, -1); + static DB2Meta instance(1282622, -1, 1, 0x504FAFB5, fields, -1); return &instance; } }; @@ -7849,8 +8046,9 @@ struct QuestFeedbackEffectMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[6] = + static DB2MetaField const fields[7] = { + { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_INT, 1, false }, { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, @@ -7858,7 +8056,7 @@ struct QuestFeedbackEffectMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 6, 0x58E79FBF, fields, -1); + static DB2Meta instance(1343388, -1, 7, 0xE253C9FB, fields, -1); return &instance; } }; @@ -7874,7 +8072,7 @@ struct QuestInfoMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0xDDB38B83, fields, -1); + static DB2Meta instance(1120960, -1, 4, 0xDDB38B83, fields, -1); return &instance; } }; @@ -7889,7 +8087,7 @@ struct QuestLineMeta { FT_STRING, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xC4BD3235, fields, -1); + static DB2Meta instance(973430, -1, 3, 0xC4BD3235, fields, -1); return &instance; } }; @@ -7904,7 +8102,7 @@ struct QuestLineXQuestMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x57EF18BF, fields, 0); + static DB2Meta instance(973441, -1, 3, 0x57EF18BF, fields, 0); return &instance; } }; @@ -7917,7 +8115,7 @@ struct QuestMoneyRewardMeta { { FT_INT, 10, false }, }; - static DB2Meta instance(-1, 1, 0x7E00C5B6, fields, -1); + static DB2Meta instance(1139047, -1, 1, 0x7E00C5B6, fields, -1); return &instance; } }; @@ -7937,7 +8135,7 @@ struct QuestObjectiveMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 8, 0x37353FB6, fields, 7); + static DB2Meta instance(1251960, -1, 8, 0x37353FB6, fields, 7); return &instance; } }; @@ -7956,7 +8154,7 @@ struct QuestPOIBlobMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(0, 7, 0x5DF4B040, fields, 1); + static DB2Meta instance(1251882, 0, 7, 0x5DF4B040, fields, 1); return &instance; } }; @@ -7972,7 +8170,7 @@ struct QuestPOIPointMeta { FT_SHORT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 4, 0x18D6E719, fields, 3); + static DB2Meta instance(1251883, 0, 4, 0x18D6E719, fields, 3); return &instance; } }; @@ -7988,7 +8186,7 @@ struct QuestPackageItemMeta { FT_INT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xEB0764D1, fields, -1); + static DB2Meta instance(801743, -1, 4, 0xEB0764D1, fields, -1); return &instance; } }; @@ -8002,7 +8200,7 @@ struct QuestSortMeta { FT_STRING, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 2, 0x2F5E2228, fields, -1); + static DB2Meta instance(1134585, -1, 2, 0x2F5E2228, fields, -1); return &instance; } }; @@ -8015,7 +8213,7 @@ struct QuestV2Meta { { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 1, 0x638D02EF, fields, -1); + static DB2Meta instance(1139443, -1, 1, 0x638D02EF, fields, -1); return &instance; } }; @@ -8051,7 +8249,7 @@ struct QuestV2CliTaskMeta { FT_INT, 1, true }, { FT_INT, 3, false }, }; - static DB2Meta instance(3, 24, 0xC0387D4E, fields, -1); + static DB2Meta instance(1028735, 3, 24, 0xC0387D4E, fields, -1); return &instance; } }; @@ -8065,7 +8263,7 @@ struct QuestXGroupActivityMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xAA88A593, fields, -1); + static DB2Meta instance(1573634, -1, 2, 0xAA88A593, fields, -1); return &instance; } }; @@ -8078,7 +8276,7 @@ struct QuestXPMeta { { FT_SHORT, 10, false }, }; - static DB2Meta instance(-1, 1, 0xC33E0774, fields, -1); + static DB2Meta instance(1139378, -1, 1, 0xC33E0774, fields, -1); return &instance; } }; @@ -8094,7 +8292,7 @@ struct RandPropPointsMeta { FT_INT, 5, false }, { FT_INT, 5, false }, }; - static DB2Meta instance(-1, 4, 0x7741F65C, fields, -1); + static DB2Meta instance(1310245, -1, 4, 0x7741F65C, fields, -1); return &instance; } }; @@ -8109,7 +8307,7 @@ struct RelicSlotTierRequirementMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x22CDBDE9, fields, -1); + static DB2Meta instance(1716803, -1, 3, 0x22CDBDE9, fields, -1); return &instance; } }; @@ -8126,7 +8324,7 @@ struct RelicTalentMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x8BEAE937, fields, -1); + static DB2Meta instance(1671256, -1, 5, 0x8BEAE937, fields, -1); return &instance; } }; @@ -8144,7 +8342,7 @@ struct ResearchBranchMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 6, 0xA6CB64A5, fields, -1); + static DB2Meta instance(1133729, -1, 6, 0xA6CB64A5, fields, -1); return &instance; } }; @@ -8159,7 +8357,7 @@ struct ResearchFieldMeta { FT_INT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(1, 3, 0xD7448990, fields, -1); + static DB2Meta instance(1133711, 1, 3, 0xD7448990, fields, -1); return &instance; } }; @@ -8180,7 +8378,7 @@ struct ResearchProjectMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(2, 9, 0x4A748755, fields, -1); + static DB2Meta instance(1134090, 2, 9, 0x4A748755, fields, -1); return &instance; } }; @@ -8196,7 +8394,7 @@ struct ResearchSiteMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x14F7693B, fields, -1); + static DB2Meta instance(1134091, -1, 4, 0x14F7693B, fields, -1); return &instance; } }; @@ -8211,7 +8409,7 @@ struct ResistancesMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xF7F049B5, fields, -1); + static DB2Meta instance(1135072, -1, 3, 0xF7F049B5, fields, -1); return &instance; } }; @@ -8229,7 +8427,7 @@ struct RewardPackMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 6, 0xB0527FA7, fields, -1); + static DB2Meta instance(1307156, -1, 6, 0xB0527FA7, fields, -1); return &instance; } }; @@ -8244,7 +8442,7 @@ struct RewardPackXCurrencyTypeMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xEA88FC16, fields, 2); + static DB2Meta instance(1307153, -1, 3, 0xEA88FC16, fields, 2); return &instance; } }; @@ -8259,7 +8457,7 @@ struct RewardPackXItemMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x277E8179, fields, 2); + static DB2Meta instance(1307155, -1, 3, 0x277E8179, fields, 2); return &instance; } }; @@ -8276,7 +8474,7 @@ struct RibbonQualityMeta { FT_FLOAT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 5, 0xBB0CC4F4, fields, -1); + static DB2Meta instance(1398908, -1, 5, 0xBB0CC4F4, fields, -1); return &instance; } }; @@ -8290,7 +8488,7 @@ struct RulesetItemUpgradeMeta { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xA03B4C48, fields, -1); + static DB2Meta instance(801749, -1, 2, 0xA03B4C48, fields, -1); return &instance; } }; @@ -8303,7 +8501,7 @@ struct SDReplacementModelMeta { { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 1, 0xD9C05976, fields, -1); + static DB2Meta instance(1712172, -1, 1, 0xD9C05976, fields, -1); return &instance; } }; @@ -8318,7 +8516,7 @@ struct ScalingStatDistributionMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x34B9A97A, fields, -1); + static DB2Meta instance(1141728, -1, 3, 0x34B9A97A, fields, -1); return &instance; } }; @@ -8335,7 +8533,7 @@ struct ScenarioMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 5, 0x0857765A, fields, -1); + static DB2Meta instance(1139062, -1, 5, 0x0857765A, fields, -1); return &instance; } }; @@ -8349,7 +8547,7 @@ struct ScenarioEventEntryMeta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x34B30E13, fields, -1); + static DB2Meta instance(1141065, -1, 2, 0x34B30E13, fields, -1); return &instance; } }; @@ -8372,7 +8570,7 @@ struct ScenarioStepMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 11, 0x8FF5E1E6, fields, 2); + static DB2Meta instance(1132761, -1, 11, 0x8FF5E1E6, fields, 2); return &instance; } }; @@ -8386,7 +8584,7 @@ struct SceneScriptMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xEF472E96, fields, -1); + static DB2Meta instance(801754, -1, 2, 0xEF472E96, fields, -1); return &instance; } }; @@ -8400,7 +8598,7 @@ struct SceneScriptGlobalTextMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 2, 0xDE6E2251, fields, -1); + static DB2Meta instance(1758036, -1, 2, 0xDE6E2251, fields, -1); return &instance; } }; @@ -8413,7 +8611,7 @@ struct SceneScriptPackageMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF6F6B04B, fields, -1); + static DB2Meta instance(801755, -1, 1, 0xF6F6B04B, fields, -1); return &instance; } }; @@ -8424,12 +8622,12 @@ struct SceneScriptPackageMemberMeta { static DB2MetaField const fields[4] = { - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x9E18D06F, fields, 0); + static DB2Meta instance(801756, -1, 4, 0x897D1A4B, fields, 0); return &instance; } }; @@ -8443,7 +8641,7 @@ struct SceneScriptTextMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 2, 0xDE6E2251, fields, -1); + static DB2Meta instance(1758037, -1, 2, 0xDE6E2251, fields, -1); return &instance; } }; @@ -8460,7 +8658,7 @@ struct ScheduledIntervalMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x0C287F7A, fields, -1); + static DB2Meta instance(1327082, -1, 5, 0x0C287F7A, fields, -1); return &instance; } }; @@ -8480,7 +8678,7 @@ struct ScheduledWorldStateMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 8, 0xDC45735A, fields, 0); + static DB2Meta instance(1327083, -1, 8, 0xDC45735A, fields, 0); return &instance; } }; @@ -8497,7 +8695,7 @@ struct ScheduledWorldStateGroupMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xCF71B287, fields, -1); + static DB2Meta instance(1327084, -1, 5, 0xCF71B287, fields, -1); return &instance; } }; @@ -8512,7 +8710,7 @@ struct ScheduledWorldStateXUniqCatMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 3, 0xF512C749, fields, 2); + static DB2Meta instance(1388724, 0, 3, 0xF512C749, fields, 2); return &instance; } }; @@ -8536,7 +8734,7 @@ struct ScreenEffectMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 12, 0x7A371491, fields, -1); + static DB2Meta instance(1302849, -1, 12, 0x7A371491, fields, -1); return &instance; } }; @@ -8549,7 +8747,7 @@ struct ScreenLocationMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF6F6B04B, fields, -1); + static DB2Meta instance(1279416, -1, 1, 0xF6F6B04B, fields, -1); return &instance; } }; @@ -8562,7 +8760,7 @@ struct SeamlessSiteMeta { { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 1, 0x9E36592F, fields, 0); + static DB2Meta instance(1328719, -1, 1, 0x9E36592F, fields, 0); return &instance; } }; @@ -8575,7 +8773,7 @@ struct ServerMessagesMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0xCC7971DF, fields, -1); + static DB2Meta instance(1301141, -1, 1, 0xCC7971DF, fields, -1); return &instance; } }; @@ -8600,7 +8798,7 @@ struct ShadowyEffectMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 13, 0x7292BC4C, fields, -1); + static DB2Meta instance(1239844, -1, 13, 0x7292BC4C, fields, -1); return &instance; } }; @@ -8616,7 +8814,7 @@ struct SiegeablePropertiesMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x98E42A9F, fields, -1); + static DB2Meta instance(1954391, -1, 4, 0x98E42A9F, fields, -1); return &instance; } }; @@ -8641,7 +8839,7 @@ struct SkillLineMeta { FT_SHORT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(5, 13, 0xEC83FE8A, fields, -1); + static DB2Meta instance(1240935, 5, 13, 0xEC83FE8A, fields, -1); return &instance; } }; @@ -8668,7 +8866,7 @@ struct SkillLineAbilityMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(1, 15, 0xA38AD072, fields, 2); + static DB2Meta instance(1266278, 1, 15, 0xA38AD072, fields, 2); return &instance; } }; @@ -8687,7 +8885,7 @@ struct SkillRaceClassInfoMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 7, 0x4CFD464E, fields, 1); + static DB2Meta instance(1240406, -1, 7, 0x4CFD464E, fields, 1); return &instance; } }; @@ -8696,7 +8894,7 @@ struct SoundAmbienceMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[6] = + static DB2MetaField const fields[7] = { { FT_BYTE, 1, false }, { FT_INT, 1, false }, @@ -8704,8 +8902,9 @@ struct SoundAmbienceMeta { FT_INT, 2, false }, { FT_INT, 2, false }, { FT_INT, 2, false }, + { FT_INT, 2, false }, }; - static DB2Meta instance(-1, 6, 0x625245C7, fields, -1); + static DB2Meta instance(1310628, -1, 7, 0xDC7D52F2, fields, -1); return &instance; } }; @@ -8720,7 +8919,7 @@ struct SoundAmbienceFlavorMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x41E33D5D, fields, 2); + static DB2Meta instance(1267065, -1, 3, 0x41E33D5D, fields, 2); return &instance; } }; @@ -8740,7 +8939,7 @@ struct SoundBusMeta { FT_BYTE, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(0, 8, 0x7CC84C2D, fields, 7); + static DB2Meta instance(1310246, 0, 8, 0x7CC84C2D, fields, 7); return &instance; } }; @@ -8759,7 +8958,7 @@ struct SoundBusOverrideMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(0, 7, 0xF321EA82, fields, 1); + static DB2Meta instance(1598732, 0, 7, 0xF321EA82, fields, 1); return &instance; } }; @@ -8773,7 +8972,7 @@ struct SoundEmitterPillPointsMeta { FT_FLOAT, 3, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xD63C5DE3, fields, 1); + static DB2Meta instance(1092317, -1, 2, 0xD63C5DE3, fields, 1); return &instance; } }; @@ -8797,7 +8996,7 @@ struct SoundEmittersMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(3, 12, 0x1FDCDD5A, fields, 11); + static DB2Meta instance(1092316, 3, 12, 0x1FDCDD5A, fields, 11); return &instance; } }; @@ -8816,7 +9015,7 @@ struct SoundEnvelopeMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 7, 0xBD6F1248, fields, 0); + static DB2Meta instance(1693131, -1, 7, 0xBD6F1248, fields, 0); return &instance; } }; @@ -8829,7 +9028,7 @@ struct SoundFilterMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF6F6B04B, fields, -1); + static DB2Meta instance(1271601, -1, 1, 0xF6F6B04B, fields, -1); return &instance; } }; @@ -8844,7 +9043,7 @@ struct SoundFilterElemMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 3, 0x84F8D205, fields, 2); + static DB2Meta instance(1267066, -1, 3, 0x84F8D205, fields, 2); return &instance; } }; @@ -8856,7 +9055,7 @@ struct SoundKitMeta static DB2MetaField const fields[16] = { { FT_INT, 1, false }, - { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_FLOAT, 1, true }, { FT_SHORT, 1, false }, { FT_FLOAT, 1, true }, @@ -8872,7 +9071,7 @@ struct SoundKitMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(0, 16, 0xAF055926, fields, -1); + static DB2Meta instance(1237434, 0, 16, 0x17C44133, fields, -1); return &instance; } }; @@ -8881,7 +9080,7 @@ struct SoundKitAdvancedMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[43] = + static DB2MetaField const fields[47] = { { FT_INT, 1, false }, { FT_INT, 1, false }, @@ -8926,8 +9125,12 @@ struct SoundKitAdvancedMeta { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_FLOAT, 1, true }, + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, }; - static DB2Meta instance(0, 43, 0x6EAFA63E, fields, -1); + static DB2Meta instance(1237436, 0, 47, 0xF64439CE, fields, -1); return &instance; } }; @@ -8941,7 +9144,7 @@ struct SoundKitChildMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x4215B0DD, fields, 1); + static DB2Meta instance(1307289, -1, 2, 0x4215B0DD, fields, 1); return &instance; } }; @@ -8957,7 +9160,7 @@ struct SoundKitEntryMeta { FT_BYTE, 1, false }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xCBC66B5F, fields, 0); + static DB2Meta instance(1237435, -1, 4, 0xCBC66B5F, fields, 0); return &instance; } }; @@ -8971,7 +9174,7 @@ struct SoundKitFallbackMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x53D01CD7, fields, -1); + static DB2Meta instance(1307288, -1, 2, 0x53D01CD7, fields, -1); return &instance; } }; @@ -8984,7 +9187,7 @@ struct SoundKitNameMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF6F6B04B, fields, -1); + static DB2Meta instance(1665033, -1, 1, 0xF6F6B04B, fields, -1); return &instance; } }; @@ -9001,7 +9204,7 @@ struct SoundOverrideMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0x4EC15243, fields, -1); + static DB2Meta instance(1266542, -1, 5, 0x4EC15243, fields, -1); return &instance; } }; @@ -9036,7 +9239,7 @@ struct SoundProviderPreferencesMeta { FT_FLOAT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 23, 0xF0F42A22, fields, -1); + static DB2Meta instance(1279417, -1, 23, 0xF0F42A22, fields, -1); return &instance; } }; @@ -9052,7 +9255,7 @@ struct SourceInfoMeta { FT_BYTE, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0xA94C7962, fields, 3); + static DB2Meta instance(1313612, -1, 4, 0xA94C7962, fields, 3); return &instance; } }; @@ -9065,7 +9268,7 @@ struct SpamMessagesMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0x1A080193, fields, -1); + static DB2Meta instance(1117088, -1, 1, 0x1A080193, fields, -1); return &instance; } }; @@ -9079,7 +9282,7 @@ struct SpecSetMemberMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xC05B6C73, fields, 1); + static DB2Meta instance(2057624, -1, 2, 0xC05B6C73, fields, 1); return &instance; } }; @@ -9097,7 +9300,7 @@ struct SpecializationSpellsMeta { FT_INT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(1, 6, 0x88A56A2F, fields, 2); + static DB2Meta instance(1240335, 1, 6, 0x88A56A2F, fields, 2); return &instance; } }; @@ -9111,7 +9314,7 @@ struct SpecializationSpellsDisplayMeta { FT_SHORT, 1, false }, { FT_INT, 6, false }, }; - static DB2Meta instance(-1, 2, 0xBD5EEC46, fields, 0); + static DB2Meta instance(2067238, -1, 2, 0xBD5EEC46, fields, 0); return &instance; } }; @@ -9126,7 +9329,7 @@ struct SpellMeta { FT_STRING, 1, true }, { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 3, 0xFFF1DA38, fields, -1); + static DB2Meta instance(1140089, -1, 3, 0xFFF1DA38, fields, -1); return &instance; } }; @@ -9140,7 +9343,7 @@ struct SpellActionBarPrefMeta { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xCF471C9B, fields, -1); + static DB2Meta instance(1019373, -1, 2, 0xCF471C9B, fields, -1); return &instance; } }; @@ -9149,7 +9352,7 @@ struct SpellActivationOverlayMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[8] = + static DB2MetaField const fields[9] = { { FT_INT, 4, true }, { FT_INT, 1, true }, @@ -9159,8 +9362,9 @@ struct SpellActivationOverlayMeta { FT_INT, 1, true }, { FT_FLOAT, 1, true }, { FT_BYTE, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 8, 0xE72C81EF, fields, -1); + static DB2Meta instance(1261603, -1, 9, 0xDE42C0F6, fields, -1); return &instance; } }; @@ -9180,7 +9384,7 @@ struct SpellAuraOptionsMeta { FT_INT, 2, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 8, 0xCBDA0981, fields, 7); + static DB2Meta instance(1139952, -1, 8, 0xCBDA0981, fields, 7); return &instance; } }; @@ -9202,7 +9406,7 @@ struct SpellAuraRestrictionsMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 10, 0xD7479271, fields, 9); + static DB2Meta instance(981566, -1, 10, 0xD7479271, fields, 9); return &instance; } }; @@ -9216,7 +9420,7 @@ struct SpellAuraVisXChrSpecMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x8F54FD52, fields, 1); + static DB2Meta instance(1280615, -1, 2, 0x8F54FD52, fields, 1); return &instance; } }; @@ -9232,7 +9436,7 @@ struct SpellAuraVisibilityMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 4, 0xB7F28C20, fields, 3); + static DB2Meta instance(1280616, 0, 4, 0xB7F28C20, fields, 3); return &instance; } }; @@ -9247,7 +9451,7 @@ struct SpellCastTimesMeta { FT_SHORT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xA66E197C, fields, -1); + static DB2Meta instance(1134089, -1, 3, 0xA66E197C, fields, -1); return &instance; } }; @@ -9266,7 +9470,7 @@ struct SpellCastingRequirementsMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 7, 0xC6D7C649, fields, -1); + static DB2Meta instance(1002166, -1, 7, 0xC6D7C649, fields, -1); return &instance; } }; @@ -9287,7 +9491,7 @@ struct SpellCategoriesMeta { FT_SHORT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 9, 0xEF1D2548, fields, 8); + static DB2Meta instance(1139939, -1, 9, 0xEF1D2548, fields, 8); return &instance; } }; @@ -9305,7 +9509,7 @@ struct SpellCategoryMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 6, 0x53EB1CD3, fields, -1); + static DB2Meta instance(1280619, -1, 6, 0x53EB1CD3, fields, -1); return &instance; } }; @@ -9377,7 +9581,7 @@ struct SpellChainEffectsMeta { FT_FLOAT, 3, true }, { FT_INT, 3, true }, }; - static DB2Meta instance(-1, 60, 0x461F9829, fields, -1); + static DB2Meta instance(1343310, -1, 60, 0x461F9829, fields, -1); return &instance; } }; @@ -9393,7 +9597,97 @@ struct SpellClassOptionsMeta { FT_BYTE, 1, false }, { FT_INT, 4, true }, }; - static DB2Meta instance(-1, 4, 0xB4E205E0, fields, -1); + static DB2Meta instance(979663, -1, 4, 0xB4E205E0, fields, -1); + return &instance; + } +}; + +struct SpellClutterAreaEffectCountsMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2428696, -1, 3, 0x9311C050, fields, -1); + return &instance; + } +}; + +struct SpellClutterFrameRatesMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + }; + static DB2Meta instance(2428707, -1, 3, 0xD2F6D8BE, fields, -1); + return &instance; + } +}; + +struct SpellClutterImpactModelCountsMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2428708, -1, 3, 0x9311C050, fields, -1); + return &instance; + } +}; + +struct SpellClutterKitDistancesMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + }; + static DB2Meta instance(2428697, -1, 3, 0x073862B6, fields, -1); + return &instance; + } +}; + +struct SpellClutterMissileDistMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + }; + static DB2Meta instance(2428733, -1, 3, 0x073862B6, fields, -1); + return &instance; + } +}; + +struct SpellClutterWeaponTrailDistMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[3] = + { + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + }; + static DB2Meta instance(2428698, -1, 3, 0x073862B6, fields, -1); return &instance; } }; @@ -9410,7 +9704,7 @@ struct SpellCooldownsMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x24886B08, fields, 4); + static DB2Meta instance(1139924, -1, 5, 0x24886B08, fields, 4); return &instance; } }; @@ -9423,7 +9717,7 @@ struct SpellDescriptionVariablesMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0x9C318DAF, fields, -1); + static DB2Meta instance(1140004, -1, 1, 0x9C318DAF, fields, -1); return &instance; } }; @@ -9439,7 +9733,7 @@ struct SpellDispelTypeMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xAA83295A, fields, -1); + static DB2Meta instance(1137829, -1, 4, 0xAA83295A, fields, -1); return &instance; } }; @@ -9454,7 +9748,7 @@ struct SpellDurationMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x22236CBC, fields, -1); + static DB2Meta instance(1137828, -1, 3, 0x22236CBC, fields, -1); return &instance; } }; @@ -9494,7 +9788,7 @@ struct SpellEffectMeta { FT_SHORT, 2, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 28, 0x803150B7, fields, 27); + static DB2Meta instance(1140088, -1, 28, 0x803150B7, fields, 27); return &instance; } }; @@ -9515,7 +9809,7 @@ struct SpellEffectAutoDescriptionMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 9, 0x7C523D94, fields, -1); + static DB2Meta instance(1888495, -1, 9, 0x7C523D94, fields, -1); return &instance; } }; @@ -9531,7 +9825,7 @@ struct SpellEffectEmissionMeta { FT_SHORT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 4, 0x66D096CB, fields, -1); + static DB2Meta instance(1310248, -1, 4, 0x66D096CB, fields, -1); return &instance; } }; @@ -9547,7 +9841,7 @@ struct SpellEquippedItemsMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xA0588766, fields, -1); + static DB2Meta instance(1140011, -1, 4, 0xA0588766, fields, -1); return &instance; } }; @@ -9565,7 +9859,7 @@ struct SpellFlyoutMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 6, 0x1F516F53, fields, -1); + static DB2Meta instance(1146819, -1, 6, 0x1F516F53, fields, -1); return &instance; } }; @@ -9580,7 +9874,7 @@ struct SpellFlyoutItemMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0x650A0B4D, fields, 2); + static DB2Meta instance(1134085, -1, 3, 0x650A0B4D, fields, 2); return &instance; } }; @@ -9593,7 +9887,7 @@ struct SpellFocusObjectMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0x9F2C8370, fields, -1); + static DB2Meta instance(1280620, -1, 1, 0x9F2C8370, fields, -1); return &instance; } }; @@ -9610,7 +9904,7 @@ struct SpellInterruptsMeta { FT_INT, 2, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xF551B940, fields, 4); + static DB2Meta instance(1139906, -1, 5, 0xF551B940, fields, 4); return &instance; } }; @@ -9642,7 +9936,7 @@ struct SpellItemEnchantmentMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 20, 0x96D1828E, fields, -1); + static DB2Meta instance(1362771, -1, 20, 0x96D1828E, fields, -1); return &instance; } }; @@ -9660,7 +9954,7 @@ struct SpellItemEnchantmentConditionMeta { FT_BYTE, 5, false }, { FT_BYTE, 5, false }, }; - static DB2Meta instance(-1, 6, 0xFAA95A11, fields, -1); + static DB2Meta instance(1121834, -1, 6, 0xFAA95A11, fields, -1); return &instance; } }; @@ -9675,7 +9969,7 @@ struct SpellKeyboundOverrideMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xFB8AD330, fields, -1); + static DB2Meta instance(1127327, -1, 3, 0xFB8AD330, fields, -1); return &instance; } }; @@ -9689,7 +9983,7 @@ struct SpellLabelMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xCCA24F16, fields, 1); + static DB2Meta instance(1347275, -1, 2, 0xCCA24F16, fields, 1); return &instance; } }; @@ -9704,7 +9998,7 @@ struct SpellLearnSpellMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xCC8637D2, fields, -1); + static DB2Meta instance(1001907, -1, 3, 0xCC8637D2, fields, -1); return &instance; } }; @@ -9722,7 +10016,7 @@ struct SpellLevelsMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 6, 0xE3096221, fields, 5); + static DB2Meta instance(1140079, -1, 6, 0xE3096221, fields, 5); return &instance; } }; @@ -9735,7 +10029,7 @@ struct SpellMechanicMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0x24C6F0F3, fields, -1); + static DB2Meta instance(1014438, -1, 1, 0x24C6F0F3, fields, -1); return &instance; } }; @@ -9759,7 +10053,7 @@ struct SpellMiscMeta { FT_INT, 14, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 12, 0x76E982BB, fields, 11); + static DB2Meta instance(1003144, -1, 12, 0x76E982BB, fields, 11); return &instance; } }; @@ -9786,7 +10080,7 @@ struct SpellMissileMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 15, 0xAF286A50, fields, -1); + static DB2Meta instance(897956, -1, 15, 0xAF286A50, fields, -1); return &instance; } }; @@ -9802,7 +10096,7 @@ struct SpellMissileMotionMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xA61A5983, fields, -1); + static DB2Meta instance(897955, -1, 4, 0xA61A5983, fields, -1); return &instance; } }; @@ -9815,7 +10109,21 @@ struct SpellNameMeta { { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 1, 0x9F2C8370, fields, -1); + static DB2Meta instance(1990283, -1, 1, 0x9F2C8370, fields, -1); + return &instance; + } +}; + +struct SpellOverrideNameMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_STRING, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2618823, -1, 2, 0x85E985A7, fields, -1); return &instance; } }; @@ -9841,7 +10149,7 @@ struct SpellPowerMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 14, 0x12ED7A99, fields, 13); + static DB2Meta instance(982806, 0, 14, 0x12ED7A99, fields, 13); return &instance; } }; @@ -9856,7 +10164,7 @@ struct SpellPowerDifficultyMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(0, 3, 0x08FEDBFF, fields, -1); + static DB2Meta instance(982804, 0, 3, 0x08FEDBFF, fields, -1); return &instance; } }; @@ -9871,7 +10179,7 @@ struct SpellProceduralEffectMeta { FT_BYTE, 1, true }, { FT_FLOAT, 4, true }, }; - static DB2Meta instance(0, 3, 0xF320E3AD, fields, -1); + static DB2Meta instance(1140477, 0, 3, 0xF320E3AD, fields, -1); return &instance; } }; @@ -9885,7 +10193,7 @@ struct SpellProcsPerMinuteMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0xBEBE0C8B, fields, -1); + static DB2Meta instance(1133526, -1, 2, 0xBEBE0C8B, fields, -1); return &instance; } }; @@ -9901,7 +10209,7 @@ struct SpellProcsPerMinuteModMeta { FT_FLOAT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0xE5827335, fields, 3); + static DB2Meta instance(1133525, -1, 4, 0xE5827335, fields, 3); return &instance; } }; @@ -9917,7 +10225,7 @@ struct SpellRadiusMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 4, 0xAE4257F8, fields, -1); + static DB2Meta instance(1134584, -1, 4, 0xAE4257F8, fields, -1); return &instance; } }; @@ -9934,7 +10242,7 @@ struct SpellRangeMeta { FT_FLOAT, 2, true }, { FT_FLOAT, 2, true }, }; - static DB2Meta instance(-1, 5, 0x6B9E2FD2, fields, -1); + static DB2Meta instance(1146820, -1, 5, 0x6B9E2FD2, fields, -1); return &instance; } }; @@ -9949,7 +10257,7 @@ struct SpellReagentsMeta { FT_INT, 8, true }, { FT_SHORT, 8, true }, }; - static DB2Meta instance(-1, 3, 0x4B7DC644, fields, -1); + static DB2Meta instance(841946, -1, 3, 0x4B7DC644, fields, -1); return &instance; } }; @@ -9964,7 +10272,7 @@ struct SpellReagentsCurrencyMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x4D3F01C6, fields, 0); + static DB2Meta instance(1135239, -1, 3, 0x4D3F01C6, fields, 0); return &instance; } }; @@ -9981,7 +10289,7 @@ struct SpellScalingMeta { FT_INT, 1, false }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x4B0C2E65, fields, -1); + static DB2Meta instance(1139940, -1, 5, 0x4B0C2E65, fields, -1); return &instance; } }; @@ -9997,7 +10305,7 @@ struct SpellShapeshiftMeta { FT_INT, 2, true }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 4, 0x91C4FFE9, fields, -1); + static DB2Meta instance(1139929, -1, 4, 0x91C4FFE9, fields, -1); return &instance; } }; @@ -10019,7 +10327,7 @@ struct SpellShapeshiftFormMeta { FT_INT, 4, false }, { FT_INT, 8, false }, }; - static DB2Meta instance(-1, 10, 0x7082136E, fields, -1); + static DB2Meta instance(1280618, -1, 10, 0x7082136E, fields, -1); return &instance; } }; @@ -10033,7 +10341,7 @@ struct SpellSpecialUnitEffectMeta { FT_SHORT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 2, 0xF084B84D, fields, -1); + static DB2Meta instance(1268903, -1, 2, 0xF084B84D, fields, -1); return &instance; } }; @@ -10053,7 +10361,7 @@ struct SpellTargetRestrictionsMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 8, 0x47BE0E0C, fields, 7); + static DB2Meta instance(1139993, -1, 8, 0x47BE0E0C, fields, 7); return &instance; } }; @@ -10068,7 +10376,7 @@ struct SpellTotemsMeta { FT_SHORT, 2, false }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 3, 0x5214FD94, fields, -1); + static DB2Meta instance(1002162, -1, 3, 0x5214FD94, fields, -1); return &instance; } }; @@ -10095,7 +10403,7 @@ struct SpellVisualMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 15, 0x514F85ED, fields, -1); + static DB2Meta instance(897952, -1, 15, 0x514F85ED, fields, -1); return &instance; } }; @@ -10110,7 +10418,7 @@ struct SpellVisualAnimMeta { FT_INT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xB27FB4A5, fields, -1); + static DB2Meta instance(1140479, -1, 3, 0xB27FB4A5, fields, -1); return &instance; } }; @@ -10133,7 +10441,7 @@ struct SpellVisualColorEffectMeta { FT_FLOAT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 11, 0x773CE0DE, fields, -1); + static DB2Meta instance(1094006, -1, 11, 0x773CE0DE, fields, -1); return &instance; } }; @@ -10159,7 +10467,7 @@ struct SpellVisualEffectNameMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 14, 0x10206967, fields, -1); + static DB2Meta instance(897948, -1, 14, 0x10206967, fields, -1); return &instance; } }; @@ -10180,7 +10488,7 @@ struct SpellVisualEventMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 9, 0x8352EE58, fields, 8); + static DB2Meta instance(1685317, -1, 9, 0x8352EE58, fields, 8); return &instance; } }; @@ -10192,12 +10500,12 @@ struct SpellVisualKitMeta static DB2MetaField const fields[5] = { { FT_INT, 1, true }, - { FT_FLOAT, 1, true }, + { FT_BYTE, 1, true }, { FT_INT, 1, false }, { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 5, 0x3F538334, fields, -1); + static DB2Meta instance(897949, -1, 5, 0xCD23B4AF, fields, -1); return &instance; } }; @@ -10215,7 +10523,7 @@ struct SpellVisualKitAreaModelMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 6, 0x34C79353, fields, -1); + static DB2Meta instance(897951, -1, 6, 0x34C79353, fields, -1); return &instance; } }; @@ -10230,7 +10538,7 @@ struct SpellVisualKitEffectMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xF104E59F, fields, 2); + static DB2Meta instance(1140480, -1, 3, 0x90747013, fields, 2); return &instance; } }; @@ -10264,7 +10572,7 @@ struct SpellVisualKitModelAttachMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(2, 22, 0x75650E39, fields, 21); + static DB2Meta instance(897953, 2, 22, 0x75650E39, fields, 21); return &instance; } }; @@ -10273,7 +10581,7 @@ struct SpellVisualMissileMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[16] = + static DB2MetaField const fields[17] = { { FT_FLOAT, 3, true }, { FT_FLOAT, 3, true }, @@ -10290,9 +10598,10 @@ struct SpellVisualMissileMeta { FT_INT, 1, false }, { FT_SHORT, 1, false }, { FT_INT, 1, false }, + { FT_BYTE, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(2, 16, 0x0A0345EB, fields, 15); + static DB2Meta instance(897954, 2, 17, 0x9B2241BE, fields, 16); return &instance; } }; @@ -10306,7 +10615,7 @@ struct SpellXDescriptionVariablesMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xFBC7B7AE, fields, -1); + static DB2Meta instance(1724949, -1, 2, 0xFBC7B7AE, fields, -1); return &instance; } }; @@ -10331,7 +10640,7 @@ struct SpellXSpellVisualMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 13, 0xCDAF2854, fields, 12); + static DB2Meta instance(1101657, 0, 13, 0xCDAF2854, fields, 12); return &instance; } }; @@ -10346,7 +10655,7 @@ struct StartupFilesMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xF1381769, fields, -1); + static DB2Meta instance(1604265, -1, 3, 0xF1381769, fields, -1); return &instance; } }; @@ -10360,7 +10669,7 @@ struct Startup_StringsMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_STRING, 1, true }, }; - static DB2Meta instance(-1, 2, 0x82058A06, fields, -1); + static DB2Meta instance(1375805, -1, 2, 0x82058A06, fields, -1); return &instance; } }; @@ -10375,7 +10684,7 @@ struct StationeryMeta { FT_BYTE, 1, false }, { FT_INT, 2, true }, }; - static DB2Meta instance(-1, 3, 0x8B250029, fields, -1); + static DB2Meta instance(1140758, -1, 3, 0x8B250029, fields, -1); return &instance; } }; @@ -10392,7 +10701,7 @@ struct SummonPropertiesMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x4134937A, fields, -1); + static DB2Meta instance(1345276, -1, 5, 0x4134937A, fields, -1); return &instance; } }; @@ -10405,7 +10714,7 @@ struct TactKeyMeta { { FT_BYTE, 16, false }, }; - static DB2Meta instance(-1, 1, 0xA55E1CCE, fields, -1); + static DB2Meta instance(1302850, -1, 1, 0xA55E1CCE, fields, -1); return &instance; } }; @@ -10418,7 +10727,7 @@ struct TactKeyLookupMeta { { FT_BYTE, 8, false }, }; - static DB2Meta instance(-1, 1, 0x1A696886, fields, -1); + static DB2Meta instance(1302851, -1, 1, 0x1A696886, fields, -1); return &instance; } }; @@ -10439,7 +10748,7 @@ struct TalentMeta { FT_INT, 1, false }, { FT_BYTE, 2, false }, }; - static DB2Meta instance(-1, 9, 0x2661E6C2, fields, -1); + static DB2Meta instance(1369062, -1, 9, 0x2661E6C2, fields, -1); return &instance; } }; @@ -10448,7 +10757,7 @@ struct TaxiNodesMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[14] = + static DB2MetaField const fields[15] = { { FT_STRING, 1, true }, { FT_FLOAT, 3, true }, @@ -10456,16 +10765,17 @@ struct TaxiNodesMeta { FT_FLOAT, 2, true }, { FT_INT, 1, false }, { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, true }, { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_FLOAT, 1, true }, { FT_INT, 1, false }, { FT_INT, 1, false }, { FT_INT, 2, true }, }; - static DB2Meta instance(4, 14, 0x91ADBF11, fields, 5); + static DB2Meta instance(1068100, 4, 15, 0x187CC2FE, fields, 5); return &instance; } }; @@ -10481,7 +10791,7 @@ struct TaxiPathMeta { FT_SHORT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(0, 4, 0x3716BBCD, fields, 1); + static DB2Meta instance(1067802, 0, 4, 0x3716BBCD, fields, 1); return &instance; } }; @@ -10499,10 +10809,10 @@ struct TaxiPathNodeMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, { FT_INT, 1, false }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(1, 9, 0xE28C3360, fields, 2); + static DB2Meta instance(1000437, 1, 9, 0x7CC528A4, fields, 2); return &instance; } }; @@ -10517,7 +10827,7 @@ struct TerrainMaterialMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x9F25E6D3, fields, -1); + static DB2Meta instance(1307290, -1, 3, 0x9F25E6D3, fields, -1); return &instance; } }; @@ -10534,7 +10844,7 @@ struct TerrainTypeMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0xB4573071, fields, -1); + static DB2Meta instance(1310249, -1, 5, 0xB4573071, fields, -1); return &instance; } }; @@ -10547,7 +10857,7 @@ struct TerrainTypeSoundsMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xECCAE96B, fields, -1); + static DB2Meta instance(1284822, -1, 1, 0xECCAE96B, fields, -1); return &instance; } }; @@ -10569,7 +10879,7 @@ struct TextureBlendSetMeta { FT_FLOAT, 3, true }, { FT_FLOAT, 4, true }, }; - static DB2Meta instance(-1, 10, 0xF2AFFE4C, fields, -1); + static DB2Meta instance(1328721, -1, 10, 0xF2AFFE4C, fields, -1); return &instance; } }; @@ -10584,7 +10894,7 @@ struct TextureFileDataMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 3, 0x71D3BD92, fields, 2); + static DB2Meta instance(982459, 0, 3, 0x71D3BD92, fields, 2); return &instance; } }; @@ -10599,7 +10909,7 @@ struct TotemCategoryMeta { FT_BYTE, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x2AA9FB1E, fields, -1); + static DB2Meta instance(1134586, -1, 3, 0x2AA9FB1E, fields, -1); return &instance; } }; @@ -10616,7 +10926,7 @@ struct ToyMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(1, 5, 0x6156EBCA, fields, -1); + static DB2Meta instance(988200, 1, 5, 0x6156EBCA, fields, -1); return &instance; } }; @@ -10635,7 +10945,7 @@ struct TradeSkillCategoryMeta { FT_SHORT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(2, 7, 0xAFEA1AAD, fields, -1); + static DB2Meta instance(1301101, 2, 7, 0xAFEA1AAD, fields, -1); return &instance; } }; @@ -10649,7 +10959,7 @@ struct TradeSkillItemMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 2, 0xA90CD5D2, fields, -1); + static DB2Meta instance(1329070, -1, 2, 0xA90CD5D2, fields, -1); return &instance; } }; @@ -10666,7 +10976,21 @@ struct TransformMatrixMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xBA00B2FD, fields, -1); + static DB2Meta instance(1338702, -1, 5, 0xBA00B2FD, fields, -1); + return &instance; + } +}; + +struct TransmogDefaultLevelMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_BYTE, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2399695, -1, 2, 0x81205938, fields, -1); return &instance; } }; @@ -10680,7 +11004,7 @@ struct TransmogHolidayMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 2, 0x6FC325A0, fields, -1); + static DB2Meta instance(1589454, 0, 2, 0x6FC325A0, fields, -1); return &instance; } }; @@ -10689,7 +11013,7 @@ struct TransmogSetMeta { static DB2Meta const* Instance() { - static DB2MetaField const fields[10] = + static DB2MetaField const fields[12] = { { FT_STRING, 1, true }, { FT_INT, 1, false }, @@ -10700,9 +11024,11 @@ struct TransmogSetMeta { FT_INT, 1, true }, { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, + { FT_BYTE, 1, false }, + { FT_INT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(1, 10, 0x3F0E4AEF, fields, 7); + static DB2Meta instance(1376213, 1, 12, 0xFA89DA93, fields, 7); return &instance; } }; @@ -10716,7 +11042,7 @@ struct TransmogSetGroupMeta { FT_STRING, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(1, 2, 0x0F60CFC9, fields, -1); + static DB2Meta instance(1576116, 1, 2, 0x0F60CFC9, fields, -1); return &instance; } }; @@ -10732,7 +11058,7 @@ struct TransmogSetItemMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 4, 0x23855A82, fields, 1); + static DB2Meta instance(1376212, 0, 4, 0x23855A82, fields, 1); return &instance; } }; @@ -10748,7 +11074,7 @@ struct TransportAnimationMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x6329464B, fields, 3); + static DB2Meta instance(1140686, -1, 4, 0x6329464B, fields, 3); return &instance; } }; @@ -10770,7 +11096,7 @@ struct TransportPhysicsMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 10, 0x0B297C98, fields, -1); + static DB2Meta instance(1121973, -1, 10, 0x0B297C98, fields, -1); return &instance; } }; @@ -10785,7 +11111,7 @@ struct TransportRotationMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x5FE3BC91, fields, 2); + static DB2Meta instance(1140687, -1, 3, 0x5FE3BC91, fields, 2); return &instance; } }; @@ -10801,7 +11127,7 @@ struct TrophyMeta { FT_SHORT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x0AE68C93, fields, -1); + static DB2Meta instance(975024, -1, 4, 0x0AE68C93, fields, -1); return &instance; } }; @@ -10816,7 +11142,7 @@ struct UIExpansionDisplayInfoMeta { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xCD407FA1, fields, -1); + static DB2Meta instance(1729547, -1, 3, 0xCD407FA1, fields, -1); return &instance; } }; @@ -10831,7 +11157,7 @@ struct UIExpansionDisplayInfoIconMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xC9B51E5D, fields, -1); + static DB2Meta instance(1729546, -1, 3, 0xC9B51E5D, fields, -1); return &instance; } }; @@ -10848,7 +11174,7 @@ struct UiCamFbackTransmogChrRaceMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 5, 0xB1C9DAC4, fields, -1); + static DB2Meta instance(1261406, -1, 5, 0xB1C9DAC4, fields, -1); return &instance; } }; @@ -10864,7 +11190,7 @@ struct UiCamFbackTransmogWeaponMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x5148437F, fields, -1); + static DB2Meta instance(1261407, -1, 4, 0x5148437F, fields, -1); return &instance; } }; @@ -10885,7 +11211,7 @@ struct UiCameraMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 9, 0xC54B36EE, fields, -1); + static DB2Meta instance(1120287, -1, 9, 0xC54B36EE, fields, -1); return &instance; } }; @@ -10900,7 +11226,7 @@ struct UiCameraTypeMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x34F64532, fields, -1); + static DB2Meta instance(1120288, -1, 3, 0x34F64532, fields, -1); return &instance; } }; @@ -10915,7 +11241,7 @@ struct UiCanvasMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(0, 3, 0x77DC2C2A, fields, -1); + static DB2Meta instance(1989363, 0, 3, 0x77DC2C2A, fields, -1); return &instance; } }; @@ -10940,7 +11266,7 @@ struct UiMapMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(1, 13, 0x4B07CF16, fields, 2); + static DB2Meta instance(1957206, 1, 13, 0x4B07CF16, fields, 2); return &instance; } }; @@ -10955,7 +11281,7 @@ struct UiMapArtMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xD85EF8B6, fields, -1); + static DB2Meta instance(1957202, -1, 3, 0xD85EF8B6, fields, -1); return &instance; } }; @@ -10976,7 +11302,7 @@ struct UiMapArtStyleLayerMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 9, 0xAFF6429A, fields, 8); + static DB2Meta instance(1957208, -1, 9, 0xAFF6429A, fields, 8); return &instance; } }; @@ -10993,7 +11319,7 @@ struct UiMapArtTileMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xBA5290E9, fields, 4); + static DB2Meta instance(1957210, -1, 5, 0xBA5290E9, fields, 4); return &instance; } }; @@ -11015,7 +11341,7 @@ struct UiMapAssignmentMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(3, 10, 0xFA919770, fields, 4); + static DB2Meta instance(1957219, 3, 10, 0xFA919770, fields, 4); return &instance; } }; @@ -11031,7 +11357,7 @@ struct UiMapFogOfWarMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(0, 4, 0x257E044E, fields, 1); + static DB2Meta instance(2006972, 0, 4, 0x257E044E, fields, 1); return &instance; } }; @@ -11046,7 +11372,7 @@ struct UiMapFogOfWarVisualizationMeta { FT_INT, 1, false }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xB8110379, fields, -1); + static DB2Meta instance(2006973, -1, 3, 0xB8110379, fields, -1); return &instance; } }; @@ -11063,7 +11389,7 @@ struct UiMapGroupMemberMeta { FT_INT, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta instance(-1, 5, 0x3D1DDDA1, fields, 1); + static DB2Meta instance(1957204, -1, 5, 0x3D1DDDA1, fields, 1); return &instance; } }; @@ -11081,7 +11407,7 @@ struct UiMapLinkMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(2, 6, 0x1A2F1836, fields, 3); + static DB2Meta instance(2030690, 2, 6, 0x1A2F1836, fields, 3); return &instance; } }; @@ -11096,7 +11422,7 @@ struct UiMapXMapArtMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xD74B6E49, fields, 2); + static DB2Meta instance(1957217, -1, 3, 0xD74B6E49, fields, 2); return &instance; } }; @@ -11110,7 +11436,7 @@ struct UiModelSceneMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 2, 0x0B9EFECA, fields, -1); + static DB2Meta instance(1548215, -1, 2, 0x0B9EFECA, fields, -1); return &instance; } }; @@ -11132,7 +11458,7 @@ struct UiModelSceneActorMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(2, 10, 0x8B5BF449, fields, 9); + static DB2Meta instance(1548214, 2, 10, 0x8B5BF449, fields, 9); return &instance; } }; @@ -11151,7 +11477,7 @@ struct UiModelSceneActorDisplayMeta { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta instance(-1, 7, 0xDD1DD903, fields, -1); + static DB2Meta instance(1548216, -1, 7, 0xDD1DD903, fields, -1); return &instance; } }; @@ -11179,7 +11505,7 @@ struct UiModelSceneCameraMeta { FT_FLOAT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(3, 16, 0xEDFBD5A2, fields, 15); + static DB2Meta instance(1548213, 3, 16, 0xEDFBD5A2, fields, 15); return &instance; } }; @@ -11197,7 +11523,7 @@ struct UiPartyPoseMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 6, 0x880480BF, fields, 5); + static DB2Meta instance(1993323, -1, 6, 0x880480BF, fields, 5); return &instance; } }; @@ -11213,7 +11539,7 @@ struct UiTextureAtlasMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x6951B2FD, fields, -1); + static DB2Meta instance(897470, -1, 4, 0x6951B2FD, fields, -1); return &instance; } }; @@ -11227,7 +11553,7 @@ struct UiTextureAtlasElementMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(1, 2, 0xBBDA0A61, fields, -1); + static DB2Meta instance(1989276, 1, 2, 0xBBDA0A61, fields, -1); return &instance; } }; @@ -11249,7 +11575,7 @@ struct UiTextureAtlasMemberMeta { FT_BYTE, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(1, 10, 0x4D58B085, fields, 7); + static DB2Meta instance(897532, 1, 10, 0x4D58B085, fields, 7); return &instance; } }; @@ -11262,7 +11588,7 @@ struct UiTextureKitMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0x1FC1A9C6, fields, -1); + static DB2Meta instance(939159, -1, 1, 0x1FC1A9C6, fields, -1); return &instance; } }; @@ -11274,13 +11600,13 @@ struct UiWidgetMeta static DB2MetaField const fields[6] = { { FT_STRING_NOT_LOCALIZED, 1, true }, - { FT_SHORT, 1, false }, + { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 6, 0xC4C60F67, fields, -1); + static DB2Meta instance(1983278, -1, 6, 0x21A338EE, fields, -1); return &instance; } }; @@ -11293,9 +11619,9 @@ struct UiWidgetConstantSourceMeta { { FT_SHORT, 1, false }, { FT_INT, 1, true }, - { FT_SHORT, 1, false }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0xFE573B5D, fields, 2); + static DB2Meta instance(1983639, -1, 3, 0x5BB89A7E, fields, 2); return &instance; } }; @@ -11308,10 +11634,24 @@ struct UiWidgetDataSourceMeta { { FT_SHORT, 1, false }, { FT_BYTE, 1, true }, - { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(1983640, -1, 4, 0x8C104D29, fields, 3); + return &instance; + } +}; + +struct UiWidgetMapMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x27BC34FD, fields, 3); + static DB2Meta instance(2322531, -1, 2, 0x335BE535, fields, 1); return &instance; } }; @@ -11324,9 +11664,25 @@ struct UiWidgetStringSourceMeta { { FT_STRING, 1, true }, { FT_SHORT, 1, false }, - { FT_SHORT, 1, false }, + { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x86CECC21, fields, 2); + static DB2Meta instance(1983641, -1, 3, 0xD3DB3469, fields, 2); + return &instance; + } +}; + +struct UiWidgetVisTypeDataReqMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[4] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2740907, -1, 4, 0x21F50E85, fields, -1); return &instance; } }; @@ -11342,7 +11698,7 @@ struct UiWidgetVisualizationMeta { FT_INT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x1DB32AF9, fields, -1); + static DB2Meta instance(1983276, -1, 4, 0x1DB32AF9, fields, -1); return &instance; } }; @@ -11360,7 +11716,7 @@ struct UnitBloodMeta { FT_INT, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 6, 0x007ED968, fields, -1); + static DB2Meta instance(1284821, -1, 6, 0x007ED968, fields, -1); return &instance; } }; @@ -11373,7 +11729,7 @@ struct UnitBloodLevelsMeta { { FT_BYTE, 3, false }, }; - static DB2Meta instance(-1, 1, 0x684D24F4, fields, -1); + static DB2Meta instance(1268904, -1, 1, 0x684D24F4, fields, -1); return &instance; } }; @@ -11389,7 +11745,7 @@ struct UnitConditionMeta { FT_BYTE, 8, true }, { FT_INT, 8, true }, }; - static DB2Meta instance(-1, 4, 0x215CBCD2, fields, -1); + static DB2Meta instance(1120959, -1, 4, 0x215CBCD2, fields, -1); return &instance; } }; @@ -11417,7 +11773,7 @@ struct UnitPowerBarMeta { FT_INT, 6, true }, { FT_INT, 6, true }, }; - static DB2Meta instance(-1, 16, 0x2640852D, fields, -1); + static DB2Meta instance(1237753, -1, 16, 0x2640852D, fields, -1); return &instance; } }; @@ -11447,7 +11803,7 @@ struct VehicleMeta { FT_SHORT, 8, false }, { FT_SHORT, 3, false }, }; - static DB2Meta instance(-1, 18, 0x221A0252, fields, -1); + static DB2Meta instance(1368621, -1, 18, 0x221A0252, fields, -1); return &instance; } }; @@ -11520,7 +11876,7 @@ struct VehicleSeatMeta { FT_SHORT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 61, 0x7AB200FA, fields, -1); + static DB2Meta instance(1345447, -1, 61, 0x7AB200FA, fields, -1); return &instance; } }; @@ -11536,7 +11892,7 @@ struct VehicleUIIndSeatMeta { FT_FLOAT, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x590E3162, fields, 3); + static DB2Meta instance(1279741, -1, 4, 0x590E3162, fields, 3); return &instance; } }; @@ -11549,7 +11905,7 @@ struct VehicleUIIndicatorMeta { { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 1, 0x4B1AACBC, fields, -1); + static DB2Meta instance(1279740, -1, 1, 0x4B1AACBC, fields, -1); return &instance; } }; @@ -11570,7 +11926,7 @@ struct VignetteMeta { FT_BYTE, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 9, 0xE70E083E, fields, -1); + static DB2Meta instance(892861, -1, 9, 0xE70E083E, fields, -1); return &instance; } }; @@ -11584,7 +11940,7 @@ struct VirtualAttachmentMeta { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 2, 0xA9D90777, fields, -1); + static DB2Meta instance(1634482, -1, 2, 0xA9D90777, fields, -1); return &instance; } }; @@ -11599,7 +11955,7 @@ struct VirtualAttachmentCustomizationMeta { FT_INT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 3, 0x5812DF35, fields, -1); + static DB2Meta instance(1634480, -1, 3, 0x5812DF35, fields, -1); return &instance; } }; @@ -11615,7 +11971,7 @@ struct VocalUISoundsMeta { FT_BYTE, 1, false }, { FT_INT, 2, false }, }; - static DB2Meta instance(-1, 4, 0x264C4E59, fields, -1); + static DB2Meta instance(1267067, -1, 4, 0x264C4E59, fields, -1); return &instance; } }; @@ -11642,7 +11998,7 @@ struct WMOAreaTableMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(1, 15, 0x60EC930B, fields, 2); + static DB2Meta instance(1355528, 1, 15, 0x60EC930B, fields, 2); return &instance; } }; @@ -11659,7 +12015,87 @@ struct WMOMinimapTextureMeta { FT_INT, 1, true }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 5, 0x48CE176C, fields, 4); + static DB2Meta instance(1323241, -1, 5, 0x48CE176C, fields, 4); + return &instance; + } +}; + +struct WaterfallDataMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[19] = + { + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_FLOAT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2565222, -1, 19, 0x9AF7AF6D, fields, -1); + return &instance; + } +}; + +struct WaypointEdgeMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[6] = + { + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2565258, 0, 6, 0x7A49AFE4, fields, -1); + return &instance; + } +}; + +struct WaypointNodeMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[5] = + { + { FT_STRING, 1, true }, + { FT_INT, 1, false }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2565265, 1, 5, 0xF61E3EC2, fields, -1); + return &instance; + } +}; + +struct WaypointSafeLocsMeta +{ + static DB2Meta const* Instance() + { + static DB2MetaField const fields[2] = + { + { FT_FLOAT, 3, true }, + { FT_INT, 1, true }, + }; + static DB2Meta instance(2820850, -1, 2, 0x61C88F74, fields, -1); return &instance; } }; @@ -11676,7 +12112,7 @@ struct WbAccessControlListMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 5, 0xDC9D8334, fields, -1); + static DB2Meta instance(879634, -1, 5, 0xDC9D8334, fields, -1); return &instance; } }; @@ -11692,7 +12128,7 @@ struct WbCertWhitelistMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0x1524F278, fields, -1); + static DB2Meta instance(879591, -1, 4, 0x1524F278, fields, -1); return &instance; } }; @@ -11711,7 +12147,7 @@ struct WeaponImpactSoundsMeta { FT_INT, 11, false }, { FT_INT, 11, false }, }; - static DB2Meta instance(-1, 7, 0x9C7F9BA6, fields, -1); + static DB2Meta instance(1267648, -1, 7, 0x9C7F9BA6, fields, -1); return &instance; } }; @@ -11726,7 +12162,7 @@ struct WeaponSwingSounds2Meta { FT_BYTE, 1, false }, { FT_INT, 1, false }, }; - static DB2Meta instance(-1, 3, 0x18B6CC57, fields, -1); + static DB2Meta instance(1267068, -1, 3, 0x18B6CC57, fields, -1); return &instance; } }; @@ -11747,7 +12183,7 @@ struct WeaponTrailMeta { FT_FLOAT, 3, true }, { FT_FLOAT, 3, true }, }; - static DB2Meta instance(-1, 9, 0xB05F809A, fields, -1); + static DB2Meta instance(982461, -1, 9, 0xB05F809A, fields, -1); return &instance; } }; @@ -11762,7 +12198,7 @@ struct WeaponTrailModelDefMeta { FT_SHORT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xCE7AD194, fields, 2); + static DB2Meta instance(1239843, -1, 3, 0xCE7AD194, fields, 2); return &instance; } }; @@ -11784,7 +12220,7 @@ struct WeaponTrailParamMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 10, 0xC3B87CA4, fields, 9); + static DB2Meta instance(1239842, -1, 10, 0xC3B87CA4, fields, 9); return &instance; } }; @@ -11818,7 +12254,7 @@ struct WeatherMeta { FT_FLOAT, 2, true }, { FT_FLOAT, 3, true }, }; - static DB2Meta instance(-1, 22, 0x784E91E0, fields, -1); + static DB2Meta instance(1343311, -1, 22, 0x784E91E0, fields, -1); return &instance; } }; @@ -11832,7 +12268,7 @@ struct WeatherXParticulateMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 2, 0x791A7865, fields, 1); + static DB2Meta instance(1965591, -1, 2, 0x791A7865, fields, 1); return &instance; } }; @@ -11854,7 +12290,7 @@ struct WindSettingsMeta { FT_FLOAT, 1, true }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 10, 0xE09E01C4, fields, -1); + static DB2Meta instance(943871, -1, 10, 0xE09E01C4, fields, -1); return &instance; } }; @@ -11868,7 +12304,7 @@ struct WorldBossLockoutMeta { FT_STRING, 1, true }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 2, 0x57E8ADB8, fields, -1); + static DB2Meta instance(975279, -1, 2, 0x57E8ADB8, fields, -1); return &instance; } }; @@ -11886,7 +12322,7 @@ struct WorldChunkSoundsMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 6, 0xA5616A27, fields, -1); + static DB2Meta instance(1267069, -1, 6, 0xA5616A27, fields, -1); return &instance; } }; @@ -11899,12 +12335,12 @@ struct WorldEffectMeta { { FT_INT, 1, false }, { FT_BYTE, 1, false }, - { FT_BYTE, 1, false }, + { FT_BYTE, 1, true }, { FT_INT, 1, true }, { FT_INT, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 6, 0xBCB8719B, fields, -1); + static DB2Meta instance(1343312, -1, 6, 0x8A7EC767, fields, -1); return &instance; } }; @@ -11919,7 +12355,7 @@ struct WorldElapsedTimerMeta { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 3, 0x103B8712, fields, -1); + static DB2Meta instance(1135240, -1, 3, 0x103B8712, fields, -1); return &instance; } }; @@ -11944,7 +12380,7 @@ struct WorldMapOverlayMeta { FT_INT, 1, false }, { FT_INT, 4, false }, }; - static DB2Meta instance(0, 13, 0x837A3DAA, fields, 1); + static DB2Meta instance(1134579, 0, 13, 0x837A3DAA, fields, 1); return &instance; } }; @@ -11961,7 +12397,7 @@ struct WorldMapOverlayTileMeta { FT_INT, 1, true }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 5, 0xC4DCC916, fields, 4); + static DB2Meta instance(1957212, -1, 5, 0xC4DCC916, fields, 4); return &instance; } }; @@ -11977,7 +12413,7 @@ struct WorldSafeLocsMeta { FT_SHORT, 1, false }, { FT_FLOAT, 1, false } }; - static DB2Meta instance(-1, 4, 0x6BF0D7EC, fields, 3); + static DB2Meta instance(1369425, -1, 4, 0x6BF0D7EC, fields, 3); return &instance; } }; @@ -11990,7 +12426,7 @@ struct WorldStateExpressionMeta { { FT_STRING_NOT_LOCALIZED, 1, true }, }; - static DB2Meta instance(-1, 1, 0xF23806A6, fields, -1); + static DB2Meta instance(1332558, -1, 1, 0xF23806A6, fields, -1); return &instance; } }; @@ -12019,7 +12455,7 @@ struct WorldStateUIMeta { FT_SHORT, 1, false }, { FT_SHORT, 3, false }, }; - static DB2Meta instance(5, 17, 0xE1F042FE, fields, 6); + static DB2Meta instance(1343596, 5, 17, 0xE1F042FE, fields, 6); return &instance; } }; @@ -12039,7 +12475,7 @@ struct WorldStateZoneSoundsMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 8, 0x44CFA417, fields, -1); + static DB2Meta instance(1266941, -1, 8, 0x44CFA417, fields, -1); return &instance; } }; @@ -12058,7 +12494,7 @@ struct World_PVP_AreaMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, true }, }; - static DB2Meta instance(-1, 7, 0x3F8DDC83, fields, -1); + static DB2Meta instance(1310255, -1, 7, 0x3F8DDC83, fields, -1); return &instance; } }; @@ -12074,7 +12510,7 @@ struct ZoneIntroMusicTableMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 4, 0x5453B51D, fields, -1); + static DB2Meta instance(1310251, -1, 4, 0x5453B51D, fields, -1); return &instance; } }; @@ -12090,7 +12526,7 @@ struct ZoneLightMeta { FT_SHORT, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta instance(-1, 4, 0xD553DE84, fields, -1); + static DB2Meta instance(1310253, -1, 4, 0xD553DE84, fields, -1); return &instance; } }; @@ -12105,7 +12541,7 @@ struct ZoneLightPointMeta { FT_BYTE, 1, false }, { FT_SHORT, 1, false }, }; - static DB2Meta instance(-1, 3, 0xB21DA554, fields, 2); + static DB2Meta instance(1310256, -1, 3, 0xB21DA554, fields, 2); return &instance; } }; @@ -12121,7 +12557,7 @@ struct ZoneMusicMeta { FT_INT, 2, false }, { FT_INT, 2, false }, }; - static DB2Meta instance(-1, 4, 0x9EBD4495, fields, -1); + static DB2Meta instance(1310254, -1, 4, 0x9EBD4495, fields, -1); return &instance; } }; @@ -12137,7 +12573,7 @@ struct ZoneStoryMeta { FT_INT, 1, false }, { FT_INT, 1, true }, }; - static DB2Meta instance(-1, 4, 0x5BFB82E8, fields, 3); + static DB2Meta instance(1797864, -1, 4, 0x5BFB82E8, fields, 3); return &instance; } }; diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 09ff125f3a6..72ea24adad6 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -155,8 +155,6 @@ DB2Storage<ItemLimitCategoryEntry> sItemLimitCategoryStore("ItemLim DB2Storage<ItemLimitCategoryConditionEntry> sItemLimitCategoryConditionStore("ItemLimitCategoryCondition.db2", ItemLimitCategoryConditionLoadInfo::Instance()); DB2Storage<ItemModifiedAppearanceEntry> sItemModifiedAppearanceStore("ItemModifiedAppearance.db2", ItemModifiedAppearanceLoadInfo::Instance()); DB2Storage<ItemPriceBaseEntry> sItemPriceBaseStore("ItemPriceBase.db2", ItemPriceBaseLoadInfo::Instance()); -DB2Storage<ItemRandomPropertiesEntry> sItemRandomPropertiesStore("ItemRandomProperties.db2", ItemRandomPropertiesLoadInfo::Instance()); -DB2Storage<ItemRandomSuffixEntry> sItemRandomSuffixStore("ItemRandomSuffix.db2", ItemRandomSuffixLoadInfo::Instance()); DB2Storage<ItemSearchNameEntry> sItemSearchNameStore("ItemSearchName.db2", ItemSearchNameLoadInfo::Instance()); DB2Storage<ItemSetEntry> sItemSetStore("ItemSet.db2", ItemSetLoadInfo::Instance()); DB2Storage<ItemSetSpellEntry> sItemSetSpellStore("ItemSetSpell.db2", ItemSetSpellLoadInfo::Instance()); @@ -613,8 +611,6 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) LOAD_DB2(sItemLimitCategoryConditionStore); LOAD_DB2(sItemModifiedAppearanceStore); LOAD_DB2(sItemPriceBaseStore); - LOAD_DB2(sItemRandomPropertiesStore); - LOAD_DB2(sItemRandomSuffixStore); LOAD_DB2(sItemSearchNameStore); LOAD_DB2(sItemSetStore); LOAD_DB2(sItemSetSpellStore); @@ -1264,13 +1260,13 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale) } // Check loaded DB2 files proper version - if (!sAreaTableStore.LookupEntry(10048) || // last area added in 8.0.1 (28153) - !sCharTitlesStore.LookupEntry(633) || // last char title added in 8.0.1 (28153) - !sGemPropertiesStore.LookupEntry(3745) || // last gem property added in 8.0.1 (28153) - !sItemStore.LookupEntry(164760) || // last item added in 8.0.1 (28153) - !sItemExtendedCostStore.LookupEntry(6448) || // last item extended cost added in 8.0.1 (28153) - !sMapStore.LookupEntry(2103) || // last map added in 8.0.1 (28153) - !sSpellNameStore.LookupEntry(281872)) // last spell added in 8.0.1 (28153) + if (!sAreaTableStore.LookupEntry(10521) || // last area added in 8.1.5 (30706) + !sCharTitlesStore.LookupEntry(649) || // last char title added in 8.1.5 (30706) + !sGemPropertiesStore.LookupEntry(3746) || // last gem property added in 8.1.5 (30706) + !sItemStore.LookupEntry(168279) || // last item added in 8.1.5 (30706) + !sItemExtendedCostStore.LookupEntry(6545) || // last item extended cost added in 8.1.5 (30706) + !sMapStore.LookupEntry(2178) || // last map added in 8.1.5 (30706) + !sSpellNameStore.LookupEntry(296952)) // last spell added in 8.1.5 (30706) { TC_LOG_ERROR("misc", "You have _outdated_ DB2 files. Please extract correct versions from current using client."); exit(1); diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 158ecb9de15..3d224c857cb 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -127,8 +127,6 @@ TC_GAME_API extern DB2Storage<ItemExtendedCostEntry> sItemExtende TC_GAME_API extern DB2Storage<ItemLimitCategoryEntry> sItemLimitCategoryStore; TC_GAME_API extern DB2Storage<ItemModifiedAppearanceEntry> sItemModifiedAppearanceStore; TC_GAME_API extern DB2Storage<ItemPriceBaseEntry> sItemPriceBaseStore; -TC_GAME_API extern DB2Storage<ItemRandomPropertiesEntry> sItemRandomPropertiesStore; -TC_GAME_API extern DB2Storage<ItemRandomSuffixEntry> sItemRandomSuffixStore; TC_GAME_API extern DB2Storage<ItemSearchNameEntry> sItemSearchNameStore; TC_GAME_API extern DB2Storage<ItemSetEntry> sItemSetStore; TC_GAME_API extern DB2Storage<ItemSetSpellEntry> sItemSetSpellStore; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 30b4c10a033..314f7d98c89 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -41,6 +41,7 @@ struct AchievementEntry int32 Flags; int16 UiOrder; int32 IconFileID; + int32 RewardItemID; uint32 CriteriaTree; int16 SharesCriteria; // referenced achievement (counting of all completed criterias) }; @@ -166,6 +167,7 @@ struct ArtifactAppearanceEntry uint32 UiAltItemAppearanceID; uint8 Flags; uint16 UiCameraID; + uint32 UsablePlayerConditionID; }; struct ArtifactAppearanceSetEntry @@ -316,7 +318,7 @@ struct BattlePetSpeciesEntry struct BattlePetSpeciesStateEntry { uint32 ID; - uint8 BattlePetStateID; + uint16 BattlePetStateID; int32 Value; uint16 BattlePetSpeciesID; }; @@ -368,6 +370,7 @@ struct Cfg_RegionsEntry uint32 Raidorigin; // Date of first raid reset, all other resets are calculated as this date plus interval uint8 RegionGroupMask; uint32 ChallengeOrigin; + int32 ChallengeTimeOffset[2]; }; struct CharacterFacialHairStylesEntry @@ -444,6 +447,7 @@ struct ChrClassesEntry uint32 IconFileDataID; uint32 LowResScreenFileDataID; int32 StartingLevel; + uint32 SpellTextureBlobFileDataID; uint16 Flags; uint16 CinematicSequenceID; uint16 DefaultSpec; @@ -851,6 +855,7 @@ struct CurrencyTypesEntry uint32 Flags; int8 Quality; int32 FactionID; + int32 ItemGroupSoundsID; }; struct CurveEntry @@ -905,7 +910,7 @@ struct DifficultyEntry uint8 FallbackDifficultyID; uint8 MinPlayers; uint8 MaxPlayers; - uint8 Flags; + uint16 Flags; uint8 ItemContext; uint8 ToggleDifficultyID; uint16 GroupSizeHealthCurveID; @@ -920,10 +925,12 @@ struct DungeonEncounterEntry int16 MapID; int8 DifficultyID; int32 OrderIndex; + int32 CompleteWorldStateID; int8 Bit; int32 CreatureDisplayID; uint8 Flags; int32 SpellIconFileID; + int32 Faction; }; struct DurabilityCostsEntry @@ -1009,7 +1016,7 @@ struct FactionEntry int16 ReputationIndex; uint16 ParentFactionID; uint8 Expansion; - uint8 FriendshipRepID; + uint32 FriendshipRepID; uint8 Flags; uint16 ParagonFactionID; int16 ReputationClassMask[4]; @@ -1338,12 +1345,12 @@ struct HeirloomEntry int8 SourceTypeEnum; uint8 Flags; int32 LegacyItemID; - int32 UpgradeItemID[3]; - uint16 UpgradeItemBonusListID[3]; + int32 UpgradeItemID[4]; + uint16 UpgradeItemBonusListID[4]; }; #define MAX_HOLIDAY_DURATIONS 10 -#define MAX_HOLIDAY_DATES 16 +#define MAX_HOLIDAY_DATES 26 #define MAX_HOLIDAY_FLAGS 10 struct HolidaysEntry @@ -1468,9 +1475,9 @@ struct ItemBonusTreeNodeEntry struct ItemChildEquipmentEntry { uint32 ID; + int32 ParentItemID; int32 ChildItemID; uint8 ChildItemEquipSlot; - int32 ParentItemID; }; struct ItemClassEntry @@ -1572,6 +1579,7 @@ struct ItemLevelSelectorEntry uint32 ID; uint16 MinItemLevel; uint16 ItemLevelSelectorQualitySetID; + uint16 AzeriteUnlockMappingSet; }; struct ItemLevelSelectorQualityEntry @@ -1623,23 +1631,6 @@ struct ItemPriceBaseEntry float Weapon; }; -#define MAX_ITEM_RANDOM_PROPERTIES 5 - -struct ItemRandomPropertiesEntry -{ - uint32 ID; - LocalizedString* Name; - uint16 Enchantment[MAX_ITEM_RANDOM_PROPERTIES]; -}; - -struct ItemRandomSuffixEntry -{ - uint32 ID; - LocalizedString* Name; - uint16 Enchantment[MAX_ITEM_RANDOM_PROPERTIES]; - uint16 AllocationPct[MAX_ITEM_RANDOM_PROPERTIES]; -}; - struct ItemSearchNameEntry { int64 AllowableRace; @@ -1715,8 +1706,6 @@ struct ItemSparseEntry uint16 InstanceBound; uint16 ZoneBound; uint16 ItemSet; - uint16 ItemRandomSuffixGroupID; - uint16 RandomSelect; uint16 LockID; uint16 StartQuestID; uint16 PageID; @@ -1909,6 +1898,7 @@ struct MapEntry uint8 MaxPlayers; int16 WindSettingsID; int32 ZmpFileDataID; + int32 WdtFileDataID; int32 Flags[2]; // Helpers @@ -1947,15 +1937,15 @@ struct MapDifficultyEntry { uint32 ID; LocalizedString* Message; // m_message_lang (text showed when transfer to map failed) - uint32 ItemContextPickerID; + int32 DifficultyID; + int32 LockID; + int8 ResetInterval; + int32 MaxPlayers; + int32 ItemContext; + int32 ItemContextPickerID; + int32 Flags; int32 ContentTuningID; - uint8 DifficultyID; - uint8 LockID; - uint8 ResetInterval; - uint8 MaxPlayers; - uint8 ItemContext; - uint8 Flags; - uint16 MapID; + int32 MapID; uint32 GetRaidDuration() const { @@ -2464,7 +2454,7 @@ struct SkillRaceClassInfoEntry struct SoundKitEntry { uint32 ID; - uint8 SoundType; + int32 SoundType; float VolumeFloat; uint16 Flags; float MinDistance; @@ -2916,10 +2906,11 @@ struct TaxiNodesEntry DBCPosition2D FlightMapOffset; uint32 ID; uint16 ContinentID; - uint16 ConditionID; + int32 ConditionID; uint16 CharacterBitNumber; uint8 Flags; int32 UiTextureKitID; + int32 MinimapAtlasMemberID; float Facing; uint32 SpecialIconConditionID; uint32 VisibilityConditionID; @@ -2943,8 +2934,8 @@ struct TaxiPathNodeEntry uint16 ContinentID; uint8 Flags; uint32 Delay; - uint16 ArrivalEventID; - uint16 DepartureEventID; + int32 ArrivalEventID; + int32 DepartureEventID; }; struct TotemCategoryEntry @@ -2980,7 +2971,9 @@ struct TransmogSetEntry uint32 TransmogSetGroupID; int32 ItemNameDescriptionID; uint16 ParentTransmogSetID; + uint8 Unknown810; uint8 ExpansionID; + int32 PatchID; int16 UiOrder; }; @@ -3215,7 +3208,7 @@ struct WorldEffectEntry uint32 ID; uint32 QuestFeedbackEffectID; uint8 WhenToDisplay; - uint8 TargetType; + int8 TargetType; int32 TargetAsset; uint32 PlayerConditionID; uint16 CombatConditionID; diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 312b1d403a7..894ea6a343a 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -166,7 +166,7 @@ enum ArtifactPowerFlag : uint8 #define MAX_ARTIFACT_TIER 1 -#define BATTLE_PET_SPECIES_MAX_ID 2480 +#define BATTLE_PET_SPECIES_MAX_ID 2592 enum ChrSpecializationFlag { @@ -508,7 +508,7 @@ enum CriteriaTypes : uint8 CRITERIA_TREE_HEART_OF_AZEROTH_LEVEL_REACHED = 215 }; -#define CRITERIA_TYPE_TOTAL 216 +#define CRITERIA_TYPE_TOTAL 217 enum CriteriaTreeFlags : uint16 { @@ -1002,7 +1002,7 @@ enum SpellShapeshiftFormFlags SHAPESHIFT_FORM_PREVENT_EMOTE_SOUNDS = 0x1000 }; -#define TaxiMaskSize 286 +#define TaxiMaskSize 299 typedef std::array<uint8, TaxiMaskSize> TaxiMask; enum TotemCategoryType diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index d71080dd716..a91086f7049 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -743,8 +743,6 @@ struct TC_GAME_API ItemTemplate uint32 GetPageText() const { return ExtendedData->PageID; } uint32 GetStartQuest() const { return ExtendedData->StartQuestID; } uint32 GetLockID() const { return ExtendedData->LockID; } - uint32 GetRandomProperty() const { return ExtendedData->RandomSelect; } - uint32 GetRandomSuffix() const { return ExtendedData->ItemRandomSuffixGroupID; } uint32 GetItemSet() const { return ExtendedData->ItemSet; } uint32 GetArea() const { return ExtendedData->ZoneBound; } uint32 GetMap() const { return ExtendedData->InstanceBound; } diff --git a/src/server/game/Entities/Player/CollectionMgr.cpp b/src/server/game/Entities/Player/CollectionMgr.cpp index f043797c09a..4ebbc628625 100644 --- a/src/server/game/Entities/Player/CollectionMgr.cpp +++ b/src/server/game/Entities/Player/CollectionMgr.cpp @@ -188,7 +188,9 @@ void CollectionMgr::LoadAccountHeirlooms(PreparedQueryResult result) uint32 bonusId = 0; - if (flags & HEIRLOOM_FLAG_BONUS_LEVEL_110) + if (flags & HEIRLOOM_FLAG_BONUS_LEVEL_120) + bonusId = heirloom->UpgradeItemBonusListID[3]; + else if (flags & HEIRLOOM_FLAG_BONUS_LEVEL_110) bonusId = heirloom->UpgradeItemBonusListID[2]; else if (flags & HEIRLOOM_FLAG_BONUS_LEVEL_100) bonusId = heirloom->UpgradeItemBonusListID[1]; @@ -270,6 +272,11 @@ void CollectionMgr::UpgradeHeirloom(uint32 itemId, int32 castItem) flags |= HEIRLOOM_FLAG_BONUS_LEVEL_110; bonusId = heirloom->UpgradeItemBonusListID[2]; } + if (heirloom->UpgradeItemID[3] == castItem) + { + flags |= HEIRLOOM_FLAG_BONUS_LEVEL_120; + bonusId = heirloom->UpgradeItemBonusListID[3]; + } for (Item* item : player->GetItemListByEntry(itemId, true)) item->AddBonuses(bonusId); @@ -352,6 +359,8 @@ bool CollectionMgr::CanApplyHeirloomXpBonus(uint32 itemId, uint32 level) if (itr == _heirlooms.end()) return false; + if (itr->second.flags & HEIRLOOM_FLAG_BONUS_LEVEL_120) + return level <= 120; if (itr->second.flags & HEIRLOOM_FLAG_BONUS_LEVEL_110) return level <= 110; if (itr->second.flags & HEIRLOOM_FLAG_BONUS_LEVEL_100) diff --git a/src/server/game/Entities/Player/CollectionMgr.h b/src/server/game/Entities/Player/CollectionMgr.h index 5f3d054424b..5292d07bf67 100644 --- a/src/server/game/Entities/Player/CollectionMgr.h +++ b/src/server/game/Entities/Player/CollectionMgr.h @@ -36,7 +36,8 @@ enum HeirloomPlayerFlags HEIRLOOM_FLAG_NONE = 0x00, HEIRLOOM_FLAG_BONUS_LEVEL_90 = 0x01, HEIRLOOM_FLAG_BONUS_LEVEL_100 = 0x02, - HEIRLOOM_FLAG_BONUS_LEVEL_110 = 0x04 + HEIRLOOM_FLAG_BONUS_LEVEL_110 = 0x04, + HEIRLOOM_FLAG_BONUS_LEVEL_120 = 0x08 }; enum HeirloomItemFlags diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index b2507d8d95f..ac806c758e5 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1343,6 +1343,9 @@ enum SpellEffectName SPELL_EFFECT_RESPEC_AZERITE_EMPOWERED_ITEM = 259, SPELL_EFFECT_SUMMON_STABLED_PET = 260, SPELL_EFFECT_SCRAP_ITEM = 261, + SPELL_EFFECT_262 = 262, + SPELL_EFFECT_REPAIR_ITEM = 263, + SPELL_EFFECT_REMOVE_GEM = 264, TOTAL_SPELL_EFFECTS }; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 1c52f6e0936..08f6bfd0b98 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -336,6 +336,9 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectNULL, //259 SPELL_EFFECT_RESPEC_AZERITE_EMPOWERED_ITEM &Spell::EffectNULL, //260 SPELL_EFFECT_SUMMON_STABLED_PET &Spell::EffectNULL, //261 SPELL_EFFECT_SCRAP_ITEM + &Spell::EffectNULL, //262 SPELL_EFFECT_262 + &Spell::EffectNULL, //263 SPELL_EFFECT_REPAIR_ITEM + &Spell::EffectNULL, //264 SPELL_EFFECT_REMOVE_GEM }; void Spell::EffectNULL(SpellEffIndex /*effIndex*/) diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 369fc1731df..f264e72c52a 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1031,6 +1031,9 @@ SpellEffectInfo::StaticData SpellEffectInfo::_data[TOTAL_SPELL_EFFECTS] = {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_ITEM}, // 259 SPELL_EFFECT_RESPEC_AZERITE_EMPOWERED_ITEM {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 260 SPELL_EFFECT_SUMMON_STABLED_PET {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_ITEM}, // 261 SPELL_EFFECT_SCRAP_ITEM + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 262 SPELL_EFFECT_262 + {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_ITEM}, // 263 SPELL_EFFECT_REPAIR_ITEM + {EFFECT_IMPLICIT_TARGET_EXPLICIT, TARGET_OBJECT_TYPE_ITEM}, // 264 SPELL_EFFECT_REMOVE_GEM }; SpellInfo::SpellInfo(SpellInfoLoadHelper const& data, SpellEffectEntryMap const& effectsMap, SpellVisualMap&& visuals) diff --git a/src/server/shared/DataStores/DB2Store.cpp b/src/server/shared/DataStores/DB2Store.cpp index 51d768af74a..4a9f01723a2 100644 --- a/src/server/shared/DataStores/DB2Store.cpp +++ b/src/server/shared/DataStores/DB2Store.cpp @@ -91,12 +91,10 @@ bool DB2StorageBase::Load(std::string const& path, uint32 locale, char**& indexT { indexTable = nullptr; DB2FileLoader db2; - { - DB2FileSystemSource source(path + _fileName); - // Check if load was successful, only then continue - if (!db2.Load(&source, _loadInfo)) - return false; - } + DB2FileSystemSource source(path + _fileName); + // Check if load was successful, only then continue + if (!db2.Load(&source, _loadInfo)) + return false; _fieldCount = db2.GetCols(); _tableHash = db2.GetTableHash(); diff --git a/src/tools/extractor_common/CascHandles.cpp b/src/tools/extractor_common/CascHandles.cpp index 9487b3de093..eb84a084a11 100644 --- a/src/tools/extractor_common/CascHandles.cpp +++ b/src/tools/extractor_common/CascHandles.cpp @@ -38,6 +38,7 @@ char const* CASC::HumanReadableCASCError(DWORD error) case ERROR_INVALID_HANDLE: return "INVALID_HANDLE"; case ERROR_ACCESS_DENIED: return "ACCESS_DENIED"; case ERROR_FILE_NOT_FOUND: return "FILE_NOT_FOUND"; + case ERROR_FILE_ENCRYPTED: return "FILE_ENCRYPTED"; default: return "UNKNOWN"; } } @@ -98,10 +99,15 @@ DWORD CASC::GetInstalledLocalesMask(StorageHandle const& storage) return 0; } +bool CASC::HasTactKey(StorageHandle const& storage, ULONGLONG keyLookup) +{ + return CascFindEncryptionKey(storage.get(), keyLookup) != nullptr; +} + CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, char const* fileName, DWORD localeMask, bool printErrors /*= false*/) { HANDLE handle = nullptr; - if (!::CascOpenFile(storage.get(), fileName, localeMask, 0, &handle)) + if (!::CascOpenFile(storage.get(), fileName, localeMask, CASC_OPEN_BY_NAME, &handle)) { DWORD lastError = GetLastError(); // support checking error set by *Open* call, not the next *Close* if (printErrors) @@ -115,6 +121,23 @@ CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, char const* fileNa return FileHandle(handle); } +CASC::FileHandle CASC::OpenFile(StorageHandle const& storage, DWORD fileDataId, DWORD localeMask, bool printErrors /*= false*/) +{ + HANDLE handle = nullptr; + if (!::CascOpenFile(storage.get(), CASC_FILE_DATA_ID(fileDataId), localeMask, CASC_OPEN_BY_FILEID, &handle)) + { + DWORD lastError = GetLastError(); // support checking error set by *Open* call, not the next *Close* + if (printErrors) + fprintf(stderr, "Failed to open 'FileDataId %u' in CASC storage: %s\n", fileDataId, HumanReadableCASCError(lastError)); + + CascCloseFile(handle); + SetLastError(lastError); + return FileHandle(); + } + + return FileHandle(handle); +} + DWORD CASC::GetFileSize(FileHandle const& file, PDWORD fileSizeHigh) { return ::CascGetFileSize(file.get(), fileSizeHigh); diff --git a/src/tools/extractor_common/CascHandles.h b/src/tools/extractor_common/CascHandles.h index c191cc25045..9feafdbf4af 100644 --- a/src/tools/extractor_common/CascHandles.h +++ b/src/tools/extractor_common/CascHandles.h @@ -51,8 +51,10 @@ namespace CASC StorageHandle OpenStorage(boost::filesystem::path const& path, DWORD localeMask); DWORD GetBuildNumber(StorageHandle const& storage); DWORD GetInstalledLocalesMask(StorageHandle const& storage); + bool HasTactKey(StorageHandle const& storage, ULONGLONG keyLookup); FileHandle OpenFile(StorageHandle const& storage, char const* fileName, DWORD localeMask, bool printErrors = false); + FileHandle OpenFile(StorageHandle const& storage, DWORD fileDataId, DWORD localeMask, bool printErrors = false); DWORD GetFileSize(FileHandle const& file, PDWORD fileSizeHigh); DWORD GetFilePointer(FileHandle const& file); bool SetFilePointer(FileHandle const& file, LONGLONG position); diff --git a/src/tools/extractor_common/DB2CascFileSource.cpp b/src/tools/extractor_common/DB2CascFileSource.cpp index c2478b21def..58f8567dda3 100644 --- a/src/tools/extractor_common/DB2CascFileSource.cpp +++ b/src/tools/extractor_common/DB2CascFileSource.cpp @@ -16,14 +16,21 @@ */ #include "DB2CascFileSource.h" +#include "StringFormat.h" #include <CascLib.h> -DB2CascFileSource::DB2CascFileSource(CASC::StorageHandle const& storage, std::string fileName) +DB2CascFileSource::DB2CascFileSource(CASC::StorageHandle const& storage, std::string fileName, bool printErrors /*= true*/) { - _fileHandle = CASC::OpenFile(storage, fileName.c_str(), CASC_LOCALE_NONE, true); + _fileHandle = CASC::OpenFile(storage, fileName.c_str(), CASC_LOCALE_NONE, printErrors); _fileName = std::move(fileName); } +DB2CascFileSource::DB2CascFileSource(CASC::StorageHandle const& storage, uint32 fileDataId, bool printErrors /*= true*/) +{ + _fileHandle = CASC::OpenFile(storage, fileDataId, CASC_LOCALE_NONE, printErrors); + _fileName = Trinity::StringFormat("FileDataId: %u", fileDataId); +} + bool DB2CascFileSource::IsOpen() const { return _fileHandle != nullptr; @@ -50,9 +57,17 @@ std::size_t DB2CascFileSource::GetFileSize() const DWORD sizeLow = 0; DWORD sizeHigh = 0; sizeLow = CASC::GetFileSize(_fileHandle, &sizeHigh); + if (sizeLow == CASC_INVALID_SIZE) + return std::size_t(-1); + return std::size_t(uint64(sizeLow) | (uint64(sizeHigh) << 32)); } +CASC::FileHandle const& DB2CascFileSource::GetHandle() const +{ + return _fileHandle; +} + char const* DB2CascFileSource::GetFileName() const { return _fileName.c_str(); diff --git a/src/tools/extractor_common/DB2CascFileSource.h b/src/tools/extractor_common/DB2CascFileSource.h index bfe580714be..80559ff8d41 100644 --- a/src/tools/extractor_common/DB2CascFileSource.h +++ b/src/tools/extractor_common/DB2CascFileSource.h @@ -24,12 +24,14 @@ struct DB2CascFileSource : public DB2FileSource { - DB2CascFileSource(CASC::StorageHandle const& storage, std::string fileName); + DB2CascFileSource(CASC::StorageHandle const& storage, std::string fileName, bool printErrors = true); + DB2CascFileSource(CASC::StorageHandle const& storage, uint32 fileDataId, bool printErrors = true); bool IsOpen() const override; bool Read(void* buffer, std::size_t numBytes) override; std::size_t GetPosition() const override; bool SetPosition(std::size_t position) override; std::size_t GetFileSize() const override; + CASC::FileHandle const& GetHandle() const; char const* GetFileName() const override; private: diff --git a/src/tools/extractor_common/ExtractorDB2LoadInfo.h b/src/tools/extractor_common/ExtractorDB2LoadInfo.h index 6ee6a9c6355..0f4833af253 100644 --- a/src/tools/extractor_common/ExtractorDB2LoadInfo.h +++ b/src/tools/extractor_common/ExtractorDB2LoadInfo.h @@ -43,7 +43,7 @@ struct CinematicCameraLoadInfo { FT_FLOAT, 1, true }, { FT_INT, 1, false }, }; - static DB2Meta meta(-1, 4, 0x20C5E540, fields, -1); + static DB2Meta meta(1294214, -1, 4, 0x20C5E540, fields, -1); static DB2FileLoadInfo const loadInfo(&loadedFields[0], std::extent<decltype(loadedFields)>::value, &meta); return &loadInfo; } @@ -75,7 +75,7 @@ struct GameobjectDisplayInfoLoadInfo { FT_FLOAT, 1, true }, { FT_FLOAT, 1, true }, }; - static DB2Meta meta(-1, 5, 0x7A816799, fields, -1); + static DB2Meta meta(1266277, -1, 5, 0x7A816799, fields, -1); static DB2FileLoadInfo const loadInfo(&loadedFields[0], std::extent<decltype(loadedFields)>::value, &meta); return &loadInfo; } @@ -96,7 +96,7 @@ struct LiquidMaterialLoadInfo { FT_BYTE, 1, true }, { FT_BYTE, 1, true }, }; - static DB2Meta meta(-1, 2, 0x6A7287A2, fields, -1); + static DB2Meta meta(1132538, -1, 2, 0x6A7287A2, fields, -1); static DB2FileLoadInfo const loadInfo(&loadedFields[0], std::extent<decltype(loadedFields)>::value, &meta); return &loadInfo; } @@ -123,7 +123,7 @@ struct LiquidObjectLoadInfo { FT_BYTE, 1, false }, { FT_BYTE, 1, false }, }; - static DB2Meta meta(-1, 5, 0x7AF380AA, fields, -1); + static DB2Meta meta(1308058, -1, 5, 0x7AF380AA, fields, -1); static DB2FileLoadInfo const loadInfo(&loadedFields[0], std::extent<decltype(loadedFields)>::value, &meta); return &loadInfo; } @@ -216,7 +216,7 @@ struct LiquidTypeLoadInfo { FT_INT, 4, false }, { FT_FLOAT, 4, true }, }; - static DB2Meta meta(-1, 21, 0x29F8C65E, fields, -1); + static DB2Meta meta(1371380, -1, 21, 0x29F8C65E, fields, -1); static DB2FileLoadInfo const loadInfo(&loadedFields[0], std::extent<decltype(loadedFields)>::value, &meta); return &loadInfo; } @@ -251,10 +251,11 @@ struct MapLoadInfo { false, FT_BYTE, "MaxPlayers" }, { true, FT_SHORT, "WindSettingsID" }, { true, FT_INT, "ZmpFileDataID" }, + { true, FT_INT, "WdtFileDataID" }, { true, FT_INT, "Flags1" }, { true, FT_INT, "Flags2" }, }; - static DB2MetaField const fields[22] = + static DB2MetaField const fields[23] = { { FT_STRING_NOT_LOCALIZED, 1, true }, { FT_STRING, 1, true }, @@ -277,9 +278,10 @@ struct MapLoadInfo { FT_BYTE, 1, false }, { FT_SHORT, 1, true }, { FT_INT, 1, true }, + { FT_INT, 1, true }, { FT_INT, 2, true }, }; - static DB2Meta meta(-1, 22, 0x503A3E58, fields, -1); + static DB2Meta meta(1349477, -1, 23, 0xB290D217, fields, -1); static DB2FileLoadInfo const loadInfo(&loadedFields[0], std::extent<decltype(loadedFields)>::value, &meta); return &loadInfo; } diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp index c1c28d969b7..9dc017cd1da 100644 --- a/src/tools/map_extractor/System.cpp +++ b/src/tools/map_extractor/System.cpp @@ -220,7 +220,7 @@ void ReadMapDBC() { printf("Read Map.db2 file...\n"); - DB2CascFileSource source(CascStorage, "DBFilesClient\\Map.db2"); + DB2CascFileSource source(CascStorage, MapLoadInfo::Instance()->Meta->FileDataId); DB2FileLoader db2; if (!db2.Load(&source, MapLoadInfo::Instance())) { @@ -268,7 +268,7 @@ void ReadLiquidMaterialTable() { printf("Read LiquidMaterial.db2 file...\n"); - DB2CascFileSource source(CascStorage, "DBFilesClient\\LiquidMaterial.db2"); + DB2CascFileSource source(CascStorage, LiquidMaterialLoadInfo::Instance()->Meta->FileDataId); DB2FileLoader db2; if (!db2.Load(&source, LiquidMaterialLoadInfo::Instance())) { @@ -279,6 +279,9 @@ void ReadLiquidMaterialTable() for (uint32 x = 0; x < db2.GetRecordCount(); ++x) { DB2Record record = db2.GetRecord(x); + if (!record) + continue; + LiquidMaterialEntry& liquidType = LiquidMaterials[record.GetId()]; liquidType.LVF = record.GetUInt8("LVF"); } @@ -293,7 +296,7 @@ void ReadLiquidObjectTable() { printf("Read LiquidObject.db2 file...\n"); - DB2CascFileSource source(CascStorage, "DBFilesClient\\LiquidObject.db2"); + DB2CascFileSource source(CascStorage, LiquidObjectLoadInfo::Instance()->Meta->FileDataId); DB2FileLoader db2; if (!db2.Load(&source, LiquidObjectLoadInfo::Instance())) { @@ -304,6 +307,9 @@ void ReadLiquidObjectTable() for (uint32 x = 0; x < db2.GetRecordCount(); ++x) { DB2Record record = db2.GetRecord(x); + if (!record) + continue; + LiquidObjectEntry& liquidType = LiquidObjects[record.GetId()]; liquidType.LiquidTypeID = record.GetUInt16("LiquidTypeID"); } @@ -318,7 +324,7 @@ void ReadLiquidTypeTable() { printf("Read LiquidType.db2 file...\n"); - DB2CascFileSource source(CascStorage, "DBFilesClient\\LiquidType.db2"); + DB2CascFileSource source(CascStorage, LiquidTypeLoadInfo::Instance()->Meta->FileDataId); DB2FileLoader db2; if (!db2.Load(&source, LiquidTypeLoadInfo::Instance())) { @@ -329,6 +335,9 @@ void ReadLiquidTypeTable() for (uint32 x = 0; x < db2.GetRecordCount(); ++x) { DB2Record record = db2.GetRecord(x); + if (!record) + continue; + LiquidTypeEntry& liquidType = LiquidTypes[record.GetId()]; liquidType.SoundBank = record.GetUInt8("SoundBank"); liquidType.MaterialID = record.GetUInt8("MaterialID"); @@ -344,7 +353,7 @@ bool ReadCinematicCameraDBC() { printf("Read CinematicCamera.db2 file...\n"); - DB2CascFileSource source(CascStorage, "DBFilesClient\\CinematicCamera.db2"); + DB2CascFileSource source(CascStorage, CinematicCameraLoadInfo::Instance()->Meta->FileDataId); DB2FileLoader db2; if (!db2.Load(&source, CinematicCameraLoadInfo::Instance())) { @@ -1159,6 +1168,99 @@ bool ExtractFile(CASC::FileHandle const& fileInArchive, std::string const& filen return true; } +bool ExtractDB2File(uint32 fileDataId, char const* cascFileName, int locale, boost::filesystem::path const& outputPath) +{ + DB2CascFileSource source(CascStorage, fileDataId, false); + if (!source.IsOpen()) + { + printf("Unable to open file %s in the archive for locale %s: %s\n", cascFileName, localeNames[locale], CASC::HumanReadableCASCError(GetLastError())); + return false; + } + + std::size_t fileSize = source.GetFileSize(); + if (fileSize == std::size_t(-1)) + { + printf("Can't read file size of '%s'\n", cascFileName); + return false; + } + + DB2FileLoader db2; + if (!db2.LoadHeaders(&source, nullptr)) + { + printf("Can't read DB2 headers file size of '%s'\n", cascFileName); + return false; + } + + std::string outputFileName = outputPath.string(); + FILE* output = fopen(outputFileName.c_str(), "wb"); + if (!output) + { + printf("Can't create the output file '%s'\n", outputFileName.c_str()); + return false; + } + + DB2Header header = db2.GetHeader(); + + std::size_t posAfterHeaders = 0; + posAfterHeaders += fwrite(&header, 1, sizeof(header), output); + + // erase TactId from header if key is known + for (uint32 i = 0; i < header.SectionCount; ++i) + { + DB2SectionHeader sectionHeader = db2.GetSectionHeader(i); + if (sectionHeader.TactId && CASC::HasTactKey(CascStorage, sectionHeader.TactId)) + sectionHeader.TactId = 0; + + posAfterHeaders += fwrite(§ionHeader, 1, sizeof(sectionHeader), output); + } + + char buffer[0x10000]; + DWORD readBatchSize = 0x10000; + DWORD readBytes; + source.SetPosition(posAfterHeaders); + + do + { + readBytes = 0; + if (!CASC::ReadFile(source.GetHandle(), buffer, std::min<DWORD>(fileSize, readBatchSize), &readBytes)) + { + if (GetLastError() == ERROR_FILE_ENCRYPTED) + { + // shrink block size to read as much unencrypted data as possible + if (readBatchSize != 1) + { + readBatchSize = std::max<DWORD>(1, readBatchSize / 2); + continue; + } + + uint8 zero = 0; + --fileSize; + fwrite(&zero, 1, 1, output); + source.SetPosition(source.GetPosition() + 1); + continue; + } + + printf("Can't read file '%s'\n", outputFileName.c_str()); + fclose(output); + boost::filesystem::remove(outputPath); + return false; + } + + if (!readBytes) + break; + + fwrite(buffer, 1, readBytes, output); + fileSize -= readBytes; + readBatchSize = 0x10000; + if (!fileSize) // now we have read entire file + break; + + } while (true); + + fclose(output); + return true; +} + char const* GetCascFilenamePart(char const* cascPath) { if (char const* lastSep = strrchr(cascPath, '\\')) @@ -1178,23 +1280,15 @@ void ExtractDBFilesClient(int l) printf("locale %s output path %s\n", localeNames[l], localePath.string().c_str()); - uint32 index = 0; uint32 count = 0; - char const* fileName = DBFilesClientList[index]; - while (fileName) + for (DB2FileInfo const& db2 : DBFilesClientList) { - if (CASC::FileHandle dbcFile = CASC::OpenFile(CascStorage, fileName, CASC_LOCALE_NONE)) - { - boost::filesystem::path filePath = localePath / GetCascFilenamePart(fileName); + boost::filesystem::path filePath = localePath / db2.Name; - if (!boost::filesystem::exists(filePath)) - if (ExtractFile(dbcFile, filePath.string())) - ++count; - } - else - printf("Unable to open file %s in the archive for locale %s: %s\n", fileName, localeNames[l], CASC::HumanReadableCASCError(GetLastError())); + if (!boost::filesystem::exists(filePath)) + if (ExtractDB2File(db2.FileDataId, db2.Name, l, filePath.string())) + ++count; - fileName = DBFilesClientList[++index]; } printf("Extracted %u files\n\n", count); diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h index a1cd20cf10e..18116d7ab8a 100644 --- a/src/tools/map_extractor/loadlib/DBFilesClientList.h +++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h @@ -18,673 +18,702 @@ #ifndef DBFilesClientList_h__ #define DBFilesClientList_h__ -char const* DBFilesClientList[] = +struct DB2FileInfo { - "DBFilesClient\\Achievement.db2", - "DBFilesClient\\Achievement_Category.db2", - "DBFilesClient\\AdventureJournal.db2", - "DBFilesClient\\AdventureMapPOI.db2", - "DBFilesClient\\AlliedRace.db2", - "DBFilesClient\\AlliedRaceRacialAbility.db2", - "DBFilesClient\\AnimKit.db2", - "DBFilesClient\\AnimKitBoneSet.db2", - "DBFilesClient\\AnimKitBoneSetAlias.db2", - "DBFilesClient\\AnimKitConfig.db2", - "DBFilesClient\\AnimKitConfigBoneSet.db2", - "DBFilesClient\\AnimKitPriority.db2", - "DBFilesClient\\AnimKitReplacement.db2", - "DBFilesClient\\AnimKitSegment.db2", - "DBFilesClient\\AnimReplacement.db2", - "DBFilesClient\\AnimReplacementSet.db2", - "DBFilesClient\\AnimationData.db2", - "DBFilesClient\\AoiBox.db2", - "DBFilesClient\\AreaConditionalData.db2", - "DBFilesClient\\AreaFarClipOverride.db2", - "DBFilesClient\\AreaGroupMember.db2", - "DBFilesClient\\AreaPOI.db2", - "DBFilesClient\\AreaPOIState.db2", - "DBFilesClient\\AreaTable.db2", - "DBFilesClient\\AreaTrigger.db2", - "DBFilesClient\\AreaTriggerActionSet.db2", - "DBFilesClient\\AreaTriggerBox.db2", - "DBFilesClient\\AreaTriggerCreateProperties.db2", - "DBFilesClient\\AreaTriggerCylinder.db2", - "DBFilesClient\\AreaTriggerSphere.db2", - "DBFilesClient\\ArmorLocation.db2", - "DBFilesClient\\Artifact.db2", - "DBFilesClient\\ArtifactAppearance.db2", - "DBFilesClient\\ArtifactAppearanceSet.db2", - "DBFilesClient\\ArtifactCategory.db2", - "DBFilesClient\\ArtifactItemToTransmog.db2", - "DBFilesClient\\ArtifactPower.db2", - "DBFilesClient\\ArtifactPowerLink.db2", - "DBFilesClient\\ArtifactPowerPicker.db2", - "DBFilesClient\\ArtifactPowerRank.db2", - "DBFilesClient\\ArtifactQuestXP.db2", - "DBFilesClient\\ArtifactTier.db2", - "DBFilesClient\\ArtifactUnlock.db2", - "DBFilesClient\\AuctionHouse.db2", - "DBFilesClient\\AzeriteEmpoweredItem.db2", - "DBFilesClient\\AzeriteItem.db2", - "DBFilesClient\\AzeriteItemMilestonePower.db2", - "DBFilesClient\\AzeritePower.db2", - "DBFilesClient\\AzeritePowerSetMember.db2", - "DBFilesClient\\AzeriteTierUnlock.db2", - "DBFilesClient\\BankBagSlotPrices.db2", - "DBFilesClient\\BannedAddons.db2", - "DBFilesClient\\BarberShopStyle.db2", - "DBFilesClient\\BattlePetAbility.db2", - "DBFilesClient\\BattlePetAbilityEffect.db2", - "DBFilesClient\\BattlePetAbilityState.db2", - "DBFilesClient\\BattlePetAbilityTurn.db2", - "DBFilesClient\\BattlePetBreedQuality.db2", - "DBFilesClient\\BattlePetBreedState.db2", - "DBFilesClient\\BattlePetDisplayOverride.db2", - "DBFilesClient\\BattlePetEffectProperties.db2", - "DBFilesClient\\BattlePetNPCTeamMember.db2", - "DBFilesClient\\BattlePetSpecies.db2", - "DBFilesClient\\BattlePetSpeciesState.db2", - "DBFilesClient\\BattlePetSpeciesXAbility.db2", - "DBFilesClient\\BattlePetState.db2", - "DBFilesClient\\BattlePetVisual.db2", - "DBFilesClient\\BattlemasterList.db2", - "DBFilesClient\\BeamEffect.db2", - "DBFilesClient\\BoneWindModifierModel.db2", - "DBFilesClient\\BoneWindModifiers.db2", - "DBFilesClient\\BonusRoll.db2", - "DBFilesClient\\Bounty.db2", - "DBFilesClient\\BountySet.db2", - "DBFilesClient\\BroadcastText.db2", - "DBFilesClient\\CameraEffect.db2", - "DBFilesClient\\CameraEffectEntry.db2", - "DBFilesClient\\CameraMode.db2", - "DBFilesClient\\Campaign.db2", - "DBFilesClient\\CampaignXCondition.db2", - "DBFilesClient\\CampaignXQuestLine.db2", - "DBFilesClient\\CastableRaidBuffs.db2", - "DBFilesClient\\CelestialBody.db2", - "DBFilesClient\\Cfg_Categories.db2", - "DBFilesClient\\Cfg_Configs.db2", - "DBFilesClient\\Cfg_Regions.db2", - "DBFilesClient\\CharBaseInfo.db2", - "DBFilesClient\\CharBaseSection.db2", - "DBFilesClient\\CharComponentTextureLayouts.db2", - "DBFilesClient\\CharComponentTextureSections.db2", - "DBFilesClient\\CharHairGeosets.db2", - "DBFilesClient\\CharSections.db2", - "DBFilesClient\\CharShipment.db2", - "DBFilesClient\\CharShipmentContainer.db2", - "DBFilesClient\\CharStartOutfit.db2", - "DBFilesClient\\CharTitles.db2", - "DBFilesClient\\CharacterFaceBoneSet.db2", - "DBFilesClient\\CharacterFacialHairStyles.db2", - "DBFilesClient\\CharacterLoadout.db2", - "DBFilesClient\\CharacterLoadoutItem.db2", - "DBFilesClient\\CharacterServiceInfo.db2", - "DBFilesClient\\ChatChannels.db2", - "DBFilesClient\\ChatProfanity.db2", - "DBFilesClient\\ChrClassRaceSex.db2", - "DBFilesClient\\ChrClassTitle.db2", - "DBFilesClient\\ChrClassUIDisplay.db2", - "DBFilesClient\\ChrClassVillain.db2", - "DBFilesClient\\ChrClasses.db2", - "DBFilesClient\\ChrClassesXPowerTypes.db2", - "DBFilesClient\\ChrCustomization.db2", - "DBFilesClient\\ChrRaces.db2", - "DBFilesClient\\ChrSpecialization.db2", - "DBFilesClient\\ChrUpgradeBucket.db2", - "DBFilesClient\\ChrUpgradeBucketSpell.db2", - "DBFilesClient\\ChrUpgradeTier.db2", - "DBFilesClient\\CinematicCamera.db2", - "DBFilesClient\\CinematicSequences.db2", - "DBFilesClient\\ClientSceneEffect.db2", - "DBFilesClient\\CloakDampening.db2", - "DBFilesClient\\CloneEffect.db2", - "DBFilesClient\\CombatCondition.db2", - "DBFilesClient\\CommentatorStartLocation.db2", - "DBFilesClient\\CommentatorTrackedCooldown.db2", - "DBFilesClient\\CommunityIcon.db2", - "DBFilesClient\\ComponentModelFileData.db2", - "DBFilesClient\\ComponentTextureFileData.db2", - "DBFilesClient\\ConfigurationWarning.db2", - "DBFilesClient\\ContentTuning.db2", - "DBFilesClient\\Contribution.db2", - "DBFilesClient\\ContributionStyle.db2", - "DBFilesClient\\ContributionStyleContainer.db2", - "DBFilesClient\\ConversationLine.db2", - "DBFilesClient\\Creature.db2", - "DBFilesClient\\CreatureDifficulty.db2", - "DBFilesClient\\CreatureDispXUiCamera.db2", - "DBFilesClient\\CreatureDisplayInfo.db2", - "DBFilesClient\\CreatureDisplayInfoCond.db2", - "DBFilesClient\\CreatureDisplayInfoEvt.db2", - "DBFilesClient\\CreatureDisplayInfoExtra.db2", - "DBFilesClient\\CreatureDisplayInfoGeosetData.db2", - "DBFilesClient\\CreatureDisplayInfoTrn.db2", - "DBFilesClient\\CreatureFamily.db2", - "DBFilesClient\\CreatureImmunities.db2", - "DBFilesClient\\CreatureModelData.db2", - "DBFilesClient\\CreatureMovementInfo.db2", - "DBFilesClient\\CreatureSoundData.db2", - "DBFilesClient\\CreatureType.db2", - "DBFilesClient\\CreatureXContribution.db2", - "DBFilesClient\\CreatureXDisplayInfo.db2", - "DBFilesClient\\Criteria.db2", - "DBFilesClient\\CriteriaTree.db2", - "DBFilesClient\\CriteriaTreeXEffect.db2", - "DBFilesClient\\CurrencyCategory.db2", - "DBFilesClient\\CurrencyContainer.db2", - "DBFilesClient\\CurrencyTypes.db2", - "DBFilesClient\\Curve.db2", - "DBFilesClient\\CurvePoint.db2", - "DBFilesClient\\DeathThudLookups.db2", - "DBFilesClient\\DecalProperties.db2", - "DBFilesClient\\DeclinedWord.db2", - "DBFilesClient\\DeclinedWordCases.db2", - "DBFilesClient\\DestructibleModelData.db2", - "DBFilesClient\\DeviceBlacklist.db2", - "DBFilesClient\\DeviceDefaultSettings.db2", - "DBFilesClient\\Difficulty.db2", - "DBFilesClient\\DissolveEffect.db2", - "DBFilesClient\\DriverBlacklist.db2", - "DBFilesClient\\DungeonEncounter.db2", - "DBFilesClient\\DurabilityCosts.db2", - "DBFilesClient\\DurabilityQuality.db2", - "DBFilesClient\\EdgeGlowEffect.db2", - "DBFilesClient\\Emotes.db2", - "DBFilesClient\\EmotesText.db2", - "DBFilesClient\\EmotesTextData.db2", - "DBFilesClient\\EmotesTextSound.db2", - "DBFilesClient\\EnvironmentalDamage.db2", - "DBFilesClient\\Exhaustion.db2", - "DBFilesClient\\ExpectedStat.db2", - "DBFilesClient\\ExpectedStatMod.db2", - "DBFilesClient\\Faction.db2", - "DBFilesClient\\FactionGroup.db2", - "DBFilesClient\\FactionTemplate.db2", - "DBFilesClient\\FootprintTextures.db2", - "DBFilesClient\\FootstepTerrainLookup.db2", - "DBFilesClient\\FriendshipRepReaction.db2", - "DBFilesClient\\FriendshipReputation.db2", - "DBFilesClient\\FullScreenEffect.db2", - "DBFilesClient\\GMSurveyAnswers.db2", - "DBFilesClient\\GMSurveyCurrentSurvey.db2", - "DBFilesClient\\GMSurveyQuestions.db2", - "DBFilesClient\\GMSurveySurveys.db2", - "DBFilesClient\\GameObjectArtKit.db2", - "DBFilesClient\\GameObjectDiffAnimMap.db2", - "DBFilesClient\\GameObjectDisplayInfo.db2", - "DBFilesClient\\GameObjectDisplayInfoXSoundKit.db2", - "DBFilesClient\\GameObjects.db2", - "DBFilesClient\\GameTips.db2", - "DBFilesClient\\GarrAbility.db2", - "DBFilesClient\\GarrAbilityCategory.db2", - "DBFilesClient\\GarrAbilityEffect.db2", - "DBFilesClient\\GarrBuilding.db2", - "DBFilesClient\\GarrBuildingDoodadSet.db2", - "DBFilesClient\\GarrBuildingPlotInst.db2", - "DBFilesClient\\GarrClassSpec.db2", - "DBFilesClient\\GarrClassSpecPlayerCond.db2", - "DBFilesClient\\GarrEncounter.db2", - "DBFilesClient\\GarrEncounterSetXEncounter.db2", - "DBFilesClient\\GarrEncounterXMechanic.db2", - "DBFilesClient\\GarrFollItemSetMember.db2", - "DBFilesClient\\GarrFollSupportSpell.db2", - "DBFilesClient\\GarrFollower.db2", - "DBFilesClient\\GarrFollowerLevelXP.db2", - "DBFilesClient\\GarrFollowerQuality.db2", - "DBFilesClient\\GarrFollowerSetXFollower.db2", - "DBFilesClient\\GarrFollowerType.db2", - "DBFilesClient\\GarrFollowerUICreature.db2", - "DBFilesClient\\GarrFollowerXAbility.db2", - "DBFilesClient\\GarrItemLevelUpgradeData.db2", - "DBFilesClient\\GarrMechanic.db2", - "DBFilesClient\\GarrMechanicSetXMechanic.db2", - "DBFilesClient\\GarrMechanicType.db2", - "DBFilesClient\\GarrMission.db2", - "DBFilesClient\\GarrMissionTexture.db2", - "DBFilesClient\\GarrMissionType.db2", - "DBFilesClient\\GarrMissionXEncounter.db2", - "DBFilesClient\\GarrMissionXFollower.db2", - "DBFilesClient\\GarrMssnBonusAbility.db2", - "DBFilesClient\\GarrPlot.db2", - "DBFilesClient\\GarrPlotBuilding.db2", - "DBFilesClient\\GarrPlotInstance.db2", - "DBFilesClient\\GarrPlotUICategory.db2", - "DBFilesClient\\GarrSiteLevel.db2", - "DBFilesClient\\GarrSiteLevelPlotInst.db2", - "DBFilesClient\\GarrSpecialization.db2", - "DBFilesClient\\GarrString.db2", - "DBFilesClient\\GarrTalent.db2", - "DBFilesClient\\GarrTalentTree.db2", - "DBFilesClient\\GarrType.db2", - "DBFilesClient\\GarrUiAnimClassInfo.db2", - "DBFilesClient\\GarrUiAnimRaceInfo.db2", - "DBFilesClient\\GemProperties.db2", - "DBFilesClient\\GlobalStrings.db2", - "DBFilesClient\\GlyphBindableSpell.db2", - "DBFilesClient\\GlyphExclusiveCategory.db2", - "DBFilesClient\\GlyphProperties.db2", - "DBFilesClient\\GlyphRequiredSpec.db2", - "DBFilesClient\\GroundEffectDoodad.db2", - "DBFilesClient\\GroundEffectTexture.db2", - "DBFilesClient\\GroupFinderActivity.db2", - "DBFilesClient\\GroupFinderActivityGrp.db2", - "DBFilesClient\\GroupFinderCategory.db2", - "DBFilesClient\\GuildColorBackground.db2", - "DBFilesClient\\GuildColorBorder.db2", - "DBFilesClient\\GuildColorEmblem.db2", - "DBFilesClient\\GuildPerkSpells.db2", - "DBFilesClient\\Heirloom.db2", - "DBFilesClient\\HelmetAnimScaling.db2", - "DBFilesClient\\HelmetGeosetVisData.db2", - "DBFilesClient\\HighlightColor.db2", - "DBFilesClient\\HolidayDescriptions.db2", - "DBFilesClient\\HolidayNames.db2", - "DBFilesClient\\Holidays.db2", - "DBFilesClient\\Hotfixes.db2", - "DBFilesClient\\ImportPriceArmor.db2", - "DBFilesClient\\ImportPriceQuality.db2", - "DBFilesClient\\ImportPriceShield.db2", - "DBFilesClient\\ImportPriceWeapon.db2", - "DBFilesClient\\InvasionClientData.db2", - "DBFilesClient\\Item.db2", - "DBFilesClient\\ItemAppearance.db2", - "DBFilesClient\\ItemAppearanceXUiCamera.db2", - "DBFilesClient\\ItemArmorQuality.db2", - "DBFilesClient\\ItemArmorShield.db2", - "DBFilesClient\\ItemArmorTotal.db2", - "DBFilesClient\\ItemBagFamily.db2", - "DBFilesClient\\ItemBonus.db2", - "DBFilesClient\\ItemBonusListLevelDelta.db2", - "DBFilesClient\\ItemBonusTreeNode.db2", - "DBFilesClient\\ItemChildEquipment.db2", - "DBFilesClient\\ItemClass.db2", - "DBFilesClient\\ItemContextPickerEntry.db2", - "DBFilesClient\\ItemCurrencyCost.db2", - "DBFilesClient\\ItemDamageAmmo.db2", - "DBFilesClient\\ItemDamageOneHand.db2", - "DBFilesClient\\ItemDamageOneHandCaster.db2", - "DBFilesClient\\ItemDamageTwoHand.db2", - "DBFilesClient\\ItemDamageTwoHandCaster.db2", - "DBFilesClient\\ItemDisenchantLoot.db2", - "DBFilesClient\\ItemDisplayInfo.db2", - "DBFilesClient\\ItemDisplayInfoMaterialRes.db2", - "DBFilesClient\\ItemDisplayXUiCamera.db2", - "DBFilesClient\\ItemEffect.db2", - "DBFilesClient\\ItemExtendedCost.db2", - "DBFilesClient\\ItemGroupSounds.db2", - "DBFilesClient\\ItemLevelSelector.db2", - "DBFilesClient\\ItemLevelSelectorQuality.db2", - "DBFilesClient\\ItemLevelSelectorQualitySet.db2", - "DBFilesClient\\ItemLimitCategory.db2", - "DBFilesClient\\ItemLimitCategoryCondition.db2", - "DBFilesClient\\ItemModifiedAppearance.db2", - "DBFilesClient\\ItemModifiedAppearanceExtra.db2", - "DBFilesClient\\ItemNameDescription.db2", - "DBFilesClient\\ItemPetFood.db2", - "DBFilesClient\\ItemPriceBase.db2", - "DBFilesClient\\ItemRandomProperties.db2", - "DBFilesClient\\ItemRandomSuffix.db2", - "DBFilesClient\\ItemRangedDisplayInfo.db2", - "DBFilesClient\\ItemSearchName.db2", - "DBFilesClient\\ItemSet.db2", - "DBFilesClient\\ItemSetSpell.db2", - "DBFilesClient\\ItemSparse.db2", - "DBFilesClient\\ItemSpec.db2", - "DBFilesClient\\ItemSpecOverride.db2", - "DBFilesClient\\ItemSubClass.db2", - "DBFilesClient\\ItemSubClassMask.db2", - "DBFilesClient\\ItemUpgrade.db2", - "DBFilesClient\\ItemVisuals.db2", - "DBFilesClient\\ItemXBonusTree.db2", - "DBFilesClient\\JournalEncounter.db2", - "DBFilesClient\\JournalEncounterCreature.db2", - "DBFilesClient\\JournalEncounterItem.db2", - "DBFilesClient\\JournalEncounterSection.db2", - "DBFilesClient\\JournalEncounterXDifficulty.db2", - "DBFilesClient\\JournalEncounterXMapLoc.db2", - "DBFilesClient\\JournalInstance.db2", - "DBFilesClient\\JournalItemXDifficulty.db2", - "DBFilesClient\\JournalSectionXDifficulty.db2", - "DBFilesClient\\JournalTier.db2", - "DBFilesClient\\JournalTierXInstance.db2", - "DBFilesClient\\Keychain.db2", - "DBFilesClient\\KeystoneAffix.db2", - "DBFilesClient\\LFGDungeonExpansion.db2", - "DBFilesClient\\LFGDungeonGroup.db2", - "DBFilesClient\\LFGDungeons.db2", - "DBFilesClient\\LFGRoleRequirement.db2", - "DBFilesClient\\LanguageWords.db2", - "DBFilesClient\\Languages.db2", - "DBFilesClient\\LfgDungeonsGroupingMap.db2", - "DBFilesClient\\Light.db2", - "DBFilesClient\\LightData.db2", - "DBFilesClient\\LightParams.db2", - "DBFilesClient\\LightSkybox.db2", - "DBFilesClient\\Lightning.db2", - "DBFilesClient\\LiquidMaterial.db2", - "DBFilesClient\\LiquidObject.db2", - "DBFilesClient\\LiquidType.db2", - "DBFilesClient\\LoadingScreenTaxiSplines.db2", - "DBFilesClient\\LoadingScreens.db2", - "DBFilesClient\\Locale.db2", - "DBFilesClient\\Location.db2", - "DBFilesClient\\Lock.db2", - "DBFilesClient\\LockType.db2", - "DBFilesClient\\LookAtController.db2", - "DBFilesClient\\MailTemplate.db2", - "DBFilesClient\\ManagedWorldState.db2", - "DBFilesClient\\ManagedWorldStateBuff.db2", - "DBFilesClient\\ManagedWorldStateInput.db2", - "DBFilesClient\\ManifestInterfaceActionIcon.db2", - "DBFilesClient\\ManifestInterfaceData.db2", - "DBFilesClient\\ManifestInterfaceItemIcon.db2", - "DBFilesClient\\ManifestInterfaceTOCData.db2", - "DBFilesClient\\ManifestMP3.db2", - "DBFilesClient\\Map.db2", - "DBFilesClient\\MapCelestialBody.db2", - "DBFilesClient\\MapChallengeMode.db2", - "DBFilesClient\\MapDifficulty.db2", - "DBFilesClient\\MapDifficultyXCondition.db2", - "DBFilesClient\\MapLoadingScreen.db2", - "DBFilesClient\\MarketingPromotionsXLocale.db2", - "DBFilesClient\\Material.db2", - "DBFilesClient\\MinorTalent.db2", - "DBFilesClient\\MissileTargeting.db2", - "DBFilesClient\\ModelAnimCloakDampening.db2", - "DBFilesClient\\ModelFileData.db2", - "DBFilesClient\\ModelRibbonQuality.db2", - "DBFilesClient\\ModifierTree.db2", - "DBFilesClient\\Mount.db2", - "DBFilesClient\\MountCapability.db2", - "DBFilesClient\\MountTypeXCapability.db2", - "DBFilesClient\\MountXDisplay.db2", - "DBFilesClient\\Movie.db2", - "DBFilesClient\\MovieFileData.db2", - "DBFilesClient\\MovieVariation.db2", - "DBFilesClient\\MultiStateProperties.db2", - "DBFilesClient\\MultiTransitionProperties.db2", - "DBFilesClient\\MythicPlusSeasonRewardLevels.db2", - "DBFilesClient\\NPCModelItemSlotDisplayInfo.db2", - "DBFilesClient\\NPCSounds.db2", - "DBFilesClient\\NameGen.db2", - "DBFilesClient\\NamesProfanity.db2", - "DBFilesClient\\NamesReserved.db2", - "DBFilesClient\\NamesReservedLocale.db2", - "DBFilesClient\\NumTalentsAtLevel.db2", - "DBFilesClient\\ObjectEffect.db2", - "DBFilesClient\\ObjectEffectModifier.db2", - "DBFilesClient\\ObjectEffectPackageElem.db2", - "DBFilesClient\\Occluder.db2", - "DBFilesClient\\OccluderLocation.db2", - "DBFilesClient\\OccluderNode.db2", - "DBFilesClient\\OutlineEffect.db2", - "DBFilesClient\\OverrideSpellData.db2", - "DBFilesClient\\PVPBracketTypes.db2", - "DBFilesClient\\PVPDifficulty.db2", - "DBFilesClient\\PVPItem.db2", - "DBFilesClient\\PageTextMaterial.db2", - "DBFilesClient\\PaperDollItemFrame.db2", - "DBFilesClient\\ParagonReputation.db2", - "DBFilesClient\\ParticleColor.db2", - "DBFilesClient\\ParticulateSound.db2", - "DBFilesClient\\Path.db2", - "DBFilesClient\\PathNode.db2", - "DBFilesClient\\PathNodeProperty.db2", - "DBFilesClient\\PathProperty.db2", - "DBFilesClient\\Phase.db2", - "DBFilesClient\\PhaseShiftZoneSounds.db2", - "DBFilesClient\\PhaseXPhaseGroup.db2", - "DBFilesClient\\PlayerCondition.db2", - "DBFilesClient\\Positioner.db2", - "DBFilesClient\\PositionerState.db2", - "DBFilesClient\\PositionerStateEntry.db2", - "DBFilesClient\\PowerDisplay.db2", - "DBFilesClient\\PowerType.db2", - "DBFilesClient\\PrestigeLevelInfo.db2", - "DBFilesClient\\PvpScalingEffect.db2", - "DBFilesClient\\PvpScalingEffectType.db2", - "DBFilesClient\\PvpTalent.db2", - "DBFilesClient\\PvpTalentCategory.db2", - "DBFilesClient\\PvpTalentSlotUnlock.db2", - "DBFilesClient\\PvpTier.db2", - "DBFilesClient\\QuestFactionReward.db2", - "DBFilesClient\\QuestFeedbackEffect.db2", - "DBFilesClient\\QuestInfo.db2", - "DBFilesClient\\QuestLine.db2", - "DBFilesClient\\QuestLineXQuest.db2", - "DBFilesClient\\QuestMoneyReward.db2", - "DBFilesClient\\QuestObjective.db2", - "DBFilesClient\\QuestPOIBlob.db2", - "DBFilesClient\\QuestPOIPoint.db2", - "DBFilesClient\\QuestPackageItem.db2", - "DBFilesClient\\QuestSort.db2", - "DBFilesClient\\QuestV2.db2", - "DBFilesClient\\QuestV2CliTask.db2", - "DBFilesClient\\QuestXGroupActivity.db2", - "DBFilesClient\\QuestXP.db2", - "DBFilesClient\\RandPropPoints.db2", - "DBFilesClient\\RelicSlotTierRequirement.db2", - "DBFilesClient\\RelicTalent.db2", - "DBFilesClient\\ResearchBranch.db2", - "DBFilesClient\\ResearchField.db2", - "DBFilesClient\\ResearchProject.db2", - "DBFilesClient\\ResearchSite.db2", - "DBFilesClient\\Resistances.db2", - "DBFilesClient\\RewardPack.db2", - "DBFilesClient\\RewardPackXCurrencyType.db2", - "DBFilesClient\\RewardPackXItem.db2", - "DBFilesClient\\RibbonQuality.db2", - "DBFilesClient\\RulesetItemUpgrade.db2", - "DBFilesClient\\SDReplacementModel.db2", - "DBFilesClient\\ScalingStatDistribution.db2", - "DBFilesClient\\Scenario.db2", - "DBFilesClient\\ScenarioEventEntry.db2", - "DBFilesClient\\ScenarioStep.db2", - "DBFilesClient\\SceneScript.db2", - "DBFilesClient\\SceneScriptGlobalText.db2", - "DBFilesClient\\SceneScriptPackage.db2", - "DBFilesClient\\SceneScriptPackageMember.db2", - "DBFilesClient\\SceneScriptText.db2", - "DBFilesClient\\ScheduledInterval.db2", - "DBFilesClient\\ScheduledWorldState.db2", - "DBFilesClient\\ScheduledWorldStateGroup.db2", - "DBFilesClient\\ScheduledWorldStateXUniqCat.db2", - "DBFilesClient\\ScreenEffect.db2", - "DBFilesClient\\ScreenLocation.db2", - "DBFilesClient\\SeamlessSite.db2", - "DBFilesClient\\ServerMessages.db2", - "DBFilesClient\\ShadowyEffect.db2", - "DBFilesClient\\SiegeableProperties.db2", - "DBFilesClient\\SkillLine.db2", - "DBFilesClient\\SkillLineAbility.db2", - "DBFilesClient\\SkillRaceClassInfo.db2", - "DBFilesClient\\SoundAmbience.db2", - "DBFilesClient\\SoundAmbienceFlavor.db2", - "DBFilesClient\\SoundBus.db2", - "DBFilesClient\\SoundBusOverride.db2", - "DBFilesClient\\SoundEmitterPillPoints.db2", - "DBFilesClient\\SoundEmitters.db2", - "DBFilesClient\\SoundEnvelope.db2", - "DBFilesClient\\SoundFilter.db2", - "DBFilesClient\\SoundFilterElem.db2", - "DBFilesClient\\SoundKit.db2", - "DBFilesClient\\SoundKitAdvanced.db2", - "DBFilesClient\\SoundKitChild.db2", - "DBFilesClient\\SoundKitEntry.db2", - "DBFilesClient\\SoundKitFallback.db2", - "DBFilesClient\\SoundKitName.db2", - "DBFilesClient\\SoundOverride.db2", - "DBFilesClient\\SoundProviderPreferences.db2", - "DBFilesClient\\SourceInfo.db2", - "DBFilesClient\\SpamMessages.db2", - "DBFilesClient\\SpecSetMember.db2", - "DBFilesClient\\SpecializationSpells.db2", - "DBFilesClient\\SpecializationSpellsDisplay.db2", - "DBFilesClient\\Spell.db2", - "DBFilesClient\\SpellActionBarPref.db2", - "DBFilesClient\\SpellActivationOverlay.db2", - "DBFilesClient\\SpellAuraOptions.db2", - "DBFilesClient\\SpellAuraRestrictions.db2", - "DBFilesClient\\SpellAuraVisXChrSpec.db2", - "DBFilesClient\\SpellAuraVisibility.db2", - "DBFilesClient\\SpellCastTimes.db2", - "DBFilesClient\\SpellCastingRequirements.db2", - "DBFilesClient\\SpellCategories.db2", - "DBFilesClient\\SpellCategory.db2", - "DBFilesClient\\SpellChainEffects.db2", - "DBFilesClient\\SpellClassOptions.db2", - "DBFilesClient\\SpellCooldowns.db2", - "DBFilesClient\\SpellDescriptionVariables.db2", - "DBFilesClient\\SpellDispelType.db2", - "DBFilesClient\\SpellDuration.db2", - "DBFilesClient\\SpellEffect.db2", - "DBFilesClient\\SpellEffectAutoDescription.db2", - "DBFilesClient\\SpellEffectEmission.db2", - "DBFilesClient\\SpellEquippedItems.db2", - "DBFilesClient\\SpellFlyout.db2", - "DBFilesClient\\SpellFlyoutItem.db2", - "DBFilesClient\\SpellFocusObject.db2", - "DBFilesClient\\SpellInterrupts.db2", - "DBFilesClient\\SpellItemEnchantment.db2", - "DBFilesClient\\SpellItemEnchantmentCondition.db2", - "DBFilesClient\\SpellKeyboundOverride.db2", - "DBFilesClient\\SpellLabel.db2", - "DBFilesClient\\SpellLearnSpell.db2", - "DBFilesClient\\SpellLevels.db2", - "DBFilesClient\\SpellMechanic.db2", - "DBFilesClient\\SpellMisc.db2", - "DBFilesClient\\SpellMissile.db2", - "DBFilesClient\\SpellMissileMotion.db2", - "DBFilesClient\\SpellName.db2", - "DBFilesClient\\SpellPower.db2", - "DBFilesClient\\SpellPowerDifficulty.db2", - "DBFilesClient\\SpellProceduralEffect.db2", - "DBFilesClient\\SpellProcsPerMinute.db2", - "DBFilesClient\\SpellProcsPerMinuteMod.db2", - "DBFilesClient\\SpellRadius.db2", - "DBFilesClient\\SpellRange.db2", - "DBFilesClient\\SpellReagents.db2", - "DBFilesClient\\SpellReagentsCurrency.db2", - "DBFilesClient\\SpellScaling.db2", - "DBFilesClient\\SpellShapeshift.db2", - "DBFilesClient\\SpellShapeshiftForm.db2", - "DBFilesClient\\SpellSpecialUnitEffect.db2", - "DBFilesClient\\SpellTargetRestrictions.db2", - "DBFilesClient\\SpellTotems.db2", - "DBFilesClient\\SpellVisual.db2", - "DBFilesClient\\SpellVisualAnim.db2", - "DBFilesClient\\SpellVisualColorEffect.db2", - "DBFilesClient\\SpellVisualEffectName.db2", - "DBFilesClient\\SpellVisualEvent.db2", - "DBFilesClient\\SpellVisualKit.db2", - "DBFilesClient\\SpellVisualKitAreaModel.db2", - "DBFilesClient\\SpellVisualKitEffect.db2", - "DBFilesClient\\SpellVisualKitModelAttach.db2", - "DBFilesClient\\SpellVisualMissile.db2", - "DBFilesClient\\SpellXDescriptionVariables.db2", - "DBFilesClient\\SpellXSpellVisual.db2", - "DBFilesClient\\StartupFiles.db2", - "DBFilesClient\\Startup_Strings.db2", - "DBFilesClient\\Stationery.db2", - "DBFilesClient\\SummonProperties.db2", - "DBFilesClient\\TactKey.db2", - "DBFilesClient\\TactKeyLookup.db2", - "DBFilesClient\\Talent.db2", - "DBFilesClient\\TaxiNodes.db2", - "DBFilesClient\\TaxiPath.db2", - "DBFilesClient\\TaxiPathNode.db2", - "DBFilesClient\\TerrainMaterial.db2", - "DBFilesClient\\TerrainType.db2", - "DBFilesClient\\TerrainTypeSounds.db2", - "DBFilesClient\\TextureBlendSet.db2", - "DBFilesClient\\TextureFileData.db2", - "DBFilesClient\\TotemCategory.db2", - "DBFilesClient\\Toy.db2", - "DBFilesClient\\TradeSkillCategory.db2", - "DBFilesClient\\TradeSkillItem.db2", - "DBFilesClient\\TransformMatrix.db2", - "DBFilesClient\\TransmogHoliday.db2", - "DBFilesClient\\TransmogSet.db2", - "DBFilesClient\\TransmogSetGroup.db2", - "DBFilesClient\\TransmogSetItem.db2", - "DBFilesClient\\TransportAnimation.db2", - "DBFilesClient\\TransportPhysics.db2", - "DBFilesClient\\TransportRotation.db2", - "DBFilesClient\\Trophy.db2", - "DBFilesClient\\UIExpansionDisplayInfo.db2", - "DBFilesClient\\UIExpansionDisplayInfoIcon.db2", - "DBFilesClient\\UiCamFbackTransmogChrRace.db2", - "DBFilesClient\\UiCamFbackTransmogWeapon.db2", - "DBFilesClient\\UiCamera.db2", - "DBFilesClient\\UiCameraType.db2", - "DBFilesClient\\UiCanvas.db2", - "DBFilesClient\\UiMap.db2", - "DBFilesClient\\UiMapArt.db2", - "DBFilesClient\\UiMapArtStyleLayer.db2", - "DBFilesClient\\UiMapArtTile.db2", - "DBFilesClient\\UiMapAssignment.db2", - "DBFilesClient\\UiMapFogOfWar.db2", - "DBFilesClient\\UiMapFogOfWarVisualization.db2", - "DBFilesClient\\UiMapGroupMember.db2", - "DBFilesClient\\UiMapLink.db2", - "DBFilesClient\\UiMapXMapArt.db2", - "DBFilesClient\\UiModelScene.db2", - "DBFilesClient\\UiModelSceneActor.db2", - "DBFilesClient\\UiModelSceneActorDisplay.db2", - "DBFilesClient\\UiModelSceneCamera.db2", - "DBFilesClient\\UiPartyPose.db2", - "DBFilesClient\\UiTextureAtlas.db2", - "DBFilesClient\\UiTextureAtlasElement.db2", - "DBFilesClient\\UiTextureAtlasMember.db2", - "DBFilesClient\\UiTextureKit.db2", - "DBFilesClient\\UiWidget.db2", - "DBFilesClient\\UiWidgetConstantSource.db2", - "DBFilesClient\\UiWidgetDataSource.db2", - "DBFilesClient\\UiWidgetStringSource.db2", - "DBFilesClient\\UiWidgetVisualization.db2", - "DBFilesClient\\UnitBlood.db2", - "DBFilesClient\\UnitBloodLevels.db2", - "DBFilesClient\\UnitCondition.db2", - "DBFilesClient\\UnitPowerBar.db2", - "DBFilesClient\\Vehicle.db2", - "DBFilesClient\\VehicleSeat.db2", - "DBFilesClient\\VehicleUIIndSeat.db2", - "DBFilesClient\\VehicleUIIndicator.db2", - "DBFilesClient\\Vignette.db2", - "DBFilesClient\\VirtualAttachment.db2", - "DBFilesClient\\VirtualAttachmentCustomization.db2", - "DBFilesClient\\VocalUISounds.db2", - "DBFilesClient\\WMOAreaTable.db2", - "DBFilesClient\\WMOMinimapTexture.db2", - "DBFilesClient\\WbAccessControlList.db2", - "DBFilesClient\\WbCertWhitelist.db2", - "DBFilesClient\\WeaponImpactSounds.db2", - "DBFilesClient\\WeaponSwingSounds2.db2", - "DBFilesClient\\WeaponTrail.db2", - "DBFilesClient\\WeaponTrailModelDef.db2", - "DBFilesClient\\WeaponTrailParam.db2", - "DBFilesClient\\Weather.db2", - "DBFilesClient\\WeatherXParticulate.db2", - "DBFilesClient\\WindSettings.db2", - "DBFilesClient\\WorldBossLockout.db2", - "DBFilesClient\\WorldChunkSounds.db2", - "DBFilesClient\\WorldEffect.db2", - "DBFilesClient\\WorldElapsedTimer.db2", - "DBFilesClient\\WorldMapOverlay.db2", - "DBFilesClient\\WorldMapOverlayTile.db2", - "DBFilesClient\\WorldSafeLocs.db2", - "DBFilesClient\\WorldStateExpression.db2", - "DBFilesClient\\WorldStateUI.db2", - "DBFilesClient\\WorldStateZoneSounds.db2", - "DBFilesClient\\World_PVP_Area.db2", - "DBFilesClient\\ZoneIntroMusicTable.db2", - "DBFilesClient\\ZoneLight.db2", - "DBFilesClient\\ZoneLightPoint.db2", - "DBFilesClient\\ZoneMusic.db2", - "DBFilesClient\\ZoneStory.db2", - nullptr // terminator + uint32 FileDataId; + char const* Name; +}; + +DB2FileInfo const DBFilesClientList[] = +{ + { 1260179, "Achievement.db2" }, + { 1324299, "Achievement_Category.db2" }, + { 1115949, "AdventureJournal.db2" }, + { 1267070, "AdventureMapPOI.db2" }, + { 1710672, "AlliedRace.db2" }, + { 1720145, "AlliedRaceRacialAbility.db2" }, + { 1304323, "AnimKit.db2" }, + { 1375433, "AnimKitBoneSet.db2" }, + { 1266937, "AnimKitBoneSetAlias.db2" }, + { 1300872, "AnimKitConfig.db2" }, + { 1300873, "AnimKitConfigBoneSet.db2" }, + { 1266540, "AnimKitPriority.db2" }, + { 1559807, "AnimKitReplacement.db2" }, + { 1304324, "AnimKitSegment.db2" }, + { 1301100, "AnimReplacement.db2" }, + { 1284817, "AnimReplacementSet.db2" }, + { 1375431, "AnimationData.db2" }, + { 2140223, "AoiBox.db2" }, + { 2123730, "AreaConditionalData.db2" }, + { 1537162, "AreaFarClipOverride.db2" }, + { 1093406, "AreaGroupMember.db2" }, + { 1000630, "AreaPOI.db2" }, + { 1000631, "AreaPOIState.db2" }, + { 1353545, "AreaTable.db2" }, + { 1354401, "AreaTrigger.db2" }, + { 1352378, "AreaTriggerActionSet.db2" }, + { 1332554, "AreaTriggerBox.db2" }, + { 1937227, "AreaTriggerCreateProperties.db2" }, + { 1121943, "AreaTriggerCylinder.db2" }, + { 1315630, "AreaTriggerSphere.db2" }, + { 1284818, "ArmorLocation.db2" }, + { 1007934, "Artifact.db2" }, + { 1116407, "ArtifactAppearance.db2" }, + { 1116408, "ArtifactAppearanceSet.db2" }, + { 1376210, "ArtifactCategory.db2" }, + { 2029780, "ArtifactItemToTransmog.db2" }, + { 1007937, "ArtifactPower.db2" }, + { 1133731, "ArtifactPowerLink.db2" }, + { 1597467, "ArtifactPowerPicker.db2" }, + { 1261405, "ArtifactPowerRank.db2" }, + { 1036203, "ArtifactQuestXP.db2" }, + { 1600114, "ArtifactTier.db2" }, + { 1094540, "ArtifactUnlock.db2" }, + { 1237439, "AuctionHouse.db2" }, + { 1846046, "AzeriteEmpoweredItem.db2" }, + { 1846048, "AzeriteItem.db2" }, + { 1915395, "AzeriteItemMilestonePower.db2" }, + { 1846044, "AzeritePower.db2" }, + { 1846040, "AzeritePowerSetMember.db2" }, + { 1846043, "AzeriteTierUnlock.db2" }, + { 2446322, "AzeriteTierUnlockSet.db2" }, + { 2564314, "AzeriteUnlockMapping.db2" }, + { 1284819, "BankBagSlotPrices.db2" }, + { 1373459, "BannedAddons.db2" }, + { 1237437, "BarberShopStyle.db2" }, + { 2499852, "BarrageEffect.db2" }, + { 841610, "BattlePetAbility.db2" }, + { 801575, "BattlePetAbilityEffect.db2" }, + { 801576, "BattlePetAbilityState.db2" }, + { 801577, "BattlePetAbilityTurn.db2" }, + { 801578, "BattlePetBreedQuality.db2" }, + { 801579, "BattlePetBreedState.db2" }, + { 1802988, "BattlePetDisplayOverride.db2" }, + { 801580, "BattlePetEffectProperties.db2" }, + { 841648, "BattlePetNPCTeamMember.db2" }, + { 841622, "BattlePetSpecies.db2" }, + { 801581, "BattlePetSpeciesState.db2" }, + { 801582, "BattlePetSpeciesXAbility.db2" }, + { 801583, "BattlePetState.db2" }, + { 801584, "BattlePetVisual.db2" }, + { 1360265, "BattlemasterList.db2" }, + { 1525607, "BeamEffect.db2" }, + { 1467254, "BoneWindModifierModel.db2" }, + { 1416756, "BoneWindModifiers.db2" }, + { 1983274, "BonusRoll.db2" }, + { 1367866, "Bounty.db2" }, + { 1367865, "BountySet.db2" }, + { 841604, "BroadcastText.db2" }, + { 2166900, "BroadcastTextDuration.db2" }, + { 1117695, "CameraEffect.db2" }, + { 1117696, "CameraEffectEntry.db2" }, + { 1343308, "CameraMode.db2" }, + { 2031607, "Campaign.db2" }, + { 2031611, "CampaignXCondition.db2" }, + { 2036722, "CampaignXQuestLine.db2" }, + { 1283018, "CastableRaidBuffs.db2" }, + { 1592470, "CelestialBody.db2" }, + { 1068162, "Cfg_Categories.db2" }, + { 1080949, "Cfg_Configs.db2" }, + { 1082876, "Cfg_Regions.db2" }, + { 1343386, "CharBaseInfo.db2" }, + { 1375798, "CharBaseSection.db2" }, + { 1360262, "CharComponentTextureLayouts.db2" }, + { 1360263, "CharComponentTextureSections.db2" }, + { 1256914, "CharHairGeosets.db2" }, + { 2388725, "CharSectionCondition.db2" }, + { 1365366, "CharSections.db2" }, + { 972425, "CharShipment.db2" }, + { 972405, "CharShipmentContainer.db2" }, + { 1237591, "CharStartOutfit.db2" }, + { 1349054, "CharTitles.db2" }, + { 1028733, "CharacterFaceBoneSet.db2" }, + { 1369752, "CharacterFacialHairStyles.db2" }, + { 1344281, "CharacterLoadout.db2" }, + { 1302846, "CharacterLoadoutItem.db2" }, + { 1815417, "CharacterServiceInfo.db2" }, + { 1345278, "ChatChannels.db2" }, + { 1117084, "ChatProfanity.db2" }, + { 1306188, "ChrClassRaceSex.db2" }, + { 1267497, "ChrClassTitle.db2" }, + { 1316515, "ChrClassUIDisplay.db2" }, + { 1267498, "ChrClassVillain.db2" }, + { 1361031, "ChrClasses.db2" }, + { 1121420, "ChrClassesXPowerTypes.db2" }, + { 1611874, "ChrCustomization.db2" }, + { 1305311, "ChrRaces.db2" }, + { 1343390, "ChrSpecialization.db2" }, + { 984529, "ChrUpgradeBucket.db2" }, + { 984528, "ChrUpgradeBucketSpell.db2" }, + { 984530, "ChrUpgradeTier.db2" }, + { 1294214, "CinematicCamera.db2" }, + { 1134583, "CinematicSequences.db2" }, + { 1939843, "ClientSceneEffect.db2" }, + { 1465903, "CloakDampening.db2" }, + { 2175218, "CloneEffect.db2" }, + { 1120958, "CombatCondition.db2" }, + { 1664251, "CommentatorStartLocation.db2" }, + { 1661584, "CommentatorTrackedCooldown.db2" }, + { 2098645, "CommunityIcon.db2" }, + { 1349053, "ComponentModelFileData.db2" }, + { 1278239, "ComponentTextureFileData.db2" }, + { 1709409, "ConfigurationWarning.db2" }, + { 1962930, "ContentTuning.db2" }, + { 1587153, "Contribution.db2" }, + { 2143633, "ContributionStyle.db2" }, + { 2143634, "ContributionStyleContainer.db2" }, + { 1260801, "ConversationLine.db2" }, + { 841631, "Creature.db2" }, + { 879282, "CreatureDifficulty.db2" }, + { 1146692, "CreatureDispXUiCamera.db2" }, + { 1108759, "CreatureDisplayInfo.db2" }, + { 1332686, "CreatureDisplayInfoCond.db2" }, + { 1586882, "CreatureDisplayInfoEvt.db2" }, + { 1264997, "CreatureDisplayInfoExtra.db2" }, + { 1720141, "CreatureDisplayInfoGeosetData.db2" }, + { 1146698, "CreatureDisplayInfoTrn.db2" }, + { 1351351, "CreatureFamily.db2" }, + { 1131322, "CreatureImmunities.db2" }, + { 1365368, "CreatureModelData.db2" }, + { 1125666, "CreatureMovementInfo.db2" }, + { 1344466, "CreatureSoundData.db2" }, + { 1131315, "CreatureType.db2" }, + { 1587158, "CreatureXContribution.db2" }, + { 1864302, "CreatureXDisplayInfo.db2" }, + { 1263817, "Criteria.db2" }, + { 1263818, "CriteriaTree.db2" }, + { 1345969, "CriteriaTreeXEffect.db2" }, + { 1125667, "CurrencyCategory.db2" }, + { 1934603, "CurrencyContainer.db2" }, + { 1095531, "CurrencyTypes.db2" }, + { 892585, "Curve.db2" }, + { 892586, "CurvePoint.db2" }, + { 1279415, "DeathThudLookups.db2" }, + { 1278176, "DecalProperties.db2" }, + { 1279100, "DeclinedWord.db2" }, + { 1279099, "DeclinedWordCases.db2" }, + { 1122116, "DestructibleModelData.db2" }, + { 922722, "DeviceBlacklist.db2" }, + { 925422, "DeviceDefaultSettings.db2" }, + { 1352127, "Difficulty.db2" }, + { 1304325, "DissolveEffect.db2" }, + { 922720, "DriverBlacklist.db2" }, + { 1347279, "DungeonEncounter.db2" }, + { 1283019, "DurabilityCosts.db2" }, + { 1130268, "DurabilityQuality.db2" }, + { 1387381, "EdgeGlowEffect.db2" }, + { 1343602, "Emotes.db2" }, + { 1347273, "EmotesText.db2" }, + { 1283024, "EmotesTextData.db2" }, + { 1286524, "EmotesTextSound.db2" }, + { 1278398, "EnvironmentalDamage.db2" }, + { 1343313, "Exhaustion.db2" }, + { 1937326, "ExpectedStat.db2" }, + { 1969773, "ExpectedStatMod.db2" }, + { 1361972, "Faction.db2" }, + { 1343595, "FactionGroup.db2" }, + { 1361579, "FactionTemplate.db2" }, + { 1308056, "FootprintTextures.db2" }, + { 1267647, "FootstepTerrainLookup.db2" }, + { 1237638, "FriendshipRepReaction.db2" }, + { 1237639, "FriendshipReputation.db2" }, + { 1348282, "FullScreenEffect.db2" }, + { 1283025, "GMSurveyAnswers.db2" }, + { 1278177, "GMSurveyCurrentSurvey.db2" }, + { 1278178, "GMSurveyQuestions.db2" }, + { 1283020, "GMSurveySurveys.db2" }, + { 1266737, "GameObjectArtKit.db2" }, + { 1302847, "GameObjectDiffAnimMap.db2" }, + { 1266277, "GameObjectDisplayInfo.db2" }, + { 1345272, "GameObjectDisplayInfoXSoundKit.db2" }, + { 841620, "GameObjects.db2" }, + { 1368021, "GameTips.db2" }, + { 966238, "GarrAbility.db2" }, + { 1020248, "GarrAbilityCategory.db2" }, + { 966241, "GarrAbilityEffect.db2" }, + { 929747, "GarrBuilding.db2" }, + { 943937, "GarrBuildingDoodadSet.db2" }, + { 983298, "GarrBuildingPlotInst.db2" }, + { 981570, "GarrClassSpec.db2" }, + { 1380674, "GarrClassSpecPlayerCond.db2" }, + { 975304, "GarrEncounter.db2" }, + { 1354772, "GarrEncounterSetXEncounter.db2" }, + { 967961, "GarrEncounterXMechanic.db2" }, + { 981569, "GarrFollItemSetMember.db2" }, + { 1345970, "GarrFollSupportSpell.db2" }, + { 949906, "GarrFollower.db2" }, + { 970979, "GarrFollowerLevelXP.db2" }, + { 1027793, "GarrFollowerQuality.db2" }, + { 1361029, "GarrFollowerSetXFollower.db2" }, + { 1118784, "GarrFollowerType.db2" }, + { 1412636, "GarrFollowerUICreature.db2" }, + { 968468, "GarrFollowerXAbility.db2" }, + { 1572314, "GarrItemLevelUpgradeData.db2" }, + { 967963, "GarrMechanic.db2" }, + { 1391531, "GarrMechanicSetXMechanic.db2" }, + { 967964, "GarrMechanicType.db2" }, + { 967962, "GarrMission.db2" }, + { 1125220, "GarrMissionTexture.db2" }, + { 984174, "GarrMissionType.db2" }, + { 967960, "GarrMissionXEncounter.db2" }, + { 1359096, "GarrMissionXFollower.db2" }, + { 1138458, "GarrMssnBonusAbility.db2" }, + { 937634, "GarrPlot.db2" }, + { 929743, "GarrPlotBuilding.db2" }, + { 929742, "GarrPlotInstance.db2" }, + { 937635, "GarrPlotUICategory.db2" }, + { 939295, "GarrSiteLevel.db2" }, + { 940404, "GarrSiteLevelPlotInst.db2" }, + { 937647, "GarrSpecialization.db2" }, + { 1416758, "GarrString.db2" }, + { 1361032, "GarrTalent.db2" }, + { 1361030, "GarrTalentTree.db2" }, + { 1333161, "GarrType.db2" }, + { 976037, "GarrUiAnimClassInfo.db2" }, + { 976035, "GarrUiAnimRaceInfo.db2" }, + { 1343604, "GemProperties.db2" }, + { 1394440, "GlobalStrings.db2" }, + { 1270147, "GlyphBindableSpell.db2" }, + { 948546, "GlyphExclusiveCategory.db2" }, + { 1345274, "GlyphProperties.db2" }, + { 948496, "GlyphRequiredSpec.db2" }, + { 2433582, "GradientEffect.db2" }, + { 1308057, "GroundEffectDoodad.db2" }, + { 1308499, "GroundEffectTexture.db2" }, + { 974813, "GroupFinderActivity.db2" }, + { 974814, "GroupFinderActivityGrp.db2" }, + { 974812, "GroupFinderCategory.db2" }, + { 1286526, "GuildColorBackground.db2" }, + { 1286527, "GuildColorBorder.db2" }, + { 1286525, "GuildColorEmblem.db2" }, + { 2734754, "GuildEmblem.db2" }, + { 1135238, "GuildPerkSpells.db2" }, + { 1097696, "Heirloom.db2" }, + { 1348283, "HelmetAnimScaling.db2" }, + { 2821752, "HelmetGeosetData.db2" }, + { 996358, "HighlightColor.db2" }, + { 996360, "HolidayDescriptions.db2" }, + { 996359, "HolidayNames.db2" }, + { 996357, "Holidays.db2" }, + { 1995523, "Hotfixes.db2" }, + { 1121229, "ImportPriceArmor.db2" }, + { 1121228, "ImportPriceQuality.db2" }, + { 1121227, "ImportPriceShield.db2" }, + { 1121230, "ImportPriceWeapon.db2" }, + { 1336651, "InvasionClientData.db2" }, + { 841626, "Item.db2" }, + { 982462, "ItemAppearance.db2" }, + { 1248126, "ItemAppearanceXUiCamera.db2" }, + { 1283021, "ItemArmorQuality.db2" }, + { 1277741, "ItemArmorShield.db2" }, + { 1283022, "ItemArmorTotal.db2" }, + { 1278179, "ItemBagFamily.db2" }, + { 959070, "ItemBonus.db2" }, + { 1320358, "ItemBonusListLevelDelta.db2" }, + { 987134, "ItemBonusTreeNode.db2" }, + { 1247926, "ItemChildEquipment.db2" }, + { 1140189, "ItemClass.db2" }, + { 1405665, "ItemContextPickerEntry.db2" }, + { 801670, "ItemCurrencyCost.db2" }, + { 1277740, "ItemDamageAmmo.db2" }, + { 1277743, "ItemDamageOneHand.db2" }, + { 1277739, "ItemDamageOneHandCaster.db2" }, + { 1277738, "ItemDamageTwoHand.db2" }, + { 1277742, "ItemDamageTwoHandCaster.db2" }, + { 1134087, "ItemDisenchantLoot.db2" }, + { 1266429, "ItemDisplayInfo.db2" }, + { 1280614, "ItemDisplayInfoMaterialRes.db2" }, + { 1146690, "ItemDisplayXUiCamera.db2" }, + { 969941, "ItemEffect.db2" }, + { 801681, "ItemExtendedCost.db2" }, + { 2358574, "ItemFallbackVisual.db2" }, + { 1283023, "ItemGroupSounds.db2" }, + { 1588911, "ItemLevelSelector.db2" }, + { 1624937, "ItemLevelSelectorQuality.db2" }, + { 1624933, "ItemLevelSelectorQualitySet.db2" }, + { 1237440, "ItemLimitCategory.db2" }, + { 1378590, "ItemLimitCategoryCondition.db2" }, + { 982457, "ItemModifiedAppearance.db2" }, + { 1278399, "ItemModifiedAppearanceExtra.db2" }, + { 1332559, "ItemNameDescription.db2" }, + { 1302240, "ItemPetFood.db2" }, + { 1121231, "ItemPriceBase.db2" }, + { 1270315, "ItemRangedDisplayInfo.db2" }, + { 1273408, "ItemSearchName.db2" }, + { 1343609, "ItemSet.db2" }, + { 1314689, "ItemSetSpell.db2" }, + { 1572924, "ItemSparse.db2" }, + { 1135120, "ItemSpec.db2" }, + { 1134576, "ItemSpecOverride.db2" }, + { 1261604, "ItemSubClass.db2" }, + { 1302852, "ItemSubClassMask.db2" }, + { 801687, "ItemUpgrade.db2" }, + { 1343605, "ItemVisuals.db2" }, + { 987133, "ItemXBonusTree.db2" }, + { 1240336, "JournalEncounter.db2" }, + { 1301155, "JournalEncounterCreature.db2" }, + { 1344467, "JournalEncounterItem.db2" }, + { 1134413, "JournalEncounterSection.db2" }, + { 1121901, "JournalEncounterXDifficulty.db2" }, + { 1722928, "JournalEncounterXMapLoc.db2" }, + { 1237438, "JournalInstance.db2" }, + { 1277744, "JournalItemXDifficulty.db2" }, + { 1121900, "JournalSectionXDifficulty.db2" }, + { 1349056, "JournalTier.db2" }, + { 1285009, "JournalTierXInstance.db2" }, + { 801693, "Keychain.db2" }, + { 1344761, "KeystoneAffix.db2" }, + { 1343606, "LFGDungeonExpansion.db2" }, + { 1135058, "LFGDungeonGroup.db2" }, + { 1361033, "LFGDungeons.db2" }, + { 982805, "LFGRoleRequirement.db2" }, + { 984702, "LanguageWords.db2" }, + { 1135325, "Languages.db2" }, + { 1339818, "LfgDungeonsGroupingMap.db2" }, + { 1375579, "Light.db2" }, + { 1375580, "LightData.db2" }, + { 1334669, "LightParams.db2" }, + { 1308501, "LightSkybox.db2" }, + { 2003383, "Lightning.db2" }, + { 1132538, "LiquidMaterial.db2" }, + { 1308058, "LiquidObject.db2" }, + { 1371380, "LiquidType.db2" }, + { 2261065, "LiquidTypeXTexture.db2" }, + { 1302239, "LoadingScreenTaxiSplines.db2" }, + { 1266541, "LoadingScreens.db2" }, + { 801706, "Locale.db2" }, + { 801707, "Location.db2" }, + { 1343608, "Lock.db2" }, + { 1284823, "LockType.db2" }, + { 1098785, "LookAtController.db2" }, + { 1240344, "MailTemplate.db2" }, + { 1587159, "ManagedWorldState.db2" }, + { 1587155, "ManagedWorldStateBuff.db2" }, + { 1587151, "ManagedWorldStateInput.db2" }, + { 1375803, "ManifestInterfaceActionIcon.db2" }, + { 1375801, "ManifestInterfaceData.db2" }, + { 1375804, "ManifestInterfaceItemIcon.db2" }, + { 1267335, "ManifestInterfaceTOCData.db2" }, + { 1375802, "ManifestMP3.db2" }, + { 1349477, "Map.db2" }, + { 1597466, "MapCelestialBody.db2" }, + { 801709, "MapChallengeMode.db2" }, + { 1367868, "MapDifficulty.db2" }, + { 1375435, "MapDifficultyXCondition.db2" }, + { 1719707, "MapLoadingScreen.db2" }, + { 801710, "MarketingPromotionsXLocale.db2" }, + { 1294217, "Material.db2" }, + { 1347274, "MinorTalent.db2" }, + { 1710117, "MissileTargeting.db2" }, + { 1465904, "ModelAnimCloakDampening.db2" }, + { 1337833, "ModelFileData.db2" }, + { 1399953, "ModelRibbonQuality.db2" }, + { 1267645, "ModifierTree.db2" }, + { 921760, "Mount.db2" }, + { 1114709, "MountCapability.db2" }, + { 1114715, "MountTypeXCapability.db2" }, + { 1576117, "MountXDisplay.db2" }, + { 1332556, "Movie.db2" }, + { 1301154, "MovieFileData.db2" }, + { 1339819, "MovieVariation.db2" }, + { 1965592, "MultiStateProperties.db2" }, + { 1965589, "MultiTransitionProperties.db2" }, + { 2400282, "MythicPlusSeason.db2" }, + { 2123783, "MythicPlusSeasonRewardLevels.db2" }, + { 1340661, "NPCModelItemSlotDisplayInfo.db2" }, + { 1282621, "NPCSounds.db2" }, + { 1122117, "NameGen.db2" }, + { 1117086, "NamesProfanity.db2" }, + { 1117085, "NamesReserved.db2" }, + { 1117087, "NamesReservedLocale.db2" }, + { 1953326, "NumTalentsAtLevel.db2" }, + { 1090577, "ObjectEffect.db2" }, + { 1090575, "ObjectEffectModifier.db2" }, + { 1090578, "ObjectEffectPackageElem.db2" }, + { 2066958, "Occluder.db2" }, + { 2115224, "OccluderLocation.db2" }, + { 2066959, "OccluderNode.db2" }, + { 1279739, "OutlineEffect.db2" }, + { 1002186, "OverrideSpellData.db2" }, + { 1394275, "PVPBracketTypes.db2" }, + { 1339820, "PVPDifficulty.db2" }, + { 972287, "PVPItem.db2" }, + { 1271600, "PageTextMaterial.db2" }, + { 1252503, "PaperDollItemFrame.db2" }, + { 1581183, "ParagonReputation.db2" }, + { 1284820, "ParticleColor.db2" }, + { 2053913, "ParticulateSound.db2" }, + { 801732, "Path.db2" }, + { 2428705, "PathEdge.db2" }, + { 801733, "PathNode.db2" }, + { 801734, "PathNodeProperty.db2" }, + { 801735, "PathProperty.db2" }, + { 1348558, "Phase.db2" }, + { 1267336, "PhaseShiftZoneSounds.db2" }, + { 987581, "PhaseXPhaseGroup.db2" }, + { 1045411, "PlayerCondition.db2" }, + { 1251523, "Positioner.db2" }, + { 1251506, "PositionerState.db2" }, + { 1251533, "PositionerStateEntry.db2" }, + { 1332557, "PowerDisplay.db2" }, + { 1266022, "PowerType.db2" }, + { 1275869, "PrestigeLevelInfo.db2" }, + { 1591100, "PvpScalingEffect.db2" }, + { 1591098, "PvpScalingEffectType.db2" }, + { 2470695, "PvpSeasonRewardLevels.db2" }, + { 1302853, "PvpTalent.db2" }, + { 1891534, "PvpTalentCategory.db2" }, + { 1950197, "PvpTalentSlotUnlock.db2" }, + { 2066871, "PvpTier.db2" }, + { 1282622, "QuestFactionReward.db2" }, + { 1343388, "QuestFeedbackEffect.db2" }, + { 1120960, "QuestInfo.db2" }, + { 973430, "QuestLine.db2" }, + { 973441, "QuestLineXQuest.db2" }, + { 1139047, "QuestMoneyReward.db2" }, + { 1251960, "QuestObjective.db2" }, + { 1251882, "QuestPOIBlob.db2" }, + { 1251883, "QuestPOIPoint.db2" }, + { 801743, "QuestPackageItem.db2" }, + { 1134585, "QuestSort.db2" }, + { 1139443, "QuestV2.db2" }, + { 1028735, "QuestV2CliTask.db2" }, + { 1573634, "QuestXGroupActivity.db2" }, + { 1139378, "QuestXP.db2" }, + { 1310245, "RandPropPoints.db2" }, + { 1716803, "RelicSlotTierRequirement.db2" }, + { 1671256, "RelicTalent.db2" }, + { 1133729, "ResearchBranch.db2" }, + { 1133711, "ResearchField.db2" }, + { 1134090, "ResearchProject.db2" }, + { 1134091, "ResearchSite.db2" }, + { 1135072, "Resistances.db2" }, + { 1307156, "RewardPack.db2" }, + { 1307153, "RewardPackXCurrencyType.db2" }, + { 1307155, "RewardPackXItem.db2" }, + { 1398908, "RibbonQuality.db2" }, + { 801749, "RulesetItemUpgrade.db2" }, + { 1712172, "SDReplacementModel.db2" }, + { 1141728, "ScalingStatDistribution.db2" }, + { 1139062, "Scenario.db2" }, + { 1141065, "ScenarioEventEntry.db2" }, + { 1132761, "ScenarioStep.db2" }, + { 801754, "SceneScript.db2" }, + { 1758036, "SceneScriptGlobalText.db2" }, + { 801755, "SceneScriptPackage.db2" }, + { 801756, "SceneScriptPackageMember.db2" }, + { 1758037, "SceneScriptText.db2" }, + { 1327082, "ScheduledInterval.db2" }, + { 1327083, "ScheduledWorldState.db2" }, + { 1327084, "ScheduledWorldStateGroup.db2" }, + { 1388724, "ScheduledWorldStateXUniqCat.db2" }, + { 1302849, "ScreenEffect.db2" }, + { 1279416, "ScreenLocation.db2" }, + { 1328719, "SeamlessSite.db2" }, + { 1301141, "ServerMessages.db2" }, + { 1239844, "ShadowyEffect.db2" }, + { 1954391, "SiegeableProperties.db2" }, + { 1240935, "SkillLine.db2" }, + { 1266278, "SkillLineAbility.db2" }, + { 1240406, "SkillRaceClassInfo.db2" }, + { 1310628, "SoundAmbience.db2" }, + { 1267065, "SoundAmbienceFlavor.db2" }, + { 1310246, "SoundBus.db2" }, + { 1598732, "SoundBusOverride.db2" }, + { 1092317, "SoundEmitterPillPoints.db2" }, + { 1092316, "SoundEmitters.db2" }, + { 1693131, "SoundEnvelope.db2" }, + { 1271601, "SoundFilter.db2" }, + { 1267066, "SoundFilterElem.db2" }, + { 1237434, "SoundKit.db2" }, + { 1237436, "SoundKitAdvanced.db2" }, + { 1307289, "SoundKitChild.db2" }, + { 1237435, "SoundKitEntry.db2" }, + { 1307288, "SoundKitFallback.db2" }, + { 1665033, "SoundKitName.db2" }, + { 1266542, "SoundOverride.db2" }, + { 1279417, "SoundProviderPreferences.db2" }, + { 1313612, "SourceInfo.db2" }, + { 1117088, "SpamMessages.db2" }, + { 2057624, "SpecSetMember.db2" }, + { 1240335, "SpecializationSpells.db2" }, + { 2067238, "SpecializationSpellsDisplay.db2" }, + { 1140089, "Spell.db2" }, + { 1019373, "SpellActionBarPref.db2" }, + { 1261603, "SpellActivationOverlay.db2" }, + { 1139952, "SpellAuraOptions.db2" }, + { 981566, "SpellAuraRestrictions.db2" }, + { 1280615, "SpellAuraVisXChrSpec.db2" }, + { 1280616, "SpellAuraVisibility.db2" }, + { 1134089, "SpellCastTimes.db2" }, + { 1002166, "SpellCastingRequirements.db2" }, + { 1139939, "SpellCategories.db2" }, + { 1280619, "SpellCategory.db2" }, + { 1343310, "SpellChainEffects.db2" }, + { 979663, "SpellClassOptions.db2" }, + { 2428696, "SpellClutterAreaEffectCounts.db2" }, + { 2428707, "SpellClutterFrameRates.db2" }, + { 2428708, "SpellClutterImpactModelCounts.db2" }, + { 2428697, "SpellClutterKitDistances.db2" }, + { 2428733, "SpellClutterMissileDist.db2" }, + { 2428698, "SpellClutterWeaponTrailDist.db2" }, + { 1139924, "SpellCooldowns.db2" }, + { 1140004, "SpellDescriptionVariables.db2" }, + { 1137829, "SpellDispelType.db2" }, + { 1137828, "SpellDuration.db2" }, + { 1140088, "SpellEffect.db2" }, + { 1888495, "SpellEffectAutoDescription.db2" }, + { 1310248, "SpellEffectEmission.db2" }, + { 1140011, "SpellEquippedItems.db2" }, + { 1146819, "SpellFlyout.db2" }, + { 1134085, "SpellFlyoutItem.db2" }, + { 1280620, "SpellFocusObject.db2" }, + { 1139906, "SpellInterrupts.db2" }, + { 1362771, "SpellItemEnchantment.db2" }, + { 1121834, "SpellItemEnchantmentCondition.db2" }, + { 1127327, "SpellKeyboundOverride.db2" }, + { 1347275, "SpellLabel.db2" }, + { 1001907, "SpellLearnSpell.db2" }, + { 1140079, "SpellLevels.db2" }, + { 1014438, "SpellMechanic.db2" }, + { 1003144, "SpellMisc.db2" }, + { 897956, "SpellMissile.db2" }, + { 897955, "SpellMissileMotion.db2" }, + { 1990283, "SpellName.db2" }, + { 2618823, "SpellOverrideName.db2" }, + { 982806, "SpellPower.db2" }, + { 982804, "SpellPowerDifficulty.db2" }, + { 1140477, "SpellProceduralEffect.db2" }, + { 1133526, "SpellProcsPerMinute.db2" }, + { 1133525, "SpellProcsPerMinuteMod.db2" }, + { 1134584, "SpellRadius.db2" }, + { 1146820, "SpellRange.db2" }, + { 841946, "SpellReagents.db2" }, + { 1135239, "SpellReagentsCurrency.db2" }, + { 1139940, "SpellScaling.db2" }, + { 1139929, "SpellShapeshift.db2" }, + { 1280618, "SpellShapeshiftForm.db2" }, + { 1268903, "SpellSpecialUnitEffect.db2" }, + { 1139993, "SpellTargetRestrictions.db2" }, + { 1002162, "SpellTotems.db2" }, + { 897952, "SpellVisual.db2" }, + { 1140479, "SpellVisualAnim.db2" }, + { 1094006, "SpellVisualColorEffect.db2" }, + { 897948, "SpellVisualEffectName.db2" }, + { 1685317, "SpellVisualEvent.db2" }, + { 897949, "SpellVisualKit.db2" }, + { 897951, "SpellVisualKitAreaModel.db2" }, + { 1140480, "SpellVisualKitEffect.db2" }, + { 897953, "SpellVisualKitModelAttach.db2" }, + { 897954, "SpellVisualMissile.db2" }, + { 1724949, "SpellXDescriptionVariables.db2" }, + { 1101657, "SpellXSpellVisual.db2" }, + { 1604265, "StartupFiles.db2" }, + { 1375805, "Startup_Strings.db2" }, + { 1140758, "Stationery.db2" }, + { 1345276, "SummonProperties.db2" }, + { 1302850, "TactKey.db2" }, + { 1302851, "TactKeyLookup.db2" }, + { 1369062, "Talent.db2" }, + { 1068100, "TaxiNodes.db2" }, + { 1067802, "TaxiPath.db2" }, + { 1000437, "TaxiPathNode.db2" }, + { 1307290, "TerrainMaterial.db2" }, + { 1310249, "TerrainType.db2" }, + { 1284822, "TerrainTypeSounds.db2" }, + { 1328721, "TextureBlendSet.db2" }, + { 982459, "TextureFileData.db2" }, + { 1134586, "TotemCategory.db2" }, + { 988200, "Toy.db2" }, + { 1301101, "TradeSkillCategory.db2" }, + { 1329070, "TradeSkillItem.db2" }, + { 1338702, "TransformMatrix.db2" }, + { 2399695, "TransmogDefaultLevel.db2" }, + { 1589454, "TransmogHoliday.db2" }, + { 1376213, "TransmogSet.db2" }, + { 1576116, "TransmogSetGroup.db2" }, + { 1376212, "TransmogSetItem.db2" }, + { 1140686, "TransportAnimation.db2" }, + { 1121973, "TransportPhysics.db2" }, + { 1140687, "TransportRotation.db2" }, + { 975024, "Trophy.db2" }, + { 1729547, "UIExpansionDisplayInfo.db2" }, + { 1729546, "UIExpansionDisplayInfoIcon.db2" }, + { 1261406, "UiCamFbackTransmogChrRace.db2" }, + { 1261407, "UiCamFbackTransmogWeapon.db2" }, + { 1120287, "UiCamera.db2" }, + { 1120288, "UiCameraType.db2" }, + { 1989363, "UiCanvas.db2" }, + { 1957206, "UiMap.db2" }, + { 1957202, "UiMapArt.db2" }, + { 1957208, "UiMapArtStyleLayer.db2" }, + { 1957210, "UiMapArtTile.db2" }, + { 1957219, "UiMapAssignment.db2" }, + { 2006972, "UiMapFogOfWar.db2" }, + { 2006973, "UiMapFogOfWarVisualization.db2" }, + { 1957204, "UiMapGroupMember.db2" }, + { 2030690, "UiMapLink.db2" }, + { 1957217, "UiMapXMapArt.db2" }, + { 1548215, "UiModelScene.db2" }, + { 1548214, "UiModelSceneActor.db2" }, + { 1548216, "UiModelSceneActorDisplay.db2" }, + { 1548213, "UiModelSceneCamera.db2" }, + { 1993323, "UiPartyPose.db2" }, + { 897470, "UiTextureAtlas.db2" }, + { 1989276, "UiTextureAtlasElement.db2" }, + { 897532, "UiTextureAtlasMember.db2" }, + { 939159, "UiTextureKit.db2" }, + { 1983278, "UiWidget.db2" }, + { 1983639, "UiWidgetConstantSource.db2" }, + { 1983640, "UiWidgetDataSource.db2" }, + { 2322531, "UiWidgetMap.db2" }, + { 1983641, "UiWidgetStringSource.db2" }, + { 2740907, "UiWidgetVisTypeDataReq.db2" }, + { 1983276, "UiWidgetVisualization.db2" }, + { 1284821, "UnitBlood.db2" }, + { 1268904, "UnitBloodLevels.db2" }, + { 1120959, "UnitCondition.db2" }, + { 1237753, "UnitPowerBar.db2" }, + { 1368621, "Vehicle.db2" }, + { 1345447, "VehicleSeat.db2" }, + { 1279741, "VehicleUIIndSeat.db2" }, + { 1279740, "VehicleUIIndicator.db2" }, + { 892861, "Vignette.db2" }, + { 1634482, "VirtualAttachment.db2" }, + { 1634480, "VirtualAttachmentCustomization.db2" }, + { 1267067, "VocalUISounds.db2" }, + { 1355528, "WMOAreaTable.db2" }, + { 1323241, "WMOMinimapTexture.db2" }, + { 2565222, "WaterfallData.db2" }, + { 2565258, "WaypointEdge.db2" }, + { 2565265, "WaypointNode.db2" }, + { 2820850, "WaypointSafeLocs.db2" }, + { 879634, "WbAccessControlList.db2" }, + { 879591, "WbCertWhitelist.db2" }, + { 1267648, "WeaponImpactSounds.db2" }, + { 1267068, "WeaponSwingSounds2.db2" }, + { 982461, "WeaponTrail.db2" }, + { 1239843, "WeaponTrailModelDef.db2" }, + { 1239842, "WeaponTrailParam.db2" }, + { 1343311, "Weather.db2" }, + { 1965591, "WeatherXParticulate.db2" }, + { 943871, "WindSettings.db2" }, + { 975279, "WorldBossLockout.db2" }, + { 1267069, "WorldChunkSounds.db2" }, + { 1343312, "WorldEffect.db2" }, + { 1135240, "WorldElapsedTimer.db2" }, + { 1134579, "WorldMapOverlay.db2" }, + { 1957212, "WorldMapOverlayTile.db2" }, + { 1369425, "WorldSafeLocs.db2" }, + { 1332558, "WorldStateExpression.db2" }, + { 1343596, "WorldStateUI.db2" }, + { 1266941, "WorldStateZoneSounds.db2" }, + { 1310255, "World_PVP_Area.db2" }, + { 1310251, "ZoneIntroMusicTable.db2" }, + { 1310253, "ZoneLight.db2" }, + { 1310256, "ZoneLightPoint.db2" }, + { 1310254, "ZoneMusic.db2" }, + { 1797864, "ZoneStory.db2" }, }; #endif // DBFilesClientList_h__ diff --git a/src/tools/vmap4_extractor/gameobject_extract.cpp b/src/tools/vmap4_extractor/gameobject_extract.cpp index f4e8b8b5a96..bf9cf73e678 100644 --- a/src/tools/vmap4_extractor/gameobject_extract.cpp +++ b/src/tools/vmap4_extractor/gameobject_extract.cpp @@ -87,7 +87,7 @@ void ExtractGameobjectModels() { printf("Extracting GameObject models...\n"); - DB2CascFileSource source(CascStorage, "DBFilesClient\\GameObjectDisplayInfo.db2"); + DB2CascFileSource source(CascStorage, GameobjectDisplayInfoLoadInfo::Instance()->Meta->FileDataId); DB2FileLoader db2; if (!db2.Load(&source, GameobjectDisplayInfoLoadInfo::Instance())) { diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp index 3a29be3c3f3..babdb7a99c0 100644 --- a/src/tools/vmap4_extractor/vmapexport.cpp +++ b/src/tools/vmap4_extractor/vmapexport.cpp @@ -468,7 +468,7 @@ int main(int argc, char ** argv) { printf("Read Map.dbc file... "); - DB2CascFileSource source(CascStorage, "DBFilesClient\\Map.db2"); + DB2CascFileSource source(CascStorage, MapLoadInfo::Instance()->Meta->FileDataId); DB2FileLoader db2; if (!db2.Load(&source, MapLoadInfo::Instance())) { |