Exemple #1
0
 private static void KillSteal()
 {
     if (MainMenu["KillSteal"]["Q"] && Q.IsReady())
     {
         var targets =
             Variables.TargetSelector.GetTargets(float.MaxValue, Q.DamageType)
                 .Where(i => !IsKillByMark(i) && IsInRangeQ(i) && i.Health + i.PhysicalShield <= Q.GetDamage(i))
                 .ToList();
         if (targets.Count > 0)
         {
             var spellQ = new Spell(Q.Slot, Q.Range).SetSkillshot(Q.Delay, Q.Width, Q.Speed, true, Q.Type);
             foreach (var target in targets)
             {
                 spellQ.UpdateSourcePosition();
                 var pPred = spellQ.VPrediction(target, true, QColObjects);
                 Prediction.PredictionOutput wPred = null;
                 if (WShadowCanQ)
                 {
                     spellQ.UpdateSourcePosition(wShadow.ServerPosition, wShadow.ServerPosition);
                     wPred = spellQ.VPrediction(target, true, QColObjects);
                 }
                 Prediction.PredictionOutput rPred = null;
                 if (RShadowCanQ)
                 {
                     spellQ.UpdateSourcePosition(rShadow.ServerPosition, rShadow.ServerPosition);
                     rPred = spellQ.VPrediction(target, true, QColObjects);
                 }
                 var pHitChance = pPred.Hitchance;
                 var wHitChance = wPred?.Hitchance ?? HitChance.None;
                 var rHitChance = rPred?.Hitchance ?? HitChance.None;
                 var maxHit = (HitChance)Math.Max(Math.Max((int)wHitChance, (int)rHitChance), (int)pHitChance);
                 if (maxHit >= Q.MinHitChance)
                 {
                     if (wPred != null && maxHit == wHitChance)
                     {
                         Q.Cast(wPred.CastPosition);
                     }
                     else if (rPred != null && maxHit == rHitChance)
                     {
                         Q.Cast(rPred.CastPosition);
                     }
                     else if (maxHit == pHitChance)
                     {
                         Q.Cast(pPred.CastPosition);
                     }
                     break;
                 }
                 if (target.Health + target.PhysicalShield > Q.GetDamage(target, Damage.DamageStage.SecondForm))
                 {
                     continue;
                 }
                 if (wPred != null && wHitChance == HitChance.Collision
                     && !wPred.CollisionObjects.Any(i => i.IsMe))
                 {
                     Q.Cast(wPred.CastPosition);
                 }
                 else if (rPred != null && rHitChance == HitChance.Collision
                          && !rPred.CollisionObjects.Any(i => i.IsMe))
                 {
                     Q.Cast(rPred.CastPosition);
                 }
                 else if (pHitChance == HitChance.Collision && !pPred.CollisionObjects.Any(i => i.IsMe))
                 {
                     Q.Cast(pPred.CastPosition);
                 }
             }
         }
     }
     if (MainMenu["KillSteal"]["E"] && E.IsReady()
         && Variables.TargetSelector.GetTargets(float.MaxValue, E.DamageType)
                .Where(i => !IsKillByMark(i) && IsInRangeE(i))
                .Any(i => i.Health + i.PhysicalShield <= E.GetDamage(i)))
     {
         E.Cast();
     }
 }