示例#1
0
        /// <summary>
        ///     Creates a new item
        /// </summary>
        /// <exception cref="ArgumentException"></exception>
        public PlayerItem Create(ItemNumber itemNumber,
                                 ushort period, byte color, EffectNumber[] effects, uint count)
        {
            var shop = GameServer.Instance.ResourceCache.GetShop();

            var shopItemInfo = shop.GetFirstItemInfo(itemNumber);

            if (shopItemInfo == null)
            {
                throw new ArgumentException($"Item not found : {itemNumber.Id}");
            }

            var itemEffects = new List <EffectNumber>();

            foreach (var effect in shopItemInfo.EffectGroup.Effects)
            {
                itemEffects.Add(effect.Effect);
            }

            var priceType  = shopItemInfo.PriceGroup.PriceType;
            var periodType = shopItemInfo.PriceGroup.Prices.FirstOrDefault().PeriodType;
            var periodNr   = shopItemInfo.PriceGroup.Prices.FirstOrDefault().Period;

            return(Create(itemNumber, priceType, periodType, periodNr, color, itemEffects.ToArray(), count));
        }
示例#2
0
        /// <summary>
        ///     Creates a new item
        /// </summary>
        /// <exception cref="ArgumentException"></exception>
        public PlayerItem CreateSilent(ItemNumber itemNumber,
                                       ushort period, byte color, uint count)
        {
            var shop = GameServer.Instance.ResourceCache.GetShop();

            var shopItemInfo = shop.GetFirstItemInfo(itemNumber);

            if (shopItemInfo == null)
            {
                throw new ArgumentException($"Item not found : {itemNumber.Id}");
            }

            if (shopItemInfo == null)
            {
                throw new ArgumentException($"Item not found : {itemNumber.Id}");
            }

            var price = shopItemInfo.PriceGroup.Prices.FirstOrDefault();

            if (price == null)
            {
                throw new ArgumentException($"Item has no price");
            }

            var effects = shopItemInfo.EffectGroup.Effects.Select(x => (EffectNumber)x.Effect).ToArray();

            return(CreateSilent(shopItemInfo, price, color, effects, count));
        }
示例#3
0
        /// <summary>
        ///     Creates a new item
        /// </summary>
        /// <exception cref="ArgumentException"></exception>
        public PlayerItem Create(ItemNumber itemNumber, ItemPriceType priceType, ItemPeriodType periodType,
                                 ushort period, byte color, uint[] effects, uint count)
        {
            var shop         = GameServer.Instance.ResourceCache.GetShop();
            var shopItemInfo = shop.GetItemInfo(itemNumber, priceType);

            if (shopItemInfo == null)
            {
                throw new ArgumentException("Item not found");
            }

            var price = shopItemInfo.PriceGroup.GetPrice(periodType, period);

            if (price == null)
            {
                throw new ArgumentException("Price not found");
            }
            return(Create(shopItemInfo, price, color, effects, count));
        }