public void ProcessGoods(bool clear = false)
{
if (!Settings.GoodsOn)
{
return;
}
var script = NPCScript.Get(ScriptID);
List <UserItem> deleteList = new List <UserItem>();
foreach (var playerGoods in BuyBack)
{
List <UserItem> items = playerGoods.Value;
for (int i = 0; i < items.Count; i++)
{
UserItem item = items[i];
if (DateTime.Compare(item.BuybackExpiryDate.AddMinutes(Settings.GoodsBuyBackTime), Envir.Now) <= 0 || clear)
{
deleteList.Add(BuyBack[playerGoods.Key][i]);
if (script.UsedTypes.Count != 0 && !script.UsedTypes.Contains(item.Info.Type))
{
continue;
}
var multiCount = UsedGoods.Count(x => x.Info.Index == item.Info.Index);
if (multiCount >= Settings.GoodsMaxStored)
{
UserItem nonAddedItem = UsedGoods.FirstOrDefault(e => e.IsAdded == false);
if (nonAddedItem != null)
{
UsedGoods.Remove(nonAddedItem);
}
else
{
UsedGoods.RemoveAt(0);
}
}
UsedGoods.Add(item);
NeedSave = true;
}
}
for (int i = 0; i < deleteList.Count; i++)
{
BuyBack[playerGoods.Key].Remove(deleteList[i]);
}
}
}