示例#1
0
文件: Riven.cs 项目: tekintr/Elobuddy
        private void CheckInstantSpells()
        {
            float facingAngle   = GetTarget.Direction.To2D().Perpendicular().AngleBetween(me.Direction.To2D().Perpendicular());
            bool  isRunningAway = facingAngle < 25;

            if (!RivenMenu.Combo["burstKey"].Cast <KeyBind>().CurrentValue&& Spells.E.IsReady() &&
                Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Combo && RivenMenu.Combo["EGap"].Cast <CheckBox>().CurrentValue)
            {
                if (Prediction.Position.PredictUnitPosition(GetTarget, Spells.E.CastDelay).Distance(me) < Spells.E.Range + me.GetAutoAttackRange() &&
                    GetTarget.Distance(me) > me.GetAutoAttackRange())
                {
                    Spells.ForceE(GetTarget.Position.To2D());
                }
            }
            else if (!RivenMenu.Combo["burstKey"].Cast <KeyBind>().CurrentValue&& Spells.Q.IsReady() && !Spells.E.IsReady() &&
                     Orbwalker.ActiveModesFlags == Orbwalker.ActiveModes.Combo && RivenMenu.Combo["QGap"].Cast <CheckBox>().CurrentValue)
            {
                if (Farming.GetQCone().IsInside(Prediction.Position.PredictUnitPosition(GetTarget, Spells.Q.CastDelay)) &&
                    GetTarget.Distance(me) > me.GetAutoAttackRange() && isRunningAway)
                {
                    Spells.ForceQ(GetTarget.Position.To2D());
                }
            }
            else if (isRunningAway && RivenMenu.Combo["QGap"].Cast <CheckBox>().CurrentValue&&
                     RivenMenu.Combo["EGap"].Cast <CheckBox>().CurrentValue&&
                     Spells.Q.IsReady() && Spells.E.IsReady() &&
                     Prediction.Position.PredictUnitPosition(GetTarget, Spells.E.CastDelay).Distance(me) >
                     Spells.E.Range + me.GetAutoAttackRange() &&
                     Prediction.Position.PredictUnitPosition(GetTarget, Spells.E.CastDelay + Spells.Q.CastDelay)
                     .Distance(me) <= Spells.Q.Range + Spells.E.Range + me.GetAutoAttackRange())
            {
                Spells.ForceE(GetTarget.Position.To2D());
                Core.DelayAction(Spells.ForceQ, Spells.E.CastDelay);
            }

            bool laneClear = EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, me.Position, 750).Any() &&
                             Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear);

            if (RivenMenu.Combo["InstaW"].Cast <CheckBox>().CurrentValue&& Spells.W.IsReady() && !laneClear)
            {
                var pred = Prediction.Position.PredictUnitPosition(GetTarget, Spells.W.CastDelay /*+ 250*/);
                if (pred.Distance(Player.Instance) <= Spells.W.Range)
                {
                    Spells.ForceItem();
                    Core.DelayAction(Spells.ForceW, 250);
                }
            }
        }
示例#2
0
文件: Riven.cs 项目: tekintr/Elobuddy
        private void CheckLaneClearExtra()
        {
            if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear))
            {
                return;
            }

            if (GetTarget != null && GetTarget.Distance(me) > me.GetAutoAttackRange() && GetTarget.Distance(me) <= Spells.E.Range &&
                Prediction.Health.GetPrediction(GetTarget, Spells.E.CastDelay + (int)(Orbwalker.AttackDelay * 1000)) > 0 &&
                Orbwalker.CanAutoAttack && !Spells.W.IsReady() && !Spells.Hydra.IsReady() && !Spells.Tiamat.IsReady() && RivenMenu.IsEnabled("E"))
            {
                Spells.ForceE(GetTarget.Position.To2D());
            }

            bool couldQ = Spells.Q.IsReady() && RivenMenu.IsEnabled("Q");
            bool couldW = RivenMenu.IsEnabled("W") && Spells.W.IsReady();
            bool couldH = RivenMenu.IsEnabled("H") && (Spells.Hydra.IsReady() || Spells.Tiamat.IsReady());
            bool couldE = Spells.E.IsReady() && RivenMenu.IsEnabled("E");

            if (couldW || couldH)
            {
                var minRadius = Spells.W.IsReady() ? Spells.W.Range : Spells.Hydra.Range;
                var location  = Farming.GetBestFarmLocation(minRadius, couldE ? Spells.E.Range : 0);
                if (location.HasValue)
                {
                    Spells.ForceE(location.Value);
                    if (couldH)
                    {
                        Spells.ForceItem();
                    }

                    ClearTick1 = Environment.TickCount;
                    ClearBool1 = true;
                    if (!couldH) /*skip to faster w usage*/
                    {
                        ClearTick1 -= 250;
                    }
                }
            }

            if (Environment.TickCount - ClearTick1 >= 250 && ClearBool1)
            {
                if (couldW)
                {
                    Spells.ForceW();
                }
                ClearBool1 = false;
            }

            if (Farming.CanKillMinionWithQ() && couldQ)
            {
                var min = Farming.GetQKillableMinion();
                if (!me.IsInAutoAttackRange(min))
                {
                    Spells.ForceQ(min.Position.To2D());
                }
            }

            //if (Farming.GetMinionsInQ() > 1)
            //    Spells.ForceQ();
        }