/// <summary> /// Gets the hero average damage to the opposing team. /// </summary> /// <param name="player">The player.</param> /// <param name="Enemies">The enemies.</param> /// <returns></returns> public static float GetHeroAvgDamage(Obj_AI_Hero player, List<Obj_AI_Hero> Enemies) { var totalEnemies = Enemies.Count(); if (totalEnemies == 0) { return -1; } var AADamage = Enemies.Aggregate(0, (current, s) => (int) (current + player.GetAutoAttackDamage(s) * 2)); var QDamage = Enemies.Aggregate(0, (current, s) => (int)(current + (player.GetSpell(SpellSlot.Q).IsReady() ? player.GetSpellDamage(s, SpellSlot.Q) : 0f))); var WDamage = Enemies.Aggregate(0, (current, s) => (int)(current + (player.GetSpell(SpellSlot.W).IsReady() ? player.GetSpellDamage(s, SpellSlot.W) : 0f))); var EDamage = Enemies.Aggregate(0, (current, s) => (int)(current + (player.GetSpell(SpellSlot.E).IsReady() ? player.GetSpellDamage(s, SpellSlot.E) : 0f))); var RDamage = Enemies.Aggregate(0, (current, s) => (int)(current + (player.GetSpell(SpellSlot.R).IsReady() ? player.GetSpellDamage(s, SpellSlot.R) : 0f))); var itemsDamage = 0f; foreach (var item in player.InventoryItems) { foreach (var hero in Enemies) { var itemID = item.Id; switch (itemID) { case ItemId.Bilgewater_Cutlass: itemsDamage += (float) player.GetItemDamage(hero, Damage.DamageItems.Bilgewater); break; case ItemId.Blade_of_the_Ruined_King: itemsDamage += (float) player.GetItemDamage(hero, Damage.DamageItems.Botrk); break; case ItemId.Hextech_Gunblade: itemsDamage += (float) player.GetItemDamage(hero, Damage.DamageItems.Hexgun); break; case ItemId.Frost_Queens_Claim: itemsDamage += (float) player.GetItemDamage(hero, Damage.DamageItems.FrostQueenClaim); break; case ItemId.Tiamat_Melee_Only: itemsDamage += player.IsMelee ? (float) player.GetItemDamage(hero, Damage.DamageItems.Tiamat) : 0f; break; case ItemId.Ravenous_Hydra_Melee_Only: itemsDamage += player.IsMelee ? (float) player.GetItemDamage(hero, Damage.DamageItems.Hydra) : 0f; break; case ItemId.Liandrys_Torment: itemsDamage += (float) player.GetItemDamage(hero, Damage.DamageItems.LiandrysTorment); break; } } } var totalDamage = AADamage + QDamage + WDamage + EDamage + RDamage + itemsDamage; return (float) totalDamage / totalEnemies; }
private void DrawDamage(Obj_AI_Hero sender, Obj_AI_Hero target) { if (!target.IsVisible || target.IsDead) return; var screenPos = Drawing.WorldToScreen(target.Position); if (_slots.Sum(slot => sender.GetSpell(slot).Cooldown <= 0 ? sender.GetSpellDamage(target, slot) : 0) > target.Health) Drawing.DrawText(screenPos.X, screenPos.Y, Color.Red, "Combo"); else { var dps = _slots.Sum(slot => sender.GetSpellDamage(target, slot) / sender.GetSpell(slot).Cooldown) + sender.TotalAttackDamage * (1 / sender.AttackDelay) * ((sender.Crit + 100) / 100f) * (100 / (100f + target.Armor)); // Console.WriteLine(dps + " / "+ sender.TotalAttackDamage * (1 / sender.AttackDelay) * ((sender.Crit + 100) / 100f) * (100 / (100f + target.Armor))); Drawing.DrawText(screenPos.X, screenPos.Y, Color.Red, "> " + string.Format("{0:0.0} s", target.Health / dps)); } }
/// <summary> /// Gets the hero average damage to the opposing team. /// </summary> /// <param name="player">The player.</param> /// <param name="Enemies">The enemies.</param> /// <returns></returns> public static float GetHeroAvgDamage(Obj_AI_Hero player, List<Obj_AI_Hero> Enemies) { var totalEnemies = Enemies.Count(); if (totalEnemies == 0) { return -1; } var AADamage = Enemies.Aggregate(0, (current, s) => (int) (current + player.GetAutoAttackDamage(s))); var QDamage = Enemies.Aggregate(0, (current, s) => (int)(current + (player.GetSpell(SpellSlot.Q).IsReady() ? player.GetSpellDamage(s, SpellSlot.Q) : 0))); var WDamage = Enemies.Aggregate(0, (current, s) => (int)(current + (player.GetSpell(SpellSlot.W).IsReady() ? player.GetSpellDamage(s, SpellSlot.W) : 0))); var EDamage = Enemies.Aggregate(0, (current, s) => (int)(current + (player.GetSpell(SpellSlot.E).IsReady() ? player.GetSpellDamage(s, SpellSlot.E) : 0))); var RDamage = Enemies.Aggregate(0, (current, s) => (int)(current + (player.GetSpell(SpellSlot.R).IsReady() ? player.GetSpellDamage(s, SpellSlot.R) : 0))); var totalDamage = AADamage + QDamage + WDamage + EDamage + RDamage; return (float) totalDamage / totalEnemies; }
public static double GetAlliesComboDmg(Obj_AI_Hero target, Obj_AI_Hero ally) { var SpellSlots = new List<SpellSlot>(); double dmg = 0; #region SpellSots SpellSlots.Add(SpellSlot.Q); SpellSlots.Add(SpellSlot.W); SpellSlots.Add(SpellSlot.E); SpellSlots.Add(SpellSlot.R); #endregion foreach (var slot in SpellSlots) { var spell = ally.Spellbook.GetSpell(slot); dmg += ally.GetSpellDamage(target, slot); dmg += ally.GetAutoAttackDamage(target); } return dmg; }
private static void Game_OnGameLoad(EventArgs args) { Player = ObjectManager.Player; if (Player.ChampionName != ChampionName) return; //Create the spells Q = new Spell(SpellSlot.Q, 1550); W = new Spell(SpellSlot.W, 1000); E = new Spell(SpellSlot.E, 1150); R = new Spell(SpellSlot.R, 675); Q.SetSkillshot(0.6f, 100f, float.MaxValue, false, SkillshotType.SkillshotLine); W.SetSkillshot(0.7f, 125f, float.MaxValue, false, SkillshotType.SkillshotCircle); E.SetSkillshot(0.25f, 60f, 1400f, true, SkillshotType.SkillshotLine); R.SetSkillshot(0.7f, 120f, float.MaxValue, false, SkillshotType.SkillshotCircle); Q.SetCharged("XerathArcanopulseChargeUp", "XerathArcanopulseChargeUp", 750, 1550, 1.5f); SpellList.Add(Q); SpellList.Add(W); SpellList.Add(E); SpellList.Add(R); //Create the menu Config = new Menu(ChampionName, ChampionName, true); //Orbwalker submenu Config.AddSubMenu(new Menu("璧扮爫", "Orbwalking")); //Add the target selector to the menu as submenu. var targetSelectorMenu = new Menu("鐩爣閫夋嫨", "Target Selector"); SimpleTs.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Load the orbwalker and add it to the menu as submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); //Combo menu: Config.AddSubMenu(new Menu("杩炴嫑", "Combo")); Config.SubMenu("Combo").AddItem(new MenuItem("UseQCombo", "浣跨敤 Q").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("UseWCombo", "浣跨敤 W").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("UseECombo", "浣跨敤 E").SetValue(true)); Config.SubMenu("Combo") .AddItem( new MenuItem("ComboActive", "杩炴嫑!").SetValue( new KeyBind(Config.Item("Orbwalk").GetValue<KeyBind>().Key, KeyBindType.Press))); //Misc Config.AddSubMenu(new Menu("R", "R")); Config.SubMenu("R").AddItem(new MenuItem("EnableRUsage", "鑷姩浣跨敤澶ф嫑").SetValue(true)); Config.SubMenu("R").AddItem(new MenuItem("rMode", "妯″紡").SetValue(new StringList(new[] { "姝e父", "鑷畾涔?", "OnTap"}))); Config.SubMenu("R").AddItem(new MenuItem("rModeKey", "OnTap鎸夐挳").SetValue(new KeyBind("T".ToCharArray()[0], KeyBindType.Press))); Config.SubMenu("R").AddSubMenu(new Menu("璁剧疆寤惰繜", "Custom delays")); for (int i = 1; i <= 3; i++) Config.SubMenu("R").SubMenu("Custom delays").AddItem(new MenuItem("Delay"+i, "Delay"+i).SetValue(new Slider(0, 1500, 0))); Config.SubMenu("R").AddItem(new MenuItem("PingRKillable", "Ping鍙潃姝荤洰鏍?鏈湴)").SetValue(true)); Config.SubMenu("R").AddItem(new MenuItem("BlockMovement", "鏈夐殰纰嶇墿鏃剁瓑寰呮姇鎺稲").SetValue(false)); //Harass menu: Config.AddSubMenu(new Menu("楠氭壈", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseQHarass", "浣跨敤 Q").SetValue(true)); Config.SubMenu("Harass").AddItem(new MenuItem("UseWHarass", "浣跨敤 W").SetValue(false)); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActive", "楠氭壈!").SetValue( new KeyBind(Config.Item("Farm").GetValue<KeyBind>().Key, KeyBindType.Press))); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActiveT", "楠氭壈 (鎸夐敭)!").SetValue(new KeyBind("Y".ToCharArray()[0], KeyBindType.Toggle))); //Farming menu: Config.AddSubMenu(new Menu("琛ュ叺", "Farm")); Config.SubMenu("Farm") .AddItem( new MenuItem("UseQFarm", "浣跨敤 Q").SetValue( new StringList(new[] { "琛ュ叺", "娓呭叺", "鍏ㄩ儴", "涓嶇敤" }, 2))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseWFarm", "浣跨敤 W").SetValue( new StringList(new[] { "琛ュ叺", "娓呭叺", "鍏ㄩ儴", "涓嶇敤" }, 1))); Config.SubMenu("Farm") .AddItem( new MenuItem("FreezeActive", "琛ュ叺!").SetValue( new KeyBind(Config.Item("Farm").GetValue<KeyBind>().Key, KeyBindType.Press))); Config.SubMenu("Farm") .AddItem( new MenuItem("LaneClearActive", "娓呭叺!").SetValue( new KeyBind(Config.Item("LaneClear").GetValue<KeyBind>().Key, KeyBindType.Press))); //JungleFarm menu: Config.AddSubMenu(new Menu("娓呴噹", "JungleFarm")); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseQJFarm", "浣跨敤 Q").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseWJFarm", "浣跨敤 W").SetValue(true)); Config.SubMenu("JungleFarm") .AddItem( new MenuItem("JungleFarmActive", "娓呴噹!").SetValue( new KeyBind(Config.Item("LaneClear").GetValue<KeyBind>().Key, KeyBindType.Press))); //Misc Config.AddSubMenu(new Menu("鏉傞」", "Misc")); Config.SubMenu("Misc").AddItem(new MenuItem("InterruptSpells", "鎵撴柇娉曟湳").SetValue(true)); Config.SubMenu("Misc").AddItem(new MenuItem("AutoEGC", "鑷姩E闃茬獊鑴?").SetValue(true)); //Damage after combo: var dmgAfterComboItem = new MenuItem("DamageAfterR", "鏄剧ず鎹熶激").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)Player.GetSpellDamage(hero, SpellSlot.R) * 3; Utility.HpBarDamageIndicator.Enabled = dmgAfterComboItem.GetValue<bool>(); dmgAfterComboItem.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue<bool>(); }; //Drawings menu: Config.AddSubMenu(new Menu("鑼冨洿", "Drawings")); Config.SubMenu("Drawings") .AddItem( new MenuItem("QRange", "Q 鑼冨洿").SetValue(new Circle(true, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("WRange", "W 鑼冨洿").SetValue(new Circle(true, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("ERange", "E 鑼冨洿").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("RRange", "R 鑼冨洿").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("RRangeM", "R 鑼冨洿 灏忓湴鍥?").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem(dmgAfterComboItem); Config.AddSubMenu(new Menu("L#涓枃绀惧尯", "guanggao")); Config.SubMenu("guanggao").AddItem(new MenuItem("wangzhan", "www.loll35.com")); Config.SubMenu("guanggao").AddItem(new MenuItem("qunhao", "姹夊寲缇わ細397983217")); Config.AddToMainMenu(); //Add the events we are going to use: Game.OnGameUpdate += Game_OnGameUpdate; Drawing.OnDraw += Drawing_OnDraw; Drawing.OnEndScene += Drawing_OnEndScene; Interrupter.OnPossibleToInterrupt += Interrupter_OnPossibleToInterrupt; AntiGapcloser.OnEnemyGapcloser += AntiGapcloser_OnEnemyGapcloser; Obj_AI_Hero.OnProcessSpellCast += Obj_AI_Hero_OnProcessSpellCast; Game.OnWndProc += Game_OnWndProc; Game.PrintChat(ChampionName + " Loaded!"); Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; Game.OnGameSendPacket += GameOnOnGameSendPacket; }
private static void Game_OnGameUpdate(EventArgs args) { if (Player.IsDead) { return; } if (Config.SubMenu("Misc").Item("UseVHHC").GetValue <bool>()) { Q.MinHitChance = HitChance.VeryHigh; W.MinHitChance = HitChance.VeryHigh; E.MinHitChance = HitChance.VeryHigh; R.MinHitChance = HitChance.VeryHigh; } else { Q.MinHitChance = HitChance.High; W.MinHitChance = HitChance.High; E.MinHitChance = HitChance.High; R.MinHitChance = HitChance.High; } Orbwalker.SetMovement(true); //Update the R range R.Range = 1200 * R.Level + 2000; if (IsCastingR) { Orbwalker.SetMovement(false); WhileCastingR(); return; } if (R.IsReady() && Config.Item("PingRKillable").GetValue <bool>()) { foreach (var enemy in HeroManager.Enemies.Where(h => h.IsValidTarget() && (float)Player.GetSpellDamage(h, SpellSlot.R) * new int[] { 0, 3, 4, 5 }[Player.GetSpell(SpellSlot.R).Level] > h.Health)) { Ping(enemy.Position.To2D()); } } if (Config.Item("ComboActive").GetValue <KeyBind>().Active) { Combo(); } else { if (Config.Item("HarassActive").GetValue <KeyBind>().Active || Config.Item("HarassActiveT").GetValue <KeyBind>().Active) { Harass(); } var lc = Config.Item("LaneClearActive").GetValue <KeyBind>().Active; if (lc || Config.Item("FreezeActive").GetValue <KeyBind>().Active) { Farm(lc); } if (Config.Item("JungleFarmActive").GetValue <KeyBind>().Active) { JungleFarm(); } } }
private static void WaveClear() { var Minions = ObjectManager.Get <Obj_AI_Minion>() .Where( m => (m.IsValidTarget()) && (Vector3.Distance(m.ServerPosition, Player.ServerPosition) <= Spells[SpellSlot.R].Range)); if (SpellSlot.Q.IsReady() && CassioUtils.Active("Waveclear.UseQ")) { var qminions = Minions.Where( m => Vector3.Distance(m.ServerPosition, Player.ServerPosition) <= Spells[SpellSlot.Q].Range); MinionManager.FarmLocation QLocation = MinionManager.GetBestCircularFarmLocation( qminions.Select(m => m.ServerPosition.To2D()).ToList(), Spells[SpellSlot.Q].Width, Spells[SpellSlot.Q].Range); if (QLocation.MinionsHit >= 1) { Spells[SpellSlot.Q].Cast(QLocation.Position); } } if (SpellSlot.W.IsReady() && CassioUtils.Active("Waveclear.UseW")) { var wminions = Minions.Where(m => Vector3.Distance(m.ServerPosition, Player.ServerPosition) <= Spells[SpellSlot.W].Range); MinionManager.FarmLocation WLocation = MinionManager.GetBestCircularFarmLocation( wminions.Select(m => m.ServerPosition.To2D()).ToList(), Spells[SpellSlot.W].Width, Spells[SpellSlot.W].Range); if (WLocation.MinionsHit >= 1) { Spells[SpellSlot.W].Cast(WLocation.Position); } } if (SpellSlot.E.IsReady() && CassioUtils.Active("Waveclear.UseE")) { Obj_AI_Minion KillableMinionE = null; var eminions = Minions.Where(m => Vector3.Distance(m.ServerPosition, Player.ServerPosition) <= Spells[SpellSlot.E].Range); if (CassioUtils.Active("Waveclear.useekillable")) { KillableMinionE = eminions.FirstOrDefault(m => m.Health < Player.GetSpellDamage(m, SpellSlot.E)); } else { KillableMinionE = eminions.OrderBy(x => x.Health).FirstOrDefault(); } if (KillableMinionE != null) { if (CassioUtils.Active("Waveclear.useepoison")) { if (KillableMinionE.isPoisoned()) { Spells[SpellSlot.E].Cast(KillableMinionE); } } else { Spells[SpellSlot.E].Cast(KillableMinionE); } } } if (SpellSlot.R.IsReady() && CassioUtils.Active("Waveclear.UseR")) { MinionManager.FarmLocation RLocation = MinionManager.GetBestLineFarmLocation( Minions.Select(m => m.ServerPosition.To2D()).ToList(), Spells[SpellSlot.R].Width, Spells[SpellSlot.R].Range); if (RLocation.MinionsHit > CassioUtils.GetSlider("Waveclear.Rcount")) { Spells[SpellSlot.R].Cast(RLocation.Position); DontMove = true; Utility.DelayAction.Add(200, () => DontMove = false); } } }
private static float GetComboDamage(Obj_AI_Base enemy) { double damage = 0d; if (Q.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.Q); } if (E.IsReady() & (Q.IsReady() || R.IsReady())) { damage += Player.GetSpellDamage(enemy, SpellSlot.E) * 2; } else if (E.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.E); } if (IgniteSlot != SpellSlot.Unknown && Player.SummonerSpellbook.CanUseSpell(IgniteSlot) == SpellState.Ready) { damage += ObjectManager.Player.GetSummonerSpellDamage(enemy, Damage.SummonerSpell.Ignite); } if (R.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.R) * 3; } return((float)damage); }
private static void Combo(Obj_AI_Hero target) { if (Spells[SpellSlot.Q].IsReady() && LuxUtils.Active("Combo.UseQ") && Player.Distance(target) <= Spells[SpellSlot.Q].Range) { var pred = Spells[SpellSlot.Q].GetPrediction(target, true); if (pred.CollisionObjects.Count <= 1 && pred.Hitchance >= LuxUtils.GetHitChance("Hitchance.Q")) { Spells[SpellSlot.Q].Cast(pred.CastPosition); } } if (Spells[SpellSlot.E].IsReady() && LuxE == null && LuxUtils.Active("Combo.UseE") && Player.Distance(target) <= Spells[SpellSlot.E].Range) { var pred = Spells[SpellSlot.E].GetPrediction(target, true); if (pred.Hitchance >= LuxUtils.GetHitChance("Hitchance.E")) { Spells[SpellSlot.E].Cast(pred.CastPosition); } } else if (LuxUtils.Active("Combo.UseE2") && LuxE != null && Vector3.Distance(LuxE.Position, target.ServerPosition) <= LuxE.BoundingRadius + target.BoundingRadius) { Spells[SpellSlot.E].Cast(); } if (SpellSlot.R.IsReady() && LuxUtils.Active("Combo.UseR")) { List <Obj_AI_Hero> targets = new List <Obj_AI_Hero>(); if (LuxUtils.Active("Combo.RKillable")) { targets = HeroManager.Enemies.Where( x => x.Health <= Player.GetSpellDamage(x, SpellSlot.R) && x.Distance(Player) <= Spells[SpellSlot.R].Range).ToList(); } else { targets = HeroManager.Enemies.Where(x => x.Distance(Player) <= Spells[SpellSlot.R].Range).ToList(); } List <CastPosition1> Positions = new List <CastPosition1>(); foreach (var h in targets) { var pred = Spells[SpellSlot.R].GetPrediction(h, true); int hit = pred.AoeTargetsHitCount + 1; // List<Obj_AI_Base> collobjs = // pred.CollisionObjects.FindAll(x => x.Type == GameObjectType.obj_AI_Hero && x.IsEnemy); CastPosition1 cp = new CastPosition1 { pos = pred.CastPosition, hc = pred.Hitchance, numberhit = hit, hasbuff = h.HasBuff("LuxLightBindingMis") }; Positions.Add(cp); } var bestpossibleposition = Positions.OrderByDescending(x => x.numberhit) .ThenByDescending(x => x.hc) .ThenByDescending(h => h.hasbuff) .FirstOrDefault(); if (bestpossibleposition != null && bestpossibleposition.hc >= LuxUtils.GetHitChance("Hitchance.R") && bestpossibleposition.numberhit >= LuxUtils.GetSlider("Combo.Rcount")) { Spells[SpellSlot.R].Cast(bestpossibleposition.pos); } } if (SpellSlot.W.IsReady() && LuxUtils.Active("Combo.UseW")) { var list = HeroManager.Allies; var lowhealthallies = list.Where(ally => ally.HealthPercent <= 40 && Player.Distance(ally) <= Spells[SpellSlot.W].Range); Obj_AI_Hero besthero = null; int amthit = 0; foreach (var hero in lowhealthallies) { var pred = Prediction.GetPrediction(WInput(hero)); if (pred.Hitchance >= HitChance.Collision || pred.Hitchance >= HitChance.Low) { var coll = pred.CollisionObjects.Count; if (coll >= amthit) { amthit = coll; besthero = hero; } } } if (besthero != null && Player.HealthPercent <= 30 && Player.CountEnemiesInRange(800) > 0) { Spells[SpellSlot.W].Cast(besthero.ServerPosition); } } }
private static void Combo() { var t = GetTarget(Q.Range, TargetSelector.DamageType.Physical); if (!t.IsValidTarget()) { return; } var useQ = Config.Item("UseQCombo").GetValue <bool>(); var useE = Config.Item("UseECombo").GetValue <bool>(); var useR = Config.Item("UseRCombo").GetValue <bool>(); var comboDamage = GetComboDamage(t); if (Q.IsReady() && useQ && t.IsValidTarget(Q.Range)) { if (Q.IsCharging) { Q.Cast(t); } else { Q.StartCharging(); } } UseItems(t); if (comboDamage > t.Health && IgniteSlot != SpellSlot.Unknown && vPlayer.Spellbook.CanUseSpell(IgniteSlot) == SpellState.Ready) { vPlayer.Spellbook.CastSpell(IgniteSlot, t); } if (E.IsReady() && useE && t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(vPlayer))) { E.Cast(); } if (R.IsReady()) { useR = (Config.Item("DontUlt" + t.BaseSkinName) != null && Config.Item("DontUlt" + t.BaseSkinName).GetValue <bool>() == false) && useR; var qDamage = vPlayer.GetSpellDamage(t, SpellSlot.Q); var eDamage = vPlayer.GetSpellDamage(t, SpellSlot.E) * E.Instance.Ammo; var rDamage = vPlayer.GetSpellDamage(t, SpellSlot.R); if (Q.IsReady() && t.Health < qDamage) { return; } if (E.IsReady() && Orbwalking.InAutoAttackRange(t) && t.Health < eDamage) { return; } if (Q.IsReady() && E.IsReady() && t.Health < qDamage + eDamage) { return; } if (useR) { if (t.Health > rDamage) { if (Q.IsReady() && E.IsReady() && t.Health < rDamage + qDamage + eDamage) { R.CastOnUnit(t); } else if (E.IsReady() && t.Health < rDamage + eDamage) { R.CastOnUnit(t); } else if (Q.IsReady() && t.Health < rDamage + qDamage) { R.CastOnUnit(t); } } else { if (!Orbwalking.InAutoAttackRange(t)) { R.CastOnUnit(t); } } } } }
public static double spellDamage(Obj_AI_Base mob) { double result = 0; Obj_AI_Hero hero = ObjectManager.Player; if (hero.ChampionName == "Nunu") { return(250 + (150 * hero.Spellbook.GetSpell(champSpell.Slot).Level)); } if (hero.ChampionName == "Chogath") { return(1000 + (hero.FlatMagicDamageMod * 0.7)); } if (hero.ChampionName == "Elise") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Lux") { return(hero.GetSpellDamage(mob, champSpell.Slot) - 100); } if (hero.ChampionName == "Volibear") { return(((35 + (45 * hero.Spellbook.GetSpell(SpellSlot.W).Level)) + ((hero.MaxHealth - (86 * hero.Level + 440)) * 0.15)) * ((mob.MaxHealth - mob.Health) / mob.MaxHealth + 1)); } if (hero.ChampionName == "Warwick") { return(25 + (50 * hero.Spellbook.GetSpell(champSpell.Slot).Level)); } if (hero.ChampionName == "Olaf") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Twitch") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Shaco") { return(10 + (40 * hero.Spellbook.GetSpell(champSpell.Slot).Level)); } if (hero.ChampionName == "Vi") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Pantheon") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "MasterYi") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "MonkeyKing") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "KhaZix") { return(getKhazixDmg(mob)); } if (hero.ChampionName == "Rammus") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Rengar") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Nasus") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Xerath") { champSpell.Range = 2000 + champSpell.Level * 1200;//Update R range return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "LeeSin") { return(getQ2Dmg(mob)); } if (hero.ChampionName == "Veigar") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Udyr") { return(getUdyrR(mob)); } if (hero.ChampionName == "Fizz") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } if (hero.ChampionName == "Kalista") { return(getKalistaEDmg(mob)); } if (hero.ChampionName == "Irelia") { return(hero.GetSpellDamage(mob, champSpell.Slot)); } return(result); }
/// <summary> /// GetCOmboDmg /// </summary> /// <param name="target"></param> /// <param name="ally"></param> /// <returns></returns> protected double GetAlliesComboDmg(Obj_AI_Hero target, Obj_AI_Hero ally) { return(ally.GetSpellDamage(target, SpellSlot.Q) + ally.GetSpellDamage(target, SpellSlot.W) + ally.GetSpellDamage(target, SpellSlot.E) + ally.GetSpellDamage(target, SpellSlot.R)); }
private static float GetComboDamage(Obj_AI_Base enemy) { double damage = 0d; if (Dfg.IsReady()) { damage += Player.GetItemDamage(enemy, Damage.DamageItems.Dfg) / 1.2; } if (Q.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.Q); } if (R.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.R); } if (Dfg.IsReady()) { damage = damage * 1.2; } if (W.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.W); } if (IgniteSlot != SpellSlot.Unknown && Player.SummonerSpellbook.CanUseSpell(IgniteSlot) == SpellState.Ready) { damage += ObjectManager.Player.GetSummonerSpellDamage(enemy, Damage.SummonerSpell.Ignite); } if (Items.HasItem(3155, (Obj_AI_Hero)enemy)) { damage = damage - 250; } if (Items.HasItem(3156, (Obj_AI_Hero)enemy)) { damage = damage - 400; } return((float)damage); }
private static void Smartks() { foreach ( var t in ObjectManager.Get <Obj_AI_Hero>().Where(t => t.IsEnemy).Where(t => t.IsValidTarget(_q.Range))) { #region e if (t.Health < _player.GetSpellDamage(t, SpellSlot.E) && _e.IsReady()) { _e.Cast(t); } #endregion #region q else if (t.Health < _player.GetSpellDamage(t, SpellSlot.Q) && _q.IsReady()) { _q.Cast(t); } #endregion #region eq else if (t.Health < (_player.GetSpellDamage(t, SpellSlot.Q) + (_player.GetSpellDamage(t, SpellSlot.E))) && _e.IsReady() && _q.IsReady()) { _e.Cast(t); if (_e.Cast(t) == CastStates.SuccessfullyCasted) { _q.Cast(t); } } #endregion #region eq ignite else if ((t.Health < (_player.GetSpellDamage(t, SpellSlot.Q) + (_player.GetSpellDamage(t, SpellSlot.E) + _player.GetSpellDamage(t, IgniteSlot)))) && _e.IsReady() && IgniteSlot.IsReady() && _q.IsReady() && IgniteSlot != SpellSlot.Unknown) { _e.Cast(t); if (_e.Cast(t) == CastStates.SuccessfullyCasted) { _q.Cast(t); _player.Spellbook.CastSpell(IgniteSlot, t); } } #endregion #region eq Ignite R else if (_cfg["KillSteal"]["RKS"].GetValue <MenuBool>().Value&& t.Health < (_player.GetSpellDamage(t, SpellSlot.Q) + _player.GetSpellDamage(t, SpellSlot.E) + _player.GetSpellDamage(t, IgniteSlot) + _player.GetSpellDamage(t, SpellSlot.R)) && _e.IsReady() && IgniteSlot.IsReady() && _q.IsReady() && _r.IsReady() && IgniteSlot != SpellSlot.Unknown) { if (t.Distance(_player) <= _e.Range) { _e.Cast(t); } if (_e.Cast(t) == CastStates.SuccessfullyCasted && _player.Distance(t) <= _q.Range) { _q.Cast(t); } if (_player.Distance(t) < 600) { _player.Spellbook.CastSpell(IgniteSlot, t); } if (_player.Distance(t) <= _r.Range && _q.Cast(t) == CastStates.SuccessfullyCasted) { _r.Cast(); } } #endregion } }
private static float GetComboDamage(Obj_AI_Base enemy) { double damage = 0d; if (DFG.IsReady()) { damage += Player.GetItemDamage(enemy, Damage.DamageItems.Dfg) / 1.2; } if (Q.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.Q) + Player.GetSpellDamage(enemy, SpellSlot.Q, 1); } if (W.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.W); } if (E.IsReady()) { damage += Player.GetSpellDamage(enemy, SpellSlot.E); } if (R.IsReady() || (rSpell.State == SpellState.Surpressed && R.Level > 0)) { damage += Player.GetSpellDamage(enemy, SpellSlot.R) * 8; } if (DFG.IsReady()) { damage = damage * 1.2; } if (IgniteSlot != SpellSlot.Unknown && Player.SummonerSpellbook.CanUseSpell(IgniteSlot) == SpellState.Ready) { damage += ObjectManager.Player.GetSummonerSpellDamage(enemy, Damage.SummonerSpell.Ignite); } return((float)damage); }
public static void BurstCombo() { var eTarget = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical); if (eTarget == null) { return; } var useQ = Config.Item("UseQCombo").GetValue <bool>(); var useW = Config.Item("UseWCombo").GetValue <bool>(); var useE = Config.Item("UseECombo").GetValue <bool>(); var useR = Config.Item("UseRCombo").GetValue <bool>(); var useIgnite = Config.Item("UseIgnite").GetValue <bool>(); var packetCast = Config.Item("PacketCast").GetValue <bool>(); var UseRMinEnemies = Config.Item("UseRMinEnemies").GetValue <Slider>().Value; double totalComboDamage = 0; totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.Q); totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.W); totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.E); totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.R); totalComboDamage += igniteManager.IsReady() ? Player.GetSummonerSpellDamage(eTarget, Damage.SummonerSpell.Ignite) : 0; double totalManaCost = 0; totalManaCost += Player.Spellbook.GetSpell(SpellSlot.R).ManaCost; totalManaCost += Player.Spellbook.GetSpell(SpellSlot.W).ManaCost; if (mustDebug) { Game.PrintChat("BurstCombo Damage {0}/{1} {2}", Convert.ToInt32(totalComboDamage), Convert.ToInt32(eTarget.Health), eTarget.Health < totalComboDamage ? "BustKill" : "Harras"); Game.PrintChat("BurstCombo Mana {0}/{1} {2}", Convert.ToInt32(totalManaCost), Convert.ToInt32(eTarget.Mana), Player.Mana >= totalManaCost ? "Mana OK" : "No Mana"); } // Passive UP +1 enemy Combo if (useR && R.IsReady()) { var query = DevHelper.GetEnemyList() .Where(x => x.IsValidTarget(R.Range) && HasPassiveBuff(x) && Player.GetSpellDamage(x, SpellSlot.R) > x.Health).OrderBy(x => x.Health); if (query.Any()) { R.CastOnUnit(query.First(), packetCast); } } // Combo Damage if (R.IsReady() && useR && eTarget.IsValidTarget(R.Range)) { if (eTarget.Health < totalComboDamage * 0.9 && Player.Mana >= totalManaCost) { if (totalComboDamage * 0.3 < eTarget.Health) // Anti OverKill { if (mustDebug) { Game.PrintChat("BurstCombo R"); } R.CastOnUnit(eTarget, packetCast); } else { if (mustDebug) { Game.PrintChat("BurstCombo OverKill"); } } dtBurstComboStart = DateTime.Now; } } // R min enemies if (R.IsReady() && useR && eTarget.IsValidTarget(R.Range)) { var enemiesInRange = DevHelper.GetEnemyList().Where(x => x.Distance(eTarget) < 400); if (enemiesInRange.Count() >= UseRMinEnemies) { R.CastOnUnit(eTarget, packetCast); } } if (dtBurstComboStart.AddSeconds(5) > DateTime.Now && igniteManager.IsReady()) { if (mustDebug) { Game.PrintChat("Ignite"); } igniteManager.Cast(eTarget); } }
private static void waveclear() { Menu waveclearMenu = menu.SubMenu("waveclear"); bool useQ = waveclearMenu.Item("wcUseQ").GetValue <bool>() && Q.IsReady(); bool useW = waveclearMenu.Item("wcUseW").GetValue <bool>() && W.IsReady(); bool useE = waveclearMenu.Item("wcUseE").GetValue <bool>() && E.IsReady(); var allMinionsQ = MinionManager.GetMinions(player.ServerPosition, Q.Range, MinionTypes.All, MinionTeam.Enemy); if (useQ) { foreach (var minion in allMinionsQ) { if (minion.IsValidTarget() && Q.IsKillable(minion)) { Q.CastOnUnit(player, packets()); return; } } } if (useW && allMinionsQ.Count > 1) { W.Cast(player, packets()); } if (useE) { foreach (var minion in allMinionsQ) { if (minion.IsValidTarget() && HealthPrediction.GetHealthPrediction(minion, (int)(player.Distance(minion) * 1000 / 1450)) < player.GetSpellDamage(minion, SpellSlot.E)) { E.CastOnUnit(minion, packets()); return; } } } var jcreeps = MinionManager.GetMinions(player.ServerPosition, E.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth); if (jcreeps.Count > 0) { var jcreep = jcreeps[0]; if (useQ) { Q.Cast(player, packets()); } if (useW) { W.Cast(player, packets()); } if (useE) { E.Cast(jcreep, packets()); } } }
private static void CheckDamage(Obj_AI_Base target) { if (target == null) { return; } var ad = Me.GetAutoAttackDamage(target); var ignite = Me.GetSpellSlot("summonerdot"); var tmt = Items.HasItem(3077) && Items.CanUseItem(3077) ? Me.GetItemDamage(target, Damage.DamageItems.Tiamat) : 0; var hyd = Items.HasItem(3074) && Items.CanUseItem(3074) ? Me.GetItemDamage(target, Damage.DamageItems.Hydra) : 0; var bwc = Items.HasItem(3144) && Items.CanUseItem(3144) ? Me.GetItemDamage(target, Damage.DamageItems.Bilgewater) : 0; var brk = Items.HasItem(3153) && Items.CanUseItem(3153) ? Me.GetItemDamage(target, Damage.DamageItems.Botrk) : 0; _rr = Me.GetSpellDamage(target, SpellSlot.R) - 20; _ra = ad + (ad * Runicpassive[Me.Level] / 100); _rq = _q.IsReady() ? DamageQ(target) : 0; _rw = _w.IsReady() ? Me.GetSpellDamage(target, SpellSlot.W) : 0; _ri = Me.Spellbook.CanUseSpell(ignite) == SpellState.Ready ? Me.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite) : 0; _ritems = tmt + hyd + bwc + brk; _ua = _r.IsReady() ? _ra + Me.CalcDamage(target, Damage.DamageType.Physical, Me.BaseAttackDamage + Me.FlatPhysicalDamageMod * 0.2) : _ua; _uq = _r.IsReady() ? _rq + Me.CalcDamage(target, Damage.DamageType.Physical, Me.BaseAttackDamage + Me.FlatPhysicalDamageMod * 0.2 * 0.7) : _uq; _uw = _r.IsReady() ? _rw + Me.CalcDamage(target, Damage.DamageType.Physical, Me.BaseAttackDamage + Me.FlatPhysicalDamageMod * 0.2 * 1) : _uw; _rr = _r.IsReady() ? Me.GetSpellDamage(target, SpellSlot.R) : 0; }
private static void Game_OnGameUpdate(EventArgs args) { if (Player.IsDead) { return; } Orbwalker.SetMovement(true); //Update the R range R.Range = 2000 + R.Level * 1200; if (IsCastingR) { Orbwalker.SetMovement(false); WhileCastingR(); return; } if (R.IsReady() && Config.Item("PingRKillable").GetValue <bool>()) { foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(h => h.IsValidTarget() && (float)Player.GetSpellDamage(h, SpellSlot.R) * 3 > h.Health)) { Ping(enemy.Position.To2D()); } } if (Config.Item("ComboActive").GetValue <KeyBind>().Active) { Combo(); } else { if (Config.Item("HarassActive").GetValue <KeyBind>().Active || Config.Item("HarassActiveT").GetValue <KeyBind>().Active) { Harass(); } var lc = Config.Item("LaneClearActive").GetValue <KeyBind>().Active; if (lc || Config.Item("FreezeActive").GetValue <KeyBind>().Active) { Farm(lc); } if (Config.Item("JungleFarmActive").GetValue <KeyBind>().Active) { JungleFarm(); } } }
private static float GetDmg(Obj_AI_Hero Sender, Obj_AI_Hero target, SpellSlot SpellSlot) { return (float)Sender.GetSpellDamage(target, SpellSlot); }
private static void Game_OnGameLoad(EventArgs args) { Player = ObjectManager.Player; if (Player.ChampionName != ChampionName) { return; } //Create the spells Q = new Spell(SpellSlot.Q, 1550); W = new Spell(SpellSlot.W, 1000); E = new Spell(SpellSlot.E, 1150); R = new Spell(SpellSlot.R, 675); Q.SetSkillshot(0.6f, 100f, float.MaxValue, false, SkillshotType.SkillshotLine); W.SetSkillshot(0.7f, 125f, float.MaxValue, false, SkillshotType.SkillshotCircle); E.SetSkillshot(0.25f, 60f, 1400f, true, SkillshotType.SkillshotLine); R.SetSkillshot(0.7f, 120f, float.MaxValue, false, SkillshotType.SkillshotCircle); Q.SetCharged("XerathArcanopulseChargeUp", "XerathArcanopulseChargeUp", 750, 1550, 1.5f); SpellList.Add(Q); SpellList.Add(W); SpellList.Add(E); SpellList.Add(R); //Create the menu Config = new Menu(ChampionName, ChampionName, true); //Orbwalker submenu Config.AddSubMenu(new Menu("Orbwalking", "Orbwalking")); //Add the target selector to the menu as submenu. var targetSelectorMenu = new Menu("Target Selector", "Target Selector"); SimpleTs.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Load the orbwalker and add it to the menu as submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); //Combo menu: Config.AddSubMenu(new Menu("Combo", "Combo")); Config.SubMenu("Combo").AddItem(new MenuItem("UseQCombo", "Use Q").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("UseWCombo", "Use W").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("UseECombo", "Use E").SetValue(true)); Config.SubMenu("Combo") .AddItem( new MenuItem("ComboActive", "Combo!").SetValue( new KeyBind(Config.Item("Orbwalk").GetValue <KeyBind>().Key, KeyBindType.Press))); //Misc Config.AddSubMenu(new Menu("R", "R")); Config.SubMenu("R").AddItem(new MenuItem("EnableRUsage", "Auto use charges").SetValue(true)); Config.SubMenu("R").AddItem(new MenuItem("rMode", "Mode ").SetValue(new StringList(new[] { "Normal", "Custom delays", "On Tap", "On Tap&Hover" }))); Config.SubMenu("R").AddItem(new MenuItem("rModeKey", "OnTap key").SetValue(new KeyBind("T".ToCharArray()[0], KeyBindType.Press))); Config.SubMenu("R").AddSubMenu(new Menu("Custom delays", "Custom delays")); for (int i = 1; i <= 3; i++) { Config.SubMenu("R").SubMenu("Custom delays").AddItem(new MenuItem("Delay" + i, "Delay" + i).SetValue(new Slider(0, 1500, 0))); } Config.SubMenu("R").AddItem(new MenuItem("PingRKillable", "Ping on killable targets (only local)").SetValue(true)); Config.SubMenu("R").AddItem(new MenuItem("BlockMovement", "Block right click while casting R").SetValue(false)); //Harass menu: Config.AddSubMenu(new Menu("Harass", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseQHarass", "Use Q").SetValue(true)); Config.SubMenu("Harass").AddItem(new MenuItem("UseWHarass", "Use W").SetValue(false)); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActive", "Harass!").SetValue( new KeyBind(Config.Item("Farm").GetValue <KeyBind>().Key, KeyBindType.Press))); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActiveT", "Harass (toggle)!").SetValue(new KeyBind("Y".ToCharArray()[0], KeyBindType.Toggle))); //Farming menu: Config.AddSubMenu(new Menu("Farm", "Farm")); Config.SubMenu("Farm") .AddItem( new MenuItem("UseQFarm", "Use Q").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 2))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseWFarm", "Use W").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 1))); Config.SubMenu("Farm") .AddItem( new MenuItem("FreezeActive", "Freeze!").SetValue( new KeyBind(Config.Item("Farm").GetValue <KeyBind>().Key, KeyBindType.Press))); Config.SubMenu("Farm") .AddItem( new MenuItem("LaneClearActive", "LaneClear!").SetValue( new KeyBind(Config.Item("LaneClear").GetValue <KeyBind>().Key, KeyBindType.Press))); //JungleFarm menu: Config.AddSubMenu(new Menu("JungleFarm", "JungleFarm")); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseQJFarm", "Use Q").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseWJFarm", "Use W").SetValue(true)); Config.SubMenu("JungleFarm") .AddItem( new MenuItem("JungleFarmActive", "JungleFarm!").SetValue( new KeyBind(Config.Item("LaneClear").GetValue <KeyBind>().Key, KeyBindType.Press))); //Misc Config.AddSubMenu(new Menu("Misc", "Misc")); Config.SubMenu("Misc").AddItem(new MenuItem("InterruptSpells", "Interrupt spells").SetValue(true)); Config.SubMenu("Misc").AddItem(new MenuItem("AutoEGC", "AutoE gapclosers").SetValue(true)); //Damage after combo: var dmgAfterComboItem = new MenuItem("DamageAfterR", "Draw damage after 3xR").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)Player.GetSpellDamage(hero, SpellSlot.R) * 3; Utility.HpBarDamageIndicator.Enabled = dmgAfterComboItem.GetValue <bool>(); dmgAfterComboItem.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue <bool>(); }; //Drawings menu: Config.AddSubMenu(new Menu("Drawings", "Drawings")); Config.SubMenu("Drawings") .AddItem( new MenuItem("QRange", "Q range").SetValue(new Circle(true, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("WRange", "W range").SetValue(new Circle(true, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("ERange", "E range").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("RRange", "R range").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("RRangeM", "R range (minimap)").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem(dmgAfterComboItem); Config.AddToMainMenu(); //Add the events we are going to use: Game.OnGameUpdate += Game_OnGameUpdate; Drawing.OnDraw += Drawing_OnDraw; Drawing.OnEndScene += Drawing_OnEndScene; Interrupter.OnPossibleToInterrupt += Interrupter_OnPossibleToInterrupt; AntiGapcloser.OnEnemyGapcloser += AntiGapcloser_OnEnemyGapcloser; Obj_AI_Hero.OnProcessSpellCast += Obj_AI_Hero_OnProcessSpellCast; Game.OnWndProc += Game_OnWndProc; Game.PrintChat(ChampionName + " Loaded!"); Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; Game.OnGameSendPacket += GameOnOnGameSendPacket; }
private static void Load(EventArgs args) { if (!myHero.BaseSkinName.Equals("Quinn")) { return; } Q = new SpellEx(SpellSlot.Q, 1010); E = new SpellEx(SpellSlot.E, 800); R = new SpellEx(SpellSlot.R, 550); Q.SetSkillshot(0.25f, 160f, 1150, true, SkillshotType.SkillshotLine); E.SetTargetted(0.25f, 2000f); myHero = ObjectManager.Player; m_mMenu = new Menu("Quinney", "Quinney", true); Menu tsMenu = new Menu("Target Selector", "ts"); TargetSelector.AddToMenu(tsMenu); m_mMenu.AddSubMenu(tsMenu); Menu orbwalkMenu = new Menu("Orbwalking", "orbwalk"); m_mMenu.AddSubMenu(orbwalkMenu); m_oOrbwalker = new Orbwalking.Orbwalker(orbwalkMenu); Menu comboMenu = new Menu("Combo Options", "combo"); m_mMenu.AddSubMenu(comboMenu); comboMenu.AddItem(new MenuItem("enabled", "Combo Enabled").SetValue(new KeyBind(' ', KeyBindType.Press))); comboMenu.AddItem(new MenuItem("useQ", "Use Q Human").SetValue(true)); comboMenu.AddItem(new MenuItem("useE", "Use E Human").SetValue(new KeyBind('S', KeyBindType.Toggle, true))); comboMenu.AddItem(new MenuItem("useQValor", "Use Q Valor").SetValue(true)); comboMenu.AddItem(new MenuItem("useEValor", "Use E Valor").SetValue(new KeyBind('S', KeyBindType.Toggle, false))); Menu harassMenu = new Menu("Harass Options", "harass"); m_mMenu.AddSubMenu(harassMenu); harassMenu.AddItem(new MenuItem("enabled", "Harass Enabled").SetValue(new KeyBind('C', KeyBindType.Press))); harassMenu.AddItem(new MenuItem("useQ", "Use Q Human").SetValue(true)); harassMenu.AddItem(new MenuItem("useE", "Use E Human").SetValue(new KeyBind('S', KeyBindType.Toggle, true))); MenuItem comboDmg = new MenuItem("comboDmg", "Draw HPBar Combo Damage").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += delegate(Obj_AI_Hero hero) { float dmg = 0; if (Q.IsReady()) { dmg += (float)myHero.GetSpellDamage(hero, SpellSlot.Q); } if (R.IsReady()) { dmg += (float)myHero.GetSpellDamage(hero, SpellSlot.R); } dmg += (float)myHero.GetAutoAttackDamage(hero, true) * 4; return(dmg); }; Utility.HpBarDamageIndicator.Enabled = comboDmg.GetValue <bool>(); comboDmg.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue <bool>(); }; Menu drawMenu = new Menu("Draw Options", "draw"); m_mMenu.AddSubMenu(drawMenu); drawMenu.AddItem(new MenuItem("Q", "Draw Q Range").SetValue(new Circle(false, Color.FromArgb(100, 255, 0, 255)))); drawMenu.AddItem(new MenuItem("W", "Draw W Range").SetValue(new Circle(false, Color.FromArgb(100, 255, 0, 255)))); drawMenu.AddItem(new MenuItem("E", "Draw E Range").SetValue(new Circle(true, Color.FromArgb(100, 255, 0, 255)))); drawMenu.AddItem(new MenuItem("R", "Draw R Range").SetValue(new Circle(false, Color.FromArgb(100, 255, 0, 255)))); drawMenu.AddItem(new MenuItem("eStatus", "Draw E Combo/Harass Status").SetValue(true)); drawMenu.AddItem(comboDmg); Menu ksMenu = new Menu("KS Options", "ks"); m_mMenu.AddSubMenu(ksMenu); ksMenu.AddItem(new MenuItem("useQ", "KS with Q").SetValue(true)); ksMenu.AddItem(new MenuItem("useRValor", "KS with R").SetValue(true)); Menu miscMenu = new Menu("Misc Options", "misc"); miscMenu.AddSubMenu(miscMenu); miscMenu.AddItem(new MenuItem("bushRevealer", "Use W to reveal stealth enemies in brushes").SetValue(true)); miscMenu.AddItem(new MenuItem("antigapcloser", "Anti-Gapcloser with E").SetValue(true)); miscMenu.AddItem(new MenuItem("interrupt", "Interrupt spells").SetValue(true)); miscMenu.AddItem( new MenuItem("interruptDangerLevel", "Danger level for interrupter").SetValue(new StringList(new string[] { "Low", "Medium", "High" }, 0))); miscMenu.AddToMainMenu(); BushRevealer revealer = new BushRevealer(m_mMenu.SubMenu("misc").Item("bushRevealer"), m_mMenu.SubMenu("combo").Item("enabled"), m_fWRange); Orbwalking.BeforeAttack += delegate(Orbwalking.BeforeAttackEventArgs eventArgs) { if (eventArgs.Target.Type.Equals(myHero.Type) && eventArgs.Target.IsValid <Obj_AI_Hero>() && eventArgs.Target.IsEnemy && HasEBuff((Obj_AI_Hero)eventArgs.Target)) { Orbwalking.AfterAttackEvenH afterAttack = null; afterAttack = delegate(AttackableUnit unit, AttackableUnit target) { if (target == eventArgs.Target) { AfterEnhancedAttack(unit, target); Orbwalking.AfterAttack -= afterAttack; } }; Orbwalking.AfterAttack += afterAttack; Utility.DelayAction.Add(500, () => Orbwalking.AfterAttack -= afterAttack); } }; ReadyForSpellCast.OnReadyForSpellCast += ReadyForSpellCastEvent; Game.OnGameUpdate += KillSteal; Drawing.OnDraw += Draw; Interrupter2.OnInterruptableTarget += InterruptableTarget; AntiGapcloser.OnEnemyGapcloser += EnemyGapCloser; }
public static void WaveClear() { var MinionList = MinionManager.GetMinions(Player.Position, Q.Range, MinionTypes.All, MinionTeam.Enemy, MinionOrderTypes.Health) .Where(x => !MinionListToIgnore.Contains(x.NetworkId)).ToList(); var JungleList = MinionManager.GetMinions(Player.Position, Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth); var UseLaneClearLastHit = Config.Item("UseLaneClearLastHit").GetValue <bool>(); var useQ = Config.Item("UseQLaneClear").GetValue <bool>(); var useW = Config.Item("UseWLaneClear").GetValue <bool>(); var useE = Config.Item("UseELaneClear").GetValue <bool>(); var ManaLaneClear = Config.Item("ManaLaneClear").GetValue <Slider>().Value; var packetCast = Config.Item("PacketCast").GetValue <bool>(); if (Q.IsReady() && useQ && Player.GetManaPerc() > ManaLaneClear) { var queryJungle = JungleList.Where(x => x.IsValidTarget(Q.Range)); if (queryJungle.Any()) { var mob = queryJungle.First(); Q.CastOnUnit(mob, packetCast); } var queryMinion = MinionList.Where(x => x.IsValidTarget(Q.Range)); if (queryMinion.Any()) { var mob = queryMinion.First(); if (UseLaneClearLastHit) { if (HealthPrediction.GetHealthPrediction(mob, (int)Q.Delay * 1000) < Player.GetSpellDamage(mob, SpellSlot.Q) * 0.9) { Q.CastOnUnit(mob, packetCast); MinionListToIgnore.Add(mob.NetworkId); MinionList.Remove(mob); } } else { if (HealthPrediction.GetHealthPrediction(mob, (int)Q.Delay * 1000) < Player.GetSpellDamage(mob, SpellSlot.Q) * 0.9) { Q.CastOnUnit(mob, packetCast); MinionListToIgnore.Add(mob.NetworkId); MinionList.Remove(mob); } else { mob = queryMinion.Last(); Q.CastOnUnit(mob, packetCast); MinionList.Remove(mob); } } } } if (W.IsReady() && useW && Player.GetManaPerc() > ManaLaneClear) { var queryJungle = JungleList.Where(x => x.IsValidTarget(W.Range)); if (queryJungle.Any()) { var mob = queryJungle.First(); W.CastOnUnit(mob, packetCast); } var query = MinionList.Where(x => x.IsValidTarget(W.Range)); if (query.Any()) { var mob = query.First(); if (UseLaneClearLastHit) { if (HealthPrediction.GetHealthPrediction(mob, (int)W.Delay * 1000) < Player.GetSpellDamage(mob, SpellSlot.W) * 0.9) { W.CastOnUnit(mob, packetCast); MinionListToIgnore.Add(mob.NetworkId); MinionList.Remove(mob); } } else { if (HealthPrediction.GetHealthPrediction(mob, (int)W.Delay * 1000) < Player.GetSpellDamage(mob, SpellSlot.W) * 0.9) { W.CastOnUnit(mob, packetCast); MinionListToIgnore.Add(mob.NetworkId); MinionList.Remove(mob); } else { mob = query.Last(); W.CastOnUnit(mob, packetCast); MinionList.Remove(mob); } } } } if (E.IsReady() && useE && Player.GetManaPerc() > ManaLaneClear) { var queryJungle = JungleList.Where(x => x.IsValidTarget(E.Range)); if (queryJungle.Any()) { var mob = queryJungle.First(); E.CastOnUnit(mob, packetCast); } var query = MinionList.Where(x => x.IsValidTarget(E.Range)); if (query.Any()) { var mob = query.First(); if (UseLaneClearLastHit) { if (HealthPrediction.GetHealthPrediction(mob, (int)E.Delay * 1000) < Player.GetSpellDamage(mob, SpellSlot.E) * 0.9) { E.CastOnUnit(mob, packetCast); MinionListToIgnore.Add(mob.NetworkId); MinionList.Remove(mob); } } else { if (HealthPrediction.GetHealthPrediction(mob, (int)E.Delay * 1000) < Player.GetSpellDamage(mob, SpellSlot.E) * 0.9) { E.CastOnUnit(mob, packetCast); MinionListToIgnore.Add(mob.NetworkId); MinionList.Remove(mob); } else { mob = query.Last(); E.CastOnUnit(mob, packetCast); MinionList.Remove(mob); } } } } }
private static void Game_OnGameLoad(EventArgs args) { Player = ObjectManager.Player; if (Player.BaseSkinName != ChampionName) { return; } //Create the spells Q = new Spell(SpellSlot.Q, 625); W = new Spell(SpellSlot.W, 600); E = new Spell(SpellSlot.E, 600); SpellList.Add(Q); SpellList.Add(W); SpellList.Add(E); //Create the menu Config = new Menu(ChampionName, ChampionName, true); var targetSelectorMenu = new Menu("Target Selector", "Target Selector"); TargetSelector.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Orbwalker submenu Config.AddSubMenu(new Menu("Orbwalking", "Orbwalking")); //Load the orbwalker and add it to the submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); Config.AddSubMenu(new Menu("Combo", "Combo")); Config.SubMenu("Combo") .AddItem(new MenuItem("ComboActive", "Combo!").SetValue(new KeyBind(32, KeyBindType.Press))); Config.AddSubMenu(new Menu("Harass", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseQHarass", "Use Q").SetValue(true)); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActive", "Harass!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); Config.AddSubMenu(new Menu("Farm", "Farm")); Config.SubMenu("Farm") .AddItem( new MenuItem("UseQFarm", "Use Q").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 2))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseWFarm", "Use W").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 3))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseEFarm", "Use E").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 1))); Config.SubMenu("Farm") .AddItem( new MenuItem("FreezeActive", "Freeze!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); Config.SubMenu("Farm") .AddItem( new MenuItem("LaneClearActive", "LaneClear!").SetValue(new KeyBind("V".ToCharArray()[0], KeyBindType.Press))); Config.AddSubMenu(new Menu("JungleFarm", "JungleFarm")); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseQJFarm", "Use Q").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseWJFarm", "Use W").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseEJFarm", "Use E").SetValue(true)); Config.SubMenu("JungleFarm") .AddItem( new MenuItem("JungleFarmActive", "JungleFarm!").SetValue(new KeyBind("V".ToCharArray()[0], KeyBindType.Press))); //Damage after combo: var dmgAfterComboItem = new MenuItem("DamageAfterCombo", "Draw damage after a rotation").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)(Player.GetSpellDamage(hero, SpellSlot.Q) * 2 + Player.GetSpellDamage(hero, SpellSlot.W) + Player.GetSpellDamage(hero, SpellSlot.E)); Utility.HpBarDamageIndicator.Enabled = dmgAfterComboItem.GetValue <bool>(); dmgAfterComboItem.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue <bool>(); }; Config.AddSubMenu(new Menu("Drawings", "Drawings")); Config.SubMenu("Drawings") .AddItem(new MenuItem("QRange", "Q range").SetValue(new Circle(true, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("WRange", "W range").SetValue(new Circle(false, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("ERange", "E range").SetValue(new Circle(false, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings").AddItem(dmgAfterComboItem); Config.AddToMainMenu(); //Add the events we are going to use: Drawing.OnDraw += Drawing_OnDraw; Game.OnGameUpdate += Game_OnGameUpdate; Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; }
private static void OnWaveClear() { List <Obj_AI_Base> allMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q.Range); if (Config.Item("UseQFarm").GetValue <bool>() && Q.IsReady()) { foreach (Obj_AI_Base minion in allMinions.Where( minion => minion.IsValidTarget() && HealthPrediction.GetHealthPrediction( minion, (int)(Vector3.Distance(Player.ServerPosition, minion.ServerPosition) * 1000 / 1400)) < 0.75 * Player.GetSpellDamage(minion, SpellSlot.Q))) { if (Vector3.Distance(minion.ServerPosition, ObjectManager.Player.ServerPosition) > Orbwalking.GetRealAutoAttackRange(ObjectManager.Player) && Vector3.Distance(Player.ServerPosition, minion.ServerPosition) <= Q.Range) { Orbwalker.SetAttack(false); Q.CastOnUnit(minion, false); Orbwalker.SetAttack(true); return; } } } if (Config.Item("UseWFarm").GetValue <bool>() && W.IsReady()) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Player.Position, W.Range) .Select(minion => minion.ServerPosition.To2D()) .ToList(), W.Width, W.Range); if (Wnorm && !Wevolved) { if (Vector2.Distance(Player.ServerPosition.To2D(), farmLocation.Position) <= W.Range) { W.Cast(farmLocation.Position); } } if (Wevolved && !Wnorm) { if (Vector2.Distance(Player.ServerPosition.To2D(), farmLocation.Position) <= WE.Range) { W.Cast(farmLocation.Position); } } } if (Config.Item("UseEFarm").GetValue <bool>() && E.IsReady()) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Player.Position, E.Range) .Select(minion => minion.ServerPosition.To2D()) .ToList(), E.Width, E.Range); if (Vector2.Distance(Player.ServerPosition.To2D(), farmLocation.Position) <= W.Range) { E.Cast(farmLocation.Position); } } if (Config.Item("UseItemsFarm").GetValue <bool>()) { MinionManager.FarmLocation farmLocation = MinionManager.GetBestCircularFarmLocation( MinionManager.GetMinions(Player.Position, HDR.Range) .Select(minion => minion.ServerPosition.To2D()) .ToList(), HDR.Range, HDR.Range); if (HDR.IsReady() && Vector2.Distance(Player.ServerPosition.To2D(), farmLocation.Position) <= HDR.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3074, ObjectManager.Player); } if (TIA.IsReady() && Vector2.Distance(Player.ServerPosition.To2D(), farmLocation.Position) <= TIA.Range && farmLocation.MinionsHit >= 2) { Items.UseItem(3077, ObjectManager.Player); } } }
public static void BurstCombo() { var eTarget = SimpleTs.GetTarget(R.Range, SimpleTs.DamageType.Magical); if (eTarget == null) { return; } var useQ = Config.Item("UseQCombo").GetValue <bool>(); var useW = Config.Item("UseWCombo").GetValue <bool>(); var useE = Config.Item("UseECombo").GetValue <bool>(); var useR = Config.Item("UseRCombo").GetValue <bool>(); var useIgnite = Config.Item("UseIgnite").GetValue <bool>(); var packetCast = Config.Item("PacketCast").GetValue <bool>(); double totalComboDamage = 0; if (R.IsReady()) { totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.R); totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.Q); totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.E); } totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.Q); totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.E); totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.E); totalComboDamage += Player.GetSpellDamage(eTarget, SpellSlot.E); totalComboDamage += summonerSpellManager.GetIgniteDamage(eTarget); double totalManaCost = 0; if (R.IsReady()) { totalManaCost += Player.Spellbook.GetSpell(SpellSlot.R).ManaCost; } totalManaCost += Player.Spellbook.GetSpell(SpellSlot.Q).ManaCost; if (mustDebug) { Game.PrintChat("BurstCombo Damage {0}/{1} {2}", Convert.ToInt32(totalComboDamage), Convert.ToInt32(eTarget.Health), eTarget.Health < totalComboDamage ? "BustKill" : "Harras"); Game.PrintChat("BurstCombo Mana {0}/{1} {2}", Convert.ToInt32(totalManaCost), Convert.ToInt32(eTarget.Mana), Player.Mana >= totalManaCost ? "Mana OK" : "No Mana"); } if (eTarget.Health < totalComboDamage && Player.Mana >= totalManaCost) { if (R.IsReady() && useR && eTarget.IsValidTarget(R.Range) && eTarget.IsFacing(Player)) { if (totalComboDamage * 0.3 < eTarget.Health) // Anti R OverKill { if (mustDebug) { Game.PrintChat("BurstCombo R"); } R.Cast(eTarget.ServerPosition, packetCast); dtBurstComboStart = DateTime.Now; } else { if (mustDebug) { Game.PrintChat("BurstCombo OverKill"); } dtBurstComboStart = DateTime.Now; } } } if (dtBurstComboStart.AddSeconds(5) > DateTime.Now && summonerSpellManager.IsReadyIgnite() && eTarget.IsValidTarget(600)) { if (mustDebug) { Game.PrintChat("Ignite"); } summonerSpellManager.CastIgnite(eTarget); } }
private ExtraDamage GetExtraDamage(Obj_AI_Base minion) { Obj_AI_Hero player = ObjectManager.Player; switch (ObjectManager.Player.ChampionName) { case "Chogath": return(player.Spellbook.CanUseSpell(SpellSlot.R) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.R), 175, SpellType.Target, SpellSlot.R) : null); case "Elise": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 475, SpellType.Target, SpellSlot.Q) : null); case "Fizz": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 550, SpellType.Target, SpellSlot.Q) : null); case "Irelia": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 650, SpellType.Target, SpellSlot.Q) : null); case "Kalista": return(player.Spellbook.CanUseSpell(SpellSlot.E) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.E), 950, SpellType.Active, SpellSlot.E) : null); case "Kayle": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 650, SpellType.Target, SpellSlot.Q) : null); case "KhaZix": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q, (MinionManager.GetMinions(minion.ServerPosition, 500f, MinionTypes.All, MinionTeam.Neutral)).Count > 0 ? ObjectManager.Player.HasBuff("khazixqevo", true) ? 2 : 0 : ObjectManager.Player.HasBuff("khazixqevo", true) ? 3 : 1), 325, SpellType.Target, SpellSlot.Q) : null); case "LeeSin": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready && minion.HasBuff("BlindMonkQOne", true) ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.R, 1) > 400 ? 400 : player.GetSpellDamage(minion, SpellSlot.R, 1), 1200, SpellType.Skillshot, SpellSlot.Q) : null); case "Lux": return(player.Spellbook.CanUseSpell(SpellSlot.R) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.R), 3340, SpellType.Skillshot, SpellSlot.R) : null); case "MasterYi": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 600, SpellType.Target, SpellSlot.Q) : null); case "MonkeyKing": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 100, SpellType.Active, SpellSlot.Q) : null); case "Nasus": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 100, SpellType.Active, SpellSlot.Q) : null); //TODO: Check for nasus stacks case "Nunu": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 155, SpellType.Target, SpellSlot.Q) : null); case "Olaf": return(player.Spellbook.CanUseSpell(SpellSlot.E) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.E), 325, SpellType.Target, SpellSlot.E) : null); case "Pantheon": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 600, SpellType.Target, SpellSlot.Q) : null); case "Rammus": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 100, SpellType.Active, SpellSlot.Q) : null); case "Rengar": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 100, SpellType.Active, SpellSlot.Q) : null); case "Shaco": return(player.Spellbook.CanUseSpell(SpellSlot.E) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.E), 625, SpellType.Target, SpellSlot.E) : null); case "Twitch": return(player.Spellbook.CanUseSpell(SpellSlot.E) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.E), 1200, SpellType.Active, SpellSlot.E) : null); case "Udyr": return(player.Spellbook.CanUseSpell(SpellSlot.R) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.R), 100, SpellType.Active, SpellSlot.R) : null); case "Veigar": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 650, SpellType.Target, SpellSlot.Q) : null); case "Vi": return(player.Spellbook.CanUseSpell(SpellSlot.E) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.E), 600, SpellType.Active, SpellSlot.E) : null); case "Volibear": return(player.Spellbook.CanUseSpell(SpellSlot.W) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.W), 400, SpellType.Target, SpellSlot.W) : null); case "Warwick": return(player.Spellbook.CanUseSpell(SpellSlot.Q) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.Q), 400, SpellType.Target, SpellSlot.Q) : null); case "Xerath": return(player.Spellbook.CanUseSpell(SpellSlot.R) == SpellState.Ready ? new ExtraDamage(player.GetSpellDamage(minion, SpellSlot.R), 3200 + 1200 * player.Spellbook.GetSpell(SpellSlot.R).Level, SpellType.Skillshot, SpellSlot.R) : null); default: return(null); } }
private static void Farm(bool laneClear) { var rangedMinions = MinionManager.GetMinions( ObjectManager.Player.ServerPosition, Q2.Range, MinionTypes.Ranged); var allMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, Q2.Range); var useQ = Config.Item("farmQ").GetValue <bool>(); var useE = Config.Item("farmE").GetValue <bool>(); if (laneClear) { if (Q.IsReady() && useQ) { var rangedLocation = Q2.GetCircularFarmLocation(rangedMinions); var location = Q2.GetCircularFarmLocation(allMinions); var bLocation = (location.MinionsHit > rangedLocation.MinionsHit + 1) ? location : rangedLocation; if (bLocation.MinionsHit > 0) { Q2.Cast(bLocation.Position.To3D()); } } if (E.IsReady() && useE) { var rangedLocation = E.GetCircularFarmLocation(rangedMinions, E.Width * 2); var location = E.GetCircularFarmLocation(allMinions, E.Width * 2); var bLocation = (location.MinionsHit > rangedLocation.MinionsHit + 1) ? location : rangedLocation; if (bLocation.MinionsHit > 2) { E.Cast(bLocation.Position.To3D()); } } } else { if (useQ && Q.IsReady()) { foreach (var minion in allMinions) { if (!Orbwalking.InAutoAttackRange(minion)) { var Qdamage = Player.GetSpellDamage(minion, SpellSlot.Q) * 0.75; if (Qdamage > Q.GetHealthPrediction(minion)) { Q2.Cast(minion); } } } } if (E.IsReady() && useE) { var rangedLocation = E.GetCircularFarmLocation(rangedMinions, E.Width * 2); var location = E.GetCircularFarmLocation(allMinions, E.Width * 2); var bLocation = (location.MinionsHit > rangedLocation.MinionsHit + 1) ? location : rangedLocation; if (bLocation.MinionsHit > 2) { E.Cast(bLocation.Position.To3D()); } } } }
private static void Game_OnGameLoad(EventArgs args) { Player = ObjectManager.Player; if (Player.BaseSkinName != ChampionName) return; //Create the spells Q.SetSkillshot(0.25f, 40, 1200, true, SkillshotType.SkillshotLine); //Create the menu Config = new Menu(ChampionName, ChampionName, true); var targetSelectorMenu = new Menu("Target Selector", "Target Selector"); SimpleTs.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Orbwalker submenu Config.AddSubMenu(new Menu("Orbwalking", "Orbwalking")); //Load the orbwalker and add it to the submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); Config.AddSubMenu(new Menu("Combo", "Combo")); Config.SubMenu("Combo").AddItem(new MenuItem("ComboQ", "Use Q?").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("ComboR","Use R?").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("ComboActive", "Combo!").SetValue(new KeyBind(32, KeyBindType.Press))); Config.AddSubMenu(new Menu("Harass", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseQHarass", "Use Q").SetValue(true)); Config.SubMenu("Harass").AddItem(new MenuItem("QMana", "Min Mana Q").SetValue(new Slider(40, 1, 100))); Config.SubMenu("Harass").AddItem(new MenuItem("HarassActive", "Harass!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); //Damage after combo: var eDamage = new MenuItem("DamageAfterCombo", "HP After Used Q+2AA").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)(Player.GetSpellDamage(hero, SpellSlot.Q) + (Player.GetAutoAttackDamage(hero)*2)); Utility.HpBarDamageIndicator.Enabled = eDamage.GetValue<bool>(); eDamage.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue<bool>(); }; Config.AddSubMenu(new Menu("KS", "KS")); Config.SubMenu("KS").AddItem(new MenuItem("StealE","Steal With E").SetValue(true)); Config.AddSubMenu(new Menu("Misc", "Misc")); Config.SubMenu("Misc").AddItem(new MenuItem("eStacks", "E Stacks *Broken").SetValue(new Slider(10, 2, 30))); Config.SubMenu("Misc").AddItem(new MenuItem("eMana", "Min Mana E").SetValue(new Slider(40, 1, 100))); Config.SubMenu("Misc").AddItem(new MenuItem("safer", "Use R to save allies").SetValue(true)); Config.SubMenu("Misc").AddItem(new MenuItem("savehp", "HP to Save %").SetValue(new Slider(40, 1, 100))); Config.SubMenu("Misc").AddItem(new MenuItem("Harasser", "Harass Allways").SetValue(true)); // Config.AddItem(new MenuItem("packetCast", "Packet Cast").SetValue(true)); Config.AddSubMenu(new Menu("Drawings", "Drawings")); Config.SubMenu("Drawings").AddItem(new MenuItem("QRange", "Q range").SetValue(new Circle(true, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings") .AddItem(new MenuItem("WRange", "W range").SetValue(new Circle(false, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings").AddItem(new MenuItem("RRange", "R range").SetValue(new Circle(false, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings").AddItem(eDamage); Config.AddToMainMenu(); //Add the events we are going to use: Drawing.OnDraw += Drawing_OnDraw; Game.OnGameUpdate += Game_OnGameUpdate; GameObject.OnCreate += OnCreateObject; // Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; Game.PrintChat("<font color='#00FFFF'>>> Deniz Kalista v0.5 Loaded"); }
/// <summary> /// The calculate damage. /// </summary> /// <param name="source"> /// The source. /// </param> /// <param name="target"> /// The target. /// </param> /// <param name="spell"> /// The spell. /// </param> /// <returns> /// </returns> private static double CalculateDamage(Obj_AI_Hero source, Obj_AI_Base target, SpellSlot spell) { return source.GetSpellDamage(target, spell); }
private static void Game_OnGameLoad(EventArgs args) { Player = ObjectManager.Player; if (Player.ChampionName != ChampionName) { return; } //Create the spells Q = new Spell(SpellSlot.Q, 1550); W = new Spell(SpellSlot.W, 1000); E = new Spell(SpellSlot.E, 1150); R = new Spell(SpellSlot.R, 675); Q.SetSkillshot(0.6f, 100f, float.MaxValue, false, SkillshotType.SkillshotLine); W.SetSkillshot(0.7f, 125f, float.MaxValue, false, SkillshotType.SkillshotCircle); E.SetSkillshot(0.25f, 60f, 1400f, true, SkillshotType.SkillshotLine); R.SetSkillshot(0.7f, 120f, float.MaxValue, false, SkillshotType.SkillshotCircle); Q.SetCharged("XerathArcanopulseChargeUp", "XerathArcanopulseChargeUp", 750, 1550, 1.5f); SpellList.Add(Q); SpellList.Add(W); SpellList.Add(E); SpellList.Add(R); //Create the menu Config = new Menu(ChampionName, ChampionName, true); //Orbwalker submenu Config.AddSubMenu(new Menu("璧扮爫", "Orbwalking")); //Add the target selector to the menu as submenu. var targetSelectorMenu = new Menu("鐩爣閫夋嫨", "Target Selector"); SimpleTs.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Load the orbwalker and add it to the menu as submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); //Combo menu: Config.AddSubMenu(new Menu("杩炴嫑", "Combo")); Config.SubMenu("Combo").AddItem(new MenuItem("UseQCombo", "浣跨敤 Q").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("UseWCombo", "浣跨敤 W").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("UseECombo", "浣跨敤 E").SetValue(true)); Config.SubMenu("Combo") .AddItem( new MenuItem("ComboActive", "杩炴嫑!").SetValue( new KeyBind(Config.Item("Orbwalk").GetValue <KeyBind>().Key, KeyBindType.Press))); //Misc Config.AddSubMenu(new Menu("R", "R")); Config.SubMenu("R").AddItem(new MenuItem("EnableRUsage", "鑷姩浣跨敤澶ф嫑").SetValue(true)); Config.SubMenu("R").AddItem(new MenuItem("rMode", "妯″紡").SetValue(new StringList(new[] { "姝e父", "鑷畾涔?", "OnTap" }))); Config.SubMenu("R").AddItem(new MenuItem("rModeKey", "OnTap鎸夐挳").SetValue(new KeyBind("T".ToCharArray()[0], KeyBindType.Press))); Config.SubMenu("R").AddSubMenu(new Menu("璁剧疆寤惰繜", "Custom delays")); for (int i = 1; i <= 3; i++) { Config.SubMenu("R").SubMenu("Custom delays").AddItem(new MenuItem("Delay" + i, "Delay" + i).SetValue(new Slider(0, 1500, 0))); } Config.SubMenu("R").AddItem(new MenuItem("PingRKillable", "Ping鍙潃姝荤洰鏍?鏈湴)").SetValue(true)); Config.SubMenu("R").AddItem(new MenuItem("BlockMovement", "鏈夐殰纰嶇墿鏃剁瓑寰呮姇鎺稲").SetValue(false)); //Harass menu: Config.AddSubMenu(new Menu("楠氭壈", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseQHarass", "浣跨敤 Q").SetValue(true)); Config.SubMenu("Harass").AddItem(new MenuItem("UseWHarass", "浣跨敤 W").SetValue(false)); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActive", "楠氭壈!").SetValue( new KeyBind(Config.Item("Farm").GetValue <KeyBind>().Key, KeyBindType.Press))); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActiveT", "楠氭壈 (鎸夐敭)!").SetValue(new KeyBind("Y".ToCharArray()[0], KeyBindType.Toggle))); //Farming menu: Config.AddSubMenu(new Menu("琛ュ叺", "Farm")); Config.SubMenu("Farm") .AddItem( new MenuItem("UseQFarm", "浣跨敤 Q").SetValue( new StringList(new[] { "琛ュ叺", "娓呭叺", "鍏ㄩ儴", "涓嶇敤" }, 2))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseWFarm", "浣跨敤 W").SetValue( new StringList(new[] { "琛ュ叺", "娓呭叺", "鍏ㄩ儴", "涓嶇敤" }, 1))); Config.SubMenu("Farm") .AddItem( new MenuItem("FreezeActive", "琛ュ叺!").SetValue( new KeyBind(Config.Item("Farm").GetValue <KeyBind>().Key, KeyBindType.Press))); Config.SubMenu("Farm") .AddItem( new MenuItem("LaneClearActive", "娓呭叺!").SetValue( new KeyBind(Config.Item("LaneClear").GetValue <KeyBind>().Key, KeyBindType.Press))); //JungleFarm menu: Config.AddSubMenu(new Menu("娓呴噹", "JungleFarm")); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseQJFarm", "浣跨敤 Q").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseWJFarm", "浣跨敤 W").SetValue(true)); Config.SubMenu("JungleFarm") .AddItem( new MenuItem("JungleFarmActive", "娓呴噹!").SetValue( new KeyBind(Config.Item("LaneClear").GetValue <KeyBind>().Key, KeyBindType.Press))); //Misc Config.AddSubMenu(new Menu("鏉傞」", "Misc")); Config.SubMenu("Misc").AddItem(new MenuItem("InterruptSpells", "鎵撴柇娉曟湳").SetValue(true)); Config.SubMenu("Misc").AddItem(new MenuItem("AutoEGC", "鑷姩E闃茬獊鑴?").SetValue(true)); //Damage after combo: var dmgAfterComboItem = new MenuItem("DamageAfterR", "鏄剧ず鎹熶激").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)Player.GetSpellDamage(hero, SpellSlot.R) * 3; Utility.HpBarDamageIndicator.Enabled = dmgAfterComboItem.GetValue <bool>(); dmgAfterComboItem.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue <bool>(); }; //Drawings menu: Config.AddSubMenu(new Menu("鑼冨洿", "Drawings")); Config.SubMenu("Drawings") .AddItem( new MenuItem("QRange", "Q 鑼冨洿").SetValue(new Circle(true, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("WRange", "W 鑼冨洿").SetValue(new Circle(true, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("ERange", "E 鑼冨洿").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("RRange", "R 鑼冨洿").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("RRangeM", "R 鑼冨洿 灏忓湴鍥?").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem(dmgAfterComboItem); Config.AddSubMenu(new Menu("鐒$偤姹夊寲", "by wuwei")); Config.SubMenu("by wuwei").AddItem(new MenuItem("qunhao", "姹夊寲缇わ細386289593")); Config.SubMenu("by wuwei").AddItem(new MenuItem("qunhao2", "濞冨▋缇わ細13497795")); Config.AddToMainMenu(); //Add the events we are going to use: Game.OnGameUpdate += Game_OnGameUpdate; Drawing.OnDraw += Drawing_OnDraw; Drawing.OnEndScene += Drawing_OnEndScene; Interrupter.OnPossibleToInterrupt += Interrupter_OnPossibleToInterrupt; AntiGapcloser.OnEnemyGapcloser += AntiGapcloser_OnEnemyGapcloser; Obj_AI_Hero.OnProcessSpellCast += Obj_AI_Hero_OnProcessSpellCast; Game.OnWndProc += Game_OnWndProc; Game.PrintChat(ChampionName + " Loaded!"); Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; Game.OnGameSendPacket += GameOnOnGameSendPacket; }
private static void Game_OnGameLoad(EventArgs args) { Player = ObjectManager.Player; if (Player.BaseSkinName != ChampionName) return; //Create the spells Q = new Spell(SpellSlot.Q, 625); W = new Spell(SpellSlot.W, 600); E = new Spell(SpellSlot.E, 600); SpellList.Add(Q); SpellList.Add(W); SpellList.Add(E); //Create the menu Config = new Menu(ChampionName, ChampionName, true); var targetSelectorMenu = new Menu("鐩爣閫夋嫨", "Target Selector"); SimpleTs.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Orbwalker submenu Config.AddSubMenu(new Menu("鑷甫璧扮爫", "Orbwalking")); //Load the orbwalker and add it to the submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); Config.AddSubMenu(new Menu("杩炴嫑", "Combo")); Config.SubMenu("Combo") .AddItem(new MenuItem("ComboActive", "杩炴嫑!").SetValue(new KeyBind(32, KeyBindType.Press))); Config.AddSubMenu(new Menu("楠氭壈", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseQHarass", "浣跨敤Q").SetValue(true)); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActive", "楠氭壈!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); Config.AddSubMenu(new Menu("琛ュ叺", "Farm")); Config.SubMenu("Farm") .AddItem( new MenuItem("UseQFarm", "浣跨敤Q").SetValue( new StringList(new[] { "琛ュ叺", "娓呯嚎", "鍏ㄩ儴", "No" }, 2))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseWFarm", "浣跨敤W").SetValue( new StringList(new[] { "琛ュ叺", "娓呯嚎", "鍏ㄩ儴", "No" }, 3))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseEFarm", "浣跨敤E").SetValue( new StringList(new[] { "琛ュ叺", "娓呯嚎", "鍏ㄩ儴", "No" }, 1))); Config.SubMenu("Farm") .AddItem( new MenuItem("FreezeActive", "娓呯嚎!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); Config.SubMenu("Farm") .AddItem( new MenuItem("LaneClearActive", "娓呯嚎!").SetValue(new KeyBind("V".ToCharArray()[0], KeyBindType.Press))); Config.AddSubMenu(new Menu("娓呴噹", "JungleFarm")); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseQJFarm", "浣跨敤Q").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseWJFarm", "浣跨敤W").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseEJFarm", "浣跨敤E").SetValue(true)); Config.SubMenu("JungleFarm") .AddItem( new MenuItem("JungleFarmActive", "娓呴噹!").SetValue(new KeyBind("V".ToCharArray()[0], KeyBindType.Press))); //Damage after combo: var dmgAfterComboItem = new MenuItem("DamageAfterCombo", "缁樺埗鎶€鑳芥€讳激瀹硘").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)(Player.GetSpellDamage(hero, SpellSlot.Q) * 2 + Player.GetSpellDamage(hero, SpellSlot.W) + Player.GetSpellDamage(hero, SpellSlot.E)); Utility.HpBarDamageIndicator.Enabled = dmgAfterComboItem.GetValue<bool>(); dmgAfterComboItem.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue<bool>(); }; Config.AddSubMenu(new Menu("鑼冨洿鏄剧ず", "Drawings")); Config.SubMenu("Drawings") .AddItem(new MenuItem("QRange", "Q鑼冨洿").SetValue(new Circle(true, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("WRange", "W鑼冨洿").SetValue(new Circle(false, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("ERange", "E鑼冨洿").SetValue(new Circle(false, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings").AddItem(dmgAfterComboItem); Config.AddToMainMenu(); { Config.AddSubMenu(new Menu("L#涓枃绀惧尯姹夊寲", "LOLL35.Com")); Config.SubMenu("LOLL35.Com").AddItem(new MenuItem("wangzhi", "www.loll35.com")); Config.SubMenu("LOLL35.Com").AddItem(new MenuItem("qunhao2", "姹夊寲缇わ細397983217")); } //Add the events we are going to use: Drawing.OnDraw += Drawing_OnDraw; Game.OnGameUpdate += Game_OnGameUpdate; Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; }
private static void Game_OnGameLoad(EventArgs args) { Game.PrintChat("Deniz617's Nunu Loading.."); Player = ObjectManager.Player; if (Player.BaseSkinName != ChampionName) return; //Create the spells Q = new Spell(SpellSlot.Q, 125); W = new Spell(SpellSlot.W, 700); E = new Spell(SpellSlot.E, 580); R = new Spell(SpellSlot.R, 650); SpellList.Add(Q); SpellList.Add(W); SpellList.Add(E); //Create the menu Config = new Menu(ChampionName, ChampionName, true); var targetSelectorMenu = new Menu("Target Selector", "Target Selector"); SimpleTs.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Orbwalker submenu Config.AddSubMenu(new Menu("Orbwalking", "Orbwalking")); //Load the orbwalker and add it to the submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); Config.AddSubMenu(new Menu("Combo", "Combo")); Config.SubMenu("Combo").AddItem(new MenuItem("ComboR", "Use R?").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("MinEnemys", "Min enemys for R")).SetValue(new Slider(3, 5, 1)); Config.SubMenu("Combo").AddItem(new MenuItem("ComboActive", "Combo!").SetValue(new KeyBind(32, KeyBindType.Press))); Config.AddSubMenu(new Menu("Harass", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseEHarass", "Use E").SetValue(true)); Config.SubMenu("Harass").AddItem(new MenuItem("EMana", "Min Mana E").SetValue(new Slider(40, 1, 100))); Config.SubMenu("Harass").AddItem(new MenuItem("HarassActive", "Harass!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); Config.AddSubMenu(new Menu("Farm", "Farm")); Config.SubMenu("Farm").AddItem(new MenuItem("UseQFarm", "Use Q").SetValue(true)); Config.SubMenu("Farm").AddItem(new MenuItem("FreezeActive", "Freeze!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); //Damage after combo: var eDamage = new MenuItem("DamageAfterCombo", "Draw Damage After Used E").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)(Player.GetSpellDamage(hero, SpellSlot.E)); Utility.HpBarDamageIndicator.Enabled = eDamage.GetValue<bool>(); eDamage.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue<bool>(); }; Config.AddSubMenu(new Menu("KS", "KS")); Config.SubMenu("KS").AddItem(new MenuItem("StealE", "Steal With E").SetValue(true)); Config.SubMenu("KS").AddItem(new MenuItem("BreakU", "Break Ulti To Steal?").SetValue(false)); Config.AddSubMenu(new Menu("Misc", "Misc")); Config.SubMenu("Misc").AddItem(new MenuItem("HealQ", "Use Q if").SetValue(true)); Config.SubMenu("Misc").AddItem(new MenuItem("QHP", "HP is %").SetValue(new Slider(40, 1, 100))); Config.SubMenu("Misc").AddItem(new MenuItem("QMana", "Min Mana Q").SetValue(new Slider(40, 1, 100))); Config.SubMenu("Misc").AddItem(new MenuItem("GetAsisted", "Use W On Allies").SetValue(true)); Config.SubMenu("Misc").AddItem(new MenuItem("WMana", "Min Mana W").SetValue(new Slider(40, 1, 100))); Config.SubMenu("Misc").AddItem(new MenuItem("Harasser", "Harass Allways").SetValue(true)); Config.AddSubMenu(new Menu("Jungle", "Jungle")); Config.SubMenu("Jungle").AddItem(new MenuItem("AutoSteal", "Auto Q or Smite").SetValue(true)); Config.AddItem(new MenuItem("packetCast", "Packet Cast").SetValue(true)); Config.AddSubMenu(new Menu("Drawings", "Drawings")); Config.SubMenu("Drawings").AddItem(new MenuItem("QRange", "Q range").SetValue(new Circle(true, System.Drawing.Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings").AddItem(new MenuItem("WRange", "W range").SetValue(new Circle(false, System.Drawing.Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings").AddItem(new MenuItem("ERange", "E range").SetValue(new Circle(false, System.Drawing.Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings").AddItem(eDamage); Config.AddToMainMenu(); //Add the events we are going to use: Drawing.OnDraw += Drawing_OnDraw; Game.OnGameUpdate += Game_OnGameUpdate; Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; Game.PrintChat("Deniz617's Nunu Loaded"); }
static float GetDamage(Obj_AI_Hero hero, Obj_AI_Hero target, SpellSlot slot) { return((float)hero.GetSpellDamage(target, slot)); }
private static void Combo() { var useQ = Config.Item("qCombo").GetValue <bool>(); var useW = Config.Item("wCombo").GetValue <bool>(); var useE = Config.Item("eCombo").GetValue <bool>(); var useR = Config.Item("rCombo").GetValue <bool>(); var useIgnite = Config.Item("useIgnite").GetValue <bool>(); HitChance hCance = HitchanceArray[Config.Item("hChance").GetValue <StringList>().SelectedIndex]; byte minHit = (byte)Config.Item("minHitR").GetValue <Slider>().Value; if (Q.IsReady() && useQ) { foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsEnemy && !x.IsDead && !x.IsZombie && x.IsValidTarget(Q.Range))) { if (enemy.Distance(Player.Position) < Player.AttackRange) { Q.Cast(enemy); } } } if (W.IsReady() && useW) { foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsEnemy && !x.IsDead && !x.IsZombie && x.IsValidTarget(W.Range))) { W.SPredictionCast(enemy, hCance); } } if (E.IsReady() && useE) { foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsEnemy && !x.IsDead && !x.IsZombie && x.IsValidTarget(E.Range))) { if (Player.Distance(enemy.Position) < 550) { E.SPredictionCast(enemy, hCance); } } } if (R.IsReady() && useR) { foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsEnemy && !x.IsDead && !x.IsZombie && x.IsValidTarget(R.Range))) { if (enemy.Health < cDamage(enemy)) { R.SPredictionCast(enemy, hCance); } if (Player.CountEnemiesInRange(R.Range) > minHit) { R.SPredictionCast(enemy, hCance, 0, minHit); } } } if (Ignite.IsReady() && useIgnite) { foreach (var enemy in ObjectManager.Get <Obj_AI_Hero>().Where(x => x.IsEnemy && !x.IsDead && !x.IsZombie && x.IsValidTarget(550))) { if (Player.GetSpellDamage(enemy, Ignite) + cDamage(enemy) > enemy.Health) { Player.Spellbook.CastSpell(Ignite, enemy); } } } }
static float GetDamage(Obj_AI_Hero hero,Obj_AI_Hero target,SpellSlot slot) { return (float)hero.GetSpellDamage(target, slot); }
private static float GetComboDamage(Obj_AI_Base enemy) { var damage = 0d; if (canQcd == 0 && canEcd == 0 && Q.Level > 0 && E.Level > 0) { damage += Player.GetSpellDamage(enemy, SpellSlot.Q) * 1.4; } else if (canQcd == 0 && Q.Level > 0) { damage += Player.GetSpellDamage(enemy, SpellSlot.Q); } if (hamQcd == 0 && Q.Level > 0) { damage += Player.GetSpellDamage(enemy, SpellSlot.Q, 1); } if (hamWcd == 0 && W.Level > 0) { damage += Player.GetSpellDamage(enemy, SpellSlot.W); } if (hamEcd == 0 && E.Level > 0) { damage += Player.GetSpellDamage(enemy, SpellSlot.E); } return((float)damage); }
private static void Game_OnGameLoad(EventArgs args) { Player = ObjectManager.Player; if (Player.ChampionName != ChampionName) return; //Create the spells Q = new Spell(SpellSlot.Q, 1550); W = new Spell(SpellSlot.W, 1000); E = new Spell(SpellSlot.E, 1150); R = new Spell(SpellSlot.R, 675); Q.SetSkillshot(0.6f, 95f, float.MaxValue, false, SkillshotType.SkillshotLine); W.SetSkillshot(0.7f, 125f, float.MaxValue, false, SkillshotType.SkillshotCircle); E.SetSkillshot(0.25f, 60f, 1400f, true, SkillshotType.SkillshotLine); R.SetSkillshot(0.7f, 130f, float.MaxValue, false, SkillshotType.SkillshotCircle); Q.SetCharged("XerathArcanopulseChargeUp", "XerathArcanopulseChargeUp", 750, 1550, 1.5f); SpellList.Add(Q); SpellList.Add(W); SpellList.Add(E); SpellList.Add(R); //Create the menu Config = new Menu(ChampionName, ChampionName, true); //Orbwalker submenu Config.AddSubMenu(new Menu("Orbwalking", "Orbwalking")); //Add the target selector to the menu as submenu. var targetSelectorMenu = new Menu("Target Selector", "Target Selector"); TargetSelector.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Load the orbwalker and add it to the menu as submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); //Combo menu: Config.AddSubMenu(new Menu("Combo", "Combo")); Config.SubMenu("Combo").AddItem(new MenuItem("UseQCombo", "Use Q").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("UseWCombo", "Use W").SetValue(true)); Config.SubMenu("Combo").AddItem(new MenuItem("UseECombo", "Use E").SetValue(true)); Config.SubMenu("Combo") .AddItem( new MenuItem("ComboActive", "Combo!").SetValue( new KeyBind(Config.Item("Orbwalk").GetValue<KeyBind>().Key, KeyBindType.Press))); //Misc Config.AddSubMenu(new Menu("R", "R")); Config.SubMenu("R").AddItem(new MenuItem("EnableRUsage", "Auto use charges").SetValue(true)); Config.SubMenu("R").AddItem(new MenuItem("rMode", "Mode").SetValue(new StringList(new[] { "Normal", "Custom delays", "OnTap"}))); Config.SubMenu("R").AddItem(new MenuItem("rModeKey", "OnTap key").SetValue(new KeyBind('T', KeyBindType.Press))); Config.SubMenu("R").AddSubMenu(new Menu("Custom delays", "Custom delays")); for (int i = 1; i <= 5; i++) Config.SubMenu("R").SubMenu("Custom delays").AddItem(new MenuItem("Delay"+i, "Delay"+i).SetValue(new Slider(0, 1500, 0))); Config.SubMenu("R").AddItem(new MenuItem("PingRKillable", "Ping on killable targets (only local)").SetValue(true)); Config.SubMenu("R").AddItem(new MenuItem("BlockMovement", "Block right click while casting R").SetValue(false)); Config.SubMenu("R").AddItem(new MenuItem("OnlyNearMouse", "Focus only targets near mouse").SetValue(false)); Config.SubMenu("R").AddItem(new MenuItem("MRadius", "Radius").SetValue(new Slider(700, 1500, 300))); //Harass menu: Config.AddSubMenu(new Menu("Harass", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseQHarass", "Use Q").SetValue(true)); Config.SubMenu("Harass").AddItem(new MenuItem("UseWHarass", "Use W").SetValue(false)); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActive", "Harass!").SetValue( new KeyBind(Config.Item("Farm").GetValue<KeyBind>().Key, KeyBindType.Press))); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActiveT", "Harass (toggle)!").SetValue(new KeyBind('Y', KeyBindType.Toggle))); //Farming menu: Config.AddSubMenu(new Menu("Farm", "Farm")); Config.SubMenu("Farm") .AddItem( new MenuItem("UseQFarm", "Use Q").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 2))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseWFarm", "Use W").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 1))); Config.SubMenu("Farm") .AddItem( new MenuItem("FreezeActive", "Freeze!").SetValue( new KeyBind(Config.Item("Farm").GetValue<KeyBind>().Key, KeyBindType.Press))); Config.SubMenu("Farm") .AddItem( new MenuItem("LaneClearActive", "LaneClear!").SetValue( new KeyBind(Config.Item("LaneClear").GetValue<KeyBind>().Key, KeyBindType.Press))); //JungleFarm menu: Config.AddSubMenu(new Menu("JungleFarm", "JungleFarm")); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseQJFarm", "Use Q").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseWJFarm", "Use W").SetValue(true)); Config.SubMenu("JungleFarm") .AddItem( new MenuItem("JungleFarmActive", "JungleFarm!").SetValue( new KeyBind(Config.Item("LaneClear").GetValue<KeyBind>().Key, KeyBindType.Press))); //Misc Config.AddSubMenu(new Menu("Misc", "Misc")); Config.SubMenu("Misc").AddItem(new MenuItem("InterruptSpells", "Interrupt spells").SetValue(true)); Config.SubMenu("Misc").AddItem(new MenuItem("AutoEGC", "AutoE gapclosers").SetValue(true)); Config.SubMenu("Misc").AddItem(new MenuItem("UseVHHC", "Use very high hit chance").SetValue(true)); //Damage after combo: var dmgAfterComboItem = new MenuItem("DamageAfterR", "Draw damage after (3 - 5)xR").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)Player.GetSpellDamage(hero, SpellSlot.R) * new int[] {0, 3, 4, 5 }[Player.GetSpell(SpellSlot.R).Level]; Utility.HpBarDamageIndicator.Enabled = dmgAfterComboItem.GetValue<bool>(); dmgAfterComboItem.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue<bool>(); }; //Drawings menu: Config.AddSubMenu(new Menu("Drawings", "Drawings")); Config.SubMenu("Drawings") .AddItem( new MenuItem("QRange", "Q range").SetValue(new Circle(true, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("WRange", "W range").SetValue(new Circle(true, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("ERange", "E range").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("RRange", "R range").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("RRangeM", "R range (minimap)").SetValue(new Circle(false, Color.FromArgb(150, Color.DodgerBlue)))); Config.SubMenu("Drawings") .AddItem(dmgAfterComboItem); Config.AddToMainMenu(); //Add the events we are going to use: Game.OnUpdate += Game_OnGameUpdate; Drawing.OnDraw += Drawing_OnDraw; Drawing.OnEndScene += Drawing_OnEndScene; Interrupter2.OnInterruptableTarget += Interrupter2_OnInterruptableTarget; AntiGapcloser.OnEnemyGapcloser += AntiGapcloser_OnEnemyGapcloser; Obj_AI_Hero.OnProcessSpellCast += Obj_AI_Hero_OnProcessSpellCast; Game.OnWndProc += Game_OnWndProc; Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; Obj_AI_Hero.OnIssueOrder += Obj_AI_Hero_OnIssueOrder; }
private static void OnDraw(EventArgs args) { if (!Player.IsDead) { if (MenuIni.SubMenu("Draw").Item("Draw_Q").GetValue <Circle>().Active) { Render.Circle.DrawCircle(Player.Position, Q.Range, MenuIni.SubMenu("Draw").Item("Draw_Q").GetValue <Circle>().Color); } } if (Player.Spellbook.GetSpell(SpellSlot.R).Level > 0) { var killable = ""; var time = Utils.TickCount; foreach (TI target in Program.Check.TI.Where(x => x.Player.IsValid && !x.Player.IsDead && x.Player.IsEnemy && (Program.Check.recalltc(x) /*|| (x.Player.IsVisible && Utility.IsValidTarget(x.Player))*/) && Player.GetSpellDamage(x.Player, SpellSlot.R) >= Program.Check.GetTargetHealth(x, (int)(R.Delay * 1000f)))) { killable += target.Player.ChampionName + " "; } if (killable != "" && MenuIni.SubMenu("Misc").Item("NotifyUlt").GetValue <bool>()) { Drawing.DrawText(Drawing.Width * 0.44f, Drawing.Height * 0.7f, System.Drawing.Color.Red, "Killable by ult: " + killable); } } }
private static double GetComboDamage(Obj_AI_Base target) { double dmg = 0; if (Q.IsReady() && GetDistance(target) <= Q.Range) { dmg += Player.GetSpellDamage(target, SpellSlot.Q) * 2; } if (W.IsReady() && GetDistance(target) <= W.Range) { dmg += Player.GetSpellDamage(target, SpellSlot.W); } if (E.IsReady() && GetDistance(target) <= E.Range) { dmg += Player.GetSpellDamage(target, SpellSlot.E); } if (CanIgnite() && GetDistance(target) <= 600) { dmg += Player.GetSummonerSpellDamage(target, Damage.SummonerSpell.Ignite); } return(dmg); }
private static void KillSteal(EventArgs args) { if (m_mMenu.SubMenu("ks").Item("enabled").GetValue <bool>() && !myHero.IsRecalling()) { foreach (Obj_AI_Hero enemy in ObjectManager.Get <Obj_AI_Hero>().Where(h => h.IsValidTarget())) { if (m_mMenu.SubMenu("ks").Item("useQ").GetValue <bool>() && Q.IsReady() && myHero.Distance(enemy) <= m_fQRange && myHero.GetSpellDamage(enemy, SpellSlot.Q) >= enemy.Health) { if (m_qfForm == QuinnForm.Human) { Q.Cast(enemy); } else { myHero.Spellbook.CastSpell(SpellSlot.Q); } } if (m_mMenu.SubMenu("ks").Item("useRValor").GetValue <bool>() && myHero.Distance(enemy) <= R.Range && GetRDmg(enemy) >= enemy.Health) { R.Cast(); } } } }
private static void Game_OnGameLoad(EventArgs args) { Player = ObjectManager.Player; if (Player.CharData.BaseSkinName != ChampionName) return; //Create the spells Q = new Spell(SpellSlot.Q, 900); Q.SetSkillshot(0.25f, Q.Instance.SData.LineWidth, Q.Instance.SData.MissileSpeed, true, SkillshotType.SkillshotLine); W = new Spell(SpellSlot.W, 600); E = new Spell(SpellSlot.E, 600); R = new Spell(SpellSlot.R); SpellList.Add(Q); SpellList.Add(W); SpellList.Add(E); //Create the menu Config = new Menu(ChampionName, ChampionName, true); var targetSelectorMenu = new Menu("Target Selector", "Target Selector"); TargetSelector.AddToMenu(targetSelectorMenu); Config.AddSubMenu(targetSelectorMenu); //Orbwalker submenu Config.AddSubMenu(new Menu("Orbwalking", "Orbwalking")); //Load the orbwalker and add it to the submenu. Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu("Orbwalking")); Config.AddSubMenu(new Menu("Combo", "Combo")); Config.SubMenu("Combo") .AddItem(new MenuItem("ComboActive", "Combo!").SetValue(new KeyBind(32, KeyBindType.Press))); Config.SubMenu("Combo") .AddItem(new MenuItem("RootComboActive", "Root Combo!").SetValue(new KeyBind(32, KeyBindType.Press))); Config.AddSubMenu(new Menu("Harass", "Harass")); Config.SubMenu("Harass").AddItem(new MenuItem("UseQHarass", "Use Q").SetValue(true)); Config.SubMenu("Harass") .AddItem( new MenuItem("HarassActive", "Harass!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); Config.AddSubMenu(new Menu("Farm", "Farm")); Config.SubMenu("Farm") .AddItem( new MenuItem("UseQFarm", "Use Q").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 2))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseWFarm", "Use W").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 3))); Config.SubMenu("Farm") .AddItem( new MenuItem("UseEFarm", "Use E").SetValue( new StringList(new[] { "Freeze", "LaneClear", "Both", "No" }, 1))); Config.SubMenu("Farm") .AddItem( new MenuItem("FreezeActive", "Freeze!").SetValue(new KeyBind("C".ToCharArray()[0], KeyBindType.Press))); Config.SubMenu("Farm") .AddItem( new MenuItem("LaneClearActive", "LaneClear!").SetValue(new KeyBind("V".ToCharArray()[0], KeyBindType.Press))); Config.AddSubMenu(new Menu("JungleFarm", "JungleFarm")); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseQJFarm", "Use Q").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseWJFarm", "Use W").SetValue(true)); Config.SubMenu("JungleFarm").AddItem(new MenuItem("UseEJFarm", "Use E").SetValue(true)); Config.SubMenu("JungleFarm") .AddItem( new MenuItem("JungleFarmActive", "JungleFarm!").SetValue(new KeyBind("V".ToCharArray()[0], KeyBindType.Press))); //Damage after combo: var dmgAfterComboItem = new MenuItem("DamageAfterCombo", "Draw damage after a rotation").SetValue(true); Utility.HpBarDamageIndicator.DamageToUnit += hero => (float)(Player.GetSpellDamage(hero, SpellSlot.Q) * 2 + Player.GetSpellDamage(hero, SpellSlot.W) + Player.GetSpellDamage(hero, SpellSlot.E)); Utility.HpBarDamageIndicator.Enabled = dmgAfterComboItem.GetValue<bool>(); dmgAfterComboItem.ValueChanged += delegate(object sender, OnValueChangeEventArgs eventArgs) { Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue<bool>(); }; Config.AddSubMenu(new Menu("Drawings", "Drawings")); Config.SubMenu("Drawings") .AddItem(new MenuItem("QRange", "Q range").SetValue(new Circle(true, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("WRange", "W range").SetValue(new Circle(false, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings") .AddItem( new MenuItem("ERange", "E range").SetValue(new Circle(false, Color.FromArgb(255, 255, 255, 255)))); Config.SubMenu("Drawings").AddItem(dmgAfterComboItem); Config.AddToMainMenu(); //Add the events we are going to use: Drawing.OnDraw += Drawing_OnDraw; Game.OnUpdate += Game_OnGameUpdate; Orbwalking.BeforeAttack += OrbwalkingOnBeforeAttack; }
void OnProcessSpell(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { //Modified Kalista Soulbound code from Corey //Need to check in fountain otherwise recalls could make you swallow try { var hero = sender as Obj_AI_Hero; if (hero != null && hero.IsEnemy && !player.InFountain()) { var swallowAlly = HeroManager.Allies.FirstOrDefault( x => x.HealthPercent < 25 && ARAMSimulator.inDanger && x.IsAlly && player.Distance(x) <= 500 && !x.IsDead); if (swallowAlly != null && current == SwallowedTarget.None && W.IsReady()) { W.CastOnUnit(swallowAlly); current = SwallowedTarget.Ally; } Obj_AI_Hero enemy = hero; if (E.IsReady()) { SpellDataInst s = enemy.Spellbook.Spells.FirstOrDefault(x => x.SData.Name.Equals(args.SData.Name)); if (s == null) { return; } if (enemy.GetSpellDamage(player, s.Slot) > player.Health) { E.Cast(); } else if (player.HealthPercent <= 45) { E.Cast(); } } } else if (sender.IsMe) { var spell = player.Spellbook.Spells.FirstOrDefault(x => x.SData.Name == args.SData.Name); if (spell == null) { return; } SpellSlot s = spell.Slot; if (s == SpellSlot.W) { if (args.Target is Obj_AI_Hero) { current = (args.Target.IsAlly) ? SwallowedTarget.Ally : SwallowedTarget.Enemy; } else { current = SwallowedTarget.Minion; } } else if (s.ToString().Equals("46")) { current = SwallowedTarget.None; } } } catch (Exception) { } }