Exemple #1
0
        private static IList <AnimationFrame> ProcessSequence(IList <byte> bytes, int number)
        {
            int           i        = 0;
            List <byte[]> sequence = new List <byte[]>();

            while (i < bytes.Count - 1)
            {
                if (bytes[i] != 0xFF)
                {
                    sequence.Add(new byte[2] {
                        bytes[i], bytes[i + 1]
                    });
                }
                else if (Jumps.ContainsKey(bytes[i + 1]))
                {
                    i += Jumps[bytes[i + 1]];
                }

                i += 2;
            }
            if (sequence.Count == 0)
            {
                return(null);
            }

            List <AnimationFrame> result = new List <AnimationFrame>(sequence.Count);

            foreach (byte[] frame in sequence)
            {
                result.Add(new AnimationFrame(frame[1], frame[0]));
            }

            return(result);
        }
Exemple #2
0
 private void OnCollisionEnter(Collision collision)
 {
     if ((_jumpState == Jumps.Jump || _jumpState == Jumps.DoubleJump) && collision.gameObject.CompareTag("Ground"))
     {
         _jumpState = Jumps.Grounded;
     }
 }
Exemple #3
0
    void Jump()
    {
        float jumpValue = Input.GetButtonDown("Jump") ? jumpHeight : 0.0f;

        switch (_jumpState)
        {
        case Jumps.Grounded:
            if (jumpValue > 0.0f)
            {
                _jumpState = Jumps.Jump;
            }
            break;

        case Jumps.Jump:
            if (jumpValue > 0.0f)
            {
                _jumpState = Jumps.DoubleJump;
            }
            break;

        case Jumps.DoubleJump:
            jumpValue = 0.0f;
            break;
        }

        Vector3 jumping = new Vector3(0.0f, jumpValue, 0.0f);

        rb.AddForce(jumping);
    }
        public string GetString(IStringReader stringReader)
        {
            var lineValues = new List <string>();

            foreach (var instruction in Instructions)
            {
                // Get all jumps pointing to the current instruction
                var viableJumps = Jumps.Where(x => x.Instruction == instruction);

                // Add jump labels
                lineValues.AddRange(viableJumps.Select(x => x.GetString() + ":"));

                // Add instruction
                lineValues.Add("\t" + instruction.GetString(stringReader));
            }

            // Add jumps at end of function
            var endJumps = Jumps.Where(x => !Instructions.Contains(x.Instruction));

            lineValues.AddRange(endJumps.Select(x => x.GetString() + ":"));

            // Prepare other strings
            var lines      = string.Join(Environment.NewLine, lineValues);
            var parameters = string.Join(", ", Enumerable.Range(0, ParameterCount).Select(x => $"$p{x}"));
            var unknowns   = string.Join(',', Unknowns);

            // Build final function
            var functionParts  = new[] { $"{Name}<{unknowns}>({parameters})" };
            var functionParts2 = !lines.Any() ? new[] { "{", "}" } : new[] { "{", lines, "}" };

            return(string.Join(Environment.NewLine, functionParts.Concat(functionParts2)));
        }
Exemple #5
0
        protected override string PropertyValidation(PropertyInfo pi)
        {
            if (pi.Name == nameof(SubWorkflow))
            {
                var requiresSubWorkflow = this.Type == WorkflowActivityType.CallWorkflow || this.Type == WorkflowActivityType.DecompositionWorkflow;
                if (SubWorkflow != null && !requiresSubWorkflow)
                {
                    return(ValidationMessage._0ShouldBeNull.NiceToString(pi.NiceName()));
                }

                if (SubWorkflow == null && requiresSubWorkflow)
                {
                    return(ValidationMessage._0IsNotSet.NiceToString(pi.NiceName()));
                }
            }

            if (pi.Name == nameof(Jumps))
            {
                var repated = NoRepeatValidatorAttribute.ByKey(Jumps, j => j.To);
                if (repated.HasText())
                {
                    return(ValidationMessage._0HasSomeRepeatedElements1.NiceToString(pi.NiceName(), repated));
                }

                if (Jumps.Any(j => j.To.RefersTo(this)))
                {
                    return(WorkflowMessage.JumpsToSameActivityNotAllowed.NiceToString());
                }
            }
            return(base.PropertyValidation(pi));
        }
Exemple #6
0
        void Debugger_OnInstructionChanged(object sender, Instruction instruction)
        {
            GridOpCode.CurrentCell = GridOpCode.Rows[instruction == null ? 0 : (int)instruction.Location.Index].Cells[3];
            Jumps.RefreshDynJumps(Debugger);

            GridOpCode.Refresh();
            GridAltStack.Refresh();
            GridStack.Refresh();
            Registers.Refresh();
        }
Exemple #7
0
 /// <summary>
 ///     Vygeneruje nov� dostupn� poz�cie kam m��e k�� sko�i�, na z�klade oper�torov
 /// </summary>
 private void GenerateJumps()
 {
     foreach (var @operator in Operatory.AllOperations)
     {
         var skok = @operator(Stav);
         if (skok == null)
         {
             continue;
         }
         Jumps.Add(skok);
     }
 }
Exemple #8
0
        void UpdateDebugState()
        {
            int instruction = Debugger == null ? 0 : (int)Debugger.CurrentInstructionIndex;

            GridOpCode.Invalidate();
            Registers.Refresh();

            //GridOpCode.ClearSelection();
            //GridOpCode.Rows[(int)instructionIndex].Selected = true;
            GridOpCode.CurrentCell = GridOpCode.Rows[instruction].Cells[3];

            Jumps.RefreshDynJumps(Debugger);
            //Application.DoEvents();
        }
Exemple #9
0
        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
            goToToolStripMenuItem.DropDownItems.Clear();

            if (Debugger == null || GridOpCode.SelectedRows.Count != 1)
            {
                return;
            }

            DataGridViewRow r = GridOpCode.SelectedRows[0];

            if (r.DataBoundItem == null || !(r.DataBoundItem is Instruction i))
            {
                return;
            }

            if (i.Jump != null && i.Jump.To != null)
            {
                var to = GridOpCode.Rows[(int)i.Jump.To.Index].DataBoundItem as Instruction;
                goToToolStripMenuItem.DropDownItems.Add(to.ToString(), null, (s, e2) =>
                {
                    Debugger_OnInstructionChanged(null, to);
                });
            }

            var ls = new List <Instruction>();

            foreach (var jump in Jumps.GetJumps())
            {
                if (jump.Jump == null || jump.Jump.To == null || jump.Jump.To.Index != i.Location.Index)
                {
                    continue;
                }

                if (ls.Contains(jump))
                {
                    continue;
                }
                ls.Add(jump);

                goToToolStripMenuItem.DropDownItems.Add(jump.ToString(), null, (s, e2) =>
                {
                    Debugger_OnInstructionChanged(null, jump);
                });
            }

            goToToolStripMenuItem.Enabled = goToToolStripMenuItem.DropDownItems.Count > 0;
        }
Exemple #10
0
        static void Main(string[] args)
        {
            CarryBit.TestAll();
            SingleRegister.TestAll();
            DataTransfer.TestAll();
            RegOrMemToAccum.TestAll();
            RotateAccum.TestAll();
            RegisterPair.TestAll();
            Immediates.TestAll();
            DirectAddressing.TestAll();
            Jumps.TestAll();
            Calls.TestAll();
            Returns.TestAll();
            Restarts.TestAll();

            Console.Read();
        }
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Obstacle"))
        {
            GameOver();
        }

        if (other.gameObject.CompareTag("Collectible"))
        {
            other.gameObject.SetActive(false);
            Jumps.setJumps();
        }

        if (other.gameObject.CompareTag("Points"))
        {
            other.gameObject.SetActive(false);
            Scores.setCollectable();
        }
    }
        //Función que maneja el pop de la pila de saltos
        public void popJumpStack()
        {
            //Si la pila está vacía, no se hace nada
            if (jumpStack.Count == 0)
            {
                return;
            }


            //Se obtiene el índice del salto
            int jumpIndex = (int)jumpStack.Pop();

            //Se crea una referencia al objeto del salto
            Jumps jump = (Jumps)quadrupleBuffer[jumpIndex];

            //Se le asigna la línea a la que va a saltar
            jump.setJump(lineCont);


            //Se manda a escribir el cuádruplo al archivo
            writeIntermediateCode(null);
        }
Exemple #13
0
        public static async Task <bool> Combat()
        {
            if (BotManager.Current.IsAutonomous)
            {
                Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach);
            }

            if (Core.Me.CurrentTarget == null)
            {
                return(false);
            }

            if (!Core.Me.CurrentTarget.ThoroughCanAttack())
            {
                return(false);
            }

            if (await CustomOpenerLogic.Opener())
            {
                return(true);
            }

            #region Positional Overlay
            if (BaseSettings.Instance.UsePositionalOverlay)
            {
                if (Core.Me.HasAura(Auras.SharperFangandClaw))
                {
                    if (!Core.Me.CurrentTarget.IsFlanking)
                    {
                        ViewModels.BaseSettings.Instance.PositionalStatus = "OutOfPosition";
                        ViewModels.BaseSettings.Instance.PositionalText   = "Move To Flank";
                    }
                    else
                    {
                        ViewModels.BaseSettings.Instance.PositionalStatus = "InPosition";
                        ViewModels.BaseSettings.Instance.PositionalText   = "You're In Position";
                    }
                }

                if (Core.Me.HasAura(Auras.EnhancedWheelingThrust))
                {
                    if (!Core.Me.CurrentTarget.IsBehind)
                    {
                        ViewModels.BaseSettings.Instance.PositionalStatus = "OutOfPosition";
                        ViewModels.BaseSettings.Instance.PositionalText   = "Move Behind";
                    }
                    else
                    {
                        ViewModels.BaseSettings.Instance.PositionalStatus = "InPosition";
                        ViewModels.BaseSettings.Instance.PositionalText   = "You're In Position";
                    }
                }

                if (ActionManager.LastSpell == Spells.Disembowel)
                {
                    if (!Core.Me.CurrentTarget.IsBehind)
                    {
                        ViewModels.BaseSettings.Instance.PositionalStatus = "OutOfPosition";
                        ViewModels.BaseSettings.Instance.PositionalText   = "Move Behind";
                    }
                    else
                    {
                        ViewModels.BaseSettings.Instance.PositionalStatus = "InPosition";
                        ViewModels.BaseSettings.Instance.PositionalText   = "You're In Position";
                    }
                }
            }
            #endregion

            #region Off GCD debugging
            if (Utilities.Routines.Dragoon.Jumps.Contains(Casting.LastSpell))
            {
                // Check to see if we're OFF GCD
                if (Spells.TrueThrust.Cooldown == TimeSpan.Zero)
                {
                    // Start the stopwatch if it isn't running
                    if (!JumpGcdTimer.IsRunning)
                    {
                        JumpGcdTimer.Restart();
                    }
                }
            }
            else
            {
                // We didn't use a Jump last, check to see if the stopwatch is running
                if (JumpGcdTimer.IsRunning)
                {
                    // We'll give a 50ms buffer for the time it takes to tick
                    if (JumpGcdTimer.ElapsedMilliseconds > 50)
                    {
                        Logger.WriteInfo($@"We wasted {JumpGcdTimer.ElapsedMilliseconds} ms off GCD");
                    }

                    // Stop the stopwatch
                    JumpGcdTimer.Stop();
                }
            }
            #endregion

            if (await PhysicalDps.Interrupt(DragoonSettings.Instance))
            {
                return(true);
            }
            if (await PhysicalDps.SecondWind(DragoonSettings.Instance))
            {
                return(true);
            }
            if (await PhysicalDps.Bloodbath(DragoonSettings.Instance))
            {
                return(true);
            }

            Utilities.Routines.Dragoon.EnemiesInView = Utilities.Combat.Enemies.Count(r => r.Distance(Core.Me) <= 10 + r.CombatReach && r.InView());

            if (Utilities.Routines.Dragoon.OnGcd && !_usedJumpDuringGcd)
            {
                if (await Jumps.MirageDive())
                {
                    _usedJumpDuringGcd = true;
                    return(true);
                }

                if (await Jumps.Execute())
                {
                    _usedJumpDuringGcd = true;
                    return(true);
                }

                if (await SingleTarget.Geirskogul())
                {
                    return(true);
                }

                if (await Buff.LanceCharge())
                {
                    return(true);
                }
                if (await Aoe.Nastrond())
                {
                    return(true);
                }
                if (await Buff.BloodOfTheDragon())
                {
                    return(true);
                }
                if (await Buff.DragonSight())
                {
                    return(true);
                }
                if (await Buff.BattleLitany())
                {
                    return(true);
                }
                return(await Buff.TrueNorth());
            }

            if (await OffGlobalCooldownRotation())
            {
                _usedJumpDuringGcd = false;
                return(true);
            }

            return(false);
        }
Exemple #14
0
    private void LoadAudioChart(string absoluteUri, bool isJSON = false)
    {
        if (Serializer.Initialized)
        {
            // bool fileLoadSuccess = Serializer.LoadFronFile(absoluteUri, isJSON, absoluteUri.Contains(".dat"));
            bool fileLoadSuccess = isJSON ? Serializer.LoadFronFile(absoluteUri, isJSON, absoluteUri.Contains(".dat")) : Serializer.LoadFronFile(absoluteUri);
            if (fileLoadSuccess)
            {
                editPanelAnimator.Play("Panel In");
                editModePanelAnimator.Play("Panel Out");

                editNameField.text   = Serializer.ChartData.Name;
                editAuthorField.text = Serializer.ChartData.Author;
                editTrackField.text  = (Serializer.ChartData.AudioData != null) ? string.Empty : Serializer.ChartData.AudioName;
                editMapperField.text = Serializer.ChartData.Beatmapper;
                if (!isJSON)
                {
                    Serializer.ChartData.FilePath = absoluteUri;
                }

                // For the artwork texture
                if (Serializer.ChartData.ArtworkBytes == null)
                {
                    Serializer.ChartData.Artwork      = "Default Artwork";
                    Serializer.ChartData.ArtworkBytes = defaultArtworkData;
                }

                SetSpriteToImage(editArtworkField, Serializer.ChartData.ArtworkBytes);

                // If not has effect data
                if (Serializer.ChartData.Effects == null)
                {
                    Effects defaultEffects = new Effects();
                    defaultEffects.Easy   = new List <float>();
                    defaultEffects.Normal = new List <float>();
                    defaultEffects.Hard   = new List <float>();
                    defaultEffects.Expert = new List <float>();
                    defaultEffects.Master = new List <float>();
                    defaultEffects.Custom = new List <float>();

                    Serializer.ChartData.Effects = defaultEffects;
                }

                if (Serializer.ChartData.Jumps == null)
                {
                    Jumps defaultJumps = new Jumps();
                    defaultJumps.Easy   = new List <float>();
                    defaultJumps.Normal = new List <float>();
                    defaultJumps.Hard   = new List <float>();
                    defaultJumps.Expert = new List <float>();
                    defaultJumps.Master = new List <float>();
                    defaultJumps.Custom = new List <float>();

                    Serializer.ChartData.Jumps = defaultJumps;
                }

                if (Serializer.ChartData.Crouchs == null)
                {
                    Crouchs defaultCrouchs = new Crouchs();
                    defaultCrouchs.Easy   = new List <float>();
                    defaultCrouchs.Normal = new List <float>();
                    defaultCrouchs.Hard   = new List <float>();
                    defaultCrouchs.Expert = new List <float>();
                    defaultCrouchs.Master = new List <float>();
                    defaultCrouchs.Custom = new List <float>();

                    Serializer.ChartData.Crouchs = defaultCrouchs;
                }

                if (Serializer.ChartData.Slides == null)
                {
                    Slides defaultSlides = new Slides();
                    defaultSlides.Easy   = new List <Slide>();
                    defaultSlides.Normal = new List <Slide>();
                    defaultSlides.Hard   = new List <Slide>();
                    defaultSlides.Expert = new List <Slide>();
                    defaultSlides.Master = new List <Slide>();
                    defaultSlides.Custom = new List <Slide>();

                    Serializer.ChartData.Slides = defaultSlides;
                }

                if (Serializer.ChartData.Lights == null)
                {
                    Lights defaultLights = new Lights();
                    defaultLights.Easy   = new List <float>();
                    defaultLights.Normal = new List <float>();
                    defaultLights.Hard   = new List <float>();
                    defaultLights.Expert = new List <float>();
                    defaultLights.Master = new List <float>();
                    defaultLights.Custom = new List <float>();

                    Serializer.ChartData.Lights = defaultLights;
                }

                if (Serializer.ChartData.Bookmarks == null)
                {
                    Serializer.ChartData.Bookmarks = new Bookmarks();
                }

                InitFormsSelection(true);
            }
        }
    }
Exemple #15
0
    /// <sumary>
    /// Instantiate the new Chart and load the editor scene
    /// </sumary>
    public void StartEditor(bool isEdit = false)
    {
        if (Serializer.Initialized)
        {
            if (Serializer.ChartData == null)
            {
                Chart chart        = new Chart();
                Beats defaultBeats = new Beats();
                defaultBeats.Easy   = new Dictionary <float, List <Note> >();
                defaultBeats.Normal = new Dictionary <float, List <Note> >();
                defaultBeats.Hard   = new Dictionary <float, List <Note> >();
                defaultBeats.Expert = new Dictionary <float, List <Note> >();
                defaultBeats.Master = new Dictionary <float, List <Note> >();
                defaultBeats.Custom = new Dictionary <float, List <Note> >();

                Effects defaultEffects = new Effects();
                defaultEffects.Easy   = new List <float>();
                defaultEffects.Normal = new List <float>();
                defaultEffects.Hard   = new List <float>();
                defaultEffects.Expert = new List <float>();
                defaultEffects.Master = new List <float>();
                defaultEffects.Custom = new List <float>();

                Jumps defaultJumps = new Jumps();
                defaultJumps.Easy   = new List <float>();
                defaultJumps.Normal = new List <float>();
                defaultJumps.Hard   = new List <float>();
                defaultJumps.Expert = new List <float>();
                defaultJumps.Master = new List <float>();
                defaultJumps.Custom = new List <float>();

                Crouchs defaultCrouchs = new Crouchs();
                defaultCrouchs.Easy   = new List <float>();
                defaultCrouchs.Normal = new List <float>();
                defaultCrouchs.Hard   = new List <float>();
                defaultCrouchs.Expert = new List <float>();
                defaultCrouchs.Master = new List <float>();
                defaultCrouchs.Custom = new List <float>();

                Slides defaultSlides = new Slides();
                defaultSlides.Easy   = new List <Slide>();
                defaultSlides.Normal = new List <Slide>();
                defaultSlides.Hard   = new List <Slide>();
                defaultSlides.Expert = new List <Slide>();
                defaultSlides.Master = new List <Slide>();
                defaultSlides.Custom = new List <Slide>();

                Lights defaultLights = new Lights();
                defaultLights.Easy   = new List <float>();
                defaultLights.Normal = new List <float>();
                defaultLights.Hard   = new List <float>();
                defaultLights.Expert = new List <float>();
                defaultLights.Master = new List <float>();
                defaultLights.Custom = new List <float>();

                /// For testing

                /*var list = new List<Note>();
                 * list.Add(new Note(new Vector3(-0.5756355f, 0.2400601f, 0), 1));
                 * defaultBeats.Easy.Add(0, list);
                 * list = new List<Note>();
                 * list.Add(new Note(new Vector3(-0.7826607f, 0.3006552f, 20f), 2002));
                 * defaultBeats.Easy.Add(2000, list);
                 * list = new List<Note>();
                 * list.Add(new Note(new Vector3(0.1514833f, 0.3359979f, 40f), 4001));
                 * defaultBeats.Easy.Add(4000, list);	*/

                chart.Track                 = defaultBeats;
                chart.Effects               = defaultEffects;
                chart.Jumps                 = defaultJumps;
                chart.Crouchs               = defaultCrouchs;
                chart.Slides                = defaultSlides;
                chart.Bookmarks             = new Bookmarks();
                chart.Name                  = nameField.text;
                chart.Author                = authorField.text;
                chart.AudioName             = trackField.text;
                chart.AudioData             = null;     //audioData;
                chart.AudioFrecuency        = loadedClip.frequency;
                chart.AudioChannels         = loadedClip.channels;
                chart.BPM                   = 120;
                chart.FilePath              = null;
                chart.Artwork               = artWorkField;
                chart.ArtworkBytes          = loadedArtwork;
                chart.IsAdminOnly           = Serializer.IsAdmin();
                chart.Beatmapper            = mapperField.text;
                chart.CustomDifficultyName  = "Custom";
                chart.CustomDifficultySpeed = 1;
                chart.Tags                  = new List <string>();
                chart.Lights                = defaultLights;

                Serializer.ChartData = chart;
            }

            if (artworkEdited)
            {
                Serializer.ChartData.Artwork      = artWorkField;
                Serializer.ChartData.ArtworkBytes = loadedArtwork;
            }

            if (audioEdited)
            {
                // Serializer.ChartData.AudioData = audioData;
                Serializer.ChartData.AudioFrecuency = loadedClip.frequency;
                Serializer.ChartData.AudioChannels  = loadedClip.channels;
            }

            if (isEdit)
            {
                Serializer.ChartData.Name       = editNameField.text;
                Serializer.ChartData.Author     = editAuthorField.text;
                Serializer.ChartData.AudioName  = editTrackField.text;
                Serializer.ChartData.Beatmapper = editMapperField.text;
            }
            // Complete editor process
            // Serializer.SerializeToFile();
            Miku_LoaderHelper.LauchPreloader();
        }
    }
Exemple #16
0
 private void RemoveJump()
 {
     Jumps.RemoveAt(SelectedJump);
     SelectedJump = -1;
 }
Exemple #17
0
 private void AddJump()
 {
     Jumps.Add(new JumpViewModel(this));
     SelectedJump = Jumps.Count - 1;
 }
Exemple #18
0
 public FCodeEmit(FTypeEmit parent, FBuf fcode, CILInstructions code, Reg[] regs, FTypeRef ret)
 {
     this.pod      = parent.pod;
       this.emitter  = parent.emitter;
       this.parent   = parent;
       this.buf      = fcode.m_buf;
       this.len      = fcode.m_len;
       this.code     = code;
       this.podClass = FanUtil.toDotnetTypeName(pod.m_podName, "$Pod", false);
       this.jumps    = new Jumps(code);
       this.regs     = regs;
       this.ret      = ret;
 }
Exemple #19
0
 void GridOpCode_Scroll(object sender, ScrollEventArgs e)
 {
     Jumps.Invalidate();
 }
Exemple #20
0
 void GridOpCode_CurrentCellChanged(object sender, EventArgs e)
 {
     Jumps.Invalidate();
 }
Exemple #21
0
        public static async Task <bool> Combat()
        {
            if (BotManager.Current.IsAutonomous)
            {
                if (Core.Me.HasTarget)
                {
                    Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach);
                }
            }

            if (!Core.Me.HasTarget && !Core.Me.InCombat)
            {
                return(false);
            }

            if (!Core.Me.CurrentTarget.ThoroughCanAttack())
            {
                return(false);
            }

            if (await CustomOpenerLogic.Opener())
            {
                return(true);
            }


            #region Off GCD debugging
            if (DragoonRoutine.JumpsList.Contains(Casting.LastSpell))
            {
                // Check to see if we're OFF GCD
                if (Spells.TrueThrust.Cooldown == TimeSpan.Zero)
                {
                    // Start the stopwatch if it isn't running
                    if (!JumpGcdTimer.IsRunning)
                    {
                        JumpGcdTimer.Restart();
                    }
                }
            }
            else
            {
                // We didn't use a Jump last, check to see if the stopwatch is running
                if (JumpGcdTimer.IsRunning)
                {
                    // We'll give a 50ms buffer for the time it takes to tick
                    if (JumpGcdTimer.ElapsedMilliseconds > 50)
                    {
                        Logger.WriteInfo($@"We wasted {JumpGcdTimer.ElapsedMilliseconds} ms off GCD");
                    }

                    // Stop the stopwatch
                    JumpGcdTimer.Stop();
                }
            }
            #endregion

            //Utility
            if (await PhysicalDps.Interrupt(DragoonSettings.Instance))
            {
                return(true);
            }
            if (await PhysicalDps.SecondWind(DragoonSettings.Instance))
            {
                return(true);
            }
            if (await PhysicalDps.Bloodbath(DragoonSettings.Instance))
            {
                return(true);
            }

            if (DragoonRoutine.GlobalCooldown.CanWeave() && !DragoonRoutine.SingleWeaveJumpsList.Contains(Casting.LastSpell))
            {
                //Buffs
                if (await Buff.ForceDragonSight())
                {
                    return(true);
                }
                if (await Buff.LanceCharge())
                {
                    return(true);
                }
                if (await Buff.DragonSight())
                {
                    return(true);
                }
                if (await Buff.BattleLitany())
                {
                    return(true);
                }
                if (await Buff.LifeSurge())
                {
                    return(true);
                }
                if (await Utility.TrueNorth())
                {
                    return(true);
                }

                //oGCD - Jump
                if (await Aoe.WyrmwindThrust())
                {
                    return(true);
                }
                if (await Jumps.MirageDive())
                {
                    return(true);                          //DoubleWeave
                }
                if (await Aoe.Geirskogul())
                {
                    return(true);
                }
                if (await Aoe.Nastrond())
                {
                    return(true);
                }

                if (DragoonRoutine.GlobalCooldown.CanWeave(1))
                {
                    if (await Jumps.HighJump())
                    {
                        return(true);                         //SingleWeave
                    }
                    if (await Jumps.DragonfireDive())
                    {
                        return(true);                              //SingleWeave
                    }
                    if (await Jumps.SpineshatterDive())
                    {
                        return(true);                                //SingleWeave
                    }
                    if (await Jumps.Stardiver())
                    {
                        return(true);                         //SingleWeave
                    }
                }
            }

            if (await Aoe.DraconianFury())
            {
                return(true);
            }
            if (await Aoe.CoerthanTorment())
            {
                return(true);
            }
            if (await Aoe.SonicThrust())
            {
                return(true);
            }
            if (await Aoe.DoomSpike())
            {
                return(true);
            }

            if (await SingleTarget.RaidenThrust())
            {
                return(true);
            }

            // Combo 2
            if (await SingleTarget.FangAndClaw())
            {
                return(true);
            }
            if (await SingleTarget.HeavensThrust())
            {
                return(true);
            }
            if (await SingleTarget.VorpalThrust())
            {
                return(true);
            }

            // Combo 1 + DOT
            if (await SingleTarget.WheelingThrust())
            {
                return(true);
            }
            if (await SingleTarget.ChaoticSpring())
            {
                return(true);
            }
            if (await SingleTarget.Disembowel())
            {
                return(true);
            }

            return(await SingleTarget.TrueThrust());
        }