EventHorizon Continued

Hey All! Version 1.9.6 adds my best guess for all of the class configs. As I play very few specs actively, I'd like to ask for help from the community of players who use EventHorizon with ensuring the class configs are as they should be!
-Brusalk (Kilrogg-US)

EventHorizon is now updated and working for 5.4. Just download the most recent version and you should be good to go! (1.9.5)

If you have and comments, concerns, questions, suggestions, anything, don't hesitate to contact me either through comments here or via mail or whisper in game.

If you feel that the class config for your class is not up to snuff then please let me know why and update it yourself!

There is now a how-to on class configuration below!

There is also a how-to on customization of how EH looks below as well. Check it out!

Please be aware that I'm rewriting this addon from scratch to be released officially soon (tm). Addon development has had to take a backseat to real life for the past few months though I've been working on it as much as I can. (Also, coming in the rewrite is an in-game configuration menu as well as the ability to alter class-configs in-game to make it easier to customize EH.)

If you have a few extra bucks this month and you like all my work, consider chipping in

What does EventHorizon do?

EventHorizon displays all of your class/spec's rotational abilities on a common time scale. This means that instead of seeing a regular percentage-based timer bar, EH shows you exactly what is happening in relation to everything else. If that sounds complicated at all, just look at the screenshots.
The basic idea: An ability that lasts 12 seconds and has 6 seconds remaining shouldn't look exactly the same as one that lasts 5 minutes and has 2.5 minutes remaining.

Also, for instant gratification, here's a quick snippet showing a Shadow Priest's rotation at 1 frame per second, using an older layout:

The big white line is the current time. Future events are on the right side, past events on the left. As time goes by, the events scroll from right to left.

The green bars are your cast bars. They use exactly the same times that your normal cast bar would display, with all haste modifiers applied.

You can also see cooldowns, DoTs, and their ticks (predicted in the future, and from the combat log in the past). EventHorizon is extremely intelligent when dealing with most things DoT/HoT-related.

The white lines that appear before the cast times are the times when you press the button (send the cast message to the server). The difference between this line and the start of the cast is your lag.

How do I set it up?
EventHorizon does not include an in-game configuration UI. However, it really doesn't need one - Everything should "just work".

Power users and those wishing to theme EventHorizon for a specific UI, please read on to the advanced portion of this section. Don't worry, it's easier than it may seem.

The basics:
* The window may be moved via the drag-handle on the upper right frame corner. It may be a little hard to see at first, but will light up as soon as you mouse over it.

* You can show/hide EventHorizon manually by using /eventhorizon or /ehz.

Advanced configuration:

Note: I would highly recommend an advanced text editor such as Notepad++ if you wish to edit the configuration files. While this isn't required by any means, an editor with syntax highlighting makes changing the files MUCH easier.

* The default configuration for EventHorizon is located in EventHorizon\config.lua. This file contains every setting available for EH and is heavily commented to help tweak things to your liking. This file may be deleted and EventHorizon will maintain its functionality (not that I would ever recommend doing that).

* Any changes you make to config.lua will be removed when you update EventHorizon. This is by design. HOWEVER, there's an easy way to get around that. Simply create a new file (or a copy of config.lua) named "myconfig.lua". This file is automatically loaded, and because it loads after config.lua, the settings in myconfig.lua will always be the ones to appear in-game.

Files

There are 2 files which you can edit to change the physical appearance of EventHorizon including colors, size, global functionality and other things. I'm going to assume that you have the most recent version of the configuration file provided in the most recent version of EventHorizon.

config.lua:
You can think of this as the default settings of EventHorizon. If you want to change settings then you can do so here, but when you download a new version of EventHorizon you have to be careful as the new version includes config.lua and will overwrite any changes you've made to this file. You can always skip this file when overwriting, but it's better to use myconfig.lua as it's intended to avoid this problem.

myconfig.lua:
This file overwrites any values in config.lua with the values changed inside it. So if you have config.width set to 375 in config.lua and config.width set to 200 in myconfig.lua, EventHorizon will use 200 as the value.
Where this is useful is that myconfig.lua is never included in the updated versions of EventHorzion, and as such will never be overwritten when downloading a new version of EventHorizon.

As such best practice is to alter any values you wish to change in config.lua by changing the values inside myconfig.lua.

Configuration

In order to change settings of something you just have to change the text after the equals sign on the line with the setting you want to change.

For example if you wanted to change the width of the addon you would change line 33 which normally reads (by default)

Code:

config.width = 375 -- Width of a single bar....

to

Code:

config.width = 200 -- Width of a single bar....

And now EventHorizon will have a width of 200 rather than 375.

Other variables are well explained in the text which comes after the -- on the lines respective to their variables.

Best practice would be to have open config.lua and myconfig.lua at the same time. Then for any changes you want to make to EventHorizon that you do not want to change you add into myconfig.lua on a new line the line you want to change by copy and paste, and then change the value to what you want. This way when you update EventHorizon you do not lose all your configuration options

It may seem complicated at first, and you can completely skip the step with myconfig.lua if you want, but once you understand it it's very simple to do

The default myconfig.lua with no variable changes inside it should have the following at the top of the file before any variable changes:

* If you would like to show/hide the frame under specific circumstances take a look at EventHorizon_Redshift, which is located in the Optional Files section of this page.
* If you're a Goose user, or have another addon managing your frame visibility, EventHorizonFrame is what you'll want to track.

EventHorizon_Redshift has a similar configuration to EventHorizon itself, though is much simpler in nature.

Altering your classes configuration to fit your specific needs!

The settings where classes/specs bars are located are in config.lua in the folder for your class. (Example: EventHorizon_Monk) For examples I'll use the priest configuration. This is written for use with the new configuration system in mind so if things don't quite match up with what is in your config.lua that is why. You can either use what I've written here or alter what you already have by trial and error

Order:
Bars are added to EventHorizon in the order which they are called for the player's class. So the order of the bars that appear in EventHorizon is dependent on the order in which you add them in the config.lua.

How to add new bars

This is done by calling self:newSpell(). self:newSpell() is a function which takes in a table of bar configuration options.

For example, in the priest configuration we add a bar which has Vampiric Touch/SWD CD with the following:

Here we add a new bar with the options debuff, cast, cooldown, refreshable, hasted, requiredTree, requiredLevel, and stance
The values of the options is represented by what appears after the = sign and before the ,. cast is set to 34914 which is the spellID of Vampiric Touch. As a result the bar will now show Vampiric Touch casts on this new bar. Any calls of self:newSpell() before this one will appear before this bar, and any calls after this one will appear after this bar in-game.

EH will show as a cast the channel with spellID 1543 that hits 2 times, the channel with spellID 1544 that hits 4 times, ... , and the channel with spellID 1254 that hits 6 times over it's full duration.

cooldown:
A spellID or a table of spellIDs. EH will show the longest cooldown of the provided spellID(s)

Example(s):

Code:

self:newSpell({
cooldown = 1543,
})

EH will show the cooldown of spell with spellID 1543,

Code:

self:newSpell({
cooldown = {1543, 1642, ... , 1274},
})

EH will show the longest cooldown of the spells with spellIDs 1543, 1642, ... , 1274

debuff:
A spellID or a table of a spellID and it's unhasted time between ticks (if it's a DoT). Defaults to debuffs on the target.

Example(s):

Code:

self:newSpell({
debuff = {1543, 3},
})

EH will show the debuff with spellID 1543 that has an unhasted time between ticks of 3 seconds.

[code]
self:newSpell({
debuff = 1543,
})
EH will show the debuff with spellID 1543 that has no ticks. Just a simple debuff

playerbuff:
If there is no debuff defined for this bar, then EH will show the buff which appears on the player by default. Either a spellID or a table of a spellID and it's unhasted time between ticks

Example(s):

Code:

self:newSpell({
playerbuff = {1543, 3},
})

EH will show a buff on the player of the buff with spellID 1543 and unhasted time between ticks of 3 seconds.

Code:

self:newSpell({
playerbuff = 1543,
})

EH will show a buff on the player with spellID 1543 that has no ticks.

hasted:
true or false/nil. If true then the debuff/playerbuff for this bar has hasted ticks.

Example(s):

Code:

self:newSpell({
debuff = {1543, 3},
hasted = true,
})

EH will the debuff with spellID 1543 that has a unhasted tick time of 3 seconds that is affected by haste.

recast:
true or false/nil. If true then a recast line will appear at the end of the debuff/playerbuff indicating that the player should aim to have the cast finish within this area.

Example(s):

Code:

self:newSpell({
debuff = {1543, 3},
recast = true,
})

EH will show a recast line for the debuff with spellID 1543 that has an unhasted time between ticks of 3 seconds.

minstacks:
number or nil. If a number then the debuff/playerbuff defined for this bar must have greater than or equal to the number of stacks for it to show.

Example(s):

Code:

self:newSpell({
playerbuff = {1543, 3},
minstacks = 2,
})

EH will show a buff on the player of spellID 1543 that has an unhasted tick time of 3 seconds, but will only show if more than two stacks of the buff is on the player.

internalcooldown:
number or true or false/nil. If a number than EH will display an internal cooldown of number seconds for the slotID provided. If true then EH will display the internal cooldown of the trinket in the provided slotID that is defined in trinkets.lua. If false or nil then will not show an internal cooldown

Example(s):

Code:

self:newSpell({
slotID = 14,
internalcooldown = 45,
})

EH will show the internalcooldown of the trinket in slotID 14 as if it has an internal cooldown of 45 seconds.

unique:
true or false/nil. If true then EH will show buffs/debuffs on the target (by default) that are casted by anyone that match the provided debuff or buff ID. Normally debuffs are only shown if cast by the player

Example(s):

Code:

self:newSpell({
debuff = {1543, 3},
unique = true,
})

EH will show a recast line for the debuff with spellID 1543 that has an unhasted time between ticks of 3 seconds that is cast by anyone.

keepIcon:
true or false/nil. If true then EH will not change the icon from the icon that's first shown on login regardless of what's cast.

Example(s):

Code:

self:newSpell({
debuff = {1543, 3},
keepIcon = true,
})

EH will keep the icon of debuff 1543 regardless of what else occurs on this spellbar.

icon:
number or string. If a number than EH will always show as the icon for this bar the icon of the spell of spellID number. If a string then EH will always show the icon provided by the string. The string must be a path to a string. Look up frame:SetTexture() on wowprogramming for more information.

Example(s):

Code:

self:newSpell({
debuff = {1543, 3},
icon = 1544,
})

EH will show the debuff 1543 with unhasted time between ticks of 3 seconds, but will always show the icon of the spell with spellID 1544.

smallCooldown
true or false/nil. If true then the cooldown will use the height settings provided inside config.lua represented by smallCooldown rather than cooldown. Basically makes it so a cooldown is smaller than the normal height

Example(s):

Code:

self:newSpell({
cooldown = 1543,
smallCooldown = true,
})

EH will show a small cooldown of the spell with spellID 1543

Options to restrict when bars are shown:

You may have noticed how not all bars are shown at the same time. That's because of these options! Wooo!

requiredGlyph
spellID or false/nil. If not false/nil then in order for this bar to show the player must have the glyph with spellID provided.

EH will show a small cooldown of the spell with spellID 1543 if they have the glyph with spellID 12456 active.

requiredTree
A number, a table of numbers or false/nil. If a number between 0 and the number of possible specializations for the players class, then the player's active specialization must be the one represented by the number. 1 represents the first specialization (Disc for priests), 2 represents the second (Holy for priests), 3 represents the third (Shadow for priests) and 4 represents Resto if a druid. 0 represents no specialization.
Can also be a table of numbers in which case the player's active specilization must be one of the provided numbers in the table.

EH will show a small cooldown of the spell with spellID 1543 if the player is 84 or higher.

stance
A number between 0 and the number of stances the player can use. The stances start at 0 for no stance, and then as you go right on the stance bar (default UI) the next stance is 1, then 2 and so on.
Can also be a table of numbers in which case the player must be in one of the stances for the bar to show.

Example(s):

Code:

self:newSpell({
cooldown = 1543,
smallCooldown = true,
stance = 1,
})

EH will show a small cooldown of the spell with spellID 1543 if the player is in stance 1.

EH will show a small cooldown of the spell with spellID 1543 if the player is in either no stance, stance 1, or stance 4.

A few last things in regard to class configs:
These are all individual options which can be combined together to form advanced functionality. The only interaction between the options to keep in mind is that playerbuffs will not show if a debuff is also provided for that bar. This is simply a technical limitation which can't be avoided.

I hope this has made it easier for you to understand how to configure EventHorizon to suit your individual needs!

What's changed from the original EventHorizon?
Check the changelog for the long version, but for a very quick summary of some of the changes:
* ALL classes and specs are now supported. This includes both healing and tanking.
* Class coloring has been implemented, giving a more personal touch to the addon and also providing a more differentiated layout.
* Glyphs that add time to an existing spell now display a stack count on the affected spell's icon. Check the Balance Druid screenshot for an example, it's on the Moonfire bar.
* Much more support has been added for custom spell configuration. Check out the class module code for examples, they're all over the place.
* DoT and HoT ticks are now recalculated every time they occur. This makes EH much, much more accurate than it was previously.

What still needs to be changed?
EventHorizon is past due for a complete rewrite. This is being actively developed and is planned for a release before the official release of Mists of Pandaria within the next month. Please be advised that after it's release 1) I'll no longer be supporting previous versions of EventHorizon, and 2) Configuration options will most likely be lost in the transition. Part of the rewrite is to make EventHorizon easier to configure via in-game options so hopefully it will be easy to get back to what you want. I will attempt to let you still use your old configuration options for the new version, but I can't promise you that it will work

If you have a bug to report, please post it in the comments here.
If you would like to actively participate in EventHorizon's development and know how to work with Google Code's SVN (or are willing to learn), or if you just want to contact me directly, feel free to send me a PM and I'll reply with my contact details.

All Rights Reserved

Changelog:

v1.9.6
*Core:
- Updated opening message
*Class Configurations:
- All class configs are updated to my best guess, or as supplied by the community (Thanks!)

v1.9.5-7
*Core:
- Identified and probably fixed a bug with SetPoint calls creating Script Ran Too Long errors.
*Class Configurations:
- Priest
- Removed stance reqs for shadow spells
- All casts are now shown for non-shadowform spriests and healers
- Renew is also shown for non-shadowform spriests
- Warlock
- Commented out Soul Swap for affliction. If you want it back delete the line it says to delete to get it back
- Fixed error with Shadowflame debuff dot. Should now correctly show the debuff's ticks

v1.9.5-6
*Core:
- Identified a bug with playerbuff and debuff for class configurations not being interpreted correctly. Working on a fix but it's taking longer than anticipated
*Class Configurations:
- Hunter
- Added support for all DPS increasing talents in the 60 and 75 talent range. Just have to uncomment the ones you want to show and comment out the ones you don't
- Fixed a few talents to work as intended
- Warlock
- Fixed Agony/Corruption now showing for Affliction (related to bug with multiple debuff definitions per bar)
- Fixed error with Destruction not showing. (Turns out I added an extra 3 somewhere :P)

v1.9.5-5
*Class Configurations:
- Druid:
- Fixed issue with an unexpected equals sign on line 34. Turns out I accidentally deleted the self:newSpell({ line. Oopsy :P
- Shaman:
- Added back in Lightning Shield stacks as well as keeping the icon on Lightning Shield so stacks are always shown on the icon.

*Core:
- Fixed typo in newSpell() which prevent auraunit config option from working as intended

v1.9.5-2
*Lots of fixes!

*Class Configurations:
- All classes should be working 100% save for Brewmaster Monks
- Fixed icon/auraunit issues for Fire Mages

*Core:
- Fixed requiredGlyphs to have correct functionality in MoP
- Fixed newSpell() to work 100% correctly for all configurations possible.

v1.9.5-1:
*Fixed an error in the config.lua file making it harder to understand

v1.9.5:
*Fully and completely working version of EventHorizon for MoP
*Class Configurations:
- All are now supported except for Brewmaster Monks
*Core:
- Everything should be working 100%. Trinkets may be bugged.

V1.9.4-2:
* Class Config's can now use a table of cooldowns. EH will use the longest CD of the provided spells. cooldown = {spell1, spell2, ...}
* Uncommenting the first line will enable the display of spell IDs in tooltips to assist in identifying the spellIDs of talents.
* Misc fixes
* Hunter: Should now be compatible with MoP abilities.
* Shadow Priest: Now Compatible with MoP abilities inc mindbender/sfiend cd and lvl 90talent cd bar

V1.9.4-1: MoP Beta (5.0) compatibility. This is NOT compatible with 4.3. ONLY FOR BETA

v1.9.3-4: WoW 4.1 compatibility. COMBAT_LOG_UNFILTERED events had an extra argument (hideCaster) added after the event arg.
* Little note if you're hacking from an older version, you can search through EventHorizon.lua using a regex of ",\s*event,\s*" and replace with ", event, hideCaster, ". Just watch what you're replacing, there's a couple hits with that which you don't want to replace. Notepad++ handles this very nicely.

v1.9.3-3:
* Death Knights really do exist.
* Mage: Changed the GCD spellID and haste comparison spell to Polymorph. May work a bit better for some players.

v1.9.3-2: Kinda.
* Core: See v1.9.3 notes below for most notes.
* Core: Made some changes to the stack indicator code to hopefully work a bit better. May not play nice with glyph-refresh stacks, let me know.
* REMOVAL - Core: Tick detection is once again (mostly) v1.9.2 code. It was accurate for the most part but did NOT play nicely with some spells.
* REMOVAL - nonAffectingHaste removed.
* Warlock: Removed Drain Mana references, as the spell no longer exists.

Note: I don't have an account, so this release is pretty much triage to fix a few

v1.9.3: Mmm, ticks. And math. And updates.
* Core: Tick detection has been completely rewritten and is nearly 100% accurate. I'll spare the details here, check beta comments for how it all works.
* Core: Added a NewSpell flag, 'smallCooldown', indended to improve visibility of certain auras without removing their cooldowns. See the Priest config (Devouring Plague bar) for usage.
* Core: Redshift may now be enabled via slash command when disabled via config.lua. (see note)
* Core: Single spell stack numbers (or spells that show a single stack for no reason) are no longer displayed.
* Core: Recast lines were using some incorrect info in certain conditions.
* Core: Buffs cast by other players should no longer cause EH to panic.
* Core: Various module API refinements, little fixes across the board, and probably a lot of stuff I haven't mentioned in the changelog so far.
* Config: Added a new entry for use with the tick-related changes, nonAffectingHaste = {spellID,multiplier} or {{spellID,multiplier},{spellID,multiplier},...}.
- Warlocks seem to be the only ones needing this at present. If you find other spells affecting cast haste but not tick haste, and your ticks are improperly calculated because of it, by all means let me know.
* Config: Added a new entry to the layout section for the smallCooldown NewSpell flag.
* Druid: Removed Omen of Clarity across all specs. Revive used as haste comparison.
- Feral/Cat: Bars reorganized to better reflect priorities.
- Feral/Bear: Added Swipe CD to Pulverize. Enrage removed (commented out if you prefer seeing it).
- Balance: Shooting Stars added to Starsurge.
- Resto: Tweaks a'la malsudon.
+ Moved Swiftmend cooldown to the Rejuvenation bar.
+ Added Nature's Swiftness cooldown to the casted heals bar.
+ Added Tree of Life.
* Mage: Conjure Refreshment used as haste comparison.
* Hunter: Steady/Cobra bar now tracks Improved Steady Shot (with recast segment).
- BM: Usability tweaks.
+ Frenzy bar now tracks Focus Fire cooldown, Focus Fire buff is no longer tracked (same CD as buff time).
+ Killing Streak is now shown on Kill Command as originally intended.
- Marks: Aimed Shot cast and Master Marksman buffs moved to Chimaera Shot bar.
* Paladin: Redemption used as haste comparison.
* Priest: Resurrection used as haste comparison.
- All specs: Evangelism and Archangel folded into a single bar.
- Shadow: Please spend some time on the target dummy to get used to the changes. Most will find the layout more intuitive than it has been in recent releases.
+ Moved Shadowfiend CD to the Devouring Plague bar. Uses the new smallCooldown flag to improve usability.
+ Filler separated into two bars. Cast filler tracks Mind Melt buff, channel filler tracks Shadow Orbs.
+ Moved Shadow Word: Death CD to the channel filler bar.
* Shaman: Ancestral Spirit used as haste comparison.
* Warlock: Create Healthstone used as haste comparison. Eradication defined as not affecting DoT haste.

Redshift note: You may need to repeat the command a couple of times due to an elusive little glitch, but the settings stick between login/reloadui without further issues.
Redshift remembers your last enableRedshift setting from config.lua. If that's changed, Redshift will default to whatever the new setting is.

v1.9.2: Switched to Git, revision numbers go byebye.
* Core: Added a 'recast' NewSpell flag. 'recast = true,' (or really anything but nil/false) will force the recast segment to show for any aura on the bar.
* Core: Recast lines will try to use the most recent tracked spellcast. (see note)
* Probably some more fixes and changes here and there, but not many. Been focusing on getting things set up with the new repository.

Note: Let's say a bar is tracking a proc and two spells with differing cast times, with the recast flag on. The following situation may happen:
1 - Begin a 1.5 second cast (which procs the aura)
2 - Cast completes and spell's in the air. Begin a 3 second cast (which doesn't proc the aura)
3 - The procced aura appears with a 3 second recast segment, which probably isn't what you wanted to see.
I'll be adding a way to set which casts affect the recast duration in a later release, probably in v1.9.3. For now I don't believe it'll be a huge issue to leave it as is.

v1.9 r378: Eep again.
* Core: Aura info is no longer indexed by spellID. EH now behaves much better in a raid environment.

v1.9 r376: Hopefully that's the last time I'll have to fix Redshift.
* Core: Made some huge changes to how aura information is collected and stored. (see note)
* Core: Redshift now has (almost) complete control over frame visibility when enabled.
* Core: Indicators now use the API methods introduced in 4.0.1 to set their drawing order, instead of relying on framelevel hacks. Less CPU usage, more stable ordering.
* Core: Cooldowns are now prioritized over [de]buffs in terms of drawing order.

Note: I haven't had the opportunity to test every variation, but it seems stable enough. Let me know of any issues.

v1.9 r370: Trinket bars will be disabled by default from this release onward.
* Core: Cast-time debuffs no longer leave a bar segment behind when dispelled or the target dies.
* Core: itemID bars now use the correct GetSpellCooldown syntax.
* Core: Fixed some load order issues that were preventing Redshift from doing its thing at login.
* Core: Added a few API triggers for module usage, fixed some event assignments, and cleaned up a few bits of code.
* Config: Trinket bars are now disabled by default. Look for "config.showTrinketBars" in config.lua if you prefer to see them.
* Class Config: Added an 'icon' NewSpell flag - Sets a static icon for the bar. Can use a spellID, itemID, or texture path. Not usable with equipment slot bars.
* Paladin: Holy Shield has been fixed and folded into the CS/HotR bar, Sacred Duty added to Prot Judgement.
* Warlock: Corruption bar now uses only the Corruption icon. Chaos Bolt's cast is no longer missing from the Destro filler bar.

v1.9 r362: SavedVariable wipe for people affected by r335 quirks. The new class config system has been delayed for now.
* Core: Talent/glyph checks are now throttled and delayed using the same method as gear checks.
* Core: The recast bar segment should no longer glitch out when recasting or refreshing dots.
* Core: The hideIcons option was broken in a namespace cleanup a while back. This has been corrected.
* Core: Most bar components and some portions of the EventHorizon window may now have their blending mode adjusted. (see note)
* Config: Added config.blendModes to config.lua. See the notes there for usage. (note again)
* Config: The default channel tick color has been changed from class color to castbar color.
* Class Config: Removed 3.3.5 compatibility code.
* DK: Fixed up a couple entries. Trying a new spellID for Unholy Blight, the old one apparently wasn't working (haven't had a chance to check myself).
* Priest/Healer: Greater Heal is now shown on the casted-heals bar.
* Priest/Shadow: Added Shadowfiend CD.
* Rogue: Fixed up an entry or two.
* Warlock: Moved Immolation Aura to the bottom of the list. Corruption now shows for all specs.

Note: Try setting some blend modes to "ADD" if you're curious. This can be very useful for some UIs, and does allow for more visible bars depending on your settings, monitor, and perception of color.
Changelog may be incomplete for this release.

v1.9 r333: Note - SavedVariables wipe, sorry for any inconvenience. Untested in beta, haven't had an opportunity.
* Core: Trinkets and other gear checks now use savedvariables to avoid constant GetItemInfo calls and at least somewhat remedy the related Beta/PTR issues.
* API: Modules are now loaded before checking talents, allowing modules to use EH's talent checks instead of their own.

Note: Beta/PTR users may notice missing trinkets when logging in for the first time. Entering combat, using a spell/skill with a cooldown, or swapping trinkets should fix that.

v1.9 r321: Bunch of workarounds because Blizzard hates me.
* Core: Bars with both channeled spells and auras (Warlock, Priest, Mage) will no longer lose their channel ticks on aura changes.
* Core: Logging in, reloading your UI, or changing gear sets will no longer trigger multiple layout checks at once. Instead, a 2-second delay is used with a single mass update at the end. (note 1)
* Core: Gear checks have been revamped a bit to reduce errors, oddities, and CPU usage.
* Core: Blank trinket bars at login: Added an extra post-load check for trinket bars, using the glyph redetection workaround. (note 2)
* Core: Leveling up will now trigger a layout check.
* Core: Added a couple new slash commands: "/ehz lock" (toggles the drag-handle), and "/ehz status" (shows a list of modules and shown bars). "/ehz help" has been reformatted a bit. (note 3)
* Config: A new color and layout has been added for channeled ticks.
* Config: Changed the bar layouts a bit. Ticks are a little shorter, bars a little taller.
* Mage (Beta/PTR): Corrected Living Bomb's DoT interval.

Notes:
1) This effectively cuts the number of talent checks and layout updates in half. Yay efficiency.
2) The item cache is pretty screwy. Nothing but the itemID is available at login during the loading process. ReloadUI or logging out and back in fixes it.
+ Using the dissapearing-glyph workaround seems to work decently for now. I'll see about a better solution if people still have blank trinket bars.
3) Using "/ehz lock" when the frame would not normally have a handle does nothing, and will tell you that.
4) I'm still looking for inaccuracies and missing procs in the class config. Let me know if you feel like your bars are missing something that should be there.

v1.9 r312: Maintenance release with Cataclysm and PTR compatibility while I break things for Axis. I had this release planned long ago, sorry for the delay.
* NOTE: This release is compatible with live realms, PTRs, and the Cataclysm beta. PTR and Beta players will notice new bar layouts.
* Class Config: Added two new flags to NewSpell:
- requiredTree = <tree> or {tree, tree, ...} - Adds a dominant talent tree requirement to the bar. This follows the order on your talent sheet (ie, Arms Warrior = 1, Shadow Priest = 3)
- requiredLevel = <level> - Adds a level requirement to the bar.
* Core: Internal cooldowns have been adjusted to behave a bit better.
* Core: Made some huge changes to EH's internal table structure. (/dump EventHorizon.vars if you're interested)
* Core: config.past and config.future have been sanitized and will no accept both positive and negative numbers with no ill effect.
* Config: The default cooldown color has changed to a mute blue/teal and made a touch more opaque. (0.6, 0.8, 1, 0.3)
* Config: The default cast color has also been changed slightly and made a little less opaque. (0, 1, 0.2, 0.25)

WotLK class config:
* Priest: Vampiric Touch is down to 5 expected ticks. t9 is no longer default. Change it to 7 if you use it.
* Shaman: The Ele bars did feel funky how they were. Sorry about that.
- Elemental: Lava Burst is back on its own bar. Lightning Bolt and Chain Lightning are shared below it.

Notes: This is beta. It's largely untested and things will probably break. I'll update as often as I can.
* GetItemCooldown seems pretty well screwed, let me know if you get errors related to it and which trinkets you're using if you run into problems.
* Several Cataclysm/PTR configs are completely untested.

Release notes:
v1.9 r274: Minor fixes.
* Trinkets work at login now. Sorry about that. Missed a call at login/reloadui and didn't notice until today.
* Purified Lunar Dust somehow lost its internal cooldown in the shuffle.
* Priest: Mind Sear is now tracked with MB/MF.

v1.9 r272: Not QUITE Axis, but it's getting there pretty quickly.
* NEW FEATURE! Bars are now able to track multiple casts, and can track both casts and channels on the same bar. The bar icon will change according to the last spell cast. (see note)
* Axis's talent check method has been implemented. Talents are now only checked once per talent, instead of once per config appearance. (see note 2)
* Equipment checks now pay better attention to event arguments and thus no longer require throttling. Say goodbye to missing trinkets.
* Various changes to the cast and channel functions, perhaps a slight performance benefit.
* Death Knight: Simplified the layout a bit. Removed some long cooldowns and unneeded buffs, added Howling Blast + Rime for frost.
* Mage: Folded the various Bolts and Scorch into a single bar. Arcane won't see it. Moved ABar down in priority.
* Priest: Down to four bars for Shadow, yay.
- Shadow: The Mind Flay and SWD bars have been removed. Mind Flay now shares with Mind Blast, SWD shares with SWP.
* Shaman: Hey look, I play one these days. Nice little batch of updates.
- Flame Shock is properly tagged as hasted.
- Elemental: Added Thunderstorm, changed EM's requiredTalent to EM (was Lightning Mastery for some reason). Folded Lava Burst and its cooldown into Lightning Bolt.
- Enhancement: Stormstrike debuff is now tracked. Maelstrom Weapon has been folded into Lava Lash's bar.
- Resto: Folded Earthliving Weapon and Lesser Healing Wave into Healing Wave's bar.
* Warlock: Could use feedback on the bar placement.
- The former Shadow Bolt bar now tracks the following casts: Shadow Bolt, Incinerate, Soul Fire, Chaos Bolt (plus cooldown), Drain Life/Mana/Soul (with tick info).

Notes:
1) The spell config remains compatible with previous versions, however a new syntax has been added for the NewSpell cast and channeled flags.
- cast = {spellID1, spellID2, spellID3, ...}
- channeled = { {spellID1,numhits}, {spellID2,numhits}, {spellID3,numhits} } - Note that numhits is not required and will fall back to the NewSpell numhits setting or nothing, if not present.
- See the Warlock, Priest, or Mage config for usage.
- The existing 'keepIcon' flag will prevent the bar icon from changing (casting times already prevent icon changes for buffs/debuffs).
2) Priests went from around 10 talent checks to 4. I'm pretty sure Shammies went from 16 to something like 5 or 6 checks. Pretty awesome stuff.

v1.9 r249: I lied. Got a little tired of random cooldown-induced issues.
* Core: The spell config cooldown flag may now be set to a spellID, to track an alternate spell for cooldown info. See the Warlock config.
* Core: If a buff's duration is longer than its internal cooldown, the cooldown bar will be overlaid like a normal cd. (see note)
* Death Knight: Revamped the config. No more long cooldown option, talent checks are a bit more intelligent to compensate.
* Priest: Penance will keep its own icon.
* Warlock: Adjusted the config a bit to better account for tree-specific procs. The curse bar now tracks Curse of Doom's cooldown.
* Warrior: Taste for Blood now properly displays its internal cooldown (see above).

Note: Some items (Deathbringer's Will in particular) seem to prefer placing a full cooldown bar for whatever reason.

v1.9 r241: EventHorizon is officially feature-frozen barring the discovery of major bugs. Stay tuned for the next betas.
* Core: A few API changes for external config support have been made, nothing affecting normal usage.
* Warlock: Corruption's amount of expected ticks has been corrected.

v1.9 r233:
* Core: The frame update function now obeys config.texturedbars if the option is disabled.
* Core: Removed some debug code that snuck in the release.

v1.9: Next up, Axis!
- NOTE: EventHorizon_Lines and EventHorizon_Redshift will be marked as disabled when you log in. This won't take effect until your next login or reloadui.
- NOTE: EH's savedvariables will be reset with this release, to ensure compatibility with older versions.
- NOTE: If you're an EventHorizon_Vitals user, please update Vitals to the latest version.
* Core: Integrated EH_Redshift and EH_Lines. No more trying not to break 4 addons at once. (notes 1 and 2)
* Core: EH will reset savedvariables when updating to incompatible versions. I'll try not to make use of that, but it helps to have the functionality.
* Core: Hopefully resolved crashes at login. Please let me know what you experience with this release if EH has been crashing your game.
* Core: Lots of optimization and streamlining. There should be an all-around performance increase with v1.9 over previous versions.
* Core: All known bar positioning issues have been fixed.
* Core: The end-of-cast line now appears for all casts by default.
* Core: Bar icons will now change according to the currently shown buff or debuff, if the bar does not track a cast time or equipment slot. Use the 'keepIcon' spell config flag to prevent this (see below).
* Core: Added a workaround for Lua errors caused by a bar trying to create itself without an associated type. Still not sure what causes it.
* Trinkets: Phylactery of the Nameless Lich and Whipsering Fanged Skull now have correct internal cooldowns.
* Trinkets: Spark of Hope is now on the ignore list.
* Config: config.lua has been redocumented. Should be a lot easier to read now.
* Config: config.castLine now accepts a number, defining the minimum cast time needed to show the end-of-cast line. Example: 'config.castLine = 1.5' will produce the old behavior. Default = true (0).
* Config: The end-of-cast line now has an entry in the color table (c.castLine) and is now the same color as the cast bar by default.
* Config: Trinkets should actually be shown by default now. Pretty sure I lied in the v1.8 notes, sorry.
* Config: Removed config.iconborder (no difference if you were using the defaults before).
* Config: config.staticheight (disabled by default) will have EH resize the bars instead of the frame. Credit to Brusalk for the idea. (notes 3, 4, and 5)
* Config: config.hideIcons will hide the bar icons. Usage: config.hideIcons = true
* Config: config.stackFont will change the font of the stack indicators. Usage: config.stackFont = "FontPath" (see note 6)
* Config: config.stackFontColor will change the color of the stack indicators. Usage = config.stackFontColor = {Red,Green,Blue,(Alpha)} (default = {1,1,1}, alpha is optional, does not need config.stackFont to work)
* Config: config.stackOnRight can move the stack indicators to the other side of the frame. Usage: config.stackOnRight = true (default = false)
* Config: Added support for individual bar coloring and textures. Three new options are available in the class config. Also, an extra flag has been added for bar icons.
- bartexture: Sets a custom texture for this bar. Applies to buffs, debuffs, and cooldowns. (example: bartexture = "Interface\\Addons\\EventHorizon\\Smooth")
- barcolor: Sets a custom color for active buffs and debuffs for this bar. Does not support class coloring. (example: barcolor = {Red,Green,Blue,Alpha}, ie {1,0,0,0.6} )
- barcolorunique: Sets a custom color for 'unique' spells for this bar. If barcolor is set and this is not, unique spells will show with barcolor's setting instead. Same format as barcolor.
- keepIcon: Will force the bar icon to stay the same if it would normally change itself when a different spell is being shown. See the Warrior config for usage.
* Warrior: Added keepIcon flag to Revenge and Shield Slam bars.

(1): Redshift and Lines are DISABLED by default. They can be turned on in config.lua, via the options config.enableRedshift and config.Lines.
(2): You can use the slash commands (/eventhorizon or /ehz) to disable Redshift and Lines per character if they are enabled in config.lua, as well.
(3): For example, 'config.staticheight = 150' will make EH 150 pixels tall. With 5 shown bars, each bar will be 30 pixels tall. Spacing is still used in this mode and will act the same as it does otherwise.
(4): Please be aware that this is an 'all or nothing' option. It's made for people with a specific area to place EH who do not want the frame to ever be resized.
(5): When using the staticheight option, icons will be cropped to always show 100% of at least one dimension. If an icon is wider than it is tall, the full width is always shown. Otherwise, the full height is shown.
(6): When config.stackFont is used, a few new options open up:
- config.stackFontSize changes the size of the font. Usage: config.stackFontSize = <number> (default = 12, no effect if stackFont is not used)
- config.stackFontOutline adds an outline or other effect to the font. Valid options are "OUTLINE", "THICKOUTLINE", or "MONOCHROME". Usage: config.stackFontOutline = "FLAG" (default = nothing)
- config.stackFontShadow adds a shadow effect to the stack indicators. Usage: config.stackFontShadow = {Red,Green,Blue,(Alpha)} (default = {0,0,0,0.5} if true, alpha is optional but recommended)
- config.stackFontShadowOffset changes the offset of the font shadow. Usage: config.stackFontShadowOffset = {x,y} (default = {1,-1} if invalid or not specified)
Note: config.stackFontColor doesn't support class coloring directly (though you can work out something if you really want it). Possibly in the future.

r232-specific notes: Fixes for staticheight, plus some much-requested spell config stuff.
* Core: Changing stance/form with staticheight enabled now resizes any active bars and indicators.
* Config: Added support for individual bar coloring and textures. Three new options are available in the class config.
- bartexture: Sets a custom texture for this bar. Applies to buffs, debuffs, and cooldowns. (example: bartexture = "Interface\\Addons\\EventHorizon\\Smooth")
- barcolor: Sets a custom color for active buffs and debuffs for this bar. Does not support class coloring. (example: barcolor = {Red,Green,Blue,Alpha}, ie {1,0,0,0.6} )
- barcolorunique: Sets a custom color for 'unique' spells for this bar. If barcolor is set and this is not, unique spells will show with barcolor's setting instead. Same format as barcolor.

v1.8: Big trinket update. Huge. Long. I have a headache.
* Config: Added a new option, config.showTrinketBars (default = true) - Set this to anything but true or remove it entirely to disable.
* Core: Trinket bars will be automatically added to the frame. Disable config.showTrinketBars if you don't like this. (See notes 1-5)
* Core: Massively improved the trinket detection. (See notes A-D)
* Spent about five hours (I wish I were exaggerating) adding trinkets to the database in trinkets.lua. Pretty much everything with an effect that can be tracked is in there now. Some things with hard-to-find spellIDs or complex effects aren't in. You're welcome, and I hope to never touch that file again.
* Druid/Balance: Added Starfall. Thanks for the reminder, Everdreamer.

* Addenum: EventHorizon now handles the initialization for EventHorizon_Vitals, if loaded. EH_V does next to nothing (as of v2.0 beta) before EH completely finishes loading.

(1): For those that haven't used EventHorizon's trinket support, this adds duration and cooldown info for just about any trinket automatically. This includes internal cooldowns, and does NOT include effects which are not buffs on yourself.
(2): If your trinket is not in trinkets.lua and it has a USE effect, its cooldown will still be tracked. The purpose of trinkets.lua is to assign spellIDs and internal cooldown information for the buffs that trinkets provide. Let me know if you have a trinket that you would like added to the list.
(3): I know this question will come up - TRINKETS.LUA IS NOT AND WILL NEVER BE LOCALIZED. If you are in a locale using a language other than English, EH will ONLY be able to track the cooldowns of trinkets with USE: effects.
(4): Deathbringer's Will should work for everyone now. Thanks for the spellIDs, Kogasu.
(5): I did add DMC:Greatness and Death's Choice/Verdict, let me know if you have any issues with either. It's easy enough to fix if need be.

(A): Empty trinket slots are removed from the display, no more empty bars.
(B): A blacklist contained within trinkets.lua (bottom of the file), EventHorizon.trinkets.blacklist, will tell EH to act as if certain trinkets are not equipped. Only the Argent Dawn trinkets are in for now. Give me names and more will be added, I'm not screwing with it anymore.
(C): Swapping trinkets or other cooldown slots will no longer result in multiple cooldown bars. This was a little tougher to fix than it sounds, let me know of any issues. (I tried to test as thoroughly as possible).
(D): The PLAYER_EQUIPMENT_CHANGED function that is used by trinket/equipment bars has been throttled to reduce framerate spiked caused by changing equipment sets, and perhaps at login.

v1.7c:
* Core: Overhauled the pre-init code. It's a little more intelligent now, resulting in less of a hitch at login/reload and hopefully resolving an issue with random freezes/crashes at login/reload.
* Config: Added Deathbringer's Will to the trinket module. I have no way to see whether or not it actually works, though.
* Shaman: Adjusted a couple talent requirements. Flame Shock and Fire Nova will now be visible to Shamans without Concussion. The spells now check for the absence of Restorative Totems.
- Enhance: Flame Shock is now tracked instead of Earth Shock.

v1.7b:
* Core: Fixed a non-fatal Lua error.

v1.7a:
* Core: Fixed a minor error caused by a variable that got renamed last release.

v1.7: Two major releases in how many days? I MUST HAVE GONE MAD. Don't worry, I didn't break too much (I hope).
* WARNING: Healers might be a bit confused on this release. The default behavior of the healing bars has received some love. Read on for the gory details.
* Core: EventHorizon's layout has changed for the better! The clunky old layout code has been completely rewritten in favor of something much more appealing to the eye.
* Core: Improved spell config flag: auraunit = 'mouseover' - Now works like a [@mouseover,exists][@target] macro (by default) rather than just horribly breaking things.
* Core: New spell config flag: baseunit = 'focus'/'targettarget'/'whateverYouWant' - Adjusts the [@target] portion above to whatever feels more appropriate for you.
* Random: TOC now has a ## Title field, sorry bout that Minion users.
* HEALING CLASSES: Added 'local usemouseover = true' to the top of EventHorizon_CLASSNAME\config.lua. Set this to nil, false, or delete the line entirely to make everything normal again.
- Druid/Resto: All bars involving a targeted buff now watch mouseover units as well.
- Paladin/Holy: All bars involving a targeted buff now watch mouseover units as well.
- Priest/Healing: All bars involving a targeted buff now watch mouseover units as well.
- Shaman/Resto: All bars involving a targeted buff now watch mouseover units as well.

v1.6: Obligatory disclaimer - MANY Saronite Bombs and Target Dummies were harmed in the making of this release. Seriously though, while this has had some fairly in-depth testing, treat this release as beta quality.
* NOTE: YOU MAY NEED TO ADJUST YOUR MYCONFIG.LUA. A few things have been moved to different tables, and there has been an added line in the colors section. Nothing should error unless you're overwriting the color table at once instead of per value. Adjust accordingly.
* Core: Added support for equipped items (trinkets, anyone?) and Engineering tinkers via 'slotID = <slotnumber>' in the class config. Items are refreshed every time you swap gear (no hitching noticed when using the equipment manager, though performance could likely be improved). Please see trinkets.lua before adding anything to your class config.
* Core: Added support for inventory items via 'itemID = <ID>' in the class config. Again, please see trinkets.lua.
* Config: EH's background and border may now be class colored. To make this easier to implement, config.bgcolor and config.bordercolor have been moved to the EventHorizon.colors. Move your myconfig vars around accordingly.
* Config: The 'Now' line has been made less opaque by default, and its color may now be adjusted (including class coloring) via colors.nowLine. See config.lua.
* Config: Indicators without a texture (sent/tick/nowLine, etc) no longer have their opacity multiplied by config.texturealphamultiplier. If you were having issues with this you know what I'm talking about. Otherwise, don't worry about it.
* Class changes: Lots. If you see something different about your class setup, I likely forgot about it when writing this log.
* Hunter: Shuffled the bars around a bit to better reflect shot priorities. Removed Mend Pet from all specs. BM may have a screwy shot list as a result of all this.
* Priest: Lots of changes for playability.
- Shadow: Shuffled the bars a little. They feel a tiny bit more natural now, though they could likely use further changes.
- Holy/Disc: The bars should work a little better for healers using Clique or similar addons/macros for healing, showing more information when you're not actually targeting what you're healing, and more relevant info when you are. Be sure to spam yourself a bit to get the hang of things before using this release in a raid environment. More adjustments will be made over time. (If you play another healing class and would like this same treatment, by all means let me know what I can do for you.)
* Paladin: Added Art of War to Exorcism. Changed one of the Judgement bars yet again. Let me know if I broke anything (again).
* Warrior/Prot: Removed Concussion Blow.
* Misc: ...lots. I probably missed quite a few changes on this log. Have fun finding them!

v1.5b:
* Core: Cooldown bars have had their opacity lowered a bit.
* Warrior: Fixed an old typo that was messing up the bars a little for Arms and Fury.
* Priest: Vampiric Touch now uses on-the-fly tick recalculation until I can figure out a way to get its expected ticks working properly with 2t9.

v1.5a:
* Core: Reworked the stance code a bit and added a new spell config flag. See the Warrior module for the new stuff.
- Multiple allowed stances for a spell may be set via the flag "stance = {x, y, ...}". Any number of stances may be specified.
- Disallowed stances may be set via the flag "notstance", using the same format as "stance".
- Cleaned up the stance code a little.
* Core: Cooldowns are now lower on the strata priority. Should make buffs and debuffs a little more visible.
* Druid: Feral abilities now have Ferocity as a required talent. Trees and boomkins, no more pointless bars when running around as a kitty.
- Balance: Added a couple idol procs to Typhoon's bar.
* Paladin: Reordered bars a bit to better reflect the 969 tanking rotation and Ret changes. Let me know if I can further improve it.
* Warrior: Shockwave and Concussive Blow are now tracked. Added some extra talent requirements to trim unnecessary bars.

v1.5:
* Core: Glyph detection has been rewritten a bit and uses less CPU while being less of a pain to work with on my end.
* Core: Glyph-based periodic haste (Corruption/Rejuvenation) should work better now. It's still not 100%, though, due to oddities on Blizzard's end.
* Core: Converted textureID to uniqueID in core and class config. uniqueID tracks a single specific spellID for things like Eclipse and Sacred Shield.
* Core: Some general fixes and API updates that I've likely forgotten by now.
* Druid: Converted Eclipse tracking from textureID to uniqueID. Removed Faerie Fire and reordered Balance bars a bit.
* Paladin: Converted Sacred Shield tracking from textureID to uniqueID.
* Shaman: Thunderstorm removed. Fire Nova and Elemental Mastery added.
* Mage: Updated Frost and Arcane. Arcane now tracks AP and PoM. Frost now tracks most freeze effects, Deep Freeze, and Fingers of Frost (TLDR: EH is now much more usable for Frost).

v1.4: Patch 3.3 compatibility
* Core: Hasted periodic spells now calculate their interval once per cast rather than per tick. This may cause issues with target swapping and variable haste, please let me know if any issues pop up. (See the changed modules for how this works - To use the old per-tick behavior, remove or comment out the expectedTicks flag)
- Note that the new code may cause issues when target switching with variable haste. Let me know if anything pops up.
- Due to the new handling, a check has been added for Mage Armor on the hasted spell's target.
- For hasted effects using the old handling, some extra logic has been added to make sure target swaps don't really screw things up. Future releases may remove the old handling completely. This is untested but should work fine.
* Core: Removed PTR check code. This release should still work in patch 3.2 if anyone is somehow still playing it, but v1.3c is preferred in that case.
* Warlock: Updated for the new haste handling.
* Priest: Updated for the new haste handling.
* Druid: Updated for the new haste handling.
* TOC: Updated for WoW 3.3.

v1.3b:
* Core: Fixed errors related to the casting line. Not sure how they got there, to be honest.
* Warlock: Corruption is once more spec-specific, recovering from its status as a debug spell.

v1.3a:
* Core: Fixed a minor non-fatal typo in UnitBuffUnique (the function used to check status of multiple buffs at once) that caused buffs tagged as unique (Inspiration/AF, Grace) to not track other players' versions. Thanks, hungtar.

v1.3: Patch 3.3 update with some extra goodies.
* Core: Hasted periodic (DoT/HoT) spells are now fully supported. A new spell config var has been added: haste = glyphID or {talentTab,talentIndex}. This piggybacks on tick recalculation and is heavily affected by lag, but is as accurate as WoW's API allows. Ticks may seem a little jumpy depending on your latency. Hasted tick recalculation is only enabled when playing Patch 3.3.
* Core: When a bar has multiple spells assigned to it, spells cast by others should no longer interfere with the showing of your own buffs/debuffs. Warlock curses were affected most by this.
* Core: A vertical line, extending the full height of EH's frame, has been added to signify the end of any cast longer than 1.5 seconds. This uses the 'sent' coloring for those wishing to change it, and config.castLine for those wishing to remove it.
* Core: Bars watching multiple buffs/debuffs now have the ability to track periodic ticks on the bar's initial spell (spellID field) without bugging out. This allows the Warlock curse bar to provide tick info for CoA without messing up other curses, and has potential for a few other classes as well.
* Config: config.castLine has been added. Any value other than 'true' will disable full-frame casting lines if you dislike them.
* Config: config.recalculate is now mandatory and the option to disable it has been removed (as with its config entry).
* Warlock: Corruption is now considered a hasted DoT when using a Glyph of Rapid Decay.
- The Warlock curse bar should now work properly in the presence of other Warlocks.
- Curse of Agony is now able to show its ticks.
* Priest: Vampiric Touch and Devouring Plague are now considered as hasted DoTs as long as Shadowform is talented.
* Druid: Rejuvenation is now considered a hasted HoT when using a Glyph of Rapid Rejuvenation.
* Warrior: You may now use myconfig.lua with the Warrior module without needing to modify EventHorizon_Warrior.toc. No other class needed changing.

v1.2.4c: All Warlocks should now see the curse bar. In addition, the curse bar's icon has been changed to CoA.

v1.2.4b: Made a few changes to the frame reloading code to keep CPU usage down and prevent the frame from randomly reappearing if EH is hidden.

v1.2.4a: Corrected an event call that was being overwritten, preventing EventHorizon from initializing until reloadui. Sorry about that.

v1.2.4:
* Core: DoT/HoT recalculation was throwing errors if a spell ticked between the time a unit hit zero health and actually died (the timing differs between players and most mobs). A workaround has been added.
* Core: The frame is now reloaded when entering/exiting combat, changing zones and areas within zones, and at a few other points. This should hopefully resolve disappearing spells. A better fix is in the works.
* Paladin: Reworked the module a bit. Judgements will now show for all specs (including untalented). Judgement of Justice is tracked by default.
- Holy: If Judgements of the Pure is talented, the Judgement bar will change to JoW + JotP.
- Prot/Ret: Changed talentIDs a bit to handle lower levels and cross-speccing a bit better.
* Shaman: Changed the talentID for Earth Shock to Dual Wield.

v1.2.3:
* Shaman: Updates and fixes to the module. Talents got messed up a bit when I was working with the Resto config.
- All specs: Flame Shock now requires Concussion. Earth Shock now requires Shamanistic Focus. This is for Resto's sake, and there are other ways to handle it if anyone has issues due to the change.
- Elemental: Thunderstorm is now only shown when it's actually talented.
- Enhance: Maelstrom Weapon is now tracked on its own bar.
- Resto: Talent requirements have been fixed. Sorry about that. Also, corrected the spellID for Ancestral Fortitude.
* Priest/Heal: Corrected the spellID for Shaman's Ancestral Fortitude (unique tracking alongside Inspiration).

v1.2.2: Minor fixes and updates while we get ready for partial recoding in v1.3.
* Core: Zoning should no longer break spells that use the requiredGlyph setting. The fix had a 100% success rate in tests on two computers with a friend involved, but your mileage may vary.
* Shaman: Config has been revamped for personal sanity reasons.
- Elemental: Swapped Lightning Bolt and Chain Lightning. Thunderstorm is now tracked.
* Warlock: Haunt once again has a cast time.
* Warrior:
- Protection: Shield Slam will now only appear when Shield Mastery is talented, appears in all stances, and now tracks Glyph of Blocking.
- Arms: Unrelenting Assault's talent index has been fixed.

v1.2.1:
* Core: Fixed a typo that was causing glyph checks to fail. Please let me know if the issues continue.
- v1.2.1a: Added all Warlock curses to the display under a single bar. Be aware that Curse of Agony has no DoT tick display.

v1.2: The long-promised Special-Cases update!
- NOTE: This release marks the official re-release of EventHorizon's continued branch as its own addon. Please update your bookmarks and favorites accordingly. I'll get in touch with Tifi to have him update the original EH page with the new link once it's up.
* Core: Added "textureID" to spell config, allowing a user-specified texture to be used as a filter for any aura. See the Druid config for usage.
* Core: Buffs/debuffs with casting time have had their logic altered. The small recast line (Vampiric Touch, Immolate, etc) is now only displayed if the aura being tracked is the same as the spell being cast. This fixes undesired behavior with many spells, while leaving the spells it was intended for intact.
* Core: Auras using the "playerbuff" spell flag now accept tables as valid entries. This allows multiple buffs to be tracked on the same bar, same as debuffs.
* Core: All auras may now use the "unique" flag, rather than just debuffs.
* Config: Bar backgrounds are now hidden by default.
* Shaman: Updated module, Resto spec now included. Tracked in order: Earthliving Weapon, Riptide, Lesser Healing Wave (includes Ancestral Healing/Inspiration), Healing Wave, Chain Heal (includes Tidal Waves), Earth Shield.
* Paladin: Updated module, Holy spec now included. Tracked in order: Beacon of Light (on Focus), Sacred Shield (on target), Holy Shock, Holy Light (including Light's Grace), Flash of Light (including Sacred Shield HoT effect).
* Rogue: All ranks of Deadly Poison are now tracked. Leveling Rogues no longer have a bar that does absolutely nothing. Note: Due to limitations in combat log filtering, DP ranks lower than max level will have limited functionality. They will not recalculate, nor will ticks appear in the 'past' section of the bar. There is no way to fix this at the moment without massively increasing EventHorizon's cpu usage.
* Priest: Updated module, spell flags should all be correct now. Inspiration tracking now includes unique buff tracking for Ancestral Healing and other priests' Inspiration.
* Druid: Eclipse tracking is now done via Wrath and Starfire, with procs tracked independently.

v1.1.6:
* Core: Fixed timeless spells refreshing to timed breaking bars (Overkill is the only spell that comes to mind here, but should work for everything)
* Rogue: Added Overkill to the display if specced for it.
- v1.1.6a: Minor update. Auras flagged as "refreshable" with an auraunit other than target will no longer glitch on target changes.

v1.1.5: More glyph support.
* Core: Added requiredGlyph = <glyphID> to the spell config. See the Warlock module for reference. Note that if looking for the glyph on WowHead, you need to search for the glyph name and go to the uncategorized spells tab. The actual glyphID is the one with the gear icon, NOT the spell icon.
* Warlock: Warlock module has been updated. Thanks, Warlocomotif.
* Etc: TOC updates across the board. Sorry for being lazy with those, modules should no longer read as out of date.
- v1.1.5a corrects the glyph detection logic. There is a much more efficient way of doing this, which will make it in next release.

I don't believe this is currently possible so I suppose it is a request. Is there a way to stack multiple buffs on one row? I realise more then one buff can't be shown at once. Maybe the icon can change to the current / most recently applied buff. It would be nice for clumping similar buffs together, for example Foxes Cunning and my own Spirit Walkers Grace (two "cast while moving buffs").

First thanks Brusalk and others for continuing your work on this great addon, I couldn't play effectively without it.

I'm trying to figure out a way to edit the addon to be able to get rid of my affdots. Currently, I'm really only using affdots to track when, given pandemic, I can recast Doom, Corruption, and Hand of Gul'dan (I've primarily been playing demo of late).

What I'd like to get EH to do is this: Make my dot bar turn red when it does not benefit from pandemic (and thus i should just let it tick) and turn green when pandemic allows me to recast my dot without a global loss. I've hunted around for a way to do this but i'm just not figuring it out, I guess. Also, I'd love to get the same system in place for hand of gul'dan when it is appropriate to recast that as well (this may be a trickier move since it requires the management of HoG stacks and recharge timer to determine proper recast times).

Is there anything in the addon currently that would allow me to do this, either for all three spells, but primarily for doom and corruption (hopefully, I could also make the fix work for the haunting spirits buff as well...any solution could theoretically be similarly applied to that as well.)

Is there a setting somewhere to disable the load/reloadui spam? I don't need or want to see this each time I load into the game, change specs, or reload the UI. I know EventHorizon is loaded; there is no need to spam my chat.

Event Horizon isn't currently tracking GCDs for GCDStyle - whether line or bar. IE, with gcdStyle set to line or bar (not false) there are no lines displayed for the GCD. I'm also no longer getting lines for attempted button presses [c.sent?].

edit; just a follow up to this since I never actually checked it...... the spell it was checking for was deleted, so it just needed a new spellid.

I use this add-on for many classes and very much appreciate all your hard work. I play primarily rogue, DK and priest and tracking the dots and self-buffs become greatly simplified.

Given that buffs and dots can now be renewed with such a significant amount of time remaining (30% by my understanding), can this please be indicated on the bar? I do realize that in some cases there would be a dynamic difference in this time, for example 30% of a 4-pt rupture is less than 30% of a 5-pt rupture.

Alternatively, a variable which allows me to define a time when reapplication can be considered would be okay.

Just to give an over-explanitory example: I have rupture ticking and an envenom self-buff. Assuming 5 combo points on each, I can reapply the rupture with 7.2 seconds remaining and reapply envenom with 2 seconds remaining without losing damage or wasting combo points (ignoring energy pooling.) It would be nice if event horizon could shorten the bar (like if there were a 'recast' variable,) or change color tones to indicate that reapplication is acceptable.

I have several toons that i use this wonderful addon on. My main is a Rogue witch works like a charm. I have an alt Druid witch works witgh the feral spec but when i use the resto spec nothing comes up. No bars at all. Anyone else seing this problem?

Needless to say I love this addon. No other addon I know, can keep me on my toes when comes to rotations like EH does.
Having problems with my resto druid thought. Can someone please help?
Tanks in advance.

this is only a suggestion as I first downloaded it and put it in addons, when I opened the game the addon was really big. So I suggest use config for width 200, and for static height : 90 - 100. This will make the overall window smaller

I am trying to get them to be in the same bar and show which stage is active. I think it used to work that way back in mists. Currently all it does is show a bar for Deep Insight "84747". I am not sure if any other class has something similar to this mechanic so I don't know where to look for help.

If you have multiple playerbuffs defined, I think you may need to have each be a separate table with a tick time of 0 for each individual buff. Also, the buffs will show in priority of which one was first in the table, so if you had something like playerbuff = { {84747,0}, {84746,0}, {84745,0} }, 84747 will be displayed if you have it, otherwise it'll check for 84746, and otherwise it'll check for 84745.

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.