コード例 #1
0
ファイル: AzeriteHandler.cs プロジェクト: wergy/CypherCore
        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);
        }
コード例 #2
0
        public bool HasUnlockedEssenceSlot(byte slot)
        {
            AzeriteItemMilestonePowerRecord milestone = Global.DB2Mgr.GetAzeriteItemMilestonePower(slot);

            return(m_azeriteItemData.UnlockedEssenceMilestones.FindIndex(milestone.Id) != -1);
        }