private static void RLogic(Obj_AI_Hero Target) { if (!CheckTarget(Target) || !Target.IsValidTarget(900f)) { return; } var DashPos = Vector3.Zero; DashPos = Player.ServerPosition.Extend(Game.CursorPos, 450f); if ((DashPos.IsWall() && Menu["R"]["RCheck"]) || (DashPos.IsUnderEnemyTurret() && Menu["R"]["RTurret"]) || (Target.Health < GetDamage(Target, false, true, true, true, false) && Target.IsValidTarget(650))) { return; } if (Player.HasBuff("AhriTumble")) { var buffTime = Player.GetBuff("AhriTumble").EndTime; if (buffTime - Game.Time <= 3) { R.Cast(DashPos); } if (QReturn != null && QReturn.IsValid) { var ReturnPos = QReturn.Position; if (Target.DistanceToPlayer() > ReturnPos.DistanceToPlayer()) { var targetdis = Target.Position.Distance(ReturnPos); var QReturnEnd = QReturn.EndPosition; if (!(targetdis < Q.Range)) { return; } var CastPos = QReturnEnd.Extend(Target.ServerPosition, Target.ServerPosition.Distance(DashPos)); if ((CastPos.IsWall() && Menu["R"]["RCheck"]) || Player.ServerPosition.Distance(CastPos) > R.Range || CastPos.CountEnemyHeroesInRange(R.Range) > 2 || (DashPos.IsUnderEnemyTurret() && Menu["R"]["RTurret"])) { return; } R.Cast(CastPos); } } else { if (Q.IsReady() || DashPos.CountEnemyHeroesInRange(R.Range) > 2 || !Target.IsValidTarget(800f)) { return; } if (Game.CursorPos.Distance(Target.Position) > Target.DistanceToPlayer() && Target.IsValidTarget(R.Range)) { R.Cast(DashPos); } else if (Game.CursorPos.Distance(Target.Position) < Target.DistanceToPlayer() && !Target.IsValidTarget(R.Range) && Target.IsValidTarget(800f)) { R.Cast(DashPos); } } } else { var AllDamage = GetDamage(Target, false); var QDamage = Q.GetDamage(Target) * 2; var WDamage = W.GetDamage(Target); var RDamage = R.GetDamage(Target) * 3; if (!Target.IsValidTarget(800) || !(Target.Distance(DashPos) <= R.Range)) { return; } if (DashPos.CountEnemyHeroesInRange(R.Range) > 2 || Target.CountAllyHeroesInRange(R.Range) > 2) { return; } if (Target.Health >= AllDamage && Target.Health <= QDamage + WDamage + RDamage) { R.Cast(DashPos); } else if (Target.Health < RDamage + QDamage) { R.Cast(DashPos); } else if (Target.Health < RDamage + WDamage) { R.Cast(DashPos); } } }