Пример #1
0
        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);
        }