Пример #1
0
        public void UpgradeHeirloom(uint itemId, uint castItem)
        {
            Player player = _owner.GetPlayer();

            if (!player)
            {
                return;
            }

            HeirloomRecord heirloom = Global.DB2Mgr.GetHeirloomByItemId(itemId);

            if (heirloom == null)
            {
                return;
            }

            var data = _heirlooms.LookupByKey(itemId);

            if (data == null)
            {
                return;
            }

            HeirloomPlayerFlags flags = data.flags;
            uint bonusId = 0;

            if (heirloom.UpgradeItemID[0] == castItem)
            {
                flags  |= HeirloomPlayerFlags.BonusLevel90;
                bonusId = heirloom.UpgradeItemBonusListID[0];
            }
            if (heirloom.UpgradeItemID[1] == castItem)
            {
                flags  |= HeirloomPlayerFlags.BonusLevel100;
                bonusId = heirloom.UpgradeItemBonusListID[1];
            }
            if (heirloom.UpgradeItemID[2] == castItem)
            {
                flags  |= HeirloomPlayerFlags.BonusLevel110;
                bonusId = heirloom.UpgradeItemBonusListID[2];
            }
            if (heirloom.UpgradeItemID[3] == castItem)
            {
                flags  |= HeirloomPlayerFlags.BonusLevel120;
                bonusId = heirloom.UpgradeItemBonusListID[3];
            }

            foreach (Item item in player.GetItemListByEntry(itemId, true))
            {
                item.AddBonuses(bonusId);
            }

            // Get heirloom offset to update only one part of dynamic field
            List <uint> heirlooms = player.m_activePlayerData.Heirlooms;
            int         offset    = heirlooms.IndexOf(itemId);

            player.SetHeirloomFlags(offset, (uint)flags);
            data.flags   = flags;
            data.bonusId = bonusId;
        }
Пример #2
0
 public void AddHeirloom(uint itemId, HeirloomPlayerFlags flags)
 {
     if (UpdateAccountHeirlooms(itemId, flags))
     {
         _owner.GetPlayer().AddHeirloom(itemId, (uint)flags);
     }
 }
Пример #3
0
 public void AddHeirloom(uint itemId, HeirloomPlayerFlags flags)
 {
     if (UpdateAccountHeirlooms(itemId, flags))
     {
         _owner.GetPlayer().AddDynamicValue(ActivePlayerDynamicFields.Heirlooms, itemId);
         _owner.GetPlayer().AddDynamicValue(ActivePlayerDynamicFields.HeirloomFlags, (uint)flags);
     }
 }
Пример #4
0
        bool UpdateAccountHeirlooms(uint itemId, HeirloomPlayerFlags flags)
        {
            if (_heirlooms.ContainsKey(itemId))
            {
                return(false);
            }

            _heirlooms.Add(itemId, new HeirloomData(flags, 0));
            return(true);
        }
Пример #5
0
        public void UpgradeHeirloom(uint itemId, uint castItem)
        {
            Player player = _owner.GetPlayer();

            if (!player)
            {
                return;
            }

            HeirloomRecord heirloom = Global.DB2Mgr.GetHeirloomByItemId(itemId);

            if (heirloom == null)
            {
                return;
            }

            var data = _heirlooms.LookupByKey(itemId);

            if (data == null)
            {
                return;
            }

            HeirloomPlayerFlags flags = data.flags;
            uint bonusId = 0;

            if (heirloom.UpgradeItemID[0] == castItem)
            {
                flags  |= HeirloomPlayerFlags.BonusLevel90;
                bonusId = heirloom.ItemBonusListID[0];
            }
            if (heirloom.UpgradeItemID[1] == castItem)
            {
                flags  |= HeirloomPlayerFlags.BonusLevel100;
                bonusId = heirloom.ItemBonusListID[1];
            }
            if (heirloom.UpgradeItemID[2] == castItem)
            {
                flags  |= HeirloomPlayerFlags.BonusLevel110;
                bonusId = heirloom.ItemBonusListID[2];
            }

            foreach (Item item in player.GetItemListByEntry(itemId, true))
            {
                item.AddBonuses(bonusId);
            }

            // Get heirloom offset to update only one part of dynamic field
            var    fields = player.GetDynamicValues(PlayerDynamicFields.Heirlooms);
            ushort offset = (ushort)Array.IndexOf(fields, itemId);

            player.SetDynamicValue(PlayerDynamicFields.HeirloomsFlags, offset, (uint)flags);
            data.flags   = flags;
            data.bonusId = bonusId;
        }
Пример #6
0
        public void LoadAccountHeirlooms(SQLResult result)
        {
            if (result.IsEmpty())
            {
                return;
            }

            do
            {
                uint itemId = result.Read <uint>(0);
                HeirloomPlayerFlags flags = (HeirloomPlayerFlags)result.Read <uint>(1);

                HeirloomRecord heirloom = Global.DB2Mgr.GetHeirloomByItemId(itemId);
                if (heirloom == null)
                {
                    continue;
                }

                uint bonusId = 0;

                if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel120))
                {
                    bonusId = heirloom.UpgradeItemBonusListID[3];
                }
                else if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel110))
                {
                    bonusId = heirloom.UpgradeItemBonusListID[2];
                }
                else if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel100))
                {
                    bonusId = heirloom.UpgradeItemBonusListID[1];
                }
                else if (flags.HasAnyFlag(HeirloomPlayerFlags.BonusLevel90))
                {
                    bonusId = heirloom.UpgradeItemBonusListID[0];
                }

                _heirlooms[itemId] = new HeirloomData(flags, bonusId);
            } while (result.NextRow());
        }
Пример #7
0
 public HeirloomData(HeirloomPlayerFlags _flags = 0, uint _bonusId = 0)
 {
     flags   = _flags;
     bonusId = _bonusId;
 }