[Request] Guide to making extended macros

Hi everyone! I’m new to this site, and extended macros, and would really love it if someone or a group of people would put together a comprehensive guide to new users who want to learn the tricks of making extended macros. I’ve tried making a few myself, and things get locked up, generally… so I’m doing something wrong. What kind of things does one need to check for to know if abilities will work well in a macro or if they are better not in a macro? When do we know to use /castsequence or just /cast? Etc etc… If anyone is willing to do this, I’m excited to read it! Thanks!

I’m guessing someone either pointed him in the right direction for a guide, or making these things is an ancient Chinese secret? If it’s the former, would you mind pointing me toward that guide?

I’ve tried making these from scratch and altering other user’s macros, and the abilities seem to fire off almost randomly sometimes with no explanation as to why it sometimes skips abilities that I have runes (or rune power) to be able to use right when the macro should have been hitting that ability.

I’d like to see a narrative of a large macro myself. Using this Ret Pally example:

#showtooltip
/castsequence reset=combat/5 !Seal of Truth, null
/castsequence reset=0.7 0,0,0,0,0,Execution Sentence
/castsequence reset=0.7 0,0,0,0,Exorcism
/castsequence reset=0.7 0,0,0,Crusader Strike
/castsequence reset=0.7 0,0,Hammer of Wrath
/castsequence reset=0.7 0,Templar's Verdict
/castsequence reset=combat/40 Inquisition, Sacred Shield, Judgment, Judgment, Judgment, Judgment, Judgment, Judgment
/cast hammer of wrath
/cast Avenging Wrath
/cast Guardian of Ancient Kings
/startattack

Is the reset timer counting the time between actual physical key presses or is it only counting in-game, off GCD, castsequence attempts?

Why tie the reset to the communication delay?

If I set reset=0.7 for my 70ms latency and I’m spamming the button at .25 sec between presses, what is happening in the macro?

Should I slow my keypresses to .7 sec per press,stay at .25 or try to go faster?

In the above macro, the last sequence is set to reset at 40 seconds. I’m not planning on waiting 40 seconds between key presses to reset the sequence any time soon. What’s the 40 there for? In case I have to suddenly bio? Or is it actually getting reset at 40 no matter what?

I’ll see if I can make one soon. Might not be ready for a while, and seeing Blizzard is changing spells in the next expansion, writing a guide that is going to be changed in a few months might not be the best idea currently.

Though I can promise a guide should be available from me or others when the next expansion comes out.

Looking forward to it. In the meantime, would you be able to answer some of the questions to get me going in the right direction?

In addition to the questions above I did some more reading and I think, as I understand it, the entire macro fires at once with all lines of code being attempted per button press, instead of the older method that kept trying one line until it worked. Is that accurate?

I’m also reading conflicting information; that the code is executed from the bottom up or from the top down. Do you know?

Regarding resetting and the stair-stepped zeros, does the macro just keep iterating the sequences until it finds something to cast, all on the same button press? That’s almost like internal automation, but that’s the only way I can think of to execute a priority on each press.

I’m still not sure what affect the reset timer is having on manual spamming. Why time it to latency if you want it to reset every button push anyway? Why not just reset=.01 every time?

Lots of questions, but lots of variables to nail down.

Thanks!

I’ll get you some answers now, and I’ll reply to the other ones when I get home.

The code is executed from both top and down. It depends on many leading zeros you have in the code.

For example if you have

/castsequence reset=0.5 0,0,0,Cobra Shot
/castsequence reset=0.5 0,0,Arcane Shot

Cobra Shot has the higher priority because it has the most 0’s. Though because it has the most 0’s sometimes it won’t fire off due to a internal cooldown / external cooldown.

/castsequence reset=0.5 0,0,0,Explosive Shot
/castsequence reset=0.5 0,0,Arcane Shot

Because Explosive Shot has a cooldown attached to it then Arcane Shot has the next priority.

Here is the thing though, if you go from down to up it works the same way.

/castsequence reset=0.5 0,0,Cobra Shot
/castsequence reset=0.5 0,0,0,Arcane Shot

Now Arcane Shot has the priority because it has more leading zeros.

So in general, that is how the leading zero technique works. You want to make sure the proc or spell that is mostly used or has the highest damage needs to be the priority.

As for time, 0.7 is based upon your world latency not your home latency. .7 = 70 ms of world latency. .9 = 90 ms but don’t go higher than .9 as your creating a conflict with your reset sequence. I set the average to .5 then it works a little difference.