Core/DataStores: Updated db2 structures to 8.3.0
Port From (https://github.com/TrinityCore/TrinityCore/commit/90628b7d29e041310abc25438f219a0c73c41bae)
This commit is contained in:
@@ -26,7 +26,7 @@ namespace Framework.Constants
|
||||
Any = -1,
|
||||
}
|
||||
|
||||
public enum CriteriaTreeFlags : ushort
|
||||
public enum CriteriaTreeFlags
|
||||
{
|
||||
ProgressBar = 0x0001,
|
||||
ProgressIsDate = 0x0004,
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace Framework.Constants
|
||||
public const uint infinityCooldownDelayCheck = Time.Month / 2;
|
||||
public const int MaxPlayerSummonDelay = 2 * Time.Minute;
|
||||
|
||||
public const int TaxiMaskSize = 311;
|
||||
public const int TaxiMaskSize = 319;
|
||||
|
||||
// corpse reclaim times
|
||||
public const int DeathExpireStep = (5 * Time.Minute);
|
||||
@@ -542,7 +542,7 @@ namespace Framework.Constants
|
||||
// first slot for item stored (in any way in player items data)
|
||||
Start = 0,
|
||||
// last+1 slot for item stored (in any way in player items data)
|
||||
End = 195,
|
||||
End = 199,
|
||||
Count = (End - Start)
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace Framework.Constants
|
||||
public const int MaxMountCapabilities = 24;
|
||||
public const int MaxLockCase = 8;
|
||||
public const int MaxAzeriteEmpoweredTier = 5;
|
||||
public const int MaxAzeriteEssenceSlot = 3;
|
||||
public const int MaxAzeriteEssenceSlot = 4;
|
||||
public const int MaxAzeriteEssenceRank = 4;
|
||||
|
||||
/// <summary>
|
||||
@@ -582,6 +582,8 @@ namespace Framework.Constants
|
||||
BattleForAzeroth = 7,
|
||||
Max,
|
||||
|
||||
ShadowLands = 8,
|
||||
|
||||
MaxAccountExpansions
|
||||
}
|
||||
public enum PowerType : sbyte
|
||||
@@ -762,7 +764,8 @@ namespace Framework.Constants
|
||||
HeroicWarfront = 149,
|
||||
LFR15thAnniversary = 151,
|
||||
|
||||
Max
|
||||
VisionsOfNzoth = 152,
|
||||
TeemingIsland = 153
|
||||
}
|
||||
|
||||
public enum DifficultyFlags : ushort
|
||||
|
||||
@@ -144,10 +144,10 @@ namespace Framework.Database
|
||||
PrepareStatement(CharStatements.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 = ?");
|
||||
PrepareStatement(CharStatements.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 = ?");
|
||||
PrepareStatement(CharStatements.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 = ?");
|
||||
PrepareStatement(CharStatements.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 = ?");
|
||||
PrepareStatement(CharStatements.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 = ?");
|
||||
@@ -197,14 +197,15 @@ namespace Framework.Database
|
||||
PrepareStatement(CharStatements.DEL_ITEM_INSTANCE_MODIFIERS, "DELETE FROM item_instance_modifiers WHERE itemGuid = ?");
|
||||
PrepareStatement(CharStatements.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 = ?");
|
||||
PrepareStatement(CharStatements.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 = ?");
|
||||
PrepareStatement(CharStatements.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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
PrepareStatement(CharStatements.UPD_ITEM_INSTANCE_AZERITE_ON_LOAD, "UPDATE item_instance_azerite SET xp = ?, knowledgeLevel = ? WHERE itemGuid = ?");
|
||||
PrepareStatement(CharStatements.DEL_ITEM_INSTANCE_AZERITE, "DELETE FROM item_instance_azerite WHERE itemGuid = ?");
|
||||
PrepareStatement(CharStatements.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 = ?");
|
||||
|
||||
@@ -223,12 +223,12 @@ namespace Framework.Database
|
||||
"MaleDisplayId, FemaleDisplayId, HighResMaleDisplayId, HighResFemaleDisplayId, CreateScreenFileDataID, SelectScreenFileDataID, " +
|
||||
"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");
|
||||
"AlteredFormFinishVisualKitID1, AlteredFormFinishVisualKitID2, AlteredFormFinishVisualKitID3, HeritageArmorAchievementID, StartingLevel, " +
|
||||
"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");
|
||||
PrepareStatement(HotfixStatements.SEL_CHR_RACES_LOCALE, "SELECT ID, Name_lang, NameFemale_lang, NameLowercase_lang, NameFemaleLowercase_lang" +
|
||||
" FROM chr_races_locale WHERE locale = ?");
|
||||
|
||||
@@ -250,8 +250,8 @@ namespace Framework.Database
|
||||
PrepareStatement(HotfixStatements.SEL_CONTENT_TUNING, "SELECT ID, MinLevel, MaxLevel, Flags, ExpansionID FROM content_tuning ORDER BY ID DESC");
|
||||
|
||||
// ContentTuningXExpected.db2
|
||||
PrepareStatement(HotfixStatements.SEL_CONTENT_TUNING_X_EXPECTED, "SELECT ID, ExpectedStatModID, ContentTuningID FROM content_tuning_x_expected" +
|
||||
" ORDER BY ID DESC");
|
||||
PrepareStatement(HotfixStatements.SEL_CONTENT_TUNING_X_EXPECTED, "SELECT ID, ExpectedStatModID, MythicPlusSeasonID, ContentTuningID" +
|
||||
" FROM content_tuning_x_expected ORDER BY ID DESC");
|
||||
|
||||
// ConversationLine.db2
|
||||
PrepareStatement(HotfixStatements.SEL_CONVERSATION_LINE, "SELECT ID, BroadcastTextID, SpellVisualKitID, AdditionalDuration, NextConversationLineID, " +
|
||||
@@ -296,8 +296,9 @@ namespace Framework.Database
|
||||
PrepareStatement(HotfixStatements.SEL_CRITERIA_TREE_LOCALE, "SELECT ID, Description_lang FROM criteria_tree_locale WHERE locale = ?");
|
||||
|
||||
// CurrencyTypes.db2
|
||||
PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, " +
|
||||
"MaxEarnablePerWeek, Flags, Quality, FactionID, ItemGroupSoundsID FROM currency_types ORDER BY ID DESC");
|
||||
PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES, "SELECT ID, Name, Description, CategoryID, InventoryIconFileID, SpellWeight, SpellCategory, MaxQty, " +
|
||||
"MaxEarnablePerWeek, Flags, Quality, FactionID, ItemGroupSoundsID, ConvertToPlayerExperience, PlayerConditionID FROM currency_types" +
|
||||
" ORDER BY ID DESC");
|
||||
PrepareStatement(HotfixStatements.SEL_CURRENCY_TYPES_LOCALE, "SELECT ID, Name_lang, Description_lang FROM currency_types_locale WHERE locale = ?");
|
||||
|
||||
// Curve.db2
|
||||
@@ -487,8 +488,8 @@ namespace Framework.Database
|
||||
"ItemGroupSoundsID FROM item ORDER BY ID DESC");
|
||||
|
||||
// ItemAppearance.db2
|
||||
PrepareStatement(HotfixStatements.SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, SubclassID, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder" +
|
||||
" FROM item_appearance ORDER BY ID DESC");
|
||||
PrepareStatement(HotfixStatements.SEL_ITEM_APPEARANCE, "SELECT ID, DisplayType, ItemDisplayInfoID, DefaultIconFileDataID, UiOrder FROM item_appearance" +
|
||||
" ORDER BY ID DESC");
|
||||
|
||||
// ItemArmorQuality.db2
|
||||
PrepareStatement(HotfixStatements.SEL_ITEM_ARMOR_QUALITY, "SELECT ID, Qualitymod1, Qualitymod2, Qualitymod3, Qualitymod4, Qualitymod5, Qualitymod6, " +
|
||||
@@ -680,8 +681,8 @@ namespace Framework.Database
|
||||
" ORDER BY ID DESC");
|
||||
|
||||
// Mount.db2
|
||||
PrepareStatement(HotfixStatements.SEL_MOUNT, "SELECT Name, SourceText, Description, ID, MountTypeID, Flags, SourceTypeEnum, SourceSpellID, " +
|
||||
"PlayerConditionID, MountFlyRideHeight, UiModelSceneID FROM mount ORDER BY ID DESC");
|
||||
PrepareStatement(HotfixStatements.SEL_MOUNT, "SELECT Name, SourceText, Description, ID, MountTypeID, Flags, SourceTypeEnum, SourceSpellID, " +
|
||||
"PlayerConditionID, MountFlyRideHeight, UiModelSceneID, MountSpecialRiderAnimKitID, MountSpecialSpellVisualKitID FROM mount ORDER BY ID DESC");
|
||||
PrepareStatement(HotfixStatements.SEL_MOUNT_LOCALE, "SELECT ID, Name_lang, SourceText_lang, Description_lang FROM mount_locale WHERE locale = ?");
|
||||
|
||||
// MountCapability.db2
|
||||
@@ -1000,7 +1001,7 @@ namespace Framework.Database
|
||||
" FROM spell_totems ORDER BY ID DESC");
|
||||
|
||||
// SpellVisualKit.db2
|
||||
PrepareStatement(HotfixStatements.SEL_SPELL_VISUAL_KIT, "SELECT ID, Flags, FallbackPriority, FallbackSpellVisualKitId, DelayMin, DelayMax" +
|
||||
PrepareStatement(HotfixStatements.SEL_SPELL_VISUAL_KIT, "SELECT ID, FallbackPriority, FallbackSpellVisualKitId, DelayMin, DelayMax, Flags1, Flags2" +
|
||||
" FROM spell_visual_kit ORDER BY ID DESC");
|
||||
|
||||
// SpellXSpellVisual.db2
|
||||
@@ -1065,8 +1066,8 @@ namespace Framework.Database
|
||||
" ORDER BY ID DESC");
|
||||
|
||||
// UiMap.db2
|
||||
PrepareStatement(HotfixStatements.SEL_UI_MAP, "SELECT Name, ID, ParentUiMapID, Flags, System, Type, LevelRangeMin, LevelRangeMax, BountySetID, " +
|
||||
"BountyDisplayLocation, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID FROM ui_map ORDER BY ID DESC");
|
||||
PrepareStatement(HotfixStatements.SEL_UI_MAP, "SELECT Name, ID, ParentUiMapID, Flags, System, Type, LevelRangeMin, LevelRangeMax, BountySetID, " +
|
||||
"BountyDisplayLocation, VisibilityPlayerConditionID, HelpTextPosition, BkgAtlasID, AlternateUiMapGroup FROM ui_map ORDER BY ID DESC");
|
||||
PrepareStatement(HotfixStatements.SEL_UI_MAP_LOCALE, "SELECT ID, Name_lang FROM ui_map_locale WHERE locale = ?");
|
||||
|
||||
// UiMapAssignment.db2
|
||||
|
||||
@@ -653,15 +653,15 @@ namespace Game.Chat
|
||||
|
||||
if (!int.TryParse(difficulty_str, out int difficulty))
|
||||
difficulty = -1;
|
||||
if (difficulty >= (int)Difficulty.Max || difficulty < -1)
|
||||
if (CliDB.DifficultyStorage.HasRecord((uint)difficulty) || difficulty < -1)
|
||||
return false;
|
||||
|
||||
if (difficulty == -1)
|
||||
{
|
||||
for (byte diff = 0; diff < (int)Difficulty.Max; ++diff)
|
||||
foreach (var diffRecord in CliDB.DifficultyStorage.Values)
|
||||
{
|
||||
if (Global.DB2Mgr.GetMapDifficultyData((uint)map, (Difficulty)diff) != null)
|
||||
Global.InstanceSaveMgr.ForceGlobalReset((uint)map, (Difficulty)diff);
|
||||
if (Global.DB2Mgr.GetMapDifficultyData((uint)map, (Difficulty)diffRecord.Id) != null)
|
||||
Global.InstanceSaveMgr.ForceGlobalReset((uint)map, (Difficulty)diffRecord.Id);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -20,6 +20,7 @@ using Framework.IO;
|
||||
using Game.Entities;
|
||||
using Game.Groups;
|
||||
using Game.Maps;
|
||||
using Game.DataStorage;
|
||||
|
||||
namespace Game.Chat
|
||||
{
|
||||
@@ -36,9 +37,9 @@ namespace Game.Chat
|
||||
string format = "map: {0} inst: {1} perm: {2} diff: {3} canReset: {4} TTR: {5}";
|
||||
|
||||
uint counter = 0;
|
||||
for (byte i = 0; i < (int)Difficulty.Max; ++i)
|
||||
foreach (var difficulty in CliDB.DifficultyStorage.Values)
|
||||
{
|
||||
var binds = player.GetBoundInstances((Difficulty)i);
|
||||
var binds = player.GetBoundInstances((Difficulty)difficulty.Id);
|
||||
foreach (var pair in binds)
|
||||
{
|
||||
InstanceSave save = pair.Value.save;
|
||||
@@ -53,9 +54,9 @@ namespace Game.Chat
|
||||
Group group = player.GetGroup();
|
||||
if (group)
|
||||
{
|
||||
for (byte i = 0; i < (int)Difficulty.Max; ++i)
|
||||
foreach (var difficulty in CliDB.DifficultyStorage.Values)
|
||||
{
|
||||
var binds = group.GetBoundInstances((Difficulty)i);
|
||||
var binds = group.GetBoundInstances((Difficulty)difficulty.Id);
|
||||
foreach (var pair in binds)
|
||||
{
|
||||
InstanceSave save = pair.Value.save;
|
||||
@@ -93,9 +94,9 @@ namespace Game.Chat
|
||||
return false;
|
||||
}
|
||||
|
||||
for (byte i = 0; i < (int)Difficulty.Max; ++i)
|
||||
foreach (var difficulty in CliDB.DifficultyStorage.Values)
|
||||
{
|
||||
var binds = player.GetBoundInstances((Difficulty)i);
|
||||
var binds = player.GetBoundInstances((Difficulty)difficulty.Id);
|
||||
foreach (var pair in binds)
|
||||
{
|
||||
InstanceSave save = pair.Value.save;
|
||||
@@ -104,7 +105,7 @@ namespace Game.Chat
|
||||
string timeleft = Time.GetTimeString(save.GetResetTime() - Time.UnixTime);
|
||||
handler.SendSysMessage("unbinding map: {0} inst: {1} perm: {2} diff: {3} canReset: {4} TTR: {5}", pair.Key, save.GetInstanceId(),
|
||||
pair.Value.perm ? "yes" : "no", save.GetDifficultyID(), save.CanReset() ? "yes" : "no", timeleft);
|
||||
player.UnbindInstance(pair.Key, (Difficulty)i);
|
||||
player.UnbindInstance(pair.Key, (Difficulty)difficulty.Id);
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,6 +148,7 @@ namespace Game.DataStorage
|
||||
public int FemaleSkeletonFileDataID;
|
||||
public int MaleSkeletonFileDataID;
|
||||
public int HelmVisFallbackRaceID;
|
||||
public int TransmogrifyDisabledSlotMask;
|
||||
public ushort FactionID;
|
||||
public ushort CinematicSequenceID;
|
||||
public short ResSicknessSpellID;
|
||||
@@ -222,6 +223,7 @@ namespace Game.DataStorage
|
||||
{
|
||||
public uint Id;
|
||||
public int ExpectedStatModID;
|
||||
public int MythicPlusSeasonID;
|
||||
public uint ContentTuningID;
|
||||
}
|
||||
|
||||
@@ -384,6 +386,8 @@ namespace Game.DataStorage
|
||||
public sbyte Quality;
|
||||
public int FactionID;
|
||||
public int ItemGroupSoundsID;
|
||||
public int ConvertToPlayerExperience;
|
||||
public int PlayerConditionID;
|
||||
}
|
||||
|
||||
public sealed class CurveRecord
|
||||
|
||||
@@ -63,7 +63,6 @@ namespace Game.DataStorage
|
||||
{
|
||||
public uint Id;
|
||||
public byte DisplayType;
|
||||
public int SubclassID;
|
||||
public uint ItemDisplayInfoID;
|
||||
public int DefaultIconFileDataID;
|
||||
public int UiOrder;
|
||||
|
||||
@@ -140,6 +140,8 @@ namespace Game.DataStorage
|
||||
public uint PlayerConditionID;
|
||||
public float MountFlyRideHeight;
|
||||
public int UiModelSceneID;
|
||||
public int MountSpecialRiderAnimKitID;
|
||||
public int MountSpecialSpellVisualKitID;
|
||||
|
||||
public bool IsSelfMount() { return (Flags & MountFlags.SelfMount) != 0; }
|
||||
}
|
||||
|
||||
@@ -537,11 +537,11 @@ namespace Game.DataStorage
|
||||
public sealed class SpellVisualKitRecord
|
||||
{
|
||||
public uint Id;
|
||||
public int Flags;
|
||||
public sbyte FallbackPriority;
|
||||
public uint FallbackSpellVisualKitId;
|
||||
public int FallbackSpellVisualKitId;
|
||||
public ushort DelayMin;
|
||||
public ushort DelayMax;
|
||||
public int[] Flags = new int[2];
|
||||
}
|
||||
|
||||
public sealed class SpellXSpellVisualRecord
|
||||
|
||||
@@ -34,6 +34,7 @@ namespace Game.DataStorage
|
||||
public int VisibilityPlayerConditionID;
|
||||
public sbyte HelpTextPosition;
|
||||
public int BkgAtlasID;
|
||||
public int AlternateUiMapGroup;
|
||||
}
|
||||
|
||||
public sealed class UiMapAssignmentRecord
|
||||
|
||||
@@ -78,15 +78,15 @@ namespace Game.Entities
|
||||
int specIndex = 0;
|
||||
for (; specIndex < m_azeriteItemData.SelectedEssences.Size(); ++specIndex)
|
||||
{
|
||||
stmt.AddValue(4 + specIndex * 4, m_azeriteItemData.SelectedEssences[specIndex].SpecializationID);
|
||||
stmt.AddValue(4 + specIndex * 5, m_azeriteItemData.SelectedEssences[specIndex].SpecializationID);
|
||||
for (int j = 0; j < SharedConst.MaxAzeriteEssenceSlot; ++j)
|
||||
stmt.AddValue(5 + specIndex * 4 + j, m_azeriteItemData.SelectedEssences[specIndex].AzeriteEssenceID[j]);
|
||||
stmt.AddValue(5 + specIndex * 5 + j, m_azeriteItemData.SelectedEssences[specIndex].AzeriteEssenceID[j]);
|
||||
}
|
||||
for (; specIndex < PlayerConst.MaxSpecializations; ++specIndex)
|
||||
{
|
||||
stmt.AddValue(4 + specIndex * 4, 0);
|
||||
stmt.AddValue(4 + specIndex * 5, 0);
|
||||
for (int j = 0; j < SharedConst.MaxAzeriteEssenceSlot; ++j)
|
||||
stmt.AddValue(5 + specIndex * 4 + j, 0);
|
||||
stmt.AddValue(5 + specIndex * 5 + j, 0);
|
||||
}
|
||||
|
||||
trans.Append(stmt);
|
||||
|
||||
@@ -3100,7 +3100,7 @@ namespace Game.Entities
|
||||
info.AzeriteItem.SelectedAzeriteEssences[i].SpecializationId = specializationId;
|
||||
for (int j = 0; j < SharedConst.MaxAzeriteEssenceSlot; ++j)
|
||||
{
|
||||
AzeriteEssenceRecord azeriteEssence = CliDB.AzeriteEssenceStorage.LookupByKey(azeriteItemResult.Read<uint>(5 + i * 4 + j));
|
||||
AzeriteEssenceRecord azeriteEssence = CliDB.AzeriteEssenceStorage.LookupByKey(azeriteItemResult.Read<uint>(5 + i * 5 + j));
|
||||
if (azeriteEssence == null || !Global.DB2Mgr.IsSpecSetMember(azeriteEssence.SpecSetID, specializationId))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -1047,7 +1047,7 @@ namespace Game.Entities
|
||||
Log.outError(LogFilter.Player, "_LoadBoundInstances: player {0}({1}) has bind to not existed or not dungeon map {2} ({3})", GetName(), GetGUID().ToString(), mapId, mapname);
|
||||
deleteInstance = true;
|
||||
}
|
||||
else if (difficulty >= (int)Difficulty.Max)
|
||||
else if (CliDB.DifficultyStorage.HasRecord(difficulty))
|
||||
{
|
||||
Log.outError(LogFilter.Player, "_LoadBoundInstances: player {0}({1}) has bind to not existed difficulty {2} instance for map {3} ({4})", GetName(), GetGUID().ToString(), difficulty, mapId, mapname);
|
||||
deleteInstance = true;
|
||||
|
||||
@@ -5280,10 +5280,10 @@ namespace Game
|
||||
|
||||
if (dungeonEncounter.DifficultyID == 0)
|
||||
{
|
||||
for (uint i = 0; i < (int)Difficulty.Max; ++i)
|
||||
foreach (var difficulty in CliDB.DifficultyStorage.Values)
|
||||
{
|
||||
if (Global.DB2Mgr.GetMapDifficultyData((uint)dungeonEncounter.MapID, (Difficulty)i) != null)
|
||||
_dungeonEncounterStorage.Add(MathFunctions.MakePair64((uint)dungeonEncounter.MapID, i), new DungeonEncounter(dungeonEncounter, creditType, creditEntry, lastEncounterDungeon));
|
||||
if (Global.DB2Mgr.GetMapDifficultyData((uint)dungeonEncounter.MapID, (Difficulty)difficulty.Id) != null)
|
||||
_dungeonEncounterStorage.Add(MathFunctions.MakePair64((uint)dungeonEncounter.MapID, difficulty.Id), new DungeonEncounter(dungeonEncounter, creditType, creditEntry, lastEncounterDungeon));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -24,6 +24,7 @@ using Game.Maps;
|
||||
using Game.Network;
|
||||
using Game.Network.Packets;
|
||||
using System;
|
||||
using Game.DataStorage;
|
||||
|
||||
namespace Game
|
||||
{
|
||||
@@ -71,9 +72,9 @@ namespace Game
|
||||
packet.Events.Add(eventInfo);
|
||||
}
|
||||
|
||||
for (Difficulty i = 0; i < Difficulty.Max; ++i)
|
||||
foreach (var difficulty in CliDB.DifficultyStorage.Values)
|
||||
{
|
||||
var boundInstances = _player.GetBoundInstances(i);
|
||||
var boundInstances = _player.GetBoundInstances((Difficulty)difficulty.Id);
|
||||
if (boundInstances != null)
|
||||
{
|
||||
foreach (var boundInstance in boundInstances.Values)
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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`;
|
||||
Reference in New Issue
Block a user