Hermes: The great messenger of your raid's cooldowns!

All things /script related

Moderators: Fridmarr, Worldie, Aergis, _Chloe

Re: Hermes: The great messenger of your raid's cooldowns!

Postby Fetzie » Sun Nov 21, 2010 12:46 pm

Keep in mind that I do not know if any functions that I suggest either exist, or are usable in combat.

regarding scenario 2: the mod could maybe choose a single player (getting pain suppression from two disc priests at the same time isn't particularly useful) and send them the message that "[player that hit the button] needs [spell] from you."

You wouldn't need any message that the spell is on cooldown, as the monitor window tells you if anyone has the spell ready. Clicking the button could message the player with the shortest cooldown duration remaining to cast it as soon as it comes off cooldown (for example, this would be useful for Fear Protection from priests at Onyxia in P3 or a healer asking for an innervate ASAP).

I think this will probably cause the addon to become pretty big regarding memory usage and communication, bubt on the topic of cooldowns such as Innervate, it could maybe have a queue for when there is more than one druid in the raid (it would need to be able to blacklist tanking druids from the queue though).

To continue with this scenario, a priest healer is running low on mana and has blown shadowfiend, mana potion and hymn of hope. They hit the innervate button, informing the moonkin druid that they would appreciate an innervate as soon as possible. The healing paladin has had to dump a lot of mana into the tank because of an unexpected damage burst and needs an innervate. The mod would know that the moonkin druid has had an innervate requested and sends the tell to the restoration druid that the paladin needs an innervate. I have a hunch that this would make the addon use more memory and processor than you might have envisaged, and also do not know how hard this would be to implement. It is also the kind of thing that is sorted out over vt or TS3, but I know that sometimes you need radio silence (or the RL needs to be able to talk uninterrupted).
Fetzie | Protection Paladin | EU-Kazzak
Author of the TankSpot Protection Paladin Guide
Image
Sagara wrote:You see, you need to *spread* the bun before you insert the hot dog.

bldavis wrote:we are trying to extend it as long as we can...it just never seems to last very long
User avatar
Fetzie
 
Posts: 2198
Joined: Sat Feb 07, 2009 9:43 am
Location: Karlsruhe, Germany

Re: Hermes: The great messenger of your raid's cooldowns!

Postby fuzzygeek » Sun Nov 21, 2010 12:48 pm

I don't think bars are necessary -- it starts getting in the way of what makes this mod so useful, imo (e.g., at-a-glance what is available right the hell now). An option to do something like

+----+ Player A: Avail
|icon| Player B: 3m
+----+ Player C: 15s

Might be useful and more compact that permanent tooltips, and I would probably slot it into my UI where ppower used to be :].

The self-notify would only be necessary if there wasn't at-a-glance info; wouldn't need it with the above display.

Also, I'm being very tank-centric looking at the on-click functionality. From someone with a CD's pov, an on-click to cast on, say, their focus target might be handy, but I imagine most people already have it keybound, so perhaps that doesn't make any sense after all.
Image
User avatar
fuzzygeek
Maintankadonor
 
Posts: 5130
Joined: Wed Aug 01, 2007 1:58 pm

Re: Hermes: The great messenger of your raid's cooldowns!

Postby Fetzie » Sun Nov 21, 2010 12:54 pm

that sounds rather like what you could have with ORa2 for combat resurrections.
Fetzie | Protection Paladin | EU-Kazzak
Author of the TankSpot Protection Paladin Guide
Image
Sagara wrote:You see, you need to *spread* the bun before you insert the hot dog.

bldavis wrote:we are trying to extend it as long as we can...it just never seems to last very long
User avatar
Fetzie
 
Posts: 2198
Joined: Sat Feb 07, 2009 9:43 am
Location: Karlsruhe, Germany

Re: Hermes: The great messenger of your raid's cooldowns!

Postby inthedrops » Sun Nov 21, 2010 1:05 pm

I'm extremely tank centric too so I understand. Reviewing all the feedback now.

BTW, just noticed and didn't realize that Soulstones don't work because the cooldown is an item, not a spell. But it looks straight forward enough to add item cooldown tracking too. I'm just trying to find a way to do it that doesn't cause me to change the existing protocol.
inthedrops
Maintankadonor
 
Posts: 1281
Joined: Mon Oct 29, 2007 9:19 am

Re: Hermes: The great messenger of your raid's cooldowns!

Postby inthedrops » Sun Nov 21, 2010 1:14 pm

Pyrea, you pose some interesting concepts. Say you're a tank and you want PS but they're all on cooldown, you click the button anyway (indicating a request for the spell). As soon as the spell becomes available, Hermes sends a whisper to the sender who can fulfill the request....perhaps even warning a few seconds in advance.

I'm not seriously considering this due to the complexity (I can already think of tons of edge cases, such as what happen when two people make a request) but it's a neat concept :)

I think vent/macro's/etc. should still be the main communication medium. Hermes helps in the sense that it avoids the "Who has XYZ available?" chatter and lets people get right to the point.

Fuzz, thanks for the ideas.
inthedrops
Maintankadonor
 
Posts: 1281
Joined: Mon Oct 29, 2007 9:19 am

Re: Hermes: The great messenger of your raid's cooldowns!

Postby amh » Tue Nov 23, 2010 12:32 am

inthedrops wrote:On the whisper thing; are you saying you want to whisper yourself if after clicking the button it's determined that there isn't one available? I'm still hung up on the whole whisper concept but starting to get some feedback. Unfortunately no ideas sound strong to me yet.


Not sure if addons can provide the red default error text ("Out of range!" etc), but I prefer that kind of information to show up in the chat frame. You can do this without whispering yourself (and thus skewing your default reply queue). "System" messages that show up for self-only look like this:

Code: Select all
/script DEFAULT_CHAT_FRAME:AddMessage("This is only visible to me, yet it's not a whisper")
I used to play a paladin.
User avatar
amh
Maintankadonor
 
Posts: 3012
Joined: Fri May 02, 2008 6:25 am
Location: Oh hi

Re: Hermes: The great messenger of your raid's cooldowns!

Postby Vrimmel » Tue Nov 23, 2010 2:27 am

What about making a cooldown order list. Make it possible for the raid leader to select an order in the cooldowns. Either show who is next on mouse-over or show the name of the next player below the icon and make it possible to show it on select cooldowns so you don't spam your screen for every ability where an order is unnecessary.
Vrimmel
 
Posts: 363
Joined: Sun Apr 13, 2008 5:40 am

Re: Hermes: The great messenger of your raid's cooldowns!

Postby inthedrops » Sat Nov 27, 2010 5:50 pm

Beta5 released, check home page: http://wow.curse.com/downloads/wow-addons/details/hermes.aspx

The feature I enjoy most is that as a tank, I can setup a container in some easy to spot place, but leave it empty. And setup another container with all the common stuff I might want to track. And then at any time I can click a button with the middle mouse button to move it from one container to the other. If I setup the "highly visible" container to show a couple tic tacs (see below) it works really well to adjust which cooldowns I monitor on the fly (in combat). I think you guys will like this simple feature.

I put a lot of time into this and tested as best as I could considering. I anticipate a few UI issues here and there with hopefully no more than a handful of serious issues. I'd like to say this release is "rock solid" but honestly, when you use it, you'll see how much Hermes has changed over the last week.

Again, I expect some issues. Hopefully nothing disastrous!

Changes:

* Multiple button containers
* Drag and drop
* Tic Tacs! a.k.a something that sounds more fun than "player name bars".
* Much better defaults for new profiles.
* Much improved support for adding new item cooldowns.
* Added basic slash commands /hermes

Some screenshots...

Image

Image

Image

Image

Image
inthedrops
Maintankadonor
 
Posts: 1281
Joined: Mon Oct 29, 2007 9:19 am

Re: Hermes: The great messenger of your raid's cooldowns!

Postby inthedrops » Sat Nov 27, 2010 5:57 pm

fuzzygeek wrote:e.g., at-a-glance what is available right the hell now


This was my theme btw :) It's why I left time info out of the tictacs. At a glance, right the hell now. Timers cause you to mentally process.
inthedrops
Maintankadonor
 
Posts: 1281
Joined: Mon Oct 29, 2007 9:19 am

Re: Hermes: The great messenger of your raid's cooldowns!

Postby fuzzygeek » Sun Nov 28, 2010 11:03 am

Wow, lots of changes. I look forward to testing this.

The only thing about having time information is that I'll do a mental check 10-15 seconds before I need a CD, especially on a heavily scripted fight like HLK. Knowing something is coming up in 5-10 seconds is just as useful as knowing it's up right NAO. That's probably why I favour numbers over bars.
Image
User avatar
fuzzygeek
Maintankadonor
 
Posts: 5130
Joined: Wed Aug 01, 2007 1:58 pm

Re: Hermes: The great messenger of your raid's cooldowns!

Postby inthedrops » Sun Nov 28, 2010 11:46 am

It's only changed as much as you want it to change. When you upgrade, it'll look the same until you go in and play with the new options.

With the exception of not being able to specify a custom order for buttons in a frame, it's mostly code complete based on the planned features. I'm holding off on ordering features until I get more feedback. I could take it a few different ways and the code is already complex enough :)
inthedrops
Maintankadonor
 
Posts: 1281
Joined: Mon Oct 29, 2007 9:19 am

Re: Hermes: The great messenger of your raid's cooldowns!

Postby Arees » Mon Nov 29, 2010 9:35 am

This looks like a really great addon, but its one of the ones I'll never use because it requires everyone else that has a CD to use it for me to track their CDs.

My guild does not require any addons other than a bossmod and omen, and I'd never be able to convince everyone to install it.

I wonder if ThatJustHappened could be easily forked to make it work like normal, but to also fire off event messages for Hermes when someone uses a CD that doesn't have hermes installed already... I was just thinking that I have an addon that does combat log parsing already and seems to do it very well, that it could be used to tell people with hermes when a certain person uses a cd.

*edit*

yay 500th post!
Image
User avatar
Arees
 
Posts: 546
Joined: Tue Dec 25, 2007 9:50 pm

Re: Hermes: The great messenger of your raid's cooldowns!

Postby sculder » Mon Nov 29, 2010 10:27 am

Nice work! I looked into coding something like this (but combat log based) many months ago after using Druid Raid Assist and loving it. I can now (after many weeks of attempts at coding it) assure you that making a mod like this that's dependent on the combat log instead of addon channels is nearly impossible without serious memory consumption. I love the look and feel of this addon though, great work!
User avatar
sculder
 
Posts: 171
Joined: Sun Jul 25, 2010 9:34 am
Location: Massachusetts

Re: Hermes: The great messenger of your raid's cooldowns!

Postby inthedrops » Mon Nov 29, 2010 1:21 pm

sculder wrote:Nice work! I looked into coding something like this (but combat log based) many months ago after using Druid Raid Assist and loving it. I can now (after many weeks of attempts at coding it) assure you that making a mod like this that's dependent on the combat log instead of addon channels is nearly impossible without serious memory consumption. I love the look and feel of this addon though, great work!


It's nice to hear that the approach is appreciated. I like to think of Hermes as just an available tool that solves a problem using a unique and resilient approach. It's not something that I think everyone should use. But it fills a gap in a nice way should the need arise. Even if just temporary until an encounter is defeated.

I left out the technical details behind Hermes approach because most people couldn't give a darn. But I'm in the mood to elaborate :)

Most addons use some combination of COMBAT_LOG_EVENT_UNFILTERED, and the various *SPELLCAST* events such as UNIT_SPELLCAST_SUCCEEDED. None of these events can tell you how long the cooldown is on the item. So addons typically create lookup tables with those values. For example oRA3 has tables like this:

Code: Select all
local spells = {
   DRUID = {
      [20484] = 600, -- Rebirth
      [29166] = 180,  -- Innervate
      [17116] = 180,  -- Nature's Swiftness
      ...


These tables ship with the addon and the first numbers is the spell id and the second is the cooldown in seconds.

Then, because there are many things that can impact the cooldown (spec, glyphs, procs, etc) there are sometimes other tables containing "offsets" or "if the person has this item then adjust the cooldown by this amount". Again, a clip from oRA3:


Code: Select all
local glyphCooldowns = {
   [57858] = {5209, 30},   -- Challenging Roar, -30sec
   [57903] = {5384, 5},    -- Feign Death, -5sec
   [56844] = {781, 5},     -- Disengage, -5sec
   ...


If we look at the paladin class, you can see that the authors have already identified the Cataclysm spells that will need to be uncommented from the code when the abilities become available:

Code: Select all
   PALADIN = {
      [633] = 600,    -- Lay on Hands
      [1022] = 300,   -- Hand of Protection
      ...
      --[82327] = 60,   -- Holy Radiance, Cata only
      --[86150] = 300,  -- Guardian of Ancient Kings, Cata only
   },


A quick scan shows oRA3 supporting roughly 200 spells, and has offset values for about 37 glyphs. But it has never handled some of the more crazy stuff that doesn't relate to glyphs. For example, we all know the Guardian Spirit used to only be like a 1 minute cooldown if it didn't proc. But if it did proc then the cooldown would jump to 3 minutes intsead. I'm honestly not sure how many other examples are out there like this. But the point is that there are a lot of spells in the game who's cooldown cannot be considered static.

RaidCooldowns for example (an addon that I used to use and did a great job) has code like this for dealing with Guardian Spirit:

Code: Select all
function mod:PriestSpellSuccess(event, unit, spell)
   if unit ~= "player" then return end
   
   if spell == guardian then
      -- Guardian Spirit cast; schedule an event in, like, 12 seconds to scan the
      -- cooldown to see if the Glyph reset it.
      self:ScheduleTimer("GuardianScan", 12)
   end
   
   -- Let our generic method run as normal
   self:GenericSpellSuccess(event, unit, spell)
end


It basically fires off a timer that after 12 seconds rescans the cooldowns regardless of current events. It's actually a simple and perfect approach. But the point here is that it had to be hand coded to support Guardian Spirit's behavior.

There are also less obvious issues that are Blizzard's fault, not the addon authors. Some spells don't show up in the combat log, so for those the SPELLCAST events are required instead. So you have to scan both COMBAT_LOG_EVENT_UNFILTERED and SPELLCAST when really Blizz should have just put them all in COMBAT_LOG_EVENT_UNFILTERED to make it easier on us.

Another example, *MOST* spells fire a UNIT_SPELLCAST_SUCCEEDED event. But, yup you guessed it. Not all of them. For example I think Exorcism doesn't (although that might have changed by now).

And then of course there are other more subtle issues for some spells that require checking for UNIT_SPELLCAST_START, keeping an in memory "bookmark" of it (who cast it and what the spell was) while waiting for it's matching UNIT_SPELLCAST_STOP event.

Basically, this crap is more complicated than it needs to be. In most cases you don't have to jump through all of these hoops. But there are enough cases out there where you DO that it makes it mandatory to understand this all.

I am guessing sculder can attest to everything above!

Here's how Hermes handles things
Hermes doesn't look at COMBAT_LOG_EVENT_UNFILTERED or SPELLCAST events at all. Hermes also doesn't have any hard coded tables with spellid to cooldown metadata. It also doesn't have any glyph tables, or special handling for any weird spells like the old Guardian Spirit.

In fact, Hermes is about the most stupid addon you can imagine in regard to what it knows about spells. It knows jack squat!

With Hermes, Senders and Receivers communicate with each other. Senders get a message requesting that if it has a spell to track the time. And Receivers get the cooldown change messages from the Senders. Each sender remembers all of the requests made of it and keeps a record of everything. Every second or so, the sender loops through all requested ids, and checks its spellbook to determine the cooldown state.

If the cooldown changed since last time it was checked, a message is sent to the receivers with the id and the new duration. *CHANGED* can mean any of the following:

1. The duration was zero, and now it's not.
2. The duration is significantly smaller than the last scan (for example, if the duration suddenly changed from 40 seconds to 20 seconds since the last scan)
3. The duration is significantly larger than the last scan (such as the case with Guardian Spirit)

Because of this approach, Hermes can be completely dumb and is never reliant on one off code or custom lookup tables. At least not yet :)

An interesting side effect is that if someone newly joins your raid with something already on cooldown, Hermes will still get accurate cooldown information. Not just on your end, but the person who just joined the raid will also get fresh information from everyone else in the raid.

Hermes handles items in a similar way although the logic is slightly more complex. For items, Hermes first checks to see if the item is something that's supposed to be equipped or not. If it is an equippable item, then it'll check to see that it's equipped and what the cooldown is on it (think Trinkets). If it's not an equippable item, then Hermes just makes sure you have at least one in your bags, and checks the cooldown on that (think Healthstones, Soulstones, Saronite Bombs, etc.)

Hermes strength is also it's weakness. Because I don't hardcode a bunch of spells into the program, when people add an item or spell using it's "name" instead of "id" Hermes has no intelligent way to ensure the proper id is chosen based on the name. I've seen some names that returned over 20 different spellid's. The good news is that I updated Hermes to ship with a bunch of defaults out of the box so most of the spells people would want are already included.

And nevermind the fact that the way Hermes presents the information is also somewhat unique. You could argue that "buttons" aren't sensible. But they are very compact, and familiar. Also, that Hermes shows you who DOES have spells available is quite different from some of the other addons who only show some sort of indicator when someone doesn't have it available. I always though that was bass-ackwards!

As relates to performance, WoW is a single threaded game. All processing time done by addons reduces your framerate. Picture this:
1. COMBAT LOG messages come in fast and heavy and they all have to be processed. Somewhere between 50 and a few hundred per second.
2. Hermes, on the average worst case scenario, probably looks at maybe 10 things in your spell book once every second. It's much less CPU.

If you REALLY need to track other peoples spell or item cooldowns, I don't think there's a better solution than Hermes right now. As is hopefully clear, it's actually a very simple addon that should be dependable during future patches.

I think I better shut up :)
inthedrops
Maintankadonor
 
Posts: 1281
Joined: Mon Oct 29, 2007 9:19 am

Re: Hermes: The great messenger of your raid's cooldowns!

Postby sculder » Mon Nov 29, 2010 3:30 pm

scanning through COMBAT_LOG_EVENT_UNFILTERED events to try to accomplish this type of addon is the memory equivalent of reading through a text file character by character, breaking each down to ascii values, converting to hex, then comparing the results to an external database written in another language, all to try to find a word. And usually even more complex than that :lol:

I like the way this addon communicates its messages though, quite simple and direct. Great work all around
User avatar
sculder
 
Posts: 171
Joined: Sun Jul 25, 2010 9:34 am
Location: Massachusetts

PreviousNext

Return to Add-ons, UI, and Macros

Who is online

Users browsing this forum: No registered users and 1 guest

Who is online

In total there is 1 user online :: 0 registered, 0 hidden and 1 guest (based on users active over the past 5 minutes)
Most users ever online was 380 on Tue Oct 14, 2008 6:28 pm

Users browsing this forum: No registered users and 1 guest