If you are looking for basics on Gnome Sequencer Enhanced (GSE) visit this thread. You are going to be hopelessly lost if you do not know what keypress and sequence are for GSE.
This post shows what my affliction warlock macro is, and in the process of creating it, I think I learned a lot of general principles which may translate to you guys if you wish to make your own or improve upon them.
The macro works for a 32x2xx(1or2) Warlock spec. That means you can use whatever yu like on tier 3, 5 and 6, but need to pick talent 1 or 2 from tier 7. You want deathbolt, perma corruption, and phantom singularity.
The macro when mashed should
- keep the target loaded up with agony and corruption
- do a fair job of keeping haunt on target if specced
- keep one stack of UA on the target
- use deathbolt and phantom singularity on cooldown
I started with a basic macro from DM_Steel and improved it. Maybe some OTG coders here can help me improve it even more.
The macro uses a sequential step function, and should have all of the items toggled off, as you want to pop your trinkets for burst with Darkglare. Here are the keypress and sequence sections
KeyPress
/targetenemy [noharm][dead]
/castsequence reset=target/3 Agony, Corruption, null
/petattack
/petdefensive
Discussion of Keypress- this section executes each keypress. Here it will target an enemy if you have no target or your target is dead. It sends your pet out to attack and puts it in defensive stance. Note I use a mount macro with /petpassive to call back my pets. If I am in combat I will not mount, but it will call back the pet. The big breakthrough for me is the castsequence line. What it does with this null command is execute the sequence one time per target. This is how you apply agony and corruption just once and not have it spam in the GSE macro. I left in the reset=3/tar. I have heard these do not work in GSE, but if it does, if you do not hit the key by 3s, it will go to the top of the order, or if you change targets it will go to the top of the order, so if you tab it should apply agony and corruption again. I think it will apply corruption to a tabbed target that has corruption on it from seed, and this is a bit of a waste, but it is unavoidable.
Sequence
/cast Phantom Singularity
/cast [talent:6/2] Haunt
/castsequence Unstable Affliction, Unstable Affliction
/cast Deathbolt
/castsequence reset=target/3 Shadow Bolt, Shadow Bolt
/castsequence reset=target/3 Agony, Shadow Bolt
Discussion of the Sequence- by putting in the square bracket [talent:6:2] this macro will only cast Haunt if you have that talent specified. So you can switch between Grimoire of Sacrifice for raids or Haunt for solo and not have to rewrite the macro. When you hit this macro it should generate the following spell pattern from a cold start
A-PS-C-UA-D-S-A-UA-S-S then UA-S-A-UA-S-S
Where A=Agony, PS=Phantom Singularity, C=Corruption, UA=Unstable Affliction, D=Deathbolt, S= Shadow Bolt. This is because it does one from Keypress, then one from Sequence for each press. So it will lay down agony and corruption 1x, then basically rotate through the sequence until you switch targets. So what I did was then construct a timing diagram with zero haste. This forum will take out my tab delimiters, so the format per line is (time at which spell completes)(spell that completed)(remaining duration of DoTs). So 1.5 A A=18 means that at 1.5s your agony gcd is up and it is on target with a=18s left of duration.
1.5 A A=18
3 PS A=16.5, PS=16
4.5 C A=15, PS=14.5
6 UA A=13.5, PS=13, UA=8
7.5 D A=12, PS=11.5, UA=6.5
9.5 S A=10, PS=9.5, UA=4.5
11 A A=18, PS=8, UA=3.5 note A refreshes after 9.5s
12.5 UA A=16.5, PS=6.5, UA=8
14.5 S A=14.5, PS=4.5, UA=6
16.5 S A=12.5, PS=2.5, UA=4, worst case UA refreshes 6.5s
18 UA A=11, PS=1, UA=8
20 S A=9, PS=done, UA=6
21.5 A A=18, UA=5.5
23 UA A=16.5, UA=8
25 S A=14.5, UA=6
27 S A=12.5, UA=4
Now with Haunt
A-PS-C-H-UA-D-S-A-UA-S-S-UA-S-A
So I had a few concerns here. First is I do not have to worry about corruption, with perma corruption one application on, and it never comes off. Were I to try to do this for Siphon Life, I would have to add in a refresh for corruption in the main sequence, which would complicate the macro.
Now note that there are several cast sequences in here. This is a trick you use to generate a pattern of spells, and I had to modify DM_Steel’s macro to not cast UA so much and deal with refresh on Agony better. You will see that Agony gets refreshed within sequence on the 3rd cast sequence. Worst case seems to be it gets refreshed after 10s or so, and since it is 18s normally, and drops to around 15s if you take Creeping death, even if you stick a few other actions in manually, you should always have agony on target.
UA is tighter. The basic pattern I have here is either two shadowbolts or a shadow bolt and agony refresh between UAs. Worst case is 2 shadow bolts, which means the UA refreshes after 5.5s with no haste. UA normally lasts 8s, but if you take Creeping Death, it completes after 5.8s, so this just barely makes refresh and might fall off. Note that UA might fall off after you deathbolt, but then the pattern goes into full swing again.
So from a basic GSE design standpoint, the take aways are
- Anything that you want to apply 1x, you can use in a cast sequence with null
- Multiple cast sequences are the way to generate patterns.
- You can make macros talent spec insensitive by adding talent conditionals to casts like I did with Haunt. Note I could probably do the same by putting in conditionals on PS and D as well.
- You can brute force try a sequence, then lay out the key pattern and figure out the rough timing of things, and see if things drop off or not.
- Once you have this ironed out, it is probably time to hit the target dummy and see if it works or hangs.
Now on the general idea of whether or not it generates optimal DPS. The short answer is no. If you were super twitch and could hit everything just right, you would hold off on refreshing agony until that optimal spot where it would increase the duration beyond the maximum. Also it might make sense to time UA better for Deathbolt.
But if juggling all of these timers is a huge headache and you want ot automash something and get something closer to max, this is the way to go.
Also this is mash macro. You mash it when you are not doing anything else. So if you see Deathbolt coming off of CD, odds are you want to stop mashing and load up the big ugly with a lot of UAs so that deathbolt hits like a truck. Or if you need to heal your pet, or drain life to heal yourself, you will stop mashing this macro. Or if you are about to burst in a window on a boss you will need to hit your burst items and stop mashing this. The mash macro is a supplement meant to do the basic mundane rotation and reduce the amount of brain power devoted to maintaining your base rotation so you can do things like look at the battlefield and see that huge overhead smash coming. Some very skilled people can either through lots of repetition or youth just mash everything and follow the battlefield at the same time, but as I get older, I find usually my DPS drops if there is a lot of boss mechanics, or I die if I hyperfocus on my rotation during boss mechanics. With a masher, you can just mindlessly mash and get something halfway decent out while you do the boss mechanic.
My hope here by posting this is to give you guys a real example of how to go and improve a GSE macro someone posted on LazyMacros for your spec.