/// <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)); }
/// <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)); }
/// <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)); }