Exemplo n.º 1
0
        public override void Orbwalking_BeforeAttack(Orbwalking.BeforeAttackEventArgs args)
        {
            if (GetValue<bool>("Misc.UseQ.Inhibitor") && args.Target is Obj_BarracksDampener && Q.IsReady())
            {
                if (((Obj_BarracksDampener) args.Target).Health >= Player.TotalAttackDamage*3)
                {
                    Q.Cast();
                }
            }

            if (GetValue<bool>("Misc.UseQ.Nexus") && args.Target is Obj_HQ && Q.IsReady())
            {
                Q.Cast();
            }

            var unit = args.Target as Obj_AI_Turret;
            if (unit != null)
            {
                if (GetValue<bool>("UseEM") && E.IsReady())
                {
                    if (((Obj_AI_Turret) args.Target).Health >= Player.TotalAttackDamage*3)
                    {
                        E.CastOnUnit(unit);
                    }
                }

                if (GetValue<bool>("Misc.UseQ.Turret") && Q.IsReady())
                {
                    if (((Obj_AI_Turret) args.Target).Health >= Player.TotalAttackDamage*3)
                    {
                        Q.Cast();
                    }
                }
            }
            if (args.Target is Obj_AI_Hero)
            {
                var t = args.Target as Obj_AI_Hero;
                if (t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null)) && ComboActive)
                {
                    var useQ = Q.IsReady() && GetValue<bool>("UseQC");
                    if (useQ)
                        Q.CastOnUnit(Player);
                }
            }
        }
Exemplo n.º 2
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            SoulBoundSaver();

            foreach (var e in HeroManager.Enemies.Where(e => e.IsValidTarget(E.Range)))
            {
                foreach (var b in e.Buffs.Where(buff => buff.Name.Contains("kalistaexpungemarker")))
                {
                    if (E.IsReady() && e.Health < GetEDamage(e))
                    {
                        E.Cast();
                    }
                }
            }

            //foreach (
            //    var e in
            //        HeroManager.Enemies.Where(e => e.HasBuff("kalistaexpungemarker") && e.IsValidTarget(E.Range) && e.Health < GetEDamage(e)))
            //{
            //    E.Cast();
            //}

            //if (GetValue<KeyBind>("JumpTo").Active)
            //{
            //    JumpTo();
            //}

            //if (GetValue<KeyBind>("JumpTo").Active)
            //{
            //    JumpTo();
            //}

            foreach (var myBoddy in
                     ObjectManager.Get <Obj_AI_Minion>()
                     .Where(obj => obj.Name == "RobotBuddy" && obj.IsAlly && ObjectManager.Player.Distance(obj) < 1500))
            {
                Render.Circle.DrawCircle(myBoddy.Position, 75f, Color.Red);
            }


            Obj_AI_Hero t;

            if (Q.IsReady() && GetValue <KeyBind>("UseQTH").Active)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget(Q.Range) && ObjectManager.Player.Mana > E.ManaCost + Q.ManaCost)
                {
                    Q.Cast(t);
                }
            }

            if (ComboActive || HarassActive)
            {
                if (Orbwalking.CanMove(100))
                {
                    if (Q.IsReady())
                    {
                        t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                        if (!t.HasKindredUltiBuff() && t.IsValidTarget(Q.Range) &&
                            ObjectManager.Player.Mana > E.ManaCost + Q.ManaCost)
                        {
                            Q.Cast(t);
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        public override void ExecuteLaneClear()
        {
            var prepareMinions = GetValue <StringList>("UseE.Prepare.Lane").SelectedIndex;

            if (prepareMinions != 0)
            {
                List <Obj_AI_Minion>        list    = new List <Obj_AI_Minion>();
                IEnumerable <Obj_AI_Minion> minions =
                    from m in
                    ObjectManager.Get <Obj_AI_Minion>()
                    .Where(
                        m =>
                        m.Health > ObjectManager.Player.TotalAttackDamage &&
                        m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))
                    select m;
                if (prepareMinions == 2)
                {
                    minions = minions.Where(m => m.IsUnderAllyTurret());
                }

                var objAiMinions = minions as Obj_AI_Minion[] ?? minions.ToArray();
                foreach (var m in objAiMinions)
                {
                    if (m.GetBuffCount(kalistaEBuffName) >= 0)
                    {
                        Render.Circle.DrawCircle(m.Position, 105f, Color.Blue);
                        list.Add(m);
                    }
                    else
                    {
                        list.Remove(m);
                    }
                }
                var enemy = HeroManager.Enemies.Find(e => e.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65));
                if (enemy == null)
                {
                    foreach (var l in objAiMinions.Except(list).ToList())
                    {
                        Program.ChampionClass.Orbwalker.ForceTarget(l);
                    }
                }
                else
                {
                    Program.ChampionClass.Orbwalker.ForceTarget(enemy);
                }
            }

            if (Q.IsReady())
            {
                var qCount = GetValue <StringList>("UseQ.Lane").SelectedIndex;
                if (qCount != 0)
                {
                    var minions = MinionManager.GetMinions(
                        ObjectManager.Player.ServerPosition,
                        Q.Range,
                        MinionTypes.All,
                        MinionTeam.Enemy);

                    foreach (var minion in minions.Where(x => x.Health <= Q.GetDamage(x)))
                    {
                        var killableMinionCount = 0;
                        foreach (
                            var colminion in
                            qGetCollisionMinions(
                                ObjectManager.Player,
                                ObjectManager.Player.ServerPosition.Extend(minion.ServerPosition, Q.Range)))
                        {
                            if (colminion.Health <= Q.GetDamage(colminion))
                            {
                                if (GetValue <StringList>("UseQ.Mode.Lane").SelectedIndex == 1 &&
                                    colminion.Distance(ObjectManager.Player)
                                    > Orbwalking.GetRealAutoAttackRange(null) + 65)
                                {
                                    killableMinionCount++;
                                }
                                else
                                {
                                    killableMinionCount++;
                                }
                            }
                            else
                            {
                                break;
                            }
                        }

                        if (killableMinionCount >= qCount)
                        {
                            if (!ObjectManager.Player.IsWindingUp && !ObjectManager.Player.IsDashing())
                            {
                                Q.Cast(minion.ServerPosition);
                                break;
                            }
                        }
                    }
                }
            }

            if (E.IsReady())
            {
                var minECount = GetValue <StringList>("UseE.Lane").SelectedIndex;
                if (minECount != 0)
                {
                    var killableMinionCount = 0;
                    foreach (var m in
                             MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range)
                             .Where(x => E.CanCast(x) && x.Health < E.GetDamage(x)))
                    {
                        if (m.SkinName.ToLower().Contains("siege") || m.SkinName.ToLower().Contains("super"))
                        {
                            killableMinionCount += 2;
                        }
                        else
                        {
                            killableMinionCount++;
                        }
                    }

                    if (killableMinionCount >= minECount && E.IsReady() &&
                        ObjectManager.Player.ManaPercent > E.ManaCost * 2)
                    {
                        E.Cast();
                    }
                }
            }

            // Don't miss minion
            if (GetValue <bool>("UseE.LaneNon"))
            {
                var minions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range * 1);

                foreach (var n in minions)
                {
                    var xH = HealthPrediction.GetHealthPrediction(n, (int)(ObjectManager.Player.AttackCastDelay * 1000),
                                                                  Game.Ping / 2 + 100);
                    if (xH < 0)
                    {
                        if (n.Health < E.GetDamage(n) && E.CanCast(n))
                        {
                            E.Cast(n);
                        }
                        else if (Q.IsReady() && Q.CanCast(n) &&
                                 n.Distance(ObjectManager.Player.Position) < Orbwalking.GetRealAutoAttackRange(null) + 75)
                        {
                            xH = HealthPrediction.GetHealthPrediction(n,
                                                                      (int)(ObjectManager.Player.AttackCastDelay * 1000), (int)Q.Speed);
                            if (xH < 0)
                            {
                                var input = new PredictionInput
                                {
                                    Unit   = ObjectManager.Player,
                                    Radius = Q.Width,
                                    Delay  = Q.Delay,
                                    Speed  = Q.Speed,
                                };

                                input.CollisionObjects[0] = CollisionableObjects.Minions;

                                int count =
                                    Collision.GetCollision(new List <Vector3> {
                                    n.Position
                                }, input)
                                    .OrderBy(obj => obj.Distance(ObjectManager.Player))
                                    .Count(obj => obj.NetworkId != n.NetworkId);
                                if (count == 0)
                                {
                                    Q.Cast(n);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 4
0
        public void Obj_AI_Hero_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (sender.Type != GameObjectType.obj_AI_Hero)
            {
                return;
            }

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

            if (W.IsReady())
            {
                if (sender.IsEnemy && sender is Obj_AI_Hero && args.Target.IsMe)
                {
                    foreach (
                        var c in
                        DangerousTargetedSpells.Where(c => ((Obj_AI_Hero)sender).ChampionName.ToLower() == c.ChampionName)
                        .Where(c => args.Slot == c.SpellSlot))
                    //.Where(c => args.SData.Name == ((Obj_AI_Hero)sender).GetSpell(c.SpellSlot).Name))
                    {
                        W.Cast();
                    }
                }

                var enemy = (Obj_AI_Hero)sender;
                if ((enemy.CharData.BaseSkinName.ToLower() == "vayne" || enemy.CharData.BaseSkinName.ToLower() == "poppy") && args.Slot == SpellSlot.E &&
                    args.Target.IsMe)
                {
                    for (var i = 1; i < 8; i++)
                    {
                        var myBehind = ObjectManager.Player.Position +
                                       Vector3.Normalize(enemy.ServerPosition -
                                                         ObjectManager.Player.Position) * (-i * 50);
                        if (myBehind.IsWall())
                        {
                            W.Cast();
                        }
                    }
                }

                if (enemy.CharData.BaseSkinName.ToLower() == "riven" && args.Slot == SpellSlot.W && enemy.Position.Distance(ObjectManager.Player.Position) < Orbwalking.GetRealAutoAttackRange(null) + 150)
                {
                    W.Cast();
                    DodgeMessage("Riven's W");
                }


                if (enemy.CharData.BaseSkinName.ToLower() == "diana" && args.Slot == SpellSlot.E && enemy.Position.Distance(ObjectManager.Player.Position) <= 350)
                {
                    W.Cast();
                    DodgeMessage("Diana E");
                }

                if (enemy.CharData.BaseSkinName.ToLower() == "MasterYi" && args.Slot == SpellSlot.E && enemy.Health < ObjectManager.Player.Health && args.Target.IsMe)
                {
                    W.Cast();
                    DodgeMessage("MasterYi E");
                }

                if (enemy.CharData.BaseSkinName.ToLower() == "darius" && args.Slot == SpellSlot.E && enemy.Position.Distance(ObjectManager.Player.Position) <= 550 && enemy.Level <= 5)
                {
                    W.Cast();
                    DodgeMessage("Darius E");
                }

                if (enemy.CharData.BaseSkinName.ToLower() == "blitzcrank" && args.Slot == SpellSlot.R && enemy.Position.Distance(ObjectManager.Player.Position) < Orbwalking.GetRealAutoAttackRange(null) + 300)
                {
                    W.Cast();
                    DodgeMessage("Blitzcrank's R");
                }
                if (enemy.CharData.BaseSkinName.ToLower() == "lissandra" && args.Slot == SpellSlot.R && enemy.Position.Distance(ObjectManager.Player.Position) < 500)
                {
                    W.Cast();
                    DodgeMessage("Lissandra's R");
                }
            }
        }
Exemplo n.º 5
0
        public override void ExecuteJungle()
        {
            var jungleMobs = Utils.GetMobs(Q.Range, Marksman.Utils.Utils.MobTypes.All);

            if (jungleMobs != null)
            {
                if (Q.IsReady())
                {
                    switch (Program.Config.Item("UseQ.Jungle").GetValue <StringList>().SelectedIndex)
                    {
                    case 1:
                    {
                        Q.Cast(jungleMobs);
                        break;
                    }

                    case 2:
                    {
                        jungleMobs = Utils.GetMobs(Q.Range, Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            Q.Cast(jungleMobs);
                        }
                        break;
                    }
                    }
                }

                if (W.IsReady())
                {
                    var jW = Program.Config.Item("UseW.Jungle").GetValue <StringList>().SelectedIndex;
                    if (jW != 0)
                    {
                        if (jW == 1)
                        {
                            jungleMobs = Utils.GetMobs(Orbwalking.GetRealAutoAttackRange(null) + 65,
                                                       Utils.MobTypes.BigBoys);
                            if (jungleMobs != null)
                            {
                                Q.Cast();
                            }
                        }
                        else
                        {
                            var totalAa =
                                ObjectManager.Get <Obj_AI_Minion>()
                                .Where(
                                    m =>
                                    m.Team == GameObjectTeam.Neutral &&
                                    m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 165))
                                .Sum(mob => (int)mob.Health);
                            totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                            if (totalAa > jW)
                            {
                                W.Cast();
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
        public override void ExecuteJungleClear()
        {
            if (Q.IsReady() && AsheQCastReady)
            {
                var jE = GetValue <StringList>("UseQJ").SelectedIndex;
                if (jE != 0)
                {
                    if (jE == 1)
                    {
                        var jungleMobs = Utils.Utils.GetMobs(
                            Orbwalking.GetRealAutoAttackRange(null) + 65,
                            Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            Q.Cast();
                        }
                    }
                    else
                    {
                        var totalAa =
                            MinionManager.GetMinions(
                                ObjectManager.Player.Position,
                                Orbwalking.GetRealAutoAttackRange(null) + 165,
                                MinionTypes.All,
                                MinionTeam.Neutral).Sum(mob => (int)mob.Health);
                        totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                        if (totalAa > jE)
                        {
                            Q.Cast();
                        }
                    }
                }
            }

            if (W.IsReady())
            {
                var jungleMobs = Marksman.Utils.Utils.GetMobs(W.Range, Marksman.Utils.Utils.MobTypes.All);
                if (jungleMobs != null)
                {
                    var jW = GetValue <StringList>("UseWJ").SelectedIndex;
                    switch (jW)
                    {
                    case 1:
                    {
                        jungleMobs = Marksman.Utils.Utils.GetMobs(
                            W.Range,
                            Marksman.Utils.Utils.MobTypes.All,
                            jW);
                        W.CastOnUnit(jungleMobs);
                        break;
                    }

                    case 2:
                    {
                        jungleMobs = Utils.Utils.GetMobs(W.Range, Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            W.CastOnUnit(jungleMobs);
                        }
                        break;
                    }
                    }
                }
            }
        }
Exemplo n.º 7
0
        public override void GameOnUpdate(EventArgs args)
        {
            var orbwalkPos = GetOrbwalkPos();
            var cursor     = Game.CursorPos;

            if (orbwalkPos != cursor &&
                (ComboActive || LaneClearActive || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit))
            {
                Orbwalker.SetOrbwalkingPoint(orbwalkPos);
            }
            else
            {
                Orbwalker.SetOrbwalkingPoint(cursor);
            }

            Obj_AI_Hero t;

            //Combo
            if (ComboActive)
            {
                var minRRange = Config.Item("UseRCMinR").GetValue <Slider>().Value;
                var maxRRange = Config.Item("UseRCMaxR").GetValue <Slider>().Value;

                t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical);
                if (!t.IsValidTarget())
                {
                    return;
                }

                if (W.IsReady() && Config.Item("UseWC").GetValue <bool>() && t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65) &&
                    ObjectManager.Player.Buffs.FirstOrDefault(
                        buff => buff.Name == "dravenfurybuff" || buff.Name == "DravenFury") == null)
                {
                    W.Cast();
                }
                if (IsFleeing(t) && Config.Item("UseEC").GetValue <bool>() && t.IsValidTarget(E.Range))
                {
                    E.Cast(t);
                }

                if (Config.Item("UseRC").GetValue <bool>() && R.IsReady())
                {
                    t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical);
                    if (t.Distance(ObjectManager.Player) >= minRRange && t.Distance(ObjectManager.Player) <= maxRRange &&
                        t.Health < ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) * 2)
                    //R.GetHealthPrediction(target) <= 0)
                    {
                        R.Cast(t);
                    }
                }
            }

            //Peel from melees
            if (Config.Item("EPeel").GetValue <bool>())
            {
                foreach (var pos in from enemy in ObjectManager.Get <Obj_AI_Hero>()
                         where
                         enemy.IsValidTarget() &&
                         enemy.Distance(ObjectManager.Player) <=
                         enemy.BoundingRadius + enemy.AttackRange + ObjectManager.Player.BoundingRadius &&
                         LeagueSharp.Common.Orbwalking.IsMelee(enemy)
                         let direction =
                             (enemy.ServerPosition.To2D() - ObjectManager.Player.ServerPosition.To2D()).Normalized()
                             let pos = ObjectManager.Player.ServerPosition.To2D()
                                       select pos + Math.Min(200, Math.Max(50, enemy.Distance(ObjectManager.Player) / 2)) * direction)
                {
                    E.Cast(pos.To3D());
                }
            }
        }
Exemplo n.º 8
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            UltiBuffStacks = GetUltimateBuffStacks();

            W.Range = 110 + 20 * ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Level;
            R.Range = 900 + 300 * ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Level;

            if (R.IsReady() && GetValue <bool>("UseRM"))
            {
                foreach (
                    var hero in
                    ObjectManager.Get <Obj_AI_Hero>()
                    .Where(
                        hero => hero.IsValidTarget(R.Range) && R.GetDamage(hero) > hero.Health))
                {
                    CastR(hero);
                }
            }
            //R.Cast(hero, false, true);

            if ((!ComboActive && !HarassActive) || (!Orbwalking.CanMove(100) &&
                                                    !(ObjectManager.Player.BaseAbilityDamage + ObjectManager.Player.FlatMagicDamageMod > 100)))
            {
                return;
            }

            var useQ = GetValue <bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useE = GetValue <bool>("UseE" + (ComboActive ? "C" : "H"));
            var useR = GetValue <bool>("UseR" + (ComboActive ? "C" : "H"));
            var rLim = GetValue <Slider>("Rlim" + (ComboActive ? "C" : "H")).Value;

            var t = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical);

            if (useQ && Q.IsReady() && t.IsValidTarget(Q.Range))
            {
                CastQ(t);
                //if (Q.Cast(t) == Spell.CastStates.SuccessfullyCasted)
                //    return;
            }

            if (useE && E.IsReady() && t.IsValidTarget(E.Range))
            {
                CastE(t);
                //if (Q.Cast(t) == Spell.CastStates.SuccessfullyCasted)
                //    return;
            }
            if (R.IsReady() && t.IsValidTarget(R.Range))
            //if (GetValue<bool>("UseRSC") && R.IsReady() && t.IsValidTarget(R.Range))
            {
                if (t.IsValidTarget() &&
                    (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Slow) ||
                     t.HasBuffOfType(BuffType.Fear) ||
                     t.HasBuffOfType(BuffType.Taunt)))
                {
                    CastR(t);
                    //R.Cast(t, false, true);
                }
            }

            if (useR && R.IsReady() && UltiBuffStacks < rLim && t.IsValidTarget(R.Range))
            {
                CastR(t);
                //R.Cast(t, false, true);
            }
        }
Exemplo n.º 9
0
        public override void ExecuteLaneClear()
        {
            List <Obj_AI_Base> laneMinions;

            var laneWValue = GetValue <StringList>("Lane.UseW").SelectedIndex;

            if (laneWValue != 0 && W.IsReady())
            {
                var totalAa =
                    ObjectManager.Get <Obj_AI_Minion>()
                    .Where(
                        m =>
                        m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65 + W.Range))
                    .Sum(mob => (int)mob.Health);

                totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                if (totalAa > laneWValue * 5)
                {
                    W.Cast();
                }
            }

            var laneQValue = GetValue <StringList>("Lane.UseQ").SelectedIndex;

            if (laneQValue != 0 && W.IsReady())
            {
                if (laneQValue == 1 || laneQValue == 3)
                {
                    var vMinions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range);
                    foreach (var minions in vMinions
                             .Where(minions => minions.Health < ObjectManager.Player.GetSpellDamage(minions, SpellSlot.Q))
                             .Where(
                                 m =>
                                 m.IsValidTarget(Q.Range) &&
                                 m.Distance(ObjectManager.Player.Position) > GetRealAARange)
                             )
                    {
                        var qP  = Q.GetPrediction(minions);
                        var hit = qP.CastPosition.Extend(ObjectManager.Player.Position, -140);
                        if (qP.Hitchance >= HitChance.High)
                        {
                            Q.Cast(hit);
                        }
                    }
                }
                if (laneQValue == 2 || laneQValue == 3)
                {
                    var minions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range * 1);

                    foreach (var n in from n in minions
                             let xH =
                                 HealthPrediction.GetHealthPrediction(n,
                                                                      (int)(ObjectManager.Player.AttackCastDelay * 1000), Game.Ping / 2 + 100)
                                 where xH < 0
                                 where n.Health < Q.GetDamage(n)
                                 select n)
                    {
                        Q.Cast(n);
                    }
                }
            }

            var laneEValue = GetValue <StringList>("Lane.UseE").SelectedIndex;

            if (laneEValue != 0 && E.IsReady())
            {
                laneMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, E.Range,
                                                       MinionTypes.All);

                if (laneMinions != null)
                {
                    var locE = E.GetLineFarmLocation(laneMinions);
                    if (laneMinions.Count == laneMinions.Count(m => ObjectManager.Player.Distance(m) < E.Range) &&
                        locE.MinionsHit > laneEValue && locE.Position.IsValid())
                    {
                        E.Cast(locE.Position);
                    }
                }
            }

            var laneRValue = GetValue <StringList>("Lane.UseR").SelectedIndex;

            if (laneRValue != 0 && R.IsReady() && UltiBuffStacks < GetValue <Slider>("Lane.UseRLim").Value)
            {
                switch (laneRValue)
                {
                case 1:
                {
                    var vMinions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range);
                    foreach (var minions in vMinions
                             .Where(minions => minions.Health < R.GetDamage(minions))
                             .Where(
                                 m =>
                                 m.IsValidTarget(R.Range) &&
                                 m.Distance(ObjectManager.Player.Position) > GetRealAARange)
                             )
                    {
                        R.Cast(minions);
                    }

                    break;
                }

                case 2:
                {
                    laneMinions = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, R.Range + R.Width + 30,
                                                           MinionTypes.Ranged);

                    if (laneMinions != null)
                    {
                        var locR = R.GetCircularFarmLocation(laneMinions, R.Width * 0.75f);
                        if (locR.MinionsHit >= laneEValue && R.IsInRange(locR.Position.To3D()))
                        {
                            R.Cast(locR.Position);
                        }
                    }

                    break;
                }
                }
            }
        }
Exemplo n.º 10
0
 public override void Orbwalking_BeforeAttack(Orbwalking.BeforeAttackEventArgs args)
 {
     foreach (
         var target in
             HeroManager.Enemies.Where(
                 e =>
                     e.IsValid && e.Distance(ObjectManager.Player) < Orbwalking.GetRealAutoAttackRange(null) + 65 &&
                     e.IsVisible).Where(target => target.HasBuff("kindredcharge")))
     {
         Orbwalker.ForceTarget(target);
     }
 }
Exemplo n.º 11
0
        public override void GameOnUpdate(EventArgs args)
        {
            var enemy =
                HeroManager.Enemies.Find(
                    e => e.Buffs.Any(b => b.Name.ToLower() == "quinnw_cosmetic" && e.IsValidTarget(E.Range)));

            if (enemy != null)
            {
                if (enemy.Distance(ObjectManager.Player.Position) > Orbwalking.GetRealAutoAttackRange(null) + 65)
                {
                    ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, enemy);
                }
                Orbwalker.ForceTarget(enemy);
            }

            if (Q.IsReady() && GetValue <KeyBind>("UseQTH").Active)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }
                var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    Q.Cast(t, false, true);
                }
            }

            if (ComboActive || HarassActive)
            {
                var useQ = GetValue <bool>("UseQ" + (ComboActive ? "C" : "H"));
                var useE = GetValue <bool>("UseE" + (ComboActive ? "C" : "H"));

                if (Orbwalking.CanMove(100))
                {
                    if (E.IsReady() && useE)
                    {
                        var t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
                        if (t.IsValidTarget() && !t.IsZombie && !isHePantheon(t) && !t.HasBuff("QuinnW_Cosmetic"))
                        {
                            E.CastOnUnit(t);
                        }
                    }

                    if (Q.IsReady() && useQ)
                    {
                        var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                        if (t.IsValidTarget() && !t.IsZombie)
                        {
                            Q.Cast(t);
                        }
                    }

                    if (IsValorMode && !E.IsReady())
                    {
                        var vTarget = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
                        if (vTarget != null)
                        {
                            calculateValorDamage();
                            if (vTarget.Health >= ValorMinDamage && vTarget.Health <= ValorMaxDamage)
                            {
                                R.Cast();
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 12
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            Orbwalker.SetAttack(Game.Time > rqTumbleBuffEndOfTime);

            if (JungleClearActive)
            {
                ExecJungleClear();
            }

            if ((ComboActive || HarassActive))
            {
                if (GetValue <bool>("FocusW"))
                {
                    var silverBuffMarkedEnemy = VayneData.GetSilverBuffMarkedEnemy;
                    if (silverBuffMarkedEnemy != null)
                    {
                        TargetSelector.SetTarget(silverBuffMarkedEnemy);
                    }
                    else
                    {
                        var attackRange = Orbwalking.GetRealAutoAttackRange(ObjectManager.Player);
                        TargetSelector.SetTarget(
                            TargetSelector.GetTarget(attackRange, TargetSelector.DamageType.Physical));
                    }
                }

                var useQ = GetValue <StringList>("Combo.UseQ").SelectedIndex;
                var t    = TargetSelector.GetTarget(Q.Range + Orbwalking.GetRealAutoAttackRange(null),
                                                    TargetSelector.DamageType.Physical);
                if (Q.IsReady() && t.LSIsValidTarget() && useQ != 0)
                {
                    switch (useQ)
                    {
                    case 1:
                    {
                        Q.Cast(Game.CursorPos);
                        break;
                    }

                    case 2:
                    {
                        var silverEnemy = VayneData.GetSilverBuffMarkedEnemy;
                        if (silverEnemy != null && t.ChampionName == silverEnemy.ChampionName &&
                            VayneData.GetSilverBuffMarkedCount == 2)
                        {
                            Q.Cast(Game.CursorPos);
                            Orbwalker.ForceTarget(t);
                        }
                        break;
                    }

                    case 3:
                    {
                        if (t.LSDistance(ObjectManager.Player.Position) > Orbwalking.GetRealAutoAttackRange(null) && Q.IsPositionSafe(t.Position.LSTo2D()))
                        {
                            Q.Cast(t.Position);
                        }
                        else if (Q.IsPositionSafe(Game.CursorPos.LSTo2D()))
                        {
                            Q.Cast(Game.CursorPos);
                        }
                        Orbwalker.ForceTarget(t);
                        break;
                    }
                    }
                }

                var useE = GetValue <StringList>("UseEC").SelectedIndex;
                if (E.IsReady() && useE != 0)
                {
                    t = TargetSelector.GetTarget(E.Range + Q.Range, TargetSelector.DamageType.Physical);
                    if (useE == 1)
                    {
                        if (t.LSIsValidTarget())
                        {
                            CastE(t);
                        }
                    }
                    else
                    {
                        foreach (var e in HeroManager.Enemies.Where(e => e.LSIsValidTarget(E.Range) && !e.IsZombie))
                        {
                            CastE(e);
                        }
                    }

                    /*
                     * foreach (var hero in
                     *  from hero in ObjectManager.Get<Obj_AI_Hero>().Where(hero => hero.LSIsValidTarget(550f))
                     *  let prediction = E.GetPrediction(hero)
                     *  where
                     *      NavMesh.GetCollisionFlags(
                     *          prediction.UnitPosition.LSTo2D()
                     *              .LSExtend(
                     *                  ObjectManager.Player.ServerPosition.LSTo2D(),
                     *                  -GetValue<Slider>("PushDistance").Value)
                     *              .To3D()).HasFlag(CollisionFlags.Wall) ||
                     *      NavMesh.GetCollisionFlags(
                     *          prediction.UnitPosition.LSTo2D()
                     *              .LSExtend(
                     *                  ObjectManager.Player.ServerPosition.LSTo2D(),
                     *                  -(GetValue<Slider>("PushDistance").Value/2))
                     *              .To3D()).HasFlag(CollisionFlags.Wall)
                     *  select hero)
                     * {
                     *  E.Cast(hero);
                     * }
                     */
                }
            }

            if (LaneClearActive)
            {
                var useQ = GetValue <bool>("UseQL");

                if (Q.IsReady() && useQ)
                {
                    var vMinions = MinionManager.GetMinions(ObjectManager.Player.Position, Q.Range);
                    foreach (var minions in
                             vMinions.Where(
                                 minions => minions.Health < ObjectManager.Player.GetSpellDamage(minions, SpellSlot.Q)))
                    {
                        Q.Cast(minions);
                    }
                }
            }
        }
Exemplo n.º 13
0
        public override void Drawing_OnDraw(EventArgs args)
        {
            return;

            var drawE = GetValue <StringList>("DrawE").SelectedIndex;

            if (E.IsReady() && drawE != 0)
            {
                if (drawE == 1 || drawE == 3)
                {
                    Render.Circle.DrawCircle(ObjectManager.Player.Position, E.Range, Color.BurlyWood, 1);
                }

                if (drawE == 2 || drawE == 3)
                {
                    var t = TargetSelector.GetTarget(E.Range + Q.Range, TargetSelector.DamageType.Physical);
                    if (t.LSIsValidTarget())
                    {
                        var color = System.Drawing.Color.Red;
                        for (var i = 1; i < 8; i++)
                        {
                            var targetBehind = t.Position +
                                               Vector3.Normalize(t.ServerPosition - ObjectManager.Player.Position) * i * 50;

                            if (!targetBehind.IsWall())
                            {
                                color = System.Drawing.Color.Aqua;
                            }
                            else
                            {
                                color = System.Drawing.Color.Red;
                            }
                        }

                        var tt = t.Position + Vector3.Normalize(t.ServerPosition - ObjectManager.Player.Position) * 8 * 50;

                        var startpos = t.Position;
                        var endpos   = tt;
                        var endpos1  = tt +
                                       (startpos - endpos).LSTo2D().Normalized().Rotated(45 * (float)Math.PI / 180).To3D() *
                                       t.BoundingRadius;
                        var endpos2 = tt +
                                      (startpos - endpos).LSTo2D().Normalized().Rotated(-45 * (float)Math.PI / 180).To3D() *
                                      t.BoundingRadius;

                        var width = 2;

                        var x = new Geometry.Polygon.Line(startpos, endpos);
                        {
                            x.Draw(color, width);
                        }

                        var y = new Geometry.Polygon.Line(endpos, endpos1);
                        {
                            y.Draw(color, width);
                        }

                        var z = new Geometry.Polygon.Line(endpos, endpos2);
                        {
                            z.Draw(color, width);
                        }
                    }
                }
            }

            var drawQ = GetValue <StringList>("DrawQ").SelectedIndex;

            switch (drawQ)
            {
            case 1:
                Render.Circle.DrawCircle(ObjectManager.Player.Position, Q.Range, System.Drawing.Color.Aqua);
                break;

            case 2:
                Render.Circle.DrawCircle(ObjectManager.Player.Position,
                                         Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65, System.Drawing.Color.Aqua);
                break;
            }
        }
Exemplo n.º 14
0
        public void ExecJungleClear()
        {
            var jungleMobs =
                Marksman.Utils.Utils.GetMobs(Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65,
                                             Marksman.Utils.Utils.MobTypes.All);

            if (jungleMobs != null)
            {
                switch (GetValue <StringList>("UseQJ").SelectedIndex)
                {
                case 1:
                {
                    if (!jungleMobs.SkinName.ToLower().Contains("baron") ||
                        !jungleMobs.SkinName.ToLower().Contains("dragon"))
                    {
                        if (jungleMobs.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))
                        {
                            Q.Cast(
                                jungleMobs.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65)
                                        ? Game.CursorPos
                                        : jungleMobs.Position);
                        }
                    }
                    break;
                }

                case 2:
                {
                    if (!jungleMobs.SkinName.ToLower().Contains("baron") ||
                        !jungleMobs.SkinName.ToLower().Contains("dragon"))
                    {
                        jungleMobs =
                            Marksman.Utils.Utils.GetMobs(
                                Q.Range + Orbwalking.GetRealAutoAttackRange(null) + 65,
                                Marksman.Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            Q.Cast(
                                jungleMobs.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65)
                                        ? Game.CursorPos
                                        : jungleMobs.Position);
                        }
                    }
                    break;
                }
                }

                switch (GetValue <StringList>("UseEJ").SelectedIndex)
                {
                case 1:
                {
                    if (jungleMobs.LSIsValidTarget(E.Range))
                    {
                        E.CastOnUnit(jungleMobs);
                    }
                    break;
                }

                case 2:
                {
                    jungleMobs = Marksman.Utils.Utils.GetMobs(E.Range, Marksman.Utils.Utils.MobTypes.BigBoys);
                    if (jungleMobs != null)
                    {
                        CastE(jungleMobs);

                        if (ObjectManager.Player.LSDistance(jungleMobs) < ObjectManager.Player.AttackRange / 2)
                        {
                            E.CastOnUnit(jungleMobs);
                        }
                    }
                    break;
                }
                }
            }
        }
Exemplo n.º 15
0
 public override void Orbwalking_BeforeAttack(Orbwalking.BeforeAttackEventArgs args)
 {
     args.Process = !Q.IsCharging;
 }
Exemplo n.º 16
0
        public override void ExecuteJungleClear()
        {
            Obj_AI_Base jungleMobs;

            var jungleWValue = GetValue <StringList>("Jungle.UseW").SelectedIndex;

            if (jungleWValue != 0 && W.IsReady())
            {
                var jungleW = jungleWValue;
                if (jungleW != 0)
                {
                    if (jungleW == 1)
                    {
                        jungleMobs =
                            Utils.Utils.GetMobs(Orbwalking.GetRealAutoAttackRange(null) + 65 + W.Range,
                                                Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            W.Cast();
                        }
                    }
                    else
                    {
                        var totalAa =
                            ObjectManager.Get <Obj_AI_Minion>()
                            .Where(
                                m =>
                                m.Team == GameObjectTeam.Neutral &&
                                m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65 + W.Range))
                            .Sum(mob => (int)mob.Health);

                        totalAa = (int)(totalAa / ObjectManager.Player.TotalAttackDamage);
                        if (totalAa > jungleW * 5)
                        {
                            W.Cast();
                        }
                    }
                }
            }


            var jungleQValue = GetValue <StringList>("Jungle.UseQ").SelectedIndex;

            if (jungleQValue != 0 && Q.IsReady())
            {
                jungleMobs = Marksman.Utils.Utils.GetMobs(Q.Range, Utils.Utils.MobTypes.All);

                if (jungleMobs != null)
                {
                    switch (jungleQValue)
                    {
                    case 1:
                    {
                        Q.Cast(jungleMobs);
                        break;
                    }

                    case 2:
                    {
                        jungleMobs = Utils.Utils.GetMobs(Q.Range, Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            Q.Cast(jungleMobs);
                        }
                        break;
                    }
                    }
                }
            }

            var jungleEValue = GetValue <StringList>("Jungle.UseE").SelectedIndex;

            if (jungleEValue != 0 && E.IsReady())
            {
                jungleMobs = Marksman.Utils.Utils.GetMobs(E.Range, Utils.Utils.MobTypes.All);

                if (jungleMobs != null)
                {
                    switch (jungleEValue)
                    {
                    case 1:
                    {
                        E.Cast(jungleMobs, false, true);
                        break;
                    }

                    case 2:
                    {
                        jungleMobs = Utils.Utils.GetMobs(E.Range, Utils.Utils.MobTypes.BigBoys);
                        if (jungleMobs != null)
                        {
                            E.Cast(jungleMobs, false, true);
                        }
                        break;
                    }
                    }
                }
            }

            var jungleRValue = GetValue <StringList>("Jungle.UseR").SelectedIndex;

            if (jungleRValue != 0 && R.IsReady() && UltiBuffStacks < GetValue <Slider>("Jungle.UseRLim").Value)
            {
                jungleMobs = Marksman.Utils.Utils.GetMobs(R.Range, Utils.Utils.MobTypes.All);

                if (jungleMobs != null)
                {
                    switch (jungleRValue)
                    {
                    case 1:
                    {
                        R.Cast(jungleMobs, false, true);
                        break;
                    }

                    case 2:
                    {
                        jungleMobs = Utils.Utils.GetMobs(R.Range, Utils.Utils.MobTypes.BigBoys, jungleRValue);
                        if (jungleMobs != null)
                        {
                            R.Cast(jungleMobs, false, true);
                        }
                        break;
                    }
                    }
                }
            }
        }
Exemplo n.º 17
0
        public override void Orbwalking_BeforeAttack(Orbwalking.BeforeAttackEventArgs args)
        {
            if (!W.IsReady())
            {
                return;
            }

            if (GetValue<bool>("Misc.UseW.Inhibitor") && args.Target is Obj_BarracksDampener)
            {
                W.Cast();
            }

            if (GetValue<bool>("Misc.UseW.Nexus") && args.Target is Obj_HQ)
            {
                W.Cast();
            }

            if (GetValue<bool>("Misc.UseW.Turret") && args.Target is Obj_AI_Turret)
            {
                W.Cast();
            }
        }
Exemplo n.º 18
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (!ComboActive)
            {
                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
                if (!t.IsValidTarget() || !W.IsReady())
                {
                    return;
                }

                if (Program.Config.Item("UseWTH").GetValue <KeyBind>().Active)
                {
                    if (ObjectManager.Player.HasBuff("Recall"))
                    {
                        return;
                    }
                    W.Cast(t);
                }

                if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Charm) ||
                    t.HasBuffOfType(BuffType.Fear) || t.HasBuffOfType(BuffType.Taunt) ||
                    t.HasBuff("zhonyasringshield") || t.HasBuff("Recall"))
                {
                    W.Cast(t.Position);
                }
            }

            /* [ Combo ] */
            if (ComboActive)
            {
                var useW = Config.Item("UseWC" + Id).GetValue <bool>();

                var t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);

                if (Q.IsReady() && AsheQCastReady)
                {
                    if (t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 90))
                    {
                        Q.Cast();
                    }
                }

                if (useW && W.IsReady() && t.IsValidTarget())
                {
                    W.Cast(t);
                }

                var useR = Program.Config.SubMenu("Combo").Item("UseRC").GetValue <bool>();
                if (useR && R.IsReady())
                {
                    var minRRange = Program.Config.SubMenu("Combo").Item("UseRCMinRange").GetValue <Slider>().Value;
                    var maxRRange = Program.Config.SubMenu("Combo").Item("UseRCMaxRange").GetValue <Slider>().Value;

                    t = TargetSelector.GetTarget(maxRRange, TargetSelector.DamageType.Physical);
                    if (!t.IsValidTarget())
                    {
                        return;
                    }

                    var aaDamage = Orbwalking.InAutoAttackRange(t)
                                       ? ObjectManager.Player.GetAutoAttackDamage(t, true)
                                       : 0;

                    if (t.Health > aaDamage && t.Health <= ObjectManager.Player.GetSpellDamage(t, SpellSlot.R) &&
                        ObjectManager.Player.Distance(t) >= minRRange)
                    {
                        R.Cast(t);
                    }
                }
            }

            //Harass
            if (HarassActive)
            {
                var target = TargetSelector.GetTarget(1200, TargetSelector.DamageType.Physical);
                if (target == null)
                {
                    return;
                }

                if (Config.Item("UseWH" + Id).GetValue <bool>() && W.IsReady())
                {
                    W.Cast(target);
                }
            }

            //Manual cast R
            if (Config.Item("RManualCast" + Id).GetValue <KeyBind>().Active)
            {
                var rTarget = TargetSelector.GetTarget(2000, TargetSelector.DamageType.Physical);
                R.Cast(rTarget);
            }
        }