Core/DataStores: Updated db2 structures to 8.3.0
This commit is contained in:
@@ -2873,18 +2873,22 @@ CREATE TABLE `item_instance_azerite` (
|
||||
`selectedAzeriteEssences1azeriteEssenceId1` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences1azeriteEssenceId2` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences1azeriteEssenceId3` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences1azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences2specId` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences2azeriteEssenceId1` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences2azeriteEssenceId2` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences2azeriteEssenceId3` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences2azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences3specId` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences3azeriteEssenceId1` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences3azeriteEssenceId2` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences3azeriteEssenceId3` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences3azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences4specId` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences4azeriteEssenceId1` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences4azeriteEssenceId2` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences4azeriteEssenceId3` int(10) unsigned NULL DEFAULT '0',
|
||||
`selectedAzeriteEssences4azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0',
|
||||
PRIMARY KEY (`itemGuid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
@@ -3691,7 +3695,8 @@ INSERT INTO `updates` VALUES
|
||||
('2019_11_12_00_characters.sql','D4C642B4D48DAE9F56329BDE51C258323A132A91','RELEASED','2019-11-12 16:31:29',0),
|
||||
('2019_11_22_00_characters.sql','95DFA71DBD75542C098CD86E9C0051C9690902F0','RELEASED','2019-11-20 15:10:12',0),
|
||||
('2019_11_30_00_characters.sql','D0678E62B651AECA60C2DD6989BF80BD999AD12B','RELEASED','2019-11-29 22:42:01',0),
|
||||
('2019_12_05_00_characters.sql','EA381C9634A5646A3168F15DF4E06A708A622762','RELEASED','2019-12-05 20:56:58',0);
|
||||
('2019_12_05_00_characters.sql','EA381C9634A5646A3168F15DF4E06A708A622762','RELEASED','2019-12-05 20:56:58',0),
|
||||
('2020_02_17_00_characters.sql','E1519A81D35F19B48B3C75A83A270CB4BA0B84F2','RELEASED','2020-02-17 21:55:17',0);
|
||||
/*!40000 ALTER TABLE `updates` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
||||
@@ -1 +1,7 @@
|
||||
UPDATE `character_inventory` SET `slot`=`slot`+4 WHERE `slot`>=47 AND `bag`=0;
|
||||
|
||||
ALTER TABLE `item_instance_azerite`
|
||||
ADD `selectedAzeriteEssences1azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0' AFTER `selectedAzeriteEssences1azeriteEssenceId3`,
|
||||
ADD `selectedAzeriteEssences2azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0' AFTER `selectedAzeriteEssences2azeriteEssenceId3`,
|
||||
ADD `selectedAzeriteEssences3azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0' AFTER `selectedAzeriteEssences3azeriteEssenceId3`,
|
||||
ADD `selectedAzeriteEssences4azeriteEssenceId4` int(10) unsigned NULL DEFAULT '0' AFTER `selectedAzeriteEssences4azeriteEssenceId3`;
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
ALTER TABLE `chr_races` ADD `TransmogrifyDisabledSlotMask` int(11) NOT NULL DEFAULT '0' AFTER `HelmVisFallbackRaceID`;
|
||||
|
||||
ALTER TABLE `content_tuning_x_expected` ADD `MythicPlusSeasonID` int(11) NOT NULL DEFAULT '0' AFTER `ExpectedStatModID`;
|
||||
|
||||
ALTER TABLE `criteria_tree` MODIFY `Flags` int(11) NOT NULL DEFAULT '0' AFTER `OrderIndex`;
|
||||
|
||||
ALTER TABLE `currency_types`
|
||||
ADD `ConvertToPlayerExperience` int(11) NOT NULL DEFAULT '0' AFTER `ItemGroupSoundsID`,
|
||||
ADD `PlayerConditionID` int(11) NOT NULL DEFAULT '0' AFTER `ConvertToPlayerExperience`;
|
||||
|
||||
ALTER TABLE `item_appearance` DROP `SubclassID`;
|
||||
|
||||
ALTER TABLE `mount`
|
||||
ADD `MountSpecialRiderAnimKitID` int(11) NOT NULL DEFAULT '0' AFTER `UiModelSceneID`,
|
||||
ADD `MountSpecialSpellVisualKitID` int(11) NOT NULL DEFAULT '0' AFTER `MountSpecialRiderAnimKitID`;
|
||||
|
||||
ALTER TABLE `spell_visual_kit` CHANGE `Flags` `Flags1` int(11) NOT NULL DEFAULT '0' AFTER `DelayMax`;
|
||||
ALTER TABLE `spell_visual_kit` ADD `Flags2` int(11) NOT NULL DEFAULT '0' AFTER `Flags1`;
|
||||
ALTER TABLE `spell_visual_kit` MODIFY `FallbackSpellVisualKitId` int(11) NOT NULL DEFAULT '0' AFTER `FallbackPriority`;
|
||||
|
||||
ALTER TABLE `ui_map` ADD `AlternateUiMapGroup` int(11) NOT NULL DEFAULT '0' AFTER `BkgAtlasID`;
|
||||
@@ -147,10 +147,10 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(CHAR_SEL_MAILITEMS, "SELECT " SelectItemInstanceContent ", ii.owner_guid, m.id FROM mail_items mi INNER JOIN mail m ON mi.mail_id = m.id LEFT JOIN item_instance ii ON mi.item_guid = ii.guid LEFT JOIN item_instance_gems ig ON ii.guid = ig.itemGuid LEFT JOIN item_instance_transmog iit ON ii.guid = iit.itemGuid LEFT JOIN item_instance_modifiers im ON ii.guid = im.itemGuid WHERE m.receiver = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_MAILITEMS_ARTIFACT, "SELECT a.itemGuid, a.xp, a.artifactAppearanceId, a.artifactTierId, ap.artifactPowerId, ap.purchasedRank FROM item_instance_artifact_powers ap LEFT JOIN item_instance_artifact a ON ap.itemGuid = a.itemGuid INNER JOIN mail_items mi ON a.itemGuid = mi.item_guid INNER JOIN mail m ON mi.mail_id = m.id WHERE m.receiver = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_MAILITEMS_AZERITE, "SELECT iz.itemGuid, iz.xp, iz.level, iz.knowledgeLevel, "
|
||||
"iz.selectedAzeriteEssences1specId, iz.selectedAzeriteEssences1azeriteEssenceId1, iz.selectedAzeriteEssences1azeriteEssenceId2, iz.selectedAzeriteEssences1azeriteEssenceId3, "
|
||||
"iz.selectedAzeriteEssences2specId, iz.selectedAzeriteEssences2azeriteEssenceId1, iz.selectedAzeriteEssences2azeriteEssenceId2, iz.selectedAzeriteEssences2azeriteEssenceId3, "
|
||||
"iz.selectedAzeriteEssences3specId, iz.selectedAzeriteEssences3azeriteEssenceId1, iz.selectedAzeriteEssences3azeriteEssenceId2, iz.selectedAzeriteEssences3azeriteEssenceId3, "
|
||||
"iz.selectedAzeriteEssences4specId, iz.selectedAzeriteEssences4azeriteEssenceId1, iz.selectedAzeriteEssences4azeriteEssenceId2, iz.selectedAzeriteEssences4azeriteEssenceId3 "
|
||||
"iz.selectedAzeriteEssences1specId, iz.selectedAzeriteEssences1azeriteEssenceId1, iz.selectedAzeriteEssences1azeriteEssenceId2, iz.selectedAzeriteEssences1azeriteEssenceId3, iz.selectedAzeriteEssences1azeriteEssenceId4, "
|
||||
"iz.selectedAzeriteEssences2specId, iz.selectedAzeriteEssences2azeriteEssenceId1, iz.selectedAzeriteEssences2azeriteEssenceId2, iz.selectedAzeriteEssences2azeriteEssenceId3, iz.selectedAzeriteEssences2azeriteEssenceId4, "
|
||||
"iz.selectedAzeriteEssences3specId, iz.selectedAzeriteEssences3azeriteEssenceId1, iz.selectedAzeriteEssences3azeriteEssenceId2, iz.selectedAzeriteEssences3azeriteEssenceId3, iz.selectedAzeriteEssences3azeriteEssenceId4, "
|
||||
"iz.selectedAzeriteEssences4specId, iz.selectedAzeriteEssences4azeriteEssenceId1, iz.selectedAzeriteEssences4azeriteEssenceId2, iz.selectedAzeriteEssences4azeriteEssenceId3, iz.selectedAzeriteEssences4azeriteEssenceId4 "
|
||||
"FROM item_instance_azerite iz INNER JOIN mail_items mi ON iz.itemGuid = mi.item_guid INNER JOIN mail m ON mi.mail_id = m.id WHERE m.receiver = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_MAILITEMS_AZERITE_MILESTONE_POWER, "SELECT iamp.itemGuid, iamp.azeriteItemMilestonePowerId FROM item_instance_azerite_milestone_power iamp INNER JOIN mail_items mi ON iamp.itemGuid = mi.item_guid INNER JOIN mail m ON mi.mail_id = m.id WHERE m.receiver = ?", CONNECTION_SYNCH);
|
||||
PrepareStatement(CHAR_SEL_MAILITEMS_AZERITE_UNLOCKED_ESSENCE, "SELECT iaue.itemGuid, iaue.azeriteEssenceId, iaue.`rank` FROM item_instance_azerite_unlocked_essence iaue INNER JOIN mail_items mi ON iaue.itemGuid = mi.item_guid INNER JOIN mail m ON mi.mail_id = m.id WHERE m.receiver = ?", CONNECTION_SYNCH);
|
||||
@@ -200,14 +200,15 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(CHAR_DEL_ITEM_INSTANCE_MODIFIERS, "DELETE FROM item_instance_modifiers WHERE itemGuid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_ITEM_INSTANCE_MODIFIERS_BY_OWNER, "DELETE im FROM item_instance_modifiers im LEFT JOIN item_instance ii ON im.itemGuid = ii.guid WHERE ii.owner_guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_ITEM_INSTANCE_AZERITE, "SELECT iz.itemGuid, iz.xp, iz.level, iz.knowledgeLevel, "
|
||||
"iz.selectedAzeriteEssences1specId, iz.selectedAzeriteEssences1azeriteEssenceId1, iz.selectedAzeriteEssences1azeriteEssenceId2, iz.selectedAzeriteEssences1azeriteEssenceId3, "
|
||||
"iz.selectedAzeriteEssences2specId, iz.selectedAzeriteEssences2azeriteEssenceId1, iz.selectedAzeriteEssences2azeriteEssenceId2, iz.selectedAzeriteEssences2azeriteEssenceId3, "
|
||||
"iz.selectedAzeriteEssences3specId, iz.selectedAzeriteEssences3azeriteEssenceId1, iz.selectedAzeriteEssences3azeriteEssenceId2, iz.selectedAzeriteEssences3azeriteEssenceId3, "
|
||||
"iz.selectedAzeriteEssences4specId, iz.selectedAzeriteEssences4azeriteEssenceId1, iz.selectedAzeriteEssences4azeriteEssenceId2, iz.selectedAzeriteEssences4azeriteEssenceId3 "
|
||||
"iz.selectedAzeriteEssences1specId, iz.selectedAzeriteEssences1azeriteEssenceId1, iz.selectedAzeriteEssences1azeriteEssenceId2, iz.selectedAzeriteEssences1azeriteEssenceId3, iz.selectedAzeriteEssences1azeriteEssenceId4, "
|
||||
"iz.selectedAzeriteEssences2specId, iz.selectedAzeriteEssences2azeriteEssenceId1, iz.selectedAzeriteEssences2azeriteEssenceId2, iz.selectedAzeriteEssences2azeriteEssenceId3, iz.selectedAzeriteEssences2azeriteEssenceId4, "
|
||||
"iz.selectedAzeriteEssences3specId, iz.selectedAzeriteEssences3azeriteEssenceId1, iz.selectedAzeriteEssences3azeriteEssenceId2, iz.selectedAzeriteEssences3azeriteEssenceId3, iz.selectedAzeriteEssences3azeriteEssenceId4, "
|
||||
"iz.selectedAzeriteEssences4specId, iz.selectedAzeriteEssences4azeriteEssenceId1, iz.selectedAzeriteEssences4azeriteEssenceId2, iz.selectedAzeriteEssences4azeriteEssenceId3, iz.selectedAzeriteEssences4azeriteEssenceId4 "
|
||||
"FROM item_instance_azerite iz INNER JOIN character_inventory ci ON iz.itemGuid = ci.item WHERE ci.guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_INS_ITEM_INSTANCE_AZERITE, "INSERT INTO item_instance_azerite (itemGuid, xp, level, knowledgeLevel, selectedAzeriteEssences1specId, selectedAzeriteEssences1azeriteEssenceId1, selectedAzeriteEssences1azeriteEssenceId2, selectedAzeriteEssences1azeriteEssenceId3, "
|
||||
"selectedAzeriteEssences2specId, selectedAzeriteEssences2azeriteEssenceId1, selectedAzeriteEssences2azeriteEssenceId2, selectedAzeriteEssences2azeriteEssenceId3, selectedAzeriteEssences3specId, selectedAzeriteEssences3azeriteEssenceId1, selectedAzeriteEssences3azeriteEssenceId2, selectedAzeriteEssences3azeriteEssenceId3, "
|
||||
"selectedAzeriteEssences4specId, selectedAzeriteEssences4azeriteEssenceId1, selectedAzeriteEssences4azeriteEssenceId2, selectedAzeriteEssences4azeriteEssenceId3) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_INS_ITEM_INSTANCE_AZERITE, "INSERT INTO item_instance_azerite (itemGuid, xp, level, knowledgeLevel, selectedAzeriteEssences1specId, selectedAzeriteEssences1azeriteEssenceId1, selectedAzeriteEssences1azeriteEssenceId2, selectedAzeriteEssences1azeriteEssenceId3, selectedAzeriteEssences1azeriteEssenceId4, "
|
||||
"selectedAzeriteEssences2specId, selectedAzeriteEssences2azeriteEssenceId1, selectedAzeriteEssences2azeriteEssenceId2, selectedAzeriteEssences2azeriteEssenceId3, selectedAzeriteEssences2azeriteEssenceId4, "
|
||||
"selectedAzeriteEssences3specId, selectedAzeriteEssences3azeriteEssenceId1, selectedAzeriteEssences3azeriteEssenceId2, selectedAzeriteEssences3azeriteEssenceId3, selectedAzeriteEssences3azeriteEssenceId4, "
|
||||
"selectedAzeriteEssences4specId, selectedAzeriteEssences4azeriteEssenceId1, selectedAzeriteEssences4azeriteEssenceId2, selectedAzeriteEssences4azeriteEssenceId3, selectedAzeriteEssences4azeriteEssenceId4) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_UPD_ITEM_INSTANCE_AZERITE_ON_LOAD, "UPDATE item_instance_azerite SET xp = ?, knowledgeLevel = ? WHERE itemGuid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_ITEM_INSTANCE_AZERITE, "DELETE FROM item_instance_azerite WHERE itemGuid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_ITEM_INSTANCE_AZERITE_BY_OWNER, "DELETE iz FROM item_instance_azerite iz LEFT JOIN item_instance ii ON iz.itemGuid = ii.guid WHERE ii.owner_guid = ?", CONNECTION_ASYNC);
|
||||
|
||||
@@ -240,11 +240,11 @@ void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
"MaleCustomizeOffset1, MaleCustomizeOffset2, MaleCustomizeOffset3, FemaleCustomizeOffset1, FemaleCustomizeOffset2, FemaleCustomizeOffset3, "
|
||||
"LowResScreenFileDataID, AlteredFormStartVisualKitID1, AlteredFormStartVisualKitID2, AlteredFormStartVisualKitID3, "
|
||||
"AlteredFormFinishVisualKitID1, AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, "
|
||||
"UiDisplayOrder, FemaleSkeletonFileDataID, MaleSkeletonFileDataID, HelmVisFallbackRaceID, FactionID, CinematicSequenceID, ResSicknessSpellID, "
|
||||
"SplashSoundID, BaseLanguage, CreatureType, Alliance, RaceRelated, UnalteredVisualRaceID, CharComponentTextureLayoutID, "
|
||||
"CharComponentTexLayoutHiResID, DefaultClassID, NeutralRaceID, MaleModelFallbackRaceID, MaleModelFallbackSex, FemaleModelFallbackRaceID, "
|
||||
"FemaleModelFallbackSex, MaleTextureFallbackRaceID, MaleTextureFallbackSex, FemaleTextureFallbackRaceID, FemaleTextureFallbackSex"
|
||||
" FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
"UiDisplayOrder, FemaleSkeletonFileDataID, MaleSkeletonFileDataID, HelmVisFallbackRaceID, TransmogrifyDisabledSlotMask, FactionID, "
|
||||
"CinematicSequenceID, ResSicknessSpellID, SplashSoundID, BaseLanguage, CreatureType, Alliance, RaceRelated, UnalteredVisualRaceID, "
|
||||
"CharComponentTextureLayoutID, CharComponentTexLayoutHiResID, DefaultClassID, NeutralRaceID, MaleModelFallbackRaceID, MaleModelFallbackSex, "
|
||||
"FemaleModelFallbackRaceID, FemaleModelFallbackSex, MaleTextureFallbackRaceID, MaleTextureFallbackSex, FemaleTextureFallbackRaceID, "
|
||||
"FemaleTextureFallbackSex FROM chr_races ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_RACES, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang"
|
||||
" FROM chr_races_locale WHERE locale = ?", CONNECTION_SYNCH);
|
||||
|
||||
@@ -266,8 +266,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(HOTFIX_SEL_CONTENT_TUNING, "SELECT ID, MinLevel, MaxLevel, Flags, ExpansionID FROM content_tuning ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
|
||||
// ContentTuningXExpected.db2
|
||||
PrepareStatement(HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED, "SELECT ID, ExpectedStatModID, ContentTuningID FROM content_tuning_x_expected"
|
||||
" ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
PrepareStatement(HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED, "SELECT ID, ExpectedStatModID, MythicPlusSeasonID, ContentTuningID"
|
||||
" FROM content_tuning_x_expected ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
|
||||
// ConversationLine.db2
|
||||
PrepareStatement(HOTFIX_SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, AdditionalDuration, NextConversationLineID, "
|
||||
@@ -313,7 +313,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
|
||||
// CurrencyTypes.db2
|
||||
PrepareStatement(HOTFIX_SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, "
|
||||
"MaxEarnablePerWeek, Flags, Quality, FactionID, ItemGroupSoundsID FROM currency_types ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
"MaxEarnablePerWeek, Flags, Quality, FactionID, ItemGroupSoundsID, ConvertToPlayerExperience, PlayerConditionID 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
|
||||
@@ -503,8 +504,8 @@ void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
"ItemGroupSoundsID FROM item ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
|
||||
// ItemAppearance.db2
|
||||
PrepareStatement(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, SubclassID, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder"
|
||||
" FROM item_appearance ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
PrepareStatement(HOTFIX_SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder FROM item_appearance"
|
||||
" ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
|
||||
// ItemArmorQuality.db2
|
||||
PrepareStatement(HOTFIX_SEL_ITEM_ARMOR_QUALITY, "SELECT ID, Qualitymod1, Qualitymod2, Qualitymod3, Qualitymod4, Qualitymod5, Qualitymod6, "
|
||||
@@ -697,7 +698,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
|
||||
// Mount.db2
|
||||
PrepareStatement(HOTFIX_SEL_MOUNT, "SELECT Name, SourceText, Description, ID, MountTypeID, Flags, SourceTypeEnum, SourceSpellID, "
|
||||
"PlayerConditionID, MountFlyRideHeight, UiModelSceneID FROM mount ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
"PlayerConditionID, MountFlyRideHeight, UiModelSceneID, MountSpecialRiderAnimKitID, MountSpecialSpellVisualKitID FROM mount ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
PREPARE_LOCALE_STMT(HOTFIX_SEL_MOUNT, "SELECT ID, Name_lang, SourceText_lang, Description_lang FROM mount_locale WHERE locale = ?", CONNECTION_SYNCH);
|
||||
|
||||
// MountCapability.db2
|
||||
@@ -1016,7 +1017,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
" FROM spell_totems ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
|
||||
// SpellVisualKit.db2
|
||||
PrepareStatement(HOTFIX_SEL_SPELL_VISUAL_KIT, "SELECT ID, Flags, FallbackPriority, FallbackSpellVisualKitId, DelayMin, DelayMax"
|
||||
PrepareStatement(HOTFIX_SEL_SPELL_VISUAL_KIT, "SELECT ID, FallbackPriority, FallbackSpellVisualKitId, DelayMin, DelayMax, Flags1, Flags2"
|
||||
" FROM spell_visual_kit ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
|
||||
// SpellXSpellVisual.db2
|
||||
@@ -1082,7 +1083,7 @@ void HotfixDatabaseConnection::DoPrepareStatements()
|
||||
|
||||
// UiMap.db2
|
||||
PrepareStatement(HOTFIX_SEL_UI_MAP, "SELECT Name, ID, ParentUiMapID, Flags, `System`, Type, LevelRangeMin, LevelRangeMax, BountySetID, "
|
||||
"BountyDisplayLocation, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID FROM ui_map ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
"BountyDisplayLocation, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID, AlternateUiMapGroup FROM ui_map ORDER BY ID DESC", CONNECTION_SYNCH);
|
||||
PREPARE_LOCALE_STMT(HOTFIX_SEL_UI_MAP, "SELECT ID, Name_lang FROM ui_map_locale WHERE locale = ?", CONNECTION_SYNCH);
|
||||
|
||||
// UiMapAssignment.db2
|
||||
|
||||
@@ -1050,6 +1050,7 @@ struct ChrRacesLoadInfo
|
||||
{ true, FT_INT, "FemaleSkeletonFileDataID" },
|
||||
{ true, FT_INT, "MaleSkeletonFileDataID" },
|
||||
{ true, FT_INT, "HelmVisFallbackRaceID" },
|
||||
{ true, FT_INT, "TransmogrifyDisabledSlotMask" },
|
||||
{ true, FT_SHORT, "FactionID" },
|
||||
{ true, FT_SHORT, "CinematicSequenceID" },
|
||||
{ true, FT_SHORT, "ResSicknessSpellID" },
|
||||
@@ -1169,6 +1170,7 @@ struct ContentTuningXExpectedLoadInfo
|
||||
{
|
||||
{ false, FT_INT, "ID" },
|
||||
{ true, FT_INT, "ExpectedStatModID" },
|
||||
{ true, FT_INT, "MythicPlusSeasonID" },
|
||||
{ false, FT_INT, "ContentTuningID" },
|
||||
};
|
||||
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, ContentTuningXExpectedMeta::Instance(), HOTFIX_SEL_CONTENT_TUNING_X_EXPECTED);
|
||||
@@ -1388,7 +1390,7 @@ struct CriteriaTreeLoadInfo
|
||||
{ true, FT_BYTE, "Operator" },
|
||||
{ false, FT_INT, "CriteriaID" },
|
||||
{ true, FT_INT, "OrderIndex" },
|
||||
{ true, FT_SHORT, "Flags" },
|
||||
{ true, FT_INT, "Flags" },
|
||||
};
|
||||
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, CriteriaTreeMeta::Instance(), HOTFIX_SEL_CRITERIA_TREE);
|
||||
return &loadInfo;
|
||||
@@ -1414,6 +1416,8 @@ struct CurrencyTypesLoadInfo
|
||||
{ true, FT_BYTE, "Quality" },
|
||||
{ true, FT_INT, "FactionID" },
|
||||
{ true, FT_INT, "ItemGroupSoundsID" },
|
||||
{ true, FT_INT, "ConvertToPlayerExperience" },
|
||||
{ true, FT_INT, "PlayerConditionID" },
|
||||
};
|
||||
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, CurrencyTypesMeta::Instance(), HOTFIX_SEL_CURRENCY_TYPES);
|
||||
return &loadInfo;
|
||||
@@ -2381,7 +2385,6 @@ struct ItemAppearanceLoadInfo
|
||||
{
|
||||
{ false, FT_INT, "ID" },
|
||||
{ false, FT_BYTE, "DisplayType" },
|
||||
{ true, FT_INT, "SubclassID" },
|
||||
{ true, FT_INT, "ItemDisplayInfoID" },
|
||||
{ true, FT_INT, "DefaultIconFileDataID" },
|
||||
{ true, FT_INT, "UiOrder" },
|
||||
@@ -3442,6 +3445,8 @@ struct MountLoadInfo
|
||||
{ false, FT_INT, "PlayerConditionID" },
|
||||
{ false, FT_FLOAT, "MountFlyRideHeight" },
|
||||
{ true, FT_INT, "UiModelSceneID" },
|
||||
{ true, FT_INT, "MountSpecialRiderAnimKitID" },
|
||||
{ true, FT_INT, "MountSpecialSpellVisualKitID" },
|
||||
};
|
||||
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, MountMeta::Instance(), HOTFIX_SEL_MOUNT);
|
||||
return &loadInfo;
|
||||
@@ -5100,11 +5105,12 @@ struct SpellVisualKitLoadInfo
|
||||
static DB2FieldMeta const fields[] =
|
||||
{
|
||||
{ false, FT_INT, "ID" },
|
||||
{ true, FT_INT, "Flags" },
|
||||
{ true, FT_BYTE, "FallbackPriority" },
|
||||
{ false, FT_INT, "FallbackSpellVisualKitId" },
|
||||
{ true, FT_INT, "FallbackSpellVisualKitId" },
|
||||
{ false, FT_SHORT, "DelayMin" },
|
||||
{ false, FT_SHORT, "DelayMax" },
|
||||
{ true, FT_INT, "Flags1" },
|
||||
{ true, FT_INT, "Flags2" },
|
||||
};
|
||||
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, SpellVisualKitMeta::Instance(), HOTFIX_SEL_SPELL_VISUAL_KIT);
|
||||
return &loadInfo;
|
||||
@@ -5436,6 +5442,7 @@ struct UiMapLoadInfo
|
||||
{ true, FT_INT, "VisibilityPlayerConditionID" },
|
||||
{ true, FT_BYTE, "HelpTextPosition" },
|
||||
{ true, FT_INT, "BkgAtlasID" },
|
||||
{ true, FT_INT, "AlternateUiMapGroup" },
|
||||
};
|
||||
static DB2LoadInfo const loadInfo(&fields[0], std::extent<decltype(fields)>::value, UiMapMeta::Instance(), HOTFIX_SEL_UI_MAP);
|
||||
return &loadInfo;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -436,8 +436,11 @@ namespace
|
||||
WMOAreaTableLookupContainer _wmoAreaTableLookup;
|
||||
}
|
||||
|
||||
template<class T, template<class> class DB2>
|
||||
inline void LoadDB2(uint32& availableDb2Locales, std::vector<std::string>& errlist, StorageMap& stores, DB2StorageBase* storage, std::string const& db2Path, uint32 defaultLocale, DB2<T> const& /*hint*/)
|
||||
template<typename T>
|
||||
constexpr std::size_t GetCppRecordSize(DB2Storage<T> const&) { return sizeof(T); }
|
||||
|
||||
void LoadDB2(uint32& availableDb2Locales, std::vector<std::string>& errlist, StorageMap& stores, DB2StorageBase* storage, std::string const& db2Path,
|
||||
uint32 defaultLocale, std::size_t cppRecordSize)
|
||||
{
|
||||
// validate structure
|
||||
DB2LoadInfo const* loadInfo = storage->GetLoadInfo();
|
||||
@@ -465,9 +468,9 @@ inline void LoadDB2(uint32& availableDb2Locales, std::vector<std::string>& errli
|
||||
storage->GetFileName().c_str(), ourMetaString.c_str(), clientMetaString.c_str());
|
||||
|
||||
// compatibility format and C++ structure sizes
|
||||
ASSERT(loadInfo->Meta->GetRecordSize() == sizeof(T),
|
||||
ASSERT(loadInfo->Meta->GetRecordSize() == cppRecordSize,
|
||||
"Size of '%s' set by format string (%u) not equal size of C++ structure (" SZFMTD ").",
|
||||
storage->GetFileName().c_str(), loadInfo->Meta->GetRecordSize(), sizeof(T));
|
||||
storage->GetFileName().c_str(), loadInfo->Meta->GetRecordSize(), cppRecordSize);
|
||||
}
|
||||
|
||||
if (storage->Load(db2Path + localeNames[defaultLocale] + '/', defaultLocale))
|
||||
@@ -524,7 +527,7 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
|
||||
std::vector<std::string> bad_db2_files;
|
||||
uint32 availableDb2Locales = 0xFF;
|
||||
|
||||
#define LOAD_DB2(store) LoadDB2(availableDb2Locales, bad_db2_files, _stores, &store, db2Path, defaultLocale, store)
|
||||
#define LOAD_DB2(store) LoadDB2(availableDb2Locales, bad_db2_files, _stores, &store, db2Path, defaultLocale, GetCppRecordSize(store))
|
||||
|
||||
LOAD_DB2(sAchievementStore);
|
||||
LOAD_DB2(sAnimationDataStore);
|
||||
@@ -918,10 +921,6 @@ void DB2Manager::LoadStores(std::string const& dataPath, uint32 defaultLocale)
|
||||
for (auto itr = _curvePoints.begin(); itr != _curvePoints.end(); ++itr)
|
||||
std::sort(itr->second.begin(), itr->second.end(), [](CurvePointEntry const* point1, CurvePointEntry const* point2) { return point1->OrderIndex < point2->OrderIndex; });
|
||||
|
||||
ASSERT(MAX_DIFFICULTY >= sDifficultyStore.GetNumRows(),
|
||||
"MAX_DIFFICULTY is not large enough to contain all difficulties! (current value %d, required %d)",
|
||||
MAX_DIFFICULTY, sDifficultyStore.GetNumRows());
|
||||
|
||||
for (EmotesTextSoundEntry const* emoteTextSound : sEmotesTextSoundStore)
|
||||
_emoteTextSounds[EmotesTextSoundContainer::key_type(emoteTextSound->EmotesTextID, emoteTextSound->RaceID, emoteTextSound->SexID, emoteTextSound->ClassID)] = emoteTextSound;
|
||||
|
||||
|
||||
@@ -594,6 +594,7 @@ struct ChrRacesEntry
|
||||
int32 FemaleSkeletonFileDataID;
|
||||
int32 MaleSkeletonFileDataID;
|
||||
int32 HelmVisFallbackRaceID;
|
||||
int32 TransmogrifyDisabledSlotMask;
|
||||
int16 FactionID;
|
||||
int16 CinematicSequenceID;
|
||||
int16 ResSicknessSpellID;
|
||||
@@ -670,6 +671,7 @@ struct ContentTuningXExpectedEntry
|
||||
{
|
||||
uint32 ID;
|
||||
int32 ExpectedStatModID;
|
||||
int32 MythicPlusSeasonID;
|
||||
uint32 ContentTuningID;
|
||||
};
|
||||
|
||||
@@ -948,7 +950,7 @@ struct CriteriaTreeEntry
|
||||
int8 Operator;
|
||||
uint32 CriteriaID;
|
||||
int32 OrderIndex;
|
||||
int16 Flags;
|
||||
int32 Flags;
|
||||
};
|
||||
|
||||
struct CurrencyTypesEntry
|
||||
@@ -966,6 +968,8 @@ struct CurrencyTypesEntry
|
||||
int8 Quality;
|
||||
int32 FactionID;
|
||||
int32 ItemGroupSoundsID;
|
||||
int32 ConvertToPlayerExperience;
|
||||
int32 PlayerConditionID;
|
||||
};
|
||||
|
||||
struct CurveEntry
|
||||
@@ -1522,7 +1526,6 @@ struct ItemAppearanceEntry
|
||||
{
|
||||
uint32 ID;
|
||||
uint8 DisplayType;
|
||||
int32 SubclassID;
|
||||
int32 ItemDisplayInfoID;
|
||||
int32 DefaultIconFileDataID;
|
||||
int32 UiOrder;
|
||||
@@ -2100,6 +2103,8 @@ struct MountEntry
|
||||
uint32 PlayerConditionID;
|
||||
float MountFlyRideHeight;
|
||||
int32 UiModelSceneID;
|
||||
int32 MountSpecialRiderAnimKitID;
|
||||
int32 MountSpecialSpellVisualKitID;
|
||||
|
||||
bool IsSelfMount() const { return (Flags & MOUNT_FLAG_SELF_MOUNT) != 0; }
|
||||
};
|
||||
@@ -2973,11 +2978,11 @@ struct SpellTotemsEntry
|
||||
struct SpellVisualKitEntry
|
||||
{
|
||||
uint32 ID;
|
||||
int32 Flags;
|
||||
int8 FallbackPriority;
|
||||
uint32 FallbackSpellVisualKitId;
|
||||
int32 FallbackSpellVisualKitId;
|
||||
uint16 DelayMin;
|
||||
uint16 DelayMax;
|
||||
int32 Flags[2];
|
||||
};
|
||||
|
||||
struct SpellXSpellVisualEntry
|
||||
@@ -3155,6 +3160,7 @@ struct UiMapEntry
|
||||
int32 VisibilityPlayerConditionID;
|
||||
int8 HelpTextPosition;
|
||||
int32 BkgAtlasID;
|
||||
int32 AlternateUiMapGroup;
|
||||
};
|
||||
|
||||
struct UiMapAssignmentEntry
|
||||
|
||||
@@ -167,7 +167,7 @@ enum ArtifactPowerFlag : uint8
|
||||
|
||||
#define MAX_AZERITE_EMPOWERED_TIER 5
|
||||
|
||||
#define MAX_AZERITE_ESSENCE_SLOT 3
|
||||
#define MAX_AZERITE_ESSENCE_SLOT 4
|
||||
#define MAX_AZERITE_ESSENCE_RANK 4
|
||||
|
||||
enum class AzeriteItemMilestoneType : int32
|
||||
@@ -182,7 +182,7 @@ enum AzeriteTierUnlockSetFlags
|
||||
AZERITE_TIER_UNLOCK_SET_FLAG_DEFAULT = 0x1
|
||||
};
|
||||
|
||||
#define BATTLE_PET_SPECIES_MAX_ID 2796
|
||||
#define BATTLE_PET_SPECIES_MAX_ID 2873
|
||||
|
||||
enum BattlemasterListFlags
|
||||
{
|
||||
@@ -860,8 +860,8 @@ enum Difficulty : uint8
|
||||
DIFFICULTY_NORMAL_WARFRONT = 147,
|
||||
DIFFICULTY_HEROIC_WARFRONT = 149,
|
||||
DIFFICULTY_LFR_15TH_ANNIVERSARY = 151,
|
||||
|
||||
MAX_DIFFICULTY
|
||||
DIFFICULTY_VISIONS_OF_NZOTH = 152,
|
||||
DIFFICULTY_TEEMING_ISLAND = 153
|
||||
};
|
||||
|
||||
enum DifficultyFlags
|
||||
@@ -1268,7 +1268,7 @@ enum SpellShapeshiftFormFlags
|
||||
SHAPESHIFT_FORM_PREVENT_EMOTE_SOUNDS = 0x1000
|
||||
};
|
||||
|
||||
#define TaxiMaskSize 311
|
||||
#define TaxiMaskSize 319
|
||||
typedef std::array<uint8, TaxiMaskSize> TaxiMask;
|
||||
|
||||
enum TotemCategoryType
|
||||
|
||||
@@ -71,15 +71,15 @@ void AzeriteItem::SaveToDB(CharacterDatabaseTransaction& trans)
|
||||
std::size_t specIndex = 0;
|
||||
for (; specIndex < m_azeriteItemData->SelectedEssences.size(); ++specIndex)
|
||||
{
|
||||
stmt->setUInt32(4 + specIndex * 4, m_azeriteItemData->SelectedEssences[specIndex].SpecializationID);
|
||||
stmt->setUInt32(4 + specIndex * 5, m_azeriteItemData->SelectedEssences[specIndex].SpecializationID);
|
||||
for (std::size_t j = 0; j < MAX_AZERITE_ESSENCE_SLOT; ++j)
|
||||
stmt->setUInt32(5 + specIndex * 4 + j, m_azeriteItemData->SelectedEssences[specIndex].AzeriteEssenceID[j]);
|
||||
stmt->setUInt32(5 + specIndex * 5 + j, m_azeriteItemData->SelectedEssences[specIndex].AzeriteEssenceID[j]);
|
||||
}
|
||||
for (; specIndex < MAX_SPECIALIZATIONS; ++specIndex)
|
||||
{
|
||||
stmt->setUInt32(4 + specIndex * 4, 0);
|
||||
stmt->setUInt32(4 + specIndex * 5, 0);
|
||||
for (std::size_t j = 0; j < MAX_AZERITE_ESSENCE_SLOT; ++j)
|
||||
stmt->setUInt32(5 + specIndex * 4 + j, 0);
|
||||
stmt->setUInt32(5 + specIndex * 5 + j, 0);
|
||||
}
|
||||
|
||||
trans->Append(stmt);
|
||||
|
||||
@@ -327,14 +327,14 @@ void ItemAdditionalLoadInfo::Init(std::unordered_map<ObjectGuid::LowType, ItemAd
|
||||
|
||||
// 0 1 2 3
|
||||
// SELECT iz.itemGuid, iz.xp, iz.level, iz.knowledgeLevel,
|
||||
// 4 5 6 7
|
||||
// iz.selectedAzeriteEssences1specId, iz.selectedAzeriteEssences1azeriteEssenceId1, iz.selectedAzeriteEssences1azeriteEssenceId2, iz.selectedAzeriteEssences1azeriteEssenceId3,
|
||||
// 8 9 10 11
|
||||
// iz.selectedAzeriteEssences2specId, iz.selectedAzeriteEssences2azeriteEssenceId1, iz.selectedAzeriteEssences2azeriteEssenceId2, iz.selectedAzeriteEssences2azeriteEssenceId3,
|
||||
// 12 13 14 15
|
||||
// iz.selectedAzeriteEssences3specId, iz.selectedAzeriteEssences3azeriteEssenceId1, iz.selectedAzeriteEssences3azeriteEssenceId2, iz.selectedAzeriteEssences3azeriteEssenceId3,
|
||||
// 16 17 18 19
|
||||
// iz.selectedAzeriteEssences4specId, iz.selectedAzeriteEssences4azeriteEssenceId1, iz.selectedAzeriteEssences4azeriteEssenceId2, iz.selectedAzeriteEssences4azeriteEssenceId3
|
||||
// 4 5 6 7 8
|
||||
// iz.selectedAzeriteEssences1specId, iz.selectedAzeriteEssences1azeriteEssenceId1, iz.selectedAzeriteEssences1azeriteEssenceId2, iz.selectedAzeriteEssences1azeriteEssenceId3, iz.selectedAzeriteEssences1azeriteEssenceId4,
|
||||
// 9 10 11 12 13
|
||||
// iz.selectedAzeriteEssences2specId, iz.selectedAzeriteEssences2azeriteEssenceId1, iz.selectedAzeriteEssences2azeriteEssenceId2, iz.selectedAzeriteEssences2azeriteEssenceId3, iz.selectedAzeriteEssences2azeriteEssenceId4,
|
||||
// 14 15 16 17 18
|
||||
// iz.selectedAzeriteEssences3specId, iz.selectedAzeriteEssences3azeriteEssenceId1, iz.selectedAzeriteEssences3azeriteEssenceId2, iz.selectedAzeriteEssences3azeriteEssenceId3, iz.selectedAzeriteEssences3azeriteEssenceId4,
|
||||
// 19 20 21 22 23
|
||||
// iz.selectedAzeriteEssences4specId, iz.selectedAzeriteEssences4azeriteEssenceId1, iz.selectedAzeriteEssences4azeriteEssenceId2, iz.selectedAzeriteEssences4azeriteEssenceId3, iz.selectedAzeriteEssences4azeriteEssenceId4
|
||||
// FROM item_instance_azerite iz INNER JOIN ...
|
||||
if (azeriteItemResult)
|
||||
{
|
||||
@@ -356,7 +356,7 @@ void ItemAdditionalLoadInfo::Init(std::unordered_map<ObjectGuid::LowType, ItemAd
|
||||
info.AzeriteItem->SelectedAzeriteEssences[i].SpecializationId = specializationId;
|
||||
for (std::size_t j = 0; j < MAX_AZERITE_ESSENCE_SLOT; ++j)
|
||||
{
|
||||
AzeriteEssenceEntry const* azeriteEssence = sAzeriteEssenceStore.LookupEntry(fields[5 + i * 4 + j].GetUInt32());
|
||||
AzeriteEssenceEntry const* azeriteEssence = sAzeriteEssenceStore.LookupEntry(fields[5 + i * 5 + j].GetUInt32());
|
||||
if (!azeriteEssence || !sDB2Manager.IsSpecSetMember(azeriteEssence->SpecSetID, specializationId))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -19702,7 +19702,7 @@ void Player::_LoadBoundInstances(PreparedQueryResult result)
|
||||
GetName().c_str(), GetGUID().ToString().c_str(), mapId, mapname.c_str());
|
||||
deleteInstance = true;
|
||||
}
|
||||
else if (difficulty >= MAX_DIFFICULTY)
|
||||
else if (!sDifficultyStore.HasRecord(difficulty))
|
||||
{
|
||||
TC_LOG_ERROR("entities.player", "Player::_LoadBoundInstances: player '%s' (%s) has bind to not existed difficulty %d instance for map %u (%s)",
|
||||
GetName().c_str(), GetGUID().ToString().c_str(), difficulty, mapId, mapname.c_str());
|
||||
|
||||
@@ -563,7 +563,7 @@ enum PlayerSlots
|
||||
// first slot for item stored (in any way in player m_items data)
|
||||
PLAYER_SLOT_START = 0,
|
||||
// last+1 slot for item stored (in any way in player m_items data)
|
||||
PLAYER_SLOT_END = 195,
|
||||
PLAYER_SLOT_END = 199,
|
||||
PLAYER_SLOTS_COUNT = (PLAYER_SLOT_END - PLAYER_SLOT_START)
|
||||
};
|
||||
|
||||
|
||||
@@ -5698,11 +5698,11 @@ void ObjectMgr::LoadInstanceEncounters()
|
||||
|
||||
if (!dungeonEncounter->DifficultyID)
|
||||
{
|
||||
for (uint32 i = 0; i < MAX_DIFFICULTY; ++i)
|
||||
for (DifficultyEntry const* difficulty : sDifficultyStore)
|
||||
{
|
||||
if (sDB2Manager.GetMapDifficultyData(dungeonEncounter->MapID, Difficulty(i)))
|
||||
if (sDB2Manager.GetMapDifficultyData(dungeonEncounter->MapID, Difficulty(difficulty->ID)))
|
||||
{
|
||||
DungeonEncounterList& encounters = _dungeonEncounterStore[MAKE_PAIR64(dungeonEncounter->MapID, i)];
|
||||
DungeonEncounterList& encounters = _dungeonEncounterStore[MAKE_PAIR64(dungeonEncounter->MapID, difficulty->ID)];
|
||||
encounters.push_back(new DungeonEncounter(dungeonEncounter, EncounterCreditType(creditType), creditEntry, lastEncounterDungeon));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,9 +89,9 @@ void WorldSession::HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGet
|
||||
packet.Events.push_back(eventInfo);
|
||||
}
|
||||
|
||||
for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
|
||||
for (DifficultyEntry const* difficulty : sDifficultyStore)
|
||||
{
|
||||
auto boundInstances = _player->GetBoundInstances(Difficulty(i));
|
||||
auto boundInstances = _player->GetBoundInstances(Difficulty(difficulty->ID));
|
||||
if (boundInstances != _player->m_boundInstances.end())
|
||||
{
|
||||
for (auto const& boundInstance : boundInstances->second)
|
||||
|
||||
@@ -86,7 +86,7 @@ enum Expansions
|
||||
EXPANSION_LEGION = 6,
|
||||
EXPANSION_BATTLE_FOR_AZEROTH = 7,
|
||||
MAX_EXPANSIONS,
|
||||
|
||||
EXPANSION_SHADOWLANDS = 8,
|
||||
|
||||
MAX_ACCOUNT_EXPANSIONS
|
||||
};
|
||||
|
||||
@@ -1219,15 +1219,17 @@ public:
|
||||
if (!mEntry || !mEntry->IsRaid())
|
||||
return false;
|
||||
int32 difficulty = difficulty_str ? atoi(difficulty_str) : -1;
|
||||
if (difficulty >= MAX_DIFFICULTY || difficulty < -1)
|
||||
if (!sDifficultyStore.HasRecord(difficulty) || difficulty < -1)
|
||||
return false;
|
||||
|
||||
if (difficulty == -1)
|
||||
for (uint8 diff = 0; diff < MAX_DIFFICULTY; ++diff)
|
||||
{
|
||||
for (DifficultyEntry const* difficulty : sDifficultyStore)
|
||||
{
|
||||
if (sDB2Manager.GetMapDifficultyData(map, Difficulty(diff)))
|
||||
sInstanceSaveMgr->ForceGlobalReset(map, Difficulty(diff));
|
||||
if (sDB2Manager.GetMapDifficultyData(map, Difficulty(difficulty->ID)))
|
||||
sInstanceSaveMgr->ForceGlobalReset(map, Difficulty(difficulty->ID));
|
||||
}
|
||||
}
|
||||
else
|
||||
sInstanceSaveMgr->ForceGlobalReset(map, Difficulty(difficulty));
|
||||
return true;
|
||||
|
||||
@@ -24,6 +24,7 @@ EndScriptData */
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "Chat.h"
|
||||
#include "DB2Stores.h"
|
||||
#include "Group.h"
|
||||
#include "InstanceSaveMgr.h"
|
||||
#include "InstanceScript.h"
|
||||
@@ -79,9 +80,9 @@ public:
|
||||
player = handler->GetSession()->GetPlayer();
|
||||
|
||||
uint32 counter = 0;
|
||||
for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
|
||||
for (DifficultyEntry const* difficulty : sDifficultyStore)
|
||||
{
|
||||
auto binds = player->GetBoundInstances(Difficulty(i));
|
||||
auto binds = player->GetBoundInstances(Difficulty(difficulty->ID));
|
||||
if (binds != player->m_boundInstances.end())
|
||||
{
|
||||
for (auto itr = binds->second.begin(); itr != binds->second.end(); ++itr)
|
||||
@@ -98,9 +99,9 @@ public:
|
||||
counter = 0;
|
||||
if (Group* group = player->GetGroup())
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
|
||||
for (DifficultyEntry const* difficulty : sDifficultyStore)
|
||||
{
|
||||
auto binds = group->GetBoundInstances(Difficulty(i));
|
||||
auto binds = group->GetBoundInstances(Difficulty(difficulty->ID));
|
||||
if (binds != group->GetBoundInstanceEnd())
|
||||
{
|
||||
for (auto itr = binds->second.begin(); itr != binds->second.end(); ++itr)
|
||||
@@ -142,9 +143,9 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
|
||||
for (DifficultyEntry const* difficulty : sDifficultyStore)
|
||||
{
|
||||
auto binds = player->GetBoundInstances(Difficulty(i));
|
||||
auto binds = player->GetBoundInstances(Difficulty(difficulty->ID));
|
||||
if (binds != player->m_boundInstances.end())
|
||||
{
|
||||
for (auto itr = binds->second.begin(); itr != binds->second.end();)
|
||||
|
||||
@@ -43,7 +43,7 @@ struct CinematicCameraLoadInfo
|
||||
{ FT_FLOAT, 1, true },
|
||||
{ FT_INT, 1, false },
|
||||
};
|
||||
static DB2Meta meta(1294214, -1, 4, 4, 0x20C5E540, fields, -1);
|
||||
static DB2Meta meta(1294214, -1, 4, 4, 0x7BA7D9AC, 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(1266277, -1, 5, 5, 0x7A816799, fields, -1);
|
||||
static DB2Meta meta(1266277, -1, 5, 5, 0xE56389DF, 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(1132538, -1, 2, 2, 0x6A7287A2, fields, -1);
|
||||
static DB2Meta meta(1132538, -1, 2, 2, 0xD384A6A0, 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(1308058, -1, 5, 5, 0x7AF380AA, fields, -1);
|
||||
static DB2Meta meta(1308058, -1, 5, 5, 0xF09062A1, 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(1371380, -1, 21, 21, 0x29F8C65E, fields, -1);
|
||||
static DB2Meta meta(1371380, -1, 21, 21, 0xD4966711, fields, -1);
|
||||
static DB2FileLoadInfo const loadInfo(&loadedFields[0], std::extent<decltype(loadedFields)>::value, &meta);
|
||||
return &loadInfo;
|
||||
}
|
||||
@@ -281,7 +281,7 @@ struct MapLoadInfo
|
||||
{ FT_INT, 1, true },
|
||||
{ FT_INT, 2, true },
|
||||
};
|
||||
static DB2Meta meta(1349477, -1, 23, 23, 0xB290D217, fields, -1);
|
||||
static DB2Meta meta(1349477, -1, 23, 23, 0xDA9493AF, fields, -1);
|
||||
static DB2FileLoadInfo const loadInfo(&loadedFields[0], std::extent<decltype(loadedFields)>::value, &meta);
|
||||
return &loadInfo;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,6 @@ DB2FileInfo const DBFilesClientList[] =
|
||||
{ 1301100, "AnimReplacement.db2" },
|
||||
{ 1284817, "AnimReplacementSet.db2" },
|
||||
{ 1375431, "AnimationData.db2" },
|
||||
{ 2140223, "AoiBox.db2" },
|
||||
{ 2123730, "AreaConditionalData.db2" },
|
||||
{ 1537162, "AreaFarClipOverride.db2" },
|
||||
{ 1093406, "AreaGroupMember.db2" },
|
||||
@@ -170,6 +169,7 @@ DB2FileInfo const DBFilesClientList[] =
|
||||
{ 2143633, "ContributionStyle.db2" },
|
||||
{ 2143634, "ContributionStyleContainer.db2" },
|
||||
{ 1260801, "ConversationLine.db2" },
|
||||
{ 3220711, "CorruptionEffects.db2" },
|
||||
{ 841631, "Creature.db2" },
|
||||
{ 879282, "CreatureDifficulty.db2" },
|
||||
{ 1146692, "CreatureDispXUiCamera.db2" },
|
||||
@@ -274,7 +274,10 @@ DB2FileInfo const DBFilesClientList[] =
|
||||
{ 940404, "GarrSiteLevelPlotInst.db2" },
|
||||
{ 937647, "GarrSpecialization.db2" },
|
||||
{ 1416758, "GarrString.db2" },
|
||||
{ 3195601, "GarrTalTreeXGarrTalResearch.db2" },
|
||||
{ 1361032, "GarrTalent.db2" },
|
||||
{ 3069763, "GarrTalentRank.db2" },
|
||||
{ 3195518, "GarrTalentResearch.db2" },
|
||||
{ 1361030, "GarrTalentTree.db2" },
|
||||
{ 1333161, "GarrType.db2" },
|
||||
{ 976037, "GarrUiAnimClassInfo.db2" },
|
||||
@@ -322,6 +325,7 @@ DB2FileInfo const DBFilesClientList[] =
|
||||
{ 1283022, "ItemArmorTotal.db2" },
|
||||
{ 1278179, "ItemBagFamily.db2" },
|
||||
{ 959070, "ItemBonus.db2" },
|
||||
{ 1805807, "ItemBonusList.db2" },
|
||||
{ 3025306, "ItemBonusListGroupEntry.db2" },
|
||||
{ 1320358, "ItemBonusListLevelDelta.db2" },
|
||||
{ 2924997, "ItemBonusListWarforgeLevelDelta.db2" },
|
||||
@@ -517,6 +521,7 @@ DB2FileInfo const DBFilesClientList[] =
|
||||
{ 1307153, "RewardPackXCurrencyType.db2" },
|
||||
{ 1307155, "RewardPackXItem.db2" },
|
||||
{ 1398908, "RibbonQuality.db2" },
|
||||
{ 3256786, "RopeEffect.db2" },
|
||||
{ 1712172, "SDReplacementModel.db2" },
|
||||
{ 2056369, "SSAOSettings.db2" },
|
||||
{ 1141728, "ScalingStatDistribution.db2" },
|
||||
@@ -555,7 +560,6 @@ DB2FileInfo const DBFilesClientList[] =
|
||||
{ 1307289, "SoundKitChild.db2" },
|
||||
{ 1237435, "SoundKitEntry.db2" },
|
||||
{ 1307288, "SoundKitFallback.db2" },
|
||||
{ 1665033, "SoundKitName.db2" },
|
||||
{ 1266542, "SoundOverride.db2" },
|
||||
{ 1279417, "SoundProviderPreferences.db2" },
|
||||
{ 1313612, "SourceInfo.db2" },
|
||||
@@ -669,6 +673,7 @@ DB2FileInfo const DBFilesClientList[] =
|
||||
{ 1120287, "UiCamera.db2" },
|
||||
{ 1120288, "UiCameraType.db2" },
|
||||
{ 1989363, "UiCanvas.db2" },
|
||||
{ 3182424, "UiItemInteraction.db2" },
|
||||
{ 1957206, "UiMap.db2" },
|
||||
{ 1957202, "UiMapArt.db2" },
|
||||
{ 1957208, "UiMapArtStyleLayer.db2" },
|
||||
|
||||
Reference in New Issue
Block a user