protected async Task <bool> ConvertAllItems( IEnumerable <BagSlot> bagSlots, ushort maxWait) { foreach (var bagSlot in bagSlots) { var name = bagSlot.Name; Log("Attempting to convert {0}.", name); if (bagSlot.Item != null && (bagSlot.Item.Unique || bagSlot.Item.Untradeable)) { continue; } var startingId = bagSlot.TrueItemId; //Check to make sure the bagslots contents doesn't change while (bagSlot.TrueItemId == startingId && bagSlot.Count > 0) { var result = await CommonTasks.ConvertToMateria(bagSlot, maxWait); if (result.HasFlag(SpiritbondResult.Success)) { continue; } Log("Unable to convert \"{0}\" due to {1}.", name, result); break; } await Coroutine.Sleep(500); } return(true); }