I really have no interest in maintaining this code based on wereHampster's initial fixes, if someone else wants to do so by all means do. I just needed something that worked. This mod isn't well tested as I don't often have access to another account to do so.
Essentially Werehamster's fix plus:
- a hack to force the bars to disappear if the unit_spellcast_stop isn't detected
- a hack to force casting bars of those without Healsync to appear on a unit_spellcast_start
- a hack to identify and remember who has Healsync
- a hack to add /hs menu options that filter the spell bars shown by targets/casters
- a hack to circumvent an odd behavior where if you have a trade window open and that player casts a spell, they are detected as an "npc" casting a spell
- Fixes are not pretty and not efficient.
- For some reason the cast bars sometimes freeze mid-cast until the stop_cast hack forces them to disappear... unsure as to the reason why
- Healsync raid channel communication untested recently as I haven't had access to a second account.
This temporary fix for Healsync should work with HealSync-r19499.
I noticed unit_spellcast_stop is not always detected and bars would not disappear until a new event concerning the player/target occured. To circumvent this problem I decided to use Ace's timed event triggers.
- Removed Ace library dependencies... a dirty, dirty hack that isn't necessary
- Code is somewhat cleaner
/hs OFF - Don't show cast bars.
Current HealSync Target Options:
/hs UNIT - Show cast bars targeting player, party, or raid units
/hs ALL - Show cast bars targeting anything. Target units with the same name will share cast bars.
Current HealSync Caster Options:
/hs CLIENT - Show cast bars of those with Healsync ONLY.
/hs SCAN - Show cast bars of those with/without Healsync
- add something for channeling
- Clean up a bit more
Why not post it so we can use the WowAce downloader?
There is a thread on Curse Gaming and ui.worldofwar.net about "Dorje's Healing Bars" a port of "Forecast".
The discussion points out that there is a lot of overhead using Healsync due to the amount of parsing of the combat logs. The nice thing about healsync though is no one has to run it. Where the other mods require others to run it and then they send messages to each other.
I require all healers in my guild to run Dorje's Healing Bars now. We used to use ForeCast. It's a small issue since most guilds require people to run certain mods on raids. Healsync is very basic. Dorje's Healing Bars has lots of really nice options and the latest version works with ForeCast so people on a raid can run either one. I would highly recommend Dorje's mod if you haven't tried it out yet.
Currently HealSync has no overhead from parsing logs. HealSync now uses UNIT_SPELLCAST_* event triggers. The pre-2.0-patch healsync parsed combat messages and tracked heal time/amount averages through HealSyncScanner. The post-2.0-patch HealSync doesn't track any of that and has abandoned the parsing of combat heal messages completely. The client communication traffic is less now too. The current version only broadcasts a player's cast target to other HealSync clients. The old version transmitted spell name, start, lag, target, and stop.
Most of Healsync's overhead probably comes from the way it handles spell bars, which has not been changed from the old version. Currently every time there is an event that effects the target or the player, EVERY cast bar is destroyed and then recreated. This could be an expensive way of doing things. I've toyed with the idea of rewriting it so that it destroys spell bars only when the spell bars are no longer displaying. On the other hand... this would require significant changes and it works perfectly fine as it is. To be honest, I don't think I'll fix this unless I see evidence of a serious performance hit.
As for uploading a version to WowAce, I'm wondering if wereHamster will continue working on HealSync or not, and have no desire to hijack the project. I am working on it now purely out of the spirit that I do not wish to see HealSync left in the state of wereHamster's last release. Other than the discussed spell bar overhead and my lack of cross client testing, I'm fairly pleased with the current alpha2 release.
- Adding channeling support (druid heals and warlock heals channel)
- Test how much of a factor range is to UNIT_SPELLCAST_* event triggers. If range is too much of a factor, spell cast start/stop information needs to be added back into the commchannel communications
- Adding a command-line mechanism to resize HealSync
- Possibly add focus casting bars. Easy to add, as it is essentially a clone of the healsync_target frame with instances of "target" becoming "focus"
- I will probably add some way to turn player/target/focus bars off individually
Everything else is frosting. Healsync will not be getting a fancy graphics menu. I see no reason to add timers or icons (excessive information imo). I have no desire to see HealSync balloon into something it is not.
Thanks ... your responce is all I need to keep using this over the other mods.
I see you made it a download off of WoWInterface.com... I will keep an eye there for future versions. As for the HiJack issue, yeah that is a touchy subject around here lately with Haste removing his add-ons.
I think your principles are sound though... I use healsync cause I was looking for something that didn't require others to install mods to get the info.
I hope you continue to code the clean-ups. I require my healers in my guild to use this mod. But with the recent increase in size of all addons I have been growing concerned that Healsyc's overhead might have be a issue. Glad to see the latest version it isn't.
The biggest thing I noticed was that if you call the function UnitCastingInfo too late (or too often maybe) after a UNIT_SPELLCAST_START, function UnitCastingInfo can fail to provide data on spells still casting. Not only that, doing so seems to prevent UNIT_SPELLCAST_STOP from firing at the end. What causes UnitCastingInfo to do this is a mystery to me, but for now Healsync 4.0Beta5 stores UnitCastingInfo to an array after events UNIT_SPELLCAST_START and UNIT_SPELLCAST_DELAY. I havn't seen any issues yet. However, I sure wish I knew more about what UnitCastingInfo is doing.
Beta5 appears to work well. The only change I'll make before putting it down is to make it so that the function HealSyncSetTarget can feed Healsync accurate targeting info easily (currently doing so in Beta5 would cause issues). I've already written an addon ("HealSyncSnoop") which intercepts Healbot, CTRA rez, DJHB, and Forecast Targeting information and feeds it into a tweaked version of HealSync, but it still needs testing.
After that I'm probably done fooling around with wereHamster's code, unless it breaks again. Do with it what you will.