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,371 |
Favorites: | 378 |
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 |
Isharra |
View Public Profile |
Send a private message to Isharra |
Find More Posts by Isharra |
Add Isharra to Your Buddy List |
07-21-16, 10:57 PM | ||
A Kobold Labourer
Forum posts: 0
File comments: 5
Uploads: 0
|
Re: Re: Re: Re: MM Hunter Config
Also, maybe line endings aren't being properly recognized, or the file is being converted to rtf or something when you save it. Are you using a programmer-style text editor? |
|
|
Stilmore |
View Public Profile |
Send a private message to Stilmore |
Find More Posts by Stilmore |
Add Stilmore to Your Buddy List |
07-21-16, 09:22 PM | ||||
A Kobold Labourer
Forum posts: 0
File comments: 5
Uploads: 0
|
Re: Re: Re: MM Hunter Config
|
|||
|
cano |
View Public Profile |
Send a private message to cano |
Find More Posts by cano |
Add cano to Your Buddy List |
07-21-16, 09:13 PM | |||
A Kobold Labourer
Forum posts: 0
File comments: 5
Uploads: 0
|
Re: Re: MM Hunter Config
Code:
function EventHorizon:InitializeClass() ...config goes here... end Also, I didn't test with the Explosive Shot or Black Arrow talents, although I included them in the file. The config for those talents is pretty much the same as for Piercing Shot or Sidewinder, and those displayed fine.
Last edited by Stilmore : 07-21-16 at 09:18 PM.
|
||
|
Stilmore |
View Public Profile |
Send a private message to Stilmore |
Find More Posts by Stilmore |
Add Stilmore to Your Buddy List |
07-21-16, 07:50 PM | ||
A Kobold Labourer
Forum posts: 0
File comments: 5
Uploads: 0
|
Re: MM Hunter Config
|
|
|
cano |
View Public Profile |
Send a private message to cano |
Find More Posts by cano |
Add cano to Your Buddy List |
07-21-16, 01:53 PM | ||
A Kobold Labourer
Forum posts: 0
File comments: 5
Uploads: 0
|
Re: Help
|
|
|
Stilmore |
View Public Profile |
Send a private message to Stilmore |
Find More Posts by Stilmore |
Add Stilmore to Your Buddy List |
07-21-16, 03:19 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 4
Uploads: 0
|
Help
For some reason the Elemental Shaman bars just aren't loading for me, and I've no idea why. It's marked as implemented and looking at the config it all seems to be there, but it doesn't seem to be loading.
Nevermind: Managed to get it working. In the config all the abilities seemed to repeat themselves, once in a local mouseover part. Deleted that section and it's working for me now. Still having trouble with the Paladin, though I was also trying to put a simple Ret paladin config together, but I can't even get it to show one bar; I normally test each spell individually before adding another. But I can't even get this to load: Code:
function EventHorizon:InitializeClass() self.config.gcdSpellID = 642 -- Retribution -- Crusader Strike self:newSpell({ Cooldown = 35395, requiredTree = 3, })
Last edited by backjauerlock : 07-21-16 at 03:43 AM.
|
|
backjauerlock |
View Public Profile |
Send a private message to backjauerlock |
Find More Posts by backjauerlock |
Add backjauerlock to Your Buddy List |
07-21-16, 01:03 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 7
Uploads: 0
|
Eventhorizon Vitals and Subtlety Rogue config
First of all thanks for the continuing support and also thanks for keeping this addon up to date for us, much appreciated.
@Brusalk Since the prepatch launched the Eventhorizon_Vitals window doesn't appear. Did you make any changes regarding its window activation? I am using buggrabber and bugsack and no .lua errors pop when i log (regarding ehz vitals) so i would guess its something from the main addon that doesnt allow it to show. Checked the redshift configuration and nothing seems off so it might have been something else.I understand Vitals was made from someone else but if u can pinpoint anything it would be of great help. I have been using Ehz for a very long time and the info from vitals were really helpful for almost all classes. Would you consider implementing it in the main addon, considering its coding isn't big? Again thanks for your support! Keep up the good work! Adding some configuration for Subtlety Rogues Code:
-- Subtlety -- Symbols of Death self:newSpell({ playerbuff = 212283, requiredTree = 3, requiredLevel = 34, }) -- Enveloping Shadows self:newSpell({ playerbuff = 206237, requiredTree = 3, requiredLevel = 90, requiredTalent = 18, }) -- Nightblade self:newSpell({ debuff = {195452,2}, requiredTree = 3, requiredLevel = 46, }) -- Vanish self:newSpell({ cooldown = 1856, requiredTree = 3, requiredLevel = 34, }) -- Shadow Dance self:newSpell({ playerbuff = {185313,0}, cooldown = 185313, requiredTree = 3, requiredLevel = 5, }) -- Shadow Blades self:newSpell({ playerbuff = 121471, cooldown = 121471, requiredTree = 3, requiredLevel = 72, })
Last edited by Neloangelo13 : 07-21-16 at 01:05 AM.
|
|
Neloangelo13 |
View Public Profile |
Send a private message to Neloangelo13 |
Find More Posts by Neloangelo13 |
Add Neloangelo13 to Your Buddy List |
07-20-16, 09:45 PM | |
A Kobold Labourer
Forum posts: 0
File comments: 5
Uploads: 0
|
MM Hunter Config
I put together a basic config for MM hunter. Since talents are largely different between the different specs, I included a spec conditional for each of the talent configs included.
I also changed the gcdSpellID. Code:
function EventHorizon:InitializeClass() self.config.gcdSpellID = 982 -- Revive Pet --MARKSMANSHIP -- Vulnerable self:newSpell({ debuff = 187131, requiredLevel = 18, requiredTree = 2, }) -- Marking Targets self:newSpell({ playerbuff = 223138, requiredLevel = 18, requiredTree = 2, }) -- Aimed shot self:newSpell({ cast = 19434, requiredTree = 2, }) -- Trueshot self:newSpell({ cooldown = 193526, playerbuff = 193526, requiredLevel = 40, requiredTree = 2, }) -- MARKSMANSHIP TALENTS -- Level 30 Talents -- Lock and Load self:newSpell({ playerbuff = 194594, requiredTree = 2, requiredTalent = 4, }) -- Black Arrow self:newSpell({ cooldown = 194599, debuff = 194599, -- double-check requiredTree = 2, requiredTalent = 5, }) -- Level 60 Talents -- Explosive Shot self:newSpell({ cooldown = 212431, requiredTree = 2, requiredTalent = 10, }) -- Level 90 Talents -- Barrage self:newSpell({ cooldown = 120360, channel = 120360, requiredTree = 2, requiredTalent = 17, }) -- Level 100 Talents -- Sidewinders self:newSpell({ cooldown = 214579, requiredTree = 2, requiredTalent = 19, }) -- Piercing Shot self:newSpell({ cooldown = 198670, requiredTree = 2, requiredTalent = 20, }) -- Level 15 Talents -- Steady Focus self:newSpell({ playerbuff = 193534, requiredTree = 2, requiredTalent = 2, }) end
Last edited by Stilmore : 07-21-16 at 09:15 PM.
|
|
Stilmore |
View Public Profile |
Send a private message to Stilmore |
Find More Posts by Stilmore |
Add Stilmore to Your Buddy List |
07-20-16, 03:41 PM | |||
A Kobold Labourer
Forum posts: 0
File comments: 2
Uploads: 0
|
Re: Re: Getting a couple of errors one I fixed.
Thanks for the quick reply. Mark |
||
|
Vonbek |
View Public Profile |
Send a private message to Vonbek |
Find More Posts by Vonbek |
Add Vonbek to Your Buddy List |
07-20-16, 02:51 PM | |
A Kobold Labourer
Forum posts: 0
File comments: 1
Uploads: 0
|
Shadow Priest Config
So I used to love this addon back in wrath but haven't used it lately. With the changes to shadow priest this seemed like a great way to manage the rotation so I wrote out a rough config. Tested it yesterday after patch and it works for me. (I later merged the Shadow Word: Death cooldown to sit under Mind Flay, but this version of the config I left separate).
-- Shadow -- Void Bolt self:newSpell({ cast = 205448, cooldown = 205448, requiredTree = 3, }) -- Mind Blast self:newSpell({ cast = 8092, cooldown = 8092, requiredTree = 3, }) -- Shadow Word: Death self:newSpell({ cast = 32379, cooldown = 32379, requiredTree = 3, }) -- Vampiric Touch self:newSpell({ debuff = {34914,3}, cast = 34914, recast = true, refreshable = true, hasted = true, requiredTree = 3, }) -- Shadow Word: Pain self:newSpell({ debuff = {589,3}, cast = 589, refreshable = true, hasted = true, requiredTree = 3, }) -- Mind Flay or Mind Sear self:newSpell({ channeled = {15407,4},{48045,5}, hasted = true, requiredTree = 3, }) end |
|
Vaelynn |
View Public Profile |
Send a private message to Vaelynn |
Find More Posts by Vaelynn |
Add Vaelynn to Your Buddy List |
07-20-16, 01:55 PM | ||
A Fallenroot Satyr
Forum posts: 26
File comments: 95
Uploads: 0
|
Re: Getting a couple of errors one I fixed.
If you delete (move/backup) your old folder and extract the first Legion Beta version (1.9.9) the error will be gone, however your class config will be gone too. Read the mod notes, it tells you how to set it up. Yes it isn't an easy interface but you can probably work it out with the pointers, Google searches and your old config as a guide.
Last edited by Cluey : 07-20-16 at 01:57 PM.
|
|
|
Cluey |
View Public Profile |
Send a private message to Cluey |
Find More Posts by Cluey |
Add Cluey to Your Buddy List |
07-20-16, 10:18 AM | |
A Kobold Labourer
Forum posts: 0
File comments: 4
Uploads: 0
|
I stuck together a rough warlock config, using the destruction one already completed and adding in Affliction and Demonology. It's a bit rough but I think I got most of the main dps spells and cooldowns. Not perfect but might be useful for more talented people to refine.
Code:
function EventHorizon:InitializeClass() self.config.gcdSpellID = 17962 self.config.hastedSpellID = {6201,3} -- Create Healthstone --**demonology**-- -- Doom self:newSpell({ debuff = {603,15}, refreshable = true, hasted = false, requiredTree = 2, }) -- Call Dreadstalkers self:newSpell({ cast = 104316, cooldown = 104316, requiredTree = 2, }) --darkglare self:newSpell({ cast = 205180, cooldown = 205180, requiredTree = 2, requiredTalent = 19, }) --shadowbolt self:newSpell({ cast = {157695, 686, 105174, 193396}, requiredTree = 2, }) --shadowflame self:newSpell({ debuff = 145551, cast = 145551, refreshable = true, cooldown = 145551, requiredTree = 2, requiredTalent = 2, }) -- *** Affliction *** -- -- Unstable Affliction self:newSpell({ cast = 30108, debuff = {30108,2}, refreshable = true, requiredTree = 1, }) -- Agony self:newSpell({ debuff = {980,2}, refreshable = true, requiredTree = 1, requiredLevel = 36, }) -- [Seed of] Corruption self:newSpell({ debuff = {{172,2},{27243,2}}, icon = 172, cast = 27243, refreshable = true, requiredLevel = 3, requiredTree = 1, }) --Siphon Life self:newSpell({ cast = 63106, debuff = {63106,3}, hasted = true, recast = true, requiredTree = 1, requiredTalent = 10, }) -- Haunt self:newSpell({ cast = 48181, cooldown = 48181, requiredTree = 1, requiredTalent = 1, }) --Drain Soul Life self:newSpell({ channel = { {198590,6}, {689,6} }, hasted = true, requiredTree = 1, }) -- Phantom Sing self:newSpell({ debuff = {205179,2}, cooldown = 205179, refreshable = false, hasted = false, requiredTree = 1, requiredTalent = 20, }) -- *** Destruction *** -- --Immolate self:newSpell({ cast = 348, debuff = {348,3}, recast = true, requiredTree = 3, }) --Conflag/backdraft/incinerate/chaos bolt self:newSpell({ playerbuff = 117828, cooldown = 17962, cast = {116858, 29722, 5740}, channeled = {689, 6}, icon = 17962, requiredTree = 3, }) -- Chaos Bolt/Eradication self:newSpell({ debuff = 196414, requiredTree = 3, requiredTalent = 10, }) -- Channel Demonfire self:newSpell({ cooldown = 196447, hasted = true, channeled = {196447, 15}, requiredTree = 3, requiredTalent = 20, }) --Havoc self:newSpell({ debuff = {80240,0}, cooldown = 80240, requiredTree = 3, }) --Mana Tap (BLIZZARD PLEASE REMOVE, FOR THE LOVE OF GOD) self:newSpell({ playerbuff = 196104, requiredTree = 3, requiredTalent = 6, }) -- Cata self:newSpell({ cast = 152108, cooldown = 152108, requiredTree = 3, requiredTalent = 11, }) -- Soul Harvest self:newSpell({ cast = 196098, cooldown = 196098, requiredTree = {1,2,3}, requiredTalent = 12, }) -- GrimService self:newSpell({ cooldown = 111859, requiredTree = {1,2,3}, requiredTalent = 17, }) -- Summon Doomguard/Infernal self:newSpell({ cooldown = {18540, 1122}, requiredTree = {1,2,3}, }) end |
|
backjauerlock |
View Public Profile |
Send a private message to backjauerlock |
Find More Posts by backjauerlock |
Add backjauerlock to Your Buddy List |
07-19-16, 02:24 PM | |
A Kobold Labourer
Forum posts: 0
File comments: 2
Uploads: 0
|
Getting a couple of errors one I fixed.
Get this error when I log in, also was getting the addon was out of date in addons menu till I changed the toc file from interface: 70300 to 70000.
Thank you for keeping this addon going. Message: Interface\AddOns\EventHorizon\EventHorizon.lua:3481: bad argument #1 to 'pairs' (table expected, got boolean) Time: 07/19/16 16:06:12 Count: 1 Stack: [C]: ? [C]: in function `pairs' Interface\AddOns\EventHorizon\EventHorizon.lua:3481: in function `f' Interface\AddOns\EventHorizon\EventHorizon.lua:626: in function <Interface\AddOns\EventHorizon\EventHorizon.lua:622> Locals: |
|
Vonbek |
View Public Profile |
Send a private message to Vonbek |
Find More Posts by Vonbek |
Add Vonbek to Your Buddy List |
07-10-16, 11:29 PM | |
|
v1.9.10 Beta Version Releases
v1.9.10
*Core - 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 Example: Code:
-- Eternal Struggle Artifact Test self:newSpell({ playerbuff = 196304, requiredTree = 3, requiredArtifactTalent = 196305, -- Eternal Struggle Form 1 -- requiredArtifactTalent = {196305, 10}, -- Eternal Struggle Form 2 (Required >= 3 points) --requiredArtifactTalent = { {196305, 3}, {196258, 2} } -- Eternal Struggle Form 3 (Requires 3 points in Eternal Struggle, AND 2 points in Fire From the Sky) }) Also, I've setup a discord for anyone that has questions about the addon or wants beta versions the second they're released: https://discord.gg/mR8xUUK |
|
Brusalk |
View Public Profile |
Send a private message to Brusalk |
Find More Posts by Brusalk |
Add Brusalk 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.