Beispiel #1
0
 protected override void OnAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (!unit.IsMe) return;
     if (unit.IsMe)
     {
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Combo)
         {
             if (config.Item("UseWCombo").GetValue<bool>() &&
                 !Player.IsWindingUp &&
                 W.IsReady() &&
                 target.IsValidTarget() && Orbwalking.InAutoAttackRange(target)) W.Cast();
         }
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Harass)
         {
             if (config.Item("UseWHarass").GetValue<bool>() &&
                 !Player.IsWindingUp &&
                 W.IsReady() &&
                 target.IsValidTarget() && Orbwalking.InAutoAttackRange(target)) W.Cast();
         }
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.JungleClear)
         {
             if (target is Obj_AI_Minion && target.Team == GameObjectTeam.Neutral && !target.Name.Contains("Mini") &&
                 !Player.IsWindingUp && Orbwalking.InAutoAttackRange(target))
             {
                 if (W.IsReady() && config.Item("UseWJFarm").GetValue<bool>()) W.Cast();
             }
         }
     }
 }
Beispiel #2
0
 private void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (unit.IsMe)
         if (target.Type == GameObjectType.obj_AI_Hero)
             switch (MenuProvider.Orbwalker.ActiveMode)
             {
                 case Orbwalking.OrbwalkingMode.LastHit:
                     break;
                 case Orbwalking.OrbwalkingMode.Mixed:
                     break;
                 case Orbwalking.OrbwalkingMode.LaneClear:
                     break;
                 case Orbwalking.OrbwalkingMode.Combo:
                     if (MenuProvider.Champion.Combo.UseQ)
                         if (target.IsValidTarget(_q.Range))
                             if (_q.IsReadyPerfectly())
                                 _q.CastOnUnit(target as Obj_AI_Base);
                     break;
                 case Orbwalking.OrbwalkingMode.None:
                     if (MenuProvider.Champion.Harass.UseQ)
                         if (target.IsValidTarget(_q.Range))
                             if (_q.IsReadyPerfectly())
                                 _q.CastOnUnit(target as Obj_AI_Base);
                     break;
                 default:
                     break;
             }
 }
Beispiel #3
0
 internal static float GetRealAutoAttackRange(this AttackableUnit unit, AttackableUnit target, int AutoAttackRange)
 {
     float result = AutoAttackRange + unit.BoundingRadius;
     if (target.IsValidTarget())
         return result + target.BoundingRadius;
     return result;
 }
Beispiel #4
0
        private void AfterAttack(AttackableUnit unit, AttackableUnit target)
        {
            if (!unit.IsMe || !unit.IsValid<Obj_AI_Base>())
            {
                return;
            }

            if (Variables.Spells[SpellSlot.Q].IsEnabledAndReady(ModesMenuExtensions.Mode.Combo)
                || (Variables.Spells[SpellSlot.Q].IsEnabledAndReady(ModesMenuExtensions.Mode.Harrass)
                && ObjectManager.Player.ManaPercent >= Variables.AssemblyMenu.GetItemValue<Slider>("dzaio.champion.extra.mixed.mana").Value))
            {
                if (target.IsValid<Obj_AI_Hero>() && target.IsValidTarget())
                {
                    Variables.Spells[SpellSlot.Q].CastIfHitchanceEquals(target as Obj_AI_Hero, HitChance.High);
                }
            }

            if (Variables.Spells[SpellSlot.W].IsEnabledAndReady(ModesMenuExtensions.Mode.Combo)
                || (Variables.Spells[SpellSlot.W].IsEnabledAndReady(ModesMenuExtensions.Mode.Harrass)
                && ObjectManager.Player.ManaPercent >= Variables.AssemblyMenu.GetItemValue<Slider>("dzaio.champion.extra.mixed.mana").Value))
            {
                if (target.IsValid<Obj_AI_Hero>() && target.IsValidTarget())
                {
                    Variables.Spells[SpellSlot.W].CastIfHitchanceEquals(target as Obj_AI_Hero, HitChance.High);
                }
            }
        }
Beispiel #5
0
        private static void OrbwalkingOnAfterAttack(AttackableUnit unit, AttackableUnit target)
        {
            if (!unit.IsMe)
            {
                return;
            }
            if (!(target is Obj_AI_Hero))
            {
                return;
            }

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

            if (Hydra.IsReady())
            {
                Hydra.Cast();
            }
            else if (Tiamat.IsReady())
            {
                Tiamat.Cast();
            }
        }
Beispiel #6
0
        public int CustomInAutoattackRange(AttackableUnit target)
        {
            if (Orbwalking.InAutoAttackRange(target))
            {
                return 1;
            }

            if (!target.IsValidTarget())
            {
                return 0;
            }

            //Azir's soldiers can't attack structures.
            if (!(target is Obj_AI_Base))
            {
                return 0;
            }

            var soldierAArange = _soldierAARange + 65 + target.BoundingRadius;
            soldierAArange *= soldierAArange;
            foreach (var soldier in SoldiersManager.ActiveSoldiers)
            {
                if (soldier.Distance(target, true) <= soldierAArange)
                {
                    return 2;
                }
            }

            return 0;
        }
Beispiel #7
0
 protected override void OnAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (!unit.IsMe) return;
     if (unit.IsMe )
     {
         if (target is Obj_AI_Hero && target.IsValid<Obj_AI_Hero>() && target.IsValidTarget())
         {
             if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Combo)
             {
                 if (config.Item("UseItemCombo").GetValue<bool>() && !Player.IsWindingUp)
                 {
                     myUtility.UseItems(2, null);
                 }
                 if (config.Item("UseQCombo").GetValue<bool>() && !Player.IsWindingUp && Orbwalking.InAutoAttackRange(target) && Q.IsReady())
                 {
                     Q.Cast();
                 }
             }
         }
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.LaneClear)
         {
             if (target is Obj_AI_Turret && target.Team != Player.Team &&
                 config.Item("UseQMisc").GetValue<bool>() &&
                 !Player.IsWindingUp && Orbwalking.InAutoAttackRange(target) && Q.IsReady())
             {
                 Q.Cast();
             }
         }
     }
 }
Beispiel #8
0
 protected override void OnAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (!unit.IsMe) return;
     if (unit.IsMe && !Player.IsWindingUp && E.IsReady() && target.IsValidTarget())
     {
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Combo && target is Obj_AI_Hero)
         {
             if (config.Item("UseECombo").GetValue<bool>()) E.Cast();
         }
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Harass && target is Obj_AI_Hero)
         {
             if (config.Item("UseEHarass").GetValue<bool>()) E.Cast();
         }
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.LaneClear && target is Obj_AI_Minion)
         {
             if (config.Item("UseEFarm").GetValue<bool>() && (myUtility.PlayerManaPercentage > config.Item("FarmMana").GetValue<Slider>().Value)) E.Cast();
         }
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.LaneClear)
         {
             if (target is Obj_AI_Turret && target.Team != Player.Team &&
                 config.Item("UseEMisc").GetValue<bool>() &&
                 !Player.IsWindingUp && Orbwalking.InAutoAttackRange(target))
             {
                 E.Cast();
             }
         }
     }
 }
Beispiel #9
0
 internal static void AfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (target.IsValidTarget() && unit.IsValid<Obj_AI_Hero>() && unit.IsMe)
     {
         LastTarget = target;
     }
 }
Beispiel #10
0
 private static void AfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (GravesMenu.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && Helper.Enabled("graves.e.combo") && GravesSpells.E.IsReady()
         && target.IsValidTarget(GravesSpells.Q.Range))
     {
         GravesSpells.E.Cast(Game.CursorPos);
     }
 }
Beispiel #11
0
 private static void AfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (SivirMenu.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && Helper.SEnabled("sivir.w.combo") && SivirSpells.W.IsReady()
          && target.IsValidTarget(SivirSpells.W.Range))
     {
         SivirSpells.W.Cast();
     }
 }
Beispiel #12
0
 private static void CorkiAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (CorkiMenu.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && Helper.CEnabled("corki.e.combo") && CorkiSpells.E.IsReady()
         && target.IsValidTarget(CorkiSpells.E.Range-100))
     {
         CorkiSpells.E.Cast(target.Position);
     }
 }
Beispiel #13
0
        public static void Tumble(this Vector3 to, AttackableUnit afterTumbleTarget)
        {
            Player.CastSpell(SpellSlot.Q, to);

            if (afterTumbleTarget != null && afterTumbleTarget.IsValidTarget(Player.Instance.GetAutoAttackRange()))
            {
                Player.IssueOrder(GameObjectOrder.AttackUnit, afterTumbleTarget);
            }
        }
 public static void OnAttackJungleClear(AttackableUnit unit, AttackableUnit target)
 {
     if (target.IsValidTarget() && target.Team != GameObjectTeam.Neutral)
         return;
     if (WJungleClear && W.IsReady())
     {
         W.Cast();
     }
 }
Beispiel #15
0
 public static float GetRealAutoAttackRange(Obj_AI_Hero attacker, AttackableUnit target)
 {
     var result = attacker.AttackRange + attacker.BoundingRadius;
     if (target.IsValidTarget())
     {
         return result + target.BoundingRadius;
     }
     return result;
 }
Beispiel #16
0
 public static void CheckNonKillables(AttackableUnit minion)
 {
     if (!SMenu.Item(Handlers.RendHandler._MenuItemBase + "Boolean.RendNonKillables").GetValue<bool>()) return;
         if (!Limiter.CheckDelay($"{Humanizer.DelayItemBase}Slider.NonKillableDelay")) return;
         if (!(minion.Health <= Damage.DamageCalc.CalculateRendDamage((Obj_AI_Base)minion)) || minion.Health > 60) return;
         if (!minion.IsValidTarget(Champion.E.Range))return;
         Limiter.UseTick($"{Humanizer.DelayItemBase}Slider.NonKillableDelay");
         Champion.E.Cast();
 }
Beispiel #17
0
        private static void OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args)
        {
            if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) return;

            if (Q.IsReady() && target.IsValidTarget(Q.Range) && !target.IsZombie)
            {
                Q.Cast(target.Position);
            }
        }
Beispiel #18
0
        /// <summary>
        /// Checks if target is in unit's auto attack range
        /// </summary>
        /// <param name="target">Target</param>
        /// <param name="_unit">Unit to check range</param>
        /// <returns>true if in auto attack range</returns>
        public static bool InAARange(AttackableUnit target, Obj_AI_Base _unit = null)
        {
            if (!target.IsValidTarget())
                return false;

            Obj_AI_Base unit = CorrectUnit(_unit);
            float range = GetRealAARange(target, _unit);
            return Vector2.DistanceSquared(target.Position.To2D(), unit.ServerPosition.To2D()) <= range * range;
        }
Beispiel #19
0
 protected override void OnAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (!unit.IsMe) return;
     if (unit.IsMe && W.IsReady() && !WBuff)
     {
         if (target is Obj_AI_Hero && target.IsValidTarget())
         {
             if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Combo)
             {
                 if (config.Item("UseItemCombo").GetValue<bool>() && !Player.IsWindingUp)
                 {
                     myUtility.UseItems(2, null);
                 }
                 if (config.Item("UseWCombo").GetValue<bool>() && !Player.IsWindingUp && Fury)
                 {
                    W.Cast();
                 }
             }
         }
         if (target is Obj_AI_Minion && target.IsValidTarget())
         {
             if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.LaneClear)
             {
                 if (config.Item("UseWFarm").GetValue<bool>())
                 {
                     if (W.IsKillable((Obj_AI_Minion)target))
                     {
                         W.Cast();
                     }
                 }
             }
             if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.JungleClear)
             {
                 if (config.Item("UseWJFarm").GetValue<bool>())
                 {
                     if (W.IsKillable((Obj_AI_Minion)target))
                     {
                         W.Cast();
                     }
                 }
             }
         }
     }
 }
Beispiel #20
0
 protected override void OnAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (!unit.IsMe) return;
     if (unit.IsMe && Q.IsReady())
     {
         if (target.Name.ToLower().Contains("ward"))
         {
             Q.Cast();
             Player.IssueOrder(GameObjectOrder.AttackUnit, target);
         }
         if (target is Obj_AI_Minion && target.IsValidTarget() && !Player.IsWindingUp)
         {
             if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.LaneClear && config.Item("UseQFarm").GetValue<bool>())
             {
                 if (myUtility.PlayerManaPercentage < config.Item("FarmMana").GetValue<Slider>().Value) return;
                 if (Q.IsKillable((Obj_AI_Minion)target) ||
                     (Player.GetAutoAttackDamage((Obj_AI_Minion)target) + Player.GetSpellDamage((Obj_AI_Minion)target, SpellSlot.Q)) >= target.Health)
                 {
                     Q.Cast();
                     Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                 }
             }
         }
         if (target is Obj_AI_Hero && target.IsValidTarget() && !Player.IsWindingUp)
         {
             if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Combo && config.Item("UseQCombo").GetValue<bool>() )
             {
                 if (myUtility.ImmuneToCC((Obj_AI_Hero)target) || myUtility.ImmuneToMagic((Obj_AI_Hero)target)) return;
                 Q.Cast();
                 Player.IssueOrder(GameObjectOrder.AttackUnit, target);
             }
             if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Harass && config.Item("UseQHarass").GetValue<bool>())
             {
                 Q.Cast();
                 Player.IssueOrder(GameObjectOrder.AttackUnit, target);
             }
         }
     }
 }
Beispiel #21
0
        public static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args)
        {
            if (Program.ComboMenu["useRCombo"].Cast<CheckBox>().CurrentValue && target.IsValidTarget() && target is AIHeroClient)
            {
                if (Program.ComboMenu["noRUnderTurret"].Cast<CheckBox>().CurrentValue &&
                    ((AIHeroClient)target).IsUnderAlliedTurret())
                {
                    return;
                }

                Program.R.Cast();
            }
        }
Beispiel #22
0
 public override bool InAutoAttackRange(AttackableUnit target)
 {
     if (!target.IsValidTarget())
         return false;
     if (Orbwalking.InAutoAttackRange(target))
         return true;
     if (!(target is Obj_AI_Base))
         return false;
     if (InSoldierAttackRange(target))
     {
         return true;
     }
     return false;
 }
Beispiel #23
0
 private static void AfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (Ferocity == 5 && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
     {
         if (unit.IsMe && spells[Spells.Q].IsReady() && target is Obj_AI_Hero && target.IsValidTarget())
         {
             spells[Spells.Q].Cast();
             if (RengarQ || RengarE)
             {
                 Orbwalking.ResetAutoAttackTimer();
             }
         }
     }
 }
Beispiel #24
0
        /*
        Before Attack
        */

        private static void OnBeforeAttack(AttackableUnit target, EventArgs args)
        {
            if (target is AIHeroClient &&
                target.IsValidTarget() && Misc.getSliderValue(ComboMenu, "cPrio") == 1)
            {
                if (Ferocity <= 4 && _Player.IsInAutoAttackRange(target))
                    Q.Cast();
                if (Ferocity == 5 && Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Combo &&
                    _Player.IsInAutoAttackRange(target))
                    Q.Cast();
                if (Ferocity == 5 && Q.IsReady() && Passive())
                    Q.Cast();
            }
        }
Beispiel #25
0
 protected override void OnAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (!unit.IsMe) return;
     if (unit.IsMe)
     {
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Combo)
         {
             if (config.Item("UseWCombo").GetValue<bool>() &&
                 !Player.IsWindingUp &&
                 W.IsReady() &&
                 target.IsValidTarget()) W.Cast();
         }
     }
 }
Beispiel #26
0
 public static void OnPostAttack(AttackableUnit unit, EventArgs args)
 {
     var tentaclesNear = TentacleList.FindAll(x => x.Distance(unit) <= Spells.Q.Range).Count;
     switch (Orbwalker.ActiveModesFlags)
     {
         case Orbwalker.ActiveModes.Combo:
         {
             if (unit.Type == GameObjectType.AIHeroClient)
             {
                 if (Init.ComboMenu["useW"].Cast<CheckBox>().CurrentValue)
                     if (Spells.W.IsReady())
                     {
                         if (unit.IsValidTarget(450))
                         {
                             Spells.W.Cast();
                         }
                     }
             }
             break;
         }
         case Orbwalker.ActiveModes.Harass:
         {
             if (unit.Type == GameObjectType.AIHeroClient)
             {
                 if (Init.ComboMenu["useW"].Cast<CheckBox>().CurrentValue)
                     if (Spells.W.IsReady() && tentaclesNear > 0)
                     {
                         if (unit.IsValidTarget(450))
                         {
                             Spells.W.Cast();
                         }
                     }
             }
             break;
         }
     }
 }
Beispiel #27
0
 protected override void OnAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (!unit.IsMe) return;
     if (unit.IsMe && W.IsReady() && target.IsValidTarget())
     {
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Combo && target is Obj_AI_Hero)
         {
             if (config.Item("UseWCombo").GetValue<bool>()) W.Cast();
         }
         if (myOrbwalker.ActiveMode == myOrbwalker.OrbwalkingMode.Harass && target is Obj_AI_Hero)
         {
             if (config.Item("UseWHarass").GetValue<bool>()) W.Cast();
         }
     }
 }
Beispiel #28
0
        private static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args)
        {
            if (!loaded)
            {
                return;
            }
            if (!target.IsEnemy || !(target is AIHeroClient))
            {
                return;
            }

            var useHydra = OffMenu["Hydra"].Cast<CheckBox>().CurrentValue
                           && ((Hydra.IsOwned(Player.Instance) && Hydra.IsReady()) || (Timat.IsOwned(Player.Instance) && Timat.IsReady())
                               || (Titanic.IsOwned(Player.Instance) && Titanic.IsReady()));
            var flags = Orbwalker.ActiveModesFlags;
            if (flags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                if (Youmuu.IsReady() && Youmuu.IsOwned(Player.Instance) && target.IsValidTarget(500) && OffMenu.GetCheckbox("useGhostblade"))
                {
                    Youmuu.Cast();
                }
                if (useHydra)
                {
                    if (Hydra.IsOwned() && Hydra.IsReady() && Hydra != null)
                    {
                        if (Hydra.Cast())
                        {
                            Orbwalker.ResetAutoAttack();
                        }
                    }

                    if (Timat.IsOwned() && Timat.IsReady() && Timat != null)
                    {
                        if (Timat.Cast())
                        {
                            Orbwalker.ResetAutoAttack();
                        }
                    }
                    if (Titanic.IsOwned() && Titanic.IsReady() && Titanic != null)
                    {
                        if (Titanic.Cast())
                        {
                            Orbwalker.ResetAutoAttack();
                        }
                    }
                }
            }
        }
Beispiel #29
0
 private static void AfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (Ferocity == 5 && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
     {
         if (unit.IsMe && spells[Spells.Q].IsReady() && target is Obj_AI_Hero && target.IsValidTarget())
         {
             spells[Spells.Q].Cast();
             if (RengarQ || RengarE)
             {
                 Orbwalking.ResetAutoAttackTimer();
                 Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                 Console.WriteLine("Orbwalker Reset in AfterAttack");
             }
         }
     }
 }
Beispiel #30
0
 private static void After_Attack(AttackableUnit unit, AttackableUnit target)
 {
     var targets = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);
     var usew = Config.Item("comboMenu.usew").GetValue<bool>();
     if (targets == null)
         return;
     if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo
         || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear
         || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed)
     {
         
         if (usew && target.IsValidTarget(Player.AttackRange) && W.IsReady())
         {
             W.Cast();
         }
     }
 }
 /// <summary>
 ///     Returns if our hero is currently able to perform the orbwalking process on another <see cref="AttackableUnit" />
 /// </summary>
 /// <param name="target">Type of <see cref="AttackableUnit" /></param>
 /// <returns></returns>
 public static bool CanGetOrbwalked(this AttackableUnit target)
 {
     return(target != null && target.IsValidTarget() && target.InAutoAttackRange());
 }
Beispiel #32
0
 private void OnAfterAa(AttackableUnit target, EventArgs args)
 {
     if (MenuManager.Modes.Misc.WaitAAForQ)
     {
         if (target != null && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && target.IsValidTarget(Player.Instance.GetAutoAttackRange() + SpellManager.Q.Range))
         {
             var enemy = ObjectManager.GetUnitByNetworkId <Obj_AI_Base>((uint)target.NetworkId);
             actionManager.EnqueueAction(
                 comboQueue,
                 () => CanCastQ(Orbwalker.ActiveModes.Combo),
                 () => SpellManager.Q.Cast(Game.CursorPos),
                 () => !CanCastQ(Orbwalker.ActiveModes.Combo));
         }
     }
     if (target != null && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) && target.IsValidTarget(Player.Instance.GetAutoAttackRange() + SpellManager.Q.Range))
     {
         var enemy = ObjectManager.GetUnitByNetworkId <Obj_AI_Base>((uint)target.NetworkId);
         actionManager.EnqueueAction(
             harassQueue,
             () => CanCastQ(Orbwalker.ActiveModes.Harass),
             () => SpellManager.Q.Cast(ExtensionsHelpers.BestTumblePost(enemy)),
             () => !CanCastQ(Orbwalker.ActiveModes.Harass));
     }
     else if (target != null && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) && target.IsValidTarget(Player.Instance.GetAutoAttackRange() + SpellManager.Q.Range) && Orbwalker.LastTarget != target)
     {
         var enemy = ObjectManager.GetUnitByNetworkId <Obj_AI_Base>((uint)target.NetworkId);
         actionManager.EnqueueAction(
             lastHitQueue,
             () => CanCastQ(Orbwalker.ActiveModes.LastHit),
             () => SpellManager.Q.Cast(ExtensionsHelpers.BestTumblePost(enemy)),
             () => !CanCastQ(Orbwalker.ActiveModes.LastHit));
     }
     else if (target != null && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && target.IsValidTarget(Player.Instance.GetAutoAttackRange() + SpellManager.Q.Range))
     {
         var enemy = ObjectManager.GetUnitByNetworkId <Obj_AI_Base>((uint)target.NetworkId);
         actionManager.EnqueueAction(
             laneQueue,
             () => CanCastQ(Orbwalker.ActiveModes.LaneClear),
             () => SpellManager.Q.Cast(ExtensionsHelpers.BestTumblePost(enemy)),
             () => !CanCastQ(Orbwalker.ActiveModes.LaneClear));
     }
     else if (target != null && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear) && target.IsValidTarget(Player.Instance.GetAutoAttackRange() + SpellManager.Q.Range))
     {
         var enemy = ObjectManager.GetUnitByNetworkId <Obj_AI_Base>((uint)target.NetworkId);
         actionManager.EnqueueAction(
             jungleQueue,
             () => CanCastQ(Orbwalker.ActiveModes.JungleClear),
             () => SpellManager.Q.Cast(ExtensionsHelpers.BestTumblePost(enemy)),
             () => !CanCastQ(Orbwalker.ActiveModes.JungleClear));
     }
 }
Beispiel #33
0
            internal static void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit target)
            {
                if (!unit.IsMe || target == null || target.IsDead || unit.IsDead || (target.Type != GameObjectType.obj_AI_Minion && target.Type != GameObjectType.obj_AI_Hero))
                {
                    return;
                }

                var itemone = AfterAttack.itemsList.FirstOrDefault(x => Items.CanUseItem((int)x.Id) && target.IsValidTarget(x.Range) && Menu.Item("AfterAttack.Use " + x.Id.ToString()).GetValue <bool>());

                if (itemone != null)
                {
                    var Minions = MinionManager.GetMinions(Orbwalking.GetRealAutoAttackRange(Player), MinionTypes.All, MinionTeam.Enemy);
                    var Mobs    = MinionManager.GetMinions(Orbwalking.GetRealAutoAttackRange(Player), MinionTypes.All, MinionTeam.Neutral);
                    if ((Menu.Item("Misc.Cb").GetValue <bool>() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo ||
                         Menu.Item("Misc.Hr").GetValue <bool>() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed) && !AIO ||
                        Menu.Item("Misc.Jc").GetValue <bool>() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && Mobs.Count > 0 ||
                        Menu.Item("Misc.Lc").GetValue <bool>() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && Minions.Count > 0)
                    {
                        if (Menu.Item("AfterAttack.SF").GetValue <bool>())
                        {
                            if (SkillCasted)
                            {
                                if (itemone.isTargeted)
                                {
                                    Items.UseItem(itemone.Id, (Obj_AI_Hero)target);
                                }
                                else
                                {
                                    Items.UseItem(itemone.Id);
                                }
                            }
                        }
                        else
                        {
                            if (itemone.isTargeted)
                            {
                                Items.UseItem(itemone.Id, (Obj_AI_Base)target);
                            }
                            else
                            {
                                Items.UseItem(itemone.Id);
                            }
                        }
                    }
                }
            }
Beispiel #34
0
 internal static bool IsMinion(this AttackableUnit target)
 {
     return(target != null && target.IsValidTarget() && target.Type == GameObjectType.obj_AI_Minion &&
            !target.Name.ToLower().Contains("plant") && target.Team != GameObjectTeam.Neutral);
 }
Beispiel #35
0
 /// <summary>
 ///     Returns true if the target is in auto-attack range.
 /// </summary>
 /// <param name="target">
 ///     The target.
 /// </param>
 /// <returns>
 ///     The <see cref="bool" />.
 /// </returns>
 public static bool InAutoAttackRange(this AttackableUnit target)
 {
     return(target.IsValidTarget() && target.Distance(GameObjects.Player) < target.GetRealAutoAttackRange());
 }
Beispiel #36
0
 private static float GetAutoAttackRange(Obj_AI_Base source, AttackableUnit target)
 {
     return(source.AttackRange + source.BoundingRadius + (target.IsValidTarget() ? target.BoundingRadius : 0));
 }
Beispiel #37
0
        private void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit argsTarget)
        {
            if (!unit.IsMe || unit.IsDead || argsTarget == null || argsTarget.IsDead || !argsTarget.IsValidTarget() ||
                argsTarget.ObjectType != GameObjectType.AIHeroClient)
            {
                return;
            }

            if (Main.Get <MenuCheckbox>("CQ").Checked&& Q.IsReady() &&
                MyOrb.ActiveMode == Orbwalker.OrbwalkingMode.Combo)
            {
                Q.Cast();
            }
        }
Beispiel #38
0
 private static void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     if (unit.IsMe)
     {
         switch (MenuProvider.Orbwalker.ActiveMode)
         {
         case Orbwalking.OrbwalkingMode.Combo:
             var Item = ActiveItemList.FirstOrDefault(x => Menu.Item("Offensive.Use" + x.ID).GetValue <bool>() && x.When.Contains(When.AfterAttack) && Items.CanUseItem((int)x.ID) && target.IsValidTarget(x.Range) && ObjectManager.Player.ManaPercent <= x.MinMyHP && target.ManaPercent <= x.MinTargetHP);
             if (Item != null)
             {
                 Items.UseItem((int)Item.ID, Item.isTargeted ? target as Obj_AI_Base : null);
             }
             break;
         }
     }
 }
Beispiel #39
0
 public static bool InAutoAttackRange(AttackableUnit target, float extraRange = 0, Vector3 from = new Vector3())
 {
     return(target.IsValidTarget(GetAutoAttackRange(target) + extraRange, true, from));
 }
Beispiel #40
0
        private static AttackableUnit GetPossibleTarget()
        {
            AttackableUnit Target = null;

            if (Config.Item("OW_Misc_PriorityUnit").GetValue <StringList>().SelectedIndex == 1 && (CurrentMode == Mode.Harass || CurrentMode == Mode.LaneClear))
            {
                Target = GetBestHeroTarget();
                if (Target.IsValidTarget())
                {
                    return(Target);
                }
            }
            if (CurrentMode == Mode.Harass || CurrentMode == Mode.LaneClear || CurrentMode == Mode.LastHit)
            {
                foreach (var Obj in ObjectManager.Get <Obj_AI_Minion>().Where(i => InAutoAttackRange(i) && i.Team != GameObjectTeam.Neutral && MinionManager.IsMinion(i, true)))
                {
                    var Time   = (int)(Player.AttackCastDelay * 1000 - 100 + Game.Ping / 2 + 1000 * Player.Distance((AttackableUnit)Obj) / (Player.IsMelee() ? float.MaxValue : Player.BasicAttack.MissileSpeed));
                    var HpPred = HealthPrediction.GetHealthPrediction(Obj, Time, GetCurrentFarmDelay);
                    if (HpPred <= 0)
                    {
                        FireOnNonKillableMinion(Obj);
                    }
                    if (HpPred > 0 && HpPred <= (Player.ChampionName == "Azir" ? GetAzirWDamage(Obj) : Player.GetAutoAttackDamage(Obj, true)))
                    {
                        return(Obj);
                    }
                }
            }
            if (InAutoAttackRange(ForcedTarget))
            {
                return(ForcedTarget);
            }
            if (CurrentMode == Mode.LaneClear)
            {
                foreach (var Obj in ObjectManager.Get <Obj_AI_Turret>().Where(i => InAutoAttackRange(i)))
                {
                    return(Obj);
                }
                foreach (var Obj in ObjectManager.Get <Obj_BarracksDampener>().Where(i => InAutoAttackRange(i)))
                {
                    return(Obj);
                }
                foreach (var Obj in ObjectManager.Get <Obj_HQ>().Where(i => InAutoAttackRange(i)))
                {
                    return(Obj);
                }
            }
            if (CurrentMode != Mode.LastHit)
            {
                Target = GetBestHeroTarget();
                if (Target.IsValidTarget())
                {
                    return(Target);
                }
            }
            if (CurrentMode == Mode.Harass || CurrentMode == Mode.LaneClear)
            {
                Target = ObjectManager.Get <Obj_AI_Minion>().Where(i => InAutoAttackRange(i) && i.Team == GameObjectTeam.Neutral).MaxOrDefault(i => i.MaxHealth);
                if (Target != null)
                {
                    return(Target);
                }
            }
            if (CurrentMode == Mode.LaneClear && !ShouldWait())
            {
                if (InAutoAttackRange(PrevMinion))
                {
                    var HpPred = HealthPrediction.LaneClearHealthPrediction(PrevMinion, (int)(Player.AttackDelay * 1000 * ClearWaitTime), GetCurrentFarmDelay);
                    if (HpPred >= 2 * (Player.ChampionName == "Azir" ? GetAzirWDamage(PrevMinion) : Player.GetAutoAttackDamage(PrevMinion, true)) || Math.Abs(HpPred - PrevMinion.Health) < float.Epsilon)
                    {
                        return(PrevMinion);
                    }
                }
                Target = (from Obj in ObjectManager.Get <Obj_AI_Minion>().Where(i => InAutoAttackRange(i))
                          let HpPred = HealthPrediction.LaneClearHealthPrediction(Obj, (int)(Player.AttackDelay * 1000 * ClearWaitTime), GetCurrentFarmDelay)
                                       where HpPred >= 2 * (Player.ChampionName == "Azir" ? GetAzirWDamage(Obj) : Player.GetAutoAttackDamage(Obj, true)) || Math.Abs(HpPred - Obj.Health) < float.Epsilon
                                       select Obj).MaxOrDefault(i => i.Health);
                if (Target != null)
                {
                    PrevMinion = (Obj_AI_Minion)Target;
                }
            }
            return(Target);
        }
Beispiel #41
0
 /// <summary>
 ///     Orbwalk a target while moving to Position.
 /// </summary>
 public static void Orbwalk(AttackableUnit target,
     Vector3 position,
     float extraWindup = 90,
     float holdAreaRadius = 0,
     bool useFixedDistance = true,
     bool randomizeMinDistance = true,
     bool autoWindup = false,
     bool meleePrediction = true,
     OrbwalkingMode mode = OrbwalkingMode.None,
     bool comboMovement = true,
     bool clearMovement = true)
 {
     try
     {
         if (autoWindup)
         {
             extraWindup = 25 + Game.Ping * (1.4f + Player.AttackCastDelay * 2);
         }
         if (target.IsValidTarget() && CanAttack())
         {
             DisableNextAttack = false;
             FireBeforeAttack(target);
             if (!DisableNextAttack)
             {
                 if (!NoCancelChamps.Contains(Player.ChampionName))
                 {
                     LastAATick = Utils.GameTimeTickCount + Game.Ping + 100 -
                                  (int) (ObjectManager.Player.AttackCastDelay * 1000f);
                     _missileLaunched = false;
                     var d = GetRealAutoAttackRange(target) - 65;
                     if (Player.Distance(target, true) > d * d && !Player.IsMelee)
                     {
                         LastAATick = Utils.GameTimeTickCount + Game.Ping + 400 -
                                      (int) (ObjectManager.Player.AttackCastDelay * 1000f);
                     }
                 }
                 Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                 _lastTarget = target;
                 return;
             }
         }
         if ((!comboMovement && mode == OrbwalkingMode.Combo) ||
             (!clearMovement && mode == OrbwalkingMode.LaneClear))
         {
             return;
         }
         if (CanMove(extraWindup))
         {
             if (player.IsMelee() && meleePrediction && target != null &&
                 target.Position.Distance(player.Position) < GetAutoAttackRange(player, target) &&
                 target is Obj_AI_Hero && Game.CursorPos.Distance(target.Position) < 150)
             {
                 Obj_AI_Hero tar = (Obj_AI_Hero) target;
                 var prediction = AutoAttack.GetPrediction((Obj_AI_Base) target);
                 var pos = prediction.UnitPosition;
                 if (player.Distance(target) > target.BoundingRadius &&
                     !CombatHelper.IsFacing((Obj_AI_Base) target, player.Position, 120f) && tar.IsMoving)
                 {
                     AutoAttack.Delay = player.BasicAttack.SpellCastTime;
                     AutoAttack.Speed = player.BasicAttack.MissileSpeed;
                     MoveTo(pos, holdAreaRadius, false, useFixedDistance, randomizeMinDistance);
                 }
             }
             else
             {
                 MoveTo(position, holdAreaRadius, false, useFixedDistance, randomizeMinDistance);
             }
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.ToString());
     }
 }
Beispiel #42
0
        private void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit target)
        {
            if (unit.IsMe)
            {
                switch (MenuProvider.Orbwalker.ActiveMode)
                {
                case Orbwalking.OrbwalkingMode.Combo:
                {
                    if (target.Type == GameObjectType.AIHeroClient)
                    {
                        if (MenuProvider.Champion.Combo.UseW)
                        {
                            if (_w.IsReadyPerfectly())
                            {
                                if (target.IsValidTarget(_w.Range))
                                {
                                    _w.Cast();
                                }
                            }
                        }
                    }
                    break;
                }

                case Orbwalking.OrbwalkingMode.Mixed:
                {
                    if (target.Type == GameObjectType.AIHeroClient)
                    {
                        if (MenuProvider.Champion.Harass.UseW)
                        {
                            if (_w.IsReadyPerfectly())
                            {
                                if (target.IsValidTarget(_w.Range))
                                {
                                    _w.Cast();
                                }
                            }
                        }
                    }
                    break;
                }

                case Orbwalking.OrbwalkingMode.LaneClear:
                {
                    if (MinionManager.GetMinions(float.MaxValue).Any(x => x.NetworkId == target.NetworkId))
                    {
                        if (MenuProvider.Champion.Laneclear.UseW)
                        {
                            if (_w.IsReadyPerfectly())
                            {
                                if (target.IsValidTarget(_w.Range))
                                {
                                    _w.Cast();
                                }
                            }
                        }
                    }

                    if (
                        MinionManager.GetMinions(float.MaxValue, MinionTypes.All, MinionTeam.Neutral)
                        .Any(x => x.NetworkId == target.NetworkId))
                    {
                        if (MenuProvider.Champion.Jungleclear.UseW)
                        {
                            if (_w.IsReadyPerfectly())
                            {
                                if (target.IsValidTarget(_w.Range))
                                {
                                    _w.Cast();
                                }
                            }
                        }
                    }
                    break;
                }

                default:
                    break;
                }
            }
        }
Beispiel #43
0
        public static void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit target)
        {
            #region Combo
            if (SkyLv_Tristana.Menu.Item("Tristana.AfterAttackModeCombo").GetValue <bool>() && SkyLv_Tristana.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
            {
                var PacketCast = SkyLv_Tristana.Menu.Item("Tristana.UsePacketCastCombo").GetValue <bool>();

                if (target is AIHeroClient)
                {
                    var t = (AIHeroClient)target;
                    if (t.IsValidTarget())
                    {
                        if (SkyLv_Tristana.Menu.Item("Tristana.UseQCombo").GetValue <bool>() && Q.IsReady() && t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(Player)))
                        {
                            Q.Cast(PacketCast);
                        }
                        if (SkyLv_Tristana.Menu.Item("Tristana.UseECombo").GetValue <bool>() && E.IsReady() && t.IsValidTarget(E.Range))
                        {
                            E.CastOnUnit(t, PacketCast);
                        }
                    }
                }
            }
            #endregion

            #region Harass
            if (SkyLv_Tristana.Menu.Item("Tristana.AfterAttackModeHarass").GetValue <bool>() && (SkyLv_Tristana.Menu.Item("Tristana.HarassActive").GetValue <KeyBind>().Active || SkyLv_Tristana.Menu.Item("Tristana.HarassActive2").GetValue <KeyBind>().Active || SkyLv_Tristana.Menu.Item("Tristana.HarassActiveT").GetValue <KeyBind>().Active))
            {
                var PacketCast = SkyLv_Tristana.Menu.Item("Tristana.UsePacketCastHarass").GetValue <bool>();

                var useQ      = SkyLv_Tristana.Menu.Item("Tristana.UseQHarass").GetValue <bool>();
                var MiniManaQ = SkyLv_Tristana.Menu.Item("Tristana.QMiniManaHarass").GetValue <Slider>().Value;
                var useE      = SkyLv_Tristana.Menu.Item("Tristana.UseEHarass").GetValue <bool>();
                var MiniManaE = SkyLv_Tristana.Menu.Item("Tristana.EMiniManaHarass").GetValue <Slider>().Value;

                if (target is AIHeroClient)
                {
                    var t = (AIHeroClient)target;
                    if (t.IsValidTarget())
                    {
                        if (useE && E.IsReady() && target.IsValidTarget(E.Range) && Player.ManaPercent > MiniManaE)
                        {
                            E.CastOnUnit(t, PacketCast);
                        }

                        if (useQ && Q.IsReady() && target.IsValidTarget(Orbwalking.GetRealAutoAttackRange(Player)) && Player.ManaPercent > MiniManaQ)
                        {
                            Q.Cast(PacketCast);
                        }
                    }
                }
            }
            #endregion

            #region LaneClear
            if (SkyLv_Tristana.Menu.Item("Tristana.AfterAttackModeLaneClear").GetValue <bool>() && SkyLv_Tristana.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                var PacketCast = SkyLv_Tristana.Menu.Item("Tristana.UsePacketCastLaneClear").GetValue <bool>();

                var useQ = SkyLv_Tristana.Menu.Item("Tristana.UseQLaneClear").GetValue <bool>();
                var useE = SkyLv_Tristana.Menu.Item("Tristana.UseELaneClear").GetValue <bool>();

                var MiniManaQ = SkyLv_Tristana.Menu.Item("Tristana.QMiniManaLaneClear").GetValue <Slider>().Value;
                var MiniManaE = SkyLv_Tristana.Menu.Item("Tristana.EMiniManaLaneClear").GetValue <Slider>().Value;

                var MiniCountQ = SkyLv_Tristana.Menu.Item("Tristana.QLaneClearCount").GetValue <Slider>().Value;
                var MiniCountE = SkyLv_Tristana.Menu.Item("Tristana.ELaneClearCount").GetValue <Slider>().Value;


                var Minion = MinionManager.GetMinions(E.Range, MinionTypes.All, MinionTeam.Enemy).FirstOrDefault();

                if (Minion.IsValidTarget() && SkyLv_Tristana.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
                {
                    if (SkyLv_Tristana.Menu.Item("Tristana.SafeLaneClear").GetValue <bool>() && Player.CountEnemiesInRange(1500) > 0)
                    {
                        return;
                    }

                    if (useE && Player.ManaPercent > MiniManaE && E.IsReady())
                    {
                        foreach (var minion in ObjectManager.Get <Obj_AI_Minion>().Where(m => m.Team != ObjectManager.Player.Team && !m.IsDead && Player.Distance(m) <= E.Range))
                        {
                            if (CustomLib.EnemyMinionInMinionRange(minion, 300) >= MiniCountE)
                            {
                                if (Player.GetAutoAttackDamage(minion) * 2 > minion.Health && SkyLv_Tristana.Menu.Item("Tristana.UseELaneClearOnlyLastHitable").GetValue <bool>())
                                {
                                    E.CastOnUnit(minion, PacketCast);
                                }
                                if (!SkyLv_Tristana.Menu.Item("Tristana.UseELaneClearOnlyLastHitable").GetValue <bool>())
                                {
                                    E.CastOnUnit(minion, PacketCast);
                                }
                            }
                        }
                    }

                    if (useQ && Player.ManaPercent > MiniManaQ && Q.IsReady())
                    {
                        if (CustomLib.EnemyMinionInPlayerRange(Orbwalking.GetRealAutoAttackRange(Player)) >= MiniCountQ)
                        {
                            Q.Cast(PacketCast);
                        }
                    }
                }
            }
            #endregion

            #region JungleClear
            if (SkyLv_Tristana.Menu.Item("Tristana.AfterAttackModeJungleClear").GetValue <bool>() && SkyLv_Tristana.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                var PacketCast = SkyLv_Tristana.Menu.Item("Tristana.UsePacketCastJungleClear").GetValue <bool>();
                var useQ       = SkyLv_Tristana.Menu.Item("Tristana.UseQJungleClear").GetValue <bool>();
                var useE       = SkyLv_Tristana.Menu.Item("Tristana.UseEJungleClear").GetValue <bool>();

                var MiniManaQ = SkyLv_Tristana.Menu.Item("Tristana.QMiniManaJungleClear").GetValue <Slider>().Value;
                var MiniManaE = SkyLv_Tristana.Menu.Item("Tristana.EMiniManaJungleClear").GetValue <Slider>().Value;

                var MinionN = MinionManager.GetMinions(E.Range + 200, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth).FirstOrDefault();

                if (MinionN.IsValidTarget() && SkyLv_Tristana.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
                {
                    if (SkyLv_Tristana.Menu.Item("Tristana.SafeJungleClear").GetValue <bool>() && Player.CountEnemiesInRange(1500) > 0)
                    {
                        return;
                    }

                    if (useE && Player.ManaPercent > MiniManaE && E.IsReady())
                    {
                        if (SkyLv_Tristana.Menu.Item("Tristana.SpellOnlyBigMonster").GetValue <bool>())
                        {
                            foreach (var monster in ObjectManager.Get <Obj_AI_Base>().Where(monster => SkyLv_Tristana.Monsters.Contains(monster.BaseSkinName) && !monster.IsDead))
                            {
                                E.CastOnUnit(monster, PacketCast);
                            }
                        }
                        else if (!SkyLv_Tristana.Menu.Item("Tristana.SpellOnlyBigMonster").GetValue <bool>())
                        {
                            E.CastOnUnit(MinionN, PacketCast);
                        }
                    }

                    if (useQ && Q.IsReady() && Player.ManaPercent > MiniManaQ)
                    {
                        if (SkyLv_Tristana.Menu.Item("Tristana.SpellOnlyBigMonster").GetValue <bool>())
                        {
                            foreach (var monster in ObjectManager.Get <Obj_AI_Base>().Where(monster => SkyLv_Tristana.Monsters.Contains(monster.BaseSkinName) && !monster.IsDead))
                            {
                                Q.Cast(PacketCast);
                            }
                        }
                        else if (!SkyLv_Tristana.Menu.Item("Tristana.SpellOnlyBigMonster").GetValue <bool>())
                        {
                            Q.Cast(PacketCast);
                        }
                    }
                }
            }
            #endregion
        }
Beispiel #44
0
        /// <summary>
        /// Gets orbwalker target
        /// </summary>
        /// <returns></returns>
        public AttackableUnit GetTarget()
        {
            bool wait = false;

            if (ActiveMode == Mode.LaneClear)
            {
                wait = ShouldWait();
            }

            if (ActiveMode == Mode.LaneClear || ActiveMode == Mode.LastHit || ActiveMode == Mode.Mixed)
            {
                //turret farming
                if (m_towerTarget != null && m_sourceTower != null && m_sourceTower.IsValidTarget(float.MaxValue, false) && m_towerTarget.IsValidTarget() && CanOrbwalkTarget(m_towerTarget, ObjectManager.Player.AttackRange + 150f))
                {
                    float health = m_towerTarget.Health - Damage.Prediction.GetPrediction(m_towerTarget, (m_towerTarget.Distance(m_sourceTower.ServerPosition) / m_sourceTower.BasicAttack.MissileSpeed + m_sourceTower.AttackCastDelay) * 1000f);
                    if (Damage.Prediction.IsLastHitable(m_towerTarget))
                    {
                        return(m_towerTarget);
                    }

                    if (m_towerTarget.Health - m_sourceTower.GetAutoAttackDamage(m_towerTarget) * 2f > 0)
                    {
                        return(null);
                    }

                    else if (m_towerTarget.Health - m_sourceTower.GetAutoAttackDamage(m_towerTarget) > 0)
                    {
                        if (m_towerTarget.Health - m_sourceTower.GetAutoAttackDamage(m_towerTarget) - Damage.AutoAttack.GetDamage(m_towerTarget) <= 0)
                        {
                            return(null);
                        }
                        else if (health - m_sourceTower.GetAutoAttackDamage(m_towerTarget) - Damage.AutoAttack.GetDamage(m_towerTarget) * 2f <= 0)
                        {
                            return(m_towerTarget);
                        }
                    }

                    if (m_Configuration.FocusNormalWhileTurret)
                    {
                        return(FindKillableMinion());
                    }

                    if (m_towerTarget.Health - Damage.AutoAttack.GetDamage(m_towerTarget) * 2f <= 0)
                    {
                        float twoAaTime   = ObjectManager.Player.AttackDelay + ObjectManager.Player.AttackCastDelay + 2 * (ObjectManager.Player.Distance(m_towerTarget.ServerPosition) / Utility.GetProjectileSpeed());
                        float towerAaTime = m_sourceTower.AttackCastDelay + m_sourceTower.Distance(m_towerTarget.ServerPosition) / m_sourceTower.BasicAttack.MissileSpeed;
                        if (twoAaTime <= towerAaTime)
                        {
                            return(m_towerTarget);
                        }
                    }

                    return(null);
                }
                var killableMinion = FindKillableMinion();
                if (killableMinion != null && !killableMinion.IsDead && killableMinion.IsVisible && killableMinion.IsHPBarRendered && killableMinion.IsTargetable)
                {
                    return(killableMinion);
                }
            }

            if (m_forcedTarget != null && m_forcedTarget.IsValidTarget() && Utility.InAARange(m_forcedTarget) && !m_forcedTarget.IsDead && m_forcedTarget.IsVisible && m_forcedTarget.IsTargetable)
            {
                return(m_forcedTarget);
            }

            //buildings
            if (ActiveMode == Mode.LaneClear && m_Configuration.AttackStructures && !wait)
            {
                /* turrets */
                foreach (var turret in
                         ObjectManager.Get <Obj_AI_Turret>().Where(t => t.IsValidTarget() && Utility.InAARange(t)))
                {
                    return(turret);
                }

                /* inhibitor */
                foreach (var turret in
                         ObjectManager.Get <Obj_BarracksDampener>().Where(t => t.IsValidTarget() && Utility.InAARange(t)))
                {
                    return(turret);
                }

                /* nexus */
                foreach (var nexus in
                         ObjectManager.Get <Obj_HQ>().Where(t => t.IsValidTarget() && Utility.InAARange(t)))
                {
                    return(nexus);
                }
            }

            //champions
            if (ActiveMode != Mode.LastHit)
            {
                if (ActiveMode == Mode.LaneClear && wait)
                {
                    return(null);
                }

                if ((ActiveMode == Mode.LaneClear && !m_Configuration.DontAttackChampWhileLaneClear) || ActiveMode == Mode.Combo || ActiveMode == Mode.Mixed)
                {
                    float range = -1;
                    range = (ObjectManager.Player.IsMelee && m_Configuration.MagnetMelee && m_Configuration.StickRange > ObjectManager.Player.AttackRange) ? m_Configuration.StickRange : -1;
                    if (ObjectManager.Player.CharData.BaseSkinName == "Azir")
                    {
                        range = 1000f;
                    }
                    var target = TargetSelector.GetTarget(range, LeagueSharp.Common.TargetSelector.DamageType.Physical);
                    if (target != null)
                    {
                        if (!target.IsDead && target.IsVisible && target.IsHPBarRendered && target.IsTargetable && target.IsValidTarget() && (Utility.InAARange(target) || (ActiveMode != Mode.LaneClear && ObjectManager.Player.IsMelee && m_Configuration.MagnetMelee && target.IsValidTarget(m_Configuration.StickRange))))
                        {
                            return(target);
                        }
                    }
                }
            }

            if (!wait)
            {
                if (ActiveMode == Mode.LaneClear)
                {
                    var minion = GetLaneClearTarget();
                    if (minion != null && minion.IsValidTarget() && Utility.InAARange(minion) && !minion.IsDead && minion.IsVisible && minion.IsTargetable)
                    {
                        return(minion);
                    }
                }
            }
            return(null);
        }
Beispiel #45
0
            internal static void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit target)
            {
                if (!unit.IsMe || target == null || target.IsDead || unit.IsDead || (target.Type != GameObjectType.obj_AI_Minion && target.Type != GameObjectType.obj_AI_Hero))
                {
                    return;
                }

                var itemone = AfterAttack.itemsList.FirstOrDefault(x => Items.CanUseItem((int)x.Id) && target.IsValidTarget(x.Range) && Menu.Item("AfterAttack.Use " + x.Id.ToString()).GetValue <bool>());

                if (itemone != null)
                {
                    var Minions = MinionManager.GetMinions(Orbwalking.GetRealAutoAttackRange(Player), MinionTypes.All, MinionTeam.Enemy);
                    var Mobs    = MinionManager.GetMinions(Orbwalking.GetRealAutoAttackRange(Player), MinionTypes.All, MinionTeam.Neutral);

                    if ((Menu.Item("Misc.Cb").GetValue <bool>() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo) || (Menu.Item("Misc.Hr").GetValue <bool>() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed) || (Menu.Item("Misc.Jc").GetValue <bool>() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && Mobs.Count > 0) || (Menu.Item("Misc.Lc").GetValue <bool>() && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && Minions.Count > 0))
                    {
                        var orderdata = OrderDataList.Find(x => x.ChampionName == ObjectManager.Player.ChampionName);

                        if (orderdata != null)
                        {
                            switch (orderdata.CastingOrder)
                            {
                            case CastingOrder.SpellFirst:
                                if (!Player.Spellbook.GetSpell(orderdata.SpellSlot).IsReady() ||
                                    (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo && (!Menu.Item("Combo.Use " + Player.Spellbook.GetSpell(orderdata.SpellSlot).Slot.ToString(), true).GetValue <bool>() || Menu.Item("Combo.Use " + Player.Spellbook.GetSpell(orderdata.SpellSlot).Slot.ToString(), true) == null) ||
                                     Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed && (!Menu.Item("Harass.Use " + Player.Spellbook.GetSpell(orderdata.SpellSlot).Slot.ToString(), true).GetValue <bool>() || Menu.Item("Harass.Use " + Player.Spellbook.GetSpell(orderdata.SpellSlot).Slot.ToString(), true) == null) ||
                                     Minions.Count() > 0 && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && (!Menu.Item("Laneclear.Use " + Player.Spellbook.GetSpell(orderdata.SpellSlot).Slot.ToString(), true).GetValue <bool>() || Menu.Item("Laneclear.Use " + Player.Spellbook.GetSpell(orderdata.SpellSlot).Slot.ToString(), true) == null) ||
                                     Mobs.Count() > 0 && Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear && (!Menu.Item("Jungleclear.Use " + Player.Spellbook.GetSpell(orderdata.SpellSlot).Slot.ToString(), true).GetValue <bool>() || Menu.Item("Jungleclear.Use " + Player.Spellbook.GetSpell(orderdata.SpellSlot).Slot.ToString(), true) == null)))
                                {
                                    if (itemone.isTargeted)
                                    {
                                        Items.UseItem(itemone.Id, (Obj_AI_Base)target);
                                    }
                                    else
                                    {
                                        Items.UseItem(itemone.Id);
                                    }
                                }
                                break;

                            case CastingOrder.ItemFirst:
                                if (itemone.isTargeted)
                                {
                                    Items.UseItem(itemone.Id, (Obj_AI_Base)target);
                                }
                                else
                                {
                                    Items.UseItem(itemone.Id);
                                }
                                break;
                            }
                        }
                        else
                        {
                            if (itemone.isTargeted)
                            {
                                Items.UseItem(itemone.Id, (Obj_AI_Base)target);
                            }
                            else
                            {
                                Items.UseItem(itemone.Id);
                            }
                        }
                    }
                }
            }
Beispiel #46
0
        private static void ClearFarmAfterAttackEvent(AttackableUnit target)
        {
            try
            {
                if (!MyManaManager.SpellFarm)
                {
                    return;
                }

                if (target.IsBuilding())
                {
                    if (ClearMenu["FlowersRiven.ClearMenu.LaneClearQTurret"].Enabled && Q.Ready && Me.CountEnemyHeroesInRange(800) == 0)
                    {
                        Q.Cast(target.ServerPosition);
                    }
                }
                else if (target.Type == GameObjectType.obj_AI_Minion)
                {
                    if (target.IsMinion())
                    {
                        if (ClearMenu["FlowersRiven.ClearMenu.LaneClearQ"].Enabled && Q.Ready)
                        {
                            var minions =
                                GameObjects.EnemyMinions.Where(x => x.IsValidTarget(400, false, false, target.ServerPosition) && x.IsMinion()).ToArray();

                            if (minions.Length >= 2)
                            {
                                Q.Cast(target.ServerPosition);
                            }
                        }
                    }
                    else if (target.IsMob())
                    {
                        var mob = target as Obj_AI_Minion;

                        if (mob != null && mob.IsValidTarget() && target.Health > Me.GetAutoAttackDamage(mob) * 2)
                        {
                            if (ClearMenu["FlowersRiven.ClearMenu.JungleClearQ"].Enabled && Q.Ready)
                            {
                                Q.Cast(mob.ServerPosition);
                            }
                            else if (ClearMenu["FlowersRiven.ClearMenu.JungleClearW"].Enabled && W.Ready && target.IsValidTarget(W.Range))
                            {
                                W.Cast();
                            }
                            else if (ClearMenu["FlowersRiven.ClearMenu.JungleClearE"].Enabled && E.Ready)
                            {
                                E.Cast(mob.ServerPosition);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error in MyEventManager.ClearFarmAfterAttackEvent." + ex);
            }
        }
Beispiel #47
0
        /// <summary>
        /// Called Before Attack
        /// </summary>
        /// <param name="target">The Target</param>
        /// <param name="args">The Args</param>
        private static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args)
        {
            #region Combo

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                var useQ = Config.ComboMenu["useQ"].Cast <CheckBox>().CurrentValue;

                // If the player has the rocket
                if (useQ && Program.Q.IsReady() && Essentials.FishBones())
                {
                    //var target = TargetSelector.GetTarget(Essentials.FishBonesRange(), DamageType.Physical);

                    if (target != null && target.IsValidTarget())
                    {
                        if (Player.Instance.Distance(target) <= Essentials.MinigunRange &&
                            target.CountEnemiesInRange(100) <
                            Config.ComboMenu["qCountC"].Cast <Slider>().CurrentValue)
                        {
                            Program.Q.Cast();
                            Orbwalker.ForcedTarget = target;
                        }
                    }
                }
            }

            #endregion

            #region LastHit

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit))
            {
                var useQ    = Config.LastHitMenu["useQ"].Cast <CheckBox>().CurrentValue;
                var manaQ   = Config.LastHitMenu["manaQ"].Cast <Slider>().CurrentValue;
                var qCountM = Config.LastHitMenu["qCountM"].Cast <Slider>().CurrentValue;

                // Force Minigun if there is a lasthittable minion in minigun range and there is no targets more than the setting amount.
                var kM = Orbwalker.LastHitMinionsList.Where(
                    t => t.IsEnemy &&
                    t.Health <= (Player.Instance.GetAutoAttackDamage(t) * 0.9) && t.IsValidTarget() &&
                    t.Distance(Player.Instance) <= Essentials.MinigunRange);
                if (useQ && Essentials.FishBones() && kM.Count() < qCountM)
                {
                    Program.Q.Cast();
                }
            }

            #endregion

            #region Lane Clear

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear))
            {
                var minion = EntityManager.MinionsAndMonsters.GetLaneMinions(
                    EntityManager.UnitTeam.Enemy,
                    Player.Instance.ServerPosition,
                    Essentials.FishBonesRange()).OrderByDescending(t => t.Health);

                if (Essentials.FishBones())
                {
                    foreach (var m in minion)
                    {
                        var minionsAoe =
                            EntityManager.MinionsAndMonsters.EnemyMinions.Count(
                                t => t.IsValidTarget() && t.Distance(m) <= 100);

                        if (m.Distance(Player.Instance) <= Essentials.MinigunRange && m.IsValidTarget() &&
                            (minionsAoe < Config.LaneClearMenu["qCountM"].Cast <Slider>().CurrentValue ||
                             m.Health > (Player.Instance.GetAutoAttackDamage(m))))
                        {
                            Q.Cast();
                            Orbwalker.ForcedTarget = m;
                        }
                        else if (m.Distance(Player.Instance) <= Essentials.MinigunRange &&
                                 !Orbwalker.LastHitMinionsList.Contains(m))
                        {
                            Q.Cast();
                            Orbwalker.ForcedTarget = m;
                        }
                        else
                        {
                            foreach (
                                var kM in
                                Orbwalker.LastHitMinionsList.Where(
                                    kM =>
                                    kM.IsValidTarget() &&
                                    kM.Health <= (Player.Instance.GetAutoAttackDamage(kM) * 0.9) &&
                                    kM.Distance(Player.Instance) <= Essentials.MinigunRange))
                            {
                                Q.Cast();
                                Orbwalker.ForcedTarget = kM;
                            }
                        }
                    }
                }
            }

            #endregion

            if (Essentials.FishBones() && target.IsStructure() &&
                target.Distance(Player.Instance) <= Essentials.MinigunRange)
            {
                Q.Cast();
            }
        }
Beispiel #48
0
 private static void Orbwalker_OnPostAttack(AttackableUnit Target, EventArgs args)
 {
     if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && Target is AIHeroClient && Target.IsValidTarget())
     {
         if (Hero.Level <= EBeforeLevel.CurrentValue && E.CastMinimumHitchance((AIHeroClient)Target, 90) && E.GetPrediction((AIHeroClient)Target).HitChance != HitChance.Collision)
         {
             UseNetCombo = true;
             ComboTarget = (AIHeroClient)Target;
             return;
         }
     }
 }
Beispiel #49
0
        private AttackableUnit GetTarget()
        {
            bool wait = ShouldWait();

            if (ActiveMode == Mode.LaneClear || ActiveMode == Mode.LastHit || ActiveMode == Mode.Mixed)
            {
                if (m_towerTarget != null && m_towerTarget.IsValidTarget() && CanOrbwalkTarget(m_towerTarget, ObjectManager.Player.AttackRange + 150f))
                {
                    int x = GetTowerMinion();
                    if (x == -1)
                    {
                        return(FindKillableMinion());
                    }
                    if (x == 0)
                    {
                        return(m_towerTarget);
                    }
                }
                var killableMinion = FindKillableMinion();
                if (killableMinion != null)
                {
                    return(killableMinion);
                }
            }

            if (m_forcedTarget != null && m_forcedTarget.IsValidTarget() && Utility.InAARange(m_forcedTarget))
            {
                return(m_forcedTarget);
            }

            //buildings
            if (ActiveMode == Mode.LaneClear && m_Configuration.AttackStructures && !wait)
            {
                /* turrets */
                foreach (var turret in
                         ObjectManager.Get <Obj_AI_Turret>().Where(t => t.IsValidTarget() && Utility.InAARange(t)))
                {
                    return(turret);
                }

                /* inhibitor */
                foreach (var turret in
                         ObjectManager.Get <Obj_BarracksDampener>().Where(t => t.IsValidTarget() && Utility.InAARange(t)))
                {
                    return(turret);
                }

                /* nexus */
                foreach (var nexus in
                         ObjectManager.Get <Obj_HQ>().Where(t => t.IsValidTarget() && Utility.InAARange(t)))
                {
                    return(nexus);
                }
            }

            //champions
            if (ActiveMode != Mode.LastHit)
            {
                if (ActiveMode == Mode.LaneClear && wait)
                {
                    return(null);
                }

                if ((ActiveMode == Mode.LaneClear && !m_Configuration.DontAttackChampWhileLaneClear) || ActiveMode == Mode.Combo || ActiveMode == Mode.Mixed)
                {
                    float range = -1;
                    range = (ObjectManager.Player.IsMelee && m_Configuration.MagnetMelee && m_Configuration.StickRange > ObjectManager.Player.AttackRange) ? m_Configuration.StickRange : -1;
                    if (ObjectManager.Player.CharData.BaseSkinName == "Azir")
                    {
                        range = 950f;
                    }
                    var target = LeagueSharp.Common.TargetSelector.GetTarget(range, LeagueSharp.Common.TargetSelector.DamageType.Physical);
                    if (target.IsValidTarget() && (Utility.InAARange(target) || (ActiveMode != Mode.LaneClear && ObjectManager.Player.IsMelee && m_Configuration.MagnetMelee && target.IsValidTarget(m_Configuration.StickRange))))
                    {
                        return(target);
                    }
                }
            }

            if (!wait)
            {
                if (ActiveMode == Mode.LaneClear)
                {
                    var minion = GetLaneClearTarget();
                    if (minion != null)
                    {
                        return(minion);
                    }
                }
            }
            return(null);
        }
Beispiel #50
0
        private static void OnAfterAttack(AttackableUnit target, EventArgs args)
        {
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                if (target == null || !(target is AIHeroClient) || target.IsDead || target.IsInvulnerable ||
                    !target.IsEnemy || target.IsPhysicalImmune || target.IsZombie)
                {
                    return;
                }
            }

            var enemy = target as AIHeroClient;

            if (enemy == null)
            {
                return;
            }
            if (LucianTheTrollMenu.ComboEStart())
            {
                if (LucianTheTrollMenu.Eside())
                {
                    if (E.IsReady() && target.IsValidTarget(Q1.Range) &&
                        !UnderEnemyTower((Vector2)Player.Position) &&
                        !HasPassive())
                    {
                        E.Cast(Side(Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                    }
                }
                if (LucianTheTrollMenu.Ecursor())
                {
                    if (E.IsReady() && target.IsValidTarget(Q1.Range) &&
                        !UnderEnemyTower((Vector2)Player.Position) &&
                        !HasPassive())
                    {
                        EloBuddy.Player.CastSpell(SpellSlot.E, Game.CursorPos);
                    }
                }
                if (LucianTheTrollMenu.Eauto())
                {
                    if (Game.CursorPos.Distance(Player.Position) > Player.AttackRange + Player.BoundingRadius * 2 &&
                        !Player.Position.Extend(Game.CursorPos, E.Range).IsUnderTurret() && !HasPassive())
                    {
                        E.Cast(Player.Position.Extend(Game.CursorPos, E.Range).To3D());
                    }
                    else
                    {
                        E.Cast(Side(Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                    }
                }
            }
            if (LucianTheTrollMenu.AArange())
            {
                if (!E.IsReady() && Q.IsReady())
                {
                    Q.Cast(enemy);
                    Core.DelayAction(() => W.Cast(enemy), 325);
                }
                if (!E.IsReady() && W.IsReady())
                {
                    //  W.Cast(enemy.Position);
                    Core.DelayAction(() => W.Cast(enemy), 370);
                }
            }
        }
Beispiel #51
0
 private static bool CanUse(Spell spell, AttackableUnit target)
 {
     return(spell.IsReady() && Player.Mana >= spell.ManaCost && target.IsValidTarget(spell.Range));
 }
Beispiel #52
0
        private static void AfterAttack(AttackableUnit unit, AttackableUnit ArgsTarget)
        {
            if (!unit.IsMe || Me.IsDead || ArgsTarget == null || ArgsTarget.IsDead || !ArgsTarget.IsValidTarget())
            {
                return;
            }

            if (isComboMode && ArgsTarget.ObjectType == GameObjectType.AIHeroClient)
            {
                if (ComboOption.UseQ && Q.IsReady())
                {
                    var target = (AIHeroClient)ArgsTarget;

                    if (!target.IsDead && !target.IsZombie)
                    {
                        if (Me.HasBuff("asheqcastready"))
                        {
                            Q.Cast(true);
                            Orbwalker.ResetAutoAttackTimer();
                        }
                    }
                }
            }
            else if (isJungleClearMode && ArgsTarget.ObjectType == GameObjectType.obj_AI_Minion)
            {
                if (JungleClearOption.HasEnouguMana && JungleClearOption.UseQ && Q.IsReady())
                {
                    var mobs = MinionManager.GetMinions(Me.Position, Orbwalker.GetRealAutoAttackRange(Me), MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);

                    if (mobs.Any())
                    {
                        foreach (var mob in mobs)
                        {
                            if (!mob.IsValidTarget(Orbwalker.GetRealAutoAttackRange(Me)) || !(mob.Health > Me.GetAutoAttackDamage(mob) * 2))
                            {
                                continue;
                            }

                            if (Me.HasBuff("asheqcastready"))
                            {
                                Q.Cast(true);
                                Orbwalker.ResetAutoAttackTimer();
                            }
                        }
                    }
                }
            }
        }
 /// <summary>
 ///     Returns true if the target is in auto-attack range.
 /// </summary>
 /// <param name="target">
 ///     The target.
 /// </param>
 /// <returns>
 ///     The <see cref="bool" />.
 /// </returns>
 public static bool InAutoAttackRange(this AttackableUnit target)
 {
     return(target.IsValidTarget(target.GetRealAutoAttackRange()));
 }