internal bool Cast(Obj_AI_Hero target, bool farmcast = false) { if (!item.IsReady()) { return false; } if (!farmcast) { if ((type == ItemCastType.SelfCast || type == ItemCastType.RangeCast) && Player.CountEnemiesInRange(item.Range) >= eneinrangecount) { item.Cast(); return true; } if (type == ItemCastType.TargettedCast && target.IsInRange(item.Range)) { item.Cast(target); return true; } } else if (farmcast) { if ((type == ItemCastType.SelfCast || type == ItemCastType.RangeCast) && ObjectManager.Get<Obj_AI_Minion>().Count(x=> x.IsValidTarget(item.Range)) >= minioncount) { item.Cast(); return true; } } return false; }
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); } } } } }
internal bool Cast(Obj_AI_Hero target, bool farmcast = false) { if (!item.IsReady()) { return(false); } if (!farmcast) { if ((type == ItemCastType.SelfCast || type == ItemCastType.RangeCast) && Player.CountEnemiesInRange(item.Range) >= eneinrangecount) { item.Cast(); return(true); } if (type == ItemCastType.TargettedCast && target.IsInRange(item.Range)) { item.Cast(target); return(true); } } else if (farmcast) { if ((type == ItemCastType.SelfCast || type == ItemCastType.RangeCast) && ObjectManager.Get <Obj_AI_Minion>().Count(x => x.IsValidTarget(item.Range)) >= minioncount) { item.Cast(); return(true); } } return(false); }
private void KillSteal(Obj_AI_Hero target) { if (Q.Ready && target.IsInRange(Q.Range) && Champions.Fizz.MenuClass.killstealmenu["useq"].Enabled) { if (Q.Ready && Player.GetSpellDamage(target, SpellSlot.Q) >= target.Health) { Q.Cast(target); } if (E.Ready && target.IsInRange(E.Range * 2) && Champions.Fizz.MenuClass.killstealmenu["usee"].Enabled) { if (E.Ready && Player.GetSpellDamage(target, SpellSlot.E) >= target.Health) { E.Cast(target); } } } }
private static void DashOnHeroDashed(object sender, Dash.DashArgs d) { if (MenuManager.Menu["gapCloser"].Enabled && d.Unit.IsHero) { Obj_AI_Hero hero = (Obj_AI_Hero)d.Unit; if (hero.IsInRange(SpellManager.Get(SpellSlot.E).Range) && d.EndPos.Distance(ObjectManager.GetLocalPlayer().Position.To2D()) <= AntiGapGloserRange) { SpellManager.Get(SpellSlot.E).CastMob(hero); } } }
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 KillSteal() { Obj_AI_Hero target = HeroList .Where(x => x.IsValidTarget() && x.Distance(Khazix.Position) < 1375f && !x.IsZombie) .MinOrDefault(x => x.Health); if (target != null && target.IsInRange(Ignite.Range)) { if (Config.GetBool("UseIgnite") && IgniteSlot != SpellSlot.Unknown && Khazix.Spellbook.CanUseSpell(IgniteSlot) == SpellState.Ready) { double igniteDmg = Khazix.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite); if (igniteDmg > target.Health) { Khazix.Spellbook.CastSpell(IgniteSlot, target); return; } } if (Config.GetBool("Safety.autoescape") && !IsHealthy) { var ally = HeroList.FirstOrDefault(h => h.HealthPercent > 40 && h.CountEnemiesInRange(400) == 0 && !h.ServerPosition.PointUnderEnemyTurret()); if (ally != null && ally.IsValid) { E.Cast(ally.ServerPosition); return; } var underTurret = EnemyTurrets.Any(x => x.Distance(Khazix.ServerPosition) <= 900f && !x.IsDead && x.IsValid); if (underTurret || Khazix.CountEnemiesInRange(500) >= 1) { var bestposition = Khazix.ServerPosition.Extend(NexusPosition, E.Range); E.Cast(bestposition); 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 { PredictionOutput pred = E.GetPrediction(target); if (target.IsValid && !target.IsDead) { if (Config.GetBool("Ksbypass") || ShouldJump(pred.CastPosition)) { E.Cast(pred.CastPosition); } } }); } } 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() && Vector3.Distance(Khazix.ServerPosition, target.ServerPosition) <= 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 { PredictionOutput pred = E.GetPrediction(target); if (target.IsValidTarget() && !target.IsZombie && ShouldJump(pred.CastPosition)) { if (Config.GetBool("Ksbypass") || ShouldJump(pred.CastPosition)) { E.Cast(pred.CastPosition); } } }); } } // MIXED EW KS if (W.IsReady() && E.IsReady() && !EvolvedW && Vector3.Distance(Khazix.ServerPosition, target.ServerPosition) <= 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 { PredictionOutput pred = E.GetPrediction(target); if (target.IsValid && !target.IsDead && ShouldJump(pred.CastPosition)) { if (Config.GetBool("Ksbypass") || ShouldJump(pred.CastPosition)) { E.Cast(pred.CastPosition); } } }); } } 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 (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 CastQ(Obj_AI_Hero target) { if (Spells[Q].IsReady() && target != null && target.IsInRange(Qrange)) { UseQ(target, GetHitChance("Hitchance.Q")); } }
internal void CastENew(Obj_AI_Hero target) { if (!SpellSlot.E.IsReady() || Yasuo.IsDashing() || InDash) { return; } var minionsinrange = ObjectManager.Get <Obj_AI_Minion>().Any(x => x.IsDashable()); if (target == null || !target.IsInRange(minionsinrange ? Spells[E].Range * 2 : Spells[E].Range)) { target = TargetSelector.GetTarget(minionsinrange ? Spells[E].Range * 2 : Spells[E].Range, TargetSelector.DamageType.Physical); } if (target != null && TowerCheck(target, true)) { var dist = Yasuo.Distance(target); var pctOutOfRange = dist / Yasuo.AttackRange * 100; if (pctOutOfRange > 0.8f) { if (target.IsDashable()) { if (target.ECanKill()) { return; } if (TornadoReady && target.IsInRange(Spells[E].Range) && targInKnockupRadius(target)) { Spells[E].CastOnUnit(target); } //Stay in range else if (pctOutOfRange > 0.8f) { var bestminion = ObjectManager.Get <Obj_AI_Base>() .Where(x => x.IsDashable() && GetDashPos(x).IsCloser(target) && TowerCheck(x, true)) .MinOrDefault(x => GetDashPos(x).Distance(target)); var shouldETarget = bestminion == null || GetDashPos(target).Distance(target) < GetDashPos(bestminion).Distance(target); if (shouldETarget && GetDashPos(target).IsCloser(target)) { Spells[E].CastOnUnit(target); } else if (bestminion != null) { Spells[E].CastOnUnit(bestminion); } } } else { var minion = ObjectManager.Get <Obj_AI_Minion>() .Where(x => x.IsDashable() && x.IsCloser(target) && TowerCheck(x, true)) .MinOrDefault(x => GetDashPos(x).Distance(target)); if (minion != null) { Spells[E].CastOnUnit(minion); } } } } }
internal void CastEOld(Obj_AI_Hero target, bool force = false) { var minionsinrange = ObjectManager.Get <Obj_AI_Minion>().Any(x => x.IsDashable()); if (target == null || !target.IsInRange(minionsinrange ? Spells[E].Range * 2 : Spells[E].Range)) { target = TargetSelector.GetTarget(minionsinrange ? Spells[E].Range * 2 : Spells[E].Range, TargetSelector.DamageType.Physical); } if (target != null) { if (SpellSlot.E.IsReady() && isHealthy && target.Distance(Yasuo) >= 0.30 * Yasuo.AttackRange) { if (TornadoReady && ((GetBool("Combo.ETower") && GetKeyBind("Misc.TowerDive")) || !GetDashPos(target).PointUnderEnemyTurret())) { Spells[E].CastOnUnit(target); return; } if (DashCount >= 1 && GetDashPos(target).IsCloser(target) && target.IsDashable() && (GetBool("Combo.ETower") || GetKeyBind("Misc.TowerDive") || !GetDashPos(target).PointUnderEnemyTurret())) { Spells[E].CastOnUnit(target); return; } if (DashCount == 0) { var bestminion = ObjectManager.Get <Obj_AI_Base>() .Where( x => x.IsDashable() && GetDashPos(x).IsCloser(target) && (GetBool("Combo.ETower") || GetKeyBind("Misc.TowerDive") || !GetDashPos(x).PointUnderEnemyTurret())) .OrderBy(x => Vector2.Distance(GetDashPos(x), target.ServerPosition.To2D())) .FirstOrDefault(); if (bestminion != null) { Spells[E].CastOnUnit(bestminion); } else if (target.IsDashable() && GetDashPos(target).IsCloser(target) && (GetBool("Combo.ETower") || GetKeyBind("Misc.TowerDive") || !GetDashPos(target).PointUnderEnemyTurret())) { Spells[E].CastOnUnit(target); } } else { var minion = ObjectManager.Get <Obj_AI_Base>() .Where(x => x.IsDashable() && GetDashPos(x).IsCloser(target) && (GetBool("Combo.ETower") || GetKeyBind("Misc.TowerDive") || !GetDashPos(x).PointUnderEnemyTurret())) .OrderBy(x => GetDashPos(x).Distance(target.ServerPosition)).FirstOrDefault(); if (minion != null && GetDashPos(minion).IsCloser(target)) { Spells[E].CastOnUnit(minion); } } } } }
static void TotalActiveDamage() { bool hasCutlass = Menus._menu["offensive"]["cutlass"].Enabled && _player.HasAndCanUseItem(ItemId.BilgewaterCutlass); bool hasBotrk = Menus._menu["offensive"]["botrk"].Enabled && _player.HasAndCanUseItem(ItemId.BladeoftheRuinedKing); bool hasGunblade = Menus._menu["offensive"]["gunblade"].Enabled && _player.HasAndCanUseItem(ItemId.HextechGunblade); bool hasTiamat = Menus._menu["offensive"]["tiamat"].Enabled && _player.HasAndCanUseItem(ItemId.Tiamat); bool hasRavenous = Menus._menu["offensive"]["ravenous"].Enabled && _player.HasAndCanUseItem(ItemId.RavenousHydra); if (hasCutlass || hasBotrk || hasGunblade || hasTiamat || hasRavenous) { _target = GameObjects.EnemyHeroes .OrderBy(a => a.Health) .Where(a => a.IsLegitimate()) .FirstOrDefault(); } if (_target != null) { if (hasTiamat || hasRavenous) { if (_target.IsInRange(250)) { _totalDamage += (float)_player.CalculateDamage(_target, DamageType.Physical, (_player.TotalAttackDamage)); if (hasTiamat) { useTiamat = true; } else if (hasRavenous) { useRavenous = true; } } else if (_target.IsInRange(400)) { _totalDamage += (float)_player.CalculateDamage(_target, DamageType.Physical, (_player.TotalAttackDamage * 0.6)); if (hasTiamat) { useTiamat = true; } else if (hasRavenous) { useRavenous = true; } } } if (_target.IsInRange(550)) { if (hasCutlass) { _totalDamage += (float)_player.CalculateDamage(_target, DamageType.Magical, 100); useCutlass = true; } if (hasBotrk) { _totalDamage += (float)_player.CalculateDamage(_target, DamageType.Magical, 100); useBotrk = true; } } if (_target.IsInRange(700) && hasGunblade) { float damage = new float[] { 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 220, 225, 230, 235, 240, 245, 250 }[_player.Level - 1]; damage += _player.TotalAbilityDamage * 0.3f; _totalDamage += (float)_player.CalculateDamage(_target, DamageType.Magical, damage); useGunblade = true; } } }
internal void CastENew(Obj_AI_Hero target) { if (!SpellSlot.E.IsReady() || Yasuo.IsDashing() || InDash) { return; } var minionsinrange = ObjectManager.Get <Obj_AI_Minion>().Any(x => x.IsDashable()); if (target == null || !target.IsInRange(minionsinrange ? Spells[E].Range * 2 : Spells[E].Range)) { target = TargetSelector.GetTarget(minionsinrange ? Spells[E].Range * 2 : Spells[E].Range, TargetSelector.DamageType.Physical); } if (target != null && TowerCheck(target, true)) { if (!target.IsDashable()) { var bestminion = ObjectManager.Get <Obj_AI_Base>() .Where(x => x.IsDashable() && GetDashPos(x).IsCloser(target) && TowerCheck(x, true)) .MinOrDefault(x => GetDashPos(x).Distance(target)); if (bestminion != null) { Spells[E].CastOnUnit(bestminion); return; } } else { var dist = Yasuo.Distance(target); var pctOutOfRange = dist / Spells[E].Range * 100; //Stay in range if (pctOutOfRange > 0.8f) { if (TornadoReady && target.IsDashable() && targInKnockupRadius(target)) { Spells[E].CastOnUnit(target); } else { var bestminion = ObjectManager.Get <Obj_AI_Base>() .Where(x => x.IsDashable() && GetDashPos(x).IsCloser(target) && TowerCheck(x, true)) .MinOrDefault(x => GetDashPos(x).Distance(target)); if (bestminion != null) { Spells[E].CastOnUnit(bestminion); } else if (target.IsDashable() && GetDashPos(target).IsCloser(target)) { Spells[E].CastOnUnit(target); } } } //Catch up using a minion else if (pctOutOfRange > 1) { var minion = ObjectManager.Get <Obj_AI_Minion>() .Where(x => x.IsDashable() && x.IsCloser(target) && TowerCheck(x, true)) .MinOrDefault(x => GetDashPos(x).Distance(target)); if (minion != null) { Spells[E].CastOnUnit(target); } } //Go for a EQ if target is well within range else { if (Spells[Q].IsReady() && TornadoReady) { if (targInKnockupRadius(target)) { Spells[E].CastOnUnit(target); return; } } if (DashCount == 0) { var bestminion = ObjectManager.Get <Obj_AI_Base>() .Where( x => x.IsDashable() && GetDashPos(x).IsCloser(target) && TowerCheck(x, true)) .MinOrDefault(x => GetDashPos(x).Distance(target)); if (bestminion != null) { Spells[E].CastOnUnit(bestminion); } else if (target.IsDashable() && GetDashPos(target).IsCloser(target) && TowerCheck(target, true)) { Spells[E].CastOnUnit(target); } } } } } }