Let's start with what's normally called the "rotation". Rotation is kind of mis-named, since after the initial casting of each DoT, you'll pretty much never cast them all in the same order again, due to the fact most of them have different durations.
If you can pre-cast, you should start with a shadowbolt, and then haunt. Now, many people often ask why you would do this, and some people are even under the misconception that casting haunt after your DoTs is somehow more efficient. Think about it this way: Haunt should have 100% uptime for the entire fight. And since DoTs receive the bonus no matter when the debuff went up (before the DoT was cast, after the DoT was cast, makes no difference), it only matters that the debuff is up. So, why would you cast DoTs first, and have the first several ticks not get any benefit from Haunt? If you're going to have Haunt up the entire fight anyways, wouldn't it be better to have ALL ticks benefit from Haunt? Of course. The same goes for shadow embrace. The first stack is put on by that shadowbolt, and the second stack by Haunt.
So, your intial cast rotation will look like this:
Shadowbolt > Haunt > UA > Immolate > CoA > Corruption > Siphon Life. After that, you're now into what is called "filler" time. If your raid does NOT have a moonkin druid or unholy death knight, you will use CoE for your curse instead.
If you cannot pre-cast, then start with instant cast DoTs such as CoA, Siphon Life, and Corruption. Getting these up as you move into position will start your dps up sooner.
From this point on, your goal is to refresh DoTs as efficiently and quickly as possible. I HIGHLY recommend Asheyla's DoTimer. It is a truly epic mod, and the best mod any warlock can have. You can get it here: Download DoTimer 4.1
The goal is to refresh a DoT the very moment the last tick expires. For DoT's with cast times, this is done by starting to re-cast the DoT when the amount of time it has left is just slightly less than the DoTs cast time. For example. If your Unstable Affliction has a 1.5 second cast time, you start to cast a new UA when the current one has 1.4 seconds left on the timer. Now, being realistic, obviously it's rare that this will happen. The reason for that is you do NOT want to stand around doing nothing just because you're waiting for that timer to hit 1.4 seconds. It is better to do something, whether that's casting a shadowbolt or using dark pact / life tap. Even if it means you will be a bit "late" refreshing the DoT.
Generally, you do not want to "clip" a DoT. This means refreshing the DoT before the previous one had its last tick of damage go off. And since Corruption is automatically refreshed by Haunt via Everlasting Affliction, you never have to worry about corruption.
Next, there is a reason we cast UA and Immolate together. They both have a 15 second duration, therefore every successive refreshing of these 2 DoTs will always be UA and then Immolate immediately following. You can essentially think of them as just one dot with a 3 second cast time.
And finally, since haunt has a 12 second duration, and you start with Haunt, then UA, and immolate, eventually haunt will work its way around and end up right after you refresh UA and Immolate. When this happens, on the very next "refresh", refresh Haunt early, allowing you to reset the rotation back to Haunt, then UA, then Immolate. So for example, with about 2.9 seconds left on UA's duration, cast Haunt. This brings you to 1.4 seconds left on UA's duration, so you immediately follow Haunt with UA, and then of course immediately again with Immolate.
Oh one last thing. NEVER interrupt a spell cast mid-cast just so you can cast something else. You want to try and avoid that whenever possible.
Now that you have the basics of DoT casting order, rotations, etc, let's work on applying that, practicing, and seeing results for yourself.
To start, a quick explination of WWS (wow web stats). WWS is an online DPS parser. It takes a combat log you record in game, and allows you to see the information in a very useful and detailed format. To create a WWS report:
- Before you start WoW, browse to C:\Program Files\World of Warcraft\Interface\Logs. If you have a file called "wowcombatlog.txt", delete it!
- Now, in game, before you start whatever it is you want to log, hit enter in your chat window and type: /combatlog (this will get wow recording your combat log parse)
- After you are done with everything you want to record, go to http://wowwebstats.com/
- Click on "Start WWS Client" (note, you may have to quickly sign up for a free account)
- Click on "Add Combat Log" and browse to C:\Program Files\World of Warcraft\Interface\Logs, and add wowcombatlog.txt.
- Click on "Host Report". You will now see a WWS report of your combat log!
Now, let's figure out what my DoT uptime was. To start, we need to know what the total combat length of the boss fight was in seconds. At the top you see the date, time, and length of fight in minutes/seconds. The fight was 2 minutes and 39 seconds long. So, that's 159 seconds.
Next, to figure out DoT uptime, we need to determine what 100% uptime would be for each DoT. This is done by taking the length of the fight and dividing it by the interval of a DoTs ticking. For example, corupption, UA, siphon life, and immolate all tick every 3 seconds. 159 / 3 = 53. So, if I had 53 ticks of each of those DoTs, that would be 100% uptime. To see how many times your DoTs ticked, look under each spell, and look under the column that says "Dots".
I had as follows:
-Corruption: 48 ticks
-UA: 42 ticks
-Immolate: 39 ticks
-Siphon Life: 46 ticks
As you can see, in that fight my UA and Immolate uptime was not quite up to speed. Also, remember that 100% uptime is NOT realistic. Especially if the mechanics of the fight stress execution over DPS via moving around, doing other things, etc.
For CoA, which ticks every 2 seconds, that would be 159 / 2 = 79 (round down). I had 68 ticks, so that's not too bad. To determine uptime, take the number of ticks you had and divide it by the number of ticks you would have had with 100% uptime. So, for CoA: 68/79 = .86 or, 86% uptime. 85% uptime is a realistic goal in a stand-up tank and spank single target fight.
Lastly, I am posting a video of the above Brutallus fight. This will give you a chance to see all of the above in action. Note the video has NO sound, no music, and no editing or any of that jazz. In the video, take not of my DoTimer in the upper right corner. I will add another video later of a test dummy fight, so you have a chance to see a bit more detail of what's going on. Remember: efficient use of GCD's, keeping DoTs refreshed, and ALWAYS be casting something!
Practicing tips: If you're struggling with DoT uptime, start by simplifying the rotations by temporarily dropping a DoT. Drop siphon life and CoA. Then, practice, and get that rotation down and working. Then, add in Curse of Doom. Practice more! Then, add in Siphon life. Practice practice practice. Now finally, replace Curse of Doom with Curse of Agony again.