예제 #1
0
        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);
        }
예제 #2
0
        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);
        }