internal void AssasinationCombo(Obj_AI_Hero target) { if ((target != null)) { var dist = Khazix.Distance(target); // Normal abilities if (Q.IsReady() && dist <= Q.Range) { Q.Cast(target); } if (W.IsReady() && !EvolvedW && dist <= W.Range) { var pred = W.GetPrediction(target); if (pred.Hitchance >= Config.GetHitChance("WHitchance")) { W.Cast(pred.CastPosition); } } else if (W.IsReady() && EvolvedW && dist <= WE.Range) { PredictionOutput pred = WE.GetPrediction(target); CastWE(target, pred.UnitPosition.To2D(), 0); } if (Config.GetBool("UseItems")) { UseItems(target); } } }
void AutoEscape() { //Avoid interrupting our assasination attempt if (jumpManager.MidAssasination) { return; } if (Config.GetBool("Safety.autoescape") && !IsHealthy) { if (Khazix.CountEnemiesInRange(500) > 0) { var ally = HeroList.FirstOrDefault(h => h.HealthPercent > 40 && h.CountEnemiesInRange(400) == 0 && !h.ServerPosition.PointUnderEnemyTurret()); if (ally != null && ally.IsValid) { E.Cast(ally.ServerPosition.To2D()); return; } } var underTurret = EnemyTurrets.Any(x => !x.IsDead && x.IsValid && Khazix.Distance(x.Position) <= 900f); if (underTurret || Khazix.CountEnemiesInRange(500) >= 1) { var bestposition = Khazix.ServerPosition.Extend(NexusPosition, E.Range).To2D(); E.Cast(bestposition); return; } } }
void Harass() { if (getCheckBoxItem(harass, "UseQHarass") && Q.IsReady()) { var enemy = TargetSelector.GetTarget(Q.Range, DamageType.Physical); if (enemy.IsValidEnemy()) { Q.Cast(enemy); } } if (getCheckBoxItem(harass, "UseWHarass") && W.IsReady()) { AIHeroClient target = TargetSelector.GetTarget(950, DamageType.Physical); var autoWI = getCheckBoxItem(harass, "Harass.AutoWI"); var autoWD = getCheckBoxItem(harass, "Harass.AutoWD"); var hitchance = HarassHitChance(Config); if (target != null && W.IsReady()) { if (!EvolvedW && Khazix.Distance(target) <= W.Range) { PredictionOutput predw = W.GetPrediction(target); if (predw.Hitchance == hitchance) { W.Cast(predw.CastPosition); } } else if (EvolvedW && target.IsValidTarget(W.Range)) { PredictionOutput pred = WE.GetPrediction(target); if ((pred.Hitchance == HitChance.Immobile && autoWI) || (pred.Hitchance == HitChance.Dashing && autoWD) || pred.Hitchance >= hitchance) { CastWE(target, pred.UnitPosition.To2D(), 0, hitchance); } } } } }
void Combo() { AIHeroClient target = null; if (SpellSlot.E.IsReady() && SpellSlot.Q.IsReady()) { target = TargetSelector.GetTarget((E.Range + Q.Range) * 0.95f, DamageType.Physical); } if (target == null) { target = TargetSelector.GetTarget(W.Range, DamageType.Physical); } if ((target != null)) { var dist = Khazix.Distance(target); // Normal abilities if (Q.IsReady() && !Jumping && getCheckBoxItem(combo, "UseQCombo")) { if (dist <= Q.Range) { Q.Cast(target); } } if (W.IsReady() && !EvolvedW && dist <= W.Range && getCheckBoxItem(combo, "UseWCombo")) { var pred = W.GetPrediction(target); if (pred.Hitchance >= Config.GetHitChance("WHitchance")) { W.Cast(pred.CastPosition); } } if (E.IsReady() && !Jumping && dist <= E.Range && getCheckBoxItem(combo, "UseECombo") && dist > Q.Range + (0.7 * Khazix.MoveSpeed)) { PredictionOutput pred = E.GetPrediction(target); if (target.IsValid && !target.IsDead && ShouldJump(pred.CastPosition)) { E.Cast(pred.CastPosition); } } // Use EQ AND EW Synergy if ((dist <= E.Range + Q.Range + (0.7 * Khazix.MoveSpeed) && dist > Q.Range && E.IsReady() && getCheckBoxItem(combo, "UseEGapclose")) || (dist <= E.Range + W.Range && dist > Q.Range && E.IsReady() && W.IsReady() && getCheckBoxItem(combo, "UseEGapcloseW"))) { PredictionOutput pred = E.GetPrediction(target); if (target.IsValid && !target.IsDead && ShouldJump(pred.CastPosition)) { E.Cast(pred.CastPosition); } if (getCheckBoxItem(combo, "UseRGapcloseW") && R.IsReady()) { R.CastOnUnit(Khazix); } } // Ult Usage if (R.IsReady() && !Q.IsReady() && !W.IsReady() && !E.IsReady() && getCheckBoxItem(combo, "UseRCombo")) { R.Cast(); } // Evolved if (W.IsReady() && EvolvedW && dist <= WE.Range && getCheckBoxItem(combo, "UseWCombo")) { PredictionOutput pred = WE.GetPrediction(target); if (pred.Hitchance >= Config.GetHitChance("WHitchance")) { CastWE(target, pred.UnitPosition.To2D(), 0, Config.GetHitChance("WHitchance")); } if (pred.Hitchance >= HitChance.Collision) { List <Obj_AI_Base> PCollision = pred.CollisionObjects; var x = PCollision.Where(PredCollisionChar => PredCollisionChar.Distance(target) <= 30).FirstOrDefault(); if (x != null) { W.Cast(x.Position); } } } if (dist <= E.Range + (0.7 * Khazix.MoveSpeed) && dist > Q.Range && getCheckBoxItem(combo, "UseECombo") && E.IsReady()) { PredictionOutput pred = E.GetPrediction(target); if (target.IsValid && !target.IsDead && ShouldJump(pred.CastPosition)) { E.Cast(pred.CastPosition); } } if (getCheckBoxItem(combo, "UseItems")) { UseItems(target); } } }
void Waveclear() { List <Obj_AI_Minion> allMinions = ObjectManager.Get <Obj_AI_Minion>().Where(x => x.IsValidTarget(W.Range) && !MinionManager.IsWard(x)).ToList(); if (getCheckBoxItem(farm, "UseQFarm") && Q.IsReady()) { var minion = Orbwalker.LastTarget as Obj_AI_Minion; if (minion != null && HealthPrediction.GetHealthPrediction( minion, (int)(Khazix.Distance(minion) * 1000 / 1400)) > 0.35f * Khazix.GetSpellDamage(minion, SpellSlot.Q) && Khazix.Distance(minion) <= Q.Range) { Q.Cast(minion); } else if (minion == null || !minion.IsValid) { foreach (var min in allMinions.Where(x => x.IsValidTarget(Q.Range))) { if (HealthPrediction.GetHealthPrediction( min, (int)(Khazix.Distance(min) * 1000 / 1400)) > 3 * Khazix.GetSpellDamage(min, SpellSlot.Q) && Khazix.Distance(min) <= Q.Range) { Q.Cast(min); break; } } } } if (getCheckBoxItem(farm, "UseWFarm") && W.IsReady() && Khazix.HealthPercent <= getSliderItem(farm, "Farm.WHealth")) { var wmins = EvolvedW ? allMinions.Where(x => x.IsValidTarget(WE.Range)) : allMinions.Where(x => x.IsValidTarget(W.Range)); MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation(wmins .Select(minion => minion.ServerPosition.To2D()) .ToList(), EvolvedW ? WE.Width : W.Width, EvolvedW ? WE.Range : W.Range); var distcheck = EvolvedW ? Khazix.Distance(farmLocation.Position) <= WE.Range : Khazix.Distance(farmLocation.Position) <= W.Range; if (distcheck) { W.Cast(farmLocation.Position); } } if (getCheckBoxItem(farm, "UseEFarm") && E.IsReady()) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Khazix.ServerPosition, E.Range) .Select(minion => minion.ServerPosition.To2D()) .ToList(), E.Width, E.Range); if (Khazix.Distance(farmLocation.Position) <= E.Range) { E.Cast(farmLocation.Position); } } if (getCheckBoxItem(farm, "UseItemsFarm")) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Khazix.ServerPosition, Hydra.Range) .Select(minion => minion.ServerPosition.To2D()) .ToList(), Hydra.Range, Hydra.Range); if (Hydra.IsReady() && Khazix.Distance(farmLocation.Position) <= Hydra.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3074, Khazix); } if (Tiamat.IsReady() && Khazix.Distance(farmLocation.Position) <= Tiamat.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3077, Khazix); } if (Titanic.IsReady() && Khazix.Distance(farmLocation.Position) <= Titanic.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3748, Khazix); } } }
void LH() { List <Obj_AI_Base> allMinions = MinionManager.GetMinions(Khazix.ServerPosition, Q.Range); if (getCheckBoxItem(farm, "UseQFarm") && Q.IsReady()) { foreach (Obj_AI_Base minion in allMinions.Where( minion => minion.IsValidTarget() && HealthPrediction.GetHealthPrediction( minion, (int)(Khazix.Distance(minion) * 1000 / 1400)) < 0.75 * Khazix.GetSpellDamage(minion, SpellSlot.Q))) { if (Vector3.Distance(minion.ServerPosition, Khazix.ServerPosition) > Orbwalking.GetRealAutoAttackRange(Khazix) && Khazix.Distance(minion) <= Q.Range) { Q.CastOnUnit(minion); return; } } } if (getCheckBoxItem(farm, "UseWFarm") && W.IsReady()) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Khazix.ServerPosition, W.Range).Where(minion => HealthPrediction.GetHealthPrediction( minion, (int)(Khazix.Distance(minion) * 1000 / 1400)) < 0.75 * Khazix.GetSpellDamage(minion, SpellSlot.W)) .Select(minion => minion.ServerPosition.To2D()) .ToList(), W.Width, W.Range); if (farmLocation.MinionsHit >= 1) { if (!EvolvedW) { if (Khazix.Distance(farmLocation.Position) <= W.Range) { W.Cast(farmLocation.Position); } } if (EvolvedW) { if (Khazix.Distance(farmLocation.Position) <= W.Range) { W.Cast(farmLocation.Position); } } } } if (getCheckBoxItem(farm, "UseEFarm") && E.IsReady()) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Khazix.ServerPosition, E.Range).Where(minion => HealthPrediction.GetHealthPrediction( minion, (int)(Khazix.Distance(minion) * 1000 / 1400)) < 0.75 * Khazix.GetSpellDamage(minion, SpellSlot.W)) .Select(minion => minion.ServerPosition.To2D()) .ToList(), E.Width, E.Range); if (farmLocation.MinionsHit >= 1) { if (Khazix.Distance(farmLocation.Position) <= E.Range) { E.Cast(farmLocation.Position); } } } if (getCheckBoxItem(farm, "UseItemsFarm")) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Khazix.ServerPosition, Hydra.Range) .Select(minion => minion.ServerPosition.To2D()) .ToList(), Hydra.Range, Hydra.Range); if (Hydra.IsReady() && Khazix.Distance(farmLocation.Position) <= Hydra.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3074, Khazix); } if (Tiamat.IsReady() && Khazix.Distance(farmLocation.Position) <= Tiamat.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3077, Khazix); } } }
void Combo() { Obj_AI_Hero target = null; TargetSelector.TargetSelectionConditionDelegate conditions = targ => targ.IsIsolated() || targ.Health <= GetBurstDamage(targ); float targetSelectionRange = Khazix.AttackRange; if (SpellSlot.Q.IsReady()) { targetSelectionRange += Q.Range; } if (SpellSlot.E.IsReady()) { targetSelectionRange += E.Range; } else if (SpellSlot.W.IsReady()) { targetSelectionRange += W.Range; } //Get Optimal target if available target = TargetSelector.GetTarget(targetSelectionRange, TargetSelector.DamageType.Physical, true, null, null, conditions); //If could not find then settle for anything if (target == null) { target = TargetSelector.GetTarget(targetSelectionRange, TargetSelector.DamageType.Physical, true, null, null); } //If a target has been found if ((target != null && target.IsValidEnemy())) { var dist = Khazix.Distance(target.ServerPosition); // Normal abilities if (Config.GetBool("UseQCombo") && Q.IsReady() && !Jumping) { if (dist <= Q.Range) { Q.Cast(target); } } if (Config.GetBool("UseWCombo") && W.IsReady() && !EvolvedW && dist <= W.Range) { var pred = W.GetPrediction(target); if (pred.Hitchance >= Config.GetHitChance("WHitchance")) { W.Cast(pred.CastPosition); } } if (Config.GetBool("UseECombo") && E.IsReady() && !Jumping && dist <= E.Range && dist > Q.Range + (0.4 * Khazix.MoveSpeed)) { var jump = GetJumpPosition(target); if (jump.shouldJump) { E.Cast(jump.position); } } // Use EQ if ((Config.GetBool("UseEGapcloseQ") && Q.IsReady() && E.IsReady() && dist > Q.Range + (0.4 * Khazix.MoveSpeed) && dist <= E.Range + Q.Range)) { var jump = GetJumpPosition(target); if (jump.shouldJump) { E.Cast(jump.position); } if (Config.GetBool("UseRGapcloseL") && R.IsReady()) { R.CastOnUnit(Khazix); } } // Ult Usage if (R.IsReady() && !Q.IsReady() && !W.IsReady() && !E.IsReady() && Config.GetBool("UseRCombo") && Khazix.CountEnemiesInRange(500) > 0) { R.Cast(); } // Evolved if (W.IsReady() && EvolvedW && dist <= WE.Range && Config.GetBool("UseWCombo")) { PredictionOutput pred = WE.GetPrediction(target); if (pred.Hitchance >= Config.GetHitChance("WHitchance")) { CastWE(target, pred.UnitPosition.To2D(), 0, Config.GetHitChance("WHitchance")); } if (pred.Hitchance >= HitChance.Collision) { List <Obj_AI_Base> PCollision = pred.CollisionObjects; var x = PCollision.Where(PredCollisionChar => PredCollisionChar.Distance(target) <= 30).FirstOrDefault(); if (x != null) { W.Cast(x.Position); } } } if (Config.GetBool("Combo.Smite")) { if (SmiteManager.CanCast(target)) { SmiteManager.Cast(target); } } if (Config.GetBool("UseItems")) { UseItems(target); } } }
void Waveclear() { List <Obj_AI_Minion> allMinions = ObjectManager.Get <Obj_AI_Minion>().OrderBy(x => x.MaxHealth).Where(x => x.IsValidTarget(W.Range) && !MinionManager.IsWard(x)).ToList(); if (Config.GetBool("UseQFarm") && Q.IsReady() && !Orbwalking.CanAttack()) { bool UsedQ = false; var minion = Orbwalker.GetTarget() as Obj_AI_Minion; if (minion != null) { var hpred = HealthPrediction.GetHealthPrediction(minion, (int)(Khazix.Distance(minion) * 1000 / 1400)); var qdmg = Khazix.GetSpellDamage(minion, SpellSlot.Q); if ((hpred <= qdmg || hpred >= qdmg * 3) && Khazix.Distance(minion) <= Q.Range) { Q.Cast(minion); UsedQ = true; } } if (!UsedQ) { var killable = allMinions.Find(x => x.IsInRange(Q.Range) && HealthPrediction.GetHealthPrediction(x, (int)(Khazix.Distance(x) * 1000 / 1400)) <= Khazix.GetSpellDamage(x, SpellSlot.Q)); if (killable != null) { Q.Cast(killable); } else { foreach (var min in allMinions.Where(x => x.IsValidTarget(Q.Range))) { if (HealthPrediction.GetHealthPrediction( min, (int)(Khazix.Distance(min) * 1000 / 1400)) > 3 * Khazix.GetSpellDamage(min, SpellSlot.Q) && Khazix.Distance(min) <= Q.Range) { Q.Cast(min); break; } } } } } if (Config.GetBool("UseWFarm") && W.IsReady() && Khazix.HealthPercent <= Config.GetSlider("Farm.WHealth")) { var wmins = EvolvedW ? allMinions.Where(x => x.IsValidTarget(WE.Range)) : allMinions.Where(x => x.IsValidTarget(W.Range)); MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation(wmins .Select(minion => minion.ServerPosition.To2D()) .ToList(), EvolvedW ? WE.Width : W.Width, EvolvedW ? WE.Range : W.Range); var distcheck = EvolvedW ? Khazix.Distance(farmLocation.Position) <= WE.Range : Khazix.Distance(farmLocation.Position) <= W.Range; if (distcheck) { W.Cast(farmLocation.Position); } } if (Config.GetBool("UseEFarm") && E.IsReady()) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Khazix.ServerPosition, E.Range) .Select(minion => minion.ServerPosition.To2D()) .ToList(), E.Width, E.Range); if (Khazix.Distance(farmLocation.Position) <= E.Range) { E.Cast(farmLocation.Position); } } if (Config.GetBool("UseItemsFarm") && !Orbwalking.CanAttack()) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Khazix.ServerPosition, Hydra.Range) .Select(minion => minion.ServerPosition.To2D()) .ToList(), Hydra.Range, Hydra.Range); if (Hydra.IsReady() && Khazix.Distance(farmLocation.Position) <= Hydra.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3074, Khazix); } if (Tiamat.IsReady() && Khazix.Distance(farmLocation.Position) <= Tiamat.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3077, Khazix); } if (Titanic.IsReady() && Khazix.Distance(farmLocation.Position) <= Titanic.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3748, Khazix); } } }