Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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();
            }
        }
Ejemplo n.º 11
0
 protected static bool HasSpottedBuff(Obj_AI_Base unit) => CorrosiveDebufTargets.Contains(unit);
Ejemplo n.º 12
0
        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();
            }
        }
Ejemplo n.º 13
0
 public static bool HasSpottedBuff(Obj_AI_Base unit)
 {
     return(CorrosiveDebufTargets.Contains(unit));
 }