Ok--I've been playing with this and wanted to write up a post with what I've tested and works so far. Looking for any input for improvements!
My goal was to set up priority-based rotations where each spell is self-contained and handles its own cooldown. It's all based on the work of firescue17 and Skarling discuss above, but not as in-depth as what firescue17 is up to. It also builds on ideas from Lax in
this thread. To repeat,
not my concepts here: just put into a more portable form I can understand.
You need to be a fast button masher for this to work. In some rotations, it helps to set "execute a step when the Hotkey is pressed or released."
The general idea is you let ISBoxer do very little on the automatic advancement of steps by itself—you manually control the state of each mapped key using timers and actions:
• First, you set up some mapped keys to allow controlled downtime;
• then you set up mapped keys for each self-contained ability and its cooldown;
• and finally you put them all together in rotation mapped keys—the "calling rotations."
We put the higher priority spells as the first steps and a mapped key representing a default, no-cooldown ability at the bottom. This will fire off if everything else is on cooldown. Each key press "steps through" until it hits a valid spell to cast. If you press quickly, it simulates a true fall through where the unused/on cooldown steps don't impact your rotation.
Here's how each part gets built.
Disable Combat Mapped Keys:
Each character's keymap needs to have a few "Disable Combat" mapped keys, each with its own duration. I typically have four: one each for 1, 2, 3 seconds and an additional for the Global Cooldown (GCD). If a character has any channeled spells, you'll need one for the length of the channel as well. Each of these has 1 step with 2 actions:
• Action 1 turns combat keymap off (Virtual Combat Keymap most likely) for self
• Action 2 turns combat keymap on for self with a timer (this one timer is shared among all the Disable Combat mapped keys) set for the appropriate amount of time.
Here, for example, is the set up for the "Two Second" disabled keys for my Rift character "Ozy":
Name: Disable Combat 2 seconds
Advanced: Reset timer options unchecked
Step 1: Do not advance options unchecked
Action 1: RIFT Virtual Combat Key Map ‘Off' -> self. No timer
Action 2: RIFT Virtual Combat Key Map ‘On' -> self. Timer: "T: Ozy Combat Timer" Max Timers in Group: 1, Delay 2.0 seconds.
Ability Mapped Keys:Once the Disable mapped keys are created, you can go on to create a mapped key for each character ability (I call all abilities "spells" here.) How you set up the spell depends on the spell type.
Duration between use (cooldown) spell, typical setup:Each of these mapped key has 2 steps. In both steps "Do not advance to the next step" is checked.
The first step does the work. There are 4 actions:
• Action 1 hits the actual key press (or calls the mapped key for the key press if you keep your bindings somewhere else; I've had some strange results when using keybind mapped keys--I think it's related to the level of nested mapped keys--so I usually just enter a straight keystroke action).
• Action 2 calls the Disable Combat mapped key for appropriate length of time to allow for cast times or GCDs.
• Action 3 sets a timer for this mapped key to reset itself to Step 1 after the proper duration--you may want to add a second or two for lag.
• Action 4 sets this mapped key to Step 2 (no timer).
The second step does nothing. I call it "Park" and it has no actions, it is just set "Do not advance to the next step." This is the state the mapped key stays in while it is ticking away for its duration. (You could probably do the same thing by using the mapped key "state" action to turn the mapped key off, but I started by using the "Park" step so I could do debugging--put in a Popup text so I knew when it hit--and it stuck.)
Here's an example of a mapped key for a 20-second "Motif of Bravery" spell that bards use in Rift (character's name is "Ozy"):

Name: Spell Motif of Bravery
Advanced: Reset timer options unchecked
Step 1: Do not advance to the next step: checked. Name "Motif of Bravery 20s"
Action 1: Keystroke Alt+Num+1 -> self
Action 2: Do Key Map Disable Combat GCD -> self
Action 3: New Mapped Key Step Action:
Self (Window: Current)
Mapped Key "Spell Motif of Bravery"
Step Adjustment: Set to step 1
Timer Group: T:Ozy: Motif of Bravery, Delay 20 or 21 seconds, Max Timers in Group: 1, Auto-recurring unchecked.
Action 4: New Mapped Key Step Action:
Self (Window: Current)
Mapped Key "Spell Motif of Bravery"
Step Adjustment: Set to step 2
Timer: None
Step 2: Do not advance to the next step: checked. Name: "Park"
Actions: Blank.
Notes: Each character/ability mapped key has its own timer, max members in the timer group is 1. You can't have multiple mapped keys in your config messing with the same timer (with the exception of the disabled combat keys timer, because that will only be called serially).
Let's analyze what happens when this mapped key gets executed. Action 1 hits the actual key press. Action 2 turns off the keymap for a few seconds while the global cooldown (GCD) is passing: it's best not to trust the "advance to next step" timers here. (Again, this is straight from firescue17's stuff!) Action 3 fires up a timer that is specific to this character and this ability. It sets it up so that in 20 seconds, this mapped key will reset to step 1. Action 4 puts this keymap into its step 2—its "parked" position—where it will stay no matter what hits it until the timer we just created brings it back to step 1.
Variations on the duration/cooldown mapped key:Sometimes abilities are either/or. For example, in Rift, my rogue can have either Necrotic Core or Curative Core up, but not both at the same time. Haven't played WoW in a while, but I seem to remember Shaman totems also were limited.
In this case, you can add additional actions in the "Spell Necrotic Core" mapped key Step 1 to "Park" and "Unpark" the other ability:
Action 5: New Mapped Key Step Action:
Self (Window: Current)
Mapped Key "Curative Core"
Step Adjustment: Set to step 1
Timer Group: T:Ozy: Curative Core, Delay (Necrotic Core's cooldown X 2) seconds, Max Timers in Group: 1, Auto-recurring unchecked.
Action 6: New Mapped Key Step Action:
Self (Window: Current)
Mapped Key "Curative Core"
Step Adjustment: Set to step 2
Timer: None
We set the duration on Curative Core's timer to double Necrotic Core's so there is no way it can be off cooldown when Necrotic Core's comes up. Of course, we do the reverse with Curative Core's mapped key. The drawback is if we want to swap cores, we do need to wait for that extra cooldown to pass—in Rift, that's 15 seconds. In this particular example, Necrotic Core is part of my DPS rotation, whereas Curative Core is in my Healing Rotation. When I call for healing, my rogue helps out by throwing down his Curative Core and then goes on to his DPS rotation. Since Curative Core is already up, the Necrotic Core step in DPS is skipped.
No cooldown/duration or channeled spell setup:These we set up in a pretty standard way. Just 1 step with 2 actions. No timers required.
• Action 1 hits the actual key press
• Action 2 calls the Disable Combat mapped key for appropriate length of time to allow for cast times, GCDs, or channels.
In this case we also set up the step to not advance for at least X seconds and only fire once.

As we'll see, these mapped keys would need to be fall-through/default spells, at the bottom of the calling rotation.
Builder/Finisher Spell setup:One of the benefits of this modular rotation set up is that associated spells can be grouped together in their own mapped key—into essentially "sub-rotations." In the case of builder and finisher spells (where you do X builder casts to accumulate points and then 1 finisher cast to use them up), you can put all of those together and let the steps keep count for you—as in a normal, non-prioritized rotation. In our case, we just make sure this is the last mapped key in our "calling rotation," after all the cooldown-type spells created above.
My rogue has a builder called "Empyrean Bolt" and a finisher called "Empyrean Ray." Each bolt gives us a point and a full finisher will use 5 points. To track this, we simply have a 6-step mapped key. The first five steps cast the builder spell and the last hits the finisher. So, the mapped key setup:

Name: Spell Empyrean Bolt Bldr Empyrean Ray Fnsh (ST)
Advanced: Reset timer options unchecked
Step 1: Do not advance to the next step for at least 1.0 seconds (Rogue has a 1-second GCD) and only trigger once. Name "Empyrean Bolt Bldr."
Action 1: Keystroke Ctrl+Num+- -> self
Steps 2-5: Same as Step 1
Step 6: Do not advance to the next step for at least 2.0 seconds and only trigger once. Name "Empyrean Ray ST Fnsh."
Action 1: Keystroke Ctrl+Num+9 -> self
Builder/Finisher setups could have a post all to themselves. The example here is the simplest. There are tweaks we could make since there can be many types of builders and finishers, and each themselves can have cooldowns and priorities.
What I have also done is set up the following mapped keys:
Mapped Key Spell Builder
Mapped Key Spell Finisher
Mapped Key Spell Builder Finisher
Spell Builder is its own priority rotation (since some of my builders have cooldowns) and so is Spell Finisher. Spell "Builder Finisher" calls Spell Builder 5 times, then has 3 fall-through do nothing steps, then calls Spell Finisher. Also, some builders contribute more than 1 point. In those cases, I have that builder's mapped key advance the steps appropriately on the Builder Finisher mapped key (that's why I have the extra fallthrough steps there. These are blank steps with no hindrance to advancement--see "calling rotations"). I can elaborate on this setup if there is any interest.
Calling Rotations:The Calling Rotations are the usual mapped keys like "DPS Rotation," "Pull Rotation," and "Heal Rotation." These call the ability mapped keys we created above. The key to making this all work is the advancement settings (or lack thereof) that we set in these steps. We take advantage of the fact each Hotkey we send to ISBoxer continues through steps until it finds either a step that has some sort of option set not to advance, or it finds something it needs to do in game. So for each step in a calling rotation we leave all the "Do not advance" checkboxes blank and we allow the mapped keys themselves to handle pauses. As it goes through the steps, any ability mapped key that is "Parked" because of our cooldown timers will be bypassed, and it will act on the first one that has been moved back out of its parked position by our timers.
At the bottom of each of these rotations there needs to be one and only one mapped key that is guaranteed to fire off—that has no cooldown. This would normally be a spam, builder/finisher, or channeled (with no cooldown) mapped key.
For the advanced options on this Calling Rotation mapped key, we do set "Reset to Step 1 after X seconds from the last Hotkey press," so after a fight the rotations will reset.
DPS/Heal Rotations:These we build just as explained above. Here's a simple example from my rogue:

Name: 04: DPS Rotation
Advanced: Reset to Step 1 after 4 seconds from the last Hotkey press
Step 1: All "Do not advance" options unchecked.
Action 1: Do Spell Motif of Bravery in RIFT Rogue Ozy Key Map -> self
Step 2: All "Do not advance" options unchecked.
Action 1: Do Spell Empowered Shot in RIFT Rogue Ozy Key Map -> self
Step 3: All "Do not advance" options unchecked.
Action 1: Do Spell Empyrean Bolt Bldr Empyrean Ray Fnsh (ST) in RIFT Rogue Ozy Key Map -> self
Rotation Step-by-stepLet's go through a series of Hotkey presses. First, ISBoxer tries to do the Spell Motif of Bravery mapped key. If that hasn't triggered, it does so (and the Spell Motif of Bravery mapped key starts its cooldown timer and "parks"). Now ISBoxer has moved onto step 2 and it waits for the next Hotkey press.
Next press, it is sitting at step 2 so it tries the "Spell Empowered Shot" mapped key. That's not on cooldown, so it fires off Empowered Shot and starts its cooldown. ISBoxer moves onto step 3 and waits.
Next press, it is sitting at step 3, "Spell Empyrean Bolt Bldr Empyrean Ray Fnsh." This is the default—it will always find something to do here. So it fires off the first builder step in that mapped key and now it's sitting at the top of the rotation again, at Step 1.
Next press, it tries to do the first step, Spell Motif of Bravery. But that's parked and on cooldown still—ISBoxer finds no action to do, so next keypress (very quick) it falls through to step 2, but "Spell Empowered Shot" is also parked on cooldowns, so again it falls through to "Spell Empyrean Bolt Bldr Empyrean Ray Fnsh" again. Here it finds work, so it fires off the second builder step and goes back to top of the rotation again, at Step 1.
This continues. Eventually one of the other keys comes off cooldown and gets hit first.
Pull Rotations (Do some spells and then settle into a normal rotation):In my pull rotations I usually do some stuff first and then go onto the DPS rotation. I want the initial steps only to fire once for each pull, so we change things up a bit. It's easiest to explain by example.
Name: 01: Pull
Advanced: Reset to Step 1 after 5 seconds from the last Hotkey press
Step 1: Do not advance to the next step for at least 1.5 seconds and only trigger once. Name "Nop" (short for "No Operation").
Action 1: None
Step 2: All "Do not advance" options unchecked.
Action 1: Do Spell Restorative Engine On in RIFT Rogue Ozy Key Map -> self
Step 3: "Do not advance" to the next step is checked.
Action 1: Do 04: DPS Rotation in RIFT Rogue Ozy Key Map -> self
To walk through this one: In a pull, I like my DPS to sit tight for a bit while the tank starts things off, so I create an empty step with "Do not advance for 1.5 seconds" at the top. First Hotkey press hits this and waits—meanwhile the same press over in my tank's Pull rotation is starting some trouble. Second key press hits the Restorative Engine to make sure that's on (it's a "turn it on if it's off" macro being called in game). Then on the third press we get to the DPS—we simply pass the action over to the DPS Rotation mapped key explained above, but we set this option to not advance. We don't want to wrap around to Nop or Restorative Engine again. We rely on the "Reset to Step 1 after 5 seconds from the last Hotkey press" to bring us up to the top and get us ready for the next pull.
Conclusion:There are many more permutations of rotations you could do, depending on what you're trying to accomplish. The goal here is it doesn't matter what rotation you use or where you call a spell from—if you change from your DPS rotation to your Panic rotation hotkeys mid-fight—when you call the mapped key for a spell it won't fire if it's been used from anywhere else and is still cooling down. It will just go onto the next active spell.
A few notes/caveats:
• Of course, ISBoxer has no way to know if an ability misses or is resisted somehow. This assumes 100% effectiveness. If something misses, ISBoxer will still put it on cooldown. You'll need to wait until the ISBoxer-tracked cooldown comes around before it is tried again.
• I have totally ignored in-game macroing capabilities here. Depending on what you're playing, many of these timers might not be needed.
• In the end, I use this only on rotations that require it. There is a level of complexity here that isn't always needed. A lot of rotations are really best served in the "classic" method: do this spell, then do that spell, then do the third spell, using the normal "do not advance" settings.
• Also, this is not 100% priority based. There are cases where the "default" spell in a rotation will fire before a spell that's just come off cooldown--but that should only be one hit and relatively rare.
• I haven't touched on the "Stance" work that firescue17 and Skarling have done (different rotations for differing levels of difficulty of mobs). That could all be set up to add into this.
• And finally, I am still pretty new to this. If all that is described above is old hat in the community,
!
Any suggestions would be welcome!