public static void Execute() { if (W.IsReady()) { var incomingDamage = IncomingDamage.GetIncomingDamage(Player.Instance); if ((incomingDamage / Player.Instance.TotalHealthWithShields() * 100 >= Settings.Misc.MinDamage) || (incomingDamage > Player.Instance.Health)) { W.Cast(); } } if (Settings.Misc.EnableKillsteal && !Player.Instance.IsRecalling()) { foreach ( var target in StaticCacheProvider.GetChampions(CachedEntityType.EnemyHero, x => x.IsValidTargetCached() && IsInQRange(x) && !x.HasUndyingBuffA() && (x.TotalHealthWithShields() < Player.Instance.GetSpellDamageCached(x, SpellSlot.Q)))) { if (HasEDebuff(target)) { Player.Instance.Spellbook.CastSpell(SpellSlot.Q, target.Position); return; } var qPrediction = Q.GetPrediction(target); if (qPrediction.HitChance != HitChance.High) { continue; } Q.Cast(qPrediction.CastPosition); return; } } if (Settings.Misc.AutoHarass && HasAnyOrbwalkerFlags) { Combo.ELogics(); } if (!Settings.Misc.AutoHarass || !Settings.Combo.UseQ || !HasAnyOrbwalkerFlags || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass)) { return; } foreach ( var corrosiveDebufTarget in CorrosiveDebufTargets.Where( unit => (unit.Type == GameObjectType.AIHeroClient) && unit.IsValidTargetCached(1300))) { Player.Instance.Spellbook.CastSpell(SpellSlot.Q, corrosiveDebufTarget.Position); return; } }
public static void Execute() { if (E.IsReady() && Settings.Harass.UseE && Player.Instance.ManaPercent >= Settings.Harass.MinManaQ) { var target = TargetSelector.GetTarget(E.Range, DamageType.Physical); if (target != null) { var ePrediction = E.GetPrediction(target); if (ePrediction.HitChance >= HitChance.High) { if (Player.Instance.Spellbook.GetSpell(SpellSlot.Q).CooldownExpires - Game.Time < 1 || target.Health < Player.Instance.GetSpellDamage(target, SpellSlot.E)) { E.Cast(ePrediction.CastPosition); return; } } } } if (!Q.IsReady() || !Settings.Harass.UseQ || !(Player.Instance.ManaPercent >= Settings.Harass.MinManaQ)) { return; } if (CorrosiveDebufTargets.Any(unit => unit is AIHeroClient && unit.IsValidTarget(1300))) { foreach ( var corrosiveDebufTarget in CorrosiveDebufTargets.Where(unit => unit is AIHeroClient && unit.IsValidTarget(1300))) { Q.Range = 1300; Q.AllowedCollisionCount = -1; Q.Cast(corrosiveDebufTarget.Position); } } else { Q.Range = 900; Q.AllowedCollisionCount = 0; var target = TargetSelector.GetTarget(Q.Range, DamageType.Physical); if (target == null) { return; } var qPrediciton = Q.GetPrediction(target); if (qPrediciton.GetCollisionObjects <Obj_AI_Minion>().Any() || qPrediciton.HitChance < HitChance.High) { return; } Q.Cast(qPrediciton.CastPosition); } }
public static void Execute() { if (E.IsReady() && Settings.Harass.UseE && (Player.Instance.ManaPercent >= Settings.Harass.MinManaQ)) { var target = TargetSelector.GetTarget(E.Range, DamageType.Physical); if (target != null) { var ePrediction = E.GetPrediction(target); if (ePrediction.HitChance >= HitChance.High) { if ((QCooldown < 1) || (target.Health < Player.Instance.GetSpellDamageCached(target, SpellSlot.E))) { E.Cast(ePrediction.CastPosition); return; } } } } if (!Q.IsReady() || !Settings.Harass.UseQ || (Player.Instance.ManaPercent < Settings.Harass.MinManaQ)) { return; } { foreach ( var corrosiveDebufTarget in CorrosiveDebufTargets.Where( unit => (unit.Type == GameObjectType.AIHeroClient) && unit.IsValidTargetCached(1300))) { Player.Instance.Spellbook.CastSpell(SpellSlot.Q, corrosiveDebufTarget.Position); return; } var target = TargetSelector.GetTarget(Q.Range, DamageType.Physical); if (target == null) { return; } var qPrediciton = Q.GetPrediction(target); if (qPrediciton.HitChance >= HitChance.High) { Q.Cast(qPrediciton.CastPosition); } } }
private static void Game_OnTick(EventArgs args) { if (Core.GameTickCount - _lastScanTick < 100) { return; } var union = CorrosiveDebufTargets.Union( ObjectManager.Get <Obj_AI_Base>().Where(x => x.IsValidTarget() && x.HasBuff("urgotcorrosivedebuff"))); CorrosiveDebufTargets.AddRange(union); _lastScanTick = Core.GameTickCount; }
private static void Game_OnTick(EventArgs args) { if (Game.Time * 1000 - _lastScanTick < 66) { return; } CorrosiveDebufTargets.Clear(); foreach (var enemy in ObjectManager.Get <Obj_AI_Base>().Where(x => !x.IsDead && x.Team != Player.Instance.Team && x.HasBuff("urgotcorrosivedebuff")).Where(enemy => !CorrosiveDebufTargets.Contains(enemy))) { CorrosiveDebufTargets.Add(enemy); } _lastScanTick = Game.Time * 1000; }
protected static bool HasEDebuff(Obj_AI_Base unit) { if (MenuManager.IsCacheEnabled && CachedHasBuff.Exist(unit.NetworkId)) { return(CachedHasBuff.Get(unit.NetworkId)); } var result = CorrosiveDebufTargets.Any(x => x.IdEquals(unit)); if (MenuManager.IsCacheEnabled) { CachedHasBuff.Add(unit.NetworkId, result); } return(result); }
private static void ChampionTracker_OnLoseVisibility(object sender, ChampionTracker.OnLoseVisibilityEventArgs e) { if (!Q.IsReady() || (e?.LastPosition.Distance(Player.Instance) > 1300) || (e?.Data == null) || (e.Hero == null) || (CorrosiveDebufTargets.Any( x => (x.Type == GameObjectType.AIHeroClient) && x.IsValidTargetCached(1300)) && (e.Data?.LastHealth > Player.Instance.GetSpellDamageCached(e.Hero, SpellSlot.Q)))) { return; } var data = e.Data; var castPosition = data.LastPosition.Extend(data.LastPath, e.Hero.MoveSpeed * Game.Time - data.LastVisibleGameTime).To3D(); if (castPosition.IsInRange(Player.Instance, 1300) && data.LastBuffs.Any( x => (x.EndTime - Game.Time > .25f) && (x.Name.Equals("urgotcorrosivedebuff", StringComparison.CurrentCultureIgnoreCase) || x.DisplayName.Equals("urgotcorrosivedebuff", StringComparison.CurrentCultureIgnoreCase)))) { Player.CastSpell(SpellSlot.Q, castPosition); } }
public static void Execute() { var laneMinions = EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, Player.Instance.Position, 1200).ToList(); if (!laneMinions.Any()) { return; } if (Q.IsReady() && Player.Instance.ManaPercent >= Settings.LaneClear.MinManaQ) { if (Settings.Misc.AutoHarass && Settings.Combo.UseQ && CorrosiveDebufTargets.Any(unit => unit is AIHeroClient && unit.IsValidTarget(1300))) { foreach ( var corrosiveDebufTarget in CorrosiveDebufTargets.Where(unit => unit is AIHeroClient && unit.IsValidTarget(1300))) { Q.Range = 1300; Q.AllowedCollisionCount = -1; Q.Cast(corrosiveDebufTarget.Position); return; } } else if (CanILaneClear() && Settings.LaneClear.UseQInLaneClear && CorrosiveDebufTargets.Any(unit => unit is Obj_AI_Minion && unit.IsValidTarget(1300))) { if (CorrosiveDebufTargets.Any(unit => unit is Obj_AI_Minion && unit.IsValidTarget(1300))) { foreach ( var minion in from minion in CorrosiveDebufTargets.Where( unit => unit is Obj_AI_Minion && unit.IsValidTarget(1300)) let hpPrediction = Prediction.Health.GetPrediction(minion, (int)(minion.Distance(Player.Instance) / 1550 * 1000 + 250)) where hpPrediction > 0 && hpPrediction < Player.Instance.GetSpellDamage(minion, SpellSlot.Q) select minion) { Q.Cast(minion.Position); return; } } } else if (CanILaneClear() && Settings.LaneClear.UseQInLaneClear) { foreach (var minion in (from minion in laneMinions let hpPrediction = Prediction.Health.GetPrediction(minion, (int)(minion.Distance(Player.Instance) / 1550 * 1000 + 250)) where hpPrediction > 0 && hpPrediction < Player.Instance.GetSpellDamage(minion, SpellSlot.Q) let qPrediction = Q.GetPrediction(minion) where qPrediction.Collision == false select minion).Where(minion => !minion.IsDead)) { Q.Cast(minion); return; } } } if (!E.IsReady() || !(Player.Instance.ManaPercent >= Settings.LaneClear.MinManaE)) { return; } if (Settings.Combo.UseE && Settings.Misc.AutoHarass && EntityManager.Heroes.Enemies.Any(x => x.IsValidTarget(E.Range))) { var target = TargetSelector.GetTarget(E.Range, DamageType.Physical); if (target == null) { return; } var ePrediction = E.GetPrediction(target); if (ePrediction.HitChance < HitChance.High) { return; } if (!(Player.Instance.Spellbook.GetSpell(SpellSlot.Q).CooldownExpires - Game.Time < 1) && !(target.Health < Player.Instance.GetSpellDamage(target, SpellSlot.E))) { return; } E.Cast(ePrediction.CastPosition); return; } if (!CanILaneClear() || !Settings.LaneClear.UseEInLaneClear || Player.Instance.CountEnemyMinionsInRange(900) <= 3) { return; } var farmPosition = EntityManager.MinionsAndMonsters.GetCircularFarmLocation( EntityManager.MinionsAndMonsters.EnemyMinions.Where( x => x.IsValidTarget(E.Range) && x.HealthPercent > 10), 250, 900, 250, 1550); if (farmPosition.HitNumber <= 2) { return; } E.Cast(farmPosition.CastPosition); }
public static void Execute() { var jungleMinions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Instance.Position, Q.Range).ToList(); if (!jungleMinions.Any()) { return; } if (Q.IsReady() && Settings.LaneClear.UseQInJungleClear && Player.Instance.ManaPercent >= Settings.LaneClear.MinManaQ) { if (Settings.LaneClear.UseQInLaneClear && CorrosiveDebufTargets.Any(unit => unit is Obj_AI_Minion && unit.IsValidTarget(1300))) { if (CorrosiveDebufTargets.Any(unit => unit is Obj_AI_Minion && unit.IsValidTarget(1300))) { foreach ( var minion in from minion in CorrosiveDebufTargets.Where( unit => unit is Obj_AI_Minion && unit.IsValidTarget(1300)) select minion) { Q.Cast(minion.Position); return; } } } else if (Settings.LaneClear.UseQInLaneClear) { foreach (var minion in from minion in jungleMinions let qPrediction = Q.GetPrediction(minion) where qPrediction.Collision == false select minion) { Q.Cast(minion); return; } } } if (!E.IsReady() || !Settings.LaneClear.UseEInJungleClear || !(Player.Instance.ManaPercent >= Settings.LaneClear.MinManaE)) { return; } var farmPosition = EntityManager.MinionsAndMonsters.GetCircularFarmLocation( EntityManager.MinionsAndMonsters.Monsters.Where( x => x.IsValidTarget(E.Range) && x.HealthPercent > 10), 250, 900, 250, 1550); if (farmPosition.HitNumber <= 1) { return; } E.Cast(farmPosition.CastPosition); }
public static void Execute() { if (R.IsReady() && Settings.Combo.UseR && EntityManager.Heroes.Enemies.Any(x => x.IsValidTarget(R.Range)) && Player.Instance.Mana > 300) { var target = TargetSelector.GetTarget(R.Range, DamageType.Physical); if (target != null) { var damage = Player.Instance.GetSpellDamage(target, SpellSlot.Q) * 2 + Player.Instance.GetAutoAttackDamage(target, true) * 2; if (damage > target.Health && target.HealthPercent > 40 && target.Position.CountEnemiesInRange(600) < 2 && Player.Instance.HealthPercent > target.HealthPercent && !target.IsUnderTurret()) { R.Cast(target); return; } if (Player.Instance.IsUnderTurret() && Player.Instance.HealthPercent > 25 && Player.Instance.HealthPercent > target.HealthPercent) { R.Cast(target); return; } } } if (E.IsReady() && Settings.Combo.UseE) { var target = TargetSelector.GetTarget(E.Range, DamageType.Physical); if (target != null) { var ePrediction = E.GetPrediction(target); if (ePrediction.HitChance >= HitChance.High) { if (Player.Instance.Spellbook.GetSpell(SpellSlot.Q).CooldownExpires - Game.Time < 1 || target.Health < Player.Instance.GetSpellDamage(target, SpellSlot.E)) { E.Cast(ePrediction.CastPosition); return; } } } } if (Q.IsReady() && Settings.Combo.UseQ) { if (CorrosiveDebufTargets.Any(unit => unit is AIHeroClient && unit.IsValidTarget(1300))) { foreach ( var corrosiveDebufTarget in CorrosiveDebufTargets.Where(unit => unit is AIHeroClient && unit.IsValidTarget(1300))) { Q.Range = 1300; Q.AllowedCollisionCount = -1; Q.Cast(corrosiveDebufTarget.Position); } } else { Q.Range = 900; Q.AllowedCollisionCount = 0; var target = TargetSelector.GetTarget(Q.Range, DamageType.Physical); if (target != null) { var qPrediciton = Q.GetPrediction(target); if (!qPrediciton.GetCollisionObjects <Obj_AI_Minion>().Any() && qPrediciton.HitChance >= HitChance.High) { Q.Cast(qPrediciton.CastPosition); return; } } } } if (!W.IsReady() || !Settings.Combo.UseW || !(Player.Instance.Mana - 50 + 5 * (E.Level - 1) > 220)) { return; } { if (Player.Instance.CountEnemiesInRange(Player.Instance.GetAutoAttackRange()) < 1 && !CorrosiveDebufTargets.Any(unit => unit is AIHeroClient && unit.IsValidTarget(1200))) { return; } W.Cast(); } }
protected static bool HasSpottedBuff(Obj_AI_Base unit) => CorrosiveDebufTargets.Contains(unit);
public static void Execute() { if (R.IsReady() && Settings.Combo.UseR && StaticCacheProvider.GetChampions(CachedEntityType.EnemyHero).Any(x => x.IsValidTargetCached(R.Range)) && (Player.Instance.Mana >= 300)) { var possibleTargets = StaticCacheProvider.GetChampions(CachedEntityType.EnemyHero, x => x.IsValidTargetCached(R.Range) && !x.HasUndyingBuffA() && !x.HasSpellShield()); var target = TargetSelector.GetTarget(possibleTargets, DamageType.Physical); if (target != null) { var damage = Player.Instance.GetAutoAttackDamage(target, true) * 4; if (IsInQRange(target)) { damage += Player.Instance.GetSpellDamageCached(target, SpellSlot.Q) * 4; } if (E.Handle.CooldownExpires - Game.Time < 2) { damage += Player.Instance.GetSpellDamageCached(target, SpellSlot.E); } if ((damage > target.Health) && (target.HealthPercent > 20) && (target.Position.CountEnemiesInRangeCached(1100) <= 2) && (Player.Instance.HealthPercent > target.HealthPercent) && !target.IsUnderTurret()) { R.Cast(target); return; } if (Player.Instance.IsUnderTurret() && (target.Position.CountEnemiesInRangeCached(1100) <= 2) && (Player.Instance.HealthPercent > 25) && (Player.Instance.HealthPercent > target.HealthPercent)) { R.Cast(target); return; } } } ELogics(); if (Q.IsReady() && Settings.Combo.UseQ) { var possibleTargets = CorrosiveDebufTargets.Where(unit => (unit.Type == GameObjectType.AIHeroClient) && unit.IsValidTargetCached(1300)).Cast <AIHeroClient>(); var corrosiveDebufTarget = TargetSelector.GetTarget(possibleTargets, DamageType.Physical); var target = TargetSelector.GetTarget(Q.Range, DamageType.Physical); if ((corrosiveDebufTarget != null) && ((target == null) || Q.GetPrediction(target).Collision || (TargetSelector.GetPriority(corrosiveDebufTarget) >= TargetSelector.GetPriority(target)))) { Player.Instance.Spellbook.CastSpell(SpellSlot.Q, corrosiveDebufTarget.Position); return; } if (target != null) { var qPrediciton = Q.GetPrediction(target); if (qPrediciton.HitChance >= HitChance.High) { Q.Cast(qPrediciton.CastPosition); return; } } } if (!W.IsReady() || !Settings.Combo.UseW || (Player.Instance.Mana - 50 + 5 * (E.Level - 1) < 120 + (R.IsReady() ? 100 : 0))) { return; } { if ((Player.Instance.CountEnemiesInRangeCached(Player.Instance.GetAutoAttackRange()) < 1) || !CorrosiveDebufTargets.Any( unit => (unit.Type == GameObjectType.AIHeroClient) && unit.IsValidTargetCached(1300))) { return; } W.Cast(); } }
public static bool HasSpottedBuff(Obj_AI_Base unit) { return(CorrosiveDebufTargets.Contains(unit)); }