void OnCombo() { var target = TargetSelector.GetTarget(E.Range, DamageType.Magical); if (!target.IsValidTarget(Q.Range) || target == null && Channeling) { return; } if (MissFortuneTheTrollMenu.ComboW() && W.IsReady() && target.IsValidTarget(W.Range) && !target.IsInvulnerable && target.Position.CountEnemiesInRange(800) >= MissFortuneTheTrollMenu.Combowenemies()) { W.Cast(); } if (E.IsReady() && target.IsValidTarget(E.Range) && MissFortuneTheTrollMenu.ComboE()) { E.Cast(target); } if (Q.IsReady() && target.IsValidTarget(Q.Range) && MissFortuneTheTrollMenu.ComboQ()) { Q.Cast(target); } if (Q.IsReady() && target.IsValidTarget(Q1.Range) && MissFortuneTheTrollMenu.ComboQextend()) { castQ(true, true); } else { castQ(true, false); } if (MissFortuneTheTrollMenu.ComboR() && Player.CountEnemiesInRange(1000) >= MissFortuneTheTrollMenu.ComboREnemies() && R.IsReady() && target.IsValidTarget(1000)) { var predR = R.GetPrediction(target); if (predR.HitChance >= HitChance.Medium) { R.Cast(predR.CastPosition); } } var autoTarget = EntityManager.Heroes.Enemies.FirstOrDefault( x => x.HasBuffOfType(BuffType.Charm) || x.HasBuffOfType(BuffType.Knockup) || x.HasBuffOfType(BuffType.Stun) || x.HasBuffOfType(BuffType.Suppression) || x.HasBuffOfType(BuffType.Slow) || x.HasBuffOfType(BuffType.Snare)); if (MissFortuneTheTrollMenu.ComboRcc() && R.IsReady() && autoTarget != null) { R.Cast(autoTarget.ServerPosition); } if ((ObjectManager.Player.CountEnemiesInRange(ObjectManager.Player.AttackRange) >= MissFortuneTheTrollMenu.YoumusEnemies() || Player.HealthPercent >= MissFortuneTheTrollMenu.ItemsYoumuShp()) && Activator.Youmuu.IsReady() && MissFortuneTheTrollMenu.Youmus() && Activator.Youmuu.IsOwned()) { Activator.Youmuu.Cast(); return; } if (Player.HealthPercent <= MissFortuneTheTrollMenu.BilgewaterHp() && MissFortuneTheTrollMenu.Bilgewater() && Activator.Bilgewater.IsReady() && Activator.Bilgewater.IsOwned()) { Activator.Bilgewater.Cast(target); return; } if (Player.HealthPercent <= MissFortuneTheTrollMenu.BotrkHp() && MissFortuneTheTrollMenu.Botrk() && Activator.Botrk.IsReady() && Activator.Botrk.IsOwned()) { Activator.Botrk.Cast(target); } }
public static void castQ(bool NotkillOnly, bool killMinionOnly, bool onChampsOnly) { foreach (var killable in EntityManager.Heroes.Enemies.Where(e => e.IsInRange(EloBuddy.Player.Instance, 1000) && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && !e.IsZombie && (e.Health < DamageLibrary.GetSpellDamage(EloBuddy.Player.Instance, e, SpellSlot.Q) || NotkillOnly))) { var killablePosition = Prediction.Position.PredictUnitPosition(killable, 250).To3D(); int i = -1; for (int j = 0; j < EntityManager.Heroes.Enemies.Count; j++) { if (killable.NetworkId == EntityManager.Heroes.Enemies[j].NetworkId) { i = j; } } if (i == -1 || !MissFortuneTheTrollMenu.ComboQ()) { continue; } bool buff = false; foreach (var b in killable.Buffs) { if (b.Name == "missfortunepassivestack") { buff = true; } } foreach (var t in EntityManager.Heroes.Enemies.Where(e => e.IsInRange(EloBuddy.Player.Instance, Q.Range) && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && Prediction.Position.PredictUnitPosition(e, 250).To3D().Distance(killable) < 500)) { Vector3 meToTarget = Prediction.Position.PredictUnitPosition(t, 250).To3D() - Prediction.Position.PredictUnitPosition(EloBuddy.Player.Instance, 250).To3D(); if (meToTarget.AngleBetween(killablePosition) < 0.6981 && buff && meToTarget.AngleBetween(killablePosition) > 0) { Q.Cast(t); return; } else if (meToTarget.AngleBetween(killablePosition) < 0.349066 && meToTarget.AngleBetween(killablePosition) > 0) { int m = EntityManager.MinionsAndMonsters.CombinedAttackable.Where(e => e.IsInRange(t, 500) && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && !e.IsZombie && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(Prediction.Position.PredictUnitPosition(e, 250).To3D()) < 0.349066 && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(killablePosition) > 0).Count(); if (m == 0) { Q.Cast(t); return; } } else if (meToTarget.AngleBetween(killablePosition) < 0.6981 && meToTarget.AngleBetween(killablePosition) > 0) { int m = EntityManager.MinionsAndMonsters.CombinedAttackable.Where(e => e.IsInRange(t, 500) && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && !e.IsZombie && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(Prediction.Position.PredictUnitPosition(e, 250).To3D()) < 0.6981 && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(killablePosition) > 0).Count(); if (m == 0) { Q.Cast(t); return; } } else if (meToTarget.AngleBetween(killablePosition) < 1.9 && meToTarget.AngleBetween(killablePosition) > 0) { int m = EntityManager.MinionsAndMonsters.CombinedAttackable.Where(e => e.IsInRange(t, 500) && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && !e.IsZombie && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(Prediction.Position.PredictUnitPosition(e, 250).To3D()) < 1.9 && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(killablePosition) > 0).Count(); if (m == 0) { Q.Cast(t); return; } } } if (onChampsOnly) { return; } foreach (var t in EntityManager.MinionsAndMonsters.CombinedAttackable.Where(e => e.IsInRange(EloBuddy.Player.Instance, Q.Range) && Prediction.Position.PredictUnitPosition(e, 250).To3D().Distance(killable) < 500 && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && (!killMinionOnly || e.Health < EloBuddy.Player.Instance.GetSpellDamage(e, SpellSlot.Q))).OrderBy(t => t.Health)) { Vector3 meToTarget = Prediction.Position.PredictUnitPosition(t, 250).To3D() - Prediction.Position.PredictUnitPosition(EloBuddy.Player.Instance, 250).To3D(); if (meToTarget.AngleBetween(killablePosition) < 0.6981 && buff && meToTarget.AngleBetween(killablePosition) > 0) { Q.Cast(t); return; } else if (meToTarget.AngleBetween(killablePosition) < 0.349066 && meToTarget.AngleBetween(killablePosition) > 0) { int m = EntityManager.MinionsAndMonsters.CombinedAttackable.Where(e => e.IsInRange(t, 500) && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && !e.IsZombie && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(Prediction.Position.PredictUnitPosition(e, 250).To3D()) < 0.349066 && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(killablePosition) > 0).Count(); if (m == 0) { Q.Cast(t); return; } } else if (meToTarget.AngleBetween(killablePosition) < 0.6981 && meToTarget.AngleBetween(killablePosition) > 0) { int m = EntityManager.MinionsAndMonsters.CombinedAttackable.Where(e => e.IsInRange(t, 500) && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && !e.IsZombie && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(Prediction.Position.PredictUnitPosition(e, 250).To3D()) < 0.6981 && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(killablePosition) > 0).Count(); if (m == 0) { Q.Cast(t); return; } } else if (meToTarget.AngleBetween(killablePosition) < 1.9 && meToTarget.AngleBetween(killablePosition) > 0) { int m = EntityManager.MinionsAndMonsters.CombinedAttackable.Where(e => e.IsInRange(t, 500) && !e.IsDead && !e.IsInvulnerable && e.IsTargetable && !e.IsZombie && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(Prediction.Position.PredictUnitPosition(e, 250).To3D()) < 1.9 && Prediction.Position.PredictUnitPosition(t, 250).To3D().AngleBetween(killablePosition) > 0).Count(); if (m == 0) { Q.Cast(t); return; } } } } }