Example #1
0
        private bool ShouldE(Obj_AI_Hero target, string source)
        {
            if (!E.IsReady())
            {
                return(false);
            }

            if (Player.Distance(target.Position) > E.Range)
            {
                return(false);
            }

            if (E.GetPrediction(target).Hitchance < HitChanceManager.GetEHitChance(source))
            {
                if (!menu.Item("E_Over_Heat", true).GetValue <bool>() && GetCurrentHeat() > 80)
                {
                    return(false);
                }
            }

            if (GetCurrentHeat() > 80 && !(Player.GetSpellDamage(target, SpellSlot.E, 1) + Player.GetAutoAttackDamage(target) * 2 > target.Health))
            {
                return(false);
            }

            return(true);
        }
Example #2
0
        private void Cast_E(string source)
        {
            if (GetOrbCount() <= 0)
            {
                return;
            }

            var target = TargetSelector.GetTarget(_qe.Range + 100, TargetSelector.DamageType.Magical);

            if (target == null || Utils.TickCount - W.LastCastAttemptT < Game.Ping)
            {
                return;
            }

            foreach (var orb in _orbs.Where(x => Player.Distance(x.Position) < E.Range))
            {
                double rangeLeft = 100 + (-0.6 * Player.Distance(orb.ServerPosition) + 950);
                var    startPos  = orb.ServerPosition - Vector3.Normalize(orb.ServerPosition - Player.ServerPosition) * 100;
                var    endPos    = startPos + Vector3.Normalize(startPos - Player.ServerPosition) * (float)rangeLeft;

                _qe.Delay = E.Delay + Player.Distance(orb.Position) / E.Speed + target.Distance(orb.Position) / _qe.Speed;
                _qe.From  = startPos;

                var targetPos = _qe.GetPrediction(target);

                var projection = targetPos.UnitPosition.To2D().ProjectOn(startPos.To2D(), endPos.To2D());

                if (!projection.IsOnSegment || targetPos.Hitchance < HitChance.Medium ||
                    !(projection.LinePoint.Distance(targetPos.UnitPosition.To2D()) < _qe.Width))
                {
                    continue;
                }

                if (targetPos.Hitchance >= HitChanceManager.GetEHitChance(source))
                {
                    E.Cast(startPos);
                    W.LastCastAttemptT = Utils.TickCount + 500;
                    return;
                }
            }
        }
Example #3
0
        private void UseSpells(bool useQ, bool useW, bool useE, bool useR, string source)
        {
            if (source == "Harass" && !ManaManager.HasMana("Harass"))
            {
                return;
            }

            var qTarget = TargetSelector.GetTarget(QExtend.Range, TargetSelector.DamageType.Magical);
            var eTarget = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Magical);

            //E
            if (useE && eTarget != null && E.IsReady() && Player.Distance(eTarget.Position) < E.Range && ShouldE(eTarget))
            {
                SpellCastManager.CastBasicSkillShot(E, E.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetEHitChance(source));
            }

            //R
            if (useR && qTarget != null && R.IsReady() && Player.Distance(qTarget.Position) < R.Range)
            {
                CastR(qTarget);
            }

            var itemTarget = TargetSelector.GetTarget(750, TargetSelector.DamageType.Physical);

            if (itemTarget != null)
            {
                var dmg = GetComboDamage(itemTarget);
                ItemManager.Target = itemTarget;

                //see if killable
                if (dmg > itemTarget.Health - 50)
                {
                    ItemManager.KillableTarget = true;
                }

                ItemManager.UseTargetted = true;
            }

            //W
            if (useW && qTarget != null && W.IsReady())
            {
                if (W.GetPrediction(qTarget).Hitchance > HitChance.High && Player.Distance(qTarget.Position) <= W.Width)
                {
                    W.Cast();
                }
            }

            //Q
            if (useQ && Q.IsReady() && qTarget != null)
            {
                CastQ(source);
            }
        }
Example #4
0
        private void UseSpells(bool useQ, bool useW, bool useE, bool useR, string source)
        {
            if (source == "Harass" && !ManaManager.HasMana("Harass"))
            {
                return;
            }

            var target = TargetSelector.GetTarget(Q2.Range, TargetSelector.DamageType.Physical);

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

            //items
            if (source == "Combo")
            {
                var dmg = GetComboDamage(target);
                ItemManager.Target = target;

                //see if killable
                if (dmg > target.Health - 50)
                {
                    ItemManager.KillableTarget = true;
                }

                ItemManager.UseTargetted = true;
            }

            if (useR && R.IsReady())
            {
                Cast_R();
            }
            if (useW && W.IsReady())
            {
                Cast_W(target);
            }
            if (useE && E.IsReady())
            {
                SpellCastManager.CastBasicSkillShot(E, E.Range, TargetSelector.DamageType.Physical, HitChanceManager.GetEHitChance(source));
            }
            if (useQ && Q.IsReady())
            {
                if (Player.Distance(target) > E.Range || !E.IsReady() || !menu.Item("ForceE", true).GetValue <bool>())
                {
                    Cast_Q(target, source);
                }
            }
        }
Example #5
0
        private void UseSpells(bool useQ, bool useW, bool useE, bool useR, string source)
        {
            if (source == "Harass" && !ManaManager.HasMana("Harass"))
            {
                return;
            }

            //items
            if (source == "Combo")
            {
                var itemTarget = TargetSelector.GetTarget(750, TargetSelector.DamageType.Physical);
                if (itemTarget != null)
                {
                    var dmg = GetComboDamage(itemTarget);
                    ItemManager.Target = itemTarget;

                    //see if killable
                    if (dmg > itemTarget.Health - 50)
                    {
                        ItemManager.KillableTarget = true;
                    }

                    ItemManager.UseTargetted = true;
                }
            }

            if (useR && R.IsReady())
            {
                Cast_R(source);
            }
            if (useQ && Q.IsReady())
            {
                SpellCastManager.CastBasicSkillShot(Q, Q.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetQHitChance(source));
            }
            if (useE && E.IsReady())
            {
                SpellCastManager.CastBasicSkillShot(E, E.Range, TargetSelector.DamageType.Physical, HitChanceManager.GetEHitChance(source));
            }
            if (useW && W.IsReady())
            {
                var target = TargetSelector.GetTarget(Player.AttackRange + new[] { 130, 150, 170, 190, 210 }[W.Level - 1], TargetSelector.DamageType.Magical);
                if (target.IsValidTarget(Player.AttackRange + new[] { 90, 120, 150, 180, 210 }[W.Level - 1]))
                {
                    W.Cast();
                }
            }
        }
Example #6
0
        private void UseSpells(bool useQ, bool useW, bool useE, bool useR, string source)
        {
            if (source == "Harass" && !ManaManager.HasMana(source))
            {
                return;
            }

            Obj_AI_Hero eTarget  = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Magical);
            Obj_AI_Hero rETarget = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Magical);

            var dmg = GetComboDamage(eTarget);

            if (eTarget == null)
            {
                return;
            }

            if (source == "Combo")
            {
                //items-------
                ItemManager.Target = eTarget;

                //see if killable
                if (dmg > eTarget.Health - 50)
                {
                    ItemManager.KillableTarget = true;
                }

                //Items
                ItemManager.UseTargetted = true;
            }
            //end items-------

            //E
            if (useE && E.IsReady() && Player.Distance(eTarget.Position) < E.Range)
            {
                SpellCastManager.CastBasicSkillShot(E, E.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetEHitChance(source));
                if (menu.Item("EQ", true).GetValue <bool>() && Q.IsReady() && !E.IsReady())
                {
                    SpellCastManager.CastBasicSkillShot(Q, Q.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetQHitChance(source));
                }
            }

            //W
            if (useW && W.IsReady() && Player.Distance(eTarget.Position) <= W.Range - 100 &&
                ShouldW(eTarget, source))
            {
                W.Cast();
            }

            if (source == "Harass" && menu.Item("longQ", true).GetValue <bool>())
            {
                if (useQ && Q.IsReady() && Player.Distance(eTarget.Position) <= Q.Range &&
                    ShouldQ(eTarget, source) && Player.Distance(eTarget.Position) > 600)
                {
                    SpellCastManager.CastBasicSkillShot(Q, Q.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetQHitChance(source));
                }
            }
            else if (useQ && Q.IsReady() && Player.Distance(eTarget.Position) <= Q.Range &&
                     ShouldQ(eTarget, source))
            {
                SpellCastManager.CastBasicSkillShot(Q, Q.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetQHitChance(source));
            }

            //R
            if (useR && R.IsReady() && Player.Distance(eTarget.Position) < R.Range)
            {
                if (E.IsReady())
                {
                    if (CheckReq(rETarget))
                    {
                        SpellCastManager.CastBasicSkillShot(E, E.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetEHitChance(source));
                    }
                }
                if (ShouldR(eTarget, dmg) && R.IsReady())
                {
                    R.Cast(Game.CursorPos);
                    _rTimer = Utils.TickCount - 250;
                }
                if (_rTimeLeft > 9500 && _rOn && R.IsReady())
                {
                    R.Cast(Game.CursorPos);
                    _rTimer = Utils.TickCount - 250;
                }
            }
        }
Example #7
0
        private void UseSpells(bool useQ, bool useW, bool useE, bool useR, string source)
        {
            if (source == "Harass" && !ManaManager.HasMana("Harass"))
            {
                return;
            }

            var target = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Magical);

            if (target == null)
            {
                return;
            }

            float dmg = GetComboDamage(target);

            if (useW)
            {
                if (useE)
                {
                    var pred = E.GetPrediction(target, true);
                    if (pred.Hitchance >= HitChanceManager.GetEHitChance(source) && E.IsReady())
                    {
                        E.Cast(target);
                        Cast_W(pred.CastPosition);
                    }
                }

                //items
                if (source == "Combo")
                {
                    var itemTarget = TargetSelector.GetTarget(750, TargetSelector.DamageType.Physical);
                    if (itemTarget != null)
                    {
                        ItemManager.Target = itemTarget;

                        //see if killable
                        if (dmg > itemTarget.Health - 50)
                        {
                            ItemManager.KillableTarget = true;
                        }

                        ItemManager.UseTargetted = true;
                    }
                }

                if (useQ)
                {
                    var pred = Q.GetPrediction(target);
                    if (pred.Hitchance >= HitChanceManager.GetQHitChance(source) && pred.CastPosition.Distance(Player.ServerPosition) < Q.Range)
                    {
                        Q.Cast(pred.CastPosition);
                        Cast_W(pred.CastPosition);
                        return;
                    }
                }
            }
            else
            {
                if (useQ)
                {
                    SpellCastManager.CastBasicSkillShot(Q, Q.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetQHitChance((source)));
                }

                if (useE)
                {
                    SpellCastManager.CastBasicSkillShot(E, E.Range, TargetSelector.DamageType.Magical, HitChanceManager.GetEHitChance((source)));
                }
            }

            if (useR)
            {
                Cast_R();
            }
        }