public static async Task <bool> ReduceAllItems(IEnumerable <BagSlot> bagSlots, ushort maxWait = 5000) { // TODO: Maybe log info why we can't reduce better foreach (var bagSlot in bagSlots.Where(bs => bs.IsReducable)) { var result = await CommonTasks.AetherialReduction(bagSlot); if (result.HasFlag(AetherialReductionResult.Failure)) { Logger.Instance.Error(Localization.Localization.PurifyDialog, result); } await Behaviors.Sleep(500); } return(true); }
private async Task <bool> Reduction() { //Reduce if (ReduceSettings.Instance.AEZoneCheck && ReduceSettings.Instance.AEZone != 0) { if (WorldManager.ZoneId != (ushort)ReduceSettings.Instance.AEZone) { return(false); } await Coroutine.Sleep(5000); } if (MovementManager.IsOccupied) { return(false); } if (Core.Me.IsMounted) { ActionManager.Dismount(); } await Coroutine.Wait(5000, () => !MovementManager.IsOccupied && !Core.Me.IsMounted); Console.WriteLine("{" + string.Join($"", Core.Me.Name) + "}"); while (InventoryManager.FilledSlots.Any(x => inventoryBagIds.Contains(x.BagId) && x.CanReduce)) //&& WorldManager.ZoneId == (ushort) ReduceSettings.Instance.AEZone ) { var item = InventoryManager.FilledSlots.FirstOrDefault(x => inventoryBagIds.Contains(x.BagId) && x.CanReduce); if (item == null) { break; } Log($"Reducing - Name: {item.Item.CurrentLocaleName}"); await CommonTasks.AetherialReduction(item); } return(true); }