示例#1
0
 public static void CastSpellSelfAuto(Spell spell, Obj_AI_Hero target)
 {
     if (Player.Distance(target) <= Player.AttackRange)
     {
         Orbwalking.ResetAutoAttackTimer();
         spell.CastOnUnit(ObjectManager.Player);
         Program.Player.IssueOrder(GameObjectOrder.AttackUnit, target);
     }
 }
示例#2
0
 static void Karma()
 {
     Game.PrintChat("Karma supported");
     var shield = new Spell(SpellSlot.E, 400);
     Game.OnUpdate += eventArgs =>
     {
         if (shield.IsReady() && ObjectManager.Player.CountEnemiesInRange(1500) > 0)
         {
             shield.CastOnUnit(ObjectManager.Player);
         }
     };
 }
示例#3
0
文件: Yasuo.cs 项目: Burbb/Portaio
 public static void processTargetedSpells()
 {
     if (!W.IsReady(300) && (wall == null || !E.IsReady(200) || !wall.isValid()))
     {
         return;
     }
     foreach (var targMis in TargetSpellDetector.ActiveTargeted)
     {
         if (targMis == null || targMis.particle == null || targMis.blockBelow < Player.HealthPercent)
         {
             continue;
         }
         try
         {
             var misDist = targMis.particle.Position.LSDistance(Player.Position);
             if (misDist < 700)
             {
                 if (W.IsReady() && misDist < 500)
                 {
                     Vector3 blockwhere = Player.ServerPosition +
                                          Vector3.Normalize(targMis.particle.Position - Player.Position) * 150;
                     W.Cast(blockwhere, true);
                     return;
                 }
                 else if (E.IsReady() && wall != null && wall.isValid(500) &&
                          !goesThroughWall(Player.Position, targMis.particle.Position))
                 {
                     foreach (
                         Obj_AI_Base enemy in
                         ObjectManager.Get <Obj_AI_Base>()
                         .Where(ob => enemyIsJumpable(ob))
                         .OrderBy(ene => ene.Position.LSDistance(Game.CursorPos, true)))
                     {
                         if (goesThroughWall(Player.Position, Player.Position.LSExtend(enemy.Position, 475)))
                         {
                             E.CastOnUnit(enemy);
                             return;
                         }
                     }
                 }
             }
         }
         catch (GameObjectNotFoundException)
         {
         }
         catch (Exception ex)
         {
             Console.WriteLine(ex);
         }
     }
 }
示例#4
0
 private static void Attack(AttackableUnit gtarget)
 {
     try
     {
         if (debug)
         {
             Console.WriteLine("attack " + gtarget.Name);
         }
         R.CastOnUnit(gtarget as Obj_AI_Base);
     }
     catch (Exception)
     {
         //    Pet.IssueOrder(GameObjectOrder.AutoAttackPet, gtarget.Position);
     }
 }
示例#5
0
        private void LogicE()
        {
            var t = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Magical);

            if (t.IsValidTarget())
            {
                if (t.Health < E.GetDamage(t) + OktwCommon.GetKsDamage(t, Q))
                {
                    E.CastOnUnit(t);
                }
                if (!Config.Item("Euse" + t.ChampionName, true).GetValue <bool>())
                {
                    return;
                }
                if (Program.Combo && Player.Mana > RMANA + EMANA)
                {
                    E.CastOnUnit(t);
                }
                else if (Program.Farm && Config.Item("harrasE", true).GetValue <bool>() && Player.Mana > RMANA + EMANA + WMANA + EMANA)
                {
                    E.CastOnUnit(t);
                }
            }
        }
示例#6
0
文件: Swain.cs 项目: riwalry1/AIO
        private static void LogicE()
        {
            var t = TargetSelector.GetTarget(E.Range, DamageType.Magical);

            if (t.LSIsValidTarget())
            {
                if (t.Health < E.GetDamage(t) + OktwCommon.GetKsDamage(t, Q))
                {
                    E.CastOnUnit(t);
                }
                if (!getCheckBoxItem(e, "Euse" + t.NetworkId))
                {
                    return;
                }
                if (Program.Combo && Player.Mana > RMANA + EMANA)
                {
                    E.CastOnUnit(t);
                }
                else if (Program.Farm && getCheckBoxItem(e, "harrasE") && Player.Mana > RMANA + EMANA + WMANA + EMANA)
                {
                    E.CastOnUnit(t);
                }
            }
        }
示例#7
0
 /// <summary>
 /// Basic Wardjump
 /// </summary>
 /// <param name="W">W Skill</param>
 /// <param name="position">Jump Position</param>
 public static void HikiJump(Spell W,Vector3 position)
 {
     ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
     if (WardCastable && W.Instance.Name == "BlindMonkWOne" && W.IsReady())
     {
         ObjectManager.Player.Spellbook.CastSpell(Items.GetWardSlot().SpellSlot, position);
         LastWardCreated = Game.Time;
         LastWardJumpTime = Game.Time;
         WardCastPosition = position;
     }
     var ward = ObjectManager.Get<Obj_AI_Base>()
             .OrderBy(obj => obj.Distance(ObjectManager.Player.ServerPosition))
             .FirstOrDefault(
                 obj =>
                     obj.IsAlly && !obj.IsMe && obj.Name.IndexOf("ward", StringComparison.InvariantCultureIgnoreCase) >= 0 &&
                     (!(obj.Name.IndexOf("turret", StringComparison.InvariantCultureIgnoreCase) >= 0) &&
                      Vector3.DistanceSquared(Game.CursorPos, obj.ServerPosition) <= 150 * 150));
     if (ward != null)
     {
         W.CastOnUnit(ward);
     }
 }
示例#8
0
        public static void useRSmart()
        {
            var obj = (from enemy in HeroManager.Enemies.Where(i => R.IsInRange(i) && CanCastR(i))
                       let sub = enemy.GetEnemiesInRange(RWidth).Where(CanCastR).ToList()
                                 where
                                 (sub.Count > 1 && R.IsKillable(enemy)) ||
                                 sub.Any(i => i.HealthPercent < YasuoSharp.smartR["useRHP"].Cast <Slider>().CurrentValue) ||
                                 sub.Count >= YasuoSharp.smartR["useRHit"].Cast <Slider>().CurrentValue
                                 orderby sub.Count descending
                                 select enemy).ToList();

            if (obj.Any())
            {
                var target = !YasuoSharp.smartR["useRHitTime"].Cast <CheckBox>().CurrentValue ? obj.FirstOrDefault() : obj.Where(i => TimeLeftR(i) * 1000 < 150 + Game.Ping * 2).MinOrDefault(TimeLeftR);
                if (target != null && R.CastOnUnit(target))
                {
                    return;
                }
            }

            /*
             * float timeToLand = float.MaxValue;
             * List<AIHeroClient> enemInAir = getKockUpEnemies(ref timeToLand);
             * foreach (AIHeroClient enem in enemInAir)
             * {
             *  int aroundAir = 0;
             *  foreach (AIHeroClient enem2 in enemInAir)
             *  {
             *      if (Vector3.DistanceSquared(enem.ServerPosition, enem2.ServerPosition) < 400 * 400)
             *          aroundAir++;
             *  }
             *  if (aroundAir >= YasuoSharp.smartR["useRHit"].Cast<Slider>().CurrentValue && timeToLand < 0.4f)
             *      R.Cast(enem);
             * }
             */
        }
示例#9
0
文件: Champion.cs 项目: Imatation/LS-
		public void Cast_Shield_onFriend(Spell spell, int percent,bool skillshot = false)
		{
			if(!spell.IsReady() || !ManaManagerAllowCast(spell))
				return;
			foreach(var friend in Program.Helper.OwnTeam.Where(hero => hero.Distance(ObjectManager.Player) <= spell.Range).Where(friend => friend.Health / friend.MaxHealth * 100 <= percent && Utility.CountEnemysInRange(1000) >= 1))
			{
				if (skillshot)
					spell.Cast(friend.Position, Packets());
				else
					spell.CastOnUnit(friend, Packets());
				return;
			}
		}
示例#10
0
        private void AntiGapcloser_OnEnemyGapcloser(ActiveGapcloser gapcloser)
        {
            var Target = gapcloser.Sender;

            if (Config.Item("AGC", true).GetValue <bool>() && E.IsReady() && Target.IsValidTargetLS(800) && Player.Mana > RMANA + EMANA)
            {
                E.CastOnUnit(Player);
            }
            return;
        }
示例#11
0
文件: Champion.cs 项目: Imatation/LS-
		public void Cast_Speedboost_onFriend(Spell spell)
		{
			if(!spell.IsReady() || !ManaManagerAllowCast(spell))
				return;

			var friend = Program.Helper.OwnTeam.FirstOrDefault(x => x.Distance(ObjectManager.Player) <= spell.Range &&
                Program.Helper.EnemyTeam.Any(enemy => x.Distance(enemy) <= Orbwalking.GetRealAutoAttackRange(x) + 200 && x.BaseAttackDamage * x.AttackSpeedMod * 3 >= enemy.Health));

			if(friend == null)
				return;
			spell.CastOnUnit(friend, Packets());
		}
示例#12
0
文件: Jhin.cs 项目: Burbb/Portaio
        public override void ExecuteJungleClear()
        {
            if (Q.IsReady() && JhinQCastReady)
            {
                var jE = Program.jungleClear["UseQJ"].Cast <ComboBox>().CurrentValue;
                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 = Program.jungleClear["UseWJ"].Cast <ComboBox>().CurrentValue;
                    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;
                    }
                    }
                }
            }
        }
示例#13
0
        private static void Combo(AIHeroClient targ = null, bool force = false)
        {
            if (Q.LastCastedDelay(Delay) || R.LastCastedDelay(Delay))
            {
                return;
            }

            if (!force && CastSecondW())
            {
                return;
            }

            var target = targ ??
                         TargetSelector.GetTarget(
                EFirst && E.IsReady() ? E.Range : W.Range + WRadius - 10, DamageType.Magical);

            if (!target.IsValidTarget())
            {
                //Console.WriteLine("BAD TARG");
                return;
            }

            if (CastEFirst(target))
            {
                Console.WriteLine("Combo: Cast E FIRST");
                return;
            }

            if (Q.CanCast(target) && Q.IsActive(force) && Q.CastOnUnit(target))
            {
                Console.WriteLine("Combo: Cast Q");
                return;
            }

            SpellManager.UpdateUltimate();
            if (R.CanCast(target) && R.IsActive(force) && R.GetSpellSlot() == SpellSlot.Q && R.CastOnUnit(target))
            {
                Console.WriteLine("Combo: Cast R(Q)");
                return;
            }

            if (W.IsReady() && target.IsValidTarget(W.Range + WRadius - 10) && W.IsActive(force) && W.IsFirstW())
            {
                if (!force ||
                    (target.CountEnemiesInRange(300) <= getSliderItem(ksMenu, "KSEnemies") &&
                     Player.HealthPercent >= getSliderItem(ksMenu, "KSHealth")))
                {
                    var pos = Prediction.GetPrediction(target, W.Delay, W.Range + WRadius, W.Speed);
                    if (pos.CastPosition.Distance(target.ServerPosition) < WRadius && W.Cast(pos.CastPosition))
                    {
                        Console.WriteLine("Combo: Cast W");
                        return;
                    }
                }
            }

            if (E.CanCast(target) && E.IsActive(force) && target.DistanceToPlayer() > 50 && E.Cast(target).IsCasted())
            {
                Console.WriteLine("Combo: Cast E");
            }
        }
示例#14
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            Console.WriteLine(Q.GetHitchance().ToString());
            R.Range = 500 * (R.Level == 0 ? 1 : R.Level) + 1500;

            AIHeroClient t;

            if (W.IsReady() && Program.misc["AutoWI"].Cast <CheckBox>().CurrentValue)
            {
                t = TargetSelector.GetTarget(W.Range, DamageType.Physical);
                if (t.LSIsValidTarget(W.Range) &&
                    (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
                     t.HasBuffOfType(BuffType.Taunt) || t.HasBuff("zhonyasringshield") || t.HasBuff("Recall")))
                {
                    W.Cast(t.Position);
                }
            }

            if (Q.IsReady() && Program.misc["AutoQI"].Cast <CheckBox>().CurrentValue)
            {
                t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
                if (t.LSIsValidTarget(Q.Range) &&
                    (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Taunt) && (t.Health <= ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.Q) ||
                                                                                                                              !Orbwalking.InAutoAttackRange(t))))
                {
                    CastQ(t);
                    //Q.Cast(t, false, true);
                }
            }

            if (R.IsReady())
            {
                t = TargetSelector.GetTarget(R.Range, DamageType.Physical);
                if (t.LSIsValidTarget(R.Range) && t.Health <= R.GetDamage(t))
                {
                    if (Program.misc["UltHelp"].Cast <KeyBind>().CurrentValue&& canCastR)
                    {
                        R.Cast(t);
                    }
                    UltTarget = t.ChampionName;
                    ShowUlt   = true;
                }
                else
                {
                    ShowUlt = false;
                }
            }
            else
            {
                ShowUlt = false;
            }


            {
                var pos = ObjectManager.Player.ServerPosition.LSTo2D().LSExtend(Game.CursorPos.LSTo2D(), -300).To3D();
                //E.Cast(pos, true);
            }

            if (Program.misc["UseEQC"].Cast <KeyBind>().CurrentValue&& E.IsReady() && Q.IsReady())
            {
                t = TargetSelector.GetTarget(E.Range, DamageType.Physical);
                if (t.LSIsValidTarget(E.Range) &&
                    t.Health
                    < ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.Q)
                    + ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.E) + 20 && E.CanCast(t))
                {
                    //E.Cast(t);
                    CastQ(t);
                }
            }

            // PQ you broke it D:
            if ((!ComboActive && !HarassActive) || !Orbwalker.CanMove)
            {
                return;
            }

            var useQ = ComboActive ? Program.combo["UseQC"].Cast <CheckBox>().CurrentValue : Program.harass["UseQH"].Cast <CheckBox>().CurrentValue;
            var useE = Program.combo["UseEC"].Cast <CheckBox>().CurrentValue;
            var useR = Program.combo["UseRC"].Cast <CheckBox>().CurrentValue;

            if (Q.IsReady() && useQ)
            {
                t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
                if (t != null)
                {
                    CastQ(t);
                }
            }

            if (E.IsReady() && useE)
            {
                var enemies = HeroManager.Enemies.Where(e => e.LSIsValidTarget(E.Range));
                IEnumerable <AIHeroClient> nResult =
                    (from e in enemies join d in dangerousEnemies on e.ChampionName equals d select e)
                    .Distinct();

                foreach (var n in nResult)
                {
                    if (n.LSIsValidTarget(n.AttackRange * 3) && E.GetPrediction(n).CollisionObjects.Count == 1)
                    {
                        E.Cast(n.Position);
                        if (W.IsReady())
                        {
                            W.Cast(n.Position);
                        }
                    }
                }
            }

            if (R.IsReady() && useR)
            {
                t = TargetSelector.GetTarget(R.Range, DamageType.Physical);
                if (t != null && t.Health <= R.GetDamage(t) && !Orbwalking.InAutoAttackRange(t) && canCastR)
                {
                    R.CastOnUnit(t);
                }
            }
        }
示例#15
0
        public void CastSpell(Spell spell, SpellDataInst sDataInst)
        {
            target = GetTarget(spell);
            if (target != null && spell.IsReady())
            {

                if (target.UnderTurret(true))
                    return;

                var pred = spell.GetPrediction(target);

                if (sDataInst.SData.IsToggleSpell)
                {
                    if (spell.Instance.ToggleState == 1)
                    {
                        if (sDataInst.SData.TargettingType == SpellDataTargetType.Location)
                            spell.Cast(pred.CastPosition);
                        else if (sDataInst.SData.TargettingType == SpellDataTargetType.Unit)
                            spell.CastOnUnit(target);
                        else
                            spell.Cast();
                    }
                }
                else
                {
                    if (spell.IsReady())
                    {
                        if (sDataInst.SData.TargettingType == SpellDataTargetType.Self)
                            spell.Cast();
                        else if (sDataInst.SData.TargettingType == SpellDataTargetType.Unit)
                            spell.CastOnUnit(target);
                        else if (pred.Hitchance >= HitChance.Medium)
                        {
                            spell.Cast(pred.CastPosition);
                        }
                    }
                }
            }
        }
示例#16
0
        private static void AntiGapcloser_OnEnemyGapcloser(ActiveGapcloser gapcloser)
        {
            var Target = gapcloser.Sender;

            if (getCheckBoxItem(eMenu, "AGC") && E.IsReady() && Target.IsValidTarget(800) && Player.Mana > RMANA + EMANA)
            {
                E.CastOnUnit(Player);
            }
        }
示例#17
0
        private static void Combo()
        {
            var allyList = ObjectManager.Get <AIHeroClient>().ToList().FindAll(ally => ally.IsAlly);

            if (target == null)
            {
                return;
            }

            if (theQ.IsReady())
            {
                switch (getBoxItem(comboMenu, "useQ"))
                {
                case 0:
                    break;

                case 1:
                    if (ObjectManager.Player.HealthPercent <= getSliderItem(comboMenu, "useQslider"))
                    {
                        theQ.CastOnUnit(ObjectManager.Player);
                    }
                    break;

                case 2:
                    foreach (var ally in allyList)
                    {
                        if (!ally.IsDead)
                        {
                            if (ally.HealthPercent <= getSliderItem(comboMenu, "useQslider"))
                            {
                                theQ.CastOnUnit(ally);
                            }
                        }
                    }
                    break;
                }
            }

            if (theW.IsReady())
            {
                if (getCheckBoxItem(comboMenu, "useW"))
                {
                    if (ObjectManager.Player.CountEnemiesInRange(spellInfo["wRange"]) >=
                        getSliderItem(comboMenu, "useWenemies"))
                    {
                        theW.Cast();
                    }
                }
            }

            if (theE.IsReady())
            {
                if (getCheckBoxItem(comboMenu, "useE"))
                {
                    if (ObjectManager.Player.ServerPosition.Distance(target.ServerPosition) <=
                        getSliderItem(comboMenu, "useErange"))
                    {
                        theE.CastOnUnit(target);
                    }
                }
            }

            if (theR.IsReady())
            {
                if (getCheckBoxItem(comboMenu, "useR"))
                {
                    if (ObjectManager.Player.CountEnemiesInRange(spellInfo["rRange"]) >=
                        getSliderItem(comboMenu, "useRenemies"))
                    {
                        theR.Cast();
                    }
                }
            }
        }
示例#18
0
        private static void ExecuteCombo()
        {
            if (!R.IsReady())
            {
                return;
            }

            _isComboCompleted = false;

            AIHeroClient t;
            var          cdQEx = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.Q).CooldownExpires;
            var          cdWEx = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).CooldownExpires;
            var          cdEEx = ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).CooldownExpires;

            var cdQ = Game.Time < cdQEx ? cdQEx - Game.Time : 0;
            var cdW = Game.Time < cdWEx ? cdWEx - Game.Time : 0;
            var cdE = Game.Time < cdEEx ? cdEEx - Game.Time : 0;

            if (vComboType == ComboType.ComboQR && Q.IsReady())
            {
                t = TargetSelector.GetTarget(Q.Range, DamageType.Magical);
                if (t == null)
                {
                    return;
                }

                Q.CastOnUnit(t, true);
                R.CastOnUnit(t, true);
            }

            if (vComboType == ComboType.ComboWR && W.IsReady())
            {
                t = TargetSelector.GetTarget(W.Range, DamageType.Magical);
                if (t == null)
                {
                    return;
                }

                if (!LeBlancStillJumped)
                {
                    W.Cast(t, true, true);
                }

                R.Cast(t, true, true);
            }

            if (vComboType == ComboType.ComboER && E.IsReady())
            {
                t = TargetSelector.GetTarget(E.Range, DamageType.Magical);
                if (t == null)
                {
                    return;
                }

                E.Cast(t);
                R.Cast(t);
            }
            _isComboCompleted = true;

            t = TargetSelector.GetTarget(Q.Range, DamageType.Magical);
            UserSummoners(t);
        }
示例#19
0
        private static void Game_OnGameUpdate(EventArgs args)
        {
            Orbwalker.DisableMovement  = false;
            Orbwalker.DisableAttacking = false;

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                Combo();
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass))
            {
                Harass();
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) ||
                Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear))
            {
                Clear();
            }

            if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LastHit))
            {
                if (getCheckBoxItem(harassMenu, "useqLHH") && !justE)
                {
                    Lasthit();
                }
            }

            if (getCheckBoxItem(miscMenu, "AutoW"))
            {
                CleanserManager();
            }

            if (getCheckBoxItem(miscMenu, "AutoR") && R.IsReady())
            {
                foreach (
                    var enemy in
                    HeroManager.Enemies.Where(
                        e =>
                        ((e.UnderTurret(true) &&
                          e.MaxHealth / 100 * getSliderItem(miscMenu, "Rhealt") * 0.75f >
                          e.Health - IncDamages.GetEnemyData(e.NetworkId).DamageTaken) ||
                         (!e.UnderTurret(true) &&
                          e.MaxHealth / 100 * getSliderItem(miscMenu, "Rhealt") >
                          e.Health - IncDamages.GetEnemyData(e.NetworkId).DamageTaken)) &&
                        e.HealthPercent > getSliderItem(miscMenu, "RhealtMin") && e.LSIsValidTarget() &&
                        e.LSDistance(player) > 1500))
                {
                    var pred = IncDamages.GetEnemyData(enemy.NetworkId);
                    if (pred != null && pred.DamageTaken < enemy.Health)
                    {
                        var ally =
                            HeroManager.Allies.OrderBy(a => a.Health).FirstOrDefault(a => enemy.LSDistance(a) < 1000);
                        if (ally != null)
                        {
                            var pos = Prediction.GetPrediction(enemy, 0.75f);
                            if (pos.CastPosition.LSDistance(enemy.Position) < 450 && pos.Hitchance >= HitChance.VeryHigh)
                            {
                                if (enemy.IsMoving)
                                {
                                    R.Cast(enemy.Position.LSExtend(pos.CastPosition, 450));
                                }
                                else
                                {
                                    R.Cast(enemy.ServerPosition);
                                }
                            }
                        }
                    }
                }
            }
            if (getKeyBindItem(comboMenu, "EQtoCursor") && E.IsReady() && Q.IsReady())
            {
                Orbwalker.DisableMovement = true;
                var barrel =
                    GetBarrels()
                    .Where(
                        o =>
                        o.IsValid && !o.IsDead && o.LSDistance(player) < Q.Range &&
                        o.BaseSkinName == "GangplankBarrel" && o.GetBuff("gangplankebarrellife").Caster.IsMe&&
                        KillableBarrel(o))
                    .OrderBy(o => o.LSDistance(Game.CursorPos))
                    .FirstOrDefault();
                if (barrel != null)
                {
                    var cp        = Game.CursorPos;
                    var cursorPos = barrel.LSDistance(cp) > BarrelConnectionRange
                        ? barrel.Position.LSExtend(cp, BarrelConnectionRange)
                        : cp;

                    var points =
                        CombatHelper.PointsAroundTheTarget(player.Position, E.Range - 200)
                        .Where(p => p.LSDistance(player.Position) < E.Range);
                    var middle      = GetMiddleBarrel(barrel, points, cursorPos);
                    var threeBarrel = cursorPos.LSDistance(cp) > BarrelExplosionRange && E.Instance.Ammo >= 2 &&
                                      Game.CursorPos.LSDistance(player.Position) < E.Range && middle.IsValid();
                    var firsDelay = threeBarrel ? 500 : 1;
                    if (cursorPos.IsValid() && cursorPos.LSDistance(player.Position) < E.Range)
                    {
                        E.Cast(threeBarrel ? middle : cursorPos);
                        Utility.DelayAction.Add(firsDelay, () => Q.CastOnUnit(barrel));
                        if (threeBarrel)
                        {
                            if (player.IsMoving)
                            {
                                Player.IssueOrder(GameObjectOrder.Stop, player.Position);
                            }
                            Utility.DelayAction.Add(801, () => E.Cast(middle.LSExtend(cp, BarrelConnectionRange)));
                        }
                        else
                        {
                            Orbwalker.DisableMovement = false;
                            Orbwalker.OrbwalkTo(Game.CursorPos);
                        }
                    }
                    else
                    {
                        Orbwalker.DisableMovement = false;
                        Orbwalker.OrbwalkTo(Game.CursorPos);
                    }
                }
            }
            else if (getKeyBindItem(comboMenu, "EQtoCursor"))
            {
                Orbwalker.DisableMovement = false;
                Orbwalker.OrbwalkTo(Game.CursorPos);
            }
            if (getKeyBindItem(comboMenu, "QbarrelCursor") && Q.IsReady())
            {
                var meleeRangeBarrel =
                    GetBarrels()
                    .OrderBy(o => o.LSDistance(Game.CursorPos))
                    .FirstOrDefault(
                        o =>
                        o.Health > 1 && o.LSDistance(player) < Orbwalking.GetRealAutoAttackRange(o) &&
                        !KillableBarrel(o, true));
                if (meleeRangeBarrel != null && Orbwalker.CanAutoAttack)
                {
                    Orbwalker.DisableAttacking = true;
                    Player.IssueOrder(GameObjectOrder.AttackUnit, meleeRangeBarrel);
                    return;
                }
                var barrel =
                    GetBarrels()
                    .Where(
                        o =>
                        o.IsValid && !o.IsDead && o.LSDistance(player) < Q.Range &&
                        o.BaseSkinName == "GangplankBarrel" && o.GetBuff("gangplankebarrellife").Caster.IsMe&&
                        KillableBarrel(o))
                    .OrderBy(o => o.LSDistance(Game.CursorPos))
                    .FirstOrDefault();
                if (barrel != null)
                {
                    Q.CastOnUnit(barrel);
                }
            }

            if (getCheckBoxItem(miscMenu, "AutoQBarrel") && Q.IsReady())
            {
                var barrel =
                    GetBarrels()
                    .FirstOrDefault(
                        o =>
                        o.IsValid && !o.IsDead && o.LSDistance(player) < Q.Range &&
                        o.BaseSkinName == "GangplankBarrel" && o.GetBuff("gangplankebarrellife").Caster.IsMe&&
                        KillableBarrel(o) &&
                        (o.CountEnemiesInRange(BarrelExplosionRange - 50) > 0 ||
                         HeroManager.Enemies.Count(
                             e =>
                             e.LSIsValidTarget() &&
                             Prediction.GetPrediction(e, 0.1f).UnitPosition.LSDistance(o.Position) <
                             BarrelExplosionRange - 20) > 0));

                if (barrel != null)
                {
                    Q.Cast(barrel);
                }
            }
        }
示例#20
0
 public static void CastQ(Obj_AI_Base t)
 {
     Q.CastOnUnit(t, true);
 }
示例#21
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            R.Range = 500 * (R.Level == 0 ? 1 : R.Level) + 1500;

            AIHeroClient t;

            if (W.IsReady() && (Program.misc["AutoWI"].Cast <ComboBox>().CurrentValue == 1 || (Program.misc["AutoWI"].Cast <ComboBox>().CurrentValue == 2 && ComboActive)))
            {
                t = TargetSelector.GetTarget(W.Range, DamageType.Physical);
                if (t.LSIsValidTarget(W.Range))
                {
                    if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
                        t.HasBuffOfType(BuffType.Taunt) || t.HasBuffOfType(BuffType.Knockup) ||
                        t.HasBuff("zhonyasringshield") || t.HasBuff("Recall"))
                    {
                        CastW(t.Position);
                    }

                    if (t.HasBuffOfType(BuffType.Slow))
                    {
                        var hit = t.LSIsFacing(ObjectManager.Player)
                            ? t.Position.LSExtend(ObjectManager.Player.Position, +140)
                            : t.Position.LSExtend(ObjectManager.Player.Position, -140);
                        CastW(hit);
                    }
                }
            }

            if (Q.IsReady() && (Program.misc["AutoQI"].Cast <ComboBox>().CurrentValue == 1 || (Program.misc["AutoQI"].Cast <ComboBox>().CurrentValue == 2 && ComboActive)))
            {
                t = TargetSelector.GetTarget(Q.Range - 30, DamageType.Physical);
                if (t.LSIsValidTarget(Q.Range) &&
                    (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) || t.HasBuffOfType(BuffType.Taunt) || (t.Health <= ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.Q) && !Orbwalking.InAutoAttackRange(t))))
                {
                    CastQ(t);
                }
            }

            if (Program.combo["UseQMC"].Cast <KeyBind>().CurrentValue)
            {
                t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
                CastQ(t);
            }

            //if (GetValue<KeyBind>("UseEMC").Active)
            //{
            //    t = TargetSelector.GetTarget(E.Range - 50, DamageType.Physical);
            //    E.Cast(t);
            //}

            if (Program.combo["UseRMC"].Cast <KeyBind>().CurrentValue&& R.IsReady())
            {
                foreach (var e in HeroManager.Enemies.Where(e => e.LSIsValidTarget(R.Range)).OrderBy(e => e.Health))
                {
                    R.CastOnUnit(e);
                }
            }

            if (Program.misc["UseEQC"].Cast <KeyBind>().CurrentValue&& E.IsReady() && Q.IsReady())
            {
                t = TargetSelector.GetTarget(E.Range, DamageType.Physical);
                if (t.LSIsValidTarget(E.Range) &&
                    t.Health
                    < ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.Q)
                    + ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.E) + 20 && E.CanCast(t))
                {
                    E.Cast(t);
                    CastQ(t);
                }
            }

            if ((!ComboActive && !HarassActive) || !Orbwalker.CanMove)
            {
                return;
            }

            //var useQ = GetValue<bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useW = Program.combo["UseWC"].Cast <CheckBox>().CurrentValue;
            var useE = Program.combo["UseEC"].Cast <CheckBox>().CurrentValue;
            var useR = Program.combo["UseRC"].Cast <CheckBox>().CurrentValue;

            //if (Q.IsReady() && useQ)
            //{
            //    t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
            //    if (t != null)
            //    {
            //        CastQ(t);
            //    }
            //}

            if (useE && E.IsReady())
            {
                //var enemies = HeroManager.Enemies.Where(e => e.LSIsValidTarget(E.Range));
                //var objAiHeroes = enemies as AIHeroClient[] ?? enemies.ToArray();
                //IEnumerable<AIHeroClient> nResult =
                //    (from e in objAiHeroes join d in dangerousEnemies on e.ChampionName equals d select e)
                //        .Distinct();

                //foreach (var n in nResult.Where(n => n.LSIsFacing(ObjectManager.Player)))
                //{
                //    if (n.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65 - 300) && E.GetPrediction(n).CollisionObjects.Count == 0)
                //    {
                //        E.Cast(n.Position);
                //        if (W.IsReady())
                //            W.Cast(n.Position);
                //    }
                //}

                var nResult = HeroManager.Enemies.Where(e => e.LSIsValidTarget(E.Range));
                foreach (var n in nResult)
                {
                    if (n.LSIsValidTarget(n.LSIsFacing(ObjectManager.Player) ? E.Range - 200 : E.Range - 300) && E.GetPrediction(n).CollisionObjects.Count == 0)
                    {
                        E.Cast(n.Position);
                    }
                }
            }

            if (useW && W.IsReady())
            {
                var nResult = HeroManager.Enemies.Where(e => e.LSIsValidTarget(W.Range));
                foreach (var n in nResult)
                {
                    if (ObjectManager.Player.LSDistance(n) < 450 && n.LSIsFacing(ObjectManager.Player))
                    {
                        CastW(CommonGeometry.CenterOfVectors(new[] { ObjectManager.Player.Position, n.Position }));
                    }
                }
            }

            if (R.IsReady() && useR)
            {
                foreach (var e in HeroManager.Enemies.Where(e => e.LSIsValidTarget(R.Range) && e.Health <= R.GetDamage(e) && !Orbwalking.InAutoAttackRange(e) && canCastR))
                {
                    R.CastOnUnit(e);
                }
            }
        }
示例#22
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            R.Range = 500 * (R.Level == 0 ? 1 : R.Level) + 1500;

            AIHeroClient t;

            if (Program.misc["AutoWI"].Cast <ComboBox>().CurrentValue != 0 && W.IsReady())
            {
                foreach (
                    var hero in
                    HeroManager.Enemies.Where(h => h.LSIsValidTarget(W.Range) && h.HasBuffOfType(BuffType.Stun)))
                {
                    CastW(hero.Position, false);
                }
            }

            if (W.IsReady() &&
                (Program.misc["AutoWI"].Cast <ComboBox>().CurrentValue == 1 ||
                 (Program.misc["AutoWI"].Cast <ComboBox>().CurrentValue == 2 && ComboActive)))
            {
                t = TargetSelector.GetTarget(W.Range, DamageType.Physical);
                if (t.LSIsValidTarget(W.Range))
                {
                    if (t.HasBuffOfType(BuffType.Stun) || t.HasBuffOfType(BuffType.Snare) ||
                        t.HasBuffOfType(BuffType.Taunt) || t.HasBuffOfType(BuffType.Knockup) ||
                        t.HasBuff("zhonyasringshield") || t.HasBuff("Recall"))
                    {
                        CastW(t.Position);
                    }

                    if (t.HasBuffOfType(BuffType.Slow) && t.LSIsValidTarget(E.Range - 200))
                    {
                        //W.Cast(t.Position.Extend(ObjectManager.Player.Position, +200));
                        //W.Cast(t.Position.Extend(ObjectManager.Player.Position, -200));

                        var hit = t.LSIsFacing(ObjectManager.Player)
                            ? t.Position.LSExtend(ObjectManager.Player.Position, +200)
                            : t.Position.LSExtend(ObjectManager.Player.Position, -200);
                        CastW(hit);
                    }
                }
            }

            if (Q.IsReady() &&
                (Program.misc["AutoQI"].Cast <ComboBox>().CurrentValue == 1 || (Program.misc["AutoQI"].Cast <ComboBox>().CurrentValue == 2 && ComboActive)))
            {
                t = TargetSelector.GetTarget(Q.Range - 30, DamageType.Physical);
                if (t.LSIsValidTarget(Q.Range)
                    &&
                    (t.HasBuffOfType(BuffType.Stun) ||
                     t.HasBuffOfType(BuffType.Snare) ||
                     t.HasBuffOfType(BuffType.Taunt) ||
                     (t.Health <= ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.Q) &&
                      !t.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))))
                {
                    CastQ(t);
                }
            }

            if (Program.combo["UseQMC"].Cast <KeyBind>().CurrentValue)
            {
                t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
                CastQ(t);
            }

            //if (GetValue<KeyBind>("UseEMC").Active)
            //{
            //    t = TargetSelector.GetTarget(E.Range - 50, DamageType.Physical);
            //    E.Cast(t);
            //}

            if (Program.combo["UseRMC"].Cast <KeyBind>().CurrentValue&& R.IsReady())
            {
                foreach (
                    var e in
                    HeroManager.Enemies.Where(
                        e =>
                        e.LSIsValidTarget(R.Range) &&
                        ObjectManager.Player.LSCountEnemiesInRange(Orbwalking.GetRealAutoAttackRange(null) + 65) <=
                        1).OrderBy(e => e.Health))
                {
                    //Utils.MPing.Ping(enemy.Position.To2D());
                    R.CastOnUnit(e);
                }
            }

            //for (int i = 1; i < HeroManager.Enemies.Count(e => e.Health < R.GetDamage(e)); i++)
            //{

            //    Common.CommonGeometry.DrawBox(new Vector2(Drawing.Width * 0.45f, Drawing.Height * 0.80f), 125, 18, Color.Transparent, 1, System.Drawing.Color.Black);
            //    Common.CommonGeometry.DrawText(CommonGeometry.Text, HeroManager.Enemies[i].ChampionName + " Killable", Drawing.Width * 0.455f, Drawing.Height * (0.803f + i * 50), SharpDX.Color.Wheat);
            //}

            if (Program.misc["UseEQC"].Cast <KeyBind>().CurrentValue&& E.IsReady() && Q.IsReady())
            {
                t = TargetSelector.GetTarget(E.Range, DamageType.Physical);
                if (t.LSIsValidTarget(E.Range) &&
                    t.Health
                    < ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.Q)
                    + ObjectManager.Player.LSGetSpellDamage(t, SpellSlot.E) + 20 && E.CanCast(t))
                {
                    E.Cast(t);
                    CastQ(t);
                }
            }

            if ((!ComboActive && !HarassActive) || !Orbwalker.CanMove)
            {
                return;
            }

            //var useQ = GetValue<bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useW = Program.combo["UseWC"].Cast <CheckBox>().CurrentValue;
            var useE = Program.combo["UseEC"].Cast <CheckBox>().CurrentValue;
            var useR = Program.combo["UseRC"].Cast <CheckBox>().CurrentValue;

            //if (Q.IsReady() && useQ)
            //{
            //    t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
            //    if (t != null)
            //    {
            //        CastQ(t);
            //    }
            //}

            if (useE && E.IsReady())
            {
                //var enemies = HeroManager.Enemies.Where(e => e.LSIsValidTarget(E.Range));
                //var objAiHeroes = enemies as Obj_AI_Hero[] ?? enemies.ToArray();
                //IEnumerable<Obj_AI_Hero> nResult =
                //    (from e in objAiHeroes join d in dangerousEnemies on e.ChampionName equals d select e)
                //        .Distinct();

                //foreach (var n in nResult.Where(n => n.IsFacing(ObjectManager.Player)))
                //{
                //    if (n.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65 - 300) && E.GetPrediction(n).CollisionObjects.Count == 0)
                //    {
                //        E.Cast(n.Position);
                //        if (W.IsReady())
                //            W.Cast(n.Position);
                //    }
                //}
                //if (GetValue<bool>("E.ProtectDistance"))
                //{
                //    foreach (var n in HeroManager.Enemies)
                //    {
                //        if (GetValue<bool>("E." + n.ChampionName + ".ProtectDistance") &&
                //            n.Distance(ObjectManager.Player) < E.Range - 100)
                //        {
                //            E.Cast(n.Position);
                //        }

                //    }
                //}
                var nResult =
                    HeroManager.Enemies.Where(
                        e =>
                        e.LSIsValidTarget(E.Range) && e.Health >= ObjectManager.Player.TotalAttackDamage * 2 &&
                        e.LSIsFacing(ObjectManager.Player) && e.LSIsValidTarget(E.Range - 300) &&
                        E.GetPrediction(e).CollisionObjects.Count() == 0);
                foreach (var n in nResult)
                {
                    //                    if (n.LSIsValidTarget(n.IsFacing(ObjectManager.Player) ? E.Range - 200 : E.Range - 300) && E.GetPrediction(n).CollisionObjects.Count == 0)
                    //                    {
                    E.Cast(n.Position);
                    if (W.IsReady())
                    {
                        W.Cast(n.Position);
                    }
                    if (Q.IsReady())
                    {
                        Q.Cast(n.Position);
                    }

                    //                    }
                }
            }

            if (useW && W.IsReady())
            {
                var nResult = HeroManager.Enemies.Where(e => e.LSIsValidTarget(W.Range));
                foreach (var n in nResult)
                {
                    if (ObjectManager.Player.LSDistance(n) < 450 && n.LSIsFacing(ObjectManager.Player))
                    {
                        CastW(CommonGeometry.CenterOfVectors(new[] { ObjectManager.Player.Position, n.Position }));
                    }
                }
            }

            if (R.IsReady() && useR)
            {
                foreach (
                    var e in
                    HeroManager.Enemies.Where(
                        e =>
                        e.LSIsValidTarget(R.Range) && e.Health <= R.GetDamage(e) && ObjectManager.Player.LSCountEnemiesInRange(Orbwalking.GetRealAutoAttackRange(null) + 350) == 0 &&
                        !Orbwalking.InAutoAttackRange(e) && canCastR))
                {
                    R.CastOnUnit(e);
                }
            }
        }
示例#23
0
文件: Champion.cs 项目: Imatation/LS-
		public void Cast_onEnemy(Spell spell, SimpleTs.DamageType damageType = SimpleTs.DamageType.Physical)
		{
			if(!spell.IsReady() || !ManaManagerAllowCast(spell))
				return;
			var target = SimpleTs.GetTarget(spell.Range, damageType);
			if(target.IsValidTarget(spell.Range))
				spell.CastOnUnit(target, Packets());
		}
示例#24
0
文件: Jax.cs 项目: soulcrash/PortAIO
        private static void Combo(bool anyTarget = false)
        {
            if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
            {
                return;
            }
            AIHeroClient target = TargetSelector.GetTarget(700, DamageType.Magical);

            // IITEMS
            if (target != null && Player.LSDistance(target) <= botrk.Range)
            {
                botrk.Cast(target);
            }
            if (target != null && Player.LSDistance(target) <= cutlass.Range)
            {
                cutlass.Cast(target);
            }
            if (target != null && Player.LSDistance(target) <= hextech.Range)
            {
                hextech.Cast(target);
            }


            // ACTUAL COMBO
            if (target != null && !target.IsZombie)
            {
                if (Q.IsReady() && getCheckBoxItem(comboMenu, "useQ"))
                {
                    if ((Player.LSDistance(target.Position) > Orbwalking.GetRealAutoAttackRange(Player)) || getCheckBoxItem(comboMenu, "useQ2"))
                    {
                        Q.CastOnUnit(target);
                    }
                }
                if (E.IsReady() && (getCheckBoxItem(comboMenu, "useE")))
                {
                    if ((!IsEUsed && Q.IsReady() && target.LSIsValidTarget(Q.Range)) || (!IsEUsed && Player.LSDistance(target.Position) < 250))
                    {
                        E.Cast();
                    }
                    if (getCheckBoxItem(comboMenu, "useE2") && IsEUsed && (Player.LSDistance(target.Position) < 180))
                    {
                        E.Cast();
                    }

                    /*if (anyTarget)
                     * {
                     *  List<AIHeroClient> enemies = Player.Position.GetEnemiesInRange(180);
                     *  if (enemies.Count >= 3)
                     *  {
                     *      E.Cast();
                     *      return;
                     *  }
                     *  if (enemies.Count == 1)
                     *  {
                     *      target = enemies.ElementAt(0);
                     *  }
                     * }*/
                }
                if (target.HealthPercent > 20)
                {
                    if ((getCheckBoxItem(comboMenu, "useR") && Q.IsReady() && R.IsReady()) ||
                        (getCheckBoxItem(comboMenu, "useR") && R.IsReady() && !Q.IsReady() &&
                         Player.LSDistance(target.Position) < 300))
                    {
                        R.Cast();
                    }
                }
            }
        }
示例#25
0
文件: Champion.cs 项目: Imatation/LS-
		public void Cast_onMinion_nearEnemy(Spell spell, float range, SimpleTs.DamageType damageType = SimpleTs.DamageType.Physical, MinionTypes minionTypes = MinionTypes.All, MinionTeam minionTeam = MinionTeam.All)
		{
			if(!spell.IsReady() || !ManaManagerAllowCast(spell))
				return;
			var target = SimpleTs.GetTarget(spell.Range + range, damageType);
			Obj_AI_Base[] nearstMinion = { null };
			var allminions = MinionManager.GetMinions(target.Position, range, minionTypes, minionTeam);
			foreach(var minion in allminions.Where(minion => minion.Distance(ObjectManager.Player) <= spell.Range && minion.Distance(target) <= range).Where(minion => nearstMinion[0] == null || nearstMinion[0].Distance(target) >= minion.Distance(target)))
				nearstMinion[0] = minion;

			if(nearstMinion[0] != null)
				spell.CastOnUnit(nearstMinion[0], Packets());
		}
示例#26
0
        private static bool Combo(AIHeroClient forcedTarget = null)
        {
            //var mode = Orbwalker.ActiveModesFlags;
            var comboMode   = getBoxItem(miscMenu, "ComboMode");
            var d           = comboMode == 0 ? E.Range : Q.Range;
            var forceTarget = forcedTarget.IsValidTarget();
            var target      = forceTarget ? forcedTarget : TargetSelector.GetTarget(d, DamageType.Magical);

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

            var q = Q.CanCast(target) && Q.IsActive(forceTarget);
            var w = W.CanCast(target) && W.IsActive(forceTarget);
            var e = E.CanCast(target) && E.IsActive(forceTarget) &&
                    target.CountEnemiesInRange(200) <= getSliderItem(eMenu, "EEnemies");

            if (!forceTarget && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) &&
                getKeyBindItem(miscMenu, "ComboKillable"))
            {
                var damage = target.GetComboDamage(q, w, e, Utility.IsRReady(), true);
                if (target.Health > damage)
                {
                    return(false);
                }
            }

            var delay = (int)(100 + Game.Ping / 2f + Random.Next(150));

            if (Q.LastCastedDelay(delay) || E.LastCastedDelay(delay) || R.LastCastedDelay(delay))
            {
                return(false);
            }

            if (comboMode == 0 && q && e && CastE(target, forceTarget))
            {
                return(true);
            }

            if (q && Q.CastOnUnit(target))
            {
                return(true);
            }

            if (e && CastE(target, forceTarget))
            {
                return(true);
            }

            if (w && W.Cast())
            {
                return(true);
            }

            if (Utility.IsRReady() && (forceTarget || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)))
            {
                if (!forceTarget && getCheckBoxItem(rMenu, "RInCombo") && target.IsValidTarget(R.Range) && R.Cast())
                {
                    return(true);
                }

                if (!forceTarget && !getCheckBoxItem(rMenu, "RCombo"))
                {
                    return(false);
                }

                var enemy =
                    Enemies.FirstOrDefault(h => h.IsValidTarget(R.Range) && h.GetCalculatedRDamage(UltTicks) > h.Health);
                if (enemy != null && R.Cast())
                {
                    return(true);
                }
            }
            return(false);
        }
示例#27
0
        public static void TargetSkill(Obj_AI_Base target, Spell spell, bool packet = false, bool towerCheck = false)
        {
            if (!spell.IsReady() || target == null || towerCheck && target.UnderTurret(true))
            {
                return;
            }

            spell.CastOnUnit(target, packet);
        }
示例#28
0
文件: Champion.cs 项目: lanyi777/CN
 public void Cast_Shield_onFriend(Spell spell, int percent, bool skillshot = false)
 {
     if(!spell.IsReady())
         return;
     foreach(var friend in PUC.AllHerosFriend.Where(hero => hero.Distance(PUC.Player) <= spell.Range).Where(friend => friend.Health / friend.MaxHealth * 100 <= percent && EnemysinRange(600, 1, friend)))
     {
         if(skillshot)
             spell.Cast(spell.GetPrediction(friend).CastPosition , UsePackets());
         else
             spell.CastOnUnit(friend, UsePackets());
         return;
     }
 }
示例#29
0
文件: Program.cs 项目: Burbb/Portaio
        private static void Combo()
        {
            var t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);

            if (t == null)
            {
                return;
            }

            if (t.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 95) && shenBuffActive)
            {
                return;
            }

            var minQRange = getSliderItem(comboMenu, "ComboUseQMinRange");

            if (Q.IsReady() && Q.GetDamage(t) > t.Health)
            {
                Q.Cast(t);
            }

            if (E.IsReady())
            {
                switch (getBoxItem(comboMenu, "Combo.CastE"))
                {
                case 0:
                    if (E.IsReady() && Q.IsReady() && t.LSIsValidTarget(Q.Range))
                    {
                        if (Player.LSDistance(t) >= minQRange && t.LSIsValidTarget(Q.Range))
                        {
                            Q.CastOnUnit(t);
                        }
                        E.Cast();
                    }
                    break;

                case 1:
                    if (E.IsReady() && t.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 95))
                    {
                        E.Cast();
                    }
                    break;
                }

                if (eCounterStrike && t.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))
                {
                    E.Cast();
                }
            }

            if (Q.IsReady() && Player.LSDistance(t) >= minQRange && t.LSIsValidTarget(Q.Range))
            {
                Q.Cast(t);
            }


            if (ObjectManager.Player.LSDistance(t) <= E.Range)
            {
                CastItems();
                //UseItems(t);
            }

            if (W.IsReady() && ObjectManager.Player.CountEnemiesInRange(Orbwalking.GetRealAutoAttackRange(t)) > 0)
            {
                W.Cast();
            }

            if (E.IsReady() && ObjectManager.Player.CountEnemiesInRange(Orbwalking.GetRealAutoAttackRange(t)) > 0)
            {
                E.Cast();
            }

            if (R.IsReady())
            {
                if (Player.LSDistance(t) < Player.AttackRange)
                {
                    if (
                        ObjectManager.Player.CountEnemiesInRange(
                            (int)Orbwalking.GetRealAutoAttackRange(ObjectManager.Player)) >= 2 ||
                        t.Health > Player.Health)
                    {
                        R.CastOnUnit(Player);
                    }
                }
            }
        }
示例#30
0
文件: Program.cs 项目: Burbb/Portaio
        private static void Harass()
        {
            var t = TargetSelector.GetTarget(Q.Range, DamageType.Magical);

            if (t == null)
            {
                return;
            }
            var useQ = getCheckBoxItem(harassMenu, "UseQHarass");
            var useW = getCheckBoxItem(harassMenu, "UseWHarass");
            var useE = getCheckBoxItem(harassMenu, "UseEHarass");
            var useQDontUnderTurret = getCheckBoxItem(harassMenu, "UseQHarassDontUnderTurret");

            switch (getBoxItem(harassMenu, "HarassMode"))
            {
            case 0:
            {
                if (Q.IsReady() && W.IsReady() && t != null && useQ && useW)
                {
                    if (useQDontUnderTurret)
                    {
                        if (!t.UnderTurret())
                        {
                            Q.Cast(t);
                            W.Cast();
                        }
                    }
                    else
                    {
                        Q.Cast(t);
                        W.Cast();
                    }
                }
                break;
            }

            case 1:
            {
                if (Q.IsReady() && E.IsReady() && t != null && useQ && useE)
                {
                    if (useQDontUnderTurret)
                    {
                        if (!t.UnderTurret())
                        {
                            Q.Cast(t);
                            E.Cast();
                        }
                    }
                    else
                    {
                        Q.Cast(t);
                        E.Cast();
                    }
                }
                break;
            }

            case 2:
            {
                if (Q.IsReady() && useQ && t != null && useQ)
                {
                    if (useQDontUnderTurret)
                    {
                        if (!t.UnderTurret())
                        {
                            Q.Cast(t);
                        }
                    }
                    else
                    {
                        Q.Cast(t);
                    }
                    UseItems(t);
                }

                if (W.IsReady() && useW && t != null && t.LSIsValidTarget(E.Range))
                {
                    W.Cast();
                }

                if (E.IsReady() && useE && t != null && t.LSIsValidTarget(E.Range))
                {
                    E.CastOnUnit(Player);
                }
                break;
            }
            }
        }
示例#31
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (ObjectManager.Player.IsDead)
            {
                xAttackLeft = 0;
                return;
            }

            if (Game.Time > xPassiveUsedTime + 3 && xAttackLeft == 1)
            {
                xAttackLeft = 0;
            }

            if (Program.misc["Passive"].Cast <CheckBox>().CurrentValue&& xAttackLeft > 0)
            {
                return;
            }

            AIHeroClient t;

            if (Q.IsReady() && Program.harass["UseQTH"].Cast <KeyBind>().CurrentValue&& ToggleActive)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
                if (t != null)
                {
                    Q.CastOnUnit(t);
                }
            }


            if (Q.IsReady() && Program.harass["UseQExtendedTH"].Cast <KeyBind>().CurrentValue&& ToggleActive)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                t = TargetSelector.GetTarget(Q.Range, DamageType.Physical);
                if (t.LSIsValidTarget() && QMinion(t).LSIsValidTarget())
                {
                    if (ObjectManager.Player.LSDistance(t) > Q.Range)
                    {
                        Q.CastOnUnit(QMinion(t));
                    }
                }
            }


            if ((!ComboActive && !HarassActive))
            {
                return;
            }

            var useQExtended = Program.combo["UseQExtendedC"].Cast <ComboBox>().CurrentValue;

            if (useQExtended != 0)
            {
                switch (useQExtended)
                {
                case 1:
                {
                    t = TargetSelector.GetTarget(Q2.Range, DamageType.Physical);
                    var tx = QMinion(t);
                    if (tx.LSIsValidTarget())
                    {
                        if (!Orbwalking.InAutoAttackRange(t))
                        {
                            Q.CastOnUnit(tx);
                        }
                    }
                    break;
                }

                case 2:
                {
                    var enemy = HeroManager.Enemies.Find(e => e.LSIsValidTarget(Q2.Range) && !e.IsZombie);
                    if (enemy != null)
                    {
                        var tx = QMinion(enemy);
                        if (tx.LSIsValidTarget())
                        {
                            Q.CastOnUnit(tx);
                        }
                    }
                    break;
                }
                }
            }

            // Auto turn off Ghostblade Item if Ultimate active
            if (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Level > 0)
            {
                Program.MenuActivator["GHOSTBLADE"].Cast <CheckBox>().CurrentValue = (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Name == "LucianR");
            }

            //if (useQExtended && Q.IsReady())
            //{
            //    var t = TargetSelector.GetTarget(Q2.Range, DamageType.Physical);
            //    if (t.LSIsValidTarget() && QMinion.LSIsValidTarget())
            //    {
            //        if (!Orbwalking.InAutoAttackRange(t))
            //            Q.CastOnUnit(QMinion);
            //    }
            //}

            t = TargetSelector.GetTarget(W.Range, DamageType.Physical);
            if (!t.LSIsValidTarget())
            {
                return;
            }

            var useQ = Program.combo["UseQC"].Cast <CheckBox>().CurrentValue;

            if (useQ && Q.IsReady())
            {
                if (t.LSIsValidTarget(Q.Range))
                {
                    Q.CastOnUnit(t);
                    //Orbwalking.ResetAutoAttackTimer();
                }
            }

            var useW = Program.combo["UseQC"].Cast <CheckBox>().CurrentValue;

            if (useW && W.CanCast(t))
            {
                if (t.Health <= W.GetDamage(t) || t.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + 65))
                {
                    W.Cast(t.Position);
                }
            }

            var useE = Program.combo["UseEC"].Cast <ComboBox>().CurrentValue;

            if (useE != 0 && E.IsReady())
            {
                if (t.LSDistance(ObjectManager.Player.Position) > Orbwalking.GetRealAutoAttackRange(null) &&
                    t.LSIsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + E.Range - 100) && E.IsPositionSafe(t.Position.LSTo2D()))
                {
                    E.Cast(t.Position);
                    //Orbwalking.ResetAutoAttackTimer();
                }
                else if (E.IsPositionSafe(Game.CursorPos.LSTo2D()))
                {
                    E.Cast(Game.CursorPos);
                    //Orbwalking.ResetAutoAttackTimer();
                }
                //Orbwalker.ForceTarget(t);

                //if (t.LSIsValidTarget(Q.Range))
                //{
                //    E.Cast(Game.CursorPos);
                //}
            }
        }
示例#32
0
        static void Obj_AI_Base_OnCreate(GameObject sender, EventArgs args)
        {
            if (!config.Item("Use").GetValue<KeyBind>().Active && !config.Item("Always").GetValue<bool>())
                return;

            #region Rengar

            var Rengar = HeroManager.Enemies.Find(x => x.ChampionName.ToLower() == "rengar");

            if (Rengar != null)
            {
                if (config.Item("RengarR").GetValue<bool>())
                {
                    if (sender.IsEnemy && sender.Name.Contains("Rengar_Base_R_Alert"))
                    {
                        if (ObjectManager.Player.HasBuff("rengarralertsound") &&
                        !CheckWard() &&
                        !Rengar.IsVisible &&
                        !Rengar.IsDead &&
                            CheckSlot() != SpellSlot.Unknown)
                        {
                            ObjectManager.Player.Spellbook.CastSpell(CheckSlot(), ObjectManager.Player.Position);
                        }
                    }
                }

                var spell = new Spell(SkillData.slot, SkillData.range);

                if (config.Item("FRUse").GetValue<bool>() && SkillData.slot != SpellSlot.Unknown)
                {
                    if (sender.IsEnemy && sender.Name.Contains("Rengar_LeapSound.troy") &&
                        ObjectManager.Player.Distance(sender.Position) < 1700 &&
                        spell.IsReady())
                    {
                        if (spell.Range == 1 && ObjectManager.Player.Distance(Rengar.Position) < 750)
                        {
                            spell.Cast(ObjectManager.Player.Position);
                        }
                        else if (ObjectManager.Player.Distance(Rengar.Position) < spell.Range &&
                            Rengar.IsValidTarget())
                        {
                            spell.CastOnUnit(Rengar);
                        }
                    }
                }
            }

            #endregion

            #region Leblanc

            var Leblanc = HeroManager.Enemies.Find(x => x.ChampionName.ToLower() == "leblanc");

            if (Leblanc != null)
            {
                if (!config.Item("LeBlancR").GetValue<bool>())
                    return;

                if (ObjectManager.Player.Distance(sender.Position) > 600)
                    return;

                if (sender.IsEnemy && sender.Name == "LeBlanc_Base_P_poof.troy")
                {
                    if (!CheckWard() &&
                    !Leblanc.IsVisible &&
                    !Leblanc.IsDead &&
                        CheckSlot() != SpellSlot.Unknown)
                    {
                        ObjectManager.Player.Spellbook.CastSpell(CheckSlot(), ObjectManager.Player.Position);
                    }
                }
            }

            #endregion
        }