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: | 200,836 |
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 |
11-02-09, 05:35 PM | ||
A Kobold Labourer
Forum posts: 0
File comments: 2
Uploads: 0
|
Re: Re: Problem with Eventhorizon on one character
I guess what's odd then is that it ever showed up at all. I used to have just the judgment, exorcism, and consecration showing before my last respec where I picked up crusader strike. I guess I must've upgraded around the same time then, I'm not sure. <edit> I figured it out. I just happened to take 5 points in both the prot and holy trees to get some cheap bonuses as my first 10 points, and after I respecced I never put a full 5 points into either, so I'm guessing the required talent code is checking for max ranks and not just any ranks.
Last edited by soval99 : 11-02-09 at 05:59 PM.
|
|
|
soval99 |
View Public Profile |
Send a private message to soval99 |
Find More Posts by soval99 |
Add soval99 to Your Buddy List |
11-02-09, 03:04 PM | |
|
Every time I die or whatever Lifetap vanishes from the destruction profile. Have to reloadui for it to show up. This is using version 1.2.3.
|
|
Warlocomotif |
View Public Profile |
Send a private message to Warlocomotif |
Find More Posts by Warlocomotif |
Add Warlocomotif to Your Buddy List |
11-02-09, 02:11 PM | ||
|
Re: Re: Re: EH Disc priest
Renewed Hope on Lesser Heal was really just a thought. There isn't another place it could go on Disc's bars. *shrug* I DO need to find a spot for Borrowed Time... |
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
11-02-09, 02:01 PM | ||
|
Re: Size
|
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
11-02-09, 08:07 AM | |
A Defias Bandit
Forum posts: 2
File comments: 1
Uploads: 0
|
Size
I was wondering if there may be some option to increase the size of this addon or to decrease the size?
For myself, I find it just a touch too small and would love to make the buttons bigger to see better. My vision isnt the best and this would be helpful for me. Thank you. |
|
Maniah |
View Public Profile |
Send a private message to Maniah |
Find More Posts by Maniah |
Add Maniah to Your Buddy List |
11-02-09, 07:05 AM | ||
|
Re: Re: EH Disc priest
For Holy I totally get having those bars separate, for disc not really. I don't think it really makes sense to add Renewed hope onto a spell that doesn't proc it- adding it as a very light shade to powerword: shield would make more sense. Past that, I would like to say that if there could be support for multiple fillers in 1 bar- then that would be great. Other classes/specs would also benefit, such as Warlocks with Decimation or affliction warlocks with Drain Soul. Anyway, I appreciate the effort and response a lot Keep up the great work. |
|
|
Warlocomotif |
View Public Profile |
Send a private message to Warlocomotif |
Find More Posts by Warlocomotif |
Add Warlocomotif to Your Buddy List |
11-02-09, 01:00 AM | ||
|
Re: Problem with Eventhorizon on one character
Edit/Update: If you don't have Divine Storm in your spec, no bars will show for Ret. I'll change that for tomorrow's release. If your spec does include Divine Storm, we have a whole other issue here.
Last edited by Taroven : 11-02-09 at 01:08 AM.
|
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
11-02-09, 12:51 AM | ||
|
Re: EH Disc priest
Flash Heal and Greater Heal are there more for their related buffs than their cast times. Greater Heal tracks Inspiration and Ancestral Fortitude on the same bar, while Lesser Heal tracks Serendipity (and likely Renewed Hope + the various other 3% damage reduction talents next release, to make it more useful for Disc). Prayer of Healing is more there for the relative cast time than anything, but if I can get Prayer of Mending working correctly it will be replaced. As for the error, I've been aware of it for about a week now. The extremely thorough error stack you provided will go a long way towards making the tentative fix I've already got in more reliable. |
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
11-02-09, 12:48 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 2
Uploads: 0
|
Problem with Eventhorizon on one character
Hello, I've been using EventHorizon for quite a long while on my shadow priest and it's been working pretty well, but I'm having an issue with my pallie.
It did work for quite a while after I leveled enough to get a few more spells/skills, but then after I respecced it stopped displaying anything for the pallie. I would have the frame and the drag bar I could drag, but nothing would be displayed. I've tried deleting files out of the WTF directory, upgrading versions, reloading the UI, using that script command to recheck talents (and yes, I've reselected talents since I was wanting to grab crusader strike in the first place.) I'm at a loss of anything else to do short of reinstalling Warcraft. It continues to work great for my shadow priest (actually, I had to comment out all the healing lines since I dual spec for pvp discipline) and haven't seen any issues with it. (And no, I don't have duel spec on the pallie.) Do you have any ideas on what could be causing it and how to fix it? |
|
soval99 |
View Public Profile |
Send a private message to soval99 |
Find More Posts by soval99 |
Add soval99 to Your Buddy List |
11-01-09, 05:03 PM | |
|
EH Disc priest
I've been using EventHorizon for a while now for my Warlock, but recently changed my UI and decided to also start using EH for my other characters.
A few notes about my disc priest; at first the "lighter color" for grace and Inspiration were a bit confusing, but on the flip side its useful to have them. Something I don't really like is having both a cast bar for greater heal and flash heal, for what it's worth- they're both fillers, they don't really need to have separate bars (I don't know if there's any support for merging casts into 1 bar, but it would be good). Second, I guess Discipline has a lot of things to pay attention to, and EH would kind of lose it's simplicity if you had 11 bars stacked on top of eachother- but I do think that spells like Prayer of Mending and Shadowfiend should probably take priority over glyph of prayer of healing/renew. Third, after playing with it a little bit I got an error, posted below: Code:
Message: Interface\AddOns\EventHorizon\EventHorizon.lua:563: attempt to perform arithmetic on field 'stop' (a nil value) Time: 11/01/09 23:50:25 Count: 1 Stack: [string "Interface\FrameXML\BasicControls.xml:<Scrip..."]:18: in function <[string "Interface\FrameXML\BasicControls.xml:<Scrip..."]:4> [C]: ? Interface\AddOns\EventHorizon\EventHorizon.lua:563: in function `COMBAT_LOG_EVENT_UNFILTERED' Interface\AddOns\EventHorizon\EventHorizon.lua:1015: in function `f' Interface\AddOns\EventHorizon\EventHorizon.lua:41: in function <Interface\AddOns\EventHorizon\EventHorizon.lua:38> Locals: self = <unnamed> { Activate = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:814 AuraFunction = <function> defined =[C]:-1 alwaysrefresh = true dot = 3 RemoveTicksAfter = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:493 OnUpdate = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:217 UpdateDoT = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:666 isType = "playerbuff" isActive = true NotInteresting = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:80 auraname = "Renew" indicators = <table> { } interestingCLEU = <table> { } stacks = <unnamed> { } auraunit = "target" AddIndicator = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:135 PLAYER_TARGET_CHANGED = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:448 COMBAT_LOG_EVENT_UNFILTERED = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:534 spellname = "Renew" latesttick = 5611.686 Remove = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:199 0 = <userdata> UNIT_SPELLCAST_SENT = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:270 UNIT_AURA = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:348 lasttick = 5611.732 AddSegment = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:189 icon = <unnamed> { } interestingEvent = <table> { } stance = 0 } time = 1257115827.096 event = "SPELL_PERIODIC_HEAL" srcguid = "0x01000000020F692D" srcname = "Shirrla" srcflags = 66833 destguid = "0x01000000020F692D" destname = "Shirrla" destflags = 66833 spellid = 48068 spellname = "Renew" now = 5611.904 tick = <unnamed> { time = 5611.904 parent = <unnamed> { } happened = true 0 = <userdata> typeid = "tick" } nexttick = 5614.904 (*temporary) = nil (*temporary) = 5611.904 (*temporary) = <table> { 1 = <unnamed> { } 2 = <unnamed> { } } (*temporary) = 1 (*temporary) = 1 (*temporary) = "attempt to perform arithmetic on field 'stop' (a nil value)" EventHorizon = <table> { CreateSpellBar = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:1213 Activate = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:1279 glyphs = <table> { } layouts = <table> { } CheckTalents = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:878 InitializeClass = <function> defined @Interface\AddOns\EventHorizon_Priest\config.lua:3 mainframe = <unnamed> { } LoadClassModule = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:1020 db = <table> { } isReady = true Renew = <unnamed> { } ApplyConfig = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:1455 Prayer of Healing = <unnamed> { } Greater Heal = <unnamed> { } barconfigs = <table> { } Flash Heal = <unnamed> { } Penance = <unnamed> { } isActive = true classcolor = <table> { } NewSpell = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:1049 config = <table> { } colors = <table> { } Weakened Soul = <unnamed> { } barframes = <table> { } otherIDs = <table> { } Deactivate = <function> defined @Interface\AddOns\EventHorizon\EventHorizon.lua:1306 } tickevents = <table> { SPELL_PERIODIC_ENERGIZE = true SPELL_DAMAGE = true SPELL_HEAL = true SPELL_PERIODIC_LEACH = true SPELL_PERIODIC_DAMAGE = true SPELL_PERI |
|
Warlocomotif |
View Public Profile |
Send a private message to Warlocomotif |
Find More Posts by Warlocomotif |
Add Warlocomotif to Your Buddy List |
11-01-09, 03:33 PM | |
|
I'm waiting on a little testing before releasing v1.2.4. Hopefully it'll be tonight after I get back from work, but I do have tomorrow to work on it and test for myself.
Changelog: v1.2.4: * Core: Unit death from DoT spells in PvP and certain raid encounters should no longer cause tick recalculation to produce an error. * Core: Registered a few more events to check glyphs and reload the frame. Begone, evil disappearing glyph issues. * Shaman: Earth Shock's talent requirement has changed to Dual Wield. I'll see about adding in module support for /eventhorizon and /ehz as well, though no guarantees. Redshift and Vitals will also be updated in the near future. Todo: Vitals: * Add activate and deactivate functions for use with EventHorizon's slash commands. * Vehicle code rewrite to improve how Vitals reacts to Flame Leviathan and PvP passenger vehicles, especially for characters that use combo points. * Streamline event registration to make future changes easier and improve event handling in general, using something like activeEvents["EVENT_NAME"] = true/nil and a little looping magic. Redshift: * Instead of using Show/Hide calls, (de)activate the frames directly to save on cpu and reduce the chances of frame parenting screwing things up. Should make Redshift much more intelligent while allowing /ehz to show the frame(s) if show conditions aren't met.
Last edited by Taroven : 11-01-09 at 03:37 PM.
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
11-01-09, 02:39 PM | ||
|
I did quite a bit of testing last night using multiple characters, accounts, and circumstances, yet I was unable to reproduce this. If you've been seeing it happen since the v1.2.3 update, I'll need some more details to see what's going on. The best possible info would be your config.lua and myconfig.lua files. |
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
10-30-09, 03:01 PM | ||
|
Re: Re: Re: Coloured bars.
Color tables can be in two forms. 1) Manually colored, via {R,G,B,Alpha}. Straight red at standard bar opacity would be {1,0,0,0.3}. Yellow would be {1,1,0,0.3}. 2) Class colored, which is just as simple but requires some understanding of how it works. When class coloring a bar, you're doing 3 things: a) Tell EH the bar is class colored instead of manually colored. b) Specify how much the coloring is diminished (known as class burn internally). This directly adjusts the coloring of the class itself, with a value of zero being black and a value of 1 being the full class color. c) Specify the opacity of the bar. Part of the confusion there is related to the special handling I put in for Priest bars. At the top of config.lua, you likely noticed a bunch of locals involving the various character classes. Long story short, if you're currently playing a Druid, the 'Druid' local's content will read "DRUID" and every other class will read "nil" (no information). This gives you an easy way to create in-line conditional statements without a lot of typing. To give you a better idea: Code:
Priest and 0.7 or 1 --...can be written as... UnitClass('player') == "PRIEST" and 0.7 or 1 --...can be written as... (the syntax of this one is screwed up but it gets the point across) if UnitClass('player') == "PRIEST" then 1 else 0.7 end In the end, you can do some neat things with that. For example, to color a bar manually for Druids but keep the rest class colored, with parenthesis for easier reading: Code:
c.debuffmine = {(Druid and 1) or true, (Druid and 0) or (Priest and 0.7) or 1, (Druid and 0) or 0.3, (not Druid) and 0.3} --The "not Druid" means exactly what it says, with the lack of an "or" meaning no alternative handling. TLDR: You can kill off the conditions in there and just write in everything yourself without breaking anything. It's only complicated when it needs to be. Edit: As for WHICH myconfig.lua to use, you can copy your changes over to EventHorizon/myconfig.lua and either use the method I just explained or wrap everything in if/else statements like so: Code:
if Druid then c.debuffmine = {1,0,0,0.3} -- Straight red else c.debuffmine = {true, Priest and 0.7 or 1, 0.3} -- Class colored, burnt down a bit if you're playing a priest end
Last edited by Taroven : 10-30-09 at 03:10 PM.
|
|
|
Taroven |
View Public Profile |
Send a private message to Taroven |
Find More Posts by Taroven |
Add Taroven to Your Buddy List |
10-30-09, 10:25 AM | ||
A Fallenroot Satyr
Forum posts: 26
File comments: 95
Uploads: 0
|
Re: Re: Coloured bars.
Looking at the default debuffmine line: Code:
c.debuffmine = {true,Priest and 0.7 or 1,0.3} Your example to make it red lists {1,0,0,0.3}, is this setting both true and Priest to the value of one or do I still need the class bit in there? Reading this in the preview post pane I think what is happening is we are removing the class part and overriding it with a set colour, if that's the case then my question below is more relevant than I hoped. I am still unsure which myconfig.lua I am supposed to change too, if it is the main one with the examples in do I need a different line for each class I play specifying the colours? If I am understanding this correctly I can only colour my buffs and debuffs one colour each, so I can't have Rip be red and Rake be orange? |
|
|
Cluey |
View Public Profile |
Send a private message to Cluey |
Find More Posts by Cluey |
Add Cluey 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.