Beispiel #1
0
        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);
                }
            }
        }