promotional bannermobile promotional banner

Recount - Revived

Recount is a graphical damage meter written by Cryect. Recount (Preservation) is an attempt to preserve it and keep it running moving forward

File Details

Recount-v1.17.4

  • R
  • Apr 17, 2026
  • 300.37 KB
  • 3.6K
  • 12.0.1+6
  • Retail + 2

File Name

Recount-Recount-v1.17.4.zip

Supported Versions

  • 12.0.1
  • 12.0.0
  • 11.2.7
  • 4.4.0
  • 3.4.3
  • 2.5.5
  • 1.15.8

Recount Changelog

[v1.17.2] (2026-04-15) - Compare Graph Window

New Features

  • Compare Graph window — A new multi-series time-series graph window accessible from the main toolbar. Add any number of player + metric combinations as overlaid lines and compare them side by side. Supports all 14 tracked metrics: Damage Done, DPS, Friendly Fire, Damage Taken, Healing Done, Absorbs, Healing Taken, Overhealing, Deaths, DOT Uptime, HOT Uptime, Activity, Threat (TPS), and Threat (Total).

  • Fight Filter dropdown — Restrict the compare graph to a single recorded combat encounter using the Fight dropdown. Selecting a fight clamps the X axis to that window; "All Fights" shows the full session timeline.

  • Per Fight mode — A "Per Fight" checkbox renders each recorded fight as a continuous sawtooth line on a shared session timeline. Each fight rises from 0 as the metric accumulates then snaps back to 0 at fight end, with flat-zero gaps between pulls. Useful for comparing output across an entire raid session.

  • Crosshair cursor with live tooltip — Hovering over the compare graph draws a vertical hairline at the cursor and shows a ANCHOR_CURSOR tooltip with the interpolated value of every active series at that X position. Values are linearly interpolated between 1-second samples and formatted as raw, k, or m depending on magnitude. The X header shows elapsed seconds since the fight/session start.

  • Normalize checkbox — Scales each series independently to 0–100% so metrics with vastly different magnitudes (e.g. 640k threat vs 11k damage) can be visually compared on the same axis.

  • Integrate checkbox — Converts per-second rate data (DPS, TPS) into cumulative totals over time. Metrics that are inherently cumulative (Damage Done, Healing Done, Threat Total, etc.) integrate automatically regardless of this checkbox.

Improvements

  • Threat time-series units correctedTimeData["Threat"] now stores raw threat/s (matching TimeData["Damage"] units) instead of k-threat/s. After integration, Threat (Total) now correctly reaches the same magnitude shown on the bar chart (e.g. 614,000). Requires one fresh fight after updating; existing saved data will be on the old scale.

  • Compare graph dropdown fixUIDropDownMenu_Initialize was being called inside the Fight and Metric dropdown OnEnter handlers, causing dropdown lists to close as soon as the cursor moved toward them. Removed the re-initialize call from OnEnter; init functions already read live data on every open.

  • Compare graph tooltip anchor — All three Compare window dropdowns (Player, Metric, Fight) changed from ANCHOR_LEFT to ANCHOR_TOPRIGHT so the hover tooltip no longer overlaps the dropdown list that opens to the left.

Files Changed

  • GUI_CompareGraph.lua — New file; full Compare Graph window implementation
  • TrackerModules/TrackerModule_Threat.lua — TPS units corrected to raw threat/s
  • GUI_Main.lua — Compare button added to main window toolbar

[v1.17.1] (2026-03-31) - Minimap Button Toggle Option

New Features

  • Minimap button toggle in settings — A checkbox has been added to the Recount settings panel (Options > Addons > Recount) to show or hide the minimap button. The checkbox calls Recount:ToggleMinimapButton(v) and the state is persisted in db.profile.minimapButton.hide so it survives reloads and is character-agnostic.

Files Changed

  • Recount.luatoggle entry added to consoleOptions.args for the minimap button visibility checkbox

[v1.17.0] (2026-03-30) - Minimap Button & Titan Panel Integration

New Features

  • Minimap button (LibDBIcon-1.0) — A persistent minimap button is now registered via LibDataBroker-1.1 and LibDBIcon-1.0. Left-click toggles the main Recount window; Shift+Left-click toggles the configuration window; Right-click opens the WoW addon settings panel. Cross-version compatible: uses Settings.OpenToCategory on Interface 11508+ and falls back to InterfaceOptionsFrame_OpenToCategory on older clients. Button position and visibility are persisted per-profile in AceDB.

  • Titan Panel integration (LibDataBroker data source) — A data source LDB object is registered under the name Recount_Stats. Any LDB display addon (Titan Panel, Bazooka, DockingStation, etc.) picks this up automatically. The plugin shows a live per-player stat (DPS: 842) updated every 1 second via C_Timer.NewTicker. Right-clicking opens a native UIDropDownMenu to switch between six display stats (DPS, Damage Done, HPS, Healing Done, Damage Taken, Deaths) and three datasets (Overall, Last Fight, Current Fight). Hovering shows a full tooltip with all six stats at once. The selected stat is persisted in Recount.db.profile.titanPanel.stat.

Files Changed

  • GUI_Minimap.lua — New file; LibDataBroker launcher + LibDBIcon-1.0 minimap button
  • GUI_TitanPanel.lua — New file; LibDataBroker data source for Titan Panel / LDB displays
  • libs/LibDataBroker-1.1/LibDataBroker-1.1.lua — New bundled library
  • libs/LibDBIcon-1.0/LibDBIcon-1.0.lua — New bundled library
  • Recount.toc (and all 4 flavor TOCs) — Added new lib scripts and GUI files
  • Recount.luaInitMinimapButton() and InitTitanPanel() called from OnInitialize()

[v1.16.0] (2026-03-30) - CurseForge Publishing, Multi-Flavor TOCs & Code Quality

New Features

  • CurseForge project integration — Added ## X-Curse-Project-ID: 1499579 to all TOC files and curseforge-project-id: 1499579 to .pkgmeta. Version field now uses the Recount-v1.17.4 packager token so releases are automatically versioned on CurseForge upload. Interface version updated to 11508 (Season of Discovery / Classic Era).

  • Multi-flavor TOC support — Added separate TOC files for each WoW client flavor following the standard BigWigs Packager / CurseForge naming convention:

    • Recount_BCC.toc — Burning Crusade Classic (Interface 20505)
    • Recount_Wrath.toc — Wrath of the Lich King Classic (Interface 30403)
    • Recount_Cata.toc — Cataclysm Classic (Interface 40400)
    • Recount_Mainline.toc — Retail / The War Within (Interface 110207, 120001, 120000)
  • CurseForge addon description — Created docs/Curseforge_Description.html with a full formatted addon description for the CurseForge project page, covering all display modes, tracker modules, features, slash commands, and credits.

Improvements

  • Ace3 externalized — Removed bundled Ace3 library source files from the repository. Libraries are now declared as externals in .pkgmeta and fetched by the CurseForge packager at release time, keeping the repository lean and libraries up to date.

  • VersionCheck-1.0 integrated — Added VersionCheck-1.0 as a dependency in Classic Era / BCC / Wrath / Cata TOC files for out-of-date addon notification. Omitted from the Mainline TOC where it is not applicable.

Bug Fixes

  • table.getn() and table.maxn() deprecated calls removed — Replaced all occurrences with the # length operator across GUI_Config.lua, GUI_Detail.lua, GUI_Graph.lua, and GUI_Main.lua. These calls produce errors in modern Lua 5.1 environments and generate lint warnings.

  • GUI_Graph.lua nil guard — Added Filtered and Filtered[1] and guard before #Filtered[1] access to prevent nil indexing when FilterDataByTime or DataCopy returns nil. Also applied or 0 fallback to Filtered[1][#Filtered[1]] and Filtered[1][1] arithmetic to prevent nil subtraction errors.

  • GUI_Detail.lua row type mismatch — Changed Row = ... or 0 to Row = ... or {} so the LSP correctly infers Row as a table, preventing false type errors when fields like Row.Data are accessed.

  • zonefilters.lua scenario type handling — Refactored C_Scenario.IsInScenario() assignment to use a separate scenarioType variable with or "none" fallback before assigning to instanceType, resolving a type-mismatch lint error. Added ---@diagnostic disable-next-line: deprecated suppression for the GetZonePVPInfo call which has no non-deprecated replacement in Classic Era.

  • Tracker.lua duplicate table keys — Commented out duplicate spell ID entries [1463], [6229], and [31000] in the shield absorb duration table. Duplicate keys silently overwrite earlier values in Lua and generate lint warnings.

  • TrackerModules/TrackerModule_CCBreakers.lua argument count mismatch — Added extraSpellId parameter to the AddCCBreaker function signature to match the 8-argument call site (previously declared with only 7 parameters).

Internal

  • Lua Language Server configuration (.luarc.json) — Added 40+ WoW API globals to suppress false "undefined global" warnings, including all COMBATLOG_OBJECT_* filter constants, CombatLogGetCurrentEventInfo, GetSpellInfo, BNGetFriendInfo, BNSendWhisper, LE_PARTY_CATEGORY_INSTANCE, InterfaceOptionsFrame, ColorPickerFrame, C_Scenario, RecountDeathTrack, RecountTempTooltip, and WoW project version constants. Added "duplicate-set-field" to diagnostics.disable.

  • markdownlint .pkgmeta suppression — Added **/.pkgmeta to both .markdownlintignore and .vscode/settings.json markdownlint.ignore to prevent YAML comment lines (# comment) from triggering false markdown heading warnings.