Ejemplo n.º 1
0
        private static void Game_OnUpdate(EventArgs args)
        {
            if (!loaded)
            {
                //Orbwalking.Load();
                me = ObjectMgr.LocalHero;
                if (!Game.IsInGame || me == null)
                {
                    return;
                }
                loaded       = true;
                target       = null;
                rangeDisplay = null;
                Game.PrintMessage(
                    "<font face='Tahoma'><font color='#000000'>[--</font> <font color='#33ff66'>Orbwalker</font> by <font color='#999999'>MOON</font><font color='#ff9900'>ES</font> loaded! <font color='#000000'>--]</font></font>",
                    MessageType.LogMessage);
            }

            if (me == null || !me.IsValid)
            {
                //Orbwalking.Load();
                loaded = false;
                me     = ObjectMgr.LocalHero;
                if (rangeDisplay == null)
                {
                    return;
                }
                target       = null;
                rangeDisplay = null;
                return;
            }

            if (Game.IsPaused)
            {
                return;
            }

            if (rangeDisplay == null)
            {
                if (me.IsAlive)
                {
                    rangeDisplay = me.AddParticleEffect(@"particles\ui_mouseactions\drag_selected_ring.vpcf");
                    rangeDisplay.SetControlPoint(1, new Vector3(255, 80, 50));
                    rangeDisplay.SetControlPoint(3, new Vector3(20, 0, 0));
                    lastRange = me.GetAttackRange() + me.HullRadius + 70;
                    rangeDisplay.SetControlPoint(2, new Vector3(lastRange, 255, 0));
                }
            }
            else
            {
                if (!me.IsAlive)
                {
                    rangeDisplay.Dispose();
                    rangeDisplay = null;
                }
                else if (lastRange != (me.GetAttackRange() + me.HullRadius + 70))
                {
                    lastRange = me.GetAttackRange() + me.HullRadius + 70;
                    rangeDisplay.Dispose();
                    rangeDisplay = me.AddParticleEffect(@"particles\ui_mouseactions\drag_selected_ring.vpcf");
                    rangeDisplay.SetControlPoint(1, new Vector3(255, 80, 50));
                    rangeDisplay.SetControlPoint(3, new Vector3(15, 0, 0));
                    rangeDisplay.SetControlPoint(2, new Vector3(lastRange, 255, 0));
                }
            }
            if (target != null && (!target.IsValid || !target.IsVisible || !target.IsAlive || target.Health <= 0))
            {
                target = null;
            }
            var canCancel = Orbwalking.CanCancelAnimation();

            if (canCancel)
            {
                if (target != null && !target.IsVisible && !Orbwalking.AttackOnCooldown(target))
                {
                    target = me.ClosestToMouseTarget(128);
                }
                else if (target == null || !Orbwalking.AttackOnCooldown(target))
                {
                    var bestAa = me.BestAATarget();
                    if (bestAa != null)
                    {
                        target = me.BestAATarget();
                    }
                }
                if (Game.IsKeyDown(Menu.Item("farmKey").GetValue <KeyBind>().Key) &&
                    (creepTarget == null || !creepTarget.IsValid || !creepTarget.IsVisible || !creepTarget.IsAlive ||
                     creepTarget.Health <= 0 || !Orbwalking.AttackOnCooldown(creepTarget)))
                {
                    creepTarget = TargetSelector.GetLowestHPCreep(me);
                }
            }

            if (Game.IsChatOpen)
            {
                return;
            }

            if (Game.IsKeyDown(Menu.Item("farmKey").GetValue <KeyBind>().Key))
            {
                Orbwalking.Orbwalk(creepTarget);
            }
            if (Game.IsKeyDown(Menu.Item("chaseKey").GetValue <KeyBind>().Key))
            {
                Orbwalking.Orbwalk(target, attackmodifiers: true);
            }
            if (Game.IsKeyDown(Menu.Item("kiteKey").GetValue <KeyBind>().Key))
            {
                Orbwalking.Orbwalk(
                    target,
                    attackmodifiers: true,
                    bonusWindupMs: Menu.Item("bonusWindup").GetValue <Slider>().Value);
            }
        }
Ejemplo n.º 2
0
        private static void StarCombo()
        {
            try
            {
                var target = TargetSelector.GetTarget(
                    spells[Spells.W].Range + spells[Spells.R].Range,
                    TargetSelector.DamageType.Physical);

                Orbwalking.Orbwalk(
                    target ?? null,
                    Game.CursorPos,
                    MyMenu.Menu.Item("ExtraWindup").GetValue <Slider>().Value,
                    MyMenu.Menu.Item("HoldPosRadius").GetValue <Slider>().Value);

                if (target == null)
                {
                    return;
                }

                if (ItemManager.IsActive())
                {
                    ItemManager.CastItems(target);
                }

                if (spells[Spells.Q].IsReady())
                {
                    if (Misc.IsQOne)
                    {
                        if (spells[Spells.R].IsReady() && spells[Spells.Q].Cast(target).IsCasted())
                        {
                            return;
                        }
                    }
                    else if (target.HasQBuff() &&
                             (spells[Spells.Q].IsKillable(target, 1) ||
                              (!spells[Spells.R].IsReady() &&
                               (Utils.TickCount - spells[Spells.R].LastCastAttemptT > 300) &&
                               (Utils.TickCount - spells[Spells.R].LastCastAttemptT < 1500) &&
                               spells[Spells.Q].Cast())))
                    {
                        return;
                    }
                }

                if (spells[Spells.E].IsReady())
                {
                    if (Misc.IsEOne)
                    {
                        if (spells[Spells.E].IsInRange(target) && target.HasQBuff() && !spells[Spells.R].IsReady() &&
                            (Utils.TickCount - spells[Spells.R].LastCastAttemptT < 1500) &&
                            (ObjectManager.Player.Mana >= 80) && spells[Spells.E].Cast())
                        {
                            return;
                        }
                    }
                }

                if (!spells[Spells.Q].IsReady() || !spells[Spells.R].IsReady() || Misc.IsQOne || !target.HasQBuff())
                {
                    return;
                }

                if (spells[Spells.R].IsInRange(target))
                {
                    spells[Spells.R].CastOnUnit(target);
                }
                else if (spells[Spells.W].IsReady())
                {
                    if ((target.Distance(ObjectManager.Player) > spells[Spells.R].Range) &&
                        (target.Distance(ObjectManager.Player) < spells[Spells.R].Range + 580) && target.HasQBuff())
                    {
                        Wardmanager.WardJump(target.Position, false);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: '{0}'", e);
            }
        }
Ejemplo n.º 3
0
        private static void Flee()
        {
            if (!_player.IsCougar() && _aspectOfTheCougar.IsReady() && _pounce.IsReady())
            {
                _aspectOfTheCougar.Cast();
            }
            // We need to define a new move position since jumping over walls
            // requires you to be close to the specified wall. Therefore we set the move
            // point to be that specific piont. People will need to get used to it,
            // but this is how it works.
            var wallCheck = VectorHelper.GetFirstWallPoint(_player.Position, Game.CursorPos);

            // Be more precise
            if (wallCheck != null)
            {
                wallCheck = VectorHelper.GetFirstWallPoint((Vector3)wallCheck, Game.CursorPos, 5);
            }
            // Define more position point
            var movePosition = wallCheck != null ? (Vector3)wallCheck : Game.CursorPos;
            // Update fleeTargetPosition
            var tempGrid = NavMesh.WorldToGrid(movePosition.X, movePosition.Y);

            _fleeTargetPosition = NavMesh.GridToWorld((short)tempGrid.X, (short)tempGrid.Y);
            // Also check if we want to AA aswell
            Obj_AI_Base target = null;
            // Reset walljump indicators
            var wallJumpPossible = false;

            // Only calculate stuff when our Q is up and there is a wall inbetween
            if (_player.IsCougar() && _pounce.IsReady() && wallCheck != null)
            {
                // Get our wall position to calculate from
                var wallPosition = movePosition;
                // Check 300 units to the cursor position in a 160 degree cone for a valid non-wall spot
                Vector2     direction     = (Game.CursorPos.To2D() - wallPosition.To2D()).Normalized();
                const float maxAngle      = 80;
                const float step          = maxAngle / 20;
                float       currentAngle  = 0;
                float       currentStep   = 0;
                bool        jumpTriggered = false;
                while (true)
                {
                    // Validate the counter, break if no valid spot was found in previous loops
                    if (currentStep > maxAngle && currentAngle < 0)
                    {
                        break;
                    }
                    // Check next angle
                    if ((Math.Abs(currentAngle) < 0.001 || currentAngle < 0) && Math.Abs(currentStep) > 0.000)
                    {
                        currentAngle = (currentStep) * (float)Math.PI / 180;
                        currentStep += step;
                    }
                    else if (currentAngle > 0)
                    {
                        currentAngle = -currentAngle;
                    }
                    Vector3 checkPoint;
                    // One time only check for direct line of sight without rotating
                    if (Math.Abs(currentStep) < 0.001)
                    {
                        currentStep = step;
                        checkPoint  = wallPosition + _pounce.Range * direction.To3D();
                    }
                    // Rotated check
                    else
                    {
                        checkPoint = wallPosition + _pounce.Range * direction.Rotated(currentAngle).To3D();
                    }
                    // Check if the point is not a wall
                    if (!checkPoint.IsWall())
                    {
                        // Check if there is a wall between the checkPoint and wallPosition
                        wallCheck = VectorHelper.GetFirstWallPoint(checkPoint, wallPosition);
                        if (wallCheck != null)
                        {
                            // There is a wall inbetween, get the closes point to the wall, as precise as possible
                            Vector2?firstWallPoint = VectorHelper.GetFirstWallPoint(
                                (Vector3)wallCheck, wallPosition, 5);
                            if (firstWallPoint != null)
                            {
                                Vector3 wallPositionOpposite = (Vector3)firstWallPoint;
                                // Check if it's worth to jump considering the path length
                                if (_player.GetPath(wallPositionOpposite).ToList().To2D().PathLength() -
                                    _player.Distance(wallPositionOpposite) > 200)
                                {
                                    // Check the distance to the opposite side of the wall
                                    if (_player.Distance(wallPositionOpposite, true) <
                                        Math.Pow(375 - _player.BoundingRadius / 2, 2))
                                    {
                                        _pounce.Cast(wallPositionOpposite);
                                        jumpTriggered = true;
                                    }
                                    else
                                    {
                                        wallJumpPossible = true;
                                    }
                                }
                                else
                                {
                                    Render.Circle.DrawCircle(Game.CursorPos, 35, Color.Red, 2);
                                }
                            }
                        }
                    }
                }
                // Check if the loop triggered the jump, if not just orbwalk
                if (!jumpTriggered)
                {
                    Orbwalking.Orbwalk(null, Game.CursorPos, 90f, 0f, false, false);
                }
            }
            // Either no wall or W on cooldown, just move towards to wall then
            else
            {
                Orbwalking.Orbwalk(null, Game.CursorPos, 90f, 0f, false, false);
                if (_player.IsCougar() && _pounce.IsReady())
                {
                    _pounce.Cast(Game.CursorPos);
                }
            }
        }
Ejemplo n.º 4
0
        private static void DoCombo()
        {
            if (!IsComboHero)
            {
                _globalTarget = null;
                return;
            }
            if (_globalTarget == null || !_globalTarget.IsValid || !_globalTarget.IsAlive)
            {
                _globalTarget = Helper.ClosestToMouse(Members.MyHero);
                return;
            }
            if (UseOrbWalkker)
            {
                Orbwalking.Orbwalk(_globalTarget, followTarget: true);
            }
            else if (!Members.MyHero.IsAttacking() && !_attacker.Sleeping)
            {
                Members.MyHero.Attack(_globalTarget);
                _attacker.Sleep(250);
            }

            var inventory =
                Members.MyHero.Inventory.Items.Where(
                    x =>
                    Helper.IsItemEnable(x.StoredName()) && x.CanBeCasted() &&
                    (x.GetCastRange() > 0 && x.CanHit(_globalTarget) ||
                     (x.GetCastRange() <= 0)) && Utils.SleepCheck($"{x.Handle}+item_usages"))
                .ToList();

            foreach (var item in inventory)
            {
                if (item.IsAbilityBehavior(AbilityBehavior.NoTarget))
                {
                    item.UseAbility();
                }
                else if (item.IsAbilityBehavior(AbilityBehavior.UnitTarget))
                {
                    if (item.TargetTeamType == TargetTeamType.Enemy || item.TargetTeamType == TargetTeamType.All ||
                        item.TargetTeamType == TargetTeamType.Custom)
                    {
                        item.UseAbility(_globalTarget);
                    }
                    else
                    {
                        item.UseAbility(Members.MyHero);
                    }
                }
                else
                {
                    item.UseAbility(_globalTarget.NetworkPosition);
                }
                Utils.Sleep(250, $"{item.Handle}+item_usages");
            }

            if (TetherInCombo)
            {
                var tether = Abilities.FindAbility("wisp_tether");
                if (tether == null || tether.Level == 0 || !tether.CanBeCasted() || tether.IsHidden)
                {
                    return;
                }
                var anyAllyHero =
                    Heroes.GetByTeam(Members.MyTeam)
                    .Where(x => !x.Equals(Members.MyHero) && x.IsAlive && tether.CanHit(x))
                    .OrderBy(y => y.Distance2D(_globalTarget));
                var anyAllyCreep =
                    ObjectManager.GetEntities <Unit>()
                    .Where(x => x != null && x.Team == Members.MyTeam && x.IsAlive && tether.CanHit(x))
                    .OrderBy(y => y.Distance2D(_globalTarget));

                var hero = anyAllyHero.FirstOrDefault();

                var creep = anyAllyCreep.FirstOrDefault();

                float dist1 = 0, dist2 = 0;
                if (hero != null)
                {
                    dist1 = hero.Distance2D(_globalTarget);
                }
                if (creep != null)
                {
                    dist2 = creep.Distance2D(_globalTarget);
                }
                var targetForTether = (dist1 > dist2) ? creep : hero;
                var mydist          = Members.MyHero.Distance2D(_globalTarget);
                if (targetForTether != null && !targetForTether.Equals(Members.MyHero) && dist1 <= mydist &&
                    dist2 <= mydist && !_multiSleeper.Sleeping(tether + "in combo"))
                {
                    tether.UseAbility(targetForTether);
                    _multiSleeper.Sleep(250, tether + "in combo");
                }
            }
        }
Ejemplo n.º 5
0
 public static void OnFlee()
 {
     // TODO: E over huge walls so attackers can't follow up :^)
     Orbwalking.Orbwalk(null, Game.CursorPos);
 }
Ejemplo n.º 6
0
        private static void castQ()
        {
            var target = TargetSelector.GetTarget(650, TargetSelector.DamageType.Magical);
            int ff     = 15;

            if (Player.Position.Distance(target.Position) > 200 && Player.CountEnemiesInRange(1000) < 3 && Orbwalking.CanMove(80))
            {
                if (target.GetBuffCount("judicatorholyfervordebuff") == 5)
                {
                    Q.CastOnUnit(target);
                    if (W.IsReady())
                    {
                        W.CastOnUnit(Player);
                    }
                    LeagueSharp.Common.Utility.DelayAction.Add(ff, () => Orbwalking.Orbwalk(target, target.Position));
                    return;
                }
                if (target.GetBuffCount("judicatorholyfervordebuff") == 4 && Player.Position.Distance(target.Position) > 350)
                {
                    Q.CastOnUnit(target);
                    if (W.IsReady())
                    {
                        W.CastOnUnit(Player);
                    }
                    LeagueSharp.Common.Utility.DelayAction.Add(ff, () => Orbwalking.Orbwalk(target, target.Position));
                    return;
                }
                if (target.GetBuffCount("judicatorholyfervordebuff") == 3 && Player.Position.Distance(target.Position) > 450)
                {
                    Q.CastOnUnit(target);
                    if (W.IsReady())
                    {
                        W.CastOnUnit(Player);
                    }
                    LeagueSharp.Common.Utility.DelayAction.Add(ff, () => Orbwalking.Orbwalk(target, target.Position));
                    return;
                }
                if (target.GetBuffCount("judicatorholyfervordebuff") == 2 && Player.Position.Distance(target.Position) > 550)
                {
                    Q.CastOnUnit(target);
                    if (W.IsReady())
                    {
                        W.CastOnUnit(Player);
                    }
                    LeagueSharp.Common.Utility.DelayAction.Add(ff, () => Orbwalking.Orbwalk(target, target.Position));
                    return;
                }
                if (target.GetBuffCount("judicatorholyfervordebuff") == 1 && Player.Position.Distance(target.Position) > 600)
                {
                    Q.CastOnUnit(target);
                    if (W.IsReady())
                    {
                        W.CastOnUnit(Player);
                    }
                    LeagueSharp.Common.Utility.DelayAction.Add(ff, () => Orbwalking.Orbwalk(target, target.Position));
                    return;
                }
                if (!target.HasBuff("judicatorholyfervordebuff") && Player.Position.Distance(target.Position) < 650 && Config.Item("catchup").GetValue <bool>())
                {
                    Q.CastOnUnit(target);
                    if (W.IsReady())
                    {
                        W.CastOnUnit(Player);
                    }
                    LeagueSharp.Common.Utility.DelayAction.Add(ff, () => Orbwalking.Orbwalk(target, target.Position));
                    return;
                }
            }
            else
            {
                Q.CastOnUnit(target);
            }
            LeagueSharp.Common.Utility.DelayAction.Add(ff, () => Orbwalking.Orbwalk(target, target.Position));
        }
Ejemplo n.º 7
0
 public static void OnFlee()
 {
     // Nothing yet Kappa
     Orbwalking.Orbwalk(null, Game.CursorPos);
 }
Ejemplo n.º 8
0
        private static async Task Action(CancellationToken cancellationToken)
        {
            if (_globalTarget == null || !_globalTarget.IsValid || !_globalTarget.IsAlive)
            {
                _globalTarget = TargetSelector.ClosestToMouse(Members.MyHero);
                return;
            }
            if (_targetEffect == null || !_targetEffect.IsValid)
            {
                _targetEffect = new ParticleEffect("materials/ensage_ui/particles/target.vpcf", Members.MyHero);
                _targetEffect.SetControlPoint(2, Members.MyHero.Position);
                _targetEffect.SetControlPoint(5, new Vector3(0, 155, 255));
                _targetEffect.SetControlPoint(6, new Vector3(255));
                _targetEffect.SetControlPoint(7, _globalTarget.Position);
            }
            var     target = _globalTarget;
            Ability ult;

            if (!Members.MyHero.IsInvisible() &&
                !Members.MyHero.HasModifiers(new[]
                                             { "modifier_item_invisibility_edge_windwalk", "modifier_item_silver_edge_windwalk" }) &&
                !ComboSleeper.Sleeping("invisAction"))
            {
                if (Members.MyHero.FindItem("item_blink", true) != null)
                {
                    await UseBlink(target, cancellationToken);
                }
                else if (Members.MyHero.FindItem("item_invis_sword", true) != null ||
                         Members.MyHero.FindItem("item_silver_edge", true) != null)
                {
                    await UseInvis(target, cancellationToken);
                }
                //await UseAbility(new Ability(), Target, cancellationToken);

                var inventory =
                    Members.MyHero.Inventory.Items.Where(
                        x =>
                        /*x.CanBeCasted() &&*/
                        !(x.TargetTeamType == TargetTeamType.Enemy || x.TargetTeamType == TargetTeamType.All ||
                          x.TargetTeamType == TargetTeamType.Custom) ||
                        x.CanHit(target)).Where(x => x.CanBeCasted());
                var enumerable = inventory as Item[] ?? inventory.ToArray();

                var linkerBreakers =
                    enumerable.Where(
                        x =>
                        Helper.IsItemEnable(x, false) && target.IsLinkensProtected() && !ComboSleeper.Sleeping(x));

                foreach (var item in linkerBreakers)
                {
                    await UseItem(item, target, cancellationToken);
                }
                var itemInCombo =
                    enumerable.Where(
                        x => Helper.IsItemEnable(x) && !target.IsLinkensProtected() && !ComboSleeper.Sleeping(x));
                foreach (var item in itemInCombo)
                {
                    await UseItem(item, target, cancellationToken);
                }

                ult = Members.MyHero.FindSpell(Members.AbilityList[2]);
                if (ult.CanBeCasted() && !target.IsLinkensProtected())
                {
                    if (true)//(ult.CanHit(target))
                    {
                        ult.UseAbility(target);
                        await Task.Delay(350, cancellationToken);
                    }
                }
            }
            ult = Members.MyHero.FindSpell(Members.AbilityList[2]);
            if (!ult.CanBeCasted())
            {
                if (OrbEnable && (!target.IsStunned() || !OrbInStun))
                {
                    try
                    {
                        Orbwalking.Orbwalk(target, followTarget: OrbFollow);
                    }
                    catch
                    {
                    }
                }
                else if (Utils.SleepCheck("attack_rate"))
                {
                    if (!Members.MyHero.IsAttacking())
                    {
                        Members.MyHero.Attack(target);
                        Utils.Sleep(125, "attack_rate");
                    }
                }
            }
        }
Ejemplo n.º 9
0
        public static void Game_OnUpdate(EventArgs args)
        {
            me = ObjectManager.LocalHero;
            if (!Game.IsInGame || Game.IsWatchingGame || me == null || me.ClassID != ClassID.CDOTA_Unit_Hero_Nyx_Assassin)
            {
                return;
            }

            Active = Game.IsKeyDown(Menu.Item("Combo Key").GetValue <KeyBind>().Key) && !Game.IsChatOpen;
            if (Active && me.IsAlive)
            {
                e = me.ClosestToMouseTarget(2000);
                if (e == null)
                {
                    return;
                }
                Q = me.Spellbook.SpellQ;

                W = me.Spellbook.SpellW;

                R = me.Spellbook.SpellR;

                // item
                sheep = e.ClassID == ClassID.CDOTA_Unit_Hero_Tidehunter ? null : me.FindItem("item_sheepstick");

                satanic = me.FindItem("item_satanic");

                shiva = me.FindItem("item_shivas_guard");

                dagon = me.Inventory.Items.FirstOrDefault(item => item.Name.Contains("item_dagon"));

                arcane = me.FindItem("item_arcane_boots");

                mom = me.FindItem("item_mask_of_madness");

                vail = me.FindItem("item_veil_of_discord");

                medall = me.FindItem("item_medallion_of_courage") ?? me.FindItem("item_solar_crest");

                orchid = me.FindItem("item_orchid") ?? me.FindItem("item_bloodthorn");

                ethereal = me.FindItem("item_ethereal_blade");

                blink = me.FindItem("item_blink");

                soul = me.FindItem("item_soul_ring");

                cheese = me.FindItem("item_cheese");

                halberd = me.FindItem("item_heavens_halberd");

                abyssal = me.FindItem("item_abyssal_blade");

                mjollnir = me.FindItem("item_mjollnir");
                var stoneModif = e.HasModifier("modifier_medusa_stone_gaze_stone");
                var linkens    = e.IsLinkensProtected();
                var noBlade    = e.HasModifier("modifier_item_blade_mail_reflect");
                if (e.IsVisible && me.Distance2D(e) <= 2300 && !noBlade)
                {
                    if (Menu.Item("orbwalk").GetValue <bool>() && me.Distance2D(e) <= 1900)
                    {
                        Orbwalking.Orbwalk(e, 0, 1600, true, true);
                    }
                    if (
                        R != null &&
                        R.CanBeCasted() &&
                        !me.HasModifier("modifier_nyx_assassin_vendetta") &&
                        me.Distance2D(e) <= 1400 &&
                        Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(R.Name) &&
                        Utils.SleepCheck("R")
                        )
                    {
                        R.UseAbility();
                        Utils.Sleep(200, "R");
                    }
                    if (R != null && (R.IsInAbilityPhase || me.HasModifier("modifier_nyx_assassin_vendetta") || R.IsChanneling))
                    {
                        return;
                    }
                    if (R == null || !R.CanBeCasted() && !me.HasModifier("modifier_nyx_assassin_vendetta") ||
                        !Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(R.Name))
                    {
                        if (stoneModif)
                        {
                            return;
                        }
                        float   angle = me.FindAngleBetween(e.Position, true);
                        Vector3 pos   = new Vector3((float)(e.Position.X - 100 * Math.Cos(angle)), (float)(e.Position.Y - 100 * Math.Sin(angle)), 0);
                        if (
                            blink != null &&
                            Q.CanBeCasted() &&
                            me.CanCast() &&
                            blink.CanBeCasted() &&
                            me.Distance2D(e) >= 300 &&
                            me.Distance2D(pos) <= 1180 &&
                            Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(blink.Name) &&
                            Utils.SleepCheck("blink")
                            )
                        {
                            blink.UseAbility(pos);
                            Utils.Sleep(250, "blink");
                        }
                        if ( // orchid
                            orchid != null &&
                            orchid.CanBeCasted() &&
                            me.CanCast() &&
                            !e.IsLinkensProtected() &&
                            !e.IsMagicImmune() &&
                            me.Distance2D(e) <= me.AttackRange + me.HullRadius + 50 &&
                            Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(orchid.Name) &&
                            Utils.SleepCheck("orchid")
                            )
                        {
                            orchid.UseAbility(e);
                            Utils.Sleep(250, "orchid");
                        } // orchid Item end
                        if ( // vail
                            vail != null &&
                            vail.CanBeCasted() &&
                            me.CanCast() &&
                            Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(vail.Name) &&
                            !e.IsMagicImmune() &&
                            Utils.SleepCheck("vail") &&
                            me.Distance2D(e) <= 1500
                            )
                        {
                            vail.UseAbility(e.Position);
                            Utils.Sleep(250, "vail");
                        }

                        if (                         // ethereal
                            ethereal != null &&
                            ethereal.CanBeCasted() &&
                            (!vail.CanBeCasted() ||
                             vail == null) &&
                            me.CanCast() &&
                            !linkens &&
                            !e.IsMagicImmune() &&
                            Utils.SleepCheck("ethereal")
                            )
                        {
                            ethereal.UseAbility(e);
                            Utils.Sleep(150, "ethereal");
                        }

                        if ((vail == null || !vail.CanBeCasted() || !Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(vail.Name)) && (ethereal == null || !ethereal.CanBeCasted() || !Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(ethereal.Name)))
                        {
                            if ( // sheep
                                sheep != null &&
                                sheep.CanBeCasted() &&
                                me.CanCast() &&
                                !e.IsLinkensProtected() &&
                                !e.IsMagicImmune() &&
                                !e.IsStunned() &&
                                !e.IsHexed() &&
                                me.Distance2D(e) <= 1400 &&
                                !stoneModif &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(sheep.Name) &&
                                Utils.SleepCheck("sheep")
                                )
                            {
                                sheep.UseAbility(e);
                                Utils.Sleep(250, "sheep");
                            } // sheep Item end
                            if (
                                Q != null &&
                                Q.CanBeCasted() &&
                                Q.Cooldown <= 0 &&
                                me.Mana >= Q.ManaCost &&
                                !e.IsStunned() &&
                                !e.IsHexed() &&
                                me.Distance2D(e) <= Q.GetCastRange() + me.HullRadius &&
                                !e.IsMagicImmune() &&
                                Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(Q.Name) &&
                                Utils.SleepCheck("Q"))
                            {
                                Q.CastSkillShot(e);
                                Utils.Sleep(100, "Q");
                            }
                            if (
                                W != null &&
                                W.CanBeCasted() &&
                                Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(W.Name) &&
                                e.Mana >= (e.MaximumMana * 0.2) &&
                                me.Position.Distance2D(e.Position) < 800 &&
                                Utils.SleepCheck("W"))
                            {
                                W.UseAbility(e);
                                Utils.Sleep(100, "W");
                            }

                            if ( // SoulRing Item
                                soul != null &&
                                me.Health >= (me.MaximumHealth * 0.5) &&
                                me.Mana <= R.ManaCost &&
                                soul.CanBeCasted() &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(soul.Name) &&
                                Utils.SleepCheck("soul"))
                            {
                                soul.UseAbility();
                                Utils.Sleep(100, "soul");
                            } // SoulRing Item end

                            if ( // Arcane Boots Item
                                arcane != null &&
                                me.Mana <= Q.ManaCost &&
                                arcane.CanBeCasted() &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(arcane.Name) &&
                                Utils.SleepCheck("arcane"))
                            {
                                arcane.UseAbility();
                                Utils.Sleep(100, "arcane");
                            } // Arcane Boots Item end

                            if ( // Shiva Item
                                shiva != null &&
                                shiva.CanBeCasted() &&
                                me.CanCast() &&
                                !e.IsMagicImmune() &&
                                Utils.SleepCheck("shiva") &&
                                me.Distance2D(e) <= 600 &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(shiva.Name)
                                )
                            {
                                shiva.UseAbility();
                                Utils.Sleep(250, "shiva");
                            }                             // Shiva Item end

                            if (                          // Medall
                                medall != null &&
                                medall.CanBeCasted() &&
                                me.CanCast() &&
                                !e.IsMagicImmune() &&
                                Utils.SleepCheck("Medall") &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(medall.Name) &&
                                me.Distance2D(e) <= 500
                                )
                            {
                                medall.UseAbility(e);
                                Utils.Sleep(250, "Medall");
                            }                             // Medall Item end

                            if (                          // MOM
                                mom != null &&
                                mom.CanBeCasted() &&
                                me.CanCast() &&
                                Utils.SleepCheck("mom") &&
                                me.Distance2D(e) <= 700 &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(mom.Name)
                                )
                            {
                                mom.UseAbility();
                                Utils.Sleep(250, "mom");
                            }                             // MOM Item end

                            if (
                                // cheese
                                cheese != null &&
                                cheese.CanBeCasted() &&
                                me.Health <= (me.MaximumHealth * 0.3) &&
                                me.Distance2D(e) <= 700 &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(cheese.Name) &&
                                Utils.SleepCheck("cheese")
                                )
                            {
                                cheese.UseAbility();
                                Utils.Sleep(200, "cheese");
                            }                             // cheese Item end
                            if (                          // Abyssal Blade
                                abyssal != null &&
                                abyssal.CanBeCasted() &&
                                me.CanCast() &&
                                !e.IsMagicImmune() &&
                                Utils.SleepCheck("abyssal") &&
                                me.Distance2D(e) <= 400 &&
                                !e.IsStunned() &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(abyssal.Name)
                                )
                            {
                                abyssal.UseAbility(e);
                                Utils.Sleep(250, "abyssal");
                            }                             // Abyssal Item end

                            if (                          // Hellbard
                                halberd != null &&
                                halberd.CanBeCasted() &&
                                me.CanCast() &&
                                !e.IsMagicImmune() &&
                                Utils.SleepCheck("halberd") &&
                                me.Distance2D(e) <= 700 &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(halberd.Name)
                                )
                            {
                                halberd.UseAbility(e);
                                Utils.Sleep(250, "halberd");
                            }                             // Hellbard Item end

                            if (                          // Dagon
                                me.CanCast() &&
                                dagon != null &&
                                (ethereal == null ||
                                 (e.HasModifier("modifier_item_ethereal_blade_slow") ||
                                  ethereal.Cooldown < 18)) &&
                                !e.IsLinkensProtected() &&
                                dagon.CanBeCasted() &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled("item_dagon") &&
                                !e.IsMagicImmune() &&
                                !stoneModif &&
                                Utils.SleepCheck("dagon")
                                )
                            {
                                dagon.UseAbility(e);
                                Utils.Sleep(200, "dagon");
                            }                             // Dagon Item end

                            if (                          // Mjollnir
                                mjollnir != null &&
                                mjollnir.CanBeCasted() &&
                                me.CanCast() &&
                                !e.IsMagicImmune() &&
                                Utils.SleepCheck("mjollnir") &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(mjollnir.Name) &&
                                me.Distance2D(e) <= 900
                                )
                            {
                                mjollnir.UseAbility(me);
                                Utils.Sleep(250, "mjollnir");
                            }                             // Mjollnir Item end

                            if (                          // Satanic
                                satanic != null &&
                                me.Health <= (me.MaximumHealth * 0.3) &&
                                satanic.CanBeCasted() &&
                                me.Distance2D(e) <= 700 &&
                                Utils.SleepCheck("Satanic") &&
                                Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(satanic.Name)
                                )
                            {
                                satanic.UseAbility();
                                Utils.Sleep(350, "Satanic");
                            }                             // Satanic Item end
                        }
                    }
                }
            }
            if (Menu.Item("Kill").GetValue <bool>() && me.IsAlive && (me.IsVisibleToEnemies || !me.IsInvisible()))
            {
                var enemies =
                    ObjectManager.GetEntities <Hero>()
                    .Where(x => x.IsVisible && x.IsAlive && x.Team != me.Team && !x.IsIllusion).ToList();
                if (enemies.Count <= 0)
                {
                    return;
                }
                foreach (var v in enemies)
                {
                    var wM   = new[] { 3.5, 4, 4.5, 5 };
                    var wDmg = me.TotalIntelligence * wM[W.Level - 1];

                    var damageW = Math.Floor(wDmg * (1 - v.MagicDamageResist));

                    var lens           = me.HasModifier("modifier_item_aether_lens");
                    var spellamplymult = 1 + (me.TotalIntelligence / 16 / 100);
                    if (v.NetworkName == "CDOTA_Unit_Hero_Spectre" && v.Spellbook.Spell3.Level > 0)
                    {
                        damageW =
                            Math.Floor(wDmg *
                                       (1 - (0.10 + v.Spellbook.Spell3.Level * 0.04)) * (1 - v.MagicDamageResist));
                    }

                    if (lens)
                    {
                        damageW = damageW * 1.08;
                    }
                    if (v.HasModifier("modifier_kunkka_ghost_ship_damage_absorb"))
                    {
                        damageW = damageW * 0.5;
                    }
                    if (v.HasModifier("modifier_item_mask_of_madness_berserk"))
                    {
                        damageW = damageW * 1.3;
                    }
                    damageW = damageW * spellamplymult;
                    if (damageW > v.Mana)
                    {
                        damageW = v.Mana;
                    }


                    if (                     // vail
                        vail != null &&
                        vail.CanBeCasted() &&
                        W.CanBeCasted() &&
                        v.Health <= damageW * 1.25 &&
                        v.Health >= damageW &&
                        me.CanCast() &&
                        !v.HasModifier("modifier_item_veil_of_discord_debuff") &&
                        !v.IsMagicImmune() &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(vail.Name) &&
                        me.Distance2D(v) <= W.GetCastRange() &&
                        Utils.SleepCheck("vail")
                        )
                    {
                        vail.UseAbility(v.Position);
                        Utils.Sleep(250, "vail");
                    }
                    int etherealdamage = (int)(((me.TotalIntelligence * 2) + 75));
                    if (                     // vail
                        ethereal != null &&
                        ethereal.CanBeCasted() &&
                        W != null &&
                        W.CanBeCasted() &&
                        v.Health <= etherealdamage + damageW * 1.4 &&
                        v.Health >= damageW &&
                        me.CanCast() &&
                        !v.HasModifier("modifier_item_ethereal_blade_slow") &&
                        !v.IsMagicImmune() &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(ethereal.Name) &&
                        me.Distance2D(v) <= ethereal.GetCastRange() + 50 &&
                        Utils.SleepCheck("ethereal")
                        )
                    {
                        ethereal.UseAbility(v);
                        Utils.Sleep(250, "ethereal");
                    }

                    if (W != null && v != null && W.CanBeCasted() &&
                        me.AghanimState() ? me.Distance2D(v) <= 1050 : me.Distance2D(v) <= W.GetCastRange() + 50 &&
                        !v.HasModifier("modifier_tusk_snowball_movement") &&
                        !v.HasModifier("modifier_snowball_movement_friendly") &&
                        !v.HasModifier("modifier_templar_assassin_refraction_absorb") &&
                        !v.HasModifier("modifier_ember_spirit_flame_guard") &&
                        !v.HasModifier("modifier_ember_spirit_sleight_of_fist_caster_invulnerability") &&
                        !v.HasModifier("modifier_obsidian_destroyer_astral_imprisonment_prison") &&
                        !v.HasModifier("modifier_puck_phase_shift") &&
                        !v.HasModifier("modifier_eul_cyclone") &&
                        !v.HasModifier("modifier_dazzle_shallow_grave") &&
                        !v.HasModifier("modifier_shadow_demon_disruption") &&
                        !v.HasModifier("modifier_necrolyte_reapers_scythe") &&
                        !v.HasModifier("modifier_necrolyte_reapers_scythe") &&
                        !v.HasModifier("modifier_storm_spirit_ball_lightning") &&
                        !v.HasModifier("modifier_ember_spirit_fire_remnant") &&
                        !v.HasModifier("modifier_nyx_assassin_spiked_carapace") &&
                        !v.HasModifier("modifier_phantom_lancer_doppelwalk_phase") &&
                        !v.FindSpell("abaddon_borrowed_time").CanBeCasted() &&
                        !v.HasModifier("modifier_abaddon_borrowed_time_damage_redirect") &&
                        !v.IsMagicImmune() &&
                        v.Health < damageW &&
                        Utils.SleepCheck(v.Handle.ToString()))
                    {
                        W.UseAbility(v);
                        Utils.Sleep(150, v.Handle.ToString());
                        return;
                    }
                }
            }
        }
Ejemplo n.º 10
0
        public void Combo()
        {
            if (!Menu.Item("enabled").IsActive())
            {
                return;
            }
            Active = Game.IsKeyDown(Menu.Item("keyBind").GetValue <KeyBind>().Key) && !Game.IsChatOpen;

            _q        = Me.Spellbook.SpellQ;
            _r        = Me.Spellbook.SpellR;
            _shiva    = Me.FindItem("item_shivas_guard");
            _mom      = Me.FindItem("item_mask_of_madness");
            _urn      = Me.FindItem("item_urn_of_shadows");
            _dagon    = Me.Inventory.Items.FirstOrDefault(item => item.Name.Contains("item_dagon"));
            _mjollnir = Me.FindItem("item_mjollnir");
            _orchid   = Me.FindItem("item_orchid") ?? Me.FindItem("item_bloodthorn");
            _abyssal  = Me.FindItem("item_abyssal_blade");
            _mail     = Me.FindItem("item_blade_mail");
            _bkb      = Me.FindItem("item_black_king_bar");
            _ethereal = Me.FindItem("item_ethereal_blade");
            _glimmer  = Me.FindItem("item_glimmer_cape");
            _vail     = Me.FindItem("item_veil_of_discord");
            _satanic  = Me.FindItem("item_satanic");
            _blink    = Me.FindItem("item_blink");
            _medall   = Me.FindItem("item_medallion_of_courage") ?? Me.FindItem("item_solar_crest");
            E         = Toolset.ClosestToMouse(Me);
            if (E == null)
            {
                return;
            }

            var stoneModif = E.HasModifier("modifier_medusa_stone_gaze_stone");


            if (Me.IsChanneling() || _r.IsInAbilityPhase || _r.IsChanneling)
            {
                return;
            }
            var v =
                ObjectManager.GetEntities <Hero>()
                .Where(x => x.Team != Me.Team && x.IsAlive && x.IsVisible && !x.IsIllusion && !x.IsMagicImmune())
                .ToList();
            var modifInv = Me.IsInvisible();

            if (Active && Utils.SleepCheck("Combo"))
            {
                if (Me.HasModifier("modifier_sandking_sand_storm"))
                {
                    return;
                }
                float angle = Me.FindAngleBetween(E.Position, true);

                Vector3 pos = new Vector3((float)(E.Position.X - (_q.GetCastRange() - 100) * Math.Cos(angle)),
                                          (float)(E.Position.Y - (_q.GetCastRange() - 100) * Math.Sin(angle)), 0);
                uint elsecount = 1;
                if (elsecount == 1 && (_blink != null && _blink.CanBeCasted() && Me.Distance2D(pos) <= 1100 || _blink == null && Me.Distance2D(E) <= _q.GetCastRange() - 50))
                {
                    if (
                        _r != null && _r.CanBeCasted() &&
                        Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_r.Name) &&
                        Utils.SleepCheck("R")
                        )
                    {
                        _r.UseAbility();
                        Utils.Sleep(200, "R");
                        Utils.Sleep(300, "Combo");
                    }
                }

                if (!Utils.SleepCheck("Combo") || Me.IsChanneling() || _r.IsChanneling || _r.IsInAbilityPhase)
                {
                    return;
                }

                if (!Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_r.Name) || !_r.CanBeCasted())
                {
                    if (
                        _blink != null &&
                        _blink.CanBeCasted() &&
                        Me.Distance2D(E) >= (_q.CanBeCasted() ? _q.GetCastRange() : 450) &&
                        Me.Distance2D(pos) <= 1190 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_blink.Name) &&
                        Utils.SleepCheck("blink")
                        )
                    {
                        _blink.UseAbility(pos);
                        Utils.Sleep(250, "blink");
                    }
                    if (
                        _blink != null &&
                        _blink.CanBeCasted() &&
                        Me.Distance2D(E) < 1180 &&
                        Me.Distance2D(E) > (_q.CanBeCasted() ? _q.GetCastRange() : 450) &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_blink.Name) &&
                        Utils.SleepCheck("blink")
                        )
                    {
                        _blink.UseAbility(E.Position);
                        Utils.Sleep(250, "blink");
                    }

                    if (
                        _q != null && _q.CanBeCasted() && Me.Distance2D(E) <= _q.GetCastRange() + 300 &&
                        Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_q.Name) &&
                        Utils.SleepCheck("Q")
                        )
                    {
                        _q.UseAbility(E);
                        Utils.Sleep(200, "Q");
                    }
                }
                if (Me.Distance2D(E) <= 2000 && E != null && E.IsAlive && !modifInv && !Me.IsChanneling() && (!_r.CanBeCasted() || !Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_r.Name)))
                {
                    if (_ethereal != null && _ethereal.CanBeCasted() && Me.Distance2D(E) <= 700 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_ethereal.Name) &&
                        Utils.SleepCheck("ethereal"))
                    {
                        _ethereal.UseAbility(E);
                        Utils.Sleep(100, "ethereal");
                    }

                    if (_vail != null && _vail.CanBeCasted() && Me.Distance2D(E) <= 1100 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_vail.Name) && Utils.SleepCheck("vail"))
                    {
                        _vail.UseAbility(E.Position);
                        Utils.Sleep(130, "vail");
                    }


                    if (                     // Abyssal Blade
                        _abyssal != null &&
                        _abyssal.CanBeCasted() &&
                        Me.CanCast() &&
                        !E.IsStunned() &&
                        !E.IsHexed() &&
                        Utils.SleepCheck("abyssal") &&
                        Me.Distance2D(E) <= 400
                        )
                    {
                        _abyssal.UseAbility(E);
                        Utils.Sleep(250, "abyssal");
                    }                     // Abyssal Item end
                    if (_glimmer != null &&
                        _glimmer.CanBeCasted() &&
                        Me.Distance2D(E) <= 300 &&
                        Utils.SleepCheck("glimmer"))
                    {
                        _glimmer.UseAbility(Me);
                        Utils.Sleep(200, "glimmer");
                    }
                    if (                     // Mjollnir
                        _mjollnir != null &&
                        _mjollnir.CanBeCasted() &&
                        Me.CanCast() &&
                        !E.IsMagicImmune() &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_mjollnir.Name) &&
                        Utils.SleepCheck("mjollnir") &&
                        Me.Distance2D(E) <= 900
                        )
                    {
                        _mjollnir.UseAbility(Me);
                        Utils.Sleep(250, "mjollnir");
                    }                     // Mjollnir Item end
                    if (                  // Medall
                        _medall != null &&
                        _medall.CanBeCasted() &&
                        Utils.SleepCheck("Medall") &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_medall.Name) &&
                        Me.Distance2D(E) <= 700
                        )
                    {
                        _medall.UseAbility(E);
                        Utils.Sleep(250, "Medall");
                    }                     // Medall Item end

                    if (                  // MOM
                        _mom != null &&
                        _mom.CanBeCasted() &&
                        Me.CanCast() &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_mom.Name) &&
                        Utils.SleepCheck("mom") &&
                        Me.Distance2D(E) <= 700
                        )
                    {
                        _mom.UseAbility();
                        Utils.Sleep(250, "mom");
                    }
                    if (_orchid != null && _orchid.CanBeCasted() && Me.Distance2D(E) <= 900 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_orchid.Name) && Utils.SleepCheck("orchid"))
                    {
                        _orchid.UseAbility(E);
                        Utils.Sleep(100, "orchid");
                    }

                    if (_shiva != null && _shiva.CanBeCasted() && Me.Distance2D(E) <= 600 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_shiva.Name) &&
                        !E.IsMagicImmune() && Utils.SleepCheck("Shiva"))
                    {
                        _shiva.UseAbility();
                        Utils.Sleep(100, "Shiva");
                    }

                    if (                     // Dagon
                        Me.CanCast() &&
                        _dagon != null &&
                        !E.IsLinkensProtected() &&
                        _dagon.CanBeCasted() &&
                        !E.IsMagicImmune() &&
                        !stoneModif &&
                        Utils.SleepCheck("dagon")
                        )
                    {
                        _dagon.UseAbility(E);
                        Utils.Sleep(200, "dagon");
                    }                     // Dagon Item end


                    if (_urn != null && _urn.CanBeCasted() && _urn.CurrentCharges > 0 && Me.Distance2D(E) <= 400 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_urn.Name) && Utils.SleepCheck("urn"))
                    {
                        _urn.UseAbility(E);
                        Utils.Sleep(240, "urn");
                    }
                    if (                     // Satanic
                        _satanic != null &&
                        Me.Health <= (Me.MaximumHealth * 0.3) &&
                        _satanic.CanBeCasted() &&
                        Me.Distance2D(E) <= Me.AttackRange + 50 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_satanic.Name) &&
                        Utils.SleepCheck("satanic")
                        )
                    {
                        _satanic.UseAbility();
                        Utils.Sleep(240, "satanic");
                    }                     // Satanic Item end
                    if (_mail != null && _mail.CanBeCasted() && (v.Count(x => x.Distance2D(Me) <= 650) >=
                                                                 (Menu.Item("Heelm").GetValue <Slider>().Value)) &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_mail.Name) && Utils.SleepCheck("mail"))
                    {
                        _mail.UseAbility();
                        Utils.Sleep(100, "mail");
                    }
                    if (_bkb != null && _bkb.CanBeCasted() && (v.Count(x => x.Distance2D(Me) <= 650) >=
                                                               (Menu.Item("Heel").GetValue <Slider>().Value)) &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_bkb.Name) && Utils.SleepCheck("bkb"))
                    {
                        _bkb.UseAbility();
                        Utils.Sleep(100, "bkb");
                    }
                    if (Menu.Item("logic").IsActive())
                    {
                        if (_mail != null && _mail.CanBeCasted() && Toolset.HasStun(E) && !E.IsStunned() &&
                            Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_mail.Name) && Utils.SleepCheck("mail"))
                        {
                            _mail.UseAbility();
                            Utils.Sleep(100, "mail");
                        }
                        if (_bkb != null && _bkb.CanBeCasted() && Toolset.HasStun(E) && !E.IsStunned() &&
                            Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_bkb.Name) && Utils.SleepCheck("bkb"))
                        {
                            _bkb.UseAbility();
                            Utils.Sleep(100, "bkb");
                        }
                    }
                }
                if (Me.IsChanneling() || _r.IsChanneling || _r.IsInAbilityPhase)
                {
                    return;
                }
                elsecount++;
                if (elsecount == 2 && E != null && E.IsAlive)
                {
                    if (Menu.Item("orbwalk").GetValue <bool>() && Me.Distance2D(E) <= 1900 && !Me.IsChanneling())
                    {
                        Orbwalking.Orbwalk(E, 0, 1600, true, true);
                    }
                }
                Utils.Sleep(200, "Combo");
            }
        }
Ejemplo n.º 11
0
        public static void Game_OnUpdate(EventArgs args)
        {
            if (!IsEnable)
            {
                return;
            }
            if (!Members.MyHero.IsAlive)
            {
                return;
            }
            //CalculateDamage();
            if (_attacker == null)
            {
                _attacker = new Sleeper();
            }
            if (_spellSleeper == null)
            {
                _spellSleeper = new MultiSleeper();
            }
            if (_ethereal == null)
            {
                _ethereal = new Sleeper();
            }
            var laser   = Abilities.FindAbility("tinker_laser");
            var rockets = Abilities.FindAbility("tinker_heat_seeking_missile");

            if (_spellSleeper.Sleeping(Abilities.FindAbility("tinker_rearm")))
            {
                return;
            }
            if (IsEnableKillSteal && !IsComboHero)
            {
                foreach (var x in Heroes.GetByTeam(Members.MyHero.GetEnemyTeam())
                         .Where(x => x.IsAlive && x.IsVisible && !x.IsIllusion() && !x.IsMagicImmune())
                         .Where(x => Helper.CalculateMyCurrentDamage(x, true) < 0))
                {
                    CastCombo(x, laser, rockets, true);
                }
            }

            if (!IsComboHero)
            {
                if (_globalTarget != null)
                {
                    Helper.UnHandleEffect(_globalTarget);
                }
                _globalTarget = null;
                return;
            }
            if (_globalTarget == null || !_globalTarget.IsValid)
            {
                _globalTarget = Helper.ClosestToMouse(Members.MyHero);
                return;
            }
            Helper.HandleEffect(_globalTarget);
            if (Members.MyHero.IsChanneling() || _globalTarget.Distance2D(Members.MyHero) > 2500)
            {
                return;
            }
            if (AutoAttack)
            {
                if (UseOrbWalkker)
                {
                    Orbwalking.Orbwalk(_globalTarget, followTarget: true);
                }
                else if (!Members.MyHero.IsAttacking() && !_attacker.Sleeping && !_globalTarget.IsAttackImmune())
                {
                    Members.MyHero.Attack(_globalTarget);
                    _attacker.Sleep(250);
                }
            }
            CastCombo(_globalTarget, laser, rockets);
        }
        public void Combo()
        {
            if (Menu.Item("enabled").IsActive() && Utils.SleepCheck("combo"))
            {
                E = Toolset.ClosestToMouse(Me);
                if (E == null)
                {
                    return;
                }
                _q     = Me.Spellbook.SpellQ;
                _w     = Me.Spellbook.SpellW;
                _r     = Me.Spellbook.SpellR;
                Active = Game.IsKeyDown(Menu.Item("keyBind").GetValue <KeyBind>().Key);

                _shiva = Me.FindItem("item_shivas_guard");
                _pike  = Me.FindItem("item_hurricane_pike");
                var dragon = Me.FindItem("item_dragon_lance");

                _ethereal = Me.FindItem("item_ethereal_blade");
                _mom      = Me.FindItem("item_mask_of_madness");
                _urn      = Me.FindItem("item_urn_of_shadows");
                _dagon    = Me.Inventory.Items.FirstOrDefault(
                    item => item.Name.Contains("item_dagon"));
                _halberd  = Me.FindItem("item_heavens_halberd");
                _mjollnir = Me.FindItem("item_mjollnir");
                _orchid   = Me.FindItem("item_orchid") ?? Me.FindItem("item_bloodthorn");
                _abyssal  = Me.FindItem("item_abyssal_blade");
                _mail     = Me.FindItem("item_blade_mail");
                _manta    = Me.FindItem("item_manta");
                _bkb      = Me.FindItem("item_black_king_bar");
                _satanic  = Me.FindItem("item_satanic");
                _blink    = Me.FindItem("item_blink");
                _medall   = Me.FindItem("item_medallion_of_courage") ?? Me.FindItem("item_solar_crest");
                _sheep    = E.ClassId == ClassId.CDOTA_Unit_Hero_Tidehunter ? null : Me.FindItem("item_sheepstick");
                _cheese   = Me.FindItem("item_cheese");
                _stick    = Me.FindItem("item_magic_stick") ?? Me.FindItem("item_magic_wand");
                _phase    = Me.FindItem("item_phase_boots");

                var meld    = Me.Modifiers.ToList().Exists(y => y.Name == "modifier_templar_assassin_meld");
                var pikeMod = Me.Modifiers.ToList().Exists(y => y.Name == "modifier_item_hurricane_pike_range");
                Toolset.Range();
                var stoneModif = E.Modifiers.Any(y => y.Name == "modifier_medusa_stone_gaze_stone");
                var v          =
                    ObjectManager.GetEntities <Hero>()
                    .Where(x => x.Team != Me.Team && x.IsAlive && x.IsVisible && !x.IsIllusion && !x.IsMagicImmune())
                    .ToList();

                var pikeRange = Me.Modifiers.FirstOrDefault(y => y.Name == "modifier_item_hurricane_pike_range");
                if (pikeRange != null)
                {
                    if (
                        _q != null &&
                        _q.CanBeCasted() &&
                        !meld &&
                        Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_q.Name) &&
                        Utils.SleepCheck("Q")
                        )
                    {
                        _q.UseAbility();
                        Utils.Sleep(200, "Q");
                    }
                    if (
                        _w != null &&
                        _q != null &&
                        pikeRange.StackCount <= 3 &&
                        !_q.CanBeCasted() &&
                        _w.CanBeCasted() &&
                        Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_w.Name) &&
                        Utils.SleepCheck("W")
                        )
                    {
                        _w.UseAbility();
                        Me.Attack(E);
                        Utils.Sleep(200, "W");
                    }
                    if (Menu.Item("orbwalk").GetValue <bool>())
                    {
                        Orbwalking.Orbwalk(E, 0, 7000, true, true);
                    }
                }
                if (pikeRange != null && pikeRange.StackCount > 0)
                {
                    return;
                }
                if (pikeMod)
                {
                    return;
                }
                if (Active)
                {
                    if (meld)
                    {
                        if (Menu.Item("orbwalk").GetValue <bool>() && Me.Distance2D(E) <= 1900)
                        {
                            Orbwalking.Orbwalk(E, 0, 1600, true, true);
                        }
                    }
                }

                if (meld)
                {
                    return;
                }

                if (Active && Me.Distance2D(E) <= 1400 && E != null && E.IsAlive && !Me.IsInvisible())
                {
                    if (_r != null &&
                        (_pike == null ||
                         !_pike.CanBeCasted()) &&
                        Me.Distance2D(E) >= Toolset.AttackRange + 5 &&
                        _r.CanBeCasted() &&
                        !meld &&
                        Utils.SleepCheck("R") &&
                        !E.Modifiers.ToList().Exists(x => x.Name == "modifier_templar_assassin_trap_slow") &&
                        Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_r.Name))
                    {
                        _r.UseAbility(Prediction.InFront(E, 140));
                        Utils.Sleep(150, "R");
                    }
                    if (
                        _q != null && _q.CanBeCasted() &&
                        Me.Distance2D(E) <= Toolset.AttackRange + 300 &&
                        !meld &&
                        Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_q.Name) &&
                        Utils.SleepCheck("Q")
                        )
                    {
                        _q.UseAbility();
                        Utils.Sleep(200, "Q");
                    }
                    float   angle = Me.FindAngleBetween(E.Position, true);
                    Vector3 pos   = new Vector3((float)(E.Position.X + 100 * Math.Cos(angle)), (float)(E.Position.Y + 100 * Math.Sin(angle)), 0);
                    if (
                        _blink != null &&
                        Me.CanCast() &&
                        _blink.CanBeCasted() &&
                        Me.Distance2D(E) >= Toolset.AttackRange &&
                        Me.Distance2D(pos) <= 1190 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_blink.Name) &&
                        Utils.SleepCheck("blink")
                        )
                    {
                        _blink.UseAbility(pos);
                        Utils.Sleep(250, "blink");
                    }
                    if (
                        _w != null && _w.CanBeCasted() && Me.Distance2D(E) <= Toolset.AttackRange - 10 &&
                        Menu.Item("Skills").GetValue <AbilityToggler>().IsEnabled(_w.Name) &&
                        Utils.SleepCheck("W")
                        )
                    {
                        _w.UseAbility();
                        Me.Attack(E);
                        Utils.Sleep(200, "W");
                    }
                    if (                     // MOM
                        _mom != null &&
                        _mom.CanBeCasted() &&
                        Me.CanCast() &&
                        !meld &&
                        Menu.Item("Item").GetValue <AbilityToggler>().IsEnabled(_mom.Name) &&
                        Utils.SleepCheck("mom") &&
                        Me.Distance2D(E) <= 700
                        )
                    {
                        _mom.UseAbility();
                        Utils.Sleep(250, "mom");
                    }
                    if (                     // Hellbard
                        _halberd != null &&
                        _halberd.CanBeCasted() &&
                        Me.CanCast() &&
                        !E.IsMagicImmune() &&
                        (E.NetworkActivity == NetworkActivity.Attack ||
                         E.NetworkActivity == NetworkActivity.Crit ||
                         E.NetworkActivity == NetworkActivity.Attack2) &&
                        Utils.SleepCheck("halberd") &&
                        Me.Distance2D(E) <= 700 &&
                        !meld &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_halberd.Name)
                        )
                    {
                        _halberd.UseAbility(E);
                        Utils.Sleep(250, "halberd");
                    }
                    if (                     // Mjollnir
                        _mjollnir != null &&
                        _mjollnir.CanBeCasted() &&
                        Me.CanCast() &&
                        !meld &&
                        !E.IsMagicImmune() &&
                        Menu.Item("Item").GetValue <AbilityToggler>().IsEnabled(_mjollnir.Name) &&
                        Utils.SleepCheck("mjollnir") &&
                        Me.Distance2D(E) <= 900
                        )
                    {
                        _mjollnir.UseAbility(Me);
                        Utils.Sleep(250, "mjollnir");
                    }                     // Mjollnir Item end
                    if (
                        // cheese
                        _cheese != null &&
                        _cheese.CanBeCasted() &&
                        !meld &&
                        Me.Health <= (Me.MaximumHealth * 0.3) &&
                        Me.Distance2D(E) <= 700 &&
                        Menu.Item("Item").GetValue <AbilityToggler>().IsEnabled(_cheese.Name) &&
                        Utils.SleepCheck("cheese")
                        )
                    {
                        _cheese.UseAbility();
                        Utils.Sleep(200, "cheese");
                    }                     // cheese Item end
                    if (                  // Medall
                        _medall != null &&
                        _medall.CanBeCasted() &&
                        !meld &&
                        Utils.SleepCheck("Medall") &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_medall.Name) &&
                        Me.Distance2D(E) <= 700
                        )
                    {
                        _medall.UseAbility(E);
                        Utils.Sleep(250, "Medall");
                    }                     // Medall Item end

                    if (                  // sheep
                        _sheep != null &&
                        _sheep.CanBeCasted() &&
                        Me.CanCast() &&
                        !E.IsLinkensProtected() &&
                        !E.IsMagicImmune() &&
                        !meld &&
                        Me.Distance2D(E) <= 1400 &&
                        !stoneModif &&
                        Menu.Item("Item").GetValue <AbilityToggler>().IsEnabled(_sheep.Name) &&
                        Utils.SleepCheck("sheep")
                        )
                    {
                        _sheep.UseAbility(E);
                        Utils.Sleep(250, "sheep");
                    }                     // sheep Item end
                    if (                  // Abyssal Blade
                        _abyssal != null &&
                        _abyssal.CanBeCasted() &&
                        Me.CanCast() &&
                        !meld &&
                        !E.IsStunned() &&
                        !E.IsHexed() &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_abyssal.Name) &&
                        Utils.SleepCheck("abyssal") &&
                        Me.Distance2D(E) <= 400
                        )
                    {
                        _abyssal.UseAbility(E);
                        Utils.Sleep(250, "abyssal");
                    }                     // Abyssal Item end
                    if (_orchid != null &&
                        _orchid.CanBeCasted() &&
                        !meld &&
                        Me.Distance2D(E) <= 600 &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_orchid.Name) &&
                        Utils.SleepCheck("orchid"))
                    {
                        _orchid.UseAbility(E);
                        Utils.Sleep(100, "orchid");
                    }

                    if (_shiva != null &&
                        _shiva.CanBeCasted() &&
                        Me.Distance2D(E) <= 600 &&
                        !meld &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_shiva.Name) &&
                        !E.IsMagicImmune() && Utils.SleepCheck("Shiva"))
                    {
                        _shiva.UseAbility();
                        Utils.Sleep(100, "Shiva");
                    }
                    if (                     // ethereal
                        _ethereal != null &&
                        _ethereal.CanBeCasted() &&
                        Me.CanCast() &&
                        !meld &&
                        !E.IsLinkensProtected() &&
                        !E.IsMagicImmune() &&
                        !stoneModif &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_ethereal.Name) &&
                        Utils.SleepCheck("ethereal")
                        )
                    {
                        _ethereal.UseAbility(E);
                        Utils.Sleep(200, "ethereal");
                    }                     // ethereal Item end


                    if (                     // Dagon
                        Me.CanCast() &&
                        _dagon != null &&
                        (_ethereal == null ||
                         (E.Modifiers.Any(y => y.Name == "modifier_item_ethereal_blade_slow") ||
                          _ethereal.Cooldown < 17)) &&
                        !E.IsLinkensProtected() &&
                        _dagon.CanBeCasted() &&
                        !meld &&
                        !E.IsMagicImmune() &&
                        !stoneModif &&
                        Utils.SleepCheck("dagon")
                        )
                    {
                        _dagon.UseAbility(E);
                        Utils.Sleep(200, "dagon");
                    }                     // Dagon Item end
                    if (_phase != null &&
                        _phase.CanBeCasted() &&
                        !meld &&
                        Utils.SleepCheck("phase") &&
                        Menu.Item("Item").GetValue <AbilityToggler>().IsEnabled(_phase.Name) &&
                        !_blink.CanBeCasted() &&
                        Me.Distance2D(E) >= Me.AttackRange + 20)
                    {
                        _phase.UseAbility();
                        Utils.Sleep(200, "phase");
                    }
                    if (_urn != null &&
                        _urn.CanBeCasted() &&
                        _urn.CurrentCharges > 0 &&
                        Me.Distance2D(E) <= 400 &&
                        !meld &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_urn.Name) &&
                        Utils.SleepCheck("urn"))
                    {
                        _urn.UseAbility(E);
                        Utils.Sleep(240, "urn");
                    }
                    if (
                        _stick != null &&
                        _stick.CanBeCasted() &&
                        _stick.CurrentCharges != 0 &&
                        Me.Distance2D(E) <= 700 &&
                        !meld &&
                        (Me.Health <= (Me.MaximumHealth * 0.5) ||
                         Me.Mana <= (Me.MaximumMana * 0.5)) &&
                        Menu.Item("Item").GetValue <AbilityToggler>().IsEnabled(_stick.Name))
                    {
                        _stick.UseAbility();
                        Utils.Sleep(200, "mana_items");
                    }
                    if (_manta != null &&
                        _manta.CanBeCasted() &&
                        !meld &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_manta.Name) &&
                        Me.Distance2D(E) <= Toolset.AttackRange &&
                        Utils.SleepCheck("manta"))
                    {
                        _manta.UseAbility();
                        Utils.Sleep(100, "manta");
                    }
                    if (                     // Satanic
                        _satanic != null &&
                        Me.Health <= (Me.MaximumHealth * 0.3) &&
                        _satanic.CanBeCasted() &&
                        !meld &&
                        Me.Distance2D(E) <= Me.AttackRange + 50 &&
                        Menu.Item("Item").GetValue <AbilityToggler>().IsEnabled(_satanic.Name) &&
                        Utils.SleepCheck("satanic")
                        )
                    {
                        _satanic.UseAbility();
                        Utils.Sleep(240, "satanic");
                    }                     // Satanic Item end
                    if (_mail != null &&
                        _mail.CanBeCasted() &&
                        (v.Count(x => x.Distance2D(Me) <= 650)
                         >= (Menu.Item("Heelm").GetValue <Slider>().Value)) &&
                        !meld &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_mail.Name) &&
                        Utils.SleepCheck("mail"))
                    {
                        _mail.UseAbility();
                        Utils.Sleep(100, "mail");
                    }
                    if (_bkb != null &&
                        _bkb.CanBeCasted() &&
                        !meld &&
                        (v.Count(x => x.Distance2D(Me) <= 650)
                         >= (Menu.Item("Heel").GetValue <Slider>().Value)) &&
                        Menu.Item("Items").GetValue <AbilityToggler>().IsEnabled(_bkb.Name) &&
                        Utils.SleepCheck("bkb"))
                    {
                        _bkb.UseAbility();
                        Utils.Sleep(100, "bkb");
                    }

                    if (Active && Me.Distance2D(E) <= 1400 && E != null && E.IsAlive)
                    {
                        if (Menu.Item("orbwalk").GetValue <bool>() && Me.Distance2D(E) <= 1900)
                        {
                            Orbwalking.Orbwalk(E, 0, 1600, true, true);
                        }
                    }
                    if (_pike != null &&
                        _pike.CanBeCasted() &&
                        Me.IsAttacking() &&
                        Menu.Item("Item").GetValue <AbilityToggler>().IsEnabled(_pike.Name) &&
                        (E.Health <= (E.MaximumHealth / 100 * Menu.Item("piKe").GetValue <Slider>().Value) ||
                         Me.Health <= (Me.MaximumHealth / 100 * Menu.Item("piKeMe").GetValue <Slider>().Value)) &&
                        (_w == null ||
                         !_w.CanBeCasted()) &&
                        !meld &&
                        Me.Distance2D(E) <= 450 &&
                        Utils.SleepCheck("pike"))
                    {
                        _pike.UseAbility(E);
                        if (((_pike != null && _pike.CanBeCasted()) || IsCasted(_pike)) && _r.CanBeCasted() && !Me.Modifiers.ToList().Exists(y => y.Name == "modifier_templar_assassin_meld") && Me.Distance2D(E.NetworkPosition) <= 400 && Me.CanCast() && !Me.IsSilenced() && !Me.IsHexed())
                        {
                            var a1 = Me.Position.ToVector2().FindAngleBetween(E.Position.ToVector2(), true);
                            var p1 = new Vector3(
                                (E.Position.X + 520 * (float)Math.Cos(a1)),
                                (E.Position.Y + 520 * (float)Math.Sin(a1)),
                                100);
                            _r.UseAbility(p1);
                        }
                        Utils.Sleep(100, "pike");
                    }
                    var traps = ObjectManager.GetEntities <Unit>().Where(x => x.Name == "npc_dota_templar_assassin_psionic_trap" && x.Team == Me.Team &&
                                                                         x.Distance2D(Me) <= 1700 && x.IsAlive && x.IsValid).ToList();
                    foreach (var q in traps)
                    {
                        if (!HurPikeActived() && E.NetworkPosition.Distance2D(q.Position) < 390 && q.Spellbook.SpellQ.CanBeCasted() && Utils.SleepCheck("traps") && !E.Modifiers.ToList().Exists(x => x.Name == "modifier_templar_assassin_trap_slow"))
                        {
                            q.Spellbook.SpellQ.UseAbility();
                            Utils.Sleep(150, "traps");
                        }
                    }
                }
                Utils.Sleep(50, "combo");
            }
        }
Ejemplo n.º 13
0
        private void Game_OnUpdate(EventArgs args)
        {
            if (!ObjectManager.Player.IsDead)
            {
                if (Orbwalking.CanMove(100))
                {
                    switch (MenuProvider.Orbwalker.ActiveMode)
                    {
                    case Orbwalking.OrbwalkingMode.Combo:
                    {
                        if (MenuProvider.Champion.Combo.GetBoolValue("Attack Minion For Chasing"))
                        {
                            if (MenuProvider.Orbwalker.GetTarget() == null)
                            {
                                if (
                                    !HeroManager.Enemies.Any(
                                        x => x.IsValidTarget() && Orbwalking.InAutoAttackRange(x)))
                                {
                                    var minion =
                                        MinionManager.GetMinions(Orbwalking.GetRealAutoAttackRange(null) + 65,
                                                                 MinionTypes.All, MinionTeam.NotAlly)
                                        .OrderBy(x => x.Distance(ObjectManager.Player))
                                        .FirstOrDefault();
                                    if (minion != null)
                                    {
                                        Orbwalking.Orbwalk(minion, Game.CursorPos, 0f);
                                    }
                                }
                            }
                        }

                        if (MenuProvider.Champion.Combo.UseQ)
                        {
                            if (_q.IsReadyPerfectly())
                            {
                                if (!ObjectManager.Player.IsDashing())
                                {
                                    if (!ObjectManager.Player.IsWindingUp)
                                    {
                                        var target = TargetSelector.GetTargetNoCollision(_q);
                                        if (target != null)
                                        {
                                            if (ObjectManager.Player.Mana - _qManaCost[_q.Level] >= 40)
                                            {
                                                _q.Cast(target);
                                            }
                                            else
                                            {
                                                var killableTarget =
                                                    HeroManager.Enemies.FirstOrDefault(
                                                        x =>
                                                        !Orbwalking.InAutoAttackRange(x) &&
                                                        x.IsKillableAndValidTarget(_q.GetDamage(x),
                                                                                   TargetSelector.DamageType.Physical, _q.Range) &&
                                                        _q.GetPrediction(x).Hitchance >= _q.MinHitChance);
                                                if (killableTarget != null)
                                                {
                                                    _q.Cast(killableTarget);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        if (MenuProvider.Champion.Combo.UseE)
                        {
                            if (_e.IsReadyPerfectly())
                            {
                                if (
                                    HeroManager.Enemies.Any(
                                        x =>
                                        HealthPrediction.GetHealthPrediction(x, 250) > 0 &&
                                        x.IsKillableAndValidTarget(_e.GetDamage(x),
                                                                   TargetSelector.DamageType.Physical, _e.Range)))
                                {
                                    _e.Cast();
                                }
                            }
                        }

                        break;
                    }

                    case Orbwalking.OrbwalkingMode.Mixed:
                    {
                        if (MenuProvider.Champion.Harass.UseQ)
                        {
                            if (ObjectManager.Player.IsManaPercentOkay(MenuProvider.Champion.Harass.IfMana))
                            {
                                if (!ObjectManager.Player.IsDashing())
                                {
                                    if (!ObjectManager.Player.IsWindingUp)
                                    {
                                        if (_q.IsReadyPerfectly())
                                        {
                                            var target = TargetSelector.GetTargetNoCollision(_q);
                                            if (target != null)
                                            {
                                                _q.Cast(target);
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        break;
                    }

                    case Orbwalking.OrbwalkingMode.LaneClear:
                    {
                        //Lane
                        if (MenuProvider.Champion.Laneclear.UseQ)
                        {
                            if (_q.IsReadyPerfectly())
                            {
                                if (!ObjectManager.Player.IsDashing())
                                {
                                    if (!ObjectManager.Player.IsWindingUp)
                                    {
                                        if (
                                            ObjectManager.Player.IsManaPercentOkay(
                                                MenuProvider.Champion.Laneclear.IfMana))
                                        {
                                            foreach (
                                                var killableMinion in
                                                MinionManager.GetMinions(_q.Range)
                                                .Where(
                                                    x =>
                                                    _q.GetPrediction(x).Hitchance >= _q.MinHitChance &&
                                                    x.IsKillableAndValidTarget(_q.GetDamage(x),
                                                                               TargetSelector.DamageType.Physical, _q.Range)))
                                            {
                                                var killableNumber = 0;

                                                var collisionMinions =
                                                    Collision.GetCollision(
                                                        new List <Vector3>
                                                    {
                                                        ObjectManager.Player.ServerPosition.Extend(
                                                            killableMinion.ServerPosition, _q.Range)
                                                    },
                                                        new PredictionInput
                                                    {
                                                        Unit              = ObjectManager.Player,
                                                        Delay             = _q.Delay,
                                                        Speed             = _q.Speed,
                                                        Radius            = _q.Width,
                                                        Range             = _q.Range,
                                                        CollisionObjects  = new[] { CollisionableObjects.Minions },
                                                        UseBoundingRadius = false
                                                    }
                                                        ).OrderBy(x => x.Distance(ObjectManager.Player));

                                                foreach (Obj_AI_Minion collisionMinion in collisionMinions)
                                                {
                                                    if (
                                                        collisionMinion.IsKillableAndValidTarget(
                                                            ObjectManager.Player.GetSpellDamage(collisionMinion,
                                                                                                SpellSlot.Q), TargetSelector.DamageType.Physical,
                                                            _q.Range))
                                                    {
                                                        killableNumber++;
                                                    }
                                                    else
                                                    {
                                                        break;
                                                    }
                                                }

                                                if (killableNumber >=
                                                    MenuProvider.Champion.Laneclear.GetSliderValue(
                                                        "Cast Q if Killable Minion Number >=").Value)
                                                {
                                                    if (!ObjectManager.Player.IsWindingUp)
                                                    {
                                                        _q.Cast(killableMinion.ServerPosition);
                                                        break;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        if (MenuProvider.Champion.Laneclear.UseE)
                        {
                            if (_e.IsReadyPerfectly())
                            {
                                if (ObjectManager.Player.IsManaPercentOkay(MenuProvider.Champion.Laneclear.IfMana))
                                {
                                    if (
                                        MinionManager.GetMinions(_e.Range)
                                        .Count(
                                            x =>
                                            HealthPrediction.GetHealthPrediction(x, 250) > 0 &&
                                            x.IsKillableAndValidTarget(_e.GetDamage(x),
                                                                       TargetSelector.DamageType.Physical)) >=
                                        MenuProvider.Champion.Laneclear.GetSliderValue(
                                            "Cast E if Killable Minion Number >=").Value)
                                    {
                                        _e.Cast();
                                    }
                                }
                            }
                        }

                        //Jugnle
                        if (MenuProvider.Champion.Jungleclear.UseQ)
                        {
                            if (_q.IsReadyPerfectly())
                            {
                                if (ObjectManager.Player.IsManaPercentOkay(MenuProvider.Champion.Jungleclear.IfMana))
                                {
                                    var qTarget =
                                        MinionManager.GetMinions(_q.Range, MinionTypes.All, MinionTeam.Neutral,
                                                                 MinionOrderTypes.MaxHealth)
                                        .FirstOrDefault(
                                            x =>
                                            x.IsValidTarget(_q.Range) &&
                                            _q.GetPrediction(x).Hitchance >= HitChance.High);

                                    if (qTarget != null)
                                    {
                                        _q.Cast(qTarget);
                                    }
                                }
                            }
                        }

                        if (MenuProvider.Champion.Jungleclear.UseE)
                        {
                            if (_e.IsReadyPerfectly())
                            {
                                if (ObjectManager.Player.IsManaPercentOkay(MenuProvider.Champion.Jungleclear.IfMana))
                                {
                                    if (
                                        MinionManager.GetMinions(_e.Range, MinionTypes.All, MinionTeam.Neutral,
                                                                 MinionOrderTypes.MaxHealth)
                                        .Any(
                                            x =>
                                            HealthPrediction.GetHealthPrediction(x, 250) > 0 &&
                                            x.IsKillableAndValidTarget(_e.GetDamage(x),
                                                                       TargetSelector.DamageType.Physical)))
                                    {
                                        _e.Cast();
                                    }
                                }
                            }
                        }

                        break;
                    }
                    }
                }

                if (MenuProvider.Champion.Misc.GetBoolValue("Use Killsteal (With E)"))
                {
                    if (_e.IsReadyPerfectly())
                    {
                        if (
                            HeroManager.Enemies.Any(
                                x =>
                                HealthPrediction.GetHealthPrediction(x, 250) > 0 &&
                                x.IsKillableAndValidTarget(_e.GetDamage(x), TargetSelector.DamageType.Physical,
                                                           _e.Range)))
                        {
                            _e.Cast();
                        }
                    }
                }

                if (MenuProvider.Champion.Misc.GetBoolValue("Use Mobsteal (With E)"))
                {
                    if (_e.IsReadyPerfectly())
                    {
                        if (
                            MinionManager.GetMinions(_e.Range, MinionTypes.All, MinionTeam.Neutral,
                                                     MinionOrderTypes.MaxHealth)
                            .Any(
                                x =>
                                HealthPrediction.GetHealthPrediction(x, 500) > 0 &&
                                x.IsKillableAndValidTarget(_e.GetDamage(x), TargetSelector.DamageType.Physical)))
                        {
                            _e.Cast();
                        }
                    }
                }

                if (MenuProvider.Champion.Misc.GetBoolValue("Auto Steal Siege minion & Super minion (With E)"))
                {
                    if (_e.IsReadyPerfectly())
                    {
                        if (
                            MinionManager.GetMinions(_e.Range)
                            .Any(
                                x =>
                                HealthPrediction.GetHealthPrediction(x, 250) > 0 &&
                                x.IsKillableAndValidTarget(_e.GetDamage(x), TargetSelector.DamageType.Physical) &&
                                (x.CharData.BaseSkinName.ToLower().Contains("siege") ||
                                 x.CharData.BaseSkinName.ToLower().Contains("super"))))
                        {
                            _e.Cast();
                        }
                    }
                }

                if (MenuProvider.Champion.Misc.GetBoolValue("Auto Balista Combo (With R)"))
                {
                    if (_r.IsReadyPerfectly())
                    {
                        var myBlitzcrank =
                            HeroManager.Allies.FirstOrDefault(
                                x => !x.IsDead && x.HasBuff("kalistacoopstrikeally") && x.ChampionName == "Blitzcrank");
                        if (myBlitzcrank != null)
                        {
                            var grabTarget =
                                HeroManager.Enemies.FirstOrDefault(x => !x.IsDead && x.HasBuff("rocketgrab2"));
                            if (grabTarget != null)
                            {
                                if (ObjectManager.Player.Distance(grabTarget) > myBlitzcrank.Distance(grabTarget))
                                {
                                    _r.Cast();
                                }
                            }
                        }
                    }
                }

                if (MenuProvider.Champion.Misc.GetBoolValue("Auto E Harass (With E)"))
                {
                    if (_e.IsReadyPerfectly())
                    {
                        if (
                            !(MenuProvider.Champion.Misc.GetBoolValue("^ Don't do this in ComboMode") &&
                              MenuProvider.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo))
                        {
                            if (ObjectManager.Player.Mana - _e.ManaCost >= _e.ManaCost)
                            {
                                if (HeroManager.Enemies.Any(x => x.IsValidTarget(_e.Range) && _e.GetDamage(x) > 10))
                                {
                                    if (
                                        MinionManager.GetMinions(_e.Range, MinionTypes.All, MinionTeam.NotAlly)
                                        .Any(
                                            x =>
                                            HealthPrediction.GetHealthPrediction(x, 250) > 0 &&
                                            x.IsKillableAndValidTarget(_e.GetDamage(x),
                                                                       TargetSelector.DamageType.Physical, _e.Range)))
                                    {
                                        _e.Cast();
                                    }
                                }
                            }
                        }
                    }
                }

                if (MenuProvider.Champion.Misc.GetBoolValue("Auto W on Dragon or Baron (With W)"))
                {
                    if (ObjectManager.Player.IsManaPercentOkay(50))
                    {
                        if (!ObjectManager.Player.IsRecalling())
                        {
                            if (ObjectManager.Player.Position.CountEnemiesInRange(1500f) <= 0)
                            {
                                if (MenuProvider.Orbwalker.GetTarget() == null)
                                {
                                    if (_w.IsReadyPerfectly())
                                    {
                                        if (ObjectManager.Player.Distance(_baronLocation) <= _w.Range)
                                        {
                                            _w.Cast(_baronLocation);
                                        }
                                    }

                                    if (_w.IsReadyPerfectly())
                                    {
                                        if (ObjectManager.Player.Distance(_dragonLocation) <= _w.Range)
                                        {
                                            _w.Cast(_dragonLocation);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                if (MenuProvider.Champion.Misc.GetKeyBindValue("Cast W on Dragon").Active)
                {
                    if (_w.IsReadyPerfectly())
                    {
                        if (ObjectManager.Player.Distance(_dragonLocation) <= _w.Range)
                        {
                            _w.Cast(_dragonLocation);
                        }
                    }
                }

                if (MenuProvider.Champion.Misc.GetKeyBindValue("Cast W on Baron").Active)
                {
                    if (_w.IsReadyPerfectly())
                    {
                        if (ObjectManager.Player.Distance(_baronLocation) <= _w.Range)
                        {
                            _w.Cast(_baronLocation);
                        }
                    }
                }
            }
        }
Ejemplo n.º 14
0
        internal static void Flee()
        {
            if (!KL.CatForm() && KL.Spells["Aspect"].IsReady())
            {
                if (KL.SpellTimer["Pounce"].IsReady())
                {
                    KL.Spells["Aspect"].Cast();
                }
            }

            var wallCheck = KL.GetFirstWallPoint(KL.Player.Position, Game.CursorPos);

            if (wallCheck != null)
            {
                wallCheck = KL.GetFirstWallPoint((Vector3)wallCheck, Game.CursorPos, 5);
            }

            var movePosition = wallCheck != null ? (Vector3)wallCheck : Game.CursorPos;

            var tempGrid           = NavMesh.WorldToGrid(movePosition.X, movePosition.Y);
            var fleeTargetPosition = NavMesh.GridToWorld((short)tempGrid.X, (short)tempGrid.Y);

            Obj_AI_Base target = null;

            var wallJumpPossible = false;

            if (KL.CatForm() && KL.SpellTimer["Pounce"].IsReady() && wallCheck != null)
            {
                var wallPosition = movePosition;

                var   direction     = (Game.CursorPos.To2D() - wallPosition.To2D()).Normalized();
                float maxAngle      = 80f;
                float step          = maxAngle / 20;
                float currentAngle  = 0;
                float currentStep   = 0;
                bool  jumpTriggered = false;

                while (true)
                {
                    if (currentStep > maxAngle && currentAngle < 0)
                    {
                        break;
                    }

                    if ((currentAngle == 0 || currentAngle < 0) && currentStep != 0)
                    {
                        currentAngle = (currentStep) * (float)Math.PI / 180;
                        currentStep += step;
                    }

                    else if (currentAngle > 0)
                    {
                        currentAngle = -currentAngle;
                    }

                    Vector3 checkPoint;

                    if (currentStep == 0)
                    {
                        currentStep = step;
                        checkPoint  = wallPosition + KL.Spells["Pounce"].Range * direction.To3D();
                    }

                    else
                    {
                        checkPoint = wallPosition + KL.Spells["Pounce"].Range * direction.Rotated(currentAngle).To3D();
                    }

                    if (checkPoint.IsWall())
                    {
                        continue;
                    }

                    wallCheck = KL.GetFirstWallPoint(checkPoint, wallPosition);

                    if (wallCheck == null)
                    {
                        continue;
                    }

                    var wallPositionOpposite = (Vector3)KL.GetFirstWallPoint((Vector3)wallCheck, wallPosition, 5);

                    if (KL.Player.GetPath(wallPositionOpposite).ToList().To2D().PathLength() -
                        KL.Player.Distance(wallPositionOpposite) > 200)
                    {
                        if (KL.Player.Distance(wallPositionOpposite) < KL.Spells["Pounce"].Range - KL.Player.BoundingRadius / 2)
                        {
                            KL.Spells["Pounce"].Cast(wallPositionOpposite);
                            jumpTriggered = true;
                            break;
                        }

                        else
                        {
                            wallJumpPossible = true;
                        }
                    }

                    else
                    {
                        Render.Circle.DrawCircle(Game.CursorPos, 35, Color.Red, 2);
                    }
                }

                if (!jumpTriggered)
                {
                    Orbwalking.Orbwalk(target, Game.CursorPos, 90f, 35f);
                }
            }

            else
            {
                Orbwalking.Orbwalk(target, Game.CursorPos, 90f, 35f);
                if (KL.CatForm() && KL.SpellTimer["Pounce"].IsReady())
                {
                    KL.Spells["Pounce"].Cast(Game.CursorPos);
                }
            }
        }