internal void CastQ(Obj_AI_Hero target) { if (target != null && !target.IsInRange(Qrange)) { target = TargetSelector.GetTarget(Qrange, TargetSelector.DamageType.Physical); } if (target != null) { if (Spells[Q].IsReady() && target.IsValidEnemy(Qrange)) { UseQ(target, GetHitChance("Hitchance.Q"), GetBool("Combo.UseQ"), GetBool("Combo.UseQ2")); return; } if (GetBool("Combo.StackQ") && !target.IsValidEnemy(Qrange) && !TornadoReady && !Yasuo.IsDashing() && !InDash) { var bestmin = ObjectManager.Get <Obj_AI_Minion>() .Where(x => x.IsValidMinion(Qrange) && MinionManager.IsMinion(x, false)) .MinOrDefault(x => x.Distance(Yasuo)); if (bestmin != null) { var pred = Spells[Q].GetPrediction(bestmin); if (pred.Hitchance >= HitChance.Medium) { Spells[Q].Cast(bestmin.ServerPosition); } } } } }
void KillSteal() { //Avoid interrupting our assasination attempt if (jumpManager.MidAssasination) { return; } Obj_AI_Hero target = HeroList .Where(x => x.IsValidTarget() && x.Distance(Khazix.Position) < 1375f && !x.IsZombie) .MinOrDefault(x => x.Health); if (target != null) { if (Config.GetBool("UseIgnite") && Ignite.IsReady() && target.IsInRange(Ignite.Range)) { double igniteDmg = Khazix.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite); if (igniteDmg > target.Health) { Ignite.Cast(target); return; } } if (Config.GetBool("UseQKs") && Q.IsReady() && Vector3.Distance(Khazix.ServerPosition, target.ServerPosition) <= Q.Range) { double QDmg = GetQDamage(target); if (!Jumping && target.Health <= QDmg) { Q.Cast(target); return; } } if (Config.GetBool("UseEKs") && E.IsReady() && !Jumping && Vector3.Distance(Khazix.ServerPosition, target.ServerPosition) <= E.Range && Vector3.Distance(Khazix.ServerPosition, target.ServerPosition) > Q.Range) { double EDmg = Khazix.GetSpellDamage(target, SpellSlot.E); if (!Jumping && target.Health < EDmg) { Utility.DelayAction.Add( Game.Ping + Config.GetSlider("EDelay"), delegate { var jump = GetJumpPosition(target); if (jump.shouldJump) { if (target.IsValid && !target.IsDead) { E.Cast(jump.position); } } }); } } if (W.IsReady() && !EvolvedW && Vector3.Distance(Khazix.ServerPosition, target.ServerPosition) <= W.Range && Config.GetBool("UseWKs")) { double WDmg = Khazix.GetSpellDamage(target, SpellSlot.W); if (target.Health <= WDmg) { var pred = W.GetPrediction(target); if (pred.Hitchance >= HitChance.Medium) { W.Cast(pred.CastPosition); return; } } } if (W.IsReady() && EvolvedW && Vector3.Distance(Khazix.ServerPosition, target.ServerPosition) <= W.Range && Config.GetBool("UseWKs")) { double WDmg = Khazix.GetSpellDamage(target, SpellSlot.W); PredictionOutput pred = WE.GetPrediction(target); if (target.Health <= WDmg && pred.Hitchance >= HitChance.Medium) { CastWE(target, pred.UnitPosition.To2D(), 0, Config.GetHitChance("WHitchance")); return; } if (pred.Hitchance >= HitChance.Collision) { List <Obj_AI_Base> PCollision = pred.CollisionObjects; var x = PCollision .FirstOrDefault(PredCollisionChar => Vector3.Distance(PredCollisionChar.ServerPosition, target.ServerPosition) <= 30); if (x != null) { W.Cast(x.Position); return; } } } // Mixed's EQ KS if (Q.IsReady() && E.IsReady() && target.IsValidEnemy(0.90f * (E.Range + Q.Range)) && Config.GetBool("UseEQKs")) { double QDmg = GetQDamage(target); double EDmg = Khazix.GetSpellDamage(target, SpellSlot.E); if ((target.Health <= QDmg + EDmg)) { Utility.DelayAction.Add(Config.GetSlider("EDelay"), delegate { var jump = GetJumpPosition(target); if (jump.shouldJump) { E.Cast(jump.position); } }); } } // MIXED EW KS if (W.IsReady() && E.IsReady() && !EvolvedW && target.IsValidEnemy(W.Range + E.Range) && Config.GetBool("UseEWKs")) { double WDmg = Khazix.GetSpellDamage(target, SpellSlot.W); if (target.Health <= WDmg) { Utility.DelayAction.Add(Config.GetSlider("EDelay"), delegate { var jump = GetJumpPosition(target); if (jump.shouldJump) { E.Cast(jump.position); } }); } } if (Tiamat.IsReady() && Vector2.Distance(Khazix.ServerPosition.To2D(), target.ServerPosition.To2D()) <= Tiamat.Range && Config.GetBool("UseTiamatKs")) { double Tiamatdmg = Khazix.GetItemDamage(target, Damage.DamageItems.Tiamat); if (target.Health <= Tiamatdmg) { Tiamat.Cast(); return; } } if (Config.GetBool("UseSmiteKs")) { if (SmiteManager.CanCast(target)) { var dmg = SmiteManager.GetSmiteDamage(target); if (dmg >= target.Health) { SmiteManager.Cast(target); } } } if (Hydra.IsReady() && Vector2.Distance(Khazix.ServerPosition.To2D(), target.ServerPosition.To2D()) <= Hydra.Range && Config.GetBool("UseTiamatKs")) { double hydradmg = Khazix.GetItemDamage(target, Damage.DamageItems.Hydra); if (target.Health <= hydradmg) { Hydra.Cast(); } } } }
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 Combo() { CurrentTarget = TargetSelector.GetTarget(Spells[R].Range, TargetSelector.DamageType.Physical); if (GetBool("Combo.UseQ")) { CastQ(CurrentTarget); } if (GetBool("Combo.UseE")) { CastE(CurrentTarget); } if (GetBool("Combo.StackQ") && !TornadoReady && !CurrentTarget.IsValidEnemy(Spells[Q].Range)) { var closest = ObjectManager.Get<Obj_AI_Base>() .Where(x => x.IsValidEnemy(Spells[Q].Range)) .MinOrDefault(x => x.Distance(Yasuo)); var pred = Spells[Q].GetPrediction(closest); if (pred.Hitchance >= HitChance.Low) { Spells[Q].Cast(closest.ServerPosition); } } if (GetBool("Combo.UseR")) { CastR(GetSlider("Combo.RMinHit")); } if (GetBool("Combo.UseIgnite")) { CastIgnite(); } if (GetBool("Items.Enabled")) { if (GetBool("Items.UseTIA")) { Tiamat.Cast(null); } if (GetBool("Items.UseHDR")) { Hydra.Cast(null); } if (GetBool("Items.UseBRK") && CurrentTarget != null) { Blade.Cast(CurrentTarget); } if (GetBool("Items.UseBLG") && CurrentTarget != null) { Bilgewater.Cast(CurrentTarget); } if (GetBool("Items.UseYMU")) { Youmu.Cast(null); } } }
void OnUpdate(EventArgs args) { if (Yasuo.IsDead || Yasuo.IsRecalling()) { return; } CastUlt(); if (GetBool("Evade.WTS")) { TargettedDanger.OnUpdate(); } if (GetBool("Misc.AutoStackQ") && !TornadoReady && !CurrentTarget.IsValidEnemy(Spells[Q].Range) && !Yasuo.IsDashing() && !InDash) { var closest = ObjectManager.Get <Obj_AI_Minion>() .Where(x => x.IsValidMinion(Spells[Q].Range) && (MinionManager.IsMinion(x) || x.SkinName.Equals("Sru_Crab"))) .MinOrDefault(x => x.Distance(Yasuo)); if (closest != null) { var pred = Spells[Q].GetPrediction(closest); if (pred.Hitchance >= HitChance.Low) { Spells[Q].Cast(closest.ServerPosition); } } } if (GetBool("Misc.Walljump") && Game.MapId == GameMapId.SummonersRift) { WallJump.OnUpdate(); } if (GetKeyBind("Misc.DashMode")) { MoveToMouse(); return; } Fleeing = Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.CustomMode; if (GetBool("Killsteal.Enabled") && !Fleeing) { Killsteal(); } if (GetKeyBind("Harass.KB") && !Fleeing) { Harass(); } switch (Orbwalker.ActiveMode) { case Orbwalking.OrbwalkingMode.Combo: Orbwalker.SetOrbwalkingPoint(Game.CursorPos); Orbwalker.SetAttack(true); Combo(); break; case Orbwalking.OrbwalkingMode.Mixed: Orbwalker.SetOrbwalkingPoint(Game.CursorPos); Orbwalker.SetAttack(true); Mixed(); break; case Orbwalking.OrbwalkingMode.LastHit: Orbwalker.SetOrbwalkingPoint(Game.CursorPos); Orbwalker.SetAttack(true); LHSkills(); break; case Orbwalking.OrbwalkingMode.LaneClear: Orbwalker.SetOrbwalkingPoint(Game.CursorPos); Orbwalker.SetAttack(true); Waveclear(); break; case Orbwalking.OrbwalkingMode.CustomMode: Flee(); break; case Orbwalking.OrbwalkingMode.None: Orbwalker.SetOrbwalkingPoint(Game.CursorPos); break; } }