protected override void OnPreUpdate() { if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit) { var eBig = Menu.Item(Menu.Name + ".lasthit.e-big").GetValue <bool>(); var eJungle = Menu.Item(Menu.Name + ".lasthit.e-jungle").GetValue <bool>(); var eSiege = Menu.Item(Menu.Name + ".lasthit.e-siege").GetValue <bool>(); var eTurret = Menu.Item(Menu.Name + ".lasthit.e-turret").GetValue <bool>(); var eReset = Menu.Item(Menu.Name + ".miscellaneous.e-reset").GetValue <bool>(); IEnumerable <Obj_AI_Minion> minions = new HashSet <Obj_AI_Minion>(); if (eSiege || eTurret || eReset) { minions = GameObjects.EnemyMinions.Where(e => e.IsValidTarget(E.Range) && Rend.IsKillable(e, true)); } if (E.IsReady()) { if (ResourceManager.Check("lasthit")) { if (eSiege) { if ( minions.Any( m => (m.CharData.BaseSkinName.Contains("MinionSiege") || m.CharData.BaseSkinName.Contains("Super")))) { E.Cast(); return; } } if (eTurret) { if (minions.Any(m => Utils.UnderAllyTurret(m.Position))) { E.Cast(); return; } } } if (eBig || eJungle) { var enemySmites = GameObjects.EnemyHeroes.Where( e => !e.IsDead && e.Distance(Player) < SummonerManager.Smite.Range * 1.5f && SummonerManager.IsSmiteReady(e)); var allySmites = (from ally in GameObjects.AllyHeroes.Where( e => !e.IsDead && e.Distance(Player) < SummonerManager.Smite.Range) let spell = SummonerManager.GetSmiteSpell(ally) where spell != null && (spell.IsReady() || spell.Cooldown - spell.CooldownExpires - Game.Time <= 3) select ally).ToList(); if (eJungle && Player.Level > 3 || eBig && (enemySmites.Any() || !allySmites.Any() || Player.CountEnemiesInRange(1000) > 1)) { var creeps = GameObjects.Jungle.Where(e => e.IsValidTarget(E.Range) && Rend.IsKillable(e, false)) .ToList(); if (eJungle && creeps.Any() || eBig && creeps.Any( m => (m.CharData.BaseSkinName.StartsWith("SRU_Dragon") || m.CharData.BaseSkinName.StartsWith("SRU_Baron")))) { E.Cast(); return; } } } } if (eReset && E.IsReady() && ResourceManager.Check("misc") && GameObjects.EnemyHeroes.Any(e => Rend.HasBuff(e) && e.IsValidTarget(E.Range))) { if (minions.Any()) { E.Cast(); return; } } } if (Menu.Item(Menu.Name + ".ultimate.save").GetValue <bool>() && SoulBound.Unit != null && R.IsReady() && !SoulBound.Unit.InFountain()) { SoulBound.Clean(); var enemies = SoulBound.Unit.CountEnemiesInRange(500); if ((SoulBound.Unit.HealthPercent <= 10 && SoulBound.Unit.CountEnemiesInRange(500) > 0) || (SoulBound.Unit.HealthPercent <= 5 && SoulBound.TotalDamage > SoulBound.Unit.Health && enemies == 0) || (SoulBound.Unit.HealthPercent <= 50 && SoulBound.TotalDamage > SoulBound.Unit.Health && enemies > 0)) { R.Cast(); } } if (Menu.Item(Menu.Name + ".miscellaneous.w-baron").GetValue <KeyBind>().Active&& W.IsReady() && !Player.IsWindingUp && Player.Distance(SummonersRift.River.Baron) <= W.Range) { W.Cast(SummonersRift.River.Baron); } if (Menu.Item(Menu.Name + ".miscellaneous.w-dragon").GetValue <KeyBind>().Active&& W.IsReady() && !Player.IsWindingUp && Player.Distance(SummonersRift.River.Dragon) <= W.Range) { W.Cast(SummonersRift.River.Dragon); } if (SoulBound.Unit == null) { SoulBound.Unit = GameObjects.AllyHeroes.FirstOrDefault( a => a.Buffs.Any( b => b.Caster.IsMe && b.Name.Equals("kalistacoopstrikeally", StringComparison.OrdinalIgnoreCase))); } if (SoulBound.Unit != null && SoulBound.Unit.Distance(Player) < R.Range && R.IsReady()) { var blitz = Menu.Item(Menu.Name + ".ultimate.blitzcrank.r").GetValue <bool>(); var tahm = Menu.Item(Menu.Name + ".ultimate.tahm-kench.r").GetValue <bool>(); foreach (var enemy in GameObjects.EnemyHeroes.Where(e => (blitz || tahm) && !e.IsDead && e.Distance(Player) < 3000)) { if (blitz) { var blitzBuff = enemy.Buffs.FirstOrDefault( b => b.IsActive && b.Caster.NetworkId.Equals(SoulBound.Unit.NetworkId) && b.Name.Equals("rocketgrab2", StringComparison.OrdinalIgnoreCase)); if (blitzBuff != null) { if (!HeroListManager.Check("blitzcrank", enemy)) { if (!SoulBound.Unit.UnderTurret(false) && SoulBound.Unit.Distance(enemy) > 750f && SoulBound.Unit.Distance(Player) > R.Range / 3f) { R.Cast(); } } return; } } if (tahm) { var tahmBuff = enemy.Buffs.FirstOrDefault( b => b.IsActive && b.Caster.NetworkId.Equals(SoulBound.Unit.NetworkId) && b.Name.Equals("tahmkenchwdevoured", StringComparison.OrdinalIgnoreCase)); if (tahmBuff != null) { if (!HeroListManager.Check("tahm-kench", enemy)) { if (!SoulBound.Unit.UnderTurret(false) && (SoulBound.Unit.Distance(enemy) > Player.AttackRange || GameObjects.AllyHeroes.Where( a => a.NetworkId != SoulBound.Unit.NetworkId && a.NetworkId != Player.NetworkId) .Any(t => t.Distance(Player) > 600) || GameObjects.AllyTurrets.Any(t => t.Distance(Player) < 600))) { R.Cast(); } } return; } } } } }
private float CalcComboDamage(Obj_AI_Hero target, float resMulti, bool rangeCheck, bool q, bool w, bool e, bool r) { try { if (target == null) { return(0); } var damage = 0f; var totalMana = 0f; if (r && R.IsReady() && (!rangeCheck || R.IsInRange(target))) { var rMana = R.ManaCost * resMulti; if (totalMana + rMana <= Player.Mana) { totalMana += rMana; damage += R.GetDamage(target); } } if (q && Q.IsReady() && (!rangeCheck || Q.IsInRange(target))) { var qMana = Q.ManaCost * resMulti; if (totalMana + qMana <= Player.Mana) { totalMana += qMana; damage += Q.GetDamage(target); } } else if (w && W.IsReady() && (!rangeCheck || W.IsInRange(target))) { var wMana = W.ManaCost * resMulti; if (totalMana + wMana <= Player.Mana) { totalMana += wMana; damage += W.GetDamage(target); } } if (e && E.IsReady(3000) && (!rangeCheck || E.IsInRange(target))) { var eMana = E.ManaCost * resMulti; var eDamage = E.GetDamage(target); var count = target.IsNearTurret() && !target.IsFacing(Player) || target.IsNearTurret() && Player.HealthPercent <= 35 || !R.IsReady() ? 5 : 8; for (var i = 0; i < count; i++) { if (totalMana + eMana > Player.Mana) { break; } totalMana += eMana; damage += eDamage; } } damage += ItemManager.CalculateComboDamage(target, rangeCheck); damage += SummonerManager.CalculateComboDamage(target, rangeCheck); return(damage); } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return(0); }
private float CalcComboDamage(Obj_AI_Hero target, bool q, bool e, bool r) { try { if (target == null) { return(0); } var damage = 0f; if (HasQBuff() && Orbwalking.InAutoAttackRange(target)) { damage += CalcPassiveDamage(target); } if (q && Q.IsReady() && target.IsValidTarget(Q.Range)) { damage += Q.GetDamage(target); if (Orbwalking.InAutoAttackRange(target)) { damage += CalcPassiveDamage(target); } } if (e && E.IsReady() && target.IsValidTarget(MaxERange)) { damage += E.GetDamage(target); } if (r && R.IsReady() && target.IsValidTarget(R.Range + R.Width)) { damage += R.GetDamage(target); int stacks; if (!IsSpellUpgraded(R)) { stacks = target.IsNearTurret(500f) ? 3 : 10; var endTimes = target.Buffs.Where( t => t.Type == BuffType.Charm || t.Type == BuffType.Snare || t.Type == BuffType.Knockup || t.Type == BuffType.Polymorph || t.Type == BuffType.Fear || t.Type == BuffType.Taunt || t.Type == BuffType.Stun).Select(t => t.EndTime).ToList(); if (endTimes.Any()) { var max = endTimes.Max(); if (max - Game.Time > 0.5f) { stacks = 14; } } } else { stacks = 13; } damage += (R.GetDamage(target, 1) * stacks); } damage += ItemManager.CalculateComboDamage(target); damage += SummonerManager.CalculateComboDamage(target); return(damage); } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return(0); }
private float CalcComboDamage(Obj_AI_Hero target, float resMulti, bool rangeCheck, bool q, bool w, bool r) { try { if (target == null) { return(0); } var damage = 0f; var totalMana = 0f; var pred = R.GetPrediction(target); var position = target.Position; if (!pred.UnitPosition.Equals(Vector3.Zero)) { position = pred.UnitPosition; } if (r && R.IsReady() && (!rangeCheck || R.IsInRange(target))) { var rMana = R.ManaCost * resMulti; if (totalMana + rMana <= Player.Mana) { totalMana += rMana; damage += GetRDamage(target); } } var qMana = Q.ManaCost * resMulti; if (totalMana + qMana <= Player.Mana && q && (!rangeCheck || Q.IsInRange(position))) { totalMana += qMana; damage += Q.GetDamage(target); if (totalMana + qMana <= Player.Mana) { totalMana += qMana; damage += Q.GetDamage(target); } } if (w && W.IsReady() && (!rangeCheck || W.IsInRange(position))) { var wMana = W.ManaCost * resMulti; if (totalMana + wMana <= Player.Mana) { damage += W.GetDamage(target); } } if (!rangeCheck || position.Distance(Player.Position) <= Orbwalking.GetRealAutoAttackRange(target) * 0.9f) { damage += 2 * (float)Player.GetAutoAttackDamage(target, true); } damage += ItemManager.CalculateComboDamage(target, rangeCheck); damage += SummonerManager.CalculateComboDamage(target, rangeCheck); return(damage); } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } return(0); }