public ISerializableBotTask GetNextTankingModulesTask(double estimatedIncomingDps) { DynamicTask task = new DynamicTask(); var shieldBoosters = Fit.GetShieldBoostersModules().ToList(); if (HitpointsAndEnergy.Shield < 600) { if (estimatedIncomingDps <= 150) { task.With($"Incoming DPS is {estimatedIncomingDps}. Turning on single SB"); return(shieldBoosters.FirstOrDefault().EnsureActive(bot, true) ?? shieldBoosters.Skip(1).Select(sb => sb.EnsureActive(bot, false)) .FirstOrDefault(t => t != null)); } else { return(shieldBoosters.Select(sb => sb.EnsureActive(bot, true)) .FirstOrDefault(t => t != null)); } } else { if (HitpointsAndEnergy.Shield > 800 || HitpointsAndEnergy.Capacitor < 400) { task.With("Shield HP OK, energy low, turning off SB."); foreach (var sb in shieldBoosters) { var t = sb.EnsureActive(bot, false); if (t != null) { return(t); } } } } return(null); }