void _groomContainers(ContainerManager contManager) { this.log("Grooming containers..."); foreach (var fromCont in contManager.GetContainers()) { int iFrom = fromCont.GetInventory().ItemCount - 1; while (iFrom >= 0) { MyInventoryItem item = fromCont.GetInventory().GetItemAt(iFrom).Value; int fromAff = fromCont.GetAffinity(item); int prevCount = fromCont.GetInventory().ItemCount; int prevFrom = iFrom; foreach (var toCont in contManager.GetSortedContainers(item)) { if (toCont.GetAffinity(item) > fromAff) { fromCont.GetInventory().TransferItemTo(toCont.GetInventory(), item); if (prevCount != fromCont.GetInventory().ItemCount) { --iFrom; break; } } else { --iFrom; break; } } if (prevFrom == iFrom) { --iFrom; } } } this.log("Done"); }