Fair Warning: This post will contain formulas, although I'll do my best to keep it simple. If you are allergic or if you already know the topic, feel free to skip it.
Think of haste as increasing the number of casts you can cast in a certain time. In other words: If you could cast X spells before in a fight, then 20% haste should let you cast 1.2*X spells in the same time.
This isn't exact - spells can run into the GCD (especially for moonkins), some spells have cooldowns or static durations (so you really can't cast more of them, but instead get more of other spells) and there are also queuing issues with instant spells. But as a general idea, you need to think of haste working this way.
Keep in mind that while haste does reduce cast time, it isn't a straight reduction - 20% haste doesn't mean taking 20% off of a 3 second cast, for example.
Calculating Cast Time
This is the current formula for cast time:
Final Cast Time = (Base Cast Time) / ((1 + haste1)*(1 + haste2)*...*(1 + hasteN))I posted that first because I'm going to refer back to it, but let's start with a simpler example to get the basic idea. Don't worry if you don't understand the formula at this point.
Let's say you only have one source of haste: Nature's Grace, which is 20% haste. And you want to calculate the cast time of your Starfire when Nature's Grace is procced. Then the formula is:
Final Cast Time = (Base Cast Time) / ((1 + haste1)*(1 + haste2)*...*(1 + hasteN))Note that I use .2 instead of 20% - they mean the same thing, but .2 makes more sense if you are plugging this into a calculator or other tool. With only one source of haste it's pretty simple - you just take the cast time and divide. Now take the above example and we'll add in Celestial Focus (3% haste) and Improved Moonkin Form (3% haste).
Final Cast Time = (3) / (1 + .2)
Final Cast Time = 2.5
Final Cast Time = (Base Cast Time) / ((1 + haste1)*(1 + haste2)*...*(1 + hasteN))What happens is that every source of haste you have is multiplied together. Instead of being additive like crit (where 5% from talents + 5% from gear = 10%), we actually get a little extra - 20%, 3% and 3% ends up being the same as 27.308% haste.
Final Cast Time = (3) / ((1 + .2)*(1 + .03)*(1 + .03))
Final Cast Time = (3) / (1.27308)
Final Cast Time = ~2.36
So now, looking back at the original base formula:
Final Cast Time = (Base Cast Time) / ((1 + haste1)*(1 + haste2)*...*(1 + hasteN))
- Base Cast Time - this is the base cast time of the spell before any haste effects, but after talents like Starlight Wrath. The base cast time on Starfire is 3 seconds - the base cast time on Wrath is 1.5 seconds.
- haste1/haste2/hasteN - these are placeholders for a variable number of haste effects - you could have two, three, four, or even more depending on raid buffs and talents. In general every distinct source of haste should be separate and multiplied - each individual talent or buff, and then your haste rating as it's own category (note that this includes haste from stuff like Potion of Speed or haste food as well as haste rating on gear).
My Haste Buffs:
3% from Celestial Focus
3% from Improved Moonkin Form
20% from Nature's Grace (procced with Starfall)
17.17% haste from gear
Final Cast Time = (Base Cast Time) / ((1 + haste1)*(1 + haste2)*...*(1 + hasteN))And now in-game:
Final Cast Time = (10) / ((1 + .03)*(1 + .03)*(1 + .2)*(1 + .1717))
Final Cast Time = (10) / (1.491667836)
Final Cast Time = 6.7
6.7 seconds, on the dot.