public static bool InAutoAttackRange(Obj_AI_Base Target) { if (!Program.IsValid(Target)) { return(false); } return(Player.Distance3D(Target) <= GetAutoAttackRange(Player, Target)); }
private static int CountEnemyInRange(Obj_AI_Hero target, float range) { int count = 0; foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(enemy => myHero.Distance3D(enemy, true) <= range * range && enemy.IsEnemy && enemy.IsVisible && !enemy.IsDead)) { count = count + 1; } return(count); }
private static void FlashQCombo() { ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos); var target = TargetSelector.GetTarget(Q.Range + FlashRange - 25, TargetSelector.DamageType.Magical); if (Player.Distance3D(target) > Q.Range) { if (FlashSlot != SpellSlot.Unknown && Player.Spellbook.CanUseSpell(FlashSlot) == SpellState.Ready) { if (Q.IsReady()) { Player.Spellbook.CastSpell(FlashSlot, target.ServerPosition); Q.Cast(target.ServerPosition); } else { Q.StartCharging(); } } } }
private static void FlashQCombo() { Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos); var target = TargetSelector.GetTarget(Q2.Range, TargetSelector.DamageType.Magical); if (Player.Distance3D(target) > Q.Range) { if (FlashSlot != SpellSlot.Unknown && Player.Spellbook.CanUseSpell(FlashSlot) == SpellState.Ready && Q.IsReady()) { Q2.UpdateSourcePosition(V2E(ObjectManager.Player.Position, target.Position, FlashRange).To3D()); var predPos = Q2.GetPrediction(target); if (predPos.Hitchance != HitChance.VeryHigh) //What does "Madlife" mean? { return; } Player.Spellbook.CastSpell(FlashSlot, predPos.CastPosition); Q.Cast(predPos.CastPosition); } } }
static void Combo() { bool useW = W.IsReady() && menu.SubMenu("combo").Item("UseW").GetValue <bool>(); bool useR = R.IsReady() && menu.SubMenu("combo").Item("UseR").GetValue <bool>(); // >= Config.Item("QmanaC").GetValue<Slider>().Value Obj_AI_Hero targetW = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical); Obj_AI_Hero targetR = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical); if (useW && (player.Mana / player.MaxMana * 100) >= menu.Item("WmanaC").GetValue <Slider>().Value) { if (!menu.SubMenu("combo").Item("UseWE").GetValue <bool>() || targetW.Distance3D(player) > 600) { W.CastIfHitchanceEquals(targetW, HitChance.Medium); } } if (useR) { Console.WriteLine(CorrectCountAlliesInRange(targetR, 250)); if (CorrectCountAlliesInRange(targetR, 250) >= menu.Item("RSlider").GetValue <Slider>().Value) { R.CastIfHitchanceEquals(targetR, HitChance.High); } } }
private Obj_AI_Hero GetTarget() { if (Master.Program.IsValid(newTarget, Range)) { return(newTarget); } Obj_AI_Hero bestTarget = null; if (Config.SubMenu("TS").Item("TS_Mode").GetValue <StringList>().SelectedIndex == 0) { float bestRatio = 0; foreach (var Obj in ObjectManager.Get <Obj_AI_Hero>().Where(i => Master.Program.IsValid(i, Range))) { float Prior = 1; switch (Config.SubMenu("TS").Item("TS_Prior" + Obj.ChampionName).GetValue <Slider>().Value) { case 2: Prior = 1.5f; break; case 3: Prior = 1.75f; break; case 4: Prior = 2; break; case 5: Prior = 2.5f; break; } var Ratio = 100 / (1 + Obj.Health) * Prior; if (Ratio > bestRatio) { bestRatio = Ratio; bestTarget = Obj; } } } else { foreach (var Obj in ObjectManager.Get <Obj_AI_Hero>().Where(i => Master.Program.IsValid(i, Range))) { if (bestTarget == null) { bestTarget = Obj; } else { switch (Config.SubMenu("TS").Item("TS_Mode").GetValue <StringList>().SelectedIndex) { case 1: if (Obj.BaseAttackDamage + Obj.FlatPhysicalDamageMod < bestTarget.BaseAttackDamage + bestTarget.FlatPhysicalDamageMod) { bestTarget = Obj; } break; case 2: if (Obj.FlatMagicDamageMod < bestTarget.FlatMagicDamageMod) { bestTarget = Obj; } break; case 3: if (Obj.Health - Player.CalcDamage(Obj, Damage.DamageType.Physical, Obj.Health) < bestTarget.Health - Player.CalcDamage(bestTarget, Damage.DamageType.Physical, bestTarget.Health)) { bestTarget = Obj; } break; case 4: if (Obj.Health - Player.CalcDamage(Obj, Damage.DamageType.Magical, Obj.Health) < bestTarget.Health - Player.CalcDamage(bestTarget, Damage.DamageType.Magical, bestTarget.Health)) { bestTarget = Obj; } break; case 5: if (Obj.Health < bestTarget.Health) { bestTarget = Obj; } break; case 6: if (Player.Distance3D(Obj) < Player.Distance3D(bestTarget)) { bestTarget = Obj; } break; case 7: if (Obj.Position.Distance(Game.CursorPos) + 50 < bestTarget.Position.Distance(Game.CursorPos)) { bestTarget = Obj; } break; } } } } return(bestTarget); }