private bool RLogicDuel(bool q, bool e, bool simulated = false) { try { if (!R.Instance.Name.Equals("ViktorChaosStorm", StringComparison.OrdinalIgnoreCase)) { return(false); } if ( GameObjects.EnemyHeroes.Where(t => UltimateManager.CheckDuel(t, CalcComboDamage(t, q, e, true))) .Any(t => RLogic(t, 1, q, e, simulated))) { return(true); } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return(false); }
protected override void Combo() { var q = Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(); var w = Menu.Item(Menu.Name + ".combo.w").GetValue <bool>() && W.IsReady(); var e = Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(); var r = UltimateManager.Combo() && R.IsReady(); if (q) { QLogic(Q.GetHitChance("combo")); } if (w) { WLogic(W.GetHitChance("combo")); } if (e) { ELogic(); } if (r) { if ( !RLogic( R.GetHitChance("combo"), Menu.Item(Menu.Name + ".ultimate.combo.min").GetValue <Slider>().Value, q, w, e)) { if (Menu.Item(Menu.Name + ".ultimate.combo.duel").GetValue <bool>()) { RLogicDuel(R.GetHitChance("combo"), q, w, e); } } } var target = Targets.FirstOrDefault(t => t.IsValidTarget(R.Range)); if (target != null && CalcComboDamage(target, q, w, e, r) > target.Health) { ItemManager.UseComboItems(target); SummonerManager.UseComboSummoners(target); } }
private void OnEnemyGapcloser(ActiveGapcloser args) { try { if (!args.Sender.IsEnemy) { return; } if (UltimateManager.Gapcloser(args.Sender)) { if (args.End.Distance(Player.Position) < R.Range) { R.Cast(args.End); } } var wCasted = false; if (HeroListManager.Check("w-gapcloser", args.Sender) && Player.Distance(args.End) <= W.Range && W.IsReady()) { var target = TargetSelector.GetTarget(W.Range * 0.85f, W.DamageType); if (target == null || args.Sender.NetworkId.Equals(target.NetworkId)) { W.Cast(args.End); wCasted = true; } } if (!wCasted && HeroListManager.Check("q-gapcloser", args.Sender) && Player.Distance(args.End) <= Q.Range && Q.IsReady()) { Q.Cast(args.End); } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
protected override void OnPostUpdate() { Orbwalker.SetAttack(!Q.IsCharging); if (UltimateManager.Assisted() && R.IsReady()) { if (Menu.Item(Menu.Name + ".ultimate.assisted.move-cursor").GetValue <bool>()) { Orbwalking.MoveTo(Game.CursorPos, Orbwalker.HoldAreaRadius); } if ( !RLogic( TargetSelector.GetTarget(R), R.GetHitChance("combo"), Menu.Item(Menu.Name + ".ultimate.assisted.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady())) { RLogicSingle( Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady()); } } if (UltimateManager.Auto() && R.IsReady()) { if ( !RLogic( TargetSelector.GetTarget(R), R.GetHitChance("combo"), Menu.Item(Menu.Name + ".ultimate.auto.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), UltimateModeType.Auto)) { RLogicSingle( Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady()); } } }
private void OnCorePostUpdate(EventArgs args) { try { if (UltimateManager.Assisted() && R.IsReady()) { if (Menu.Item(Menu.Name + ".ultimate.assisted.move-cursor").GetValue <bool>()) { Orbwalking.MoveTo(Game.CursorPos, Orbwalker.HoldAreaRadius); } if ( !RLogic( TargetSelector.GetTarget(R), Menu.Item(Menu.Name + ".ultimate.assisted.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady())) { RLogicDuel(Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady()); } } if (UltimateManager.Auto() && R.IsReady()) { if ( !RLogic( TargetSelector.GetTarget(R), Menu.Item(Menu.Name + ".ultimate.auto.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), "auto")) { RLogicDuel(Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady()); } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
private void RLogicDuel(HitChance hitChance, bool q, bool w, bool e, bool face = true) { try { foreach (var t in Targets) { if ((!face || t.IsFacing(Player)) && R.CanCast(t)) { if (UltimateManager.CheckDuel(t, CalcComboDamage(t, q, w, e, true))) { if (RLogic(hitChance, 1, q, w, e)) { break; } } } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
private bool RLogic(HitChance hitChance, int min, bool q, bool w, bool e, string mode = "combo") { try { foreach (var target in Targets.Where(t => R.CanCast(t))) { var pred = R.GetPrediction(target, true); if (pred.Hitchance >= hitChance) { var hits = GameObjects.EnemyHeroes.Where(enemy => R.WillHit(enemy, pred.CastPosition)).ToList(); if (UltimateManager.Check(mode, min, hits, hero => CalcComboDamage(hero, q, w, e, true))) { R.Cast(pred.CastPosition); return(true); } } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return(false); }
protected override void SetupSpells() { Q = new Spell(SpellSlot.Q, 600f, DamageType.Magical); Q.Range += GameObjects.EnemyHeroes.Select(e => e.BoundingRadius).DefaultIfEmpty(50).Min(); Q.SetTargetted(0.25f, Q.Instance.SData.MissileSpeed); W = new Spell(SpellSlot.W, 175f, DamageType.Magical); E = new Spell(SpellSlot.E, 600f, DamageType.Magical) { Delay = 0.25f, Width = 600f }; R = new Spell(SpellSlot.R, 700f, DamageType.Magical); R.SetSkillshot(0.25f, 175f, float.MaxValue, false, SkillshotType.SkillshotCircle); _ultimate = new UltimateManager { Combo = true, Assisted = true, Auto = true, Flash = false, Required = true, Force = true, Gapcloser = false, GapcloserDelay = false, Interrupt = false, InterruptDelay = false, Spells = Spells, DamageCalculation = (hero, resMulti, rangeCheck) => CalcComboDamage( hero, rangeCheck, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>(), true) }; }
protected override void SetupSpells() { Q = new Spell(SpellSlot.Q, 850f, DamageType.Magical); Q.SetSkillshot(0.3f, 50f, float.MaxValue, false, SkillshotType.SkillshotCircle); W = new Spell(SpellSlot.W, 850f, DamageType.Magical); W.SetSkillshot(0.5f, 125f, 2500f, false, SkillshotType.SkillshotCircle); E = new Spell(SpellSlot.E, 700f, DamageType.Magical); E.SetTargetted(0.2f, 1700f); E.Collision = true; R = new Spell(SpellSlot.R, 825f, DamageType.Magical); R.SetSkillshot(0.8f, (float)(80 * Math.PI / 180), float.MaxValue, false, SkillshotType.SkillshotCone); Ultimate = new UltimateManager { Combo = true, Assisted = true, Auto = true, Flash = true, Required = true, Force = true, Gapcloser = true, GapcloserDelay = false, Interrupt = true, InterruptDelay = false, Spells = Spells, DamageCalculation = (hero, resMulti, rangeCheck) => CalcComboDamage( hero, resMulti, rangeCheck, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>(), Menu.Item(Menu.Name + ".combo.w").GetValue <bool>(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>(), true) }; }
protected override void SetupSpells() { Q = new Spell(SpellSlot.Q, 650f); Q.Range += GameObjects.EnemyHeroes.Select(e => e.BoundingRadius).DefaultIfEmpty(25).Min(); Q.SetTargetted(0.25f, 1400f); Q1 = new Spell(SpellSlot.Q, Q.Range + 450f); W = new Spell(SpellSlot.W, Orbwalking.GetRealAutoAttackRange(null) * 1.25f); W.Range += GameObjects.EnemyHeroes.Select(e => e.BoundingRadius).DefaultIfEmpty(25).Min(); E = new Spell(SpellSlot.E, 1000f); E.SetSkillshot(0.5f, 175f, float.MaxValue, false, SkillshotType.SkillshotCircle); R = new Spell(SpellSlot.R, 1200f); R.SetSkillshot(0.25f, 100f, 2000f, false, SkillshotType.SkillshotLine); Ultimate = new UltimateManager { Combo = true, Assisted = true, Auto = true, Flash = false, Required = true, Force = true, Gapcloser = false, GapcloserDelay = false, Interrupt = false, InterruptDelay = false, Spells = Spells, SingleDamagePercent = 100, DamagePercent = 100, ComboDamageCheck = true, DamageCalculation = (hero, resMulti, rangeCheck) => CalcUltimateDamage(hero, resMulti, rangeCheck) }; }
protected override void AddToMenu() { DrawingManager.Add("E " + Global.Lang.Get("G_Max"), MaxERange); var comboMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Combo"), Menu.Name + ".combo")); HitchanceManager.AddToMenu( comboMenu.AddSubMenu(new Menu(Global.Lang.Get("F_MH"), comboMenu.Name + ".hitchance")), "combo", new Dictionary <string, int> { { "W", 2 }, { "E", 2 } }); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".w", Global.Lang.Get("G_UseW")).SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); var harassMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Harass"), Menu.Name + ".harass")); HitchanceManager.AddToMenu( harassMenu.AddSubMenu(new Menu(Global.Lang.Get("F_MH"), harassMenu.Name + ".hitchance")), "harass", new Dictionary <string, int> { { "E", 2 } }); ManaManager.AddToMenu(harassMenu, "harass", ManaCheckType.Minimum, ManaValueType.Percent); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); var laneclearMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_LaneClear"), Menu.Name + ".lane-clear")); ManaManager.AddToMenu( laneclearMenu, "lane-clear-q", ManaCheckType.Minimum, ManaValueType.Total, string.Empty, 200, 0, 750); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); ManaManager.AddToMenu(laneclearMenu, "lane-clear-e", ManaCheckType.Minimum, ManaValueType.Percent); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); laneclearMenu.AddItem( new MenuItem(laneclearMenu.Name + ".e-min", "E " + Global.Lang.Get("G_Min")).SetValue( new Slider(3, 1, 5))); var lasthitMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_LastHit"), Menu.Name + ".lasthit")); ManaManager.AddToMenu(lasthitMenu, "lasthit", ManaCheckType.Minimum, ManaValueType.Percent); lasthitMenu.AddItem( new MenuItem(lasthitMenu.Name + ".q-unkillable", "Q " + Global.Lang.Get("G_Unkillable")).SetValue(true)); var ultimateMenu = UltimateManager.AddToMenu(Menu, true, true, true, false, false, false, true, true, true); ultimateMenu.AddItem( new MenuItem(ultimateMenu.Name + ".follow", Global.Lang.Get("Viktor_AutoFollow")).SetValue(true)); var killstealMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Killsteal"), Menu.Name + ".killsteal")); killstealMenu.AddItem(new MenuItem(killstealMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); killstealMenu.AddItem( new MenuItem(killstealMenu.Name + ".q-aa", "Q + " + Global.Lang.Get("G_AutoAttack")).SetValue(true)); var fleeMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Flee"), Menu.Name + ".flee")); fleeMenu.AddItem(new MenuItem(fleeMenu.Name + ".w", Global.Lang.Get("G_UseW")).SetValue(true)); fleeMenu.AddItem( new MenuItem(fleeMenu.Name + ".q-upgraded", "Q " + Global.Lang.Get("G_Upgraded")).SetValue(true)); var miscMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Miscellaneous"), Menu.Name + ".miscellaneous")); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("W " + Global.Lang.Get("G_Slowed"), miscMenu.Name + "w-slowed")), "w-slowed", false, false, true, false); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("W " + Global.Lang.Get("G_Stunned"), miscMenu.Name + "w-stunned")), "w-stunned", false, false, true, false); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("W " + Global.Lang.Get("G_Gapcloser"), miscMenu.Name + "w-gapcloser")), "w-gapcloser", false, false, true, false); IndicatorManager.AddToMenu(DrawingManager.GetMenu(), true); IndicatorManager.Add( "Q", delegate(Obj_AI_Hero hero) { var damage = 0f; if (Q.IsReady()) { damage += Q.GetDamage(hero); damage += CalcPassiveDamage(hero); } else if (HasQBuff()) { damage += CalcPassiveDamage(hero); } return(damage); }); IndicatorManager.Add(E); IndicatorManager.Add( "R " + Global.Lang.Get("G_Burst"), delegate(Obj_AI_Hero hero) { if (R.IsReady()) { return(R.GetDamage(hero) + R.GetDamage(hero, 1)); } return(0); }); IndicatorManager.Add( "R " + Global.Lang.Get("G_Full"), delegate(Obj_AI_Hero hero) { if (R.IsReady()) { return(R.GetDamage(hero) + R.GetDamage(hero, 1) * 10); } return(0); }); IndicatorManager.Finale(); }
protected override void AddToMenu() { var ultimateMenu = UltimateManager.AddToMenu(Menu, true, false, false, true, false, false, true, true, true); ultimateMenu.AddItem( new MenuItem(ultimateMenu.Name + ".radius", "Range").SetValue(new Slider(450, 100, 600))).ValueChanged += delegate(object sender, OnValueChangeEventArgs args) { _rSpreadRadius = args.GetNewValue <Slider>().Value; }; _rSpreadRadius = Menu.Item(Menu.Name + ".ultimate.radius").GetValue <Slider>().Value; var comboMenu = Menu.AddSubMenu(new Menu("Combo", Menu.Name + ".combo")); HitchanceManager.AddToMenu( comboMenu.AddSubMenu(new Menu("Hitchance", comboMenu.Name + ".hitchance")), "combo", new Dictionary <string, HitChance> { { "Q", HitChance.High }, { "E", HitChance.High }, { "R", HitChance.VeryHigh } }); comboMenu.AddItem( new MenuItem(comboMenu.Name + ".q-fast-cast-min", "Fast Cast @ Health %").SetValue(new Slider(25))); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q-range", "Q " + "Out of Range").SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q-always", "Q " + "Always").SetValue(false)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q-stacks", "Q " + "Stacks >=")) .SetValue(new Slider(3, 1, 3)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q-min", "Q Min.").SetValue(new Slider(3, 1, 3))); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q", "Use Q").SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e-always", "E " + "Always").SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e-stacks", "E " + "Stacks >=")) .SetValue(new Slider(3, 1, 3)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e-min", "E Min.").SetValue(new Slider(3, 1, 3))); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e", "Use E").SetValue(true)); var harassMenu = Menu.AddSubMenu(new Menu("Harass", Menu.Name + ".harass")); HitchanceManager.AddToMenu( harassMenu.AddSubMenu(new Menu("Hitchance", harassMenu.Name + ".hitchance")), "harass", new Dictionary <string, HitChance> { { "Q", HitChance.High }, { "E", HitChance.High } }); ManaManager.AddToMenu(harassMenu, "harass", ManaCheckType.Minimum, ManaValueType.Percent); harassMenu.AddItem( new MenuItem(harassMenu.Name + ".q-fast-cast-min", "Fast Cast @ Health %").SetValue(new Slider(25))); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q-range", "Q " + "Out of Range").SetValue(true)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q-always", "Q " + "Always").SetValue(false)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q-stacks", "Q " + "Stacks >=")) .SetValue(new Slider(3, 1, 3)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q-min", "Q Min.").SetValue(new Slider(3, 1, 3))); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q", "Use Q").SetValue(true)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e-always", "E " + "Always").SetValue(false)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e-stacks", "E " + "Stacks >=")) .SetValue(new Slider(3, 1, 3)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e-min", "E Min.").SetValue(new Slider(3, 1, 3))); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e", "Use E").SetValue(true)); var laneclearMenu = Menu.AddSubMenu(new Menu("Lane Clear", Menu.Name + ".lane-clear")); ManaManager.AddToMenu(laneclearMenu, "lane-clear", ManaCheckType.Minimum, ManaValueType.Percent); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".q", "Use Q").SetValue(true)); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".e", "Use E").SetValue(true)); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".min", "Min.").SetValue(new Slider(3, 1, 5))); var fleeMenu = Menu.AddSubMenu(new Menu("Flee", Menu.Name + ".flee")); fleeMenu.AddItem(new MenuItem(fleeMenu.Name + ".e", "Use E").SetValue(true)); var killstealMenu = Menu.AddSubMenu(new Menu("Killsteal", Menu.Name + ".killsteal")); killstealMenu.AddItem(new MenuItem(killstealMenu.Name + ".q", "Use Q").SetValue(true)); killstealMenu.AddItem(new MenuItem(killstealMenu.Name + ".range", "Out of Range").SetValue(true)); var miscMenu = Menu.AddSubMenu(new Menu("Misc", Menu.Name + ".miscellaneous")); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("E Gapcloser", miscMenu.Name + "e-gapcloser")), "e-gapcloser", false, false, true, false); Weights.AddItem(new Weights.Item("w-stacks", "W " + "Stacks", 13, true, t => GetWStacks(t) + 1)); IndicatorManager.AddToMenu(DrawingManager.Menu, true); IndicatorManager.Add("Q", hero => Q.IsReady() ? Q.GetDamage(hero, 1) : 0); IndicatorManager.Add(E); IndicatorManager.Add(R); IndicatorManager.Finale(); _wStacks = DrawingManager.Add("W " + "Stacks", true); }
protected override void Combo() { var q = Menu.Item(Menu.Name + ".combo.q").GetValue <bool>(); var e = Menu.Item(Menu.Name + ".combo.e").GetValue <bool>(); var r = UltimateManager.Combo(); if (e && !Q.IsCharging && E.IsReady()) { var target = TargetSelector.GetTarget(E); if (target != null) { var stacks = W.Level == 0 && Menu.Item(Menu.Name + ".combo.e-stacks").GetValue <Slider>().Value > 0; if (Menu.Item(Menu.Name + ".combo.e-always").GetValue <bool>() || stacks || GetWStacks(target) >= Menu.Item(Menu.Name + ".combo.e-stacks").GetValue <Slider>().Value || E.IsKillable(target) || CPrediction.Circle(E, target, E.GetHitChance("combo")).TotalHits >= Menu.Item(Menu.Name + ".combo.e-min").GetValue <Slider>().Value) { ELogic(target, E.GetHitChance("combo")); } } } if (q && Q.IsReady()) { var target = TargetSelector.GetTarget((Q.ChargedMaxRange + Q.Width) * 1.1f, Q.DamageType); if (target != null) { var stacks = W.Level == 0 && Menu.Item(Menu.Name + ".combo.q-stacks").GetValue <Slider>().Value > 0; if (Q.IsCharging || Menu.Item(Menu.Name + ".combo.q-always").GetValue <bool>() || Menu.Item(Menu.Name + ".combo.q-range").GetValue <bool>() && !Orbwalking.InAutoAttackRange(target) || stacks || GetWStacks(target) >= Menu.Item(Menu.Name + ".combo.q-stacks").GetValue <Slider>().Value || CPrediction.Line(Q, target, Q.GetHitChance("combo")).TotalHits >= Menu.Item(Menu.Name + ".combo.q-min").GetValue <Slider>().Value || Q.IsKillable(target)) { QLogic( target, Q.GetHitChance("combo"), Menu.Item(Menu.Name + ".combo.q-fast-cast-min").GetValue <Slider>().Value); } } } if (r && R.IsReady()) { var target = TargetSelector.GetTarget(R); if (target != null) { if ( !RLogic( target, R.GetHitChance("combo"), Menu.Item(Menu.Name + ".ultimate.combo.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady())) { if (Menu.Item(Menu.Name + ".ultimate.combo.single").GetValue <bool>()) { RLogicSingle(q, e); } } } } }
private void OnCorePostUpdate(EventArgs args) { try { if (UltimateManager.Flash() && R.IsReady() && SummonerManager.Flash.IsReady()) { if (Menu.Item(Menu.Name + ".ultimate.flash.move-cursor").GetValue <bool>()) { Orbwalking.MoveTo(Game.CursorPos, Orbwalker.HoldAreaRadius); } var targets = Targets.Where( t => t.Distance(Player) < R.Range + SummonerManager.Flash.Range && !t.IsDashing() && (t.IsFacing(Player) ? (t.Distance(Player)) : (Prediction.GetPrediction(t, R.Delay + 0.3f) .UnitPosition.Distance(Player.Position))) > R.Range * 1.025f); foreach (var target in targets) { var min = Menu.Item(Menu.Name + ".ultimate.flash.min").GetValue <Slider>().Value; var flashPos = Player.Position.Extend(target.Position, SummonerManager.Flash.Range); var pred = Prediction.GetPrediction( new PredictionInput { Aoe = true, Collision = false, CollisionObjects = new[] { CollisionableObjects.YasuoWall }, From = flashPos, RangeCheckFrom = flashPos, Delay = R.Delay + 0.3f, Range = R.Range, Speed = R.Speed, Radius = R.Width, Type = R.Type, Unit = target }); if (pred.Hitchance >= R.GetHitChance("combo")) { R.UpdateSourcePosition(flashPos, flashPos); var hits = GameObjects.EnemyHeroes.Where(enemy => R.WillHit(enemy, pred.CastPosition)).ToList(); if (UltimateManager.Check( "combo", min, hits, hero => CalcComboDamage( hero, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.w").GetValue <bool>() && W.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), true))) { if ( R.Cast( Player.Position.Extend( pred.CastPosition, -(Player.Position.Distance(pred.CastPosition) * 2)), true)) { Utility.DelayAction.Add(300, () => SummonerManager.Flash.Cast(flashPos)); } } else if (Menu.Item(Menu.Name + ".ultimate.flash.duel").GetValue <bool>()) { if (UltimateManager.Check( "combo", 1, hits, hero => CalcComboDamage( hero, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.w").GetValue <bool>() && W.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), true))) { var cDmg = CalcComboDamage( target, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.w").GetValue <bool>() && W.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), true); if (cDmg - 20 >= target.Health) { if ( R.Cast( Player.Position.Extend( pred.CastPosition, -(Player.Position.Distance(pred.CastPosition) * 2)), true)) { Utility.DelayAction.Add(300, () => SummonerManager.Flash.Cast(flashPos)); } } } } R.UpdateSourcePosition(); } } } if (UltimateManager.Assisted() && R.IsReady()) { if (Menu.Item(Menu.Name + ".ultimate.assisted.move-cursor").GetValue <bool>()) { Orbwalking.MoveTo(Game.CursorPos, Orbwalker.HoldAreaRadius); } if ( !RLogic( R.GetHitChance("combo"), Menu.Item(Menu.Name + ".ultimate.assisted.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.w").GetValue <bool>() && W.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady())) { if (Menu.Item(Menu.Name + ".ultimate.assisted.duel").GetValue <bool>()) { RLogicDuel( R.GetHitChance("combo"), Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.w").GetValue <bool>() && W.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), false); } } } if (UltimateManager.Auto() && R.IsReady()) { if ( !RLogic( R.GetHitChance("combo"), Menu.Item(Menu.Name + ".ultimate.auto.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.w").GetValue <bool>() && W.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), "auto")) { if (Menu.Item(Menu.Name + ".ultimate.auto.duel").GetValue <bool>()) { RLogicDuel( R.GetHitChance("combo"), Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.w").GetValue <bool>() && W.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady()); } } } if (HeroListManager.Enabled("w-stunned") && W.IsReady()) { var target = Targets.FirstOrDefault( t => HeroListManager.Check("w-stunned", t) && Utils.IsStunned(t)); if (target != null) { Casting.SkillShot(target, W, W.GetHitChance("harass")); } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
protected override void AddToMenu() { var comboMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Combo"), Menu.Name + ".combo")); HitchanceManager.AddToMenu( comboMenu.AddSubMenu(new Menu(Global.Lang.Get("F_MH"), comboMenu.Name + ".hitchance")), "combo", new Dictionary <string, int> { { "Q", 1 }, { "E", 1 }, { "R", 2 } }); comboMenu.AddItem( new MenuItem(comboMenu.Name + ".q-fast-cast-min", Global.Lang.Get("Varus_FastCastMin")).SetValue( new Slider(25))); comboMenu.AddItem( new MenuItem(comboMenu.Name + ".q-range", "Q " + Global.Lang.Get("G_OutOfRange")).SetValue(true)); comboMenu.AddItem( new MenuItem(comboMenu.Name + ".q-always", "Q " + Global.Lang.Get("G_Always")).SetValue(false)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q-stacks", "Q " + Global.Lang.Get("G_StacksIsOrMore"))) .SetValue(new Slider(3, 1, 3)); comboMenu.AddItem( new MenuItem(comboMenu.Name + ".q-min", "Q " + Global.Lang.Get("G_Min")).SetValue(new Slider(3, 1, 3))); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); comboMenu.AddItem( new MenuItem(comboMenu.Name + ".e-always", "E " + Global.Lang.Get("G_Always")).SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e-stacks", "E " + Global.Lang.Get("G_StacksIsOrMore"))) .SetValue(new Slider(3, 1, 3)); comboMenu.AddItem( new MenuItem(comboMenu.Name + ".e-min", "E " + Global.Lang.Get("G_Min")).SetValue(new Slider(3, 1, 3))); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); var harassMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Harass"), Menu.Name + ".harass")); HitchanceManager.AddToMenu( harassMenu.AddSubMenu(new Menu(Global.Lang.Get("F_MH"), harassMenu.Name + ".hitchance")), "harass", new Dictionary <string, int> { { "Q", 1 }, { "E", 1 } }); ManaManager.AddToMenu(harassMenu, "harass", ManaCheckType.Minimum, ManaValueType.Percent); harassMenu.AddItem( new MenuItem(harassMenu.Name + ".q-fast-cast-min", Global.Lang.Get("Varus_FastCastMin")).SetValue( new Slider(25))); harassMenu.AddItem( new MenuItem(harassMenu.Name + ".q-range", "Q " + Global.Lang.Get("G_OutOfRange")).SetValue(true)); harassMenu.AddItem( new MenuItem(harassMenu.Name + ".q-always", "Q " + Global.Lang.Get("G_Always")).SetValue(false)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q-stacks", "Q " + Global.Lang.Get("G_StacksIsOrMore"))) .SetValue(new Slider(3, 1, 3)); harassMenu.AddItem( new MenuItem(harassMenu.Name + ".q-min", "Q " + Global.Lang.Get("G_Min")).SetValue(new Slider(3, 1, 3))); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); harassMenu.AddItem( new MenuItem(harassMenu.Name + ".e-always", "E " + Global.Lang.Get("G_Always")).SetValue(false)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e-stacks", "E " + Global.Lang.Get("G_StacksIsOrMore"))) .SetValue(new Slider(3, 1, 3)); harassMenu.AddItem( new MenuItem(harassMenu.Name + ".e-min", "E " + Global.Lang.Get("G_Min")).SetValue(new Slider(3, 1, 3))); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); var laneclearMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_LaneClear"), Menu.Name + ".lane-clear")); ManaManager.AddToMenu(laneclearMenu, "lane-clear", ManaCheckType.Minimum, ManaValueType.Percent); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); laneclearMenu.AddItem( new MenuItem(laneclearMenu.Name + ".min", Global.Lang.Get("G_Min")).SetValue(new Slider(3, 1, 5))); var ultimateMenu = UltimateManager.AddToMenu(Menu, true, false, false, true, false, false, true, true, true); ultimateMenu.AddItem( new MenuItem(ultimateMenu.Name + ".radius", Global.Lang.Get("G_Range")).SetValue( new Slider(450, 100, 600))).ValueChanged += delegate(object sender, OnValueChangeEventArgs args) { _rSpreadRadius = args.GetNewValue <Slider>().Value; }; _rSpreadRadius = Menu.Item(Menu.Name + ".ultimate.radius").GetValue <Slider>().Value; var killstealMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Killsteal"), Menu.Name + ".killsteal")); killstealMenu.AddItem(new MenuItem(killstealMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); killstealMenu.AddItem( new MenuItem(killstealMenu.Name + ".range", Global.Lang.Get("G_OutOfRange")).SetValue(true)); var fleeMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Flee"), Menu.Name + ".flee")); fleeMenu.AddItem(new MenuItem(fleeMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); var miscMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Miscellaneous"), Menu.Name + ".miscellaneous")); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("E " + Global.Lang.Get("G_Gapcloser"), miscMenu.Name + "e-gapcloser")), "e-gapcloser", false, false, true, false); TargetSelector.AddWeightedItem( new WeightedItem("w-stacks", "W " + Global.Lang.Get("G_Stacks"), 13, true, t => GetWStacks(t) + 1)); IndicatorManager.AddToMenu(DrawingManager.GetMenu(), true); IndicatorManager.Add("Q", hero => Q.IsReady() ? Q.GetDamage(hero, 1) : 0); IndicatorManager.Add(E); IndicatorManager.Add(R); IndicatorManager.Finale(); _wStacks = DrawingManager.Add("W " + Global.Lang.Get("G_Stacks"), true); }
protected override void SetupSpells() { Q = new Spell(SpellSlot.Q, 650f); Q.Range += GameObjects.EnemyHeroes.Select(e => e.BoundingRadius).DefaultIfEmpty(25).Min(); Q.SetTargetted(0.25f, 1400f); Q1 = new Spell(SpellSlot.Q, Q.Range + 450f); W = new Spell(SpellSlot.W, Orbwalking.GetRealAutoAttackRange(null) * 1.25f); W.Range += GameObjects.EnemyHeroes.Select(e => e.BoundingRadius).DefaultIfEmpty(25).Min(); E = new Spell(SpellSlot.E, 1000f); E.SetSkillshot(0.5f, 175f, float.MaxValue, false, SkillshotType.SkillshotCircle); R = new Spell(SpellSlot.R, 1200f); R.SetSkillshot(0.25f, 100f, 2000f, false, SkillshotType.SkillshotLine); Ultimate = new UltimateManager { Combo = true, Assisted = true, Auto = true, Flash = false, Required = true, Force = true, Gapcloser = false, GapcloserDelay = false, Interrupt = false, InterruptDelay = false, Spells = Spells, SingleDamagePercent = 100, DamagePercent = 100, ComboDamageCheck = true, DamageCalculation = (hero, resMulti, rangeCheck) => CalcUltimateDamage(hero, resMulti, rangeCheck) }; /* * Drawing.OnDraw += delegate * { * var minions = MinionManager.GetMinions( * Q.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.None); * foreach (var minion in minions) * { * var coneBuff = new Geometry.Polygon.Sector( * minion.Position, Player.Position.Extend(minion.Position, Player.Distance(minion) + Q.Range / 2f), * (float) (40 * Math.PI / 180), Q1.Range - Q.Range); * var coneNormal = new Geometry.Polygon.Sector( * minion.Position, Player.Position.Extend(minion.Position, Player.Distance(minion) + Q.Range / 2f), * (float) (60 * Math.PI / 180), Q1.Range - Q.Range); * for (var i = 0; i < coneBuff.Points.Count - 1; i++) * { * var p1 = Drawing.WorldToScreen(coneBuff.Points[i].To3D()); * var p2 = Drawing.WorldToScreen(coneBuff.Points[i + 1].To3D()); * Drawing.DrawLine(p1, p2, 3, Color.Red); * } * Drawing.DrawLine( * Drawing.WorldToScreen(coneBuff.Points.First().To3D()), * Drawing.WorldToScreen(coneBuff.Points.Last().To3D()), 3, Color.Red); * for (var i = 0; i < coneNormal.Points.Count - 1; i++) * { * var p1 = Drawing.WorldToScreen(coneNormal.Points[i].To3D()); * var p2 = Drawing.WorldToScreen(coneNormal.Points[i + 1].To3D()); * Drawing.DrawLine(p1, p2, 3, Color.White); * } * Drawing.DrawLine( * Drawing.WorldToScreen(coneNormal.Points.First().To3D()), * Drawing.WorldToScreen(coneNormal.Points.Last().To3D()), 3, Color.White); * } * }; */ }
protected override void OnPostUpdate() { if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit && Menu.Item(Menu.Name + ".lasthit.q").GetValue <bool>() && Q.IsReady()) { var m = MinionManager.GetMinions(Q.Range, MinionTypes.All, MinionTeam.NotAlly) .FirstOrDefault(e => Q.IsKillable(e)); if (m != null) { Casting.TargetSkill(m, Q); } } if (UltimateManager.Assisted() && R.IsReady()) { if (Menu.Item(Menu.Name + ".ultimate.assisted.move-cursor").GetValue <bool>()) { Orbwalking.MoveTo(Game.CursorPos, Orbwalker.HoldAreaRadius); } var target = TargetSelector.GetTarget(R); if (target != null && !RLogic( target, Menu.Item(Menu.Name + ".ultimate.assisted.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady())) { if (Menu.Item(Menu.Name + ".ultimate.assisted.single").GetValue <bool>()) { RLogicSingle( Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady()); } } } if (UltimateManager.Auto() && R.IsReady()) { var target = TargetSelector.GetTarget(R); if (target != null && !RLogic( target, Menu.Item(Menu.Name + ".ultimate.auto.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), UltimateModeType.Auto)) { if (Menu.Item(Menu.Name + ".ultimate.auto.single").GetValue <bool>()) { RLogicSingle( Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady()); } } } if (Menu.Item(Menu.Name + ".miscellaneous.e-auto").GetValue <bool>() && E.IsReady() && HealthManager.Check("auto-e") && !Player.IsRecalling() && !Player.InFountain()) { var buff = GetEBuff(); if (buff == null || (buff.EndTime - Game.Time) <= Game.Ping / 2000f + 0.5f) { E.Cast(); } } }
protected override void AddToMenu() { DrawingManager.Add("R " + Global.Lang.Get("G_Flash"), R.Range + SummonerManager.Flash.Range); var comboMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Combo"), Menu.Name + ".combo")); HitchanceManager.AddToMenu( comboMenu.AddSubMenu(new Menu(Global.Lang.Get("F_MH"), comboMenu.Name + ".hitchance")), "combo", new Dictionary <string, int> { { "Q", 2 }, { "W", 1 }, { "R", 2 } }); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".w", Global.Lang.Get("G_UseW")).SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); var harassMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Harass"), Menu.Name + ".harass")); HitchanceManager.AddToMenu( harassMenu.AddSubMenu(new Menu(Global.Lang.Get("F_MH"), harassMenu.Name + ".hitchance")), "harass", new Dictionary <string, int> { { "Q", 2 }, { "W", 1 } }); ManaManager.AddToMenu( harassMenu, "harass", ManaCheckType.Minimum, ManaValueType.Total, string.Empty, 70, 0, 750); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".w", Global.Lang.Get("G_UseW")).SetValue(true)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); var laneclearMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_LaneClear"), Menu.Name + ".lane-clear")); ManaManager.AddToMenu( laneclearMenu, "lane-clear", ManaCheckType.Minimum, ManaValueType.Total, string.Empty, 90, 0, 750); laneclearMenu.AddItem( new MenuItem(laneclearMenu.Name + ".aa", Global.Lang.Get("G_UseAutoAttacks")).SetValue(true)); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".q", Global.Lang.Get("G_UseQ")).SetValue(true)); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".w", Global.Lang.Get("G_UseW")).SetValue(true)); laneclearMenu.AddItem(new MenuItem(laneclearMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); var lasthitMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_LastHit"), Menu.Name + ".lasthit")); ManaManager.AddToMenu( lasthitMenu, "lasthit", ManaCheckType.Maximum, ManaValueType.Percent, string.Empty, 70); lasthitMenu.AddItem(new MenuItem(lasthitMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); lasthitMenu.AddItem( new MenuItem( lasthitMenu.Name + ".e-poison", Global.Lang.Get("G_UseE") + " " + Global.Lang.Get("G_Poison")) .SetValue(true)); var ultimateMenu = UltimateManager.AddToMenu(Menu, true, true, false, true, false, true, true, true, true); ultimateMenu.AddItem( new MenuItem(ultimateMenu.Name + ".range", Global.Lang.Get("G_Range")).SetValue( new Slider(700, 400, 825))).ValueChanged += delegate(object sender, OnValueChangeEventArgs args) { R.Range = args.GetNewValue <Slider>().Value; DrawingManager.Update( "R " + Global.Lang.Get("G_Flash"), args.GetNewValue <Slider>().Value + SummonerManager.Flash.Range); }; var killstealMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Killsteal"), Menu.Name + ".killsteal")); killstealMenu.AddItem(new MenuItem(killstealMenu.Name + ".e", Global.Lang.Get("G_UseE")).SetValue(true)); killstealMenu.AddItem( new MenuItem( killstealMenu.Name + ".e-poison", Global.Lang.Get("G_UseE") + " " + Global.Lang.Get("G_Poison")) .SetValue(true)); var fleeMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Flee"), Menu.Name + ".flee")); fleeMenu.AddItem(new MenuItem(fleeMenu.Name + ".w", Global.Lang.Get("G_UseW")).SetValue(true)); var miscMenu = Menu.AddSubMenu(new Menu(Global.Lang.Get("G_Miscellaneous"), Menu.Name + ".miscellaneous")); DelayManager.AddToMenu(miscMenu, "e-delay", "E", 250, 0, 1000); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("Q " + Global.Lang.Get("G_Gapcloser"), miscMenu.Name + "q-gapcloser")), "q-gapcloser", false, false, true, false); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("Q " + Global.Lang.Get("G_Fleeing"), miscMenu.Name + "q-fleeing")), "q-fleeing", false, false, true, false); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("W " + Global.Lang.Get("G_Gapcloser"), miscMenu.Name + "w-gapcloser")), "w-gapcloser", false, false, true, false); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("W " + Global.Lang.Get("G_Stunned"), miscMenu.Name + "w-stunned")), "w-stunned", false, false, true, false); HeroListManager.AddToMenu( miscMenu.AddSubMenu(new Menu("W " + Global.Lang.Get("G_Fleeing"), miscMenu.Name + "w-fleeing")), "w-fleeing", false, false, true, false); R.Range = Menu.Item(Menu.Name + ".ultimate.range").GetValue <Slider>().Value; DrawingManager.Update( "R " + Global.Lang.Get("G_Flash"), Menu.Item(Menu.Name + ".ultimate.range").GetValue <Slider>().Value + SummonerManager.Flash.Range); IndicatorManager.AddToMenu(DrawingManager.GetMenu(), true); IndicatorManager.Add(Q); IndicatorManager.Add(W); IndicatorManager.Add("E", hero => E.GetDamage(hero) * 5); IndicatorManager.Add(R); IndicatorManager.Finale(); TargetSelector.AddWeightedItem( new WeightedItem( "poison-time", Global.Lang.Get("Cassiopeia_PoisonTime"), 10, true, hero => GetPoisonBuffEndTime(hero) + 1)); }
private void OnOrbwalkingBeforeAttack(Orbwalking.BeforeAttackEventArgs args) { try { if (HasQBuff()) { if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo) { if ((_rObject == null || !_rObject.IsValid) && R.IsReady() && UltimateManager.Combo() && R.Instance.Name.Equals("ViktorChaosStorm", StringComparison.OrdinalIgnoreCase) && GameObjects.EnemyHeroes.Any(Orbwalking.InAutoAttackRange) && (RLogicDuel(true, Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), true) || GameObjects.EnemyHeroes.Where(e => e.IsValidTarget(R.Range + R.Width)) .Any( e => RLogic( e, Menu.Item(Menu.Name + ".ultimate.combo.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), true)))) { args.Process = false; return; } } if (!(args.Target is Obj_AI_Hero)) { var targets = TargetSelector.GetTargets(Player.AttackRange + Player.BoundingRadius * 3f); if (targets != null && targets.Any()) { var hero = targets.FirstOrDefault(Orbwalking.InAutoAttackRange); if (hero != null) { Orbwalker.ForceTarget(hero); args.Process = false; } else if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed) { if ( targets.Any( t => t.Distance(Player) < (Player.BoundingRadius + t.BoundingRadius + Player.AttackRange) * (IsSpellUpgraded(Q) ? 1.4f : 1.2f))) { args.Process = false; } } } } } else { if ((args.Target is Obj_AI_Hero) && (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed) && (Q.IsReady() && Player.Mana >= Q.Instance.ManaCost || E.IsReady() && Player.Mana >= E.Instance.ManaCost)) { args.Process = false; } } if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear) { var minion = args.Target as Obj_AI_Minion; if (minion != null && HealthPrediction.LaneClearHealthPrediction( minion, (int)(Player.AttackDelay * 1000), Game.Ping / 2) < Player.GetAutoAttackDamage(minion)) { _lastBeforeFarmTarget = minion; } if (_lastQKillableTarget != null && _lastQKillableTarget.NetworkId == args.Target.NetworkId) { args.Process = false; } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
private void OnCorePostUpdate(EventArgs args) { try { if (Menu.Item(Menu.Name + ".ultimate.follow").GetValue <bool>()) { RFollowLogic(); } if (UltimateManager.Assisted() && R.IsReady()) { if (Menu.Item(Menu.Name + ".ultimate.assisted.move-cursor").GetValue <bool>()) { Orbwalking.MoveTo(Game.CursorPos, Orbwalker.HoldAreaRadius); } var target = TargetSelector.GetTarget(R); if (target != null && !RLogic( target, Menu.Item(Menu.Name + ".ultimate.assisted.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady())) { if (Menu.Item(Menu.Name + ".ultimate.assisted.duel").GetValue <bool>()) { RLogicDuel( Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady()); } } } if (UltimateManager.Auto() && R.IsReady()) { var target = TargetSelector.GetTarget(R); if (target != null && !RLogic( target, Menu.Item(Menu.Name + ".ultimate.auto.min").GetValue <Slider>().Value, Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(), false, "auto")) { if (Menu.Item(Menu.Name + ".ultimate.auto.duel").GetValue <bool>()) { RLogicDuel( Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady(), Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady()); } } } if (HeroListManager.Enabled("w-stunned") && W.IsReady()) { var target = GameObjects.EnemyHeroes.FirstOrDefault( t => t.IsValidTarget(W.Range) && HeroListManager.Check("w-stunned", t) && Utils.IsStunned(t)); if (target != null) { Casting.SkillShot(target, W, W.GetHitChance("combo")); } } if (HeroListManager.Enabled("w-slowed") && W.IsReady()) { var target = GameObjects.EnemyHeroes.FirstOrDefault( t => t.IsValidTarget(W.Range) && HeroListManager.Check("w-slowed", t) && t.Buffs.Any(b => b.Type == BuffType.Slow && b.EndTime - Game.Time > 0.5f)); if (target != null) { Casting.SkillShot(target, W, W.GetHitChance("combo")); } } if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear) { if (Menu.Item(Menu.Name + ".lasthit.q-unkillable").GetValue <bool>() && Q.IsReady() && ManaManager.Check("lasthit")) { var canAttack = Game.Time >= _lastAutoAttack + Player.AttackDelay; var minions = MinionManager.GetMinions(Q.Range) .Where( m => (!canAttack || !Orbwalking.InAutoAttackRange(m)) && m.HealthPercent <= 50 && (_lastAfterFarmTarget == null || _lastAfterFarmTarget.NetworkId != m.NetworkId) && (_lastBeforeFarmTarget == null || _lastBeforeFarmTarget.NetworkId != m.NetworkId)) .ToList(); if (minions.Any()) { foreach (var minion in minions) { var health = HealthPrediction.GetHealthPrediction( minion, (int)(Q.ArrivalTime(minion) * 1000)); if (health > 0 && Math.Abs(health - minion.Health) > 10 && Q.GetDamage(minion) * 0.85f > health) { if (Q.CastOnUnit(minion)) { _lastQKillableTarget = minion; } break; } } } } } Orbwalking.PreventStuttering(HasQBuff()); } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }