Ejemplo n.º 1
0
 public SpellBase(SpellSlot slot, SpellType?type, int range = int.MaxValue)
 {
     Slot         = slot;
     Type         = type ?? SpellType.Self;
     Range        = range;
     Game.OnTick += delegate
     {
         if (FpsBooster.CanBeExecuted(CalculationType.Prediction))
         {
         }
         CachedPredictions.Clear();
         if (FpsBooster.CanBeExecuted(CalculationType.Damage))
         {
             _cachedDamage.Clear();
         }
         if (FpsBooster.CanBeExecuted(CalculationType.HealthPrediction))
         {
             _killableMinions.Clear();
         }
         if (FpsBooster.CanBeExecuted(CalculationType.IsValidTarget))
         {
         }
         _cachedObjectsInRange.Clear();
         _cachedIsOnSegment.Clear();
         _enemyHeroesCanBeCalculated      = true;
         _laneClearMinionsCanBeCalculated = true;
         _enemyMinionsCanBeCalculated     = true;
         _monstersCanBeCalculated         = true;
         _bestObjectInLine.Hits           = 0;
         _bestCircularObject.Hits         = 0;
     };
 }
Ejemplo n.º 2
0
 public static void Initialize()
 {
     Game.OnTick += delegate
     {
         if (FpsBooster.CanBeExecuted(CalculationType.IsValidTarget))
         {
         }
         ValidHeroes.Clear();
         ValidHeroes.AddRange(EntityManager.Heroes.AllHeroes.Where(h => h.IsValidTarget()));
         ValidEnemyHeroes.Clear();
         ValidEnemyHeroes.AddRange(ValidHeroes.Where(h => h.IsEnemy && !h.HasUndyingBuff() && !h.HasIgnite()));
         ValidEnemyHeroesInRange.Clear();
         ValidEnemyHeroesInRange.AddRange(ValidEnemyHeroes.Where(h => AIO.MyHero.IsInRange(h, AIO.CurrentChampion.Range + h.BoundingRadius)));
         ValidAllyHeroes.Clear();
         ValidAllyHeroes.AddRange(ValidHeroes.Where(h => h.IsAlly));
         ValidAllyHeroesInRange.Clear();
         ValidAllyHeroesInRange.AddRange(ValidAllyHeroes.Where(h => AIO.MyHero.IsInRange(h, AIO.CurrentChampion.Range + h.BoundingRadius)));
     };
 }
Ejemplo n.º 3
0
 public static void Initialize()
 {
     Game.OnTick += delegate
     {
         if (FpsBooster.CanBeExecuted(CalculationType.Distance))
         {
         }
         CachedDistanceSqr.Clear();
         CachedDistance.Clear();
         CachedInRange.Clear();
         CachedInAutoAttackRange.Clear();
         if (FpsBooster.CanBeExecuted(CalculationType.IsValidTarget))
         {
         }
         CachedHasBuff.Clear();
         if (FpsBooster.CanBeExecuted(CalculationType.Damage))
         {
         }
         CachedAutoAttackDamage.Clear();
     };
 }
Ejemplo n.º 4
0
 public static void Initialize()
 {
     Game.OnTick += delegate
     {
         if (FpsBooster.CanBeExecuted(CalculationType.Distance))
         {
         }
         foreach (var pair in CachedDistanceSqr)
         {
             pair.Value.Clear();
         }
         foreach (var pair in CachedDistance)
         {
             pair.Value.Clear();
         }
         foreach (var pair in CachedInRange.SelectMany(pair => pair.Value))
         {
             pair.Value.Clear();
         }
         foreach (var pair in CachedInAutoAttackRange)
         {
             pair.Value.Clear();
         }
         if (FpsBooster.CanBeExecuted(CalculationType.IsValidTarget))
         {
         }
         foreach (var pair in CachedHasBuff)
         {
             pair.Value.Clear();
         }
         if (FpsBooster.CanBeExecuted(CalculationType.Damage))
         {
         }
         foreach (var pair in CachedAutoAttackDamage)
         {
             pair.Value.Clear();
         }
     };
 }
Ejemplo n.º 5
0
 public virtual BestDamageResult GetBestCombo(Obj_AI_Base target)
 {
     if (target != null)
     {
         var canBeCalculated = FpsBooster.CanBeExecuted(CalculationType.Damage);
         if (!PredictedDamage.ContainsKey(target.NetworkId))
         {
             PredictedDamage[target.NetworkId] = new BestDamageResult {
                 Target = target
             };
             canBeCalculated = false;
         }
         var bestDamage = PredictedDamage[target.NetworkId];
         if (!canBeCalculated)
         {
             return(bestDamage);
         }
         bestDamage = new BestDamageResult {
             Target = target
         };
         foreach (var r1 in R.IsReady ? new[] { false, true } : new[] { false })
         {
             var list = new List <SpellBase> {
                 Smite, Ignite
             };
             var manaWasted = 0f;
             if (r1)
             {
                 list.Add(R);
                 manaWasted = R.Mana;
             }
             foreach (var q1 in Q.IsReady ? new[] { false, true } : new[] { false })
             {
                 if (q1)
                 {
                     list.Add(Q);
                     manaWasted += Q.Mana;
                 }
                 foreach (var w1 in W.IsReady ? new[] { false, true } : new[] { false })
                 {
                     if (w1)
                     {
                         list.Add(W);
                         manaWasted += W.Mana;
                     }
                     foreach (var e1 in E.IsReady ? new[] { false, true } : new[] { false })
                     {
                         if (e1)
                         {
                             list.Add(E);
                             manaWasted += E.Mana;
                         }
                         if (manaWasted <= MyHero.Mana)
                         {
                             var result = GetComboDamage(target, list);
                             if (bestDamage.Damage >= target.TotalShieldHealth())
                             {
                                 if (result >= target.TotalShieldHealth() &&
                                     (result < bestDamage.Damage || manaWasted < bestDamage.Mana ||
                                      (bestDamage.R && !r1)))
                                 {
                                     bestDamage.Damage = result;
                                     bestDamage.Mana   = manaWasted;
                                     bestDamage.List   = list;
                                 }
                             }
                             else
                             {
                                 if (result >= bestDamage.Damage)
                                 {
                                     bestDamage.Damage = result;
                                     bestDamage.Mana   = manaWasted;
                                     bestDamage.List   = list;
                                 }
                             }
                         }
                     }
                 }
             }
         }
         PredictedDamage[target.NetworkId] = bestDamage;
         return(PredictedDamage[target.NetworkId]);
     }
     return(new BestDamageResult {
         Damage = 0, Mana = 0
     });
 }