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