(114 Kb)
Updated: 01-15-17 11:21 PM
File Info
Return to Karazhan (7.1.5)
Legion (7.0.3)
Updated:01-15-17 11:21 PM
Created:10-12-09 06:05 AM
Categories:Casting Bars, Cooldowns, Buff, Debuff, Spell, DPS, Healers, Tank, Combat Mods

EventHorizon Continued  Updated less than 3 days ago!  Popular! (More than 5000 hits)

Version: 1.9.18
by: Brusalk [More]

EventHorizon now has a Discord: https://discord.gg/mR8xUUK. Come say hi!
Also, EventHorizon is now on github: https://github.com/Brusalk/EventHorizon_Continued -- You can find the latest changes there, but releases will still be released here and on Curse.
-Brusalk (Blackrock-US)

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

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 Click here to lend your support!

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.

Videos showing EH in action:
Dezzimal posted a great instructional video using a Shadow Priest for reference.
breakingsong demonstrated EH on a Destro Warlock.

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.


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.

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.

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.


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)

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

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:

local EHN,ns = ...

local config = EventHorizon.config
local c = EventHorizon.colors

local _,class = UnitClass('player')	-- These locals make in-line conditions a little easier. See the color section for a few examples.
local DK = class == "DEATHKNIGHT"
local Druid = class == "DRUID"
local Hunter = class == "HUNTER"
local Mage = class == "MAGE"
local Paladin = class == "PALADIN"
local Priest = class == "PRIEST"
local Rogue = class == "ROGUE"
local Shaman = class == "SHAMAN"
local Warlock = class == "WARLOCK"
local Warrior = class == "WARRIOR"


* 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

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:
-- Vampiric Touch/swd cd
		debuff = {34914,3},
		cast = 34914,
		cooldown = 32379,
		refreshable = true,
		hasted = true,
		requiredTree = 3,
		requiredLevel = 28,
		stance = 1,
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.

Altering existing bars:
Simply change values, delete lines of options you want to remove, or add options/values you want to add.

Comprehensive list of options and acceptable values and what they do:

Display the cooldown of the item with itemID provided. If more than one itemID is provided in a table, then EH will show the longest.

        itemID = 1543
EH will show as a cooldown on this bar the cooldown of item with itemID 1543

       itemID = { 1543, 1544, ... , 1243 },
EH will show as a cooldown on this bar the longest cooldown of the items with itemIDs 1543, 1544, ... , 1243

Display the cooldown/internal cooldown/playerbuff of the item located in the slot of slotID provided

ChestSlot = 5
FeetSlot = 8
Finger0Slot = 11
Finger1Slot = 12
HandsSlot = 10
HeadSlot= 1
LegsSlot = 7
MainHandSlot = 16
NeckSlot = 2
SecondaryHandSlot = 17
ShirtSlot = 4
ShoulderSlot = 3
abardSlot = 19
Trinket0Slot = 13
Trinket1Slot = 14
WaistSlot = 6
WristSlot = 9

        slotID = 13,
EventHorizon will show the playerbuff/internal cooldown/cooldown of the trinket located in the first trinket slot (slotID = 13)

Display the casts of the spell(s) provided on this bar.

        cast = 1543
EH will show the casts of the spell with spellID 1543

      cast = { 1543, 1544, ... , 1243 },
EH will show the casts of the spells with spellIDs 1543, 1544, ... , 1243

channel: (or channeled)
Display the cast of the channeled spell(s) provided on this bar.

        channel = {1543,3},
EH will show as a cast the channel with spellID 1543 that hits 3 times over it's full duration

       channeled = { {1543,2}, {1544,4}, ... , {1254, 6} },
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.

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

        cooldown = 1543,
EH will show the cooldown of spell with spellID 1543,

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

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.

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

		debuff = 1543,
EH will show the debuff with spellID 1543 that has no ticks. Just a simple debuff

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

        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.

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

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

        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.

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.

        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.

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.

        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.

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

        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.

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

        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.

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.

        debuff = {1543, 3},
        keepIcon = true,
EH will keep the icon of debuff 1543 regardless of what else occurs on this spellbar.

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.

        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.

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

        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!

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.

        cooldown = 1543,
        smallCooldown = true,
		requiredGlyph = 12456,
EH will show a small cooldown of the spell with spellID 1543 if they have the glyph with spellID 12456 active.

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.

        cooldown = 1543,
        smallCooldown = true,
		requiredTree = 3,
EH will show a small cooldown of the spell with spellID 1543 if the player's active specialization is the third one for their class.

        cooldown = 1543,
        smallCooldown = true,
		requiredTree = {0,1,3},
EH will show a small cooldown of the spell with spellID 1543 if the player's active specialization is either none, the first, or the third for their class.

A number between 1 and max level or nil/false. If a number than the player must be at the level or higher for the bar to show.
        cooldown = 1543,
        smallCooldown = true,
		requiredLevel = 84,
EH will show a small cooldown of the spell with spellID 1543 if the player is 84 or higher.

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.

        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.

		cooldown = 1543,
		smallCooldown = true,
		stance = {0, 1, 4},
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


* Issue #17 -- Added support for per-bar configuration of colors and texture options
* * This allows you to set most colors on a bar-by-bar basis by adding a "barcolors" option to the config for a spellbar. This option accepts a table of color IDs to the color table (RGBA).
* * Here is an example for Immolate (a DOT with a cast time):
-- Immolate
cast = 348,
debuff = {348, 3},
recast = true,
requiredTree = 3,
barcolors = {
casting = { 0, 1, 0, 1 },
debuffmine = { 1, 0, 0, 1 }
* * This spellbar will have a cast bar shown as a green bar. The debuff will display as red.
* * A full list of color typeIDs can be found in the main EventHorizon config.lua file under the colors section. Any color which is specific to a bar (IE not a global color such as gcdColor) can be configured on a bar-by-bar basis with this option.
* Issue #3 -- Added `recharge` option, which displays a segmented bar which shows all charges of an ability, and when each charge will be available. Also displays current number of charges on the icon.
* Issue #34 -- Fix low udration CDs being ignored incorrectly. Mainly for shadow priest
* Issue #2 -- Cope with buffs with unlimited duration. Buffs with unlimited duration are now treated as if they last about 24 hours. (For all intents and purposes infinite)
* Issue #36 -- Update LibArtifactData to v1.1.1

* Updated Destro Class Config to fix faulty merge commit

* Updated Class Configs to match talent/spell ID changes for 7.1.5.

* Fixed inspect Lua error

* Updated forgotten changelog

* Added Prot Warrior. Fixed requiredArtifactTalent functionality. Added separate EventHorizon_Configs myconfig folder.

* Added Prot Warrior kindly provided by @jcrate on Github!
* Disabled debug logging (PR #29)
* Fixed requiredArtifactTalent functionality. Swapped to new library which should make things more consistent. Minor startup-process rework to support change
* Added a separate EventHorizon_Configs folder to toc files -- Fix for curse client blowing out myconfigs
* * This means that you may now specify a my-config file inside the EventHorizon_Configs folder.
* * You'll need to create the folder along side the EventHorizon and EventHorizon_Class folders called EventHorizon_Configs.
* * Inside that folder, you can create `core_my_config.lua` file, which is the analogue for EventHorizon/myconfig.lua.
* * There is also `<class>_my_config.lua` for each class, which is the analogue for EventHorizon_<class>/myconfig.lua.
* * * For example, `EventHorizon_Druid/myconfig.lua` can be put into `EventHorizon_Configs/druid_my_config.lua`, and it'll be persisted between Curse-Client upgrades.

Fixed requiredArtifactTalent option for non-level-100-characters.

Added the following class configs:
Paladin - Holy/Prot/Ret
Warrior - Arms/Fury
Druid - Balance/Feral/Guardian/Resto
Death Knight - Blood/Frost/Unholy
Priest - Disc/Holy/Discipline
Rogue - Assassination/Outlaw/Sub
Monk - Windwalker
Demon Hunter - Havoc/Vengeance

Major thanks to everyone that helped contribute these class configs!

Brusalk - Sat Jul 23 03:17:26 2016 -0700
Merge pull request #5 from Brusalk/v11_wip

Added many class configs kindly provided by the users.
Fixed Green texture display bug. Greatly improved user experience with empty or nearly-empty
class configs. Fixed all the bugs.
Brusalk - Sat Jul 23 03:13:21 2016 -0700
Fix green texture display bug

Blizzard separated out setting textures from SetTexture into a new SetColorTexture.

Brusalk - Sat Jul 23 02:40:24 2016 -0700
Improved user experience with empty class configs

EH now hides the whole frame when there are no active spellbars or an empty spellconfig is present.

If there's no spellconfigs a helpful message is displayed to the user outlining why. Once per
week, the player is shown a message explaining why EH isn't shown if their spell-config happens
to now allow _any_ bars to show.

Also changed default appearance to more gracefully handle low-numbers of active bars. (Turned on
config.staticframes to 4). Slightly widened default icon width.

Bugs Fixed: Fixed Delayed Load issue with ArtifactLib. Fixed improper display of hidden popups
if earlier popups were not hidden forever.

Brusalk - Sat Jul 23 00:36:53 2016 -0700
Fixed cata talent req for real this time. Now only show DG/Infernal if GoSUP isn't talented.
Brusalk - Sat Jul 23 00:36:01 2016 -0700
Enabled staticframes on by default, and widened default icon-width and individual bar
height.This should help EH gracefully scale to low numbers of active spell bars. The numbers are
turned such that it'll appear that EH grows up to 4 bars, and then begins to shrink each bar to
stay within the static-height.

Brusalk - Fri Jul 22 23:50:21 2016 -0700
Destro Warlock config now properly displays cata only when talented
Brusalk - Fri Jul 22 01:14:10 2016 -0700
Added Holy/Disc priest config provided by Sig!
Brusalk - Fri Jul 22 00:58:09 2016 -0700
Added Enhance Shammy Config provided By StragaSevera!
Brusalk - Fri Jul 22 00:55:21 2016 -0700
Fixed ele shaman config apocalypse
Brusalk - Fri Jul 22 00:54:51 2016 -0700
Added Sub Rogue Config kindly provided by Neloangelo13!
Brusalk - Fri Jul 22 00:45:31 2016 -0700
Added MM Hunter to display list
Brusalk - Fri Jul 22 00:44:40 2016 -0700
Added Hunter config provided by Stilmore!
Brusalk - Fri Jul 22 00:42:13 2016 -0700
Updated TOCs to match actual live version number
Brusalk - Fri Jul 22 00:34:10 2016 -0700
Added Shadow Priest Class Config provided by Vaelynn
Brusalk - Fri Jul 22 00:33:35 2016 -0700
Added Discord/Github Notifications on Login
Brusalk - Thu Jul 21 23:37:00 2016 -0700
Added Aff/Demo to Legion Class Config Status
Brusalk - Thu Jul 21 23:31:20 2016 -0700
Updated Warlock Class Config with Config provided by BackJauer Warlock Class Config with Config provided by BackJauer

- Added requiredArtifactTalent requirement with 3 usages:
- 1) requiredArtifactTalent = spellID | Bar has a requirement that the given artifact talent (by passive SpellID) has at least one rank selected
- 2) requiredArtifactTalent = { spellID, rank# } | Bar has a requirement that the given artifact talent (by passive SpellID) has at least 'rank' number of points selected
- 3) requiredArtifactTalent = { { spellID1, rank1 }, { spellID2, rank2 }, ... , { spellIDN, rankN } } | Bar has a requirement that all spells must have at least their associated number of ranks
*Class Configurations
- Rogue
- - Added Assassination Class Config kindly provided by PessimiStick

- Updated core addon functionality for legion beta
*Class Configurations:
- Warlock
- - Implemented Destro Warlock Spec Class Configs
*Misc Notes:
- I do not have the time or will to update every class config for every new spec/class redesign for Legion. In the past this has taken me upwards of 80 hours, and I don't have the will anymore.
- If your class/spec has not yet been implemented, please give me a class/spec config for Legion beta, and I will add it to the default for the addon. I just can't proactively do this anymore.
- I love each and every one of you. (I love you more if you give me a class/spec config too! ^.^)

*Class Configurations:
- Hunter
- - Fixed GCD tracking
- - Removed old spell IDs that no longer exist
- Warlock
- - Fixed missing Dark Soul bars for Affliction and Demonology

- Removed addon load spam from being on by default.
*Class Configurations:
- Hunter
- - Fixed Dire Beast to properly display cooldown and playerbuff
- Druid
- - Removed references to spells which no longer exist

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

- Fixed GetAddOnInfo bug disabling get via name and enabled returning false for Load on Demand addons always.

- Fixed GetTalentInfo and GetSpecialization bug causing talents and abilities to display incorrectly.
- - GetSpecialization was functioning incorrectly for requiredTree = {0, ...} class configs.

- Fixed notification error w/ fresh EventHorizonDB variable.

- Got core working for WoD. (First rev.)
- Added notification on first load (one time only) about current state of addon and WoD class config status.
- Fixed GetTalentInfo, GetSpellInfo, and GetNumTalents MoP -> WoD incompatibility issues.

- Added the "Adding [bar]" debug messages on login/retalent to debug output only.
*Class Configurations:
- Druid
- - Separated sunfire/moonfire spells into two separate bars
- Hunter
- - Fixed Dire Beast showing for all specs when untalented
- Rogue
- - Applied fix for Shadowblades

*Class Configurations:
- Druid
- - Fixed issue in config around dream of cenarius talent. Should work again
- Rogue
- - Updated completely for MoP

*Class Configurations:
- Warrior
- - Removed Deadly Calm (No longer in-game)
- Hunter
- - Fixed a typo causing major issues

*Class Configurations:
- Shaman
- - Fixed configuration error with level 60/90 talents.

- Added support for requiredTalent (graciously given to me by Sylna (http://www.curseforge.com/profiles/Sylna/))
*Class Configurations:
- All
- - Added appropriate talents that weren't there before due to requiredTalent limitations
- Hunter
- - Removed Readiness
- Warlock
- - Added Havoc
- - Added RoF

- Changed the refreshable config option to be always true unless explicitly set to false. Shouldn't break anything and should fix tick issues when refreshed
*Class Configurations:
- Warlock
- - Added missing comma
- - Unstable Affliction will now correctly show ticks every 2 seconds unhasted

- Removed the spellIDs in tooltips showing by default. If you wish to enable them again, edit the line in EventHorizon.lua that reads local spellIDsEnabled = false to local spellIDsEnabled = true
*Class Configurations:
- Paladin:
- - Prot:
- - - Removed Inquisition
- - - Fixed spellIDs
- - Holy:
- - - Fixed SpellIDs
- - All:
- - - Fixed Judgment SpellID

- Fixed playerbuff/debuff not being interpreted correctly.
*Class Configurations:
- All Classes
- Fixed errors in class configs partially causing playerbuffs/debuffs to not be interpreted correctly. All intended debuffs/buffs should show correctly now
- Rogue:
- Fixed Sub Hemo bar. Should now correctly show Hemo DoT duration
- Priest:
- Added PoM CD to renew bar
- Paladin:
- Removed spellIDs which do not exist from class configuration

- 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

- 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)

*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.

*Class Configurations:
- Mage:
- Fixed issue with talents for fire mages.
- Shaman:
- Slightly Updated Elemental Shaman configuration.

*Class Configurations:
- Fixed errant newSpell() in disc priest config.
- Vampiric Touch now has a recast line
- Mind Melt correctly shows on Mind Blast bar.
- Added Mind Flay/Devouring Plague bar to Shadow

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

*Lots of fixes!

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

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

*Fixed an error in the config.lua file making it harder to understand

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

*Class Configurations:
- Hunter: Updated for MoP
- Druid: Updated for MoP. Balance may not be working 100%
- Monk: Added and updated for MoP. Missing Brewmaster
- Warlock: Affliction updated for MoP. Demonology and Destruction Missing

* 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.

* 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 r377: Eep.
* Core: Fixed error spam when mouseover units are being actively tracked.
* Core: Increased the period between mouseover aura checks from ~100ms to ~150ms.

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 r335:
* TOC: Fixed. Global savedvars weren't being declared due to an old package script.
* r335-2 corrects another global savedvar issue.

v1.9 r334:
* Core: Killed off some debug code that snuck into r333.

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 r329:
* Core: Fixed stance/form detection.
* Priest (Beta/PTR): Filler bar now tracks Shadow Orbs instead of Mind Spike stacks.

v1.9 r327: Warlock love inc.
* Core: Bypassed a check in UPDATE_SHAPESHIFT_FORM when playing a Warlock. The Immolation Aura bar now appears as intended.
* Warlock (Beta/PTR): Removed Curse bar.
- Demonology: Immolation Aura now appears as intended when in metamorphosis. Bar order has been adjusted.
* Warlock (Live): Adjusted Demonology bar order to closer reflect Beta bars. New filler bar, showing Molten Core procs instead of ISB.

v1.9 r322: SVN messed up EventHorizon.lua in r321, sorry about 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.

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).

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.

* 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.

* Core: Fixed a non-fatal Lua error.

* 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.5c: No core changes. If you're completely happy with your class layouts, feel free to skip this release.
* Warrior: Arms rehaul, etc.
- Arms: Reordered the bars. They feel less clunky now, IMHO.
- Prot: Revenge bar now tracks Sword and Board instead of Improved Revenge's stun.
* Druid: Minor tweaks.
- Feral: Reordered bear bars a bit. I haven't had an opportunity to test these changes, so please send feedback. Frenzied Regeneration isn't tracked on purpose, a dedicated cooldown monitor does a much better job for it.
- Balance: The Typhoon bar now tracks pretty much every worthwhile idol proc.
* Mage: Fixed up +crit debuff tracking and made it consistent across specs.
* Rogue: The inactive/optional Expose Armor bar has been updated to track Sunder Armor as well.

* 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.

* 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.

* 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.

* Core: Fixed a minor Lua error resulting from delaying (and possibly cancelling) a tracked spellcast under 1.5 seconds. Once again, copypasta kills.

* 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.

* 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.

* 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.

* 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.

* 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.

* 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.

* Core: Fixed a very old (possibly ancient) bug involving spellcast delays.

v1.1.3: Glyph support!
- This release is somewhere between beta and release quality. I've ironed out as many bugs as I could find, but some may remain. Please let me know if you run into any issues.
* Class modules: A new variable has been added - glyphrefresh = {Stacks, GlyphID, "Trigger Spell"}
* Core: Glyphs are now detected on frame load/reload. Some extra glyph-related events have been added to make sure glyph changes aren't missed. Module hackers: Print EventHorizon.glyphs ingame if you need a list of currently equipped GlyphIDs.
* Core: When casting a spell that uses the glyphrefresh var, and currently using the appropriate glyph, the number of remaining glyph-based refreshes is displayed as a stack count on the spell's icon. This is much more complicated than it sounds and may result in unexpected bugs, but should be safe for all intents and purposes.
* Core: Gnomish fanatics have found their way to the CLEU filtering mechanisms. Let's hope they didn't break too much on their way out.
* Druid: Glyphs of Starfire and Shred have been added to Moonfire and Rip respectively.
* Rogue: Rupture somehow lost its refreshable tag, which has been corrected. Glyph of Backstab has been added to Rupture.

* Core: DoT tick recalculation was trying to calculate channeled spells, producing an error.

* Config: Reverted the cooldown layout change for now.
* Priest: Missing stance flags added. Sorry about that, Shadow Priests.
* Mage/Arcane: Updated Arcane Blast for 3.2.2.

v1.1: Look, Feel, and Quirks update of d00m.
Major changes:
* Core: Class coloring has been implemented. Usage and examples are in config.lua.
* Core: Tick indicators may now recalculate based on the last tick to fire. This fixes all known cases of incorrect tick displays. This IS affected by your latency, and will take a tick once a spell is refreshed to update. A 200ms grace period is allowed after a spell ends for the last tick to show. If you have any issues with this, by all means let me know.
* Config: The following indicators/bars will now be class colored by default: 'sent', 'tick', 'debuffmine', 'debuff' (darkened). The background has been made slightly more opaque for visibility. Priests will find that their class color is automatically darkened a little

Minor changes:
* Core: The 'auraunit' class config setting should play nicely with target changes now.
* Core: Cooldown lines have had their placement adjusted slightly due to visibility issues. This change may not be final, expect tweaks over the next few releases.
* Config: Changed config.future from 9 to 12.
* Config: Class locals have been added to config.lua. This is mainly for copypaste over to myconfig.lua to make adjustments per class a little easier to type out.
* Config: The coloring section is now commented much more thoroughly.
* Config: Removed color.default from the color section, as it should never need to be changed anyway.
* Config: config.recalculate has been added, allowing the option to enable/disable the new tick checks. Enabled by default.
* Druid: HoT ticks have been added (copypaste is bad, mkay?).
* Priest: Renew now tracks target, not player (again with the copypaste).
* Etc: Changelog updated and hopefully easier to read.

v1.0 (v0.2 again?): Healer support!
- Major version bump. Postrelease note: This should've been a beta.
- Didn't get to the coloring portion this time around, expect it in the next update. Buffs and casts for healer specs may be a little hard to tell apart for now.
* Core: Heal-over-time spells are now fully supported. Consult the Priest and Druid modules for usage.
* Core: Many changes to the UNIT_AURA code. Hopefully there will be no more cases of bars acting oddly.
* Core: Tidied up CLEU filtering a bit. There may be a performance improvement with this build (one table check versus a LOT of comparitive statements).
* Core: Fixed many issues involving buffs tied to spells with casting times.
* Core: Added an alias for the spell config flag 'cleu'. You may now use 'event' instead. Consult the Priest module for usage. Warning: Only use the flag when you can't get ticks to show in the past section of the bar in any other way. Doing otherwise will provoke a nil error which I haven't been able to track down.
* Priest: Holy and Disc are now fully supported. Lesser Heal tracks Serendipity, Greater Heal tracks Inspiration (self-casted only for the moment), Penance tracks Grace. Can't track PW:S alongside Weakened Soul quite yet. Bars will show when not in shadowform.
* Druid: Resto is now fully supported. Nourish also tracks Nature's Grace, for the curious. Requires Swiftmend talented to see the bars.

v1.0 (v0.12) Beta 5:
* Core: Buffs may now use the 'dot' flag to signify a heal-over-time spell. SPELL_PERIODIC_HEAL is automatically tracked. Heal-over-time spells will now be able to track ticks with no additional config required. Refer to the Hunter module for an example.
* Hunter: Added Mend Pet with a working tick display. Should be fully accurate.

v1.0 (v0.12) Beta 4:
* Core: Drycode fix, can't use SetFrameLevel on the nowIndicator. Addon is usable again, sorry about that.

v1.0 (v0.12) Beta 3:
* Core: Talents are now updated when using /ehz to unhide the addon.
* Etc: Added class modules to the beta release. The original EH files are no longer required.
* Warrior: Added EventHorizon_Warrior to the release.
* Deathknight: Added Tyno's excellent EventHorizon_Deathknight to the release, with some minor changes.

v1.0 (v0.12) Beta 2:
* Config: Color settings are now included in config.lua. The provided defaults are not final. (Taroven)
* Core: Handle is now clamped to the screen, preventing loss of the frame outside of the screen edges. (Tifi)

v1.0 (v0.12) Beta 1:
* Class modules: Added NewSpell config "auraunit = 'unitID'" to playerbuff settings. (Taroven)
* Core: Moved "interesting event" application to a new function. Users will see no difference, module developers may find some use. Documentation will come when modules have finer access to EventHorizon's bars. (Taroven)
* Bar config: Buffs are now correctly colored. (Taroven)

* Class modules: The file myconfig.lua is now loaded if present, e.g. EventHorizon_Druid/myconfig.lua
* Shaman: Added spells Lava Lash, Stormstrike, and Earth Shock when specced Enhancement.
* Bugfix: Disabling the GCD indicator with config.gcdStyle=nil won't cause any more errors.

* Druid: Cleaned up comments. Added simple Eclipse tracking (duration and cooldown, no proc info). Rip set to refreshable to fix tick timing with Glyph of Shred.
* Hunter: Arcane Shot not tracked when Explosive Shot is talented. Moved Steady Shot to above Kill Shot. Cleaned up some oddities with the comments.
* Rogue: Moved ShS nearer to the bottom.
* Warlock: Added Glyph of Life Tap for all specs. Added Drain Soul when specced Death's Embrace.

* Mage: Added Winter's Chill tracking to the Frostbolt bar. Also added Blizzard, but it's commented out by default.
* Paladin: Added Protection spells, required talent Hammer of the Righteous.
* Paladin: Changed required talent for shared Prot/Ret spells to Divine Strength.
* Paladin: Reordered all spells to reflect current prioritization.
* Warlock: Show Immolate only if Unstable Affliction isn't talented.

* Warlock fixed: The spell ID of Conflagrate changed.
* Hunter: Added Black Arrow.
* Removed stuff for 3.09.

* Fixed: Using the slash command will now completely disable the addon. The state is saved in the SavedVar.
* Fixed: Indicators are now hidden when their bar is hidden.

* Fixed: Ticks from channeled spells were not properly unregistered. This could sometimes lead to disappearing ticks in other spells bars.

* Fixed: Overlapping segments won't flicker anymore.
* Added config.auraunit field for spell configs to specify a non-default unit (e.g. 'player' for debuffs).
* Paladin: Set Divine Storm as required talent for all spells to make the module Retribution-only.
* Mage: Added Arcane and (some) Frost spells. Added talent requirements for Fire spells. Added Fireball.
* Getting ready for 3.1: Druids' Berserk and Paladins' Divine Storm talent index changes, Warlocks' Siphon Life gets removed. These also should work now on the PTR.

* The spell bars that depend on talents are now created/shown/hidden when the talents change. Reloading the UI is no longer necessary. Should be working in both 3.0 and 3.1.
* Added Paladin module from Psychosomatic. Retribution only, still needs talent dependencies.
* Priest: Added talent dependencies.

* Bar segments are optionally textured now instead of using a solid color.
* Added slash commands /eventhorizon and /ehz to toggle the visibility of the main frame.
* Added the ability to track debuffs which are unique per mob. The debuff bars get a slightly different color when they were not applied by you.
* Druid: The Mangle bars now track Mangle and Trauma debuffs. Added cooldown for Mangle - Bear. Added DoT ticks for Insect Swarm and Moonfire.
* Mage: The Scorch bar now tracks both Imp Scorch and Winter's Chill.
* Tweaked the default texture a bit.

* Removed some settings in the class files that were overwriting settings in the master config.

* Warlock: Show Incinerate if Emberstorm is talented, otherwise show Shadow Bolt. Removed Molten Core bar and Backdraft tracking from the default config, as they have no influence on the rotation.
* Bugfix: The default anchoring of the handle wasn't working.

* Added config.spacing = <number> to set the space between two bars.
* Added config.iconborder = <boolean> option to toggle the default Blizzard icon border.
* Added config.scale = <number> option to scale the main frame.
* Added GCD indicator:
config.gcdStyle = 'line' displays the end of the GCD as a thin line.
config.gcdStyle = 'bar' displays the GCD as a bar from now to the end.
config.gcdStyle = nil disables the GCD indicator.
config.gcdColor = {r,g,b,a} sets the color.
* The handle and the background frame are now parented to the main frame. If you use Goose to show/hide EventHorizon, you only need to specify conditions for EventHorizonFrame.

* Added minstacks=<number> syntax. The Imp. Scorch debuff bar is shown only when five stacks are applied.
* Fixed Rogue Hunger for Blood talent index.
* Major bug fixed: In some cases the main frame was created multiple times.

* Added modules for Druids, Hunters, [FFB-]Mages, Rogues and Warlocks.
* Most of the settings were moved to the config.lua files. When you want to change something, look there first.
* Spell frames can now be shown/hidden depending on stance. Look at the Druid config for an example.
* Spell frames can now be created depending on talents. When changing the spec, you may need to reload the interface. Again, look at the Druid config.
* Added an (optional) backdrop frame. Enabled by default.

* Bugfix: When the target dies, predicted ticks are now removed.
* Bugfix: Textures of 1 pixel width should now be visible even when the UI scale is low.

* Minor bug fix.

* Predicted DoT/MF ticks lying in the past are now replaced by actual ticks taken from the combat log.
* If SWP is refreshed after the last tick occured, it's treated like it was recast.

* Forgot to add the background texture. -.-

* Initial beta release.
Optional Files (2)
File Name
11-10-14 11:20 PM
11-05-10 07:02 AM

Archived Files (76)
File Name
01-12-17 01:38 AM
01-12-17 12:30 AM
09-28-16 01:22 AM
09-26-16 11:44 PM
08-30-16 12:09 AM
07-23-16 05:01 AM
07-10-16 11:08 PM
05-21-16 07:06 PM
07-23-15 05:02 PM
04-20-15 08:35 PM
11-16-14 07:45 PM
09-06-14 07:11 PM
07-27-14 05:24 PM
07-20-14 11:31 PM
07-20-14 11:00 PM
01-06-14 11:31 PM
09-21-13 02:42 PM
09-16-13 09:04 PM
09-16-13 12:13 AM
09-15-13 08:03 PM
09-01-12 01:15 PM
08-31-12 10:58 PM
08-31-12 06:14 PM
08-31-12 04:37 PM
08-30-12 06:44 PM
08-30-12 03:34 AM
08-30-12 02:06 AM
08-30-12 01:51 AM
08-29-12 10:01 PM
08-29-12 06:52 PM
08-28-12 08:17 PM
08-28-12 02:35 AM
07-25-12 09:13 PM
07-21-12 04:15 PM
07-07-12 01:31 AM
07-06-12 05:30 PM
05-02-11 12:36 PM
04-03-11 10:02 AM
02-09-11 04:01 PM
11-09-10 06:11 PM
10-27-10 10:52 PM
1.9 r378
10-24-10 11:24 PM
1.9 r377
10-22-10 08:37 AM
1.9 r376
10-21-10 10:35 PM
1.9 r370
10-20-10 05:33 PM
1.9 r362
10-16-10 06:04 PM
1.9 (r274)
07-21-10 06:14 PM
1.9 (r272)
07-20-10 10:56 PM
1.9 (r249)
06-14-10 09:35 AM
1.9 (r241)
06-09-10 01:24 PM
1.9 (r233)
06-05-10 02:22 PM
1.9 (r232)
06-03-10 03:21 PM
04-21-10 01:41 AM
04-19-10 03:00 PM
03-23-10 05:28 PM
03-19-10 04:42 PM
03-18-10 04:33 PM
03-13-10 06:02 AM
01-10-10 06:31 PM
01-03-10 02:11 PM
12-24-09 12:41 PM
12-16-09 02:44 AM
12-09-09 05:30 AM
11-29-09 05:38 AM
11-20-09 05:05 PM
11-20-09 12:37 AM
11-18-09 10:10 PM
11-12-09 09:54 PM
11-06-09 12:44 AM
11-04-09 12:58 AM
11-03-09 05:48 AM
10-28-09 06:01 AM
10-23-09 04:42 AM
10-14-09 12:09 AM
10-13-09 11:49 PM
10-12-09 06:05 AM

Post A Reply Comment Options
Unread 02-22-10, 08:25 AM  
A Kobold Labourer

Forum posts: 0
File comments: 8
Uploads: 0
Originally posted by Taroven
You've got a 17-bar EventHorizon layout. I can't even tell wtf is going on with it aside from two Haunt bars, two Shadow Bolt bars, two Drain Soul bars, something having to do with your trinkets, and 4 bars that didn't even twitch for the entire encounter you shared.
Well, i've got Life Tap bar at the top, 6 bars for target debuffs, 6 bars for focus debuffs and 4 bars for procs/internal watch (these last four are barely used but still I prefer one mod for tracking everything rather than mixing 2-3 different addons for doing that)

and.. oh well, drain soul at focus can be removed, never found myself using that one.
Report comment to moderator  
Reply With Quote
Unread 02-22-10, 05:10 AM  
A Cyclonian
AddOn Author - Click to view AddOns

Forum posts: 49
File comments: 837
Uploads: 14
Thank you for the feedback. However, I will not be taking any action in regard to your concerns.

Color coding: Planned for Axis, has been for quite some time.

1) Won't be an issue in Axis. Not going to bother trying to fix for EventHorizon since it would mean rewriting many, many things. Channeled spells simply don't play nice with auras. You've got plenty of other bars, put one of the dead ones to use.

2) So basically, rather than catch the casting time once at the beginning of the cast, you want EH to constantly check it. There's a few problems with that.
- First and foremost, there's no GetSpellCastTime(spell) function. All we get is UnitCastingInfo(unitid), which allows us the ability to find the timer (meaning, exact time of start and stop) of the spell currently being cast. The only other way is to scrape information from the spell tooltips. Wouldn't be so bad if all tooltips were created equal (meaning all information in the same spot every time, or at least worded the same), but then...
- We'd have to scrape the tooltip every single time any buff or debuff is gained or lost on the player, in addition to whatever event signifies haste changes... hell, might as well just check it 10 times a second via an OnUpdate, since that's about how often that all happens anyway. Let's just ignore the fact that tooltips don't always update instantly.
- Did I mention yet that all this would add about a huge amount of code to EventHorizon while making it use a gigantic amount of processing power?

It's a guideline. Some things are done in a simple way for good reason, or perhaps because there's no real reason to make them more complicated. The recast line is one of those things, and trust me - It's using the exact same code in Axis.

Taking a step back from the addon dev role for a moment:

While I can at least pretend to understand your concerns and would be absolutely thrilled to help if the requests were at all feasible, I believe you have bigger fish to fry at the moment and would like to direct your attention to them.

You've got a 17-bar EventHorizon layout. I can't even tell wtf is going on with it aside from two Haunt bars, two Shadow Bolt bars, two Drain Soul bars, something having to do with your trinkets, and 4 bars that didn't even twitch for the entire encounter you shared.

Let's go over that again.

17 bars.

Duplicate spells.

Spells that you probably shouldn't even be wasting space on because they're omnipresent anyway or have too damn long of a cooldown for EH to be useful for.

That's not 7k+ DPS easymode, that's information overload in a UI that seriously hurts to look at.

Edit: Grammar fails me.
Former author of EventHorizon Continued and Other Releases.
Last edited by Taroven : 02-22-10 at 05:12 AM.
Report comment to moderator  
Reply With Quote
Unread 02-21-10, 10:45 PM  
A Kobold Labourer

Forum posts: 0
File comments: 8
Uploads: 0
I would like to thank you for keeping this project alive. Easily the best addon ever for an affliction warlock.

Would like to report few issues that come to my mind that could be corrected:

1. I changed the default warlock configuration file the way that shadow mastery debuff was displayed "under" the drain soul line (added the debuff = 17800, line under Drain Soul chunk of code). The problem is, each time I cast Shadow Bolt, followed by Drain Soul, Shadow Bolt lands actually after I start casting DS, and refreshing the debuff, makes the vertical "tick" bars disappear, making it nearly impossible to guess when to "break" drain.

You can see this happening at 2:42 of the following video <<youtube link>>

2. The haste changes that take place during combat not always changing the length of the "suggested recast safe zone" are making me opt for just letting the dot fall off completely and recast them afterwards, which is not optimum. You can see this happening on my video at 0:59 when eradication pops and I have to recast UA few seconds later and just decide to cast some filler, because the real cast time of UA at that moment was clearly shorter than suggested.

I use heavily modded and textured version of your addon but both of these are happening in original version too.

Color coding by spell (allthough maybe a bit overkill) might come in handy for people like me (you'll understand why if you watched the video)
Report comment to moderator  
Reply With Quote
Unread 02-19-10, 11:17 PM  
A Fallenroot Satyr
AddOn Author - Click to view AddOns

Forum posts: 26
File comments: 101
Uploads: 10
I will likely upload the UI sometime soonish, just keep in mind that the opening in the bottom panel has a pretty specific size, and while it works for some/most talent specs- it might not work for all.
Report comment to moderator  
Reply With Quote
Unread 02-18-10, 04:19 AM  
A Cyclonian
AddOn Author - Click to view AddOns

Forum posts: 49
File comments: 837
Uploads: 14
Originally posted by Repaxan
Any chance this could be put up for download?
You might wanna PM him about that. =P
Former author of EventHorizon Continued and Other Releases.
Report comment to moderator  
Reply With Quote
Unread 02-18-10, 01:21 AM  
A Kobold Labourer
AddOn Author - Click to view AddOns

Forum posts: 0
File comments: 38
Uploads: 1
Originally posted by Warlocomotif
Awesome to get an update on axis, really looking forwards to it

Just made a new UI, and gave EH a pretty central place in it: screenshot
Any chance this could be put up for download?
Report comment to moderator  
Reply With Quote
Unread 02-17-10, 02:40 AM  
A Cyclonian
AddOn Author - Click to view AddOns

Forum posts: 49
File comments: 837
Uploads: 14
Originally posted by Warlocomotif
Awesome to get an update on axis, really looking forwards to it

Just made a new UI, and gave EH a pretty central place in it: screenshot
Good stuff, flows nicely and looks great.

Here's a screeny of mine, from a random lowbie BT run a few days back. I designed my oUF layout around EH forever ago, it's been evolving ever since.

BTW, I've got a tiny little unreleased addon that tweaks Recount's buttons, hiding them until mouseover. Looking at that screenshot, looks like you might like it. Download's here.
Former author of EventHorizon Continued and Other Releases.
Report comment to moderator  
Reply With Quote
Unread 02-16-10, 11:39 PM  
A Fallenroot Satyr
AddOn Author - Click to view AddOns

Forum posts: 26
File comments: 101
Uploads: 10
Originally posted by Taroven
Axis update!

Took much longer than expected for this. I've had a breakthrough with getting the three levels of config (global -> container -> bar) all playing along nicely, and the rest of the code is now coming along quickly. Seriously, it's little things like that which can put an otherwise healthy project on indefinite hold.

Now that that's out of the way, shouldn't be too long till I have something along the lines of a pre-alpha ready.
Awesome to get an update on axis, really looking forwards to it

Just made a new UI, and gave EH a pretty central place in it: screenshot
Report comment to moderator  
Reply With Quote
Unread 02-14-10, 10:01 AM  
A Cyclonian
AddOn Author - Click to view AddOns

Forum posts: 49
File comments: 837
Uploads: 14
Axis update!

Took much longer than expected for this. I've had a breakthrough with getting the three levels of config (global -> container -> bar) all playing along nicely, and the rest of the code is now coming along quickly. Seriously, it's little things like that which can put an otherwise healthy project on indefinite hold.

Now that that's out of the way, shouldn't be too long till I have something along the lines of a pre-alpha ready.
Former author of EventHorizon Continued and Other Releases.
Report comment to moderator  
Reply With Quote
Unread 02-13-10, 06:08 PM  
A Cyclonian
AddOn Author - Click to view AddOns

Forum posts: 49
File comments: 837
Uploads: 14
Originally posted by daeger
Edit: Unrelated, but I should also mention that Shadow Word Pain almost always falls off earlier than EH suggests.
That's Blizzard for ya. The spell's duration is set to its maximum when refreshed via Mind Flay, but the tick timers are left untouched. The game drops the aura after the last possible tick of the spell, even if there's enough time to refresh it with MF again. I believe Corruption does the same thing.

As for the problem at hand, try running EH with only the bare essentials for a while. I'll leave it to you what essential is. If you can't survive healing without Grid, disable its plugins and just use it standalone.

I can't make any promises. I've never experienced a problem using EH on my priest, in any spec or size of raid. However, the symptoms do point to either a debuff cap in action or another addon hooking something in a very bad way, causing other addons to have issues.
Former author of EventHorizon Continued and Other Releases.
Report comment to moderator  
Reply With Quote
Unread 02-13-10, 08:42 AM  
A Murloc Raider

Forum posts: 4
File comments: 167
Uploads: 0
Edit: Unrelated, but I should also mention that Shadow Word Pain almost always falls off earlier than EH suggests.

Originally posted by Taroven
If addons can't find the debuffs, the Blizzard target frame can't either.

EH uses direct aura lookups via UNIT_AURA events (which fire every time a buff or debuff is applied or changes on a target, not spell specific), meaning if the debuff is visible to the API whatsoever, EH will see it even if it missed the event where the debuff was applied in the first place.

Again, I would like a complete list of your addons. There could be one in there mucking with the aura functions.
Okay, I'm excluding all DataBroker addons:

Deadly Boss Mods
Grid + Lots of Extensions
Mik's Scrolling Battle Text
Stuf Unit Frames
Last edited by daeger : 02-13-10 at 12:37 PM.
Report comment to moderator  
Reply With Quote
Unread 02-12-10, 09:06 PM  
A Cyclonian
AddOn Author - Click to view AddOns

Forum posts: 49
File comments: 837
Uploads: 14
Originally posted by daeger
Ick. Yeah, there were a lot of debuffs on the mob, that sounds plausible. Am I going to have to resort to using the Blizzard Target Frame for dpsing?

Edit: Actually I've had it happen in 10-man too. I usually have to heal 25-mans..
If addons can't find the debuffs, the Blizzard target frame can't either.

EH uses direct aura lookups via UNIT_AURA events (which fire every time a buff or debuff is applied or changes on a target, not spell specific), meaning if the debuff is visible to the API whatsoever, EH will see it even if it missed the event where the debuff was applied in the first place.

Again, I would like a complete list of your addons. There could be one in there mucking with the aura functions.
Former author of EventHorizon Continued and Other Releases.
Report comment to moderator  
Reply With Quote
Unread 02-12-10, 07:56 PM  
A Murloc Raider

Forum posts: 4
File comments: 167
Uploads: 0
Originally posted by Taroven
Bolded the key part there.

Addon author's creed: If the same exact thing is happening in two addons using two different methods of processing, the game's mechanics and API are usually to blame.

Assuming you were running 25man (spore reference = Naxx or ICC), you probably experienced the point where so many debuffs were on the mob that the UI couldn't even see some of them. Not something any addon author could fix.
Ick. Yeah, there were a lot of debuffs on the mob, that sounds plausible. Am I going to have to resort to using the Blizzard Target Frame for dpsing?

Edit: Actually I've had it happen in 10-man too. I usually have to heal 25-mans..
Last edited by daeger : 02-12-10 at 07:58 PM.
Report comment to moderator  
Reply With Quote
Unread 02-12-10, 05:34 PM  
A Cyclonian
AddOn Author - Click to view AddOns

Forum posts: 49
File comments: 837
Uploads: 14
Originally posted by daeger
Shadow Priest. Devouring Plague and Vampiric Touch. Oddly enough, Stuf Unit Frames wasn't picking them up either. It eventually fixed itself later into combat but I lost a lot of dps. I did not think to get a screenshot, I was too busy calling out spores.
Bolded the key part there.

Addon author's creed: If the same exact thing is happening in two addons using two different methods of processing, the game's mechanics and API are usually to blame.

Assuming you were running 25man (spore reference = Naxx or ICC), you probably experienced the point where so many debuffs were on the mob that the UI couldn't even see some of them. Not something any addon author could fix.
Former author of EventHorizon Continued and Other Releases.
Report comment to moderator  
Reply With Quote
Unread 02-12-10, 01:32 PM  
A Murloc Raider

Forum posts: 4
File comments: 167
Uploads: 0
Originally posted by Taroven
I'll need a few things for any actual troubleshooting.
- Class and spec. I can't do anything if I don't know what you're doing. If this is happening with more than one character, same deal.
- Which bars aren't working properly?
- Does this only happen in a party/raid? If so, does it only happen with certain classes/specs in the raid?
- A list or screenshot of your installed addons would be excellent.

WoW 3.3 introduced a nasty glitch where some spells sometimes aren't reported to the combat log, which to this date has not been fixed. As far as I've seen EH isn't affected too horribly by this, as it uses some very solid aura handling, but there are certain things handled via the combat log only which can't be avoided.

Thus the need for a lot of info. I don't play every class/spec and not everyone with an issue reports these things. With any luck it'll be something I can easily fix, possibly even giving me a reason to throw out a new release.
Shadow Priest. Devouring Plague and Vampiric Touch. Oddly enough, Stuf Unit Frames wasn't picking them up either. It eventually fixed itself later into combat but I lost a lot of dps. I did not think to get a screenshot, I was too busy calling out spores.
Last edited by daeger : 02-12-10 at 01:32 PM.
Report comment to moderator  
Reply With Quote
Post A Reply

Category Jump:

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.