Hmmm, I may have seen this bug myself but ignored it as a possible bug in my oUF layout. I had the debug report from LibHealComm-4.0 indicating that it could not find raid11.
I did a '/tar raid11' and it selected a rogue who was in the 2nd group of my unit frames. The rogue should have been in position 7 or 8 rather than 11 so I ignored the error, also being a rogue I did not expect them to be producing any healing output...
I can't remember the name of the rogue but i'm pretty sure their name began with a variation of the character X with some type of special modifier.
That rogue was really raid11 if you selected it using /tar, raid index-group number matching is sometimes funny.
When displaying incoming heals, you may have issues with healed units, i.e. rogues. I suggest you to ignore healcomm:GetGUIDUnitMapTable() totally, e.g. do this in oUF_HealComm4 :
local updateHealCommBars = function(...)
for i = 1, select("#", ...) do
playerGUID = select(i, ...)
-- search current oUF frames for this unit
-- each character may be in multiple frames (target, raid,
-- focus, etc..) so need to check all frames
for j, frame in ipairs(oUF.objects) do
-- only update if GUID matches and there is an indicator to update
if (frame.unit and (UnitGUID(frame.unit) == playerGUID)) and
((not frame.ignoreHealComm) or frame.HealCommText) then
updateHealCommBar(frame, frame.unit, playerGUID)
I would suggest to check frame:IsShown() too, that would easily save a few CPU cycle too.
Heal sizes is nothing a healer actually looks at, you see an incoming heal, and its the important information. Considering UFs usually don't even show you all heals if there are multiple incoming on the same target..
My UF even only shows a small green'ish indicator for an incoming heal, i dont even bother showing the amount.
LHC-4.0 does sum incoming heals including HoTs, bomb heals and canalized spells. Most UFs show incoming heals for a limited time frame, something between 3 and 4 seconds ahead of time (because showing the total amount of heal done by a HoT is irrelevant). Depending of the spells, amounts vary from 500 hp to 10k. Heal sizes are really helpful.
LHC communication provides pretty accurate heal sizes and targets (which is almost impossible to get from remote point of view). It still uses combatlog and local events when communication is not needed.
[2009/10/23 17:16:51-7473-x1]: LibHealComm-4.0-41 (LibHealComm-4.0):2182: bad argument #2 to 'format' (string expected, got nil)
LibHealComm-4.0-41 (LibHealComm-4.0):2182: in function `?'
LibHealComm-4.0-41 (LibHealComm-4.0):2692: in function <Interface\AddOns\LibHealComm-4.0\LibHealComm-4.0.lua:2691>
But I tried running without the wrapper loaded in the raid yesterday and didn't notice any stuck heal. But this could also have been just luck, because the raid was significantly shorter than my last one.
Same here: no stuck heals when the wrapper is not involved (e.g. other healers are using LHC4 or I disable the wrapper).
I'm still having stuck heal. Since it only happens when healers are using LHC-3.0, I think it is related to the wrapper. Yet I'm a bit surprised the wrapper mess directly with the library internals. Would it not be saner to inject data using a "public" API (maybe the comm interface) ?
Ah! It's not related to the group map failing for grouped members but for the player themselves that explains it. Because I don't set guidToUnit[playerGUID] unless they are a healer and unless you are in a raid you don't get a raid# unit for the player.
With my piece of code I also realized that the GUID->unit map may return something like raidN or raidpetN but oUF unit->frame map contains data only for partyN or partypetN (or conversely, I don't clearly remember). So basically I think unit->frame maps just won't work: you have to scan all frames and check if UnitIsUnit(unit, frame.unit). This also solves possible issue when the same unit is displayed more than one. (I'm realizing I could just drop my GUID->frame map and find another solution)
To have it working, I'm doing a lazy guid=>frame mapping, i.e. doing map[guid] = frame when the data is updated (either on LHC callbacks or simply frame refresh) and then cleaning up out of combat on RRU, PMC or PLAYER_REGEN_ENABLED.