Beispiel #1
0
        private static void Obj_AI_Base_OnDamage(AttackableUnit sender, AttackableUnitDamageEventArgs args)
        {
            var caster = sender as AIHeroClient;
            var target = args.Target as AIHeroClient;

            if (caster == null || target == null || sender.Distance(Player.Instance) > 1500) return;

            HitMarkPosition = args.Target.Position.WorldToScreen();
            CanDrawHitMarker = true;
            HitMarkerSound.Play();

            var hero = AkbarSpells.Spells.FirstOrDefault(x => x.Hero == Player.Instance.Hero && !caster.Spellbook.GetSpell(x.Slot).IsReady);
            if (args.Source.IsMe && hero!= null && args.Target.IsEnemy)
            {
                AkbarSound.Play();
            }
  
            if (hero != null && sender.IsVisible && !caster.Spellbook.GetSpell(SpellSlot.R).IsReady)
            {
                if (hero.Hero == Champion.JarvanIV || hero.Hero == Champion.Darius || hero.Hero == Champion.Aatrox)
                {
                    DunkSound.Play();
                }
            }
            Core.DelayAction(() => CanDrawHitMarker = false, 200);
        }
Beispiel #2
0
        private static void Obj_AI_Base_OnDamage(AttackableUnit sender, AttackableUnitDamageEventArgs args)
        {
            var caster = sender as AIHeroClient;
            var target = args.Target as AIHeroClient;

            if (caster == null || target == null || sender.Distance(Player.Instance) > 1500)
            {
                return;
            }

            HitMarkPosition  = args.Target.Position.WorldToScreen();
            CanDrawHitMarker = true;
            HitMarkerSound.Play();

            var hero = AkbarSpells.Spells.FirstOrDefault(x => x.Hero == Player.Instance.Hero && !caster.Spellbook.GetSpell(x.Slot).IsReady);

            if (args.Source.IsMe && hero != null && args.Target.IsEnemy)
            {
                AkbarSound.Play();
            }

            if (hero != null && sender.IsVisible && !caster.Spellbook.GetSpell(SpellSlot.R).IsReady)
            {
                if (hero.Hero == Champion.JarvanIV || hero.Hero == Champion.Darius || hero.Hero == Champion.Aatrox)
                {
                    DunkSound.Play();
                }
            }
            Core.DelayAction(() => CanDrawHitMarker = false, 200);
        }
Beispiel #3
0
        private static void Reset(AttackableUnit target, EventArgs args)
        {
            if (!MiscMenu["resetaa"].Cast <CheckBox>().CurrentValue)
            {
                return;
            }
            if (target != null &&
                target.IsEnemy &&
                !target.IsInvulnerable &&
                !target.IsDead &&
                target is AIHeroClient &&
                target.Distance(Kassawin) <= W.Range)
            {
                if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) &&
                    (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) &&
                     (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit))))
                {
                    return;
                }
            }
            var e = target as Obj_AI_Base;

            if (!ComboMenu["usecombow"].Cast <CheckBox>().CurrentValue || !e.IsEnemy)
            {
                return;
            }
            if (target == null)
            {
                return;
            }
            if (e.IsValidTarget() && W.IsReady())
            {
                W.Cast();
            }
        }
Beispiel #4
0
        /// <summary>
        ///     Determines whether the target is a valid target in the auto attack range from the specified check range from
        ///     vector.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="allyIsValidTarget">if set to <c>true</c> allies will be set as valid targets.</param>
        /// <param name="checkRangeFrom">The check range from.</param>
        /// <returns><c>true</c> if the target is a valid target in the auto attack range; otherwise, <c>false</c>.</returns>
        public static bool IsValidAutoRange(
            this AttackableUnit target,
            bool allyIsValidTarget = false,
            Vector3 checkRangeFrom = default(Vector3))
        {
            if (!target.IsValidTarget(allyIsValidTarget: allyIsValidTarget))
            {
                return(false);
            }

            return(target.Distance(checkRangeFrom != Vector3.Zero ? checkRangeFrom : Player.ServerPosition) < Player.GetFullAttackRange(target));
        }
Beispiel #5
0
            /// <summary>
            ///     Execute Weaving In AA Range Combo
            /// </summary>
            /// <param name="target">The Target</param>
            /// <param name="args">The Args</param>
            public static void ExecuteInRangeWeavingCombo(AttackableUnit target, EventArgs args)
            {
                try
                {
                    if (!target.IsValidTarget() || !(target is AIHeroClient) || target == null)
                    {
                        return;
                    }

                    foreach (var Spell in SpellList)
                    {
                        if (!Spell.IsReady())
                        {
                            continue;
                        }

                        if (Spell.Slot.Equals(SpellSlot.Q) && Config.Combo.GetBool("Q.Use") && Extensions.Player.EnoughMana(Config.Combo.GetSlider("Q.Mana")))
                        {
                            if (target.Distance(Extensions.Player.ServerPosition) <= Q.Range)
                            {
                                Q.CastMinimumHitchance((AIHeroClient)target, Extensions.GetHitChance(Config.Combo, Q));
                            }
                        }
                        else if (Spell.Slot.Equals(SpellSlot.W) && Config.Combo.GetBool("W.Use") && Extensions.Player.EnoughMana(Config.Combo.GetSlider("W.Mana")))
                        {
                            if (target.Distance(Extensions.Player.ServerPosition) <= W.Range)
                            {
                                W.CastMinimumHitchance((AIHeroClient)target, Extensions.GetHitChance(Config.Combo, W));
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    Logging.AddEntry(LoggingEntryType.Error, "@Modes.cs: Combo -> Can't execute weaving combo - {0}", e);
                    throw;
                }
            }
Beispiel #6
0
        //---------------------------------------Orbwalker_OnPreAttack----------------------------------------

        static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args)
        {
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                if (!Menu["AAMaxRange?"].Cast <CheckBox>().CurrentValue&& target.Distance(Player) >= Q.Range - 30)
                {
                    args.Process = false;
                }
                if (!Menu["AA?"].Cast <CheckBox>().CurrentValue)
                {
                    args.Process = false;
                }
            }
        }
Beispiel #7
0
 private static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args)
 {
     if (Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.None  || _lastChange + 300 > Environment.TickCount) return;
     var selectedUnit = target as AIHeroClient;
     if (selectedUnit != null && (Program.HarassMenu["useQHarass"].Cast<CheckBox>().CurrentValue && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) || Program.ComboMenu["useQCombo"].Cast<CheckBox>().CurrentValue && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)))
     {
         if (selectedUnit.CountEnemiesInRange(AoeRadius) > 2 || _Player.GetAutoAttackDamage(selectedUnit) * 1.1 >= target.Health + target.AttackShield && _Player.GetAutoAttackDamage(selectedUnit) < target.Health + target.AttackShield)
         {
             if (!FishBonesActive)
             {
                 Program.Spells[SpellSlot.Q].Cast();
                 _lastChange = Environment.TickCount;
             }
         }
         else
         {
             if (FishBonesActive && target.Distance(_Player) < MinigunRange(selectedUnit))
             {
                 Program.Spells[SpellSlot.Q].Cast();
                 _lastChange = Environment.TickCount;
             }
         }
     }
     else
     {
         var minion = target as Obj_AI_Base;
         if (minion != null && minion.IsMinion && Program.FarmMenu["useQFarm"].Cast<CheckBox>().CurrentValue)
         {
             var count =
                 ObjectManager.Get<Obj_AI_Minion>()
                     .Count(
                         a =>
                             a.Health < _Player.GetAutoAttackDamage(a) * 1.1 && a.Distance(target) < AoeRadius &&
                             a.IsValidTarget());
             if (FishBonesActive && count < 2 && target.Distance(_Player) < MinigunRange(minion))
             {
                 Program.Spells[SpellSlot.Q].Cast();
                 _lastChange = Environment.TickCount;
             }
             else if (!FishBonesActive && count >= 2)
             {
                 Program.Spells[SpellSlot.Q].Cast();
                 _lastChange = Environment.TickCount;
             }
         }
     }
     args.Process = true;
 }
Beispiel #8
0
        private static void Obj_AI_Base_OnDamage(AttackableUnit sender, AttackableUnitDamageEventArgs args)
        {
            var caster = sender as AIHeroClient;
            var target = args.Target as AIHeroClient;

            if (caster == null || target == null || sender.Distance(Player.Instance) > 1500)
            {
                return;
            }

            HitMarkPosition  = args.Target.Position.WorldToScreen();
            CanDrawHitMarker = true;
            HitMarkerSound.Play();

            Core.DelayAction(() => CanDrawHitMarker = false, 200);
        }
Beispiel #9
0
 public static void AfterAttack(AttackableUnit target, EventArgs args)
 {
     if (target != null &&
         target.IsEnemy &&
         !target.IsInvulnerable &&
         !target.IsDead &&
         target is AIHeroClient &&
         target.Distance(Utils._Player) <= Spells.W.Range)
     {
         if ((Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Harass ||
              Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Combo) && Spells.W.IsReady())
         {
             if (Utils.isChecked(MenuX.Combo, "ComboQ") || Utils.isChecked(MenuX.Harass, "HarassW"))
                 Spells.W.Cast();
         }
     }
 }
Beispiel #10
0
        /// <summary>
        ///     Determines whether the target is a valid target in the auto attack range from the specified check range from
        ///     vector.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="allyIsValidTarget">if set to <c>true</c> allies will be set as valid targets.</param>
        /// <param name="checkRangeFrom">The check range from.</param>
        /// <returns><c>true</c> if the target is a valid target in the auto attack range; otherwise, <c>false</c>.</returns>
        public static bool IsValidAutoRange(
            this AttackableUnit target,
            bool allyIsValidTarget = false,
            Vector3 checkRangeFrom = default(Vector3))
        {
            if (target == null || !target.IsValid || target.IsDead || target.IsInvulnerable || !target.IsVisible ||
                !target.IsTargetable)
            {
                return(false);
            }

            if (!allyIsValidTarget && target.Team == Player.Team)
            {
                return(false);
            }

            return(target.Distance(checkRangeFrom != Vector3.Zero ? checkRangeFrom : Player.ServerPosition)
                   < Player.GetFullAttackRange(target));
        }
Beispiel #11
0
        /// <summary>
        ///     Determines whether the specified target is a valid target.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="range">The range.</param>
        /// <param name="allyIsValidTarget">if set to <c>true</c> allies will be set as valid targets.</param>
        /// <param name="includeBoundingRadius"></param>
        /// <param name="checkRangeFrom">The check range from position.</param>
        /// <returns>
        ///     <c>true</c> if the specified target is a valid target; otherwise, <c>false</c>.
        /// </returns>
        public static bool IsValidTarget(
            this AttackableUnit target,
            float range                = float.MaxValue,
            bool allyIsValidTarget     = false,
            bool includeBoundingRadius = false,
            Vector3 checkRangeFrom     = default(Vector3))
        {
            if (target == null || !target.IsValid || target.IsDead || !target.IsVisible || !target.IsTargetable || target.IsInvulnerable)
            {
                return(false);
            }

            if (!allyIsValidTarget && target.Team == Player.Team)
            {
                return(false);
            }

            return(target.Distance(checkRangeFrom != Vector3.Zero ? checkRangeFrom : Player.ServerPosition) < range + (includeBoundingRadius ? Player.BoundingRadius + target.BoundingRadius : 0));
        }
Beispiel #12
0
 public static void AfterAttack(AttackableUnit target, EventArgs args)
 {
     if (target != null &&
         target.IsEnemy &&
         !target.IsInvulnerable &&
         !target.IsDead &&
         target is AIHeroClient &&
         target.Distance(Utils._Player) <= Spells.W.Range)
     {
         if ((Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Harass ||
              Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Combo) && Spells.W.IsReady())
         {
             if (Utils.isChecked(MenuX.Combo, "ComboQ") || Utils.isChecked(MenuX.Harass, "HarassW"))
             {
                 Spells.W.Cast();
             }
         }
     }
 }
Beispiel #13
0
        private void CastQ(AttackableUnit target)
        {
            if (q.Name == "ZoeQ")
            {
                var playerPos = Player.Position.ToVector2();

                if (rBeforeQ)
                {
                    playerPos = Player.Position.Extend(target.Position, -r.Range).ToVector2();
                }
                var            pos        = playerPos + 565;
                List <Vector2> posCanCast = new List <Vector2>();
                for (var angle = 0f; angle < 359; angle += 15)
                {
                    var newPos = pos.RotateAroundPoint(playerPos, (float)(Math.PI * angle / 180.0));
                    if (!q.CheckCollision(newPos))
                    {
                        posCanCast.Add(newPos);
                    }
                    //q.Cast(newPos);
                }
                if (posCanCast.Count() == 0)
                {
                    return;
                }
                var point = posCanCast.Where(o => o.Distance(target) > target.Distance(Player) && !SPrediction.Collision.CheckCollision(o, target.Position.ToVector2(), qWidth, .25f, 900))
                            .OrderByDescending(o => o.Distance(target)).FirstOrDefault();
                if (point != null)
                {
                    if (rBeforeQ)
                    {
                        //Game.Print("pos:" + point);
                        var posCastR = Player.Position.Extend(target.Position, -r.Range);
                        r.Cast(posCastR);
                        rBeforeQ = false;
                        Utility.DelayAction.Add((int)(q.Range * 1000 / 900 + Game.Ping), () =>
                        {
                            q.Cast(point);
                            Utility.DelayAction.Add((int)(q.Range * 1000 / 900 + Game.Ping), () =>
                            {
                                qCanCast = true;
                            });
                        });
                    }
                    else
                    {
                        q.Cast(point);
                        qCanCast = false;
                        Utility.DelayAction.Add((int)(q.Range * 1000 / 900 + Game.Ping), () =>
                        {
                            if (rAfterQ)
                            {
                                var posCastR = Player.Position.Extend(target.Position, r.Range);
                                r.Cast(posCastR);
                                rAfterQ = false;
                            }
                            qCanCast = true;
                        });
                    }
                }
                else
                {
                    q.Cast((AIBaseClient)target);
                }
            }
            else if (qCanCast)
            {
                q.CastIfHitchanceMinimum((AIBaseClient)target, HitChance.Low);
            }
        }
Beispiel #14
0
 static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args)
 {
     if (W.IsReady() && UseW && target != null)
     {
         if ((Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && target.Distance(ObjectManager.Player.ServerPosition) <= ObjectManager.Player.AttackRange && (target is AIHeroClient)) || (isClear == true && getSliderItem(LaneClearMenu, "mana") <= Player.Instance.ManaPercent) && (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)))
         {
             W.Cast();
         }
     }
 }
Beispiel #15
0
        /*private static void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
         * {
         *  Chat.Print("Failed Downloading: " + e.Error);
         *  AllahAkbar = new SoundPlayer
         *  {
         *      SoundLocation =
         *          SandboxConfig.DataDirectory + @"\JinXXX\" + "Allahu_Akbar_Sound_Effect_Download_Link.wav"
         *  };
         *  AllahAkbar.Load();
         * }*/

        /// <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 ((target.Distance(Player.Instance) - target.BoundingRadius - Player.Instance.BoundingRadius) <= Essentials.MinigunRange &&
                            target.CountEnemyChampionsInRange(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 #16
0
        /*private static void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            Chat.Print("Failed Downloading: " + e.Error);
            AllahAkbar = new SoundPlayer
            {
                SoundLocation =
                    SandboxConfig.DataDirectory + @"\JinXXX\" + "Allahu_Akbar_Sound_Effect_Download_Link.wav"
            };
            AllahAkbar.Load();
        }*/
        /// <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 #17
0
 private static void OrbwalkerOnOnPostAttack(AttackableUnit target, EventArgs args)
 {
     // Use Q
     // No sense in checking if Q is off cooldown or enemy died
     if (SpellManager.Q.IsReady() && !target.IsDead && !Player.Instance.Buffs.Any(b => b.Name.Equals("XenZhaoComboTarget", StringComparison.CurrentCultureIgnoreCase) || b.Name.Equals("xenzhaocomboauto", StringComparison.CurrentCultureIgnoreCase) || b.Name.Equals("xenzhaocomboautofinish", StringComparison.CurrentCultureIgnoreCase)))
     {
         // Check if we should use Q to attack heroes
         if ((SettingsModes.Combo.UseQ && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) ||
             (Orbwalker.LaneClearAttackChamps && SettingsModes.LaneClear.UseQ &&
              Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)))
         {
             if (target is AIHeroClient && PlayerMana >= SettingsMana.MinQMana)
             {
                 Debug.WriteChat("Casting Q, because attacking enemy in Combo or Harras");
                 SpellManager.Q.Cast();
                 Orbwalker.ResetAutoAttack();
                 Player.IssueOrder(GameObjectOrder.AttackUnit, target);
             }
         }
         // Check if we should use Q to attack minions/monsters/turrets
         if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) ||
             Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
         {
             if (target is Obj_AI_Minion && PlayerMana >= SettingsMana.MinQMana)
             {
                 if (SettingsModes.JungleClear.UseQ && target.Team == GameObjectTeam.Neutral)
                 {
                     Debug.WriteChat("Casting Q, because attacking monster in Jungle Clear");
                     SpellManager.Q.Cast();
                     Orbwalker.ResetAutoAttack();
                     Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                 }
                 else if (SettingsModes.LaneClear.UseQ && target.Team != GameObjectTeam.Neutral)
                 {
                     Debug.WriteChat("Casting Q, because attacking minion in Lane Clear");
                     SpellManager.Q.Cast();
                     Orbwalker.ResetAutoAttack();
                     Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                 }
             }
         }
     }
     // Item usage
     if ((SettingsModes.Combo.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) || (SettingsModes.LaneClear.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)) || (SettingsModes.JungleClear.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)))
     {
         if (Item.HasItem(Tiamat.Id) && Tiamat.IsReady() && !target.IsDead &&
             target.Distance(Player.Instance) < Tiamat.Range)
         {
             Tiamat.Cast();
         }
         else if (Item.HasItem(Hydra.Id) && Hydra.IsReady() && !target.IsDead &&
                  target.Distance(Player.Instance) < Hydra.Range)
         {
             Hydra.Cast();
         }
         // Cutlass/BOTRK usage
         if (target is AIHeroClient && Item.HasItem(Cutlass.Id) && Cutlass.IsReady() && !target.IsDead &&
             target.Distance(Player.Instance) < Cutlass.Range)
         {
             var spellSlot = Player.Instance.InventoryItems.FirstOrDefault(a => a.Id == Cutlass.Id);
             Player.CastSpell(spellSlot.SpellSlot, target);
         }
         else if (target is AIHeroClient && Item.HasItem(BOTRK.Id) && BOTRK.IsReady() && !target.IsDead &&
                  target.Distance(Player.Instance) < BOTRK.Range && Player.Instance.HealthPercent <= 90.0f && target.HealthPercent <= 80.0f)
         {
             var spellSlot = Player.Instance.InventoryItems.FirstOrDefault(a => a.Id == BOTRK.Id);
             Player.CastSpell(spellSlot.SpellSlot, target);
         }
     }
 }
Beispiel #18
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 #19
0
        //---------------------------------------Orbwalker_OnPreAttack----------------------------------------

        static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args)
        {
            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                if (!Menu["AAMaxRange?"].Cast<CheckBox>().CurrentValue && target.Distance(Player) >= Q.Range - 30) args.Process = false;
                if (!Menu["AA?"].Cast<CheckBox>().CurrentValue) args.Process = false;
            }
        }
Beispiel #20
0
        private static void Reset(AttackableUnit target, EventArgs args)
        {
            if (!Misc["aareset"].Cast<CheckBox>().CurrentValue) return;
            if (target != null && target.IsEnemy && !target.IsInvulnerable && !target.IsDead && target is AIHeroClient && target.Distance(ObjectManager.Player) <= W.Range)
                if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit)))) return;
            var e = target as Obj_AI_Base;
            if (!ModesMenu1["ComboW"].Cast<CheckBox>().CurrentValue || !e.IsEnemy) return;
            if (target == null) return;
            if (e.IsValidTarget() && W.IsReady())
            {
                W.Cast();
            }




        }
Beispiel #21
0
 private static void OnBeforeAttack(AttackableUnit target, Orbwalker.PreAttackArgs args)
 {
     if (args.Target.Type == GameObjectType.obj_AI_Minion && Config.GlobalToggler)
     {
         if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) && Config.IsChecked(Config.Harass, "disableAAIH"))
         {
             var air = _Player.CountAlliesInRange(Config.GetSliderValue(Config.Harass, "allyRangeH"));
             if (air > 1)
             {
                 var shieldStacks = _Player.GetBuffCount("TalentReaper");
                 if (shieldStacks > 0 && Config.IsChecked(Config.Harass, "stacksIH"))
                 {
                 }
                 else
                 {
                     args.Process = false;
                 }
             }
         }
         if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && Config.IsChecked(Config.LaneClear, "disableAAILC"))
         {
             var air = _Player.CountAlliesInRange(Config.GetSliderValue(Config.LaneClear, "allyRangeLC"));
             if (air > 1)
             {
                 var shieldStacks = _Player.GetBuffCount("TalentReaper");
                 if (shieldStacks > 0 && Config.IsChecked(Config.LaneClear, "stacksILC"))
                 {
                 }
                 else
                 {
                     if (Config.IsChecked(Config.LaneClear, "pushNoCS"))
                     {
                         var targetMinion = EntityManager.MinionsAndMonsters.EnemyMinions.FirstOrDefault(x => x.Index == target.Index);
                         //var targetMinion = minions.FirstOrDefault();
                         var aaTravelTime = target.Distance(ObjectManager.Player) / _Player.BasicAttack.MissileSpeed + _Player.AttackDelay + Game.Ping / 2f / 1000;
                         if (Prediction.Health.GetPrediction(targetMinion, (int)(aaTravelTime) * 1000) <= _Player.GetAutoAttackDamage(targetMinion) + 5)
                         {
                             /*
                              * var higherHpMinion =
                              *  EntityManager.MinionsAndMonsters.EnemyMinions.FirstOrDefault(hp => hp.Health > target.Health);
                              * target = higherHpMinion;
                              */
                             args.Process = false;
                         }
                     }
                     else
                     {
                         args.Process = false;
                     }
                 }
             }
         }
         if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit) && Config.IsChecked(Config.LastHit, "disableAAILH"))
         {
             var air = _Player.CountAlliesInRange(Config.GetSliderValue(Config.LastHit, "allyRangeLH"));
             if (air > 1)
             {
                 var shieldStacks = _Player.GetBuffCount("TalentReaper");
                 if (shieldStacks > 0 && Config.IsChecked(Config.LastHit, "stacksILH"))
                 {
                 }
                 else
                 {
                     args.Process = false;
                 }
             }
         }
     }
 }
Beispiel #22
0
        private static void OrbwalkerOnOnPostAttack(AttackableUnit target, EventArgs args)
        {
            // Use Q
            // No sense in checking if Q is off cooldown or enemy died
            if (SpellManager.Q.IsReady() && !target.IsDead && !Player.Instance.Buffs.Any(b => b.Name.Equals("XenZhaoComboTarget", StringComparison.CurrentCultureIgnoreCase) || b.Name.Equals("xenzhaocomboauto", StringComparison.CurrentCultureIgnoreCase) || b.Name.Equals("xenzhaocomboautofinish", StringComparison.CurrentCultureIgnoreCase)))
            {
                // Check if we should use Q to attack heroes
                if ((SettingsModes.Combo.UseQ && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) ||
                    (Orbwalker.LaneClearAttackChamps && SettingsModes.LaneClear.UseQ &&
                     Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)))
                {
                    if (target is AIHeroClient && PlayerMana >= SettingsMana.MinQMana)
                    {
                        Debug.WriteChat("Casting Q, because attacking enemy in Combo or Harras");
                        SpellManager.Q.Cast();
                        Orbwalker.ResetAutoAttack();
                        Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                    }
                }
                // Check if we should use Q to attack minions/monsters/turrets
                if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) ||
                    Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
                {
                    if (target is Obj_AI_Minion && PlayerMana >= SettingsMana.MinQMana)
                    {
                        if (SettingsModes.JungleClear.UseQ && target.Team == GameObjectTeam.Neutral)
                        {
                            Debug.WriteChat("Casting Q, because attacking monster in Jungle Clear");
                            SpellManager.Q.Cast();
                            Orbwalker.ResetAutoAttack();
                            Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                        }
                        else if (SettingsModes.LaneClear.UseQ && target.Team != GameObjectTeam.Neutral)
                        {
                            Debug.WriteChat("Casting Q, because attacking minion in Lane Clear");
                            SpellManager.Q.Cast();
                            Orbwalker.ResetAutoAttack();
                            Player.IssueOrder(GameObjectOrder.AttackUnit, target);
                        }
                    }

                }
            }
            // Item usage
            if ((SettingsModes.Combo.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) || (SettingsModes.LaneClear.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)) || (SettingsModes.JungleClear.UseItems && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)))
                {
                    if (Item.HasItem(Tiamat.Id) && Tiamat.IsReady() && !target.IsDead &&
                        target.Distance(Player.Instance) < Tiamat.Range)
                    {
                        Tiamat.Cast();
                    }
                    else if (Item.HasItem(Hydra.Id) && Hydra.IsReady() && !target.IsDead &&
                             target.Distance(Player.Instance) < Hydra.Range)
                    {
                        Hydra.Cast();
                    }
                    // Cutlass/BOTRK usage
                    if(target is AIHeroClient && Item.HasItem(Cutlass.Id) && Cutlass.IsReady() && !target.IsDead &&
                             target.Distance(Player.Instance) < Cutlass.Range)
                    {
                        var spellSlot = Player.Instance.InventoryItems.FirstOrDefault(a => a.Id == Cutlass.Id);
                        Player.CastSpell(spellSlot.SpellSlot, target);
                    }
                    else if (target is AIHeroClient && Item.HasItem(BOTRK.Id) && BOTRK.IsReady() && !target.IsDead &&
                             target.Distance(Player.Instance) < BOTRK.Range && Player.Instance.HealthPercent <= 90.0f && target.HealthPercent <= 80.0f)
                    {
                        var spellSlot = Player.Instance.InventoryItems.FirstOrDefault(a => a.Id == BOTRK.Id);
                        Player.CastSpell(spellSlot.SpellSlot, target);
                    }
                }
        }
Beispiel #23
0
        private static void Obj_AI_Base_OnDamage(AttackableUnit sender, AttackableUnitDamageEventArgs args)
        {
            
            var caster = sender as AIHeroClient;
            var target = args.Target as AIHeroClient;

            if (caster == null || target == null || sender.Distance(Player.Instance) > 1500) return;

            HitMarkPosition = args.Target.Position.WorldToScreen();
            CanDrawHitMarker = true;
            HitMarkerSound.Play();
  
            Core.DelayAction(() => CanDrawHitMarker = false, 200);
            
        }
Beispiel #24
0
        //ResetAA
        public static void ResetAA(AttackableUnit target, EventArgs args)
        {
            var Hydra = Config.MiscMenu["Hydra"].Cast <CheckBox>().CurrentValue;

            if (!Config.MiscMenu["Qrs"].Cast <CheckBox>().CurrentValue)
            {
                return;
            }
            if (target != null && target.IsEnemy && !target.IsInvulnerable && !target.IsDead && !target.IsZombie && target.Distance(Program.XinThongDit) <= Spells.Q.Range)
            {
                if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) &&
                    (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) &&
                     (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))))
                {
                    return;
                }
            }
            var e = target as Obj_AI_Base;

            if (!Config.ComboMenu["Qcb"].Cast <CheckBox>().CurrentValue || !e.IsEnemy)
            {
                return;
            }
            //if (target == ObjectManager.Get<Obj_AI_Minion>().Where(p => p.IsValidTarget(Spells.E.Range) && p.BaseSkinName.Contains("SRU_Plant"))) return;
            if (target == null)
            {
                return;
            }
            if (e.IsValidTarget() && Spells.Q.IsReady())
            {
                Spells.Q.Cast();
                if (Items.Hydra.IsOwned() && Items.Hydra.IsReady() && target.IsValidTarget(325))
                {
                    Items.Hydra.Cast();
                }

                if (Items.Tiamat.IsOwned() && Items.Tiamat.IsReady() && target.IsValidTarget(325))
                {
                    Items.Tiamat.Cast();
                }

                if (Items.Titanic.IsOwned() && target.IsValidTarget(325) && Items.Titanic.IsReady())
                {
                    Items.Titanic.Cast();
                }
            }
        }