A few potential bugs I've discovered...
1. When two buffs share the same time, they sometimes appear to flicker as they swap places within the group when set to sort by time remaining. This is most easily replicated when eating health/mana food.
I have added this to my "look at and fix" list. I haven't noticed it myself but I can see how it can happen if the timers are very very close but not exact.
2. Occasionally in combat, and I can't easily replicate this the screen will fill up with bars. It seems to be linked to a bar group I have for displaying cds with 5 seconds or less remaining.
Ah, you've discovered what happens when you are locked out of casting spells for some reason (in your example it looks like a snobold has done a Batter and interrupted spell casting for 5 seconds). Thank you Blizzard for treating spell interrupts like everything going on cooldown all at once! I was perplexed when this first happened to me in Raven but got used to it as a clear indication that I was interrupted. However, as an undocumented "feature" it will surprise all Raven users so I shall have to think about it some and see if there is a better way to display it.
Currently I am focused on the "icons only" mode. This will take me another few days to finish, I expect, since it is taking me deep into graphics library support.
Currently I am focused on the "icons only" mode. This will take me another few days to finish, I expect, since it is taking me deep into graphics library support.
Ah, you've discovered what happens when you are locked out of casting spells for some reason (in your example it looks like a snobold has done a Batter and interrupted spell casting for 5 seconds). Thank you Blizzard for treating spell interrupts like everything going on cooldown all at once! I was perplexed when this first happened to me in Raven but got used to it as a clear indication that I was interrupted. However, as an undocumented "feature" it will surprise all Raven users so I shall have to think about it some and see if there is a better way to display it.
Currently I am focused on the "icons only" mode. This will take me another few days to finish, I expect, since it is taking me deep into graphics library support.
Interesting feature, though I had guessed as much... Whilst it's no biggie on most toons, take a stroll around as a dk and it's flipping annoying when your runes are on cd...
Looking forward to the icon only mode, just wondering whether that might include button facade support? Though that's me being overly anal about the only square icons on my ui ;)
Button facade support is a nice-to-have for the icons only mode. I'll add it to my feature request list but can't promise a timeframe.
I also have death knight support on my list at a fairly high priority level--it was mentioned in a ticket on the project page. I don't play a max level DK myself but I do have a level 60 sitting around after the "must do" starting quest chain so I can do some testing myself.
I have released version r30 with the new graphics package which I call Nest. Nest is optimized to display Raven's bar groups and contains support for icon-only configurations (although none are exported in this release). Briefly: bar groups share layout and appearance options (dimensions, fonts, textures, configuration, special effects) and contain bars. Each bar has a fixed set of graphical components (icon, foreground bar, background bar, spark, labelText, timeText, iconText) which can be combined in a variety of configurations.
I used the new version in a raid last night and I think it is worth downloading now. It should be backward compatible although you may have to set bar group configurations again on the Layout tab. It includes a number of minor bug fixes (e.g., it should fix the issue with two bars of similar time or duration flipping back and forth).
Just had a very quick two minute play around with it and noticed an issue I don't think I've seen before.
I have two groups set up buffs, one for auras and a separate one for buffs that have duration. What I've noticed is sometimes buffs that have reached the end of their duration and now have a theoretical time remaining of 0, end up being briefly displayed on the aura bar that is setup for buffs with unlimited duration.
Ah, you've discovered what happens when you are locked out of casting spells for some reason (in your example it looks like a snobold has done a Batter and interrupted spell casting for 5 seconds). Thank you Blizzard for treating spell interrupts like everything going on cooldown all at once! I was perplexed when this first happened to me in Raven but got used to it as a clear indication that I was interrupted. However, as an undocumented "feature" it will surprise all Raven users so I shall have to think about it some and see if there is a better way to display it.
Feel free to poke around the Heatsink school lockout code for this. I ended up having to pick a spell without a normal cooldown (the lowest level available, preferably) then check it first. Unfortunately, this means also keeping a list of the schools of all other spells that go on cooldown with a lockout, and associating them with that school. It is a pain in the ass.
Feel free to poke around the Heatsink school lockout code for this. I ended up having to pick a spell without a normal cooldown (the lowest level available, preferably) then check it first. Unfortunately, this means also keeping a list of the schools of all other spells that go on cooldown with a lockout, and associating them with that school. It is a pain in the ass.
This is a great solution to the lockout problem. As you say, it is data intensive but, luckily, Blizzard doesn't change spell schools often and you've already done the hard part of gathering the info. I'm going to add this to the class preset tables in Raven and implement lockouts using your solution--thank you so much! BTW, did you find any good place to test this--any reasonably accessible mobs that do lockouts?
I'm also looking at Heatsink's code for trapping Death Knight rune cooldowns. It seems to just ignore any cooldowns with a 10 second duration if player is DK. Does this work even with Improved Unholy Presence (i.e., does GetSpellCooldown still return a 10 second duration)?
I have two groups set up buffs, one for auras and a separate one for buffs that have duration. What I've noticed is sometimes buffs that have reached the end of their duration and now have a theoretical time remaining of 0, end up being briefly displayed on the aura bar that is setup for buffs with unlimited duration.
Okay, I see how this can happen. There is a window of opportunity just when a buff is about to expire for my code that tests for unlimited duration to fail. I have fixed it in my working version and will check it in after a bit more testing.
If it helps, and saves you doing too much research, Heatsinks lockout code works without any issues. I used for a long time a slightly hacked up version of Heatsink in my own ui.
1. Icon only, though I'm guessing from your posts this is on the todo list.
Yes, icon only mode is still in development. I'm working on the algorithm to create multiple rows and/or columns of icons when there are lots of auras--plus how that interacts with attachment points between bar groups.
I haven't been able to reproduce a problem with bar group scaling yet. What are the other settings for the bar group that doesn't scale? Or do none of your bar groups scale?
I haven't been able to reproduce a problem with bar group scaling yet. What are the other settings for the bar group that doesn't scale? Or do none of your bar groups scale?
Ok two screen shots below using the same bar group as the example with the relevant options panel open and visible. On the first one the bar scale is set to 1, on the second the scale is set to 1.5. As you can see the anchor changes size to reflect the scale change, but the bar doesn't. The reason I've done it this way is I have a default bar size used across all groups, but want my short cds timing out on an emphasised bar.
Ok two screen shots below using the same bar group as the example with the relevant options panel open and visible.
The screen shots were a big help! Once I set things up more like you did, I was able to obtain the key clue: two bars in a bar group with one correctly scaled and the other unscaled. To make a long story short, the root cause is that Nest doesn't garbage collect used bars, instead it caches them for reuse and I forgot to SetParent them when reallocating them to a different bar group. Since I didn't have different scale factors on the bar groups and/or only one bar group was active in my testing at a time, I never saw the problem. It is a one line fix and I've checked it in with r32.
Just had a quick test of the latest version with the spell lockout code included. Whilst I haven't been able to test it thoroughly across all classes due to not having a friendly interrupter to hand, I did have a fiddle on a DK. Whilst it's no longer spamming large numbers of bars, it's still not working as expected. I'm not sure what the design intent was, but I would expect to see no spells going on cd when runes are on cd, or perhaps a school lockout bar?
Screenshots below show what spells are coming up for specific rune lockdowns: blood, then frost and finally unholy.
I just checked in r34 which includes support for detecting lockouts of schools of spell magic. I entered the relevant spell school data into Raven's class preset files, which was probably the most error prone part of the process. Then I used the same technique Heatsink does (i.e., checking a normally non-cooldown spell in a school to see if it is on cooldown). I had to re-code the cooldown detection code in order to do this but the new version actually performs better since I am caching more data during initialization.
I've been able to test this on my paladin, druid and shaman so far and will test on other classes during the next few days. I am testing with a mob in Shadowmoon Valley that does spell interrupts (Eclipsion Bloodwarder).
I should have mentioned that Death Knight rune cooldowns will be treated as a special case (as they are in Heatsink). This is the next thing on my queue. And, yes, the design intent is to not show cooldown bars just because the associated runes are on cooldown. At the moment, I am considering adding separate rune cooldown bars probably with an option on whether to display them or not.
Ah thanks for the update, that explains the DK then. Just tested it on my lock (ty for the tip re Eclipision Bloodwarders) and it works fine. Unfortunately I can't help with other classes as the other 3 I could have done, pally, druid & shaman you've already done.
Version r35 adds Death Knight cooldown support. It filters out cooldowns that were showing only because runes were not available. It also includes a new standard bar group on the Setup tab just for DKs that provides a stack of bars for the six rune slots (the bars function like regular cooldowns in a custom bar group that have a ready bar enabled--you see a placeholder bar when the rune is ready and a timer appears when the rune is on cooldown). My DK is only level 60 so hopefully someone with a high level DK will test it and make sure I didn't miss anything.
I have added this to my "look at and fix" list. I haven't noticed it myself but I can see how it can happen if the timers are very very close but not exact.
Ah, you've discovered what happens when you are locked out of casting spells for some reason (in your example it looks like a snobold has done a Batter and interrupted spell casting for 5 seconds). Thank you Blizzard for treating spell interrupts like everything going on cooldown all at once! I was perplexed when this first happened to me in Raven but got used to it as a clear indication that I was interrupted. However, as an undocumented "feature" it will surprise all Raven users so I shall have to think about it some and see if there is a better way to display it.
Currently I am focused on the "icons only" mode. This will take me another few days to finish, I expect, since it is taking me deep into graphics library support.
Good news for icon only freaks like me :)
Interesting feature, though I had guessed as much... Whilst it's no biggie on most toons, take a stroll around as a dk and it's flipping annoying when your runes are on cd...
Looking forward to the icon only mode, just wondering whether that might include button facade support? Though that's me being overly anal about the only square icons on my ui ;)
I also have death knight support on my list at a fairly high priority level--it was mentioned in a ticket on the project page. I don't play a max level DK myself but I do have a level 60 sitting around after the "must do" starting quest chain so I can do some testing myself.
I used the new version in a raid last night and I think it is worth downloading now. It should be backward compatible although you may have to set bar group configurations again on the Layout tab. It includes a number of minor bug fixes (e.g., it should fix the issue with two bars of similar time or duration flipping back and forth).
I have two groups set up buffs, one for auras and a separate one for buffs that have duration. What I've noticed is sometimes buffs that have reached the end of their duration and now have a theoretical time remaining of 0, end up being briefly displayed on the aura bar that is setup for buffs with unlimited duration.
Feel free to poke around the Heatsink school lockout code for this. I ended up having to pick a spell without a normal cooldown (the lowest level available, preferably) then check it first. Unfortunately, this means also keeping a list of the schools of all other spells that go on cooldown with a lockout, and associating them with that school. It is a pain in the ass.
This is a great solution to the lockout problem. As you say, it is data intensive but, luckily, Blizzard doesn't change spell schools often and you've already done the hard part of gathering the info. I'm going to add this to the class preset tables in Raven and implement lockouts using your solution--thank you so much! BTW, did you find any good place to test this--any reasonably accessible mobs that do lockouts?
I'm also looking at Heatsink's code for trapping Death Knight rune cooldowns. It seems to just ignore any cooldowns with a 10 second duration if player is DK. Does this work even with Improved Unholy Presence (i.e., does GetSpellCooldown still return a 10 second duration)?
Okay, I see how this can happen. There is a window of opportunity just when a buff is about to expire for my code that tests for unlimited duration to fail. I have fixed it in my working version and will check it in after a bit more testing.
1. Icon only, though I'm guessing from your posts this is on the todo list.
2. Bar group scaling seems to not work anymore.
Yes, icon only mode is still in development. I'm working on the algorithm to create multiple rows and/or columns of icons when there are lots of auras--plus how that interacts with attachment points between bar groups.
I haven't been able to reproduce a problem with bar group scaling yet. What are the other settings for the bar group that doesn't scale? Or do none of your bar groups scale?
Ok two screen shots below using the same bar group as the example with the relevant options panel open and visible. On the first one the bar scale is set to 1, on the second the scale is set to 1.5. As you can see the anchor changes size to reflect the scale change, but the bar doesn't. The reason I've done it this way is I have a default bar size used across all groups, but want my short cds timing out on an emphasised bar.
The screen shots were a big help! Once I set things up more like you did, I was able to obtain the key clue: two bars in a bar group with one correctly scaled and the other unscaled. To make a long story short, the root cause is that Nest doesn't garbage collect used bars, instead it caches them for reuse and I forgot to SetParent them when reallocating them to a different bar group. Since I didn't have different scale factors on the bar groups and/or only one bar group was active in my testing at a time, I never saw the problem. It is a one line fix and I've checked it in with r32.
Screenshots below show what spells are coming up for specific rune lockdowns: blood, then frost and finally unholy.
I've been able to test this on my paladin, druid and shaman so far and will test on other classes during the next few days. I am testing with a mob in Shadowmoon Valley that does spell interrupts (Eclipsion Bloodwarder).
My next focus is icon-only support.
Druid: Typhoon, Starfall, Force of Nature
Paladin: Divine Plea, Shield of Righteousness, Hammer of the Righteous
Death Knight: Mind Freeze
Shaman: Wind Shear
DK rune lockouts are working a treat now so no more bar spam, thank you!