Exemple #1
0
        private static void PostAttack(object sender, PostAttackEventArgs Args)
        {
            if (E.Ready)
            {
                if (Orbwalker.Mode == OrbwalkingMode.Combo && ComboOption.UseE && ComboOption.GetBool("ComboEReset").Enabled)
                {
                    var target = Args.Target as Obj_AI_Hero;

                    if (target != null && !target.IsDead && target.IsValidTarget())
                    {
                        ELogic(target);
                    }
                }
                else if (Orbwalker.Mode == OrbwalkingMode.Laneclear && JungleClearOption.HasEnouguMana() && Args.Target.Type == GameObjectType.obj_AI_Minion &&
                         Args.Target.IsMob())
                {
                    if (JungleClearOption.UseE)
                    {
                        var mobs =
                            GameObjects.EnemyMinions.Where(x => x.IsValidSpellTarget(800) && x.IsMob())
                            .Where(x => !x.Name.ToLower().Contains("mini"))
                            .ToArray();

                        if (mobs.Any() && mobs.FirstOrDefault() != null)
                        {
                            ELogic(mobs.FirstOrDefault());
                        }
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        ///     Called on do-cast.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public void Weaving(object sender, PostAttackEventArgs args)
        {
            var heroTarget = args.Target as Obj_AI_Hero;

            if (heroTarget == null)
            {
                return;
            }

            /// <summary>
            ///     The Q Weaving Logic.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Spells["q"]["combo"].As <MenuBool>().Enabled)
            {
                SpellClass.Q.CastOnUnit(heroTarget);
                //SpellClass.Q.Cast(heroTarget);
                return;
            }

            /// <summary>
            ///     The W Weaving Logic.
            /// </summary>
            if (SpellClass.W.Ready &&
                !GameObjects.AllyHeroes.Any(a => !a.IsMe && a.SpellBook.IsAutoAttacking && a.IsValidTarget(SpellClass.W.Range, true)) &&
                MenuClass.Spells["w"]["combo"].As <MenuBool>().Enabled)
            {
                SpellClass.W.Cast(heroTarget);
            }
        }
Exemple #3
0
        internal override void PostAttack(object sender, PostAttackEventArgs e)
        {
            var heroTarget = e.Target as Obj_AI_Hero;

            if (Orbwalker.Implementation.Mode.Equals(OrbwalkingMode.Combo))
            {
                if (!RootMenu["combo"]["useQAA"].Enabled)
                {
                    return;
                }

                Obj_AI_Hero hero = e.Target as Obj_AI_Hero;
                if (hero == null || !hero.IsValid || !hero.IsEnemy)
                {
                    return;
                }
                Q.Cast();
            }

            if (Orbwalker.Implementation.Mode.Equals(OrbwalkingMode.Mixed))
            {
                if (!RootMenu["harass"]["useQAA"].Enabled)
                {
                    return;
                }

                Obj_AI_Hero hero = e.Target as Obj_AI_Hero;
                if (hero == null || !hero.IsValid || !hero.IsEnemy)
                {
                    return;
                }
                Q.Cast();
            }
        }
Exemple #4
0
        public static void PostAttack(object sender, PostAttackEventArgs args)
        {
            if (!SpellManager.Q.Ready || Global.Player.ManaPercent() <= 35 || MenuConfig.LaneClear["Q"].Value == 2)
            {
                return;
            }

            if (Global.Player.CountEnemyHeroesInRange(900) == 0 && MenuConfig.LaneClear["Turret"].Enabled)
            {
                var t = args.Target as Obj_AI_Base;

                if (t != null && (t.Type == GameObjectType.obj_AI_Turret || t.Type == GameObjectType.obj_AI_Base))
                {
                    SpellManager.CastQ(t);
                }
            }

            if (MenuConfig.LaneClear["Q"].Value == 1)
            {
                return;
            }

            var minion = GameObjects.EnemyMinions.FirstOrDefault(x => x != Global.Orbwalker.GetOrbwalkingTarget() &&
                                                                 x.Health <Global.Player.GetAutoAttackDamage(x) + Global.Player.GetSpellDamage(x, SpellSlot.Q) &&
                                                                           x.Health> Global.Player.GetAutoAttackDamage(x) && x.IsValidAutoRange());

            if (minion == null)
            {
                return;
            }
            SpellManager.Q.Cast(Game.CursorPos);
        }
Exemple #5
0
        /// <summary>
        ///     Called OnPostAttack.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public void Weaving(object sender, PostAttackEventArgs args)
        {
            var heroTarget = args.Target as Obj_AI_Hero;

            if (heroTarget == null || Invulnerable.Check(heroTarget))
            {
                return;
            }

            /// <summary>
            ///     The W Combo Weaving Logic.
            /// </summary>
            if (SpellClass.W.Ready &&
                MenuClass.Spells["w"]["combo"].As <MenuBool>().Enabled)
            {
                SpellClass.W.Cast();
            }

            /// <summary>
            ///     The Q Combo Weaving Logic.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Spells["q"]["combo"].As <MenuBool>().Enabled)
            {
                SpellClass.Q.Cast();
            }
        }
Exemple #6
0
        private static void PostAttack(object sender, PostAttackEventArgs Args)
        {
            if (Args.Target == null || Args.Target.IsDead || !Args.Target.IsValidTarget() ||
                Args.Target.Health <= 0 || Orbwalker.Mode == OrbwalkingMode.None)
            {
                return;
            }

            switch (Args.Target.Type)
            {
            case GameObjectType.obj_AI_Hero:
            {
                if (Orbwalker.Mode == OrbwalkingMode.Combo)
                {
                    if (ComboOption.UseW && W.Ready)
                    {
                        var target = (Obj_AI_Hero)Args.Target;

                        if (!target.IsDead && target.IsValidAutoRange())
                        {
                            var wPred = W.GetPrediction(target);

                            if (wPred.HitChance >= HitChance.High)
                            {
                                W.Cast(wPred.UnitPosition);
                            }
                        }
                    }
                }
            }
            break;
            }
        }
        /// <summary>
        ///     Called on post attack.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public void Jungleclear(object sender, PostAttackEventArgs args)
        {
            var jungleTarget = args.Target as Obj_AI_Minion;

            if (jungleTarget == null ||
                !Extensions.GetGenericJungleMinionsTargets().Contains(jungleTarget) ||
                jungleTarget.GetRealHealth() < UtilityClass.Player.GetAutoAttackDamage(jungleTarget) * 2)
            {
                return;
            }

            /// <summary>
            ///     The E Jungleclear Logic.
            /// </summary>
            if (SpellClass.E.Ready &&
                UtilityClass.Player.ManaPercent()
                > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["jungleclear"]) &&
                MenuClass.Spells["e"]["laneclear"].As <MenuSliderBool>().Enabled)
            {
                UtilityClass.CastOnUnit(SpellClass.E, jungleTarget);
                return;
            }

            /// <summary>
            ///     The Q Jungleclear Logic.
            /// </summary>
            if (SpellClass.Q.Ready &&
                UtilityClass.Player.ManaPercent()
                > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Spells["q"]["jungleclear"]) &&
                MenuClass.Spells["q"]["laneclear"].As <MenuSliderBool>().Enabled)
            {
                SpellClass.Q.Cast(jungleTarget);
            }
        }
Exemple #8
0
        private void OnPostAttack(object sender, PostAttackEventArgs args)
        {
            try
            {
                switch (Global.Orbwalker.Mode)
                {
                case OrbwalkingMode.Combo:
                    Combo.PostAttack(sender, args);
                    break;

                case OrbwalkingMode.Mixed:
                    Harass.PostAttack(sender, args);
                    break;

                case OrbwalkingMode.Laneclear:
                    LaneClear.PostAttack(sender, args);
                    JungleClear.PostAttack(sender, args);
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Exemple #9
0
        /// <summary>
        ///     Called on post attack.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public void Weaving(object sender, PostAttackEventArgs args)
        {
            var heroTarget = args.Target as Obj_AI_Hero;

            if (heroTarget == null)
            {
                return;
            }

            /// <summary>
            ///     The Q Weaving Logic.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Spells["q"]["combo"].As <MenuBool>().Enabled)
            {
                SpellClass.Q.Cast(heroTarget);
                return;
            }

            /// <summary>
            ///     The E Weaving Logic.
            /// </summary>
            if (SpellClass.E.Ready &&
                MenuClass.Spells["e"]["combo"].As <MenuBool>().Enabled)
            {
                SpellClass.E.Cast(heroTarget);
            }
        }
Exemple #10
0
        public static void Orbwalker_OnPostAttack(Object sender, PostAttackEventArgs args)
        {
            //For post attack. If none, return.
            if (IOrbwalker.Mode == OrbwalkingMode.None)
            {
                return;
            }

            var dashPosition = Player.Position.Extend(Game.CursorPos, 350);

            if (!Q.Ready) // || !target.IsValidTarget(Player.AttackRange
            {
                return;
            }

            if (IOrbwalker.Mode == OrbwalkingMode.Laneclear)
            {
                if (!Champions.Kindred.MenuClass.JungleClearq["useq"].Enabled || Player.ManaPercent() < Champions.Kindred.MenuClass.JungleClearq["useqmana"].Value)
                {
                    return;
                }
            }

            if (IOrbwalker.Mode == OrbwalkingMode.Mixed)
            {
                if (!Champions.Kindred.MenuClass.harassqmenu["useq"].Enabled || Player.ManaPercent() < Champions.Kindred.MenuClass.harassqmenu["useqmana"].Value)
                {
                    return;
                }
            }

            //First Q logic - just Q to mouse
            Q.Cast(dashPosition);
            DelayAction.Queue(100 + Game.Ping, Orbwalker.ResetAutoAttackTimer);
        }
Exemple #11
0
 private static void ImplementationOnPostAttack(object enemy, PostAttackEventArgs events)
 {
     if (Orbwalker.Implementation.Mode.Equals(OrbwalkingMode.Combo) && Setup.Combo["W"].As <MenuBool>().Enabled&& Spells.W.Ready)
     {
         Obj_AI_Hero target = events.Target as Obj_AI_Hero;
         var         pred   = Spells.W.GetPrediction(target);
         if (target != null)
         {
             Spells.W.Cast(pred.CastPosition);
         }
     }
     if (Orbwalker.Implementation.Mode.Equals(OrbwalkingMode.Combo) && Setup.Combo["Q"].As <MenuBool>().Enabled&& Spells.Q.Ready)
     {
         Spells.Q.Cast();
     }
     if (Orbwalker.Implementation.Mode.Equals(OrbwalkingMode.Mixed) && Setup.Harass["W"].As <MenuBool>().Enabled&& Spells.W.Ready)
     {
         Obj_AI_Hero target = events.Target as Obj_AI_Hero;
         var         pred   = Spells.W.GetPrediction(target);
         if (target != null)
         {
             Spells.W.Cast(pred.CastPosition);
         }
     }
     if (Orbwalker.Implementation.Mode.Equals(OrbwalkingMode.Mixed) && Setup.Harass["Q"].As <MenuBool>().Enabled&& Spells.Q.Ready)
     {
         Spells.Q.Cast();
     }
 }
Exemple #12
0
        public void OnPostAttack(object sender, PostAttackEventArgs args)
        {
            var heroTarget = args.Target as Obj_AI_Hero;

            if (Orbwalker.Mode.Equals(OrbwalkingMode.Combo))
            {
                if (!Menu["combo"]["procq"].Enabled)
                {
                    return;
                }
                Obj_AI_Hero hero = args.Target as Obj_AI_Hero;
                if (hero == null || !hero.IsValid || !hero.IsEnemy)
                {
                    return;
                }

                if (!Orbwalker.IsWindingUp)
                {
                    if (hero.IsValidTarget(E.Range))
                    {
                        E.Cast();
                    }
                }
            }
        }
Exemple #13
0
        public void OnPostAttack(object sender, PostAttackEventArgs args)
        {
            var heroTarget = args.Target as Obj_AI_Hero;

            if (Orbwalker.Mode.Equals(OrbwalkingMode.Combo))
            {
                if (delayyyyyyyyyyyyyyyyyyy > Game.TickCount)
                {
                    return;
                }
                if (!Menu["combo"]["waa"].Enabled)
                {
                    return;
                }
                Obj_AI_Hero hero = args.Target as Obj_AI_Hero;
                if (hero == null || !hero.IsValid || !hero.IsEnemy)
                {
                    return;
                }

                if (W.Cast())
                {
                    Orbwalker.ResetAutoAttackTimer();
                }
            }
        }
Exemple #14
0
        /// <summary>
        ///     Called on post attack.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public void Weaving(object sender, PostAttackEventArgs args)
        {
            var heroTarget = args.Target as Obj_AI_Hero;

            if (heroTarget == null)
            {
                return;
            }

            /// <summary>
            ///     The W Weaving Logic.
            /// </summary>
            if (SpellClass.W.Ready &&
                heroTarget.GetRealBuffCount("TwitchDeadlyVenom") <=
                MenuClass.Spells["w"]["combo"].As <MenuSliderBool>().Value&&
                MenuClass.Spells["w"]["combo"].As <MenuSliderBool>().Enabled)
            {
                SpellClass.W.Cast(heroTarget);
            }

            /// <summary>
            ///     The Q Weaving Logic.
            /// </summary>
            if (SpellClass.Q.Ready &&
                MenuClass.Spells["q"]["combo"].As <MenuBool>().Enabled)
            {
                SpellClass.Q.Cast();
            }
        }
Exemple #15
0
        /// <summary>
        ///     Called on do-cast.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public void Buildingclear(object sender, PostAttackEventArgs args)
        {
            var target = args.Target;

            if (!target.IsBuilding())
            {
                return;
            }

            /// <summary>
            ///     The E BuildingClear Logic.
            /// </summary>
            if (SpellClass.E.Ready &&
                UtilityClass.Player.ManaPercent()
                > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["buildings"]) &&
                MenuClass.Spells["e"]["buildings"].As <MenuSliderBool>().Enabled)
            {
                SpellClass.E.Cast(UtilityClass.Player.Position.Extend(Game.CursorPos, 25f));
                return;
            }

            /// <summary>
            ///     The W BuildingClear Logic.
            /// </summary>
            if (SpellClass.W.Ready &&
                UtilityClass.Player.ManaPercent()
                > ManaManager.GetNeededMana(SpellClass.W.Slot, MenuClass.Spells["w"]["buildings"]) &&
                MenuClass.Spells["w"]["buildings"].As <MenuSliderBool>().Enabled)
            {
                SpellClass.W.Cast(Game.CursorPos);
            }
        }
Exemple #16
0
        /* public void OnInterruptableTarget(object sender, Events.InterruptableTargetEventArgs args)
         * {
         *    if (Player.IsDead || !args.Sender.IsValidTarget())
         *    {
         *        return;
         *    }
         *    if (args.Sender.IsValidTarget(Q.Range)
         *        && Menu["misc"]["InterruptQ"].Enabled)
         *    {
         *        Q.CastOnUnit(args.Sender);
         *    }
         * }*/
        public void OnPostAttack(object sender, PostAttackEventArgs args)
        {
            var heroTarget = args.Target as Obj_AI_Hero;

            if (Orbwalker.Mode.Equals(OrbwalkingMode.Combo))
            {
                if (!Menu["combo"]["waa"].Enabled)
                {
                    return;
                }
                Obj_AI_Hero hero = args.Target as Obj_AI_Hero;
                if (hero == null || !hero.IsValid || !hero.IsEnemy)
                {
                    return;
                }
                W.Cast();
            }
            if (Orbwalker.Mode.Equals(OrbwalkingMode.Mixed))
            {
                if (!Menu["harass"]["waa"].Enabled)
                {
                    return;
                }
                Obj_AI_Hero hero = args.Target as Obj_AI_Hero;
                if (hero == null || !hero.IsValid || !hero.IsEnemy)
                {
                    return;
                }
                W.Cast();
            }
        }
Exemple #17
0
 public static void Orbwalker_OnPostAttack(Object sender, PostAttackEventArgs args)
 {
     //For post attack. If none, return.
     if (IOrbwalker.Mode == OrbwalkingMode.None)
     {
         return;
     }
 }
Exemple #18
0
        private static void PostAttack(object sender, PostAttackEventArgs Args)
        {
            if (Args.Target == null || Args.Target.IsDead || !Args.Target.IsValidTarget() || Args.Target.Health <= 0)
            {
                return;
            }

            switch (Args.Target.Type)
            {
            case GameObjectType.obj_AI_Hero:
            {
                var target = Args.Target as Obj_AI_Hero;

                if (target != null && target.IsValidTarget())
                {
                    if (Orbwalker.Mode == OrbwalkingMode.Combo)
                    {
                        if (ComboOption.UseQ && Q.Ready && target.IsValidTarget(Q.Range))
                        {
                            Q.CastOnUnit(target);
                        }
                        else if (ComboOption.UseW && ComboOption.GetBool("ComboWAA").Enabled&& W.Ready &&
                                 target.IsValidTarget(W.Range) && HasPassive(target))
                        {
                            var wPred = W.GetPrediction(target);

                            if (wPred.HitChance >= HitChance.High)
                            {
                                W.Cast(wPred.UnitPosition);
                            }
                        }
                    }
                    else if (Orbwalker.Mode == OrbwalkingMode.Mixed ||
                             Orbwalker.Mode == OrbwalkingMode.Laneclear && MyManaManager.SpellHarass)
                    {
                        if (HarassOption.HasEnouguMana())
                        {
                            if (HarassOption.UseQ && Q.Ready && target.IsValidTarget(Q.Range))
                            {
                                Q.CastOnUnit(target);
                            }
                            else if (HarassOption.UseW && W.Ready && target.IsValidTarget(W.Range) &&
                                     HasPassive(target))
                            {
                                var wPred = W.GetPrediction(target);

                                if (wPred.HitChance >= HitChance.High)
                                {
                                    W.Cast(wPred.UnitPosition);
                                }
                            }
                        }
                    }
                }
            }
            break;
            }
        }
        /// <summary>
        ///     Called on post attack.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public void Jungleclear(object sender, PostAttackEventArgs args)
        {
            var jungleTarget = args.Target as Obj_AI_Minion;

            if (jungleTarget == null ||
                !Extensions.GetGenericJungleMinionsTargets().Contains(jungleTarget) ||
                jungleTarget.GetRealHealth() < UtilityClass.Player.GetAutoAttackDamage(jungleTarget) * 2)
            {
                return;
            }

            /// <summary>
            ///     The E Jungleclear Logic.
            /// </summary>
            if (SpellClass.E.Ready &&
                UtilityClass.Player.ManaPercent()
                > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["jungleclear"]) &&
                MenuClass.Spells["e"]["jungleclear"].As <MenuSliderBool>().Enabled)
            {
                const int condemnPushDistance = 410;
                var       playerPos           = UtilityClass.Player.ServerPosition;

                var targetPos    = jungleTarget.ServerPosition;
                var predPosition = SpellClass.E.GetPrediction(jungleTarget).CastPosition;

                for (var i = 60; i < condemnPushDistance; i += 10)
                {
                    if (!targetPos.Extend(playerPos, -i).IsWall(true) ||
                        !targetPos.Extend(playerPos, -i - 60).IsWall(true))
                    {
                        continue;
                    }

                    if (MenuClass.Spells["e"]["emode"].As <MenuList>().Value == 0)
                    {
                        if (!predPosition.Extend(playerPos, -i).IsWall(true) ||
                            !predPosition.Extend(playerPos, -i - 60).IsWall(true))
                        {
                            continue;
                        }
                    }

                    UtilityClass.CastOnUnit(SpellClass.E, jungleTarget);
                }
            }

            /// <summary>
            ///     The Q Jungleclear Logic.
            /// </summary>
            if (SpellClass.Q.Ready &&
                UtilityClass.Player.ManaPercent()
                > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Spells["q"]["jungleclear"]) &&
                MenuClass.Spells["q"]["jungleclear"].As <MenuSliderBool>().Enabled)
            {
                SpellClass.Q.Cast(Game.CursorPos);
            }
        }
Exemple #20
0
        private static void PostAttack(object sender, PostAttackEventArgs Args)
        {
            if (Args.Target == null || Args.Target.IsDead || !Args.Target.IsValidTarget() || Args.Target.Health <= 0)
            {
                return;
            }

            switch (Args.Target.Type)
            {
            case GameObjectType.obj_AI_Hero:
            {
                var target = Args.Target as Obj_AI_Hero;

                if (target != null && target.IsValidTarget())
                {
                    if (Orbwalker.Mode == OrbwalkingMode.Combo)
                    {
                        if (ComboOption.UseQ && Q.Ready)
                        {
                            if (!isWActive)
                            {
                                var qPred = Q.GetPrediction(target);

                                if (qPred.HitChance >= HitChance.High)
                                {
                                    Q.Cast(qPred.CastPosition);
                                }
                            }
                        }

                        if (ComboOption.UseW && W.Ready)
                        {
                            W.Cast();
                        }
                    }
                    else if (Orbwalker.Mode == OrbwalkingMode.Mixed ||
                             Orbwalker.Mode == OrbwalkingMode.Laneclear && MyManaManager.SpellHarass)
                    {
                        if (HarassOption.HasEnouguMana() && HarassOption.GetHarassTargetEnabled(target.ChampionName))
                        {
                            if (HarassOption.UseQ && Q.Ready)
                            {
                                var qPred = Q.GetPrediction(target);

                                if (qPred.HitChance >= HitChance.High)
                                {
                                    Q.Cast(qPred.CastPosition);
                                }
                            }
                        }
                    }
                }
            }
            break;
            }
        }
Exemple #21
0
        /// <summary>
        ///     Fires the Post Attack Event
        /// </summary>
        protected PostAttackEventArgs FirePostAttack(AttackableUnit target)
        {
            var args = new PostAttackEventArgs {
                Target = target
            };

            this.PostAttack?.Invoke(Player, args);

            return(args);
        }
Exemple #22
0
 public void OnPostAttack(object sender, PostAttackEventArgs args)
 {
     switch (Global.Orbwalker.Mode)
     {
     case OrbwalkingMode.Laneclear:
         _jungleClear.OnPostAttack(args.Target);
         _laneClear.OnPostAttack();
         break;
     }
 }
Exemple #23
0
 private static void Implementation_PostAttack(object sender, PostAttackEventArgs e)
 {
     if (sender is Obj_AI_Hero hero && e.Target is Obj_AI_Hero target)
     {
         if (hero.IsMe && target.GetPassiveMarks() == 1 && AutoIsCharged && SpellManager.W.Ready)
         {
             DelayAction.Queue(25, () => SpellManager.W.Cast());
         }
     }
 }
Exemple #24
0
        private static void PostAttack(object sender, PostAttackEventArgs Args)
        {
            if (Args.Target == null || Args.Target.IsDead || !Args.Target.IsValidTarget() || Args.Target.Health <= 0)
            {
                return;
            }

            switch (Args.Target.Type)
            {
            case GameObjectType.obj_AI_Hero:
            {
                var target = Args.Target as Obj_AI_Hero;

                if (target != null && target.IsValidTarget())
                {
                    if (Orbwalker.Mode == OrbwalkingMode.Combo)
                    {
                        if (ComboOption.UseQ && Q.Ready)
                        {
                            Q.CastOnUnit(target);
                        }
                        else if (ComboOption.UseW && W.Ready)
                        {
                            W.Cast();
                        }
                    }
                }
            }
            break;

            case GameObjectType.obj_AI_Minion:
            {
                var mob = Args.Target as Obj_AI_Minion;

                if (mob != null && mob.IsValidTarget() && mob.IsMob())
                {
                    if (Orbwalker.Mode == OrbwalkingMode.Laneclear)
                    {
                        if (JungleClearOption.HasEnouguMana())
                        {
                            if (JungleClearOption.UseQ && Q.Ready)
                            {
                                Q.CastOnUnit(mob);
                            }
                            else if (JungleClearOption.UseW && W.Ready)
                            {
                                W.Cast();
                            }
                        }
                    }
                }
            }
            break;
            }
        }
Exemple #25
0
        /// <summary>
        ///     Called on post attack.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public void Jungleclear(object sender, PostAttackEventArgs args)
        {
            var jungleTarget = args.Target as Obj_AI_Minion;

            if (jungleTarget == null ||
                !Extensions.GetGenericJungleMinionsTargets().Contains(jungleTarget) ||
                jungleTarget.GetRealHealth() < UtilityClass.Player.GetAutoAttackDamage(jungleTarget) * 2)
            {
                return;
            }

            /// <summary>
            ///     The E Jungleclear Logic.
            /// </summary>
            if (SpellClass.E.Ready &&
                UtilityClass.Player.ManaPercent()
                > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["jungleclear"]) &&
                MenuClass.Spells["e"]["jungleclear"].As <MenuSliderBool>().Enabled)
            {
                if (UtilityClass.JungleList.Contains(jungleTarget.UnitSkinName) &&
                    !Extensions.GetLegendaryJungleMinionsTargets().Contains(jungleTarget))
                {
                    var       playerPos           = UtilityClass.Player.ServerPosition;
                    const int CondemnPushDistance = 410 / 10;
                    for (var i = 1; i < 10; i++)
                    {
                        var predictedPos = SpellClass.E.GetPrediction(jungleTarget).UnitPosition;

                        var targetPosition         = jungleTarget.ServerPosition.Extend(playerPos, -CondemnPushDistance * i);
                        var targetPositionExtended = jungleTarget.ServerPosition.Extend(playerPos, (-CondemnPushDistance + 1) * i);

                        var predPosition         = predictedPos.Extend(playerPos, -CondemnPushDistance * i);
                        var predPositionExtended = predictedPos.Extend(playerPos, (-CondemnPushDistance + 1) * i);

                        if (targetPosition.IsWall(true) && targetPositionExtended.IsWall(true) &&
                            predPosition.IsWall(true) && predPositionExtended.IsWall(true))
                        {
                            SpellClass.E.CastOnUnit(jungleTarget);
                        }
                    }
                }
            }

            /// <summary>
            ///     The Q Jungleclear Logic.
            /// </summary>
            if (SpellClass.Q.Ready &&
                UtilityClass.Player.ManaPercent()
                > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Spells["q"]["jungleclear"]) &&
                MenuClass.Spells["q"]["jungleclear"].As <MenuSliderBool>().Enabled)
            {
                SpellClass.Q.Cast(Game.CursorPos);
            }
        }
Exemple #26
0
        private static void ImplementationOnPostAttack(object enemy, PostAttackEventArgs events)
        {
            if (Orbwalker.Implementation.Mode.Equals(OrbwalkingMode.Combo) && Setup.Combo["Q"].As <MenuBool>().Enabled&& Spells.Q.Ready)
            {
                Obj_AI_Hero target = events.Target as Obj_AI_Hero;
                if (target != null)
                {
                    var mode = Setup.Misc["Qm"].As <MenuList>().Value;

                    if (mode == 0)
                    {
                        Spells.Q.Cast(TumbleLogic.SideQ(Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                    }
                    if (mode == 1)
                    {
                        Spells.Q.Cast(TumbleLogic.SafeQ(Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                    }
                    if (mode == 2)
                    {
                        Spells.Q.Cast(TumbleLogic.AggresiveQ(Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                    }
                    if (mode == 3)
                    {
                        Spells.Q.Cast(Game.CursorPos);
                    }
                }
            }
            if (Orbwalker.Implementation.Mode.Equals(OrbwalkingMode.Mixed) && Setup.Harass["Q"].As <MenuBool>().Enabled&& Spells.Q.Ready && Player.ManaPercent() < Setup.Harass["M"].As <MenuSlider>().Value)
            {
                Obj_AI_Hero target = events.Target as Obj_AI_Hero;
                if (target != null)
                {
                    var mode = Setup.Misc["Qm"].As <MenuList>().Value;

                    if (mode == 0)
                    {
                        Spells.Q.Cast(TumbleLogic.SideQ(Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                    }
                    if (mode == 1)
                    {
                        Spells.Q.Cast(TumbleLogic.SafeQ(Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                    }
                    if (mode == 2)
                    {
                        Spells.Q.Cast(TumbleLogic.AggresiveQ(Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                    }
                    if (mode == 3)
                    {
                        Spells.Q.Cast(Game.CursorPos);
                    }
                }
            }
        }
Exemple #27
0
        private static void PostAttack(object sender, PostAttackEventArgs Args)
        {
            Orbwalker.ForceTarget(null);

            if (Args.Target == null || Args.Target.IsDead || !Args.Target.IsValidTarget() || Args.Target.Health <= 0)
            {
                return;
            }

            switch (Args.Target.Type)
            {
            case GameObjectType.obj_AI_Hero:
            {
                if (Orbwalker.Mode == OrbwalkingMode.Combo)
                {
                    var target = Args.Target as Obj_AI_Hero;

                    if (target != null && target.IsValidTarget(E.Range))
                    {
                        if (ComboOption.UseE && E.Ready && ComboOption.GetBool("ComboEOnlyAfterAA").Enabled)
                        {
                            E.CastOnUnit(target);
                        }
                    }
                }
            }
            break;

            case GameObjectType.obj_AI_Turret:
            case GameObjectType.obj_HQ:
            case GameObjectType.obj_Barracks:
            case GameObjectType.obj_BarracksDampener:
            case GameObjectType.obj_Building:
            {
                if (Orbwalker.Mode == OrbwalkingMode.Laneclear && MyManaManager.SpellFarm && LaneClearOption.HasEnouguMana(true))
                {
                    if (Me.CountEnemyHeroesInRange(800) == 0)
                    {
                        if (LaneClearOption.UseE && E.Ready)
                        {
                            E.CastOnUnit(Args.Target as Obj_AI_Base);

                            if (LaneClearOption.UseQ && Q.Ready)
                            {
                                Q.Cast();
                            }
                        }
                    }
                }
            }
            break;
            }
        }
Exemple #28
0
 private static void ImplementationOnPostAttack(object o, PostAttackEventArgs e)
 {
     if (e.Target == null || !e.Target.IsValid)
     {
         return;
     }
     if (e.Target.Name == "Barrel")
     {
         var barrel = (Barrel)e.Target;
         barrel?.Decay();
     }
 }
Exemple #29
0
        /// <summary>
        ///     Called on postattack.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="args">The <see cref="PostAttackEventArgs" /> instance containing the event data.</param>
        public static void OnPostAttack(object sender, PostAttackEventArgs args)
        {
            if (args.Target.IsBuilding())
            {
                return;
            }

            if (MenuClass.Hydra != null)
            {
                switch (ImplementationClass.IOrbwalker.Mode)
                {
                case OrbwalkingMode.Combo:
                    if (!MenuClass.Hydra["combo"].As <MenuBool>().Enabled)
                    {
                        return;
                    }
                    break;

                case OrbwalkingMode.Mixed:
                    if (!MenuClass.Hydra["mixed"].As <MenuBool>().Enabled)
                    {
                        return;
                    }
                    break;

                case OrbwalkingMode.Laneclear:
                    if (!MenuClass.Hydra["laneclear"].As <MenuBool>().Enabled)
                    {
                        return;
                    }
                    break;

                case OrbwalkingMode.Lasthit:
                    if (!MenuClass.Hydra["lasthit"].As <MenuBool>().Enabled)
                    {
                        return;
                    }
                    break;
                }

                var hydraItems = new[] { ItemId.TitanicHydra, ItemId.RavenousHydra, ItemId.Tiamat };
                var hydraSlot  = UtilityClass.Player.Inventory.Slots.FirstOrDefault(s => hydraItems.Contains(s.ItemId));
                if (hydraSlot != null)
                {
                    var hydraSpellSlot = hydraSlot.SpellSlot;
                    if (hydraSpellSlot != SpellSlot.Unknown &&
                        UtilityClass.Player.SpellBook.GetSpell(hydraSpellSlot).State == SpellState.Ready)
                    {
                        UtilityClass.Player.SpellBook.CastSpell(hydraSpellSlot);
                    }
                }
            }
        }
Exemple #30
0
        public static void PostAttack(object sender, PostAttackEventArgs args)
        {
            switch (Global.Orbwalker.Mode)
            {
            case OrbwalkingMode.Combo:
                Combo.OnPostAttack(args.Target);
                break;

            case OrbwalkingMode.Laneclear:
                JungleClear.OnPostAttack();
                break;
            }
        }