示例#1
0
        // Laneclear
        public static void OnDoCastLc(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe || !Orbwalking.IsAutoAttack(args.SData.Name))
            {
                return;
            }
            qTarget = (Obj_AI_Base)args.Target;
            if (args.Target is Obj_AI_Minion)
            {
                var minions = MinionManager.GetMinions(70 + 120 + Player.BoundingRadius);

                if (minions.Count < 1)
                {
                    return;
                }
                if (!Spells.Q.IsReady() || !MenuConfig.LaneQ)
                {
                    return;
                }

                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                {
                    foreach (var m in minions)
                    {
                        ForceCastQ(m);
                        Usables.CastHydra();
                    }
                }
            }
        }
示例#2
0
        public static void Burst()
        {
            var target = TargetSelector.SelectedTarget;

            if (target == null || !target.IsValidTarget(425 + Spells.W.Range) || target.IsInvulnerable)
            {
                return;
            }

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

            if (!(target.Health < Dmg.GetComboDamage(target)) && !MenuConfig.AlwaysF)
            {
                return;
            }

            if (!(Player.Distance(target.Position) >= 600))
            {
                return;
            }

            if (!Spells.R.IsReady() || !Spells.E.IsReady() || !Spells.W.IsReady() || Spells.R.Instance.Name != IsFirstR)
            {
                return;
            }

            Usables.CastYoumoo();
            Spells.E.Cast(target.Position);
            ForceR();
            Utility.DelayAction.Add(170 + Game.Ping / 2, FlashW);
            ForceItem();
        }
示例#3
0
        public static void Update(EventArgs args)
        {
            if (!SafeTarget(Target))
            {
                return;
            }

            if (Target.HealthPercent <= 10 && !Spells.Q.IsReady())
            {
                Usables.Botrk();
            }

            if (!MenuConfig.KillstealIgnite)
            {
                return;
            }
            if (!Spells.Ignite.IsReady())
            {
                return;
            }

            var target = Variables.TargetSelector.GetTarget(600f);

            if (target == null || !target.IsValidTarget(600f) || Spells.E.IsReady())
            {
                return;
            }

            if (target.IsValidTarget(600f) && Dmg.IgniteDmg >= target.Health)
            {
                GameObjects.Player.Spellbook.CastSpell(Spells.Ignite, target);
            }
        }
示例#4
0
        public static void Burst()
        {
            if (Spells.R.IsReady() && Spells.R.Instance.Name == IsSecondR)
            {
                BurstCastR2(Target);
            }
            else if (Spells.Flash.IsReady() && MenuConfig.AlwaysF)
            {
                if (SelectedTarget == null ||
                    !SelectedTarget.IsValidTarget(Player.AttackRange + 625) ||
                    Player.Distance(SelectedTarget.Position) < Player.AttackRange ||
                    (MenuConfig.Flash && SelectedTarget.Health > Dmg.GetComboDamage(SelectedTarget) && !Spells.R.IsReady() && Spells.R.Instance.Name != IsSecondR) ||
                    (!MenuConfig.Flash && !Spells.W.IsReady()))
                {
                    return;
                }

                Usables.CastYoumoo();
                Spells.E.Cast(SelectedTarget.Position);
                Spells.R.Cast();
                LeagueSharp.Common.Utility.DelayAction.Add(170, BackgroundData.FlashW);
            }
            else
            {
                Combo();
            }
        }
示例#5
0
    public void Setup(Usables usable, float bushHealth)
    {
        usables = usable;

        health = bushHealth;

        flamesObject.SetActive(false);
    }
示例#6
0
        public static void Combo()
        {
            var target = TargetSelector.GetTarget(Player.AttackRange + 310, TargetSelector.DamageType.Physical);

            if (target == null || target.IsDead || !target.IsValidTarget() || target.IsInvulnerable)
            {
                return;
            }

            if (Spells.R.IsReady() && Spells.R.Instance.Name == IsSecondR)
            {
                var pred = Spells.R.GetPrediction(target);

                if (Qstack > 1 && !MenuConfig.OverKillCheck)
                {
                    Spells.R.Cast(pred.CastPosition);
                }

                if (MenuConfig.OverKillCheck && !Spells.Q.IsReady() && Qstack == 1)
                {
                    Spells.R.Cast(pred.CastPosition);
                }
            }

            if (Spells.E.IsReady() && !InWRange(target))
            {
                Spells.E.Cast(target.Position);
            }

            if (Spells.W.IsReady() && Spells.R.IsReady() && Spells.R.Instance.Name == IsFirstR && (MenuConfig.AlwaysR || Dmg.GetComboDamage(target) > target.Health))
            {
                if (InWRange(target))
                {
                    return;
                }

                Spells.E.Cast(target.Position);
                ForceR();
                Utility.DelayAction.Add(190, ForceW);
            }

            else if (Spells.W.IsReady() && Spells.Q.IsReady() && Spells.E.IsReady())
            {
                Usables.CastYoumoo();

                Utility.DelayAction.Add(10, ForceItem);
                Utility.DelayAction.Add(190, () => Spells.W.Cast());
            }

            else if (Spells.W.IsReady() && InWRange(target))
            {
                ForceW();
            }
        }
示例#7
0
        public static void Burst()
        {
            Orbwalker.MoveTo(Game.CursorPos);
            var target = TargetSelector.SelectedTarget;

            if (target == null || !target.LSIsValidTarget() || target.IsZombie || target.IsInvulnerable)
            {
                return;
            }

            if (Spells.Flash.IsReady())
            {
                if (!(target.Health < Dmg.Totaldame(target)) && !MenuConfig.AlwaysF)
                {
                    return;
                }

                if (!(Player.LSDistance(target.Position) <= 700) || !(Player.LSDistance(target.Position) >= 600))
                {
                    return;
                }

                if (!Spells.R.IsReady() || !Spells.E.IsReady() || !Spells.W.IsReady() || Spells.R.Instance.Name != IsFirstR)
                {
                    return;                                                                                                          // So many returns Kappa, wanna see how the script handles returns.
                }
                Spells.E.Cast(target.Position);
                Usables.CastYoumoo();
                ForceR();
                LeagueSharp.Common.Utility.DelayAction.Add(180, FlashW);
                Usables.CastHydra();
            }
            else
            {
                if (!(Player.LSDistance(target) <= Spells.E.Range + Player.AttackRange))
                {
                    return;
                }

                if (Spells.E.IsReady() && Spells.R.IsReady())
                {
                    Spells.E.Cast(Target.ServerPosition);
                    ForceR();
                }
                else if (Spells.E.IsReady())
                {
                    Spells.E.Cast(Target);
                }
            }
        }
示例#8
0
    private void Start()
    {
        if (instance == null)
        {
            instance = this;
        }
        else
        {
            Debug.LogError("Two GameManagers in scene");
        }

        usables = new Usables();
        usables.GrabAllUsables();
    }
示例#9
0
文件: Modes.cs 项目: wade1990/PortAIO
        private static void Combo()
        {
            if (!SafeTarget(Target))
            {
                return;
            }

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

                if (Target.Health <= dmg.EDamage(Target))
                {
                    E.Cast();

                    if (MenuConfig.Debug)
                    {
                        Chat.Print("Combo => Executing: ", Target.ChampionName);
                    }
                }
            }

            if (MenuConfig.UseYoumuu && Target.HealthPercent <= 80)
            {
                Usables.CastYomu();
            }

            if (Target.HealthPercent <= 85)
            {
                Usables.Botrk();
            }

            if (!W.IsReady() || !MenuConfig.ComboW ||
                !Target.IsValidTarget(W.Range) ||
                Target.Health <= Player.GetAutoAttackDamage(Target) * 2 && Target.Distance(Player) < Player.AttackRange ||
                Player.ManaPercent < 8)
            {
                return;
            }


            W.Cast(Target.Position);
        }
 public void AddItem(string type, string id, int quantity)
 {
     if (type.ToLower() == "usable")
     {
         if (DataManager.Instance.SearchUsableID(id) != null)
         {
             for (int i = 0; i < Usables.Count; i++)
             {
                 if (Usables[i].usable.id == id)
                 {
                     Usables[i].amount += quantity;
                     return;
                 }
             }
             Usables.Add(new PlayerUsable(id, quantity));
         }
         else
         {
             Debug.LogError("Usable " + id + " not found!");
         }
     }
     else if (type.ToLower() == "weapon")
     {
         if (DataManager.Instance.SearchWeaponID(id) != null)
         {
             Weapons.Add(new PlayerWeapon(id));
         }
         else
         {
             Debug.LogError("Weapon " + id + " not found!");
         }
     }
     else if (type.ToLower() == "armor")
     {
         if (DataManager.Instance.SearchArmorID(id) != null)
         {
             Armors.Add(new PlayerArmor(id));
         }
         else
         {
             Debug.LogError("Armor " + id + " not found!");
         }
     }
 }
示例#11
0
        public static void Jungleclear()
        {
            if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
            {
                return;
            }

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

            if (mobs == null || mobs.IsDead || !mobs.LSIsValidTarget())
            {
                return;
            }

            if (!(mobs?.LSDistance(Player.Position) <= Spells.E.Range + Player.AttackRange))
            {
                return;
            }

            if (Spells.E.IsReady() && MenuConfig.jnglE)
            {
                Spells.E.Cast(mobs);
                Usables.CastHydra();
            }

            if (Spells.Q.IsReady() && MenuConfig.jnglQ)
            {
                Usables.CastHydra();
                LeagueSharp.Common.Utility.DelayAction.Add(1, () => ForceCastQ(mobs));
            }

            if (!Spells.W.IsReady() || !MenuConfig.jnglW)
            {
                return;
            }
            Usables.CastHydra();
            LeagueSharp.Common.Utility.DelayAction.Add(150, () => Spells.W.Cast(mobs));
        }
示例#12
0
        public static void Burst()
        {
            if (Spells.R.IsReady() && Spells.R.Instance.Name == IsSecondR)
            {
                BurstCastR2(Target);
            }

            if (Spells.Flash.IsReady() &&
                MenuConfig.AlwaysF &&
                SelectedTarget != null &&
                SelectedTarget.IsValidTarget(Player.AttackRange + 625) &&
                Player.Distance(SelectedTarget.Position) > 335 &&
                (SelectedTarget.Health < Dmg.GetComboDamage(SelectedTarget) || MenuConfig.Flash))
            {
                Usables.CastYoumoo();
                Spells.E.Cast(SelectedTarget.Position);
                Spells.R.Cast();
                LeagueSharp.Common.Utility.DelayAction.Add(170, BackgroundData.FlashW);
            }
            else
            {
                Combo();
            }
        }
示例#13
0
文件: Modes.cs 项目: Burbb/Portaio
        private static void Combo()
        {
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                return;
            }

            if (!SafeTarget(Target))
            {
                return;
            }

            if (MenuConfig.ComboE)
            {
                if (!E.IsReady())
                {
                    return;
                }
                if (Target.Health <= Dmg.EDamage(Target))
                {
                    E.Cast();

                    if (MenuConfig.Debug)
                    {
                        Chat.Print("Combo => Casting E");
                    }
                }
            }


            if (MenuConfig.UseYoumuu && Target.LSIsValidTarget(Player.AttackRange))
            {
                Usables.CastYomu();
            }

            if (Target.HealthPercent <= 70 && !MenuConfig.UseExploit)
            {
                Usables.Botrk();
            }


            if (!MenuConfig.ComboW)
            {
                return;
            }
            if (!W.IsReady())
            {
                return;
            }
            if (!Target.LSIsValidTarget(W.Range))
            {
                if (Target.Health <= Player.GetAutoAttackDamage(Target) * 2 && Target.Distance(Player) < Player.AttackRange)
                {
                    return;
                }
            }
            if (!(Player.ManaPercent >= 7.5))
            {
                return;
            }

            var wPred = W.GetPrediction(Target).CastPosition;

            W.Cast(wPred);
        }
示例#14
0
        public static void Combo()
        {
            var targetAquireRange = Spells.R.IsReady() ? Player.AttackRange + 390 : Player.AttackRange + 370;
            var target            = TargetSelector.GetTarget(targetAquireRange, DamageType.Physical);

            //var target = TargetSelector.GetTarget(targetAquireRange, DamageType.Physical, Player.Position);

            if (target == null || !target.IsValidTarget() || target.Type != Player.Type)
            {
                return;
            }

            if (Spells.R.IsReady() && Spells.R.Name == IsSecondR)
            {
                var pred = Spells.R.GetPrediction(target);                                                                                    //, true, collisionable: new[] { CollisionableObjects.YasuoWall });

                if (pred.HitChance != EloBuddy.SDK.Enumerations.HitChance.High || target.HasBuff(BackgroundData.InvulnerableList.ToString())) // || Player.IsWindingUp)
                {
                    //return;
                }
                else
                {
                    if ((!MenuConfig.OverKillCheck && Qstack > 1) || MenuConfig.OverKillCheck &&
                        (target.HealthPercent <= 40 &&
                         !Spells.Q.IsReady() && Qstack == 1 || target.Distance(Player) >= Player.AttackRange + 310))
                    {
                        Player.Spellbook.CastSpell(SpellSlot.R, pred.UnitPosition);
                    }
                }
            }

            #region Q3 Wall

            if (Qstack == 3 && target.Distance(Player) >= Player.AttackRange && target.Distance(Player) <= 650 && MenuConfig.Q3Wall && Spells.E.IsReady())
            {
                var wallPoint = FleeLogic.GetFirstWallPoint(Player.Position, Player.Position.Extend(target.Position, 650).To3D());//TODO: Fix this...

                Player.GetPath(wallPoint);

                if (!Spells.E.IsReady() || wallPoint.Distance(Player.Position) > Spells.E.Range || !wallPoint.IsValid())
                {
                    //return;
                }
                else
                {
                    Player.Spellbook.CastSpell(SpellSlot.E, wallPoint);

                    if (Spells.R.IsReady() && Spells.R.Name == IsFirstR)
                    {
                        Player.Spellbook.CastSpell(SpellSlot.R, target);
                    }

                    EloBuddy.SDK.Core.DelayAction(() => Player.Spellbook.CastSpell(SpellSlot.Q, wallPoint), 190);

                    if (wallPoint.Distance(Player.Position) <= 100)
                    {
                        Player.Spellbook.CastSpell(SpellSlot.Q, wallPoint);
                    }
                }
            }
            #endregion

            if (Spells.E.IsReady())
            {
                //Chat.Print("I casted E toward " + target.Name);
                Usables.CastYoumoo();

                if (MenuConfig.AlwaysR && Spells.R.IsReady() && !Spells.R.IsOnCooldown && Spells.R.Name == IsFirstR)
                {
                    Player.Spellbook.CastSpell(SpellSlot.R, target);
                }
                else
                {
                    Player.Spellbook.CastSpell(SpellSlot.E, target);
                    //if (Player.Distance(target) < 350)

                    EloBuddy.SDK.Core.DelayAction(Usables.CastHydra, 10);
                }
            }

            if (Spells.W.IsReady() && BackgroundData.InRange(target))
            {
                if (MenuConfig.Doublecast && Spells.Q.IsReady() && Qstack != 2)
                {
                    BackgroundData.CastW(target);
                    BackgroundData.DoubleCastQ(target);
                }
                else
                {
                    BackgroundData.CastW(target);
                }
            }
            //Added....
            if (Spells.Q.IsReady() && Spells.Q.IsInRange(target))
            {
                BackgroundData.CastQ(target);
                //Player.Spellbook.CastSpell(SpellSlot.Q, target);
            }
        }
示例#15
0
        public static void Burst()
        {
            if (Player.Spellbook.CanUseSpell(Spells.Flash) == SpellState.Ready && MenuConfig.AlwaysF)
            {
                var selectedTarget = TargetSelector.GetTarget(Player.AttackRange + 625, DamageType.Physical);

                if (selectedTarget == null ||
                    Player.Distance(selectedTarget.Position) > (Player.AttackRange + 625) ||
                    Player.Distance(selectedTarget.Position) < Player.AttackRange ||
                    (MenuConfig.Flash && selectedTarget.Health > Dmg.GetComboDamage(selectedTarget) && !Spells.R.IsReady()) ||
                    (!MenuConfig.Flash || (!Spells.R.IsReady() || !Spells.W.IsReady()))
                    )
                {
                    return;
                }

                Usables.CastYoumoo();
                BackgroundData.CastE(selectedTarget);

                Player.Spellbook.CastSpell(SpellSlot.R, selectedTarget);
                EloBuddy.SDK.Core.DelayAction(() => BackgroundData.FlashW(selectedTarget), 170);
            }
            else
            {
                var target = TargetSelector.GetTarget(Player.AttackRange + 360, DamageType.Physical);

                if (target == null)
                {
                    return;
                }

                if (!MenuConfig.AlwaysF)
                {
                    Usables.CastYoumoo();
                }

                if (Spells.R.IsReady() && Spells.R.Name == IsSecondR && Qstack > 1)
                {
                    var pred = Spells.R.GetPrediction(target);

                    if (pred.HitChance == EloBuddy.SDK.Enumerations.HitChance.High)
                    {
                        Player.Spellbook.CastSpell(SpellSlot.R, pred.CastPosition);
                    }
                }

                if (Spells.E.IsReady())
                {
                    BackgroundData.CastE(target);
                    EloBuddy.SDK.Core.DelayAction(Usables.CastHydra, 10);
                    //Spells.E.Cast(target.Position);
                }

                if (Spells.R.IsReady() && Spells.R.Name == IsFirstR)
                {
                    Player.Spellbook.CastSpell(SpellSlot.R, target);
                    //Spells.R.Cast(target);
                }

                if (!Spells.W.IsReady() || !BackgroundData.InRange(target))
                {
                    return;
                }

                BackgroundData.CastW(target);
                BackgroundData.DoubleCastQ(target);
            }
        }
示例#16
0
        // Jungle, Combo etc.
        public static void OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            var spellName = args.SData.Name;

            if (!sender.IsMe || !Orbwalking.IsAutoAttack(spellName))
            {
                return;
            }
            qTarget = (Obj_AI_Base)args.Target;

            if (args.Target is Obj_AI_Minion)
            {
                Jungleclear();
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                {
                    var minions = MinionManager.GetMinions(600f).FirstOrDefault();
                    if (minions == null)
                    {
                        return;
                    }


                    if (Spells.E.IsReady() && MenuConfig.LaneE)
                    {
                        Spells.E.Cast(minions.ServerPosition);
                    }

                    if (Spells.W.IsReady() && MenuConfig.LaneW)
                    {
                        var minion = MinionManager.GetMinions(Player.Position, Spells.W.Range);
                        foreach (var m in minion)
                        {
                            if (m.Health < Spells.W.GetDamage(m) && minion.Count > 2)
                            {
                                LeagueSharp.Common.Utility.DelayAction.Add(200, () => Spells.W.Cast(m));
                            }
                        }
                    }
                }
            }

            var @base = args.Target as Obj_AI_Turret;

            if (@base != null)
            {
                if (@base.IsValid && args.Target != null && Spells.Q.IsReady() && MenuConfig.LaneQ &&
                    Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                {
                    ForceCastQ(@base);
                }
            }


            var hero = args.Target as AIHeroClient;

            if (hero == null || hero.IsDead || hero.IsInvulnerable)
            {
                return;
            }
            var target = hero;

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                if (Spells.E.IsReady())
                {
                    Spells.E.Cast(target.Position);
                    Usables.CastHydra();
                }

                if (Spells.W.IsReady() && InWRange(target))
                {
                    Usables.CastHydra();
                    Spells.W.Cast(target);
                }

                if (Spells.Q.IsReady())
                {
                    ForceItem();
                    LeagueSharp.Common.Utility.DelayAction.Add(1, () => ForceCastQ(target));
                }

                if (Spells.R.IsReady() && Qstack > 2 && !MenuConfig.OverKillCheck && Spells.R.Instance.Name == IsSecondR)
                {
                    Spells.R.Cast(target.Position);
                }

                else if (MenuConfig.OverKillCheck && Spells.R.IsReady() && Spells.R.Instance.Name == IsSecondR && !Spells.Q.IsReady())
                {
                    Spells.R.Cast(target.Position);
                }
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass))
            {
                if (Qstack == 2 && Spells.Q.IsReady())
                {
                    Usables.CastHydra();
                    ForceItem();
                    LeagueSharp.Common.Utility.DelayAction.Add(1, () => ForceCastQ(target));
                }
            }

            if (MenuConfig.Burst)
            {
                if (Spells.E.IsReady() && (Player.LSDistance(target.Position) <= Spells.E.Range + Player.AttackRange))
                {
                    Spells.E.Cast(target.ServerPosition);
                }

                if (InWRange(target))
                {
                    if (Spells.W.IsReady())
                    {
                        Spells.W.Cast(target.Position);
                    }
                    if (Spells.Q.IsReady())
                    {
                        LeagueSharp.Common.Utility.DelayAction.Add(30, () => ForceCastQ(Target));
                        Usables.CastHydra();
                    }
                }
                if (Spells.R.IsReady() && Qstack != 1 && Spells.R.Instance.Name == IsSecondR)
                {
                    Spells.R.Cast(target.Position);
                }
            }
        }
示例#17
0
        public static void OnPlay(Obj_AI_Base sender, GameObjectPlayAnimationEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }
            var t = 0;

            switch (args.Animation) // Logic from Fluxy
            {
            case "Spell1a":
                lastQ  = Utils.GameTimeTickCount;
                t      = 291;
                Qstack = 2;
                break;

            case "Spell1b":
                lastQ  = Utils.GameTimeTickCount;
                t      = 291;
                Qstack = 3;
                break;

            case "Spell1c":     // q3?
                lastQ  = Utils.GameTimeTickCount;
                t      = 343;
                Qstack = 1;
                break;

            case "Spell2":
                t = 170;
                break;

            case "Spell3":
                if (MenuConfig.Burst || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) ||
                    MenuConfig.FastHarass || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Flee))
                {
                    Usables.CastYoumoo();
                }
                break;

            case "Spell4a":
                t     = 0;
                lastR = Utils.GameTimeTickCount;
                break;

            case "Spell4b":
                t = 150;
                var target = TargetSelector.SelectedTarget;
                if (Spells.Q.IsReady() && target.LSIsValidTarget())
                {
                    ForceCastQ(target);
                }
                break;
            }

            if (t != 0 && (Orbwalker.ActiveModesFlags != Orbwalker.ActiveModes.None))
            {
                Orbwalker.ResetAutoAttack();
                EloBuddy.SDK.Core.DelayAction(CancelAnimation, t - MenuConfig.Qld - (Game.Ping - MenuConfig.Qd));
            }
        }
示例#18
0
        public static void OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            if (_orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                if (args.Target is Obj_AI_Minion)
                {
                    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 Obj_AI_Turret;
                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();
                }
            }

            var @base = args.Target as Obj_AI_Turret;

            if (@base != null)
            {
                if (@base.IsValid && args.Target != null && Spells.Q.IsReady() && MenuConfig.LaneQ &&
                    _orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
                {
                    ForceCastQ(@base);
                }
            }

            var hero = args.Target as Obj_AI_Hero;

            if (hero == null)
            {
                return;
            }
            var target = hero;

            if (_orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
            {
                if (Spells.Q.IsReady())
                {
                    ForceItem();
                    Utility.DelayAction.Add(1, () => ForceCastQ(target));
                }

                if (Spells.R.IsReady() && Qstack == 2 && Spells.R.Instance.Name == IsSecondR)
                {
                    Spells.R.Cast(target.Position);
                }
            }

            if (_orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.FastHarass)
            {
                if (Spells.W.IsReady() && InWRange(target))
                {
                    Usables.CastHydra();
                    Spells.W.Cast();
                }
                else if (Spells.Q.IsReady())
                {
                    ForceItem();
                    Utility.DelayAction.Add(1, () => ForceCastQ(target));
                }
            }

            if (_orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed)
            {
                if (Qstack == 2 && Spells.Q.IsReady())
                {
                    Usables.CastHydra();
                    ForceItem();
                    Utility.DelayAction.Add(1, () => ForceCastQ(target));
                }
            }
        }
示例#19
0
文件: FleeMode.cs 项目: Taazuma/EB-T
        public static void Flee()
        {
            if (MenuConfig.WallFlee && Player.CountEnemiesInRange(1200) == 0)
            {
                var end        = Player.ServerPosition.Extend(Game.CursorPos, 350).To3D();
                var isWallDash = FleeLogic.IsWallDash(end, 350);

                var eend      = Player.ServerPosition.Extend(Game.CursorPos, 350).To3D();
                var wallE     = FleeLogic.GetFirstWallPoint(Player.ServerPosition, eend);
                var wallPoint = FleeLogic.GetFirstWallPoint(Player.ServerPosition, end);

                Player.GetPath(wallPoint);

                if (Spells.Q.IsReady() && Qstack < 3)
                {
                    Spells.Q.Cast(Game.CursorPos);
                }

                if (Qstack != 3 || !isWallDash)
                {
                    return;
                }

                if (Spells.E.IsReady() && wallPoint.Distance(Player.ServerPosition) <= Spells.E.Range)
                {
                    Spells.E.Cast(wallE);
                    EloBuddy.SDK.Core.DelayAction(() => Spells.Q.Cast(wallPoint), 190);
                }
                else if (wallPoint.Distance(Player.ServerPosition) <= 65)
                {
                    Spells.Q.Cast(wallPoint);
                }
                else
                {
                    EloBuddy.SDK.Orbwalker.MoveTo(wallPoint);
                }
            }
            else
            {
                var enemy = TargetSelector.GetTarget(RivenSharp.Core.Spells.Q.Range, DamageType.Physical);

                if (enemy == null || enemy.IsInvulnerable || enemy.MagicImmune)
                {
                    return;
                }

                var x = Player.Position.Extend(Game.CursorPos, 300).To3D();

                if (Spells.W.IsReady() && enemy.IsValidTarget(200))
                {
                    if (BackgroundData.InRange(enemy))
                    {
                        Spells.W.Cast();
                    }
                }

                if (Spells.Q.IsReady())// && !Player.IsDashing())
                {
                    Spells.Q.Cast(Game.CursorPos);
                }

                if (MenuConfig.FleeYomuu)
                {
                    Usables.CastYoumoo();
                }

                if (Spells.E.IsReady())// && !Player.IsDashing())
                {
                    Spells.E.Cast(x);
                }
            }
        }
示例#20
0
        // Jungle, Combo etc.
        public static void OnDoCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe || !Orbwalker.IsAutoAttacking)//!Orbwalking.IsAutoAttack(args.SData.Name))
            {
                return;
            }
            var a = EntityManager.Enemies.Where(x => x.IsValidTarget(Player.AttackRange + 360, true));

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

            foreach (var target in targets)
            {
                if (target.HasBuff("FioraW") && Qstack == 3)
                {
                    return;
                }
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && !MenuConfig.BurstEnabled)
                {
                    if (Spells.Q.IsReady())
                    {
                        Usables.CastYoumoo();
                        BackgroundData.CastQ(target);
                    }
                }
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass))
                {
                    if (Qstack == 2)
                    {
                        BackgroundData.CastQ(target);
                    }
                }

                /*
                 * if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.FastHarass)
                 * {
                 *  if (Spells.Q.IsReady() && Qstack == 2)
                 *  {
                 *      BackgroundData.CastQ(target);
                 *  }
                 * }
                 */

                if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) || !MenuConfig.BurstEnabled)
                {
                    return;
                }

                if (Spells.Q.IsReady())
                {
                    BackgroundData.CastQ(target);
                }
            }
            if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
            //if (Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.LaneClear)
            {
                return;
            }

            if (args.Target is Obj_AI_Minion)
            {
                if (MenuConfig.LaneEnemy && ObjectManager.Player.CountEnemiesInRange(1500) > 0)
                {
                    return;
                }
                var minions = EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, Player.Position, Player.AttackRange + 360);
                foreach (var m in minions)
                {
                    if (!MenuConfig.LaneQ || (m.IsUnderEnemyturret() && ObjectManager.Player.CountEnemiesInRange(1500) >= 1))
                    {
                        return;
                    }

                    if (Spells.Q.IsReady())
                    {
                        BackgroundData.CastQ(m);
                    }
                }
                var mobs = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Position, 360);
                if (mobs == null)
                {
                    return;
                }

                foreach (var m in mobs)
                {
                    if (MenuConfig.JnglQ && Spells.Q.IsReady())
                    {
                        BackgroundData.CastQ(m);
                    }

                    if (!Spells.W.IsReady() || !MenuConfig.JnglW || Player.HasBuff("RivenFeint") || !BackgroundData.InRange(m))
                    {
                        return;
                    }

                    BackgroundData.CastW(m);
                }
            }

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

            var nexus = args.Target as Obj_HQ;

            if (nexus != null && nexus.IsValid)
            {
                IsGameObject = true;
                Spells.Q.Cast(nexus.Position - 500);
            }

            var inhib = args.Target as Obj_BarracksDampener;

            if (inhib != null && inhib.IsValid)
            {
                IsGameObject = true;
                Spells.Q.Cast(inhib.Position - 250);
            }

            var turret = args.Target as Obj_AI_Turret;

            if (turret == null || !turret.IsValid)
            {
                return;
            }

            IsGameObject = true;
            Spells.Q.Cast(turret.Position - 250);
        }
示例#21
0
文件: Anim.cs 项目: riwalry1/AIO
        public static void OnPlay(Obj_AI_Base sender, GameObjectPlayAnimationEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }
            var t = 0;

            var a = 0;
            var b = "";

            switch (args.Animation) // Logic from Fluxy
            {
            case "Spell1a":
                lastQ  = Utils.GameTimeTickCount;
                t      = 291;
                Qstack = 2;
                b      = "Q2";
                a      = t - MenuConfig.Qld - (Game.Ping - MenuConfig.Qd);
                break;

            case "Spell1b":
                lastQ  = Utils.GameTimeTickCount;
                t      = 290;
                Qstack = 3;
                b      = "Q3";
                a      = t - MenuConfig.Qld - (Game.Ping - MenuConfig.Qd);
                break;

            case "Spell1c":     // q3?
                lastQ  = Utils.GameTimeTickCount;
                t      = 343;
                Qstack = 1;
                b      = "Q1";
                a      = t - MenuConfig.Qld - (Game.Ping - MenuConfig.Qd);
                break;

            case "Spell2":
                t = 170;
                break;

            case "Spell3":
                if (MenuConfig.Burst || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) ||
                    MenuConfig.FastHarass || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Flee))
                {
                    Usables.CastYoumoo();
                }
                break;

            case "Spell4a":
                t     = 0;
                lastR = Utils.GameTimeTickCount;
                break;

            case "Spell4b":
                t = 150;
                var target = TargetSelector.SelectedTarget;
                if (Spells.Q.IsReady() && target.LSIsValidTarget())
                {
                    ForceCastQ(target);
                }
                break;
            }

            if (a != 0 && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.None)))
            {
                LeagueSharp.Common.Utility.DelayAction.Add(a, () =>
                {
                    Console.WriteLine(b);
                    Orbwalker.ResetAutoAttack();
                    EloBuddy.Player.DoEmote(Emote.Dance);
                });
            }
        }
示例#22
0
        public static void Burst()
        {
            if (Spells.Flash.IsReady() &&
                MenuConfig.AlwaysF)
            {
                var selectedTarget = TargetSelector.GetSelectedTarget();

                if (selectedTarget == null ||
                    !selectedTarget.IsValidTarget(Player.AttackRange + 625) ||
                    Player.Distance(selectedTarget.Position) < Player.AttackRange ||
                    (MenuConfig.Flash && selectedTarget.Health > Dmg.GetComboDamage(selectedTarget) && !Spells.R.IsReady()) ||
                    (!MenuConfig.Flash && (!Spells.R.IsReady() || !Spells.W.IsReady())))
                {
                    return;
                }

                Usables.CastYoumoo();
                Spells.E.Cast(selectedTarget.Position);
                Spells.R.Cast();
                Utility.DelayAction.Add(170, BackgroundData.FlashW);
            }
            else
            {
                var target = TargetSelector.GetTarget(Player.AttackRange + 360, TargetSelector.DamageType.Physical);

                if (target == null)
                {
                    return;
                }

                if (Spells.R.IsReady() && Spells.R.Instance.Name == IsSecondR && Qstack > 1)
                {
                    var pred = Spells.R.GetPrediction(
                        target,
                        true,
                        collisionable: new[] { CollisionableObjects.YasuoWall });

                    if (pred.Hitchance < HitChance.High)
                    {
                        return;
                    }

                    Spells.R.Cast(pred.CastPosition);
                }

                if (Spells.E.IsReady())
                {
                    Spells.E.Cast(target.Position);
                }

                if (Spells.R.IsReady() && Spells.R.Instance.Name == IsFirstR)
                {
                    Spells.R.Cast();
                }

                if (!Spells.W.IsReady() || !BackgroundData.InRange(target))
                {
                    return;
                }

                BackgroundData.CastW(target);
                BackgroundData.DoubleCastQ(target);
            }
        }
示例#23
0
        public static void OnSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe || !Orbwalking.IsAutoAttack(args.SData.Name))
            {
                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 (target.HasBuff("FioraW") && Qstack == 3)
                {
                    return;
                }

                switch (Orbwalker.ActiveMode)
                {
                case Orbwalking.OrbwalkingMode.Combo:

                    if (Spells.Q.IsReady())
                    {
                        Usables.CastYoumoo();
                        BackgroundData.CastQ(target);
                    }

                    break;

                case Orbwalking.OrbwalkingMode.Burst:

                    if (Spells.Q.IsReady())
                    {
                        BackgroundData.CastQ(target);
                    }

                    break;

                case Orbwalking.OrbwalkingMode.Mixed:

                    if (Qstack == 2)
                    {
                        BackgroundData.CastQ(target);
                    }

                    if (Spells.R.IsReady() && Spells.R.Instance.Name == IsSecondR)
                    {
                        Spells.R.Cast(target);
                    }
                    break;

                case Orbwalking.OrbwalkingMode.QuickHarass:

                    if (Spells.Q.IsReady() && Qstack == 2)
                    {
                        BackgroundData.CastQ(target);
                    }

                    break;
                }
            }

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

            if (args.Target is Obj_AI_Minion)
            {
                if (MenuConfig.LaneEnemy && ObjectManager.Player.CountEnemiesInRange(1500) > 0)
                {
                    return;
                }

                var minions = MinionManager.GetMinions(Player.AttackRange + 360);

                foreach (var m in minions)
                {
                    if (!MenuConfig.LaneQ || (m.UnderTurret(true) && ObjectManager.Player.CountEnemiesInRange(1500) >= 1))
                    {
                        return;
                    }

                    if (Spells.Q.IsReady())
                    {
                        BackgroundData.CastQ(m);
                    }
                }

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

                if (mobs == null)
                {
                    return;
                }

                foreach (var m in mobs)
                {
                    if (MenuConfig.JnglQ && Spells.Q.IsReady())
                    {
                        BackgroundData.CastQ(m);
                    }

                    if (!Spells.W.IsReady() || !MenuConfig.JnglW || Player.HasBuff("RivenFeint") || !BackgroundData.InRange(m))
                    {
                        return;
                    }

                    BackgroundData.CastW(m);
                }
            }

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

            var nexus = args.Target as Obj_HQ;

            if (nexus != null && nexus.IsValid)
            {
                IsGameObject = true;
                Spells.Q.Cast(nexus.Position - 500);
            }

            var inhib = args.Target as Obj_BarracksDampener;

            if (inhib != null && inhib.IsValid)
            {
                IsGameObject = true;
                Spells.Q.Cast(inhib.Position - 250);
            }

            var turret = args.Target as Obj_AI_Turret;

            if (turret == null || !turret.IsValid)
            {
                return;
            }

            IsGameObject = true;
            Spells.Q.Cast(turret.Position - 250);
        }
示例#24
0
        private static void Combo()
        {
            foreach (var enemy in GameObjects.EnemyHeroes.Where(x => !x.IsDead && !x.IsZombie).OrderBy(hp => hp.Health))
            {
                if (!enemy.LSIsValidTarget(Spells.Q.Range) || enemy.IsDead || enemy.IsInvulnerable)
                {
                    return;
                }

                Usables.Locket();
                //    Usables.Seraph();
                switch (MenuConfig.getBoxItem(MenuConfig.comboMenu, "MantraMode"))
                {
                case 0:
                    if (Spells.R.IsReady() && Spells.Q.IsReady())
                    {
                        Spells.R.Cast();
                        Spells.Q.Cast(enemy);
                    }
                    else if (Spells.Q.IsReady())
                    {
                        Usables.FrostQueen();
                        Usables.ProtoBelt();
                        Spells.Q.Cast(enemy);
                    }
                    else if (Spells.W.IsReady())
                    {
                        Spells.W.Cast(enemy);
                    }
                    else if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(Player);
                    }
                    break;

                case 1:
                    if (Spells.R.IsReady() && Spells.W.IsReady())
                    {
                        Spells.R.Cast();
                    }
                    else if (Spells.W.IsReady())
                    {
                        Spells.W.Cast(enemy);
                    }
                    else if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(Player);
                    }
                    else if (Spells.Q.IsReady())
                    {
                        Usables.FrostQueen();
                        Usables.ProtoBelt();
                        Spells.Q.Cast(enemy);
                    }
                    break;

                case 2:
                    if (Spells.R.IsReady() && Spells.E.IsReady())
                    {
                        Spells.R.Cast();
                    }
                    else if (Spells.E.IsReady())
                    {
                        Spells.E.Cast(Player);
                    }
                    else if (Spells.W.IsReady())
                    {
                        Spells.W.Cast(enemy);
                    }
                    else if (Spells.Q.IsReady())
                    {
                        Usables.FrostQueen();
                        Usables.ProtoBelt();
                        Spells.Q.Cast(enemy);
                    }
                    break;

                // Auto
                case 3:
                    if (Player.HealthPercent <= 30 && enemy.HealthPercent >= 50)
                    {
                        goto case 2;
                    }
                    if (!enemy.LSIsFacing(Player))
                    {
                        goto case 1;
                    }
                    goto case 0;
                }
            }
        }
示例#25
0
        public static void Flee()
        {
            if (MenuConfig.WallFlee && ObjectManager.Player.CountEnemiesInRange(1500) == 0)
            {
                var end        = Player.ServerPosition.Extend(Game.CursorPos, 350);
                var isWallDash = FleeLogic.IsWallDash(end, 350);

                var eend      = Player.ServerPosition.Extend(Game.CursorPos, 350);
                var wallE     = FleeLogic.GetFirstWallPoint(Player.ServerPosition, eend);
                var wallPoint = FleeLogic.GetFirstWallPoint(Player.ServerPosition, end);

                Player.GetPath(wallPoint);

                if (Spells.Q.IsReady() && Qstack < 3)
                {
                    Spells.Q.Cast(Game.CursorPos);
                }

                if (Qstack != 3 || !isWallDash)
                {
                    return;
                }

                Player.IssueOrder(GameObjectOrder.MoveTo, wallPoint);

                if (Spells.E.IsReady() && wallPoint.Distance(Player.ServerPosition) <= Spells.E.Range)
                {
                    Spells.E.Cast(wallE);

                    Utility.DelayAction.Add(190, () => Spells.Q.Cast(wallPoint));
                }

                if (wallPoint.Distance(Player.ServerPosition) <= 65)
                {
                    Spells.Q.Cast(wallPoint);
                }
            }
            else
            {
                var enemy = HeroManager.Enemies.Where(target => BackgroundData.InRange(target) && Spells.W.IsReady());

                var x = Player.Position.Extend(Game.CursorPos, 300);

                var targets = enemy as Obj_AI_Hero[] ?? enemy.ToArray();

                if (Spells.W.IsReady() && targets.Any())
                {
                    foreach (var target in targets)
                    {
                        if (BackgroundData.InRange(target))
                        {
                            Spells.W.Cast();
                        }
                    }
                }

                if (Spells.Q.IsReady() && !Player.IsDashing())
                {
                    Spells.Q.Cast(Game.CursorPos);
                }

                if (MenuConfig.FleeYomuu)
                {
                    Usables.CastYoumoo();
                }

                if (Spells.E.IsReady() && !Player.IsDashing())
                {
                    Spells.E.Cast(x);
                }
            }
        }
示例#26
0
        public static void Flee()
        {
            if (MenuConfig.WallFlee && Player.CountEnemiesInRange(1200) == 0)
            {
                var end        = Player.ServerPosition.Extend(Game.CursorPos, 350).To3D();
                var isWallDash = FleeLogic.IsWallDash(end, 350);

                var eend      = Player.ServerPosition.Extend(Game.CursorPos, 350).To3D();
                var wallE     = FleeLogic.GetFirstWallPoint(Player.ServerPosition, eend);
                var wallPoint = FleeLogic.GetFirstWallPoint(Player.ServerPosition, end);

                Player.GetPath(wallPoint);

                if (Spells.Q.IsReady() && Qstack < 3)
                {
                    Spells.Q.Cast(Game.CursorPos);
                }

                if (Qstack != 3 || !isWallDash)
                {
                    return;
                }

                if (Spells.E.IsReady() && wallPoint.Distance(Player.ServerPosition) <= Spells.E.Range)
                {
                    Spells.E.Cast(wallE);
                    EloBuddy.SDK.Core.DelayAction(() => Spells.Q.Cast(wallPoint), 190);
                }
                else if (wallPoint.Distance(Player.ServerPosition) <= 65)
                {
                    Spells.Q.Cast(wallPoint);
                }
                else
                {
                    EloBuddy.SDK.Orbwalker.MoveTo(wallPoint);
                }
            }
            else
            {
                var enemy = EntityManager.Enemies.Where(target => BackgroundData.InRange(target) && Spells.W.IsReady());

                var x = Player.Position.Extend(Game.CursorPos, 300).To3D();

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

                if (Spells.W.IsReady() && targets.Any())
                {
                    foreach (var target in targets)
                    {
                        if (BackgroundData.InRange(target))
                        {
                            Spells.W.Cast();
                        }
                    }
                }

                if (Spells.Q.IsReady())// && !Player.IsDashing())
                {
                    Spells.Q.Cast(Game.CursorPos);
                }

                if (MenuConfig.FleeYomuu)
                {
                    Usables.CastYoumoo();
                }

                if (Spells.E.IsReady())// && !Player.IsDashing())
                {
                    Spells.E.Cast(x);
                }
            }
        }
示例#27
0
        public static void Flee()
        {
            if (MenuConfig.WallFlee)
            {
                var end        = Player.PreviousPosition.Extend(Game.CursorPosRaw, Spells.Q.Range);
                var isWallDash = FleeLogic.IsWallDash(end, Spells.Q.Range);

                var eend      = Player.PreviousPosition.Extend(Game.CursorPosRaw, Spells.E.Range);
                var wallE     = FleeLogic.GetFirstWallPoint(Player.PreviousPosition, eend);
                var wallPoint = FleeLogic.GetFirstWallPoint(Player.PreviousPosition, end);
                Player.GetPath(wallPoint);

                if (Spells.Q.IsReady() && Qstack < 3)
                {
                    Spells.Q.Cast(Game.CursorPosRaw);
                }


                if (!isWallDash || Qstack != 3 || !(wallPoint.Distance(Player.PreviousPosition) <= 800))
                {
                    return;
                }

                ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, wallPoint);

                if (!(wallPoint.Distance(Player.PreviousPosition) <= 600))
                {
                    return;
                }

                ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, wallPoint);

                if (!(wallPoint.Distance(Player.PreviousPosition) <= 45))
                {
                    return;
                }

                if (Spells.E.IsReady())
                {
                    Spells.E.Cast(wallE);
                }

                if (Qstack != 3 || !(end.Distance(Player.Position) <= 260) || !wallPoint.IsValid())
                {
                    return;
                }

                Player.IssueOrder(GameObjectOrder.MoveTo, wallPoint);
                Spells.Q.Cast(wallPoint);
            }
            else
            {
                var enemy = HeroManager.Enemies.Where(target => target.IsValidTarget(Player.HasBuff("RivenFengShuiEngine")
                           ? 70 + 195 + Player.BoundingRadius
                           : 70 + 120 + Player.BoundingRadius) && Spells.W.IsReady());

                var x             = Player.Position.Extend(Game.CursorPosRaw, 300);
                var objAitargetes = enemy as AIHeroClient[] ?? enemy.ToArray();
                if (Spells.W.IsReady() && objAitargetes.Any())
                {
                    foreach (var target in objAitargetes)
                    {
                        if (InWRange(target))
                        {
                            Spells.W.Cast();
                        }
                    }
                }
                if (Spells.Q.IsReady() && !Player.IsDashing())
                {
                    Spells.Q.Cast(Game.CursorPosRaw);
                }

                if (MenuConfig.FleeYomuu)
                {
                    Usables.CastYoumoo();
                }

                if (Spells.E.IsReady() && !Player.IsDashing())
                {
                    Spells.E.Cast(x);
                }
            }
        }