Aka_s_Vayne.Logic.Tumble.OnCastTumble C# (CSharp) Method

OnCastTumble() public static method

public static OnCastTumble ( Obj_AI_Base target, System.Vector3 position ) : void
target Obj_AI_Base
position System.Vector3
return void
        public static void OnCastTumble(Obj_AI_Base target, Vector3 position)
        {
            var mode = Manager.MenuManager.UseQMode;
            var afterTumblePosition = Variables._Player.ServerPosition.Extend(position, 300f);
            var distanceToTarget = afterTumblePosition.Distance(target.ServerPosition, true);
            if ((distanceToTarget < Math.Pow(Variables._Player.AttackRange + 65, 2) && distanceToTarget > 110 * 110)
                || Manager.MenuManager.SpamQ)
            {
                switch (mode)
                {
                    case 0:
                        //To mouse
                        DefaultQCast(position, target);
                        break;
                    case 1:
                        //smart logic!
                        var smartQPosition = QECombo();
                        var smartQCheck = smartQPosition != Vector3.Zero;
                        var QPosition = smartQCheck ? smartQPosition : Game.CursorPos;
                        var QPosition2 = Provider.AkaQPosition() != Vector3.Zero ? Provider.AkaQPosition() : QPosition;

                        if (!Variables.UnderEnemyTower((Vector2)QPosition2) || (Variables.UnderEnemyTower((Vector2)QPosition2) && Variables.UnderEnemyTower((Vector2)Variables._Player.Position)))
                        {
                            CastQ(QPosition2);
                        }
                        break;
                    case 2:
                        //Away from melee enemies
                        if (Variables.MeleeEnemiesTowardsMe.Any() &&
                            !Variables.MeleeEnemiesTowardsMe.All(m => m.HealthPercent <= 15))
                        {
                            var Closest =
                                Variables.MeleeEnemiesTowardsMe.OrderBy(m => m.Distance(Variables._Player)).First();
                            var whereToQ = (Vector3)Closest.ServerPosition.Extend(
                                Variables._Player.ServerPosition, Closest.Distance(Variables._Player) + 300f);

                            if (whereToQ.IsTotallySafe())
                            {
                                CastQ(whereToQ);
                            }
                        }
                        else
                        {
                            DefaultQCast(position, target);
                        }
                        break;
                    case 3:
                        //Prada
                        var Target = TargetSelector.GetTarget((int)Variables._Player.GetAutoAttackRange(), DamageType.Physical);
                        if (Target == null) return;
                        var tumblePosition = Target.GetTumblePos();
                        CastQ(tumblePosition);
                        break;
                    case 4:
                        //Sebby
                        CastDash();
                        break;
                }
            }
        }