Recap records damage, healing, and other combat-related events in the area around the player. Recap tracks buffs, debuffs, and the use of abilities.
- When installing Recap, please first remove any existing Recap folder from your "World of Warcraft/Interface/AddOns" folder.
- If experiencing problems with Recap, sometimes it is a bug, and sometimes your saved variables file may be damaged. It is always worth seeing whether removing the saved variables file fixes the problem. To do that, exit the game and go into your "World of Warcraft/WTF/Account/<account_name>/SavedVariables" folder and remove the "Recap.lua" and "Recap.lua.bak" files. There are also per-character saved variables files in the ".../<account_name>/<server_name>/<character_name>/SavedVariables" folders.
- If you believe that Recap is properly installed and enabled, but you can't see the Recap main panel, try typing "/recap". If that doesn't work try typing "/recap centre" (or "/recap center").
QUICK START GUIDE: If you are new to Recap, or wish a quick overview, check out Recap_Quick_Start.rtf. This file is inside the Docs folder inside the Recap folder.
FREQUENTLY ASKED QUESTIONS: If you wish more detailed information, check out readme_FAQ.txt for all of the features I have added or modified. For answers about earlier (and possibly obsolete) features of Recap prior to version 3.50, check out readme_332_FAQ.txt by Gello. These files are inside the Docs folder inside the Recap folder.
REPORTING A BUG: Please use: http:wow.curseforge.com/addons/recap-hawksy/create-ticket/ for bug reports.
MAKING A SUGGESTION: Please use: http:wow.curseforge.com/addons/recap-hawksy/create-ticket/ to make a suggestion!
__ New in 5.21 __
* Added damage which is absorbed, such as by a spell shield, to the damage done by the attacker, and thereby for the benefit of the attacker's DPS. The damage is NOT added to the damage done to the target.
* A number of fixes, including improved pet identification and assignment to owner.
__ New in 5.20 __
* Initial testing for Shadowlands, version 9.0.2.
* Adjusted for Backdrop changes and for ENUM changes. It took longer than expected to restore the opaque backdrop for menus.
* Updated to identify most pets and assign them to owners, including for languages other than English.
* For display on the Other Details panel, insanity values, which are now non-integer (e.g. 2.0800), are rounded to the nearest integer.
* Replaced use of obsolete GetNumRaidMembers.
* Four modules from Ace3 (r1241) included.
__ New in 5.07 __
* Added search feature for names in stored data sets.
__ New in 5.06 __
* Fixes.
* Updated for version 8.2.5.
* Four modules from Ace3 (r1227) included.
__ New in 5.05 __
* Modified to work in Classic as well as in Retail.
* Fixes.
* Four modules from Ace3 (r1226) included.
__ New in 5.04 __
* Fixes.
* Uploaded as version 8.2.
* Four modules from Ace3 (r1214) included.
__ New in 5.03 __
* Fixes.
* Removed "synchronization" and "skip next fight", freed two Ace3 modules.
* Updated for version 8.2.
* Four modules from Ace3 (r1200) included.
__ New in 5.02 __
* Fixes.
* Updated for version 8.1.
__ New in 5.01 __
* Fixes.
__ New in 5.00 __
* Fixes.
* Display name of character that saved a data set.
* Updated for patch 8 (BfA), will work in earlier patches.
* Six modules from Ace3 (r1182) included.
__ New in 4.94 __
* Popup panel improvements completed.
* Timeout error chance greatly reduced.
* Fixes.
For descriptions of what was new for versions from 5.00 onwards, see the file readme.txt.
For descriptions of what was new for versions 4.60 through 4.95, see the file readme_495.txt.
For descriptions of what was new for versions 3.50 through 3.77, and for versions 4.00 through 4.55, see the file readme_455.txt.
Version 3.50 was initially uploaded by Hawksy on 2006-December-20
Recap up to version 3.32 was developed by Gello.
There a significant bug in Cataclysm code, concerning the absorption of damage by shields. I have observed this frequently in Beta, all in connection with Power Word: Shield, however the bugs might apply to other shield types.
1) If there is a damage event (no absorption) at about the same time as a fresh shield has been cast, there will occasionally be a matching reduction in the shield. So the damage of 1234 happened and was not reduced by absorption, yet there is a shield reduction event and the shield is reduced by 1234.
There is a second somewhat less serious bug, which affects only the attribution of shielding, not the actual absorption itself.
2) If a damage absorption event happens at about the time that the shield is due to expire, sometimes there is no corresponding shield reduction event.
There is a third bug, this one significant, though good if you are inside the shield.
3) A large number of blows that happen at the same time (blows from 5 different mobs in the sample I'm looking at) are all fully absorbed, yet the shield never had enough to absorb them all. The amount of free absorption is nearly as much as the shield was.
Hawksy
In addition, for those interested, Blizzard now provides more specific information about shields and absorption.
-- Absorption and shields for patch 4.0.1 (pre-Cataclysm) as of 2010-October-01:
-- Blizzard now includes in the combat log events SPELL_AURA_APPLIED, SPELL_AURA_REFRESH, and SPELL_AURA_REMOVED the size of the shield remaining for the buff
-- The amounts of damage absorbed were already available in combat log events for damage
-- We can determine how much damage a shield absorbed if we have 'before' and 'after' aura events (why oh why, Blizzard, do you not have something easy like a SPELL_AURA_ABSORBS event with an amount absorbed plus the size of the remaining shield, a trivial number of additional bytes?)
-- Ideally the sum of damage absorbed (from single damage events) and the sum of shields consumed (from pairs of aura events) would be equal
-- If only it were that simple
-- We find that damage events or aura events might be missing entirely, whether because they take place out of range or are simply lost
-- We also have the problem that Recap does not currently record shield aura events that occur outside of combat (we might be able to partially fix this, investigating)
-- We find that damage events and the matching aura events might occur in either order, so we have to accommodate that by registering all related events to the target / aura / caster combinations
-- We can match up damage absorption events and shield aura event pairs to the best of our ability
-- We note that shield aura events can arrive at least 5 seconds after the corresponding damage absorption events, so we have to allow for an unusually generous window for the reconciliation of registrations
-- We can sometimes tell that a target has a shield aura to match a damage absorption event, but without an earlier matching shield aura event to give us an accurate delta (so we choose to assign all of the absorption to this shield, and furthermore to the first such shield aura event encountered, which might not be completely accurate)
-- We note that often, but not always, the penultimate SPELL_AURA_REFRESH event and the ultimate SPELL_AURA_REMOVED event will show the same size of shield remaining (i.e. zero absorption), and furthermore that the SPELL_AURA_REMOVED event can show a remaining size of zero if the shield has been entirely consumed
-- We find that some shield auras feature *increased* shield sizes from one aura event to the next (e.g. Illuminated Healing), so presumably something boosts the shield while it is in place (not sure of the mechanism here)
-- We speculate that this observed increase might also occur if a new shield (of the same type from the same caster) overwrites an existing shield (we have no definite sample of this happening yet)
-- We wonder whether the overwriting of an existing shield by a smaller shield could ever occur, and if so whether this would produce spurious shield reductions that we would mis-interpret as absorptions (no information on this yet)
-- We find that sometimes multiple absorption events will be covered by a single aura event pair (e.g. absorption 12 plus absorption 15 plus absorption 9 matched by a single shield change of 36)
-- We wonder whether this aggregation of shield size changes might include both shield reductions and shield increases (if so, we would lose the ability to reliably assign absorption events to shields)
-- One aura which might represent a shield also appears to contain a secondary spell ID (we have not determined what this is and how to use it)
-- Mechanism: a) register each absorption amount to the target, and if there is a prior registration of a shield aura change, we can do something (see step c)
-- b) register each shield aura change (in the order encountered, not in any priority order) to the target / aura ID / caster combination, and if there is a prior registration of an absorption amount, we can do something (see step c)
-- b1) if there is a shield aura event without a prior shield aura event (so that we cannot calculate a delta), then there is an implied infinite change, and during step c) the entire registered absorption amount will be credited to this shield
-- c) if there is a match from a) or b) then reduce both registered numbers by the lesser of the two amounts (a registration that goes to zero as a result of this is removed)
-- c1) if there are multiple shields registered to the target, matching from an absorption amount is done on a first come, first served somewhat random basis (specifically, for the target we scan spell IDs in the order handed to us by LUA, and within the spell IDs we scan in the caster order handed to us by LUA) (we do not scan spell IDs in any special case order giving priority to e.g. Power Word: Shield, which had been the deal with our pre 4.60 special case code)
-- ideally at the end of a fight there will be no non-zero registrations left, and we can declare happiness, but this is often not the case (we don't yet fully understand all reasons for this)
-- unmatched absorption amounts, and unmatched shield aura changes, are currently both left un-attributed to any healer at the end of a fight (we have no feeling yet for whether or not this is a significant proportion of all absorption)
-- we expire an absorption amount registration after 10 seconds (since we have observed experimentally that it must be remembered for at least 5 seconds, so trying to be safe) if there is no matching shield aura change (could expire something that Blizzard considers still active, or fail to expire something that Blizzard considers ended)
-- we expire a shield aura change registration after 40 seconds (the longest duration shield that I know of at 30 seconds plus the same 10 second window just described) if there is no matching absorption amount (could expire something that Blizzard considers still active, or fail to expire something that Blizzard considers ended)
--
-- On the plus side, we at least have, in theory, absorption / shielding numbers that we can match up unambiguously to the healer
-- We find that in many simple situations, this works exactly as expected and desired
-- It is a general solution, so we have removed the half dozen special case code blocks for shields that Recap was hitherto processing individually
-- Recap will now be able to handle new shield types without any additional special case code
--
-- The jury is still out on whether our special case code was more or less accurate than the new code (we haven't done a direct comparison, and have our doubts (given the many complications listed above) but choose to go ahead anyway (combat log events are hit and miss for other data too, so why be more picky about shields))
-- The previous special case code included individual aura duration code, and this is no longer available, so some expired short-duration shield auras might still be credited since we can't always know that they have expired (there might be no corresponding SPELL_AURA_REMOVED event, for example)
Hawksy
This version adds optional live graphing. When enabled, it costs a bit of memory, plus additional CPU time, so make sure that your computer can handle it.
To enable live graphing, turn on "Live Data Mode" on the Options / Settings panel. Then go pick a fight.
The default will show a graph of your personal outgoing DPS. You can tab to see your incoming DPS, and your outgoing HPS (healing per second).
You can see live numbers in the form of text listings (costs very little CPU time). Click on the "Text" tab.
The "more" button allows you to turn on graphs for other people in your group. Be cautious about turning on additional graph lines until you know whether your computer can handle it.
If you are showing more than one graph line, you can highlight individual graph lines to make them stand out. Click on the name in the "more" panel.
When you are looking at a graph, it will stay there until your group gets involved in another fight that lasts at least 5 seconds. If you want to keep looking at a graph even if another fight starts, you can pause live data collection. All other Recap data tracking will continue. Resume live data collection when you have finished looking at the graph.
There are more details available in the tooltips, and in the file readme_FAQ.txt.
Hawksy
There is a new column for DPS / gear value ratio. The gear value is currently taken from the GearScore add-on. I'm aware of how superficial this ratio can be, involving as it does DPS (a matter of debate) and gear value (rather subjective).
Recap tooltips now show which special clicks apply to a field. These click hints can be turned off.
Recap can now show a single detail across multiple combatants. Double-click on any detail in the bottom half of the popup panel for Outgoing, Incoming, or Other details.
Rows in the top half of the popup panel can now be sorted alphabetically.
Healing numbers in the top half of the popup panel now show actual healing (raw healing minus overhealing).
The percentage of critical ticks is now shown on the popup panel.
On the Options / Ignores tab an Add Suggested Ignores button will add the effects that I suggest you ignore. The current list are all effects which causes a player to heal a boss, thus distorting numbers in the Heal column. If you don't use the Heal column then don't bother with the Ignores tab.
The Deaths button now summarizes all recent friendly deaths. It is also much faster.
Good news everyone! Holy priests will no longer automatically pwn the Died column. Improved code will now count death plus Spirit of Redemption death as only one death.
Hawksy
Per-character combatant data is now compressed on logout and on reloadui, and uncompressed again on re-entering the game. This seems to avoid the Blizzard "block too big" problem.
Improved detection of end of fight when unrelated combat is taking place nearby. It may still be necessary in a few circumstances to mark an end of fight by pausing and resuming Recap.
Synchronization has been improved to allow synchronization to complete while Recap is paused; and to allow the leader of a synchronization to pause and resume Recap.
Stored Data Sets can now be renamed.
The main Fights panel now has an extra row of buttons at the bottom, all related to Recent Events. They do their thing only if Recent Data Mode is enabled. "Events" lists *all* recent events (the various "Recent" buttons display subsets). "Dispels & Interrupts" lists all recent dispels and interrupts. With version 4.29 dispels also include dispel casts and failures (to assist in diagnosing dispel difficulties at Steelbreaker). "Deaths" lists an analysis of recent deaths.
The Recent Events panel has two more buttons. The double up arrow scrolls to the previous end of fight, and the double down arrow scrolls to the next end of fight.
Added a setting on the Options / Reports tab to post to the clipboard in tab-delimited format suitable for pasting into spreadsheets.
Support for WIM has been updated.
For further information check the Description section on this page, and check the file readme_FAQ.txt.
Hawksy
I've had my Recap up to over 300 Mbytes, with over 21,000 combatants in my active combatants set (over 14,000 in the Fights panel). That should be way more than most people will need. No "block too big" crashes. I have a mid-range machine with 2 Gbytes of memory.
Yes, that much data slows me down a bit when logging in or logging out, or when zoning into a city such as Dalaran, but I can still run instances with no problems.
Hawksy
The only feature I miss from recount is the "events that lead to death". For all else, analyzing what is and is not effective in my output, and comparing it to that of others, Recap is by far the better data mod. Finding so and so has 20% more dps would mean nothing if I could not also see exactly which abilities used how many times his is coming from and his average hits and % of crits etc. And for checking mitigation on incoming, Recount doesnt even begin to try. For all of that that Recap is excellent.
Thank you.
--[[
local ldb = LibStub:GetLibrary("LibDataBroker-1.1")
local lastAll = ldb:NewDataObject("Recap All / Last",
{type = "data source",
text = "",
icon = "Interface\\AddOns\\Recap\\Images\\Recap-Status",
OnClick = function(clickedframe, button)
RecapFrame_Toggle()
end,
})
local yourDPS = ldb:NewDataObject("Recap Your DPS", {type = "data source", text = "0.0"})
local yourHPS = ldb:NewDataObject("Recap Your HPS", {type = "data source", text = "0.0"})
local groupDPSOut = ldb:NewDataObject("Recap Group DPS Out", {type = "data source", text = "0.0"})
local groupDPSIn = ldb:NewDataObject("Recap Group DPS In", {type = "data source", text = "0.0"})
local groupHPS = ldb:NewDataObject("Recap Group HPS", {type = "data source", text = "0.0"})
local yourDmgIn = ldb:NewDataObject("Recap Your Damage In", {type = "data source", text = "0"})
local yourDmgOut = ldb:NewDataObject("Recap Your Damage Out", {type = "data source", text = "0"})
local yourPetPercent = ldb:NewDataObject("Recap Your Pet Percent", {type = "data source", text =
"0"})
local yourHealing = ldb:NewDataObject("Recap Your Healing", {type = "data source", text = "0"})
local yourOverHealingP = ldb:NewDataObject("Recap Your OverHealing Precentage", {type = "data
source", text = "0%"})
local yourMaxHit = ldb:NewDataObject("Recap Your Maximum Hit", {type = "data source", text = "0"})
]]
only as option in the menu?
Geek talk alert:
It comes down to a theoretical problem that I have with LibDataBroker as currently specified.
I agree with the benefits of keeping data supply and data display separate. However, LDB does not as far as I can tell provide a declarative menu structure. Therefore in my opinion requiring the data supply to actively support a menu at the data display end violates the intended separation of supply and display.
Hawksy
I've uploaded version 4.09, and when it shows up here, version 4.09 will be available. If it doesn't show up as the default download, then grab it from the direct links just above.
This version adds "best effort" assignment of healing to the healer for five spells: Prayer of Mending, Lifebloom, Earth Shield, Improved Leader of the Pack, and Judgement of Light. Suddenly the healing that your tank does will drop to near zero.
This version removes the 'unexpected event' messages for the five new combat log events that Blizzard introduced with patch 2.4.3. This version of Recap does not yet process the new combat log events associated with breaking crowd control, so this version will no longer be tracking all breaking of crowd control. I'll address that in the next version.
According to the Blizzard patch notes the new patch should allow Recap to properly credit elementals to shamans. It seems to do so now, but I haven't had a chance to test this fully.
Hawksy
This is almost like a blog entry....
I'm now working on getting Prayer of Mending heals assigned properly. This will be the first bit of special case code in Recap. I've tried to avoid special case code in the past, and with good reason. It's never pretty, and it tends to be higher maintenance.
It is turning out to be very much trickier than it first looked, not because of Recap but because of the way that Blizzard issues (or doesn't issue) the relevant events. It is further complicated if Recap doesn't get some events because of range issues. The result will be a "best attempt" to assign the healing to the appropriate priest.
Because each copy of Recap may see events slightly differently they may get slightly different answers. This means that if multiple copies of Recap are in synchronization there may be a slight inflation of priest healing numbers on the All Fights panel. This would be due to double-counting of some Prayer of Mending procs.
I expect to run into similar issues with the other healing spells that need tweaking (Lifebloom, Earth Shield, Improved Leader of the Pack, and Judgement of Light). I may not be able to include all of them in the same release of Recap, though I'd like to.
Later note (July 14): I'm currently testing and tinkering with all five. Lifebloom and Earth Shield were the easiest, Prayer of Mending the trickiest, with Improved Leader of the Pack and Judgement of Light being of intermediate difficulty.
Does anyone know of any other healing spells that need code to re-assign the heals to the correct healer?
Hawksy
Combine Pets with Owners = Showed data done by pet and owner in one line, and a second line solely for pets. <- I like this option as it shows how much damage my Hunter is doing overall, but also shows how much my pet is doing (and if the changes in spec I made have an impact (as BM Hunter is important).
Show Pets and Owners seperately = Shows Owners damage on one line, Pets Damage on another to get total you have to add it up in your head. Any possibility for this enhancement? I would imagine it wouldn't be that hard as you already have the option to merge pet with owner.
Hawksy,
Thanks again for keeping this updated. As I've said before, I've tried all the other combat/dps tracking mods and this one blows away the rest (easy to use, but yet, excellent data--I can report any/all data easily in-game to the raid members if desired--miss rates, dps, total dmg output, dodge/parry rates, etc etc).
I would like to add that many of my guildmates have actually been "converted" and have started using it!
Thanks again,
Hawksy Recap Fan!
Thanks for adding the healing rate meters to the small window. I noticed them last version and just wanted to say thanks.
Awsome job :)
PS: our guild uses SW stats and personally i think the author is on crack :P no offence meant or intended but its needlessly complicated to setup and view. disabled :) leeds me to ask a question tho, on the main window heal number is that with or without overheal ?
PPS: wish blizzard would add ranks on spell cast so i can see how much of what rank im using.
HAWKSY,
I just want to say THANK YOU for keeping the absolute best damage/dps tracker going. I have been using recap for over a year now, easily, have tried all the others, and I absolutely love how recap gives you everything you need/want in a very easy-to-use, presentable, format. No mess, no fuss (and I've tried them all--dmg meters, etc.) For the life of me I don't know why more ppl don't use this mod! Thanks again for keeping one of the only long-standing mods on my computer going!
Best Regards,
Law
Hawksy: Thanks for the response. I think I didn't make clear what I meant. I know there is a combat log and that it can be written. The problem is that it's messy and contains more than I want to see. Recap already sorts combat log messages to combatants, this is the first step of what I need because I'm just interested in the damage the MT (say) took, and possibly the heals. I'm not interested in having to manually filter 20 lines to find one line that's significant. Recap already does that filtering step. The only thing that's needed is to keep a combatant-only subpart of the combat log for the last N attacks or N seconds.
All the combat log filters I have seen are just not good solutions and I always though this would neatly fit into recap ;).
Imagine you click on a attack type in the details window and a window pops up that shows the last 5-10 uses with time-stamps. That's really all I'm hoping for. More advanced, click on the combatant (say shift-click) and get a combatant only combat log showing all of the damage and heals taken.
That's exactly the functionality I want. If another addon provides that I'm happy to hear about it but I haven't found it yet. I think it would probably involve rewriting most of recap so adding it is the easiest solution I can think of ;)
First off, awesome. I like the amount of development that is now again going into this addon, which is an old treasure really.
Recap is still to date the best combat analysis tool I know, giving easily accessible combat-specific stats for all participants.
There are basically two things that I'm missing and was wondering if they could be added.
The first would be time between equal attack types. This is interesting when meeting new dungeon bosses to learn it's attack pattern and damage types. How often (in what intervals) the attack occurs can be very helpful. Any way to add that.
The second would be that for all or select targets one can retain the damage and healing history for a certain time frame.
A big problem in learning an encounter can often be how exactly a key role player died. Having the last 5-10 seconds on record with precise timing of damage taken vs healing taken would be invaluable here.
I know that these are not necessarily small changes but they would finalize recap as the only combat stats/analysis tool I need.