Exemple #1
0
        private static void ObjAiBaseOnOnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (sender is AITurretClient && args.Target.IsMe && E.IsReady() && Menu["Misc"].GetValue <MenuBool>("UseETower"))
            {
                E.Cast(Game.CursorPos);
            }

            if (!sender.IsMe)
            {
                return;
            }

            if (args.SData.Name == "FizzW")
            {
                Orbwalker.ResetAutoAttackTimer();
            }
            if (args.SData.Name == "FizzE")
            {
                if (Orbwalker.ActiveMode == OrbwalkerMode.Combo)
                {
                    Utility.DelayAction.Add((int)(sender.Spellbook.SpellEndTime - Game.Time) + Game.Ping / 2 + 250, () => W.Cast());
                }
                else if (Orbwalker.ActiveMode == OrbwalkerMode.Harass &&
                         Menu["Harass"].GetValue <MenuList>("UseEHarassMode").SelectedValue == "Back to Position") //"Back to Position", "On Enemy"
                {
                    Utility.DelayAction.Add(
                        (int)(sender.Spellbook.SpellEndTime - Game.Time) + Game.Ping / 2 + 250, () => { JumpBack = true; });
                }
            }

            if (args.SData.Name == "fizzjumptwo" || args.SData.Name == "fizzjumpbuffer")
            {
                LastHarassPos = null;
                JumpBack      = false;
            }
        }
        private static void Obj_AI_Base_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            var enabled = Variable.Config["Enabled"].GetValue <MenuBool>().Enabled;

            if (!enabled || !Variable.Player.IsTargetable || (sender == null || sender.Team == Variable.Player.Team))
            {
                return;
            }

            foreach (var champ in Variable.ExistingChampions)
            {
                var champion = Variable.Config["CAS"][champ.CharName];
                if (champion == null || champion[champ.Slot.ToString()] == null || !champion[champ.Slot.ToString()].GetValue <MenuBool>().Enabled)
                {
                    continue;
                }

                if (champ.Slot != (sender as AIHeroClient).GetSpellSlot(args.SData.Name) ||
                    (!(Variable.Player.Distance(sender.Position) <= champ.Range) && args.Target != Variable.Player))
                {
                    continue;
                }

                var vector =
                    new Vector3(
                        Variable.Player.Position.X +
                        ((sender.Position.X - Variable.Player.Position.X) * (Internal.MoveTo(champ.Movement)) /
                         Variable.Player.Distance(sender.Position)),
                        Variable.Player.Position.Y +
                        ((sender.Position.Y - Variable.Player.Position.Y) * (Internal.MoveTo(champ.Movement)) /
                         Variable.Player.Distance(sender.Position)), 0);
                Variable.Player.IssueOrder(GameObjectOrder.MoveTo, vector);
                Orbwalker.MovementState = false;
                DelayAction.Add((int)(champ.CastTime + 0.1) * 1000, () => Orbwalker.MovementState = true);
            }
        }
Exemple #3
0
        /// <summary>
        /// Handles the <see cref="E:ProcessSpell" /> event.
        /// </summary>
        /// <param name="unit">The unit.</param>
        /// <param name="spell">The <see cref="AIBaseClientProcessSpellCastEventArgs"/> instance containing the event data.</param>
        private static void OnProcessSpell(AIBaseClient unit, AIBaseClientProcessSpellCastEventArgs spell)
        {
            try
            {
                var spellName = spell.SData.Name;

                if (!IsAutoAttack(spellName))
                {
                    return;
                }

                if (unit.IsMe &&
                    (spell.Target is AIBaseClient || spell.Target is BarracksDampenerClient || spell.Target is HQClient))
                {
                    LastAaTick       = Utils.GameTimeTickCount - Game.Ping / 2;
                    _missileLaunched = false;
                    LastMoveCommandT = 0;

                    if (spell.Target is AIBaseClient)
                    {
                        var target = (AIBaseClient)spell.Target;
                        if (target.IsValid)
                        {
                            FireOnTargetSwitch(target);
                            _lastTarget = target;
                        }
                    }
                }

                FireOnAttack(unit, _lastTarget);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Exemple #4
0
        static void AIBaseClient_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (!escapeMenu["Evade"].GetValue <MenuBool>().Enabled)
            {
                return;
            }
            if (sender.IsAlly)
            {
                return;
            }
            //Need to calc Delay/Time for misille to hit !

            if (DangerDB.TargetedList.Contains(args.SData.Name))
            {
                if (args.Target.IsMe)
                {
                    R.Cast();
                }
            }

            if (DangerDB.CircleSkills.Contains(args.SData.Name))
            {
                if (player.Distance(args.End) < args.SData.LineWidth)
                {
                    R.Cast();
                }
            }

            if (DangerDB.Skillshots.Contains(args.SData.Name))
            {
                if (new Geometry.Rectangle(args.Start, args.End, args.SData.LineWidth).IsInside(player))
                {
                    R.Cast();
                }
            }
        }
        static void AIBaseClientProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (!(sender is AIHeroClient))
            {
                return;
            }

            if (!Config["Misc"].GetValue <MenuBool>("AutoEInitiators"))
            {
                return;
            }

            var spellName = args.SData.Name.ToLower();

            if (!InitiatorsList.ContainsKey(spellName))
            {
                return;
            }

            var item = Config["Misc"]["InitiatorsMenu"].GetValue <MenuBool>(spellName);

            if (item == null || !item.Enabled)
            {
                return;
            }

            if (!E.IsReady())
            {
                return;
            }

            if (sender.IsAlly && Player.Distance(sender) < E.Range * E.Range)
            {
                E.CastOnUnit(sender);
            }
        }
Exemple #6
0
 internal LastCastedSpellEntry(AIBaseClientProcessSpellCastEventArgs args)
 {
 }
Exemple #7
0
        private static void OnDoCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (sender.IsMe && Orbwalking.IsAutoAttack(args.SData.Name) && args.Target is AIHeroClient && args.Target.IsValid &&
                Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
            {
                if (sender == null || args == null)
                {
                    Chat.Print("Missing something!!");
                }
                switch (Config.Item("combo.type").GetValue <StringList>().SelectedIndex)
                {
                case 0:

                    if (Q.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                        ((AIHeroClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsTiger() &&
                        Config.Item("q.combo").GetValue <bool>() && !R.IsReady())
                    {
                        Q.Cast();
                    }
                    if (W.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                        ((AIHeroClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsTurtle() &&
                        Config.Item("w.combo").GetValue <bool>() && !R.IsReady())
                    {
                        W.Cast();
                    }
                    if (E.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                        ((AIHeroClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsBear() &&
                        Config.Item("e.combo").GetValue <bool>() && !Config.Item("e.stun").GetValue <bool>() &&
                        !R.IsReady())
                    {
                        E.Cast();
                    }
                    if (R.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                        ((AIHeroClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsPhoenix() &&
                        Config.Item("r.combo").GetValue <bool>())
                    {
                        R.Cast();
                    }

                    break;

                case 1:
                    if (Q.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                        ((AIHeroClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsTiger() &&
                        Config.Item("q.combo").GetValue <bool>() && !E.IsReady())
                    {
                        Q.Cast();
                    }
                    if (W.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                        ((AIHeroClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsTurtle() &&
                        Config.Item("w.combo").GetValue <bool>() && !E.IsReady())
                    {
                        W.Cast();
                    }
                    if (E.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                        ((AIHeroClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsBear() &&
                        Config.Item("e.combo").GetValue <bool>() && !Config.Item("e.stun").GetValue <bool>())
                    {
                        E.Cast();
                    }
                    if (R.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo &&
                        ((AIHeroClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsPhoenix() &&
                        Config.Item("r.combo").GetValue <bool>() && !E.IsReady())
                    {
                        R.Cast();
                    }
                    break;
                }
            }

            if (sender.IsMe && Orbwalking.IsAutoAttack(args.SData.Name) && args.Target is AIMinionClient &&
                args.Target.IsValid && ((AIMinionClient)args.Target).Team == GameObjectTeam.Neutral &&
                Udyr.ManaPercent >= Config.Item("jungle.mana").GetValue <Slider>().Value)
            {
                if (Q.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                    ((AIMinionClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsTiger() &&
                    Config.Item("q.jungle").GetValue <bool>())
                {
                    Q.Cast();
                }
                if (W.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                    ((AIMinionClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsTurtle() &&
                    Config.Item("w.jungle").GetValue <bool>() && ObjectManager.Player.Buffs.Any(buff => buff.Name != "UdyrPhoenixStance"))
                {
                    W.Cast();
                }
                if (E.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                    ((AIMinionClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsBear() &&
                    Config.Item("e.jungle").GetValue <bool>())
                {
                    E.Cast();
                }
                if (R.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                    ((AIMinionClient)args.Target).IsValidTarget(Udyr.AttackRange) &&
                    ObjectManager.Player.Buffs.Any(buff => buff.Name != "UdyrPhoenixStance") && !Udyr.IsPhoenix() &&
                    Config.Item("r.jungle").GetValue <bool>())
                {
                    R.Cast();
                }
            }

            if (sender.IsMe && Orbwalking.IsAutoAttack(args.SData.Name) && args.Target is AIMinionClient &&
                args.Target.IsValid && ((AIMinionClient)args.Target).IsEnemy && Udyr.ManaPercent >= Config.Item("clear.mana").GetValue <Slider>().Value)
            {
                if (Q.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                    ((AIMinionClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsTiger() &&
                    Config.Item("q.clear").GetValue <bool>())
                {
                    Q.Cast();
                }
                if (W.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                    ((AIMinionClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsTurtle() &&
                    Config.Item("w.clear").GetValue <bool>() && ObjectManager.Player.Buffs.Any(buff => buff.Name != "UdyrPhoenixStance"))
                {
                    W.Cast();
                }
                if (E.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                    ((AIMinionClient)args.Target).IsValidTarget(Udyr.AttackRange) && !Udyr.IsBear() &&
                    Config.Item("e.clear").GetValue <bool>())
                {
                    E.Cast();
                }
                if (R.IsReady() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear &&
                    ((AIMinionClient)args.Target).IsValidTarget(Udyr.AttackRange) &&
                    ObjectManager.Player.Buffs.Any(buff => buff.Name != "UdyrPhoenixStance") && !Udyr.IsPhoenix() &&
                    Config.Item("r.clear").GetValue <bool>())
                {
                    R.Cast();
                }
            }
        }
Exemple #8
0
        private static void AIHeroClient_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            var targetz   = TargetSelector.GetTarget(W.Range);
            var useW      = ComboMenu["WLowHp"].GetValue <MenuBool>().Enabled;
            var MinHealth = ComboMenu["minHealth"].GetValue <MenuSlider>().Value;

            if (useW && !_Player.IsRecalling() && targetz.IsValidTarget(425))
            {
                if (Player.Instance.HealthPercent <= MinHealth)
                {
                    W.Cast();
                }
            }

            if ((args.Slot == SpellSlot.Q || args.Slot == SpellSlot.W || args.Slot == SpellSlot.E ||
                 args.Slot == SpellSlot.R) && sender.IsEnemy && Q.IsReady() && _Player.Distance(sender) <= args.SData.CastRange && Orbwalker.ActiveMode.HasFlag(OrbwalkerMode.Combo))
            {
                if (args.SData.TargettingType == SpellDataTargetType.Unit || args.SData.TargettingType == SpellDataTargetType.SelfAndUnit || args.SData.TargettingType == SpellDataTargetType.Self)
                {
                    if ((args.Target.NetworkId == Player.Instance.NetworkId && args.Time < 1.5 ||
                         args.End.Distance(Player.Instance.Position) <= Player.Instance.BoundingRadius * 3) &&
                        Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        QEvade();
                    }
                }
                else if (args.SData.TargettingType == SpellDataTargetType.LocationAoe)
                {
                    var castvector =
                        new Geometry.Circle(args.End, args.SData.CastRadius).IsInside(
                            Player.Instance.Position);

                    if (castvector && Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        QEvade();
                    }
                }

                else if (args.SData.TargettingType == SpellDataTargetType.Cone)
                {
                    var castvector =
                        new Geometry.Arc(args.Start, args.End, args.SData.CastConeAngle, args.SData.CastRange)
                        .IsInside(Player.Instance.Position);

                    if (castvector && Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        QEvade();
                    }
                }

                else if (args.SData.TargettingType == SpellDataTargetType.SelfAoe)
                {
                    var castvector =
                        new Geometry.Circle(sender.Position, args.SData.CastRadius).IsInside(
                            Player.Instance.Position);

                    if (castvector && Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        QEvade();
                    }
                }
                else
                {
                    var castvector =
                        new Geometry.Rectangle(args.Start, args.End, args.SData.LineWidth).IsInside(
                            Player.Instance.Position);

                    if (castvector && Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        QEvade();
                    }
                }

                if (args.SData.Name == "yasuoq3w")
                {
                    QEvade();
                }

                if (args.SData.Name == "ZedR")
                {
                    if (Q.IsReady())
                    {
                        QEvade();
                    }
                    else
                    {
                        if (W.IsReady())
                        {
                            W.Cast();
                        }
                    }
                }

                if (args.SData.Name == "KarthusFallenOne")
                {
                    QEvade();
                }

                if (args.SData.Name == "SoulShackles")
                {
                    QEvade();
                }

                if (args.SData.Name == "AbsoluteZero")
                {
                    QEvade();
                }

                if (args.SData.Name == "NocturneUnspeakableHorror")
                {
                    QEvade();
                }
            }
        }
Exemple #9
0
        private static void OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs Args)
        {
            if (ObjectManager.Player.IsDead || !Menu["EnabledDodge"].GetValue <MenuBool>().Enabled ||
                ObjectManager.Player.HealthPercent > Menu["EnabledHP"].GetValue <MenuSlider>().Value)
            {
                return;
            }

            if (ObjectManager.Player.CharacterName == "Sivir" &&
                ObjectManager.Player.Spellbook.CanUseSpell(SpellSlot.E) != SpellState.Ready)
            {
                return;
            }

            if (ObjectManager.Player.CharacterName == "Xayah" &&
                ObjectManager.Player.Spellbook.CanUseSpell(SpellSlot.R) != SpellState.Ready)
            {
                return;
            }

            var target = sender as AIHeroClient;

            if (target == null || target.Team == ObjectManager.Player.Team || !target.IsValid ||
                Args.Target == null || string.IsNullOrEmpty(Args.SData.Name))
            {
                return;
            }

            var spells =
                MyBlockSpellDataBase.Spells.Where(
                    x =>
                    string.Equals(x.CharacterName, target.CharacterName, StringComparison.CurrentCultureIgnoreCase) &&
                    Menu["Block" + target.CharacterName.ToLower()]["BlockSpell" + x.SpellSlot.ToString()] != null &&
                    Menu["Block" + target.CharacterName.ToLower()]["BlockSpell" + x.SpellSlot.ToString()].GetValue <MenuBool>().Enabled).ToList();

            if (spells.Any())
            {
                foreach (var x in spells)
                {
                    switch (x.CharacterName)
                    {
                    case "Alistar":
                        if (x.SpellSlot == SpellSlot.Q && Args.Slot == x.SpellSlot)
                        {
                            if (target.Distance(ObjectManager.Player) <= 350)
                            {
                                CastSpell("Alistar", x.SpellSlot);
                            }
                        }

                        if (x.SpellSlot == SpellSlot.W && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Alistar", x.SpellSlot);
                            }
                        }
                        break;

                    case "Blitzcrank":
                        if (x.SpellSlot == SpellSlot.E && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe && Args.SData.Name == "PowerFistAttack")
                            {
                                CastSpell("Blitzcrank", x.SpellSlot);
                            }
                        }
                        break;

                    case "Chogath":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Chogath", x.SpellSlot);
                            }
                        }
                        break;

                    case "Darius":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Darius", x.SpellSlot);
                            }
                        }
                        break;

                    case "Elise":
                        if (x.SpellSlot == SpellSlot.Q && Args.SData.Name == "EliseHumanQ" && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Elise", x.SpellSlot);
                            }
                        }
                        break;

                    case "Fiddlesticks":
                        if (x.SpellSlot == SpellSlot.Q && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Fiddlesticks", x.SpellSlot);
                            }
                        }
                        break;

                    case "Gangplank":
                        if (x.SpellSlot == SpellSlot.Q && Args.SData.Name == "Parley" && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Gangplank", x.SpellSlot);
                            }
                        }
                        break;

                    case "Garen":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Garen", x.SpellSlot);
                            }
                        }
                        break;

                    case "Hecarim":
                        if (x.SpellSlot == SpellSlot.E && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe && Args.SData.Name == "HecarimRampAttack")
                            {
                                CastSpell("Hecarim", x.SpellSlot);
                            }
                        }
                        break;

                    case "Irelia":
                        if (x.SpellSlot == SpellSlot.E && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Irelia", x.SpellSlot);
                            }
                        }
                        break;

                    case "Jarvan":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Jarvan", x.SpellSlot);
                            }
                        }
                        break;

                    case "Kalista":
                        if (x.SpellSlot == SpellSlot.E && Args.Slot == x.SpellSlot)
                        {
                            if (ObjectManager.Player.HasBuff("kalistaexpungemarker") &&
                                ObjectManager.Player.Distance(target) <= 950f)
                            {
                                CastSpell("Kalista", x.SpellSlot);
                            }
                        }
                        break;

                    case "Kayle":
                        if (x.SpellSlot == SpellSlot.Q && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Kayle", x.SpellSlot);
                            }
                        }
                        break;

                    case "Leesin":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Leesin", x.SpellSlot);
                            }
                        }
                        break;

                    case "Lissandra":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Lissandra", x.SpellSlot);
                            }
                        }
                        break;

                    case "Morgana":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Morgana", x.SpellSlot);
                            }
                        }
                        break;

                    case "Malzahar":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Mordekaiser", x.SpellSlot);
                            }
                        }
                        break;

                    case "Mordekaiser":
                        if (x.SpellSlot == SpellSlot.Q && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe && Args.SData.Name == "MordekaiserQAttack2")
                            {
                                CastSpell("Mordekaiser", x.SpellSlot);
                            }
                        }

                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Mordekaiser", x.SpellSlot);
                            }
                        }
                        break;

                    case "Nasus":
                        if (x.SpellSlot == SpellSlot.W && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Nasus", x.SpellSlot);
                            }
                        }
                        break;

                    case "Olaf":
                        if (x.SpellSlot == SpellSlot.E && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Olaf", x.SpellSlot);
                            }
                        }
                        break;

                    case "Pantheon":
                        if (x.SpellSlot == SpellSlot.Q && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Pantheon", x.SpellSlot);
                            }
                        }

                        if (x.SpellSlot == SpellSlot.W && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Pantheon", x.SpellSlot);
                            }
                        }
                        break;

                    case "Renekton":
                        if (x.SpellSlot == SpellSlot.W && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Renekton", x.SpellSlot);
                            }
                        }
                        break;

                    case "Rengar":
                        if (x.SpellSlot == SpellSlot.Q && Args.Slot == x.SpellSlot)
                        {
                            if (ObjectManager.Player.Distance(target) <= 300 && Args.Target.IsMe)
                            {
                                CastSpell("Rengar", x.SpellSlot);
                            }
                        }
                        break;

                    case "Riven":
                        if (x.SpellSlot == SpellSlot.W && Args.Slot == x.SpellSlot)
                        {
                            if (ObjectManager.Player.Position.Distance(target.Position) <=
                                125f + ObjectManager.Player.BoundingRadius + target.BoundingRadius)
                            {
                                CastSpell("Riven", x.SpellSlot);
                            }
                        }
                        break;

                    case "Ryze":
                        if (x.SpellSlot == SpellSlot.W && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Ryze", x.SpellSlot);
                            }
                        }
                        break;

                    case "Singed":
                        if (x.SpellSlot == SpellSlot.E && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Singed", x.SpellSlot);
                            }
                        }
                        break;

                    case "Syndra":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe && Args.SData.Name == "SyndraR")
                            {
                                CastSpell("Syndra", x.SpellSlot);
                            }
                        }
                        break;

                    case "TahmKench":
                        if (x.SpellSlot == SpellSlot.W && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("TahmKench", x.SpellSlot);
                            }
                        }
                        break;

                    case "Tristana":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe && Args.SData.Name == "TristanaR")
                            {
                                CastSpell("Tristana", x.SpellSlot);
                            }
                        }
                        break;

                    case "Trundle":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Trundle", x.SpellSlot);
                            }
                        }
                        break;

                    case "TwistedFate":
                        if (Args.SData.Name.Contains("attack") && Args.Target.IsMe &&
                            target.Buffs.Any(
                                buff =>
                                buff.Name == "BlueCardAttack" || buff.Name == "GoldCardAttack" ||
                                buff.Name == "RedCardAttack"))
                        {
                            CastSpell("TwistedFate", x.SpellSlot);
                        }
                        break;

                    case "Veigar":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe && Args.SData.Name == "VeigarPrimordialBurst")
                            {
                                CastSpell("Veigar", x.SpellSlot);
                            }
                        }
                        break;

                    case "Vi":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Vi", x.SpellSlot);
                            }
                        }
                        break;

                    case "Volibear":
                        if (x.SpellSlot == SpellSlot.Q && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Volibear", x.SpellSlot);
                            }
                        }

                        if (x.SpellSlot == SpellSlot.W && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Volibear", x.SpellSlot);
                            }
                        }
                        break;

                    case "Warwick":
                        if (x.SpellSlot == SpellSlot.R && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe)
                            {
                                CastSpell("Warwick", x.SpellSlot);
                            }
                        }
                        break;

                    case "XinZhao":
                        if (x.SpellSlot == SpellSlot.Q && Args.Slot == x.SpellSlot)
                        {
                            if (Args.Target.IsMe && Args.SData.Name == "XenZhaoThrust3")
                            {
                                CastSpell("XinZhao", x.SpellSlot);
                            }
                        }
                        break;
                    }
                }
            }
        }
 private static bool SpellIsGapcloser(AIBaseClientProcessSpellCastEventArgs args)
 {
     return(Spells.Any(spell => spell.SpellName == args.SData.Name.ToLower()));
 }
Exemple #11
0
        private static void OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs Args)
        {
            if (ObjectManager.Player.IsDead)
            {
                return;
            }
            var ally = Args.Target as AIHeroClient;

            if (ally != null)
            {
                if (EvadeTargetManager.AttackMenu["Brian.EvadeTargetMenu.Turret"])
                {
                    if (ally.IsAlly)
                    {
                        if (ObjectManager.Player.CharacterName == "Janna" ||
                            ObjectManager.Player.CharacterName == "Rakan" || ObjectManager.Player.CharacterName == "Ivern" ||
                            ObjectManager.Player.CharacterName == "Lulu" ||
                            ObjectManager.Player.CharacterName == "Karma")

                        {
                            if (sender.Name.ToLower().Contains("tower") && Args.Target.IsAlly &&
                                Args.Target.Distance(ObjectManager.Player) <
                                Common.Champion.E.Range)
                            {
                                if (EvadeTargetManager.Menu["whitelist"][
                                        ally.CharacterName.ToLower()]
                                    )
                                {
                                    Common.Champion.E.CastOnUnit(Args.Target);
                                }
                            }
                        }
                        if (ObjectManager.Player.CharacterName == "Lux" || ObjectManager.Player.CharacterName == "Sona" ||
                            ObjectManager.Player.CharacterName == "Taric")

                        {
                            if (sender.Name.ToLower().Contains("tower") && Args.Target.IsAlly &&
                                Args.Target.Distance(ObjectManager.Player) <
                                Common.Champion.W.Range)
                            {
                                if (EvadeTargetManager.Menu["whitelist"][
                                        ally.CharacterName.ToLower()]
                                    )
                                {
                                    Common.Champion.W.CastOnUnit(Args.Target);
                                }
                            }
                        }
                    }
                }
            }

            var target = sender as AIHeroClient;

            if (ally != null)
            {
                if (!sender.IsMinion)
                {
                    if (ally.IsAlly)
                    {
                        if (Args.SData.Name.Contains("BasicAttack") &&
                            EvadeTargetManager.AttackMenu["Brian.EvadeTargetMenu.BAttack"] &&
                            ally.HealthPercent <=
                            EvadeTargetManager.AttackMenu["Brian.EvadeTargetMenu.BAttackHpU"]
                            .GetValue <MenuSlider>())
                        {
                            if (ObjectManager.Player.CharacterName == "Janna" ||
                                ObjectManager.Player.CharacterName == "Rakan" ||
                                ObjectManager.Player.CharacterName == "Lulu" || ObjectManager.Player.CharacterName == "Ivern" ||
                                ObjectManager.Player.CharacterName == "Karma")

                            {
                                if (Args.Target.IsAlly &&
                                    Args.Target.Distance(ObjectManager.Player) <
                                    Common.Champion.E.Range)
                                {
                                    if (EvadeTargetManager.Menu["whitelist"][
                                            ally.CharacterName.ToLower()]
                                        )
                                    {
                                        Common.Champion.E.CastOnUnit(Args.Target);
                                    }
                                }
                            }
                            if (ObjectManager.Player.CharacterName == "Lux" ||
                                ObjectManager.Player.CharacterName == "Sona" ||
                                ObjectManager.Player.CharacterName == "Taric")

                            {
                                if (Args.Target.IsAlly &&
                                    Args.Target.Distance(ObjectManager.Player) <
                                    Common.Champion.W.Range)
                                {
                                    if (EvadeTargetManager.Menu["whitelist"][
                                            ally.CharacterName.ToLower()]
                                        )
                                    {
                                        Common.Champion.W.CastOnUnit(Args.Target);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (ally != null)
            {
                if (sender.IsMinion)
                {
                    if (ally.IsAlly)
                    {
                        if (ObjectManager.Player.CharacterName == "Janna" ||
                            ObjectManager.Player.CharacterName == "Rakan" ||
                            ObjectManager.Player.CharacterName == "Lulu" || ObjectManager.Player.CharacterName == "Ivern" ||
                            ObjectManager.Player.CharacterName == "Karma")

                        {
                            if (Args.Target.IsAlly && Args.Target.Distance(Common.Champion.Player) <
                                Common.Champion.E.Range)
                            {
                                if (
                                    EvadeTargetManager
                                    .AttackMenu["Brian.EvadeTargetMenu.Minion"] && ally.HealthPercent <=
                                    EvadeTargetManager
                                    .AttackMenu["Brian.EvadeTargetMenu.HP"]
                                    .GetValue <MenuSlider>())
                                {
                                    if (EvadeTargetManager.Menu["whitelist"][
                                            ally.CharacterName.ToLower()]
                                        )
                                    {
                                        Common.Champion.E.CastOnUnit(ally);
                                    }
                                }
                            }
                        }
                        if (ObjectManager.Player.CharacterName == "Lux" ||
                            ObjectManager.Player.CharacterName == "Sona" ||
                            ObjectManager.Player.CharacterName == "Taric")

                        {
                            if (Args.Target.IsAlly && Args.Target.Distance(Common.Champion.Player) <
                                Common.Champion.W.Range)
                            {
                                if (
                                    EvadeTargetManager
                                    .AttackMenu["Brian.EvadeTargetMenu.Minion"] && ally.HealthPercent <=
                                    EvadeTargetManager
                                    .AttackMenu["Brian.EvadeTargetMenu.HP"]
                                    .GetValue <MenuSlider>())
                                {
                                    if (EvadeTargetManager.Menu["whitelist"][
                                            ally.CharacterName.ToLower()]
                                        )
                                    {
                                        Common.Champion.W.CastOnUnit(ally);
                                    }
                                }
                            }
                        }
                    }
                }
                if (Args.SData.Name.Contains("crit") &&
                    EvadeTargetManager.AttackMenu["Brian.EvadeTargetMenu.CAttack"] &&
                    ally.HealthPercent <= EvadeTargetManager
                    .AttackMenu["Brian.EvadeTargetMenu.CAttackHpU"].GetValue <MenuSlider>())
                {
                    // if (ally.IsHero)
                    {
                        if (ObjectManager.Player.CharacterName == "Janna" ||
                            ObjectManager.Player.CharacterName == "Rakan" ||
                            ObjectManager.Player.CharacterName == "Lulu" || ObjectManager.Player.CharacterName == "Ivern" ||
                            ObjectManager.Player.CharacterName == "Karma")

                        {
                            if (Args.Target.IsAlly && Args.Target.Distance(Common.Champion.Player) <
                                Common.Champion.E.Range)
                            {
                                if (EvadeTargetManager.Menu["whitelist"][
                                        ally.CharacterName.ToLower()]
                                    )
                                {
                                    Common.Champion.E.CastOnUnit(ally);
                                }
                            }
                        }
                        if (ObjectManager.Player.CharacterName == "Lux" ||
                            ObjectManager.Player.CharacterName == "Sona" ||
                            ObjectManager.Player.CharacterName == "Taric")

                        {
                            if (Args.Target.IsAlly && Args.Target.Distance(Common.Champion.Player) <
                                Common.Champion.W.Range)
                            {
                                if (EvadeTargetManager.Menu["whitelist"][
                                        ally.CharacterName.ToLower()]
                                    )
                                {
                                    Common.Champion.W.CastOnUnit(ally);
                                }
                            }
                        }
                    }
                }
            }

            if (target == null || target.Team == ObjectManager.Player.Team || !target.IsValid ||
                Args.Target == null || string.IsNullOrEmpty(Args.SData.Name) ||
                Args.SData.Name.Contains("BasicAttack"))
            {
                return;
            }

            var spellData =
                EvadeTargetManager.Spells.FirstOrDefault(
                    i =>
                    i.SpellNames.Contains(Args.SData.Name.ToLower()));

            if (spellData != null)
            {
                return;
            }
            if (Args.SData.Name == "CaitlynAceintheHole")
            {
                return;
            }
            if (ObjectManager.Player.CharacterName == "Janna" ||
                ObjectManager.Player.CharacterName == "Rakan" ||
                ObjectManager.Player.CharacterName == "Lulu" || ObjectManager.Player.CharacterName == "Ivern" ||
                ObjectManager.Player.CharacterName == "Karma")

            {
                if (Args.Target.Distance(Common.Champion.Player) < Common.Champion.E.Range)
                {
                    if (ally != null && ally.IsAlly)
                    {
                        if (EvadeTargetManager.Menu["whitelist"][
                                ally.CharacterName.ToLower()])
                        {
                            Common.Champion.E.CastOnUnit(Args.Target);
                        }
                    }
                }
            }
            if (ObjectManager.Player.CharacterName == "Lux" ||
                ObjectManager.Player.CharacterName == "Sona" ||
                ObjectManager.Player.CharacterName == "Taric")

            {
                if (Args.Target.Distance(Common.Champion.Player) < Common.Champion.W.Range)
                {
                    if (ally != null && ally.IsAlly)
                    {
                        if (EvadeTargetManager.Menu["whitelist"][
                                ally.CharacterName.ToLower()])
                        {
                            Common.Champion.W.CastOnUnit(Args.Target);
                        }
                    }
                }
            }
        }
Exemple #12
0
 private static void AIBaseClient_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
 {
     //if (sender.IsMe && args.Slot == SpellSlot.Q)
     //Game.Print(args.TotalTime);
 }
Exemple #13
0
 public static void Obj_AI_Hero_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
 {
     if (!sender.IsMe && sender.IsEnemy && sender is AIMinionClient && args.Target.IsMe)
     {
     }
 }
 public static void OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
 {
 }
Exemple #15
0
        // Jungle, Combo etc.
        public static void OnDoCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                if (args.Target is AIMinionClient)
                {
                    var minions = MinionManager.GetMinions(Player.AttackRange + 380);

                    if (minions == null)
                    {
                        return;
                    }

                    foreach (var m in minions)
                    {
                        if (!Spells.Q.IsReady() || !MenuConfig.LaneQ || m.UnderTurret())
                        {
                            continue;
                        }

                        ForceItem();
                        ForceCastQ(m);
                    }
                }

                var objAiTurret = args.Target as AITurretClient;
                if (objAiTurret != null)
                {
                    if (objAiTurret.IsValid && Spells.Q.IsReady() && MenuConfig.LaneQ)
                    {
                        ForceCastQ(objAiTurret);
                    }
                }

                var mobs = MinionManager.GetMinions(Player.Position, 600f, MinionTypes.All, MinionTeam.Neutral);

                if (mobs == null)
                {
                    return;
                }

                foreach (var m in mobs)
                {
                    if (!m.IsValid)
                    {
                        return;
                    }

                    if (Spells.Q.IsReady() && MenuConfig.JnglQ)
                    {
                        ForceItem();
                        ForceCastQ(m);
                    }

                    else if (!Spells.W.IsReady() || !MenuConfig.JnglW)
                    {
                        return;
                    }

                    ForceItem();
                    Spells.W.Cast(m);
                }
            }

            if (!Spells.Q.IsReady())
            {
                return;
            }

            var a = HeroManager.Enemies.Where(x => x.IsValidTarget(Player.AttackRange + 360));

            var targets = a as AIHeroClient[] ?? a.ToArray();

            foreach (var target in targets)
            {
                if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
                {
                    ForceItem();
                    ForceCastQ(target);
                }

                if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed)
                {
                    if (Qstack == 2)
                    {
                        ForceItem();
                        Utility.DelayAction.Add(1, () => ForceCastQ(target));
                    }
                }

                if (Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Burst)
                {
                    return;
                }

                if (!InWRange(target))
                {
                    return;
                }

                if (Spells.W.IsReady())
                {
                    Spells.W.Cast(target);
                }

                ForceItem();
                ForceCastQ(target);

                if (Spells.R.IsReady() && Spells.R.Instance.Name == IsSecondR)
                {
                    Spells.R.Cast(target.Position);
                }
            }
        }
        public static void OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (!Program.E.IsReady() || !(sender is AIHeroClient))
            {
                return;
            }

            var casterName       = sender.CharacterName;
            var slot             = args.Slot;
            var nameToLower      = casterName.ToLower();
            var spellName        = args.SData.Name;
            var spellNameToLower = spellName.ToLower();

            if (args.Target != null && args.Target.IsMe || ObjectManager.Player.Position.Distance(args.End) < 350)
            {
                if (spellName == "RenektonDice")
                {
                    Program.E.Cast(sender);
                }
                if ((casterName == "Leona" || casterName == "Graves") &&
                    slot == SpellSlot.E)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Alistar" && slot == SpellSlot.W)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Camille" && slot == SpellSlot.E && spellName != "CamilleE")
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Diana" && slot == SpellSlot.R)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Shyvana" && slot == SpellSlot.R)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Akali" && slot == SpellSlot.R && args.SData.CooldownTime > 2.5)
                {
                    Program.E.Cast(sender);
                }
                if (spellName.ToLower().Contains("flash") && sender.IsMelee)
                {
                    Program.E.Cast(sender);
                }
                if (nameToLower.Contains("zhao") || nameToLower.Contains("zix") && slot == SpellSlot.E)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Pantheon" && slot == SpellSlot.W)
                {
                    Program.E.Cast(sender);
                }
                if ((casterName == "Aatrox" || casterName == "Fiora" ||
                     casterName == "Fizz" || casterName == "Irelia" ||
                     casterName == "Jax") && slot == SpellSlot.Q)
                {
                    Program.E.Cast(sender);
                }
                if ((casterName == "Ekko" || casterName == "Shen" ||
                     casterName == "Talon" || casterName == "Tryndamere" ||
                     casterName == "Zac") &&
                    slot == SpellSlot.E)
                {
                    Program.E.Cast(sender);
                }
                if (spellNameToLower == "elisespiderqcast" || spellNameToLower == "jaycetotheskies" ||
                    spellNameToLower == "riftwalk" || spellNameToLower == "rivenfeint" ||
                    spellNameToLower == "sejuaniarcticassault")
                {
                    Program.E.Cast(sender);
                }
                if (
                    casterName == "Yasuo" && args.Target != null && args.Target.IsMe && slot ==
                    SpellSlot.E)
                {
                    Program.E.Cast(sender);
                }
            }

            if (sender.Distance(ObjectManager.Player) < 550)
            {
                //INTERRUPTER
                if ((casterName == "Katarina" || casterName == "Caitlyn" ||
                     casterName == "Karthus" || casterName == "FiddleSticks" ||
                     casterName == "Galio" || casterName == "Jhin" ||
                     casterName == "Malzahar" || casterName == "MissFortune" ||
                     casterName == "Nunu" || casterName == "Pantheon" ||
                     casterName == "Sion" || casterName == "TwistedFate" ||
                     casterName == "TahmKench" || casterName == "Urgot" ||
                     casterName == "Velkoz" || casterName == "Warwick") &&
                    slot == SpellSlot.R)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "MasterYi" && slot == SpellSlot.W)
                {
                    for (var i = 40; i < 425; i += 125)
                    {
                        var flags = NavMesh.GetCollisionFlags(sender.Position.ToVector2()
                                                              .Extend(Heroes.Player.Position.ToVector2(), -i).ToVector3());
                        if (flags != null && flags.HasFlag(CollisionFlags.Wall) ||
                            flags.HasFlag(CollisionFlags.Building))
                        {
                            Program.E.Cast(sender);
                            return;
                        }
                    }
                }

                if (casterName == "Vi" && slot == SpellSlot.Q)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "FiddleSticks" && slot == SpellSlot.W)
                {
                    Program.E.Cast(sender);
                }
                if (casterName == "Vladimir" && slot == SpellSlot.E && sender.IsFacing(ObjectManager.Player))
                {
                    Program.E.Cast(sender);
                }
            }
        }
 internal virtual void OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
 {
 }
        private static void AIHeroClientOnOnDoCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (sender == null || !sender.IsValid)
            {
                return;
            }

            if (Config.PrintSpellData && sender is AIHeroClient)
            {
                Chat.Print(Utils.TickCount + " ProcessSpellCast: " + args.SData.Name);
                Console.WriteLine(Utils.TickCount + " ProcessSpellCast: " + args.SData.Name);
            }

            if (sender.Team == ObjectManager.Player.Team && !Config.TestOnAllies)
            {
                return;
            }

            if (args.SData.Name == "DravenRDoublecast")
            {
                Program.DetectedSkillshots.RemoveAll(
                    s => s.Unit.NetworkId == sender.NetworkId && s.SpellData.SpellName == "DravenRCast");
            }

            // Get the skillshot data.
            var spellData = SpellDatabase.GetByName(args.SData.Name);

            // Skillshot not added in the database.
            if (spellData == null)
            {
                return;
            }

            if (spellData.SpellName == "FlashFrost" && args.Target != null && args.Target.NetworkId == sender.NetworkId)
            {
                return;
            }

            if (spellData.SpellName == "WarwickR")
            {
                spellData.Range = (int)Math.Ceiling(2.5 * sender.MoveSpeed);
            }

            var startPos = new Vector2();

            if (spellData.FromObject != "")
            {
                foreach (var o in ObjectManager.Get <GameObject>())
                {
                    if (o.Name.Contains(spellData.FromObject) || new Regex(spellData.FromObject).IsMatch(o.Name))
                    {
                        startPos = o.Position.ToVector2();
                    }
                }
            }
            else
            {
                startPos = sender.Position.ToVector2();
            }

            if (spellData.FromObjects != null && spellData.FromObjects.Length > 0)
            {
                foreach (var obj in ObjectManager.Get <GameObject>())
                {
                    if ((obj.IsEnemy || Config.TestOnAllies) && spellData.FromObjects.Any(f => new Regex(f).IsMatch(obj.Name)))
                    {
                        var start = obj.Position.ToVector2();
                        var end   = start + spellData.Range * (args.To.ToVector2() - obj.Position.ToVector2()).Normalized();
                        TriggerOnDetectSkillshot(
                            DetectionType.ProcessSpell, spellData, Utils.TickCount - Game.Ping / 2, start, end, sender);
                    }
                }
            }

            if (!startPos.IsValid())
            {
                return;
            }

            var endPos = args.To.ToVector2();

            // Calculate the real end point.
            var direction = (endPos - startPos).Normalized();

            if (startPos.Distance(endPos) > spellData.Range || spellData.FixedRange)
            {
                endPos = startPos + direction * spellData.Range;
            }

            if (spellData.ExtraRange != -1)
            {
                endPos = endPos + Math.Min(spellData.ExtraRange, spellData.Range - endPos.Distance(startPos)) * direction;
            }

            // Trigger the skillshot detection callbacks.
            TriggerOnDetectSkillshot(DetectionType.ProcessSpell, spellData, Utils.TickCount - Game.Ping / 2, startPos, endPos, sender);
        }
        private static void AIHeroClient_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if ((args.Slot == SpellSlot.Q || args.Slot == SpellSlot.W || args.Slot == SpellSlot.E ||
                 args.Slot == SpellSlot.R) && sender.IsEnemy && W.IsReady() && _Player.Distance(sender) <= args.SData.CastRange && Orbwalker.ActiveMode == OrbwalkerMode.Combo)
            {
                if (args.SData.TargetingType == SpellDataTargetType.Unit || args.SData.TargetingType == SpellDataTargetType.SelfAndUnit || args.SData.TargetingType == SpellDataTargetType.Self)
                {
                    if ((args.Target.NetworkId == ObjectManager.Player.NetworkId && args.Time < 1.5 ||
                         args.End.Distance(ObjectManager.Player.Position) <= ObjectManager.Player.BoundingRadius * 3) &&
                        Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        W.Cast();
                    }
                }
                else if (args.SData.TargetingType == SpellDataTargetType.LocationAoe)
                {
                    var castvector =
                        new Geometry.Circle(args.End, args.SData.CastRadius).IsInside(
                            ObjectManager.Player.Position);

                    if (castvector && Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        W.Cast();
                    }
                }

                else if (args.SData.TargetingType == SpellDataTargetType.Cone)
                {
                    var castvector =
                        new Geometry.Arc(args.Start, args.End, args.SData.CastConeAngle, args.SData.CastRange)
                        .IsInside(ObjectManager.Player.Position);

                    if (castvector && Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        W.Cast();
                    }
                }

                else if (args.SData.TargetingType == SpellDataTargetType.SelfAoe)
                {
                    var castvector =
                        new Geometry.Circle(sender.Position, args.SData.CastRadius).IsInside(
                            ObjectManager.Player.Position);

                    if (castvector && Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        W.Cast();
                    }
                }
                else
                {
                    var castvector =
                        new Geometry.Rectangle(args.Start, args.End, args.SData.LineWidth).IsInside(
                            ObjectManager.Player.Position);

                    if (castvector && Evade[args.SData.Name].GetValue <MenuBool>().Enabled)
                    {
                        W.Cast();
                    }
                }

                if (args.SData.Name == "yasuoq3w")
                {
                    W.Cast();
                }

                if (args.SData.Name == "ZedR")
                {
                    W.Cast();
                }

                if (args.SData.Name == "KarthusFallenOne")
                {
                    W.Cast();
                }

                if (args.SData.Name == "SoulShackles")
                {
                    W.Cast();
                }

                if (args.SData.Name == "AbsoluteZero")
                {
                    W.Cast();
                }

                if (args.SData.Name == "NocturneUnspeakableHorror")
                {
                    W.Cast();
                }
            }
        }
 private static void Obj_AI_Base_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
 {
     if (BadaoMainVariables.Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.LaneClear)
     {
         return;
     }
     if (Player.ManaPercent < BadaoGravesVariables.ManaJungle.GetValue <Slider>().Value)
     {
         return;
     }
     if (!sender.IsMe)
     {
         return;
     }
     if (args.SData.IsAutoAttack() && args.Target != null && args.Target.Team == GameObjectTeam.Neutral)
     {
         int delay2 = 200;
         Utility.DelayAction.Add(Game.Ping - Game.Ping, () =>
         {
             if (BadaoMainVariables.E.IsReady() && BadaoGravesVariables.JungleE.GetValue <bool>())
             {
                 var position = Player.Position.To2D().Extend(Game.CursorPosRaw.To2D(), 250 /*BadaoMainVariables.E.Range*/);
                 if (args.Target.Position.To2D().Distance(position) <= -250 + Player.AttackRange + Player.BoundingRadius
                     /*&& !Utility.UnderTurret(position.To3D(), true)*/)
                 {
                     BadaoMainVariables.E.Cast(position);
                     //for (int i = 0; i < delay2; i = i + 5)
                     //{
                     //    Game.SendEmote(Emote.Dance); Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
                     //    Utility.DelayAction.Add(i, () => {
                     //        Game.SendEmote(Emote.Dance);
                     //        Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
                     //        Player.IssueOrder(GameObjectOrder.AttackUnit, args.Target);
                     //    });
                     //}
                 }
                 else
                 {
                     var points = Geometry.CircleCircleIntersection(Player.Position.To2D(), args.Target.Position.To2D(), 425,
                                                                    -250 + Player.AttackRange + Player.BoundingRadius);
                     var pos = points.Where(x => !NavMesh.GetCollisionFlags(x.X, x.Y).HasFlag(CollisionFlags.Wall) &&
                                            !NavMesh.GetCollisionFlags(x.X, x.Y).HasFlag(CollisionFlags.Building) /* && !Utility.UnderTurret(x.To3D(), true)*/)
                               .OrderBy(x => x.Distance(Game.CursorPosRaw) /*x.To3D().CountEnemiesInRange(1000)*/).FirstOrDefault();
                     if (pos != null)
                     {
                         BadaoMainVariables.E.Cast(pos);
                         for (int i = 0; i < delay2; i = i + 5)
                         {
                             Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPosRaw);
                             Utility.DelayAction.Add(i, () => {
                                 Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPosRaw);
                                 Player.IssueOrder(GameObjectOrder.AttackUnit, args.Target);
                             });
                         }
                     }
                 }
             }
         }
                                 );
     }
 }
 private static Gapcloser GetGapcloser(AIBaseClientProcessSpellCastEventArgs args)
 {
     return(Spells.SingleOrDefault(spell => spell.SpellName == args.SData.Name.ToLowerInvariant()));
 }
Exemple #22
0
 private void Game_ProcessSpell(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
 {
     if (enabled)
     {
         try
         {
             AIHeroClient target = args.Target as AIHeroClient;
             if (target != null && target.Team != sender.Team)
             {
                 if (sender.IsValid && !sender.IsDead)
                 {
                     var data =
                         IncomingDamagesAlly.Concat(IncomingDamagesEnemy)
                         .FirstOrDefault(i => i.Hero.NetworkId == target.NetworkId);
                     if (data != null)
                     {
                         var missileSpeed = (sender.Distance(target) / args.SData.MissileSpeed) +
                                            args.SData.SpellCastTime;
                         missileSpeed = missileSpeed > 1f ? 0.8f : missileSpeed;
                         if (Orbwalker.IsAutoAttack(args.SData.Name))
                         {
                             var dmg =
                                 (float)
                                 (sender.GetAutoAttackDamage(target) + ItemHandler.GetSheenDmg(target));
                             if (args.SData.Name.ToLower().Contains("crit"))
                             {
                                 dmg = dmg * 2;
                             }
                             data.Damages.Add(
                                 new Dmg(target, dmg, missileSpeed, !sender.Name.ToLower().Contains("turret")));
                         }
                         else
                         {
                             var hero = sender as AIHeroClient;
                             if (hero == null)
                             {
                                 return;
                             }
                             if (!DrawHelper.damagePredEnabled(hero.CharacterName, args.Slot))
                             {
                                 return;
                             }
                             if (
                                 !CombatHelper.BuffsList.Any(
                                     b => args.Slot == b.Slot && hero.CharacterName == b.CharacterName))
                             {
                                 data.Damages.Add(
                                     new Dmg(
                                         target,
                                         (float)
                                         Damage.GetSpellDamage(hero, (AIBaseClient)args.Target, args.Slot),
                                         missileSpeed, false,
                                         SpellDatabase.CcList.Any(
                                             cc =>
                                             cc.Slot == args.Slot &&
                                             cc.Champion.CharacterName == hero.CharacterName)));
                             }
                         }
                     }
                 }
             }
         }
         catch (Exception) { }
     }
 }
        public static void OnProcessSpellcast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (args.Target == null)
            {
                return;
            }

            #region ward brush after condemn

            /*if (sender.IsMe && args.SData.Name.ToLower().Contains("condemn") && args.Target.IsValid<AIHeroClient>())
             * {
             *  var target = (AIHeroClient)args.Target;
             *  if (Program.ComboMenu.Item("EQ").GetValue<bool>() && target.IsVisible &&
             *      !target.HasBuffOfType(BuffType.Stun) && Program.Q.IsReady()) //#TODO: fix
             *  {
             *      var tumblePos = target.GetTumblePos();
             *      Tumble.Cast(tumblePos);
             *  }
             *
             *  if (NavMesh.IsWallOfGrass(args.End, 100))
             *  {
             *     var blueTrinket = ItemId.Farsight_Alteration;
             *      if (Items.HasItem((int)ItemId.Farsight_Alteration, Heroes.Player) &&
             *          Items.CanUseItem((int)ItemId.Farsight_Alteration))
             *          blueTrinket = ItemId.Farsight_Alteration;
             *
             *      var yellowTrinket = ItemId.Warding_Totem;
             *      if (Items.HasItem((int)ItemId.Greater_Stealth_Totem_Trinket, Heroes.Player))
             *          yellowTrinket = ItemId.Greater_Stealth_Totem_Trinket;
             *
             *      if (Items.CanUseItem((int)blueTrinket))
             *          Items.UseItem((int)blueTrinket, args.End.Randomize(0, 100));
             *      if (Items.CanUseItem((int)yellowTrinket))
             *          Items.UseItem((int)yellowTrinket, args.End.Randomize(0, 100));
             *  }
             * }*/

            #endregion ward brush after condemn

            // need to fix "ward brush after condemn + Anti-Stealth"

            #region Anti-Stealth

            if (args.SData.Name.ToLower().Contains("talonshadow")) //#TODO get the actual buff name
            {
                /* if (Items.HasItem((int)ItemId.Oracle_Alteration) &&
                 *   Items.CanUseItem((int)ItemId.Oracle_Alteration))
                 *   Items.UseItem((int)ItemId.Oracle_Alteration, Heroes.Player.Position);
                 * else if (Items.HasItem((int)ItemId.Control_Ward, Heroes.Player))
                 *   Items.UseItem((int)ItemId.Control_Ward, Heroes.Player.Position.Randomize(0, 125));*/
            }


            #endregion Anti-Stealth

            if (MyWizard.ShouldSaveCondemn())
            {
                return;
            }
            if (sender.Distance(Heroes.Player) > 1500 || !args.Target.IsMe || args.SData == null)
            {
                return;
            }
            //how to milk alistar/thresh/everytoplaner
            var spellData = SpellDb.GetByName(args.SData.Name);

            /* if (spellData != null && !Heroes.Player.IsUnderEnemyTurret(true) &&
             * !Lists.UselessChamps.Contains(sender.CharacterName))
             *  if (spellData.CcType == CcType.Knockup || spellData.CcType == CcType.Stun ||
             *      spellData.CcType == CcType.Knockback || spellData.CcType == CcType.Suppression)
             *      Program.E.Cast(sender);*/
        }
 /// <summary>
 ///     On do cast event.
 /// </summary>
 /// <param name="sender">
 ///     The sender.
 /// </param>
 /// <param name="args">
 ///     The args.
 /// </param>
 private static void OnDoCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
 {
     EventGapcloser(sender, args);
     EventInterruptableSpell(sender, args);
     EventTurret(sender);
 }
Exemple #25
0
        private static void OnDoCastDelayed(AIBaseClientProcessSpellCastEventArgs args)
        {
            if (SP)
            {
                AAPassive = false;
            }
            else
            {
                AAPassive = Player.HasBuff("LucianPassiveBuff");
            }
            if (args.Target is AIHeroClient)
            {
                var target = (AIBaseClient)args.Target;
                if (Orbwalker.ActiveMode == OrbwalkerMode.Harass && target.IsValid)
                {
                    if (Player.ManaPercent < HHMinMana)
                    {
                        return;
                    }

                    if (E.IsReady() && !AAPassive && HE == "Side")
                    {
                        E.Cast((Deviation(Player.Position.ToVector2(), target.Position.ToVector2(), 65).ToVector3()));
                    }
                    if (E.IsReady() && !AAPassive && HE == "Cursor")
                    {
                        E.Cast(Player.Position.Extend(Game.CursorPos, 50));
                    }
                    if (E.IsReady() && !AAPassive && HE == "Enemy")
                    {
                        E.Cast(Player.Position.Extend(target.Position, 50));
                    }
                    if (Q.IsReady() && (!E.IsReady() || (E.IsReady() && HE == "Never")) && HQ && !AAPassive)
                    {
                        Q.Cast(target);
                    }
                    if ((!E.IsReady() || (E.IsReady() && HE == "Never")) && (!Q.IsReady() || (Q.IsReady() && !HQ)) && HW && W.IsReady() && !AAPassive)
                    {
                        W.Cast(target.Position);
                    }
                }
            }
            if (args.Target is AIMinionClient && args.Target.IsValid)
            {
                if (Orbwalker.ActiveMode == OrbwalkerMode.LaneClear)
                {
                    var Mobs = GameObjects.GetMinions(Player.GetRealAutoAttackRange(), MinionTypes.All, MinionTeam.Enemy, MinionOrderTypes.MaxHealth);
                    if (Mobs[0].IsValid && Mobs.Count != 0)
                    {
                        if (E.IsReady() && !AAPassive && JE)
                        {
                            E.Cast(Player.Position.Extend(Game.CursorPos, 70));
                        }
                        if (Q.IsReady() && (!E.IsReady() || (E.IsReady() && !JE)) && JQ && !AAPassive)
                        {
                            Q.Cast(Mobs[0]);
                        }
                        if ((!E.IsReady() || (E.IsReady() && !JE)) && (!Q.IsReady() || (Q.IsReady() && !JQ)) && JW && W.IsReady() && !AAPassive)
                        {
                            W.Cast(Mobs[0].Position);
                        }
                    }
                }
            }
        }
 private static void AIHeroClient_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
 {
 }
        private static void AIBaseClient_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (sender.IsMe)
            {
                return;
            }

            if (args.Target.IsMe && sender is AITurretClient)
            {
                if (Orbwalker.ActiveMode <= OrbwalkerMode.Harass)
                {
                    var target = TargetSelector.GetTargets(Q.Range).OrderBy(i => i.Health).FirstOrDefault();
                    if (target != null)
                    {
                        if (Q.Cast(target) == CastStates.SuccessfullyCasted || Q.CastOnUnit(target))
                        {
                            return;
                        }
                    }
                }
                else
                {
                    var obj = ObjectManager.Get <AIMinionClient>().Where(i => i.IsValidTarget(Q.Range) && !i.IsAlly && !i.IsDead).OrderBy(i => i.Health).LastOrDefault(i => !Yasuo_LogicHelper.Logichelper.UnderTower(i.Position));
                    if (obj != null)
                    {
                        if (Q.Cast(obj) == CastStates.SuccessfullyCasted || Q.CastOnUnit(obj))
                        {
                            return;
                        }
                    }
                    var target = TargetSelector.GetTargets(Q.Range).OrderBy(i => i.Health).FirstOrDefault(i => !Yasuo_LogicHelper.Logichelper.UnderTower(i.Position));
                    if (target != null)
                    {
                        if (Q.Cast(target) == CastStates.SuccessfullyCasted || Q.CastOnUnit(target))
                        {
                            return;
                        }
                    }
                }
            }
            if (args.Target.IsMe && sender is AIHeroClient && args.Slot <= SpellSlot.R)
            {
                if (Orbwalker.ActiveMode <= OrbwalkerMode.Harass)
                {
                    var target = TargetSelector.GetTargets(Q.Range).OrderBy(i => i.Health).FirstOrDefault(i => !Yasuo_LogicHelper.Logichelper.UnderTower(i.Position));
                    if (target != null)
                    {
                        if (Q.Cast(target) == CastStates.SuccessfullyCasted || Q.CastOnUnit(target))
                        {
                            return;
                        }
                    }
                }
                else
                {
                    var obj = ObjectManager.Get <AIMinionClient>().Where(i => i.IsValidTarget(Q.Range) && !i.IsAlly && !i.IsDead).OrderBy(i => i.Health).LastOrDefault(i => !Yasuo_LogicHelper.Logichelper.UnderTower(i.Position));
                    if (obj != null)
                    {
                        if (Q.Cast(obj) == CastStates.SuccessfullyCasted || Q.CastOnUnit(obj))
                        {
                            return;
                        }
                    }
                    var target = TargetSelector.GetTargets(Q.Range).OrderBy(i => i.Health).FirstOrDefault(i => !Yasuo_LogicHelper.Logichelper.UnderTower(i.Position));
                    if (target != null)
                    {
                        if (Q.Cast(target) == CastStates.SuccessfullyCasted || Q.CastOnUnit(target))
                        {
                            return;
                        }
                    }
                }
            }
        }
        //private static Geometry.Circle SkillCirCle;
        //private static Geometry.Rectangle SkillLine;
        private static void RivenEEvade(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (!MenuRiven.ESettings.EEvade.Enabled)
            {
                return;
            }
            if (!sender.IsAlly && args.Slot != SpellSlot.Unknown && (sender is AIHeroClient))
            {
                if (
                    args.SData.TargetingType == SpellDataTargetType.Unit ||
                    args.SData.TargetingType == SpellDataTargetType.SelfAndUnit ||
                    args.SData.TargetingType == SpellDataTargetType.Self
                    )
                {
                    Console.WriteLine("Targeted {0} : " + args.SData.Name + " ( By " + sender.CharacterName + " )", args.Slot.ToString());
                    if (args.Target.MemoryAddress == Player.MemoryAddress && args.Time < 1.5)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(Game.CursorPos);
                            Render.Circle.DrawCircle(Game.CursorPos, 70, System.Drawing.Color.Red);
                        }
                    }
                    else
                    {
                        Console.WriteLine(" False in Evade Targeted");
                    }
                }
                else
                {
                    if (
                        args.SData.TargetingType == SpellDataTargetType.LocationAoe ||
                        args.SData.TargetingType == SpellDataTargetType.SelfAoe
                        )
                    {
                        Console.WriteLine("Circle {0} : " + args.SData.Name + " ( By " + sender.CharacterName + " )", args.Slot.ToString());

                        //SkillCirCle = new Geometry.Circle(args.End, args.SData.CastRadius);

                        var CastPos = (new Geometry.Circle(args.End, args.SData.CastRadius)).Points.OrderBy(i => i.DistanceToPlayer()).FirstOrDefault();
                        if (args.End.DistanceToPlayer() < args.SData.CastRadius + 250)
                        {
                            if (CastPos.DistanceToPlayer() < 150 && Q.IsReady())
                            {
                                Q.Cast(CastPos);
                            }
                            else
                            {
                                if (E.IsReady())
                                {
                                    E.Cast(CastPos);
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine(" False in Evade Circle");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Line {0} : " + args.SData.Name + " ( By " + sender.CharacterName + " )", args.Slot.ToString());

                        //SkillLine = (new Geometry.Rectangle(args.Start, args.End, 1));

                        var CastPos  = (new Geometry.Rectangle(args.Start, args.End, 1)).Points.OrderBy(i => i.DistanceToPlayer()).FirstOrDefault();
                        var EvadePos = Player.Position.Extend((new Geometry.Rectangle(args.Start, args.End, 1)).Points.MinOrDefault(i => i.DistanceToPlayer()).ToVector3(), -450);
                        if (CastPos.DistanceToPlayer() < args.SData.CastRadius + 250)
                        {
                            if (CastPos.DistanceToPlayer() < 150 && Q.IsReady())
                            {
                                Q.Cast(EvadePos);
                                Render.Circle.DrawCircle(EvadePos, 70, System.Drawing.Color.Red);
                            }
                            else
                            {
                                if (E.IsReady())
                                {
                                    E.Cast(EvadePos);
                                    Render.Circle.DrawCircle(EvadePos, 70, System.Drawing.Color.Red);
                                }
                            }
                        }
                        else
                        {
                            Console.WriteLine(" False in Evade Line");
                        }
                    }
                }
            }
        }
Exemple #29
0
        private static void OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (sender == null || !sender.IsValid)
            {
                return;
            }

            if (args.SData.Name == "dravenrdoublecast")
            {
                EvadeManager.DetectedSkillshots.RemoveAll(
                    s => s.Unit.NetworkId == sender.NetworkId && s.SpellData.SpellName == "DravenRCast");
            }

            if (!sender.IsValid || sender.Team == ObjectManager.Player.Team)
            {
                return;
            }

            var spellData = SpellDatabase.GetByName(args.SData.Name);

            if (spellData == null)
            {
                return;
            }

            var startPos = new Vector2();

            if (spellData.FromObject != "")
            {
                foreach (var o in ObjectManager.Get <GameObject>())
                {
                    if (o.Name.Contains(spellData.FromObject))
                    {
                        startPos = o.Position.ToVector2();
                    }
                }
            }
            else
            {
                startPos = sender.Position.ToVector2();
            }

            if (spellData.FromObjects != null && spellData.FromObjects.Length > 0)
            {
                foreach (var obj in ObjectManager.Get <GameObject>())
                {
                    if (obj.IsEnemy && spellData.FromObjects.Contains(obj.Name))
                    {
                        var start = obj.Position.ToVector2();
                        var end   = start + spellData.Range * (args.End.ToVector2() - obj.Position.ToVector2()).Normalized();

                        TriggerOnDetectSkillshot(
                            DetectionType.ProcessSpell, spellData, Utils.GameTimeTickCount - Game.Ping / 2, start, end,
                            end,
                            sender);
                    }
                }
            }

            if (!startPos.IsValid())
            {
                return;
            }

            var endPos = args.End.ToVector2();

            if (ObjectManager.Player.CharacterName == "Janna" ||
                ObjectManager.Player.CharacterName == "Rakan" ||
                ObjectManager.Player.CharacterName == "Lulu" || ObjectManager.Player.CharacterName == "Ivern" ||
                ObjectManager.Player.CharacterName == "Karma")
            {
                bestAllies = GameObjects.AllyHeroes
                             .Where(t =>
                                    t.Distance(ObjectManager.Player) < SupportAIO.Common.Champion.E.Range)
                             .OrderBy(x => x.Health);
            }
            if (ObjectManager.Player.CharacterName == "Lux" || ObjectManager.Player.CharacterName == "Sona" ||
                ObjectManager.Player.CharacterName == "Taric")

            {
                bestAllies = GameObjects.AllyHeroes
                             .Where(t =>
                                    t.Distance(ObjectManager.Player) < SupportAIO.Common.Champion.W.Range)
                             .OrderBy(x => x.Health);
            }
            foreach (var ally in bestAllies)
            {
                if (spellData.SpellName == "LucianQ" && args.Target != null &&
                    args.Target.NetworkId == ally.NetworkId)
                {
                    return;
                }


                var direction = (endPos - startPos).Normalized();

                if (startPos.Distance(endPos) > spellData.Range || spellData.FixedRange)
                {
                    endPos = startPos + direction * spellData.Range;
                }

                if (spellData.ExtraRange != -1)
                {
                    endPos = endPos +
                             Math.Min(spellData.ExtraRange, spellData.Range - endPos.Distance(startPos)) * direction;
                }

                TriggerOnDetectSkillshot(
                    DetectionType.ProcessSpell, spellData, Utils.GameTimeTickCount - Game.Ping / 2, startPos, endPos,
                    args.End.ToVector2(), sender);
            }
        }
        private static void AIBaseClient_OnProcessSpellCast(AIBaseClient sender, AIBaseClientProcessSpellCastEventArgs args)
        {
            if (sender.IsMe)
            {
                if (args.SData.Name.Contains("ItemTiamatCleave") && W.IsReady())
                {
                    var targets = TargetSelector.GetTargets(W.Range);
                    if (targets.Any())
                    {
                        W.Cast();
                    }
                }

                if (args.SData.Name == "RivenTriCleave")
                {
                    lastQcast = Variables.TickCount;
                    Orbwalker.ResetAutoAttackTimer();
                }
            }


            if (!sender.IsMe)
            {
                if (args.SData.Name.Contains("TalonCutthroat"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (W.IsReady() && sender.IsValidTarget(W.Range))
                        {
                            W.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("RenektonPreExecute"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (W.IsReady())
                        {
                            W.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("GarenRPreCast"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(Player.Position.Extend(sender.Position, -300));
                        }
                    }
                }
                if (args.SData.Name.Contains("GarenQAttack"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("XenZhaoThrust3"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (W.IsReady() && sender.IsValidTarget(W.Range))
                        {
                            W.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("RengarQ"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("RengarPassiveBuffDash"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("RengarPassiveBuffDashAADummy"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("TwitchEParticle"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("FizzPiercingStrike"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("HungeringStrike"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("YasuoDash"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.GetDashInfo().EndPos.Extend(Player.Position, -300));
                        }
                    }
                }
                if (args.SData.Name.Contains("KatarinaRTrigger"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (W.IsReady() && sender.IsValidTarget(W.Range))
                        {
                            W.Cast();
                        }
                        else if (E.IsReady())
                        {
                            E.Cast(Player.Position.Extend(sender.Position, -300));
                        }
                    }
                }
                if (args.SData.Name.Contains("YasuoDash"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.GetDashInfo().EndPos.Extend(Player.Position, -300));
                        }
                    }
                }
                if (args.SData.Name.Contains("KatarinaE"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (W.IsReady())
                        {
                            W.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("MonkeyKingQAttack"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("MonkeyKingSpinToWin"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                        else if (W.IsReady())
                        {
                            W.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("MonkeyKingQAttack"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("MonkeyKingQAttack"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
                if (args.SData.Name.Contains("MonkeyKingQAttack"))
                {
                    if (args.Target.NetworkId == Player.NetworkId)
                    {
                        if (E.IsReady())
                        {
                            E.Cast(sender.Position);
                        }
                    }
                }
            }
        }