Пример #1
0
 private void CheckJungleClearExtra()
 {
     if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear) && GetTarget != null && GetTarget.Distance(me) <= 300 &&
         !EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, me.Position, 600).Any(x => x.Equals(GetTarget)))
     {
         if (!Orbwalker.CanAutoAttack && RivenMenu.IsEnabled("E") && GetTarget.Health < GetTarget.MaxHealth)
         {
             Spells.ForceE(Game.CursorPos.To2D());
         }
     }
 }
Пример #2
0
        private void DashOnOnDash(Obj_AI_Base sender, Dash.DashEventArgs dashEventArgs)
        {
            if (!sender.IsMe)
            {
                return;
            }

            var slot = !Spells.E.IsReady() ? SpellSlot.E : SpellSlot.Q;

            CastType currentCastType = CastType.NONE;

            if (slot == SpellSlot.Q)
            {
                LastQ           = Environment.TickCount;
                currentCastType = CastType.Q;
            }
            if (slot == SpellSlot.E)
            {
                currentCastType = CastType.E;
            }

            CastType?nextCast = RivenMenu.GetNextCastTyoe(currentCastType);

            if (nextCast == null || GetTarget == null)
            {
                return;
            }

            switch (nextCast)
            {
            case CastType.Q: Spells.ForceQ(GetTarget.Position.To2D()); break;

            case CastType.W: Spells.ForceW(); break;

            case CastType.E: Spells.ForceE(GetTarget.Position.To2D()); break;

            case CastType.R1: Spells.ForceR1(); break;

            case CastType.R2: TryR2Cast(); break;

            case CastType.H: Spells.ForceItem(); break;

            case CastType.F: Spells.ForceFlash(TargetSelector.SelectedTarget.Position.To2D()); break;
            }
        }
Пример #3
0
        public Riven()
        {
            me = ObjectManager.Player;
            if (me.ChampionName != "Riven")
            {
                return;
            }

            RivenMenu.Init();
            Spells.Init();

            Obj_AI_Base.OnSpellCast     += OnSpellCast;
            Dash.OnDash                 += DashOnOnDash;
            Obj_AI_Base.OnPlayAnimation += ObjAiBaseOnOnPlayAnimation;
            Game.OnUpdate               += GameOnOnUpdate;
            Game.OnWndProc              += Game_OnWndProc;
            Drawing.OnDraw              += DrawingOnOnDraw;

            Interrupter.OnInterruptableSpell += InterrupterOnOnInterruptableSpell;
            Gapcloser.OnGapcloser            += GapcloserOnOnGapcloser;

            if (Game.MapId != GameMapId.SummonersRift)
            {
                WallJumpData.WallJumpSpots.Clear();
                if (Game.MapId == GameMapId.HowlingAbyss)
                {
                    foreach (var aramSpot in WallJumpData.WallJumpSpotsAram)
                    {
                        WallJumpData.WallJumpSpots.Add(aramSpot.Key, aramSpot.Value);
                    }
                }

                if (Game.MapId == GameMapId.TwistedTreeline)
                {
                    foreach (var twistedTreeLineSpot in WallJumpData.WallJumpSpotsTwistedTreeline)
                    {
                        WallJumpData.WallJumpSpots.Add(twistedTreeLineSpot.Key, twistedTreeLineSpot.Value);
                    }
                }
            }
            Logger.Debug("====================================================");
        }
Пример #4
0
        private void OnSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            CastType currentCastType = CastType.NONE;

            if (args.SData.Name.Contains("BasicAttack"))
            {
                currentCastType = CastType.AA;

                if (ObjectManager.Get <Obj_AI_Turret>().Any(x => me.Distance(x) <= me.GetAutoAttackRange() + x.BoundingRadius + 200))
                {
                    Spells.ForceQ();
                }

                if (me.GetAutoAttackDamage(args.Target as Obj_AI_Base) >= (args.Target as Obj_AI_Base).Health)
                {
                    return;
                }
            }
            if (args.Slot == SpellSlot.W)
            {
                currentCastType = CastType.W;
            }
            if (args.SData.Name.Contains("RivenFengShuiEngine")) //firstR
            {
                currentCastType = CastType.R1;
                LastRTick       = Environment.TickCount;
            }
            if (args.SData.Name.Contains("RivenIzunaBlade")) //secondR
            {
                currentCastType = CastType.R2;
                RivenMenu.Combo["burstKey"].Cast <KeyBind>().CurrentValue = false;
            }
            if (args.SData.Name.Contains("ItemTiamatCleave"))
            {
                currentCastType = CastType.H;
            }
            if (args.SData.Name.ToLower().Contains("flash"))
            {
                currentCastType = CastType.F;
            }

            if (currentCastType == CastType.NONE)
            {
                return;
            }

            if (GetTarget == null)
            {
                return;
            }

            CastType?nextCast = RivenMenu.GetNextCastTyoe(currentCastType);

            if (nextCast == null)
            {
                return;
            }

            switch (nextCast)
            {
            case CastType.Q: Spells.ForceQ(GetTarget.Position.To2D()); break;

            case CastType.W: Spells.ForceW(); break;

            case CastType.E: Spells.ForceE(GetTarget.Position.To2D()); break;

            case CastType.R1: Spells.ForceR1(); break;

            case CastType.R2: TryR2Cast(); break;

            case CastType.H: Spells.ForceItem(); break;

            case CastType.F: Spells.ForceFlash(TargetSelector.SelectedTarget.Position.To2D()); break;
            }
        }
Пример #5
0
        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();
        }