public static bool CanPayCost(ItemCost cost, Player player)
        {
            int count = 0;

            foreach (var v in player.inventory)
            {
                if (v != null)
                {
                    if (v.netID == cost.itemid)
                    {
                        count += v.stack;
                    }
                }
            }

            return(count >= cost.count);
        }
        public void Add(ItemCost cost)
        {
            bool found = false;

            foreach (var v in this.cost)
            {
                if (v.itemid == cost.itemid)
                {
                    v.count += cost.count;
                    found    = true;
                    return;
                }
            }

            if (!found)
            {
                this.cost.Add(cost.clone());
            }
        }
        public static void PayCost(ItemCost cost, Player player)
        {
            int count = cost.count;

            foreach (var v in player.inventory)
            {
                if (v != null)
                {
                    if (v.netID == cost.itemid)
                    {
                        if (v.stack <= count)
                        {
                            count -= v.stack;
                            v.TurnToAir();
                        }
                        else
                        {
                            v.stack -= count;
                            break;
                        }
                    }
                }
            }
        }