Exemple #1
0
        public override void AIHeroClient_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (Player.IsDead || !sender.IsEnemy || !(sender is AIHeroClient)) return;

            if (Q.IsReady() && args.SData.Name.ToLower() == "summonerflash" && args.End.Distance(Player) <= Q.Range && MenuManager.Menus[HERO_MENU]["Misc"].Keys.Last().IsActive("autoqonflash"))
            {
                //Chat.Print("{0} detected, Q on args.End", args.SData.Name);
                var rectangle = new Geometry.Polygon.Rectangle(Player.Position, args.End, Q.Width + 10);

                if (!EntityManager.MinionsAndMonsters.EnemyMinions.Any(it => rectangle.IsInside(it))) Q.Cast(args.End);
                return;
            }

            if (E.IsReady() && EMenu["UseShield?"].Cast<CheckBox>().CurrentValue && MenuSpells.Any(it => it == args.SData.Name))
            {
                if (EMenu[args.SData.Name].Cast<CheckBox>().CurrentValue)
                {
                    List<AIHeroClient> Allies = new List<AIHeroClient>();

                    //Division
                    if (args.Target != null)
                    {
                        if (args.Target.IsAlly || args.Target.IsMe)
                        {
                            var target = EntityManager.Heroes.Allies.FirstOrDefault(it => it.NetworkId == args.Target.NetworkId);

                            //Chat.Print(args.Target.Name);

                            if (target != null) E.Cast(target);

                            return;
                        }
                    }

                    //Division

                    var rectangle = new Geometry.Polygon.Rectangle(args.Start, args.End, args.SData.LineWidth);

                    foreach (var ally in EntityManager.Heroes.Allies)
                    {
                        if (rectangle.IsInside(ally)) { Allies.Add(ally); continue; }

                        foreach (var point in rectangle.Points)
                        {
                            if (ally.Distance(point) <= 90)
                            {
                                Allies.Add(ally);
                            }
                        }
                    }

                    if (Allies.Any())
                    {
                        //Chat.Print("Rectangle Detection");

                        PriorityCast(sender, args, Allies, rectangle);
                        return;
                    }

                    //Division

                    var circle = new Geometry.Polygon.Circle(args.End, args.SData.CastRadius);

                    foreach (var ally in EntityManager.Heroes.Allies)
                    {
                        if (circle.IsInside(ally)) { Allies.Add(ally); continue; }

                        foreach (var point in circle.Points)
                        {
                            if (ally.Distance(point) <= 90)
                            {
                                Allies.Add(ally);
                            }
                        }
                    }

                    if (Allies.Any())
                    {
                        //Chat.Print("Circle Detection");

                        PriorityCast(sender, args, Allies, circle);
                        return;
                    }
                }
            }

            return;
        }
Exemple #2
0
        public override void AIHeroClient_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (Player.IsDead || !sender.IsEnemy || !(sender is AIHeroClient))
            {
                return;
            }

            if (Q.IsReady() && args.SData.Name.ToLower() == "summonerflash" && args.End.Distance(Player) <= Q.Range && MenuManager.Menus[HERO_MENU]["Misc"].Keys.Last().IsActive("autoqonflash"))
            {
                //Chat.Print("{0} detected, Q on args.End", args.SData.Name);
                var rectangle = new Geometry.Polygon.Rectangle(Player.Position, args.End, Q.Width + 10);

                if (!EntityManager.MinionsAndMonsters.EnemyMinions.Any(it => rectangle.IsInside(it)))
                {
                    Q.Cast(args.End);
                }
                return;
            }

            if (E.IsReady() && EMenu["UseShield?"].Cast <CheckBox>().CurrentValue&& MenuSpells.Any(it => it == args.SData.Name))
            {
                if (EMenu[args.SData.Name].Cast <CheckBox>().CurrentValue)
                {
                    List <AIHeroClient> Allies = new List <AIHeroClient>();

                    //Division
                    if (args.Target != null)
                    {
                        if (args.Target.IsAlly || args.Target.IsMe)
                        {
                            var target = EntityManager.Heroes.Allies.FirstOrDefault(it => it.NetworkId == args.Target.NetworkId);

                            //Chat.Print(args.Target.Name);

                            if (target != null)
                            {
                                E.Cast(target);
                            }

                            return;
                        }
                    }

                    //Division

                    var rectangle = new Geometry.Polygon.Rectangle(args.Start, args.End, args.SData.LineWidth);

                    foreach (var ally in EntityManager.Heroes.Allies)
                    {
                        if (rectangle.IsInside(ally))
                        {
                            Allies.Add(ally); continue;
                        }

                        foreach (var point in rectangle.Points)
                        {
                            if (ally.Distance(point) <= 90)
                            {
                                Allies.Add(ally);
                            }
                        }
                    }

                    if (Allies.Any())
                    {
                        //Chat.Print("Rectangle Detection");

                        PriorityCast(sender, args, Allies, rectangle);
                        return;
                    }

                    //Division

                    var circle = new Geometry.Polygon.Circle(args.End, args.SData.CastRadius);

                    foreach (var ally in EntityManager.Heroes.Allies)
                    {
                        if (circle.IsInside(ally))
                        {
                            Allies.Add(ally); continue;
                        }

                        foreach (var point in circle.Points)
                        {
                            if (ally.Distance(point) <= 90)
                            {
                                Allies.Add(ally);
                            }
                        }
                    }

                    if (Allies.Any())
                    {
                        //Chat.Print("Circle Detection");

                        PriorityCast(sender, args, Allies, circle);
                        return;
                    }
                }
            }

            return;
        }