var i = 0; var u = 0; var startTime = DateTime.Now; var intervalInMinutes = 0.1; var seedsPerMinute = 0; var lastPotionLevel = -1; var maxIdleTimeInSeconds = 60; // Maximum time without generating seeds OnIntercept((In.ErrorReport, In["FurniListInvalidate"], In["UnseenItems"], In.PetStatusUpdate, In.PetBreedingResult), e => e.Block()); OnIntercept((In.PetBreedingResult), e => { i++; u++; Log($"Seeds generated {u}"); e.Block(); }); var potionLevels = new[] { new[] { 6801395, 6801396, 6801397, 6801398, 6801400, 6801399 }, new[] { 6801403, 6801401, 6801402 }, new[] { 6801404, 6801406, 6801405 } }; while (Run) { foreach (var pet in Pets) { int potion = 0; foreach (var level in potionLevels) { if (Array.IndexOf(level, (int)pet.Id) != -1 && (int)pet.Id != lastPotionLevel) { potion = (int)FloorItems.NamedLike($"Rebreeding Potion {Array.IndexOf(potionLevels, level) + 1}").First().Id; lastPotionLevel = (int)pet.Id; break; } } Send(Out["CustomizePetWithFurni"], potion, (int)pet.Id); Delay(100); Send(Out.BreedPets, 0, (int)pet.Id, (int)pet.Id); Delay(200); } var elapsedTime = (DateTime.Now - startTime).TotalMinutes; if (elapsedTime >= intervalInMinutes) { seedsPerMinute = (int)(i / elapsedTime); Log($"Seeds generated per minute: {seedsPerMinute}"); if (seedsPerMinute == 0) { Log("Seeds generated per minute hit zero. Restarting the script..."); Delay(1000); i = 0; u = 0; startTime = DateTime.Now; } else { i = 0; startTime = DateTime.Now; } } if ((DateTime.Now - startTime).TotalSeconds >= maxIdleTimeInSeconds) { Log($"Script was idle for too long. Restarting the script..."); Delay(1000); i = 0; u = 0; startTime = DateTime.Now; } }