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()); } } }
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; } }
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("===================================================="); }
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; } }
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(); }