Go to Page... |
Compatibility: | Dragonflight (10.0.2) Shadowlands patch (9.2.7) Dragonflight Pre-patch (10.0.0) |
Updated: | 01-02-23 03:01 PM |
Created: | 10-12-09 06:05 AM |
Downloads: | 201,063 |
Favorites: | 380 |
MD5: | |
Categories: | Casting Bars, Cooldowns, Buff, Debuff, Spell, DPS, Healers, Tank, Combat Mods |
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 (Kilrogg-US)
EventHorizon is now updated and working for Shadowlands. Just download the most recent version and you should be good to go!
If you have and comments, concerns, questions, suggestions, anything, don't hesitate to contact me either through comments here or via mail or whisper in game.
If you feel that the class config for your class is not up to snuff then please let me know why and update it yourself!
There is now a how-to on class configuration below!
There is also a how-to on customization of how EH looks below as well. Check it out!
Please be aware that I'm rewriting this addon from scratch to be released officially soon (tm). Addon development has had to take a backseat to real life for the past few months though I've been working on it as much as I can. (Also, coming in the rewrite is an in-game configuration menu as well as the ability to alter class-configs in-game to make it easier to customize EH.)
If you have a few extra bucks this month and you like all my work, consider chipping in
What does EventHorizon do?
EventHorizon displays all of your class/spec's rotational abilities on a common time scale. This means that instead of seeing a regular percentage-based timer bar, EH shows you exactly what is happening in relation to everything else. If that sounds complicated at all, just look at the screenshots.
The basic idea: An ability that lasts 12 seconds and has 6 seconds remaining shouldn't look exactly the same as one that lasts 5 minutes and has 2.5 minutes remaining.
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 VS Code if you wish to edit the configuration files. While this isn't required by any means, an editor with syntax highlighting makes changing the files MUCH easier.
* The default configuration for EventHorizon is located in EventHorizon\config.lua. This file contains every setting available for EH and is heavily commented to help tweak things to your liking. This file may be deleted and EventHorizon will maintain its functionality (not that I would ever recommend doing that).
* Any changes you make to config.lua will be removed when you update EventHorizon. This is by design. HOWEVER, there's an easy way to get around that. Simply create a new file (or a copy of config.lua) named "myconfig.lua". This file is automatically loaded, and because it loads after config.lua, the settings in myconfig.lua will always be the ones to appear in-game.
Files
There are 2 files which you can edit to change the physical appearance of EventHorizon including colors, size, global functionality and other things. I'm going to assume that you have the most recent version of the configuration file provided in the most recent version of EventHorizon.
config.lua:
You can think of this as the default settings of EventHorizon. If you want to change settings then you can do so here, but when you download a new version of EventHorizon you have to be careful as the new version includes config.lua and will overwrite any changes you've made to this file. You can always skip this file when overwriting, but it's better to use myconfig.lua as it's intended to avoid this problem.
myconfig.lua:
This file overwrites any values in config.lua with the values changed inside it. So if you have config.width set to 375 in config.lua and config.width set to 200 in myconfig.lua, EventHorizon will use 200 as the value.
Where this is useful is that myconfig.lua is never included in the updated versions of EventHorzion, and as such will never be overwritten when downloading a new version of EventHorizon.
As such best practice is to alter any values you wish to change in config.lua by changing the values inside myconfig.lua.
Configuration
In order to change settings of something you just have to change the text after the equals sign on the line with the setting you want to change.
For example if you wanted to change the width of the addon you would change line 33 which normally reads (by default)
config.width = 375 -- Width of a single bar....
config.width = 200 -- Width of a single bar....
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" --[[ EDIT BELOW THIS LINE ]]--
-- Vampiric Touch/swd cd self:newSpell({ debuff = {34914,3}, cast = 34914, cooldown = 32379, refreshable = true, hasted = true, requiredTree = 3, requiredLevel = 28, stance = 1, })
self:newSpell({ itemID = 1543 })
self:newSpell({ itemID = { 1543, 1544, ... , 1243 }, })
self:newSpell({ slotID = 13, })
self:newSpell({ cast = 1543 })
self:newSpell({ cast = { 1543, 1544, ... , 1243 }, })
self:newSpell({ channel = {1543,3}, })
self:newSpell({ channeled = { {1543,2}, {1544,4}, ... , {1254, 6} }, })
self:newSpell({ cooldown = 1543, })
self:newSpell({ cooldown = {1543, 1642, ... , 1274}, })
self:newSpell({ debuff = {1543, 3}, })
self:newSpell({ debuff = 1543, })
self:newSpell({ playerbuff = {1543, 3}, })
self:newSpell({ playerbuff = 1543, })
self:newSpell({ debuff = {1543, 3}, hasted = true, })
self:newSpell({ debuff = {1543, 3}, recast = true, })
self:newSpell({ playerbuff = {1543, 3}, minstacks = 2, })
self:newSpell({ slotID = 14, internalcooldown = 45, })
self:newSpell({ debuff = {1543, 3}, unique = true, })
self:newSpell({ debuff = {1543, 3}, keepIcon = true, })
self:newSpell({ debuff = {1543, 3}, icon = 1544, })
self:newSpell({ cooldown = 1543, smallCooldown = true, })
self:newSpell({ cooldown = 1543, smallCooldown = true, requiredGlyph = 12456, })
self:newSpell({ cooldown = 1543, smallCooldown = true, requiredTree = 3, })
self:newSpell({ cooldown = 1543, smallCooldown = true, requiredTree = {0,1,3}, })
self:newSpell({ cooldown = 1543, smallCooldown = true, requiredLevel = 84, })
self:newSpell({ cooldown = 1543, smallCooldown = true, stance = 1, })
self:newspell({ cooldown = 1543, smallCooldown = true, stance = {0, 1, 4}, })
File Name |
Version |
Size |
Author |
Date |
Type |
2.3e |
78kB |
11-10-14 11:20 PM |
Addon |
||
v1.9.3 |
71kB |
11-05-10 07:02 AM |
Patch |
Comment Options |
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
myrroddin |
View Public Profile |
Send a private message to myrroddin |
Visit myrroddin's homepage! |
Find More Posts by myrroddin |
Add myrroddin to Your Buddy List |
10-22-10, 01:47 PM | |
|
Second Mind Blast bar: Easy fix, your filler bar has its spellID set to Mind Blast.
Code:
-- Mind Flay self:NewSpell({ spellID = 15407, channeled = true, expectedTicks = 3, requiredTree = 3, }) As I've stated a few times, I'll be tinkering with the class configs when I'm done breaking everything else. Right now I'm focusing on tick detection and and Blizzard-induced cooldown bugs. Shadow Priests and Hunters are the first on the revamp list when that's all done. |
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Visit Taroven's homepage! |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
10-22-10, 01:28 PM | |
|
Here is my Shadow Priest/Discipline Priest myconfig.lua, as requested by a couple of people in PM. What I find odd is that I had to comment block Mind Blast, as it wouldn't accept it as is, but even commented, MB displays as a separate bar. I am still playing with this, as Mind Flay has an unexpected display.
Code:
local usemouseover = true -- Make this false or nil (or just delete the line altogether) to make your healing bars not change when you mouse over something. function EventHorizon:InitializeClass() self.config.gcdSpellID = 588 -- Inner Fire -- Holy/Disc -- Renew self:NewSpell({ spellID = 139, playerbuff = true, auraunit = usemouseover and 'mouseover' or 'target', refreshable = true, hasted = true, requiredTree = {0,1,2}, requiredLevel = 8, }) -- Casts + Serendipity / Borrowed Time self:NewSpell({ spellID = 2061, cast = {585,2061,8092,2050,14914,9484,32546,8129,596,2061}, playerbuff = {63731,59887}, requiredTree = {0,1,2}, }) -- Discipline -- Penance + Grace self:NewSpell({ spellID = 47540, playerbuff = 47930, channeled = true, numhits = 0, cooldown = true, refreshable = true, auraunit = usemouseover and 'mouseover' or 'target', requiredTree = 1, }) -- Weakened Soul self:NewSpell({ spellID = 6788, debuff = true, auraunit = usemouseover and 'mouseover' or 'target', requiredTree = 1, }) -- Holy -- Holy Word: Chastise + Chakra effects self:NewSpell({ spellID = 88625, playerbuff = {88682,88684}, auraunit = usemouseover and 'mouseover' or 'target', cooldown = true, requiredTree = 2, }) -- Circle of Healing self:NewSpell({ spellID = 34861, playerbuff = 88689, cooldown = true, requiredTree = 2, requiredLevel = 59, }) -- Chakra self:NewSpell({ spellID = 14751, playerbuff = {81207,81209,81206,81208}, cooldown = true, requiredTree = 2, requiredLevel = 49, }) -- Shadow -- Devouring Plague self:NewSpell({ spellID = 2944, debuff = true, dot = 3, hasted = true, refreshable = true, requiredTree = 3, requiredLevel = 28, }) -- Shadow Word: Pain self:NewSpell({ spellID = 589, debuff = true, dot = 3, hasted = true, refreshable = true, requiredTree = 3, }) -- Vampiric Touch self:NewSpell({ spellID = 34914, debuff = true, cast = true, dot = 3, refreshable = true, hasted = true, requiredTree = 3, requiredLevel = 49, }) -- Mind Blast --[[self:NewSpell({ spellID = 8092, cast = true, cooldown = true requiredTree = 3, requiredLevel = 10, }) ]]-- -- Mind Flay self:NewSpell({ spellID = 15407, channeled = true, dot = 3, refreshable = true, hasted = true, requiredLevel = 10, requiredTree = 3, }) -- Mind Sear self:NewSpell({ spellID = 48045, channeled = true, requiredLevel = 75, requiredTree = 3, }) -- Shadow Word: Death self:NewSpell({ spellID = 32379, cooldown = true, requiredLevel = 32, }) -- Filler + Shadow Orbs self:NewSpell({ spellID = 8092, cast = {73510}, channeled = {48045,0}, cooldown = true, playerbuff = 77487, refreshable = true, requiredTree = 3, }) -- General -- [Dark] Evangelism self:NewSpell({ spellID = 81659, playerbuff = {87117,81660}, refreshable = true, requiredTalent = {1,4}, }) -- [Dark] Archangel self:NewSpell({ spellID = 87151, playerbuff = {87153,81700}, cooldown = true, requiredTalent = {1,5}, }) -- Shadowfiend self:NewSpell({ spellID = 34433, cooldown = true, requiredLevel = 66, requiredTree = 3, }) end |
|
myrroddin |
View Public Profile |
Send a private message to myrroddin |
Visit myrroddin's homepage! |
Find More Posts by myrroddin |
Add myrroddin to Your Buddy List |
10-22-10, 08:40 AM | |
|
r377 is uploaded and waiting approval. Nils are bad, mkay?
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Visit Taroven's homepage! |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
10-22-10, 08:22 AM | |
|
Re: target debuffs checking lag
I'll take a look, pretty sure I know what's going on. Thanks for the report.
Update: Make sure you have Lua errors enabled... The slowdown was from error spam. I'll see what I can do now, but it'll probably have to wait until after work.
Last edited by Taroven : 10-22-10 at 08:26 AM.
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Visit Taroven's homepage! |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
10-22-10, 08:18 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 11
Uploads: 0
|
target debuffs checking lag
After updating to r376 my framerate drops from 35 to 6 in stormwind when I target anything other than myself or nothing. Though I've only tested it on my priest, and it only happens in my disc spec, shadow is fine. I switched to default config to be sure and still happening. If you need specifics of the spec you can find my toon here:
http://www.wowarmory.com/character-s...Remar&cn=Fount I'll probably be rolling back to an older revision for now. |
|
fount |
View Public Profile |
Send a private message to fount |
Visit fount's homepage! |
Find More Posts by fount |
Add fount to Your Buddy List |
10-22-10, 08:06 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 9
Uploads: 1
|
Ah! I see
Thank you I hope the move goes well. |
|
Phetus |
View Public Profile |
Send a private message to Phetus |
Visit Phetus's homepage! |
Find More Posts by Phetus |
Add Phetus to Your Buddy List |
10-22-10, 07:45 AM | ||
|
|
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Visit Taroven's homepage! |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
10-22-10, 03:55 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 9
Uploads: 1
|
Hi Toroven
Love EH Best timer out there. Just to clarify, I do not need any other addon to make EH disappear out of combat? At the moment I'm using Goose. Is there anything special i need to do to get Redshift to work? |
|
Phetus |
View Public Profile |
Send a private message to Phetus |
Visit Phetus's homepage! |
Find More Posts by Phetus |
Add Phetus to Your Buddy List |
10-21-10, 11:20 PM | |
|
EventHorizon v1.9 r376 has been uploaded. Barring outstanding bugs, this may be the last release for a little while - I'm moving on the first of November, and may have no internet access for a few weeks. Don't worry, I'm not disappearing.
Changelog: Code:
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. The new texture API stuff has been finalized. No more extra frame creation when a new indicator type is created, and the drawing order seems to be impossible to break. I'm extremely happy with the result. The new aura methods are a little rough to explain (see the wall of text below), but the effect for this release is that the uniqueID NewSpell flag should work 100% of the time (instead of about 50%). The new system is very easy to expand on and improve, and paves the way for some very cool things in the future. The next few revisions will focus on getting certain cooldowns (Swipe, Faerie Fire, and a few others) working with the Cataclysm changes. Some explanation on the new aura methods: Previous to this version, EH collected aura information by name using direct UnitBuff/UnitDebuff calls. This was fine back when EH wasn't trying to get so much information at once. Now EH uses a dispatch method to collect aura information by index in a single pass, only as necessary. For example, let's say you have a Priest with bars for Renew and Shadow Word: Pain - When UNIT_AURA('target') is fired, all of the target's debuff information is indexed and stored. When UNIT_AURA('player') fires, the same happens with only your own buffs. Pretty easy stuff. Next, EH fires a fake UNIT_AURA(unit) event to every bar that is tracking an aura. The information from the real UNIT_AURA event is retrieved and used. Most of the process from this point is the same as previous versions - the only visible difference is that the bar can be a lot more intelligent about what information it finds. I haven't had the opportunity to see exactly what the effect is in a 10/25 player boss fight, but I won't lie - the new method will result in higher CPU usage, especially in a raid environment. However, there are enough advantages to using the dispatch method that it's impossible not to use anymore. For the curious, the new method took about an hour to write, two hours to debug, and somewhere between 4-6 hours of playtesting (day off and a Paladin to level) before deciding that it was stable enough to release. Let me know how it goes. |
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Visit Taroven's homepage! |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
10-21-10, 10:12 PM | ||
|
|
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Visit Taroven's homepage! |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
10-21-10, 10:05 PM | |
A Kobold Labourer
Forum posts: 0
File comments: 6
Uploads: 0
|
It didn't work, it shows nothing in fact. Guess have to wait for the next one. Thanks anyways!
|
|
saedo |
View Public Profile |
Send a private message to saedo |
Visit saedo's homepage! |
Find More Posts by saedo |
Add saedo to Your Buddy List |
10-21-10, 01:14 PM | |
|
Since both debuffs have the same name, you'll want to have EH look at the correct one. The uniqueID flag accomplishes this.
This entry should work: Code:
-- Hemo self:NewSpell({ spellID = 89775, debuff = true, dot = 3, uniqueID = 89775, refreshable = true, requiredTree = 3, requiredLevel = 29, }) |
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Visit Taroven's homepage! |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
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.