void HandleAzeriteEssenceUnlockMilestone(AzeriteEssenceUnlockMilestone azeriteEssenceUnlockMilestone) { if (!AzeriteItem.FindHeartForge(_player)) { return; } Item item = _player.GetItemByEntry(PlayerConst.ItemIdHeartOfAzeroth, ItemSearchLocation.Everywhere); if (!item) { return; } AzeriteItem azeriteItem = item.ToAzeriteItem(); if (!azeriteItem || !azeriteItem.CanUseEssences()) { return; } AzeriteItemMilestonePowerRecord milestonePower = CliDB.AzeriteItemMilestonePowerStorage.LookupByKey(azeriteEssenceUnlockMilestone.AzeriteItemMilestonePowerID); if (milestonePower == null || milestonePower.RequiredLevel > azeriteItem.GetLevel()) { return; } // check that all previous milestones are unlocked foreach (AzeriteItemMilestonePowerRecord previousMilestone in Global.DB2Mgr.GetAzeriteItemMilestonePowers()) { if (previousMilestone == milestonePower) { break; } if (!azeriteItem.HasUnlockedEssenceMilestone(previousMilestone.Id)) { return; } } azeriteItem.AddUnlockedEssenceMilestone(milestonePower.Id); _player.ApplyAzeriteItemMilestonePower(azeriteItem, milestonePower, true); azeriteItem.SetState(ItemUpdateState.Changed, _player); }
public bool HasUnlockedEssenceSlot(byte slot) { AzeriteItemMilestonePowerRecord milestone = Global.DB2Mgr.GetAzeriteItemMilestonePower(slot); return(m_azeriteItemData.UnlockedEssenceMilestones.FindIndex(milestone.Id) != -1); }