Core/Items: Implement azerite empowered items
Port From (https://github.com/TrinityCore/TrinityCore/commit/d934824421c83598853487c5cc9e4cbb3c5d0006)
This commit is contained in:
@@ -50,11 +50,11 @@ namespace Game
|
||||
if (previousMilestone == milestonePower)
|
||||
break;
|
||||
|
||||
if (!azeriteItem.HasUnlockedEssenceMilestone(previousMilestone.ID))
|
||||
if (!azeriteItem.HasUnlockedEssenceMilestone(previousMilestone.Id))
|
||||
return;
|
||||
}
|
||||
|
||||
azeriteItem.AddUnlockedEssenceMilestone(milestonePower.ID);
|
||||
azeriteItem.AddUnlockedEssenceMilestone(milestonePower.Id);
|
||||
_player.ApplyAzeriteItemMilestonePower(azeriteItem, milestonePower, true);
|
||||
azeriteItem.SetState(ItemUpdateState.Changed, _player);
|
||||
}
|
||||
@@ -176,5 +176,72 @@ namespace Game
|
||||
|
||||
azeriteItem.SetState(ItemUpdateState.Changed, _player);
|
||||
}
|
||||
|
||||
[WorldPacketHandler(ClientOpcodes.AzeriteEmpoweredItemViewed)]
|
||||
void HandleAzeriteEmpoweredItemViewed(AzeriteEmpoweredItemViewed azeriteEmpoweredItemViewed)
|
||||
{
|
||||
Item item = _player.GetItemByGuid(azeriteEmpoweredItemViewed.ItemGUID);
|
||||
if (item == null || !item.IsAzeriteEmpoweredItem())
|
||||
return;
|
||||
|
||||
item.AddItemFlag(ItemFieldFlags.AzeriteEmpoweredItemViewed);
|
||||
item.SetState(ItemUpdateState.Changed, _player);
|
||||
}
|
||||
|
||||
[WorldPacketHandler(ClientOpcodes.AzeriteEmpoweredItemSelectPower)]
|
||||
void HandleAzeriteEmpoweredItemSelectPower(AzeriteEmpoweredItemSelectPower azeriteEmpoweredItemSelectPower)
|
||||
{
|
||||
Item item = _player.GetItemByPos(azeriteEmpoweredItemSelectPower.ContainerSlot, azeriteEmpoweredItemSelectPower.Slot);
|
||||
if (item == null)
|
||||
return;
|
||||
|
||||
AzeritePowerRecord azeritePower = CliDB.AzeritePowerStorage.LookupByKey(azeriteEmpoweredItemSelectPower.AzeritePowerID);
|
||||
if (azeritePower == null)
|
||||
return;
|
||||
|
||||
AzeriteEmpoweredItem azeriteEmpoweredItem = item.ToAzeriteEmpoweredItem();
|
||||
if (azeriteEmpoweredItem == null)
|
||||
return;
|
||||
|
||||
// Validate tier
|
||||
int actualTier = azeriteEmpoweredItem.GetTierForAzeritePower(_player.GetClass(), azeriteEmpoweredItemSelectPower.AzeritePowerID);
|
||||
if (azeriteEmpoweredItemSelectPower.Tier > SharedConst.MaxAzeriteEmpoweredTier || azeriteEmpoweredItemSelectPower.Tier != actualTier)
|
||||
return;
|
||||
|
||||
uint azeriteLevel = 0;
|
||||
Item heartOfAzeroth = _player.GetItemByEntry(PlayerConst.ItemIdHeartOfAzeroth, ItemSearchLocation.Everywhere);
|
||||
if (heartOfAzeroth == null)
|
||||
return;
|
||||
|
||||
AzeriteItem azeriteItem = heartOfAzeroth.ToAzeriteItem();
|
||||
if (azeriteItem != null)
|
||||
azeriteLevel = azeriteItem.GetEffectiveLevel();
|
||||
|
||||
// Check required heart of azeroth level
|
||||
if (azeriteLevel < azeriteEmpoweredItem.GetRequiredAzeriteLevelForTier((uint)actualTier))
|
||||
return;
|
||||
|
||||
// tiers are ordered backwards, you first select the highest one
|
||||
for (int i = actualTier + 1; i < azeriteEmpoweredItem.GetMaxAzeritePowerTier(); ++i)
|
||||
if (azeriteEmpoweredItem.GetSelectedAzeritePower(i) == 0)
|
||||
return;
|
||||
|
||||
bool activateAzeritePower = azeriteEmpoweredItem.IsEquipped() && heartOfAzeroth.IsEquipped();
|
||||
if (azeritePower.ItemBonusListID != 0 && activateAzeritePower)
|
||||
_player._ApplyItemMods(azeriteEmpoweredItem, azeriteEmpoweredItem.GetSlot(), false);
|
||||
|
||||
azeriteEmpoweredItem.SetSelectedAzeritePower(actualTier, azeriteEmpoweredItemSelectPower.AzeritePowerID);
|
||||
|
||||
if (activateAzeritePower)
|
||||
{
|
||||
// apply all item mods when azerite power grants a bonus, item level changes and that affects stats and auras that scale with item level
|
||||
if (azeritePower.ItemBonusListID != 0)
|
||||
_player._ApplyItemMods(azeriteEmpoweredItem, azeriteEmpoweredItem.GetSlot(), true);
|
||||
else
|
||||
_player.ApplyAzeritePower(azeriteEmpoweredItem, azeritePower, true);
|
||||
}
|
||||
|
||||
azeriteEmpoweredItem.SetState(ItemUpdateState.Changed, _player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2461,15 +2461,19 @@ namespace Game
|
||||
|
||||
stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_ITEM_INSTANCE_AZERITE);
|
||||
stmt.AddValue(0, lowGuid);
|
||||
SetQuery(PlayerLoginQueryLoad.LoadAzerite, stmt);
|
||||
SetQuery(PlayerLoginQueryLoad.Azerite, stmt);
|
||||
|
||||
stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_ITEM_INSTANCE_AZERITE_MILESTONE_POWER);
|
||||
stmt.AddValue(0, lowGuid);
|
||||
SetQuery(PlayerLoginQueryLoad.LoadAzeriteMilestonePowers, stmt);
|
||||
SetQuery(PlayerLoginQueryLoad.AzeriteMilestonePowers, stmt);
|
||||
|
||||
stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_ITEM_INSTANCE_AZERITE_UNLOCKED_ESSENCE);
|
||||
stmt.AddValue(0, lowGuid);
|
||||
SetQuery(PlayerLoginQueryLoad.LoadAzeriteUnlockedEssences, stmt);
|
||||
SetQuery(PlayerLoginQueryLoad.AzeriteUnlockedEssences, stmt);
|
||||
|
||||
stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_ITEM_INSTANCE_AZERITE_EMPOWERED);
|
||||
stmt.AddValue(0, lowGuid);
|
||||
SetQuery(PlayerLoginQueryLoad.AzeriteEmpowered, stmt);
|
||||
|
||||
stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_CHAR_VOID_STORAGE);
|
||||
stmt.AddValue(0, lowGuid);
|
||||
@@ -2633,9 +2637,10 @@ namespace Game
|
||||
Reputation,
|
||||
Inventory,
|
||||
Artifacts,
|
||||
LoadAzerite,
|
||||
LoadAzeriteMilestonePowers,
|
||||
LoadAzeriteUnlockedEssences,
|
||||
Azerite,
|
||||
AzeriteMilestonePowers,
|
||||
AzeriteUnlockedEssences,
|
||||
AzeriteEmpowered,
|
||||
Actions,
|
||||
MailCount,
|
||||
MailDate,
|
||||
|
||||
@@ -29,15 +29,15 @@ namespace Game
|
||||
switch (collectionItemSetFavorite.Type)
|
||||
{
|
||||
case CollectionType.Toybox:
|
||||
GetCollectionMgr().ToySetFavorite(collectionItemSetFavorite.ID, collectionItemSetFavorite.IsFavorite);
|
||||
GetCollectionMgr().ToySetFavorite(collectionItemSetFavorite.Id, collectionItemSetFavorite.IsFavorite);
|
||||
break;
|
||||
case CollectionType.Appearance:
|
||||
{
|
||||
var pair = GetCollectionMgr().HasItemAppearance(collectionItemSetFavorite.ID);
|
||||
var pair = GetCollectionMgr().HasItemAppearance(collectionItemSetFavorite.Id);
|
||||
if (!pair.Item1 || pair.Item2)
|
||||
return;
|
||||
|
||||
GetCollectionMgr().SetAppearanceIsFavorite(collectionItemSetFavorite.ID, collectionItemSetFavorite.IsFavorite);
|
||||
GetCollectionMgr().SetAppearanceIsFavorite(collectionItemSetFavorite.Id, collectionItemSetFavorite.IsFavorite);
|
||||
break;
|
||||
}
|
||||
case CollectionType.TransmogSet:
|
||||
|
||||
@@ -180,7 +180,7 @@ namespace Game
|
||||
break;
|
||||
|
||||
QueryPageTextResponse.PageTextInfo page;
|
||||
page.ID = pageID;
|
||||
page.Id = pageID;
|
||||
page.NextPageID = pageText.NextPageID;
|
||||
page.Text = pageText.Text;
|
||||
page.PlayerConditionID = pageText.PlayerConditionID;
|
||||
|
||||
Reference in New Issue
Block a user