public MerchantItem MoveToMerchantBag(BasePlayerItem item, uint quantity, uint price) { MerchantItem result; if (!base.HasItem(item)) { result = null; } else { if (quantity > item.Stack || quantity == 0u) { result = null; } else { if (item.IsLinked()) { result = null; } else { this.RemoveItem(item, quantity, true); MerchantItem merchantItem = this.Owner.MerchantBag.FirstOrDefault((MerchantItem x) => x.MustStackWith(item)); if (merchantItem != null) { merchantItem.Price = price; this.Owner.MerchantBag.StackItem(merchantItem, quantity); result = merchantItem; } else { MerchantItem merchantItem2 = Singleton <ItemManager> .Instance.CreateMerchantItem(item, quantity, price); this.Owner.MerchantBag.AddItem(merchantItem2); result = merchantItem2; } } } } return(result); }
public bool MustStackWith(MerchantItem compared) { return(compared.Template.Id == Template.Id && compared.Effects.CompareEnumerable(Effects)); }