diff --git a/Source/Game/Entities/Item/AzeriteEmpoweredItem.cs b/Source/Game/Entities/Item/AzeriteEmpoweredItem.cs index c5e979f23..a8109b79e 100644 --- a/Source/Game/Entities/Item/AzeriteEmpoweredItem.cs +++ b/Source/Game/Entities/Item/AzeriteEmpoweredItem.cs @@ -52,18 +52,24 @@ namespace Game.Entities public override void SaveToDB(SQLTransaction trans) { - base.SaveToDB(trans); - PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_ITEM_INSTANCE_AZERITE_EMPOWERED); stmt.AddValue(0, GetGUID().GetCounter()); trans.Append(stmt); - stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_ITEM_INSTANCE_AZERITE_EMPOWERED); - stmt.AddValue(0, GetGUID().GetCounter()); - for (int i = 0; i < SharedConst.MaxAzeriteEmpoweredTier; ++i) - stmt.AddValue(1 + i, m_azeriteEmpoweredItemData.Selections[i]); + switch (GetState()) + { + case ItemUpdateState.New: + case ItemUpdateState.Changed: + stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_ITEM_INSTANCE_AZERITE_EMPOWERED); + stmt.AddValue(0, GetGUID().GetCounter()); + for (int i = 0; i < SharedConst.MaxAzeriteEmpoweredTier; ++i) + stmt.AddValue(1 + i, m_azeriteEmpoweredItemData.Selections[i]); - trans.Append(stmt); + trans.Append(stmt); + break; + } + + base.SaveToDB(trans); } public void LoadAzeriteEmpoweredItemData(Player owner, AzeriteEmpoweredData azeriteEmpoweredItem) diff --git a/Source/Game/Entities/Item/AzeriteItem.cs b/Source/Game/Entities/Item/AzeriteItem.cs index 0b242ebdf..3d9cd5ee0 100644 --- a/Source/Game/Entities/Item/AzeriteItem.cs +++ b/Source/Game/Entities/Item/AzeriteItem.cs @@ -53,57 +53,64 @@ namespace Game.Entities public override void SaveToDB(SQLTransaction trans) { - base.SaveToDB(trans); - PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_ITEM_INSTANCE_AZERITE); stmt.AddValue(0, GetGUID().GetCounter()); trans.Append(stmt); - stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_ITEM_INSTANCE_AZERITE); - stmt.AddValue(0, GetGUID().GetCounter()); - stmt.AddValue(1, m_azeriteItemData.Xp); - stmt.AddValue(2, m_azeriteItemData.Level); - stmt.AddValue(3, m_azeriteItemData.KnowledgeLevel); - - int specIndex = 0; - for (; specIndex < m_azeriteItemData.SelectedEssences.Size(); ++specIndex) - { - stmt.AddValue(4 + specIndex * 4, m_azeriteItemData.SelectedEssences[specIndex].SpecializationID); - for (var j = 0; j < SharedConst.MaxAzeriteEssenceSlot; ++j) - stmt.AddValue(5 + specIndex * 4 + j, m_azeriteItemData.SelectedEssences[specIndex].AzeriteEssenceID[j]); - } - for (; specIndex < PlayerConst.MaxSpecializations; ++specIndex) - { - stmt.AddValue(4 + specIndex * 4, 0); - for (var j = 0; j < SharedConst.MaxAzeriteEssenceSlot; ++j) - stmt.AddValue(5 + specIndex * 4 + j, 0); - } - trans.Append(stmt); - stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_ITEM_INSTANCE_AZERITE_MILESTONE_POWER); stmt.AddValue(0, GetGUID().GetCounter()); trans.Append(stmt); - foreach (uint azeriteItemMilestonePowerId in m_azeriteItemData.UnlockedEssenceMilestones) - { - stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_ITEM_INSTANCE_AZERITE_MILESTONE_POWER); - stmt.AddValue(0, GetGUID().GetCounter()); - stmt.AddValue(1, azeriteItemMilestonePowerId); - trans.Append(stmt); - } - stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_ITEM_INSTANCE_AZERITE_UNLOCKED_ESSENCE); stmt.AddValue(0, GetGUID().GetCounter()); trans.Append(stmt); - foreach (UnlockedAzeriteEssence azeriteEssence in m_azeriteItemData.UnlockedEssences) + switch (GetState()) { - stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_ITEM_INSTANCE_AZERITE_UNLOCKED_ESSENCE); - stmt.AddValue(0, GetGUID().GetCounter()); - stmt.AddValue(1, azeriteEssence.AzeriteEssenceID); - stmt.AddValue(2, azeriteEssence.Rank); - trans.Append(stmt); + case ItemUpdateState.New: + case ItemUpdateState.Changed: + stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_ITEM_INSTANCE_AZERITE); + stmt.AddValue(0, GetGUID().GetCounter()); + stmt.AddValue(1, m_azeriteItemData.Xp); + stmt.AddValue(2, m_azeriteItemData.Level); + stmt.AddValue(3, m_azeriteItemData.KnowledgeLevel); + + int specIndex = 0; + for (; specIndex < m_azeriteItemData.SelectedEssences.Size(); ++specIndex) + { + stmt.AddValue(4 + specIndex * 4, 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]); + } + for (; specIndex < PlayerConst.MaxSpecializations; ++specIndex) + { + stmt.AddValue(4 + specIndex * 4, 0); + for (int j = 0; j < SharedConst.MaxAzeriteEssenceSlot; ++j) + stmt.AddValue(5 + specIndex * 4 + j, 0); + } + + trans.Append(stmt); + + foreach (uint azeriteItemMilestonePowerId in m_azeriteItemData.UnlockedEssenceMilestones) + { + stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_ITEM_INSTANCE_AZERITE_MILESTONE_POWER); + stmt.AddValue(0, GetGUID().GetCounter()); + stmt.AddValue(1, azeriteItemMilestonePowerId); + trans.Append(stmt); + } + + foreach (var azeriteEssence in m_azeriteItemData.UnlockedEssences) + { + stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_ITEM_INSTANCE_AZERITE_UNLOCKED_ESSENCE); + stmt.AddValue(0, GetGUID().GetCounter()); + stmt.AddValue(1, azeriteEssence.AzeriteEssenceID); + stmt.AddValue(2, azeriteEssence.Rank); + trans.Append(stmt); + } + break; } + + base.SaveToDB(trans); } public void LoadAzeriteItemData(Player owner, AzeriteData azeriteData)