Building sequences
The best way to understand how to build a GRIP-EMS sequence is to read one that works and understand why it is built the way it is. This section dissects a real Guardian Druid Mythic+ sequence step by step, then covers the patterns and decisions that apply across every spec.
The sequence: Elune's Chosen M+ V7.1
Talent string
CgGA8cL7tpvige+kkmGM9zUPWDAAAAAAAAAAAgZmZmFzMjZWmZxMmZZZgZzMGNRmZWmZmZmlZmBAAAAAgZmNDYZbmBjZZAM1MLzyMzMAA2wMAWMGGYWssBYmZmNAThis sequence runs 30 steps in a Sequential loop with resetOnCombat enabled, meaning it fires the opener every pull and loops through the rotation continuously from there. At 150ms intervals on Razer hardware this produces Thrash at roughly 47% of total damage done, Ironfur uptime in the 91 to 97% range, and zero deaths across the validated keys.
Two modifiers run throughout the entire sequence. Shift fires Frenzied Regeneration on demand without breaking the loop. Ctrl fires Ironfur manually when you need it outside the automatic cycling. Every step except the two MOONSPAM steps and steps 15 and 30 carries both modifier lines so they are always available regardless of where you are in the rotation.
Step by step breakdown
The sequence has a clear internal structure once you see it: an opener block, then a repeating loop built around Thrash and Mangle with Ironfur cycling at fixed intervals, Lunar Beam weaved at positions 5, 12, 19, and 26, and MOONSPAM at positions 8 and 22 handling Moonfire delivery and Barkskin as a reset gate.
Opener: target acquisition, auto-attack, Bear Form
The opener does three things in one step. /targetenemy [noharm][dead] acquires a target if you do not have one or if your current target is dead, which is essential at the start of a pull when you are tabbing through packs. /startattack gets auto attacks rolling immediately. The Bear Form line shifts you in if you are not already in form, using [noform:1] as the guard so it does not waste a GCD when you are already a bear.
resetOnCombat means this step fires every time you enter a new pull. Steps 2 through 30 are the loop. Step 1 is only ever the opener and not part of the repeating rotation.
Thrash
Thrash fires first because it is the highest priority ability for Guardian damage and healing. It needs to land as early as possible in the pull and needs to refresh frequently throughout the loop. The [combat] guard on every combat spell in the sequence prevents the sequence from attempting Thrash out of combat during a pre-pull buffer and wasting the step. The [nomod:shift, nomod:ctrl] pair on the combat spells is what makes the modifier system work. Without those guards, pressing Shift for Frenzied Regeneration would also attempt to fire Thrash on the same step.
Incarnation + Mangle
Step 3 is the cooldown step. Incarnation fires immediately on the third press of the key, early enough to catch the initial Thrash tick buff and late enough that Bear Form is guaranteed from step 1. Notice that Incarnation uses [combat] only and not [nomod:shift, nomod:ctrl, combat]. This is intentional. Incarnation fires regardless of what modifier you are holding because you never want to accidentally skip it by holding Shift for a Frenzied Regen at the wrong moment. Mangle follows as the filler if Incarnation is on cooldown or already active.
Thrash
Thrash again. The pattern throughout this sequence is Thrash, Mangle, Thrash, Mangle with Ironfur and MOONSPAM interspersed at calculated intervals. Thrash appears 11 times across the 30-step loop, which is what produces the 47% damage done figure in logs.
Lunar Beam + Mangle
The first Lunar Beam weave. [known:Lunar Beam] is the conditional that makes this build-agnostic. If the talent is not taken, the line silently skips and Mangle fires instead. Lunar Beam appears at steps 5, 12, 19, and 26, which spaces it at roughly every 7 steps through the loop to align with its cooldown.
Ironfur (in-sequence)
The first in-sequence Ironfur cast. Ironfur appears at steps 7, 14, 21, and 28, every 7 steps, intentionally aligned with its duration so the buff refreshes before it falls off. This is what produces the 91 to 97% uptime in logs. The math only works if the sequence actually reaches these steps at the right pace, which is why hold-on-failure behavior matters so much for tank rotations specifically.
MOONSPAM: Moonfire delivery and Barkskin
This is the most important step in the sequence and the one that confuses people most when they first read it. MOONSPAM is a named external macro referenced by GRIP-EMS, not a regular step. The /castsequence fires Moonfire first, then Barkskin the next time this step is reached at step 22, then resets to Moonfire again. Barkskin's roughly 60 second cooldown means it fires naturally at roughly the right frequency when paired this way without needing any cooldown tracking. The critical design detail is that MOONSPAM cannot be replaced with a direct /cast Moonfire inside the sequence. GRIP-EMS does not advance cleanly off instant-cast steps when called directly. Moonfire would fire at 12 to 14 CPM instead of the intended roughly 1.3 CPM, flooding your rotation with Moonfire casts and collapsing Thrash frequency. The external macro reference is the mechanism that prevents this. The bare /cast Ironfur on the second line fires unconditionally as an extra Ironfur attempt on this step since Ironfur is off-GCD and does not cost a GCD to attempt.
To use this sequence you need to create the MOONSPAM macro first in WoW's regular macro editor with the castsequence line. Then in GRIP-EMS, click Add at the bottom of the steps list, select Macro from the dropdown, and pick MOONSPAM from the dialog that appears. It will show as [M] MOONSPAM in your sequence list. The name must match exactly.
Steps 9 through 30: the loop continues
Steps 9 through 30 repeat the same pattern established in steps 2 through 8: Thrash and Mangle alternating, Ironfur at steps 14, 21, and 28, Lunar Beam weaved at steps 12, 19, and 26, MOONSPAM at step 22, and a bare Ironfur at steps 15 and 30 without the nomod guards so it fires regardless of modifier state. Step 30 ends the loop and resets to step 2 on the next press.
The KeyPress field and what it is for
GRIP-EMS has a KeyPress field that fires on every single keypress regardless of where the sequence is in its step list. It is not a step in the rotation. It is a persistent header that runs before every step fires.
Modifier handling belongs here and only here. If you put [mod:shift] lines inside individual steps instead of in KeyPress, every step has to carry that conditional which eats into the 255-character step limit and reduces CPM across all abilities. Putting modifiers in KeyPress means a single line handles the modifier for every press and your steps stay clean.
There is a meaningful secondary benefit. When modifiers live in KeyPress, the Rotation Preview panel in the GRIP-EMS editor can display your actual spell names instead of showing only the raw conditional text. If your sequence preview shows /cast [mod:shift] instead of the spell name, the modifier is in the steps rather than in KeyPress.
The reset=target castsequence pattern
Some abilities should fire once on each new target rather than on a timer or as a rotation step. Hunter's Mark is the canonical example. You want it to apply when you engage a target, reapply when you switch targets, and not spam continuously on every keypress.
The correct pattern for this in GRIP-EMS is a castsequence with a target reset, placed in a step near the top of the loop:
This fires Hunter's Mark on the first press after you acquire a target, then advances the castsequence to null, which is a no-op. The sequence stays on null for every subsequent press against that target, so Hunter's Mark does not repeat. When you switch targets the castsequence resets to Hunter's Mark and fires again on the first press.
The [exists] conditional prevents the line from attempting to fire when you have no target. The [nochanneling] prevents it from interrupting a channel. Both guards are necessary for the pattern to work cleanly in M+ where target switching is frequent.
The same pattern works for any ability you want to fire once per target: Faerie Fire, Misdirection to a specific target, any debuff that should land on engage and reapply on target change. Swap Hunter's Mark for the ability name and the behavior is identical.
The decisions that matter
Why Sequential and not Priority
Priority would always try Thrash first on every keypress, which sounds efficient but produces a different problem. Mangle, Ironfur, and Lunar Beam would only fire when Thrash is on cooldown, which means your Ironfur uptime becomes dependent on Thrash cooldown math rather than the structured cycling the sequence enforces. Sequential gives you predictable step positions and predictable uptime.
Why [combat] on every spell
Without [combat] guards, spam-pressing the key before a pull would advance the sequence through multiple steps before combat starts, meaning you would enter the fight at step 4 or 5 instead of step 1. The opener only fires correctly if the sequence is at step 1 when the first combat spell lands.
Why Thrash at 11 of 30 steps
Thrash is both the primary damage source and the primary self-healing source for Guardian Druid running Soul of the Forest. More Thrash means more healing. The sequence is built around maximizing Thrash frequency while still fitting Ironfur cycling and the mandatory cooldowns. 11 steps out of 30 is the result of that tradeoff after log validation.
Why Ironfur every 7 steps
Ironfur's base duration is 7 seconds and the sequence runs at roughly one step per GCD at 150ms. Placing Ironfur at every 7th step means a new Ironfur cast lands approximately when the previous one expires. This is the mechanism behind the 91 to 97% uptime. If you remove Ironfur steps or change their spacing, uptime drops and it shows immediately in logs.