promotional bannermobile promotional banner

Epic Damage Meter

A lightweight, non-bloated World of Warcraft damage meter designed for accurate real-time tracking and minimal to non existent performance impact.

File Details

EpicDamageMeter v.2.6.1

  • R
  • Jun 26, 2026
  • 473.40 KB
  • 243
  • 12.0.7+14
  • Classic TBC + 4

File Name

EpicDamageMeter.zip

Supported Versions

  • 12.0.7
  • 12.0.5
  • 12.0.1
  • 5.5.4
  • 5.5.3
  • 4.4.2
  • 4.4.1
  • 3.80.1
  • 3.80.0
  • 3.4.5
  • 3.4.4
  • 2.5.5
  • 2.5.4
  • 1.15.8
  • 1.15.7

EpicDamageMeter - Changelog
============================

Version 2.6.1
-------------
Functional Utility Modes (CC Breaks, Resurrects, Friendly Fire, Healing Received)

- These display modes were selectable but never populated — they always
  showed 0. They now record real data on the CLEU path (Classic / TBC /
  Wrath / MoP / Classic Era):
    * CC Breaks    — crowd-control auras broken by your damage (early
                     Polymorph/Sap/Freezing Trap breaks). Credits the breaker.
    * Resurrects   — resurrection casts, credited to the caster.
    * Friendly Fire— damage dealt to friendly group members.
    * Healing Received — total healing taken (also got a proper sort key;
                     it was sorting by damage before).
- Added them to the mode picker (Classic clients only — Retail's meter API
  doesn't supply them). New mode icons.
- All four persist across reload and are mirrored into the Overall segment.

Version 2.6.0
-------------
Death Recap, Segment Behavior & Tooltip Fixes (report: Smuglerz)

1) TOOLTIP NO LONGER COVERS THE BARS
- The spell tooltip is SetClampedToScreen, so when the meter sat
  near the right edge of the screen the clamp shoved it back left
  — on top of the bars and names, making it impossible to sweep
  down the list. It now picks the side with room (right if it
  fits, otherwise left), so it's always beside the window.

2) DEATHS NOW HAVE A REAL RECAP
- We now keep a rolling buffer of the damage taken and heals each
  group member received, and snapshot it on death. In Deaths mode,
  hovering a player shows a play-by-play: the killing blow, then
  the last ~15 events before death with timestamps
  (damage in red, heals in green). Works on the CLEU path
  (Classic, TBC, Wrath, MoP, Classic Era; Retail PvE too).

3) BOSS FIGHTS NO LONGER SPLIT ON RP
- Bosses that linger at 0% during RP (e.g. Balnazzar, Lillian
  Voss) made combat drop and re-engage, which started a NEW
  segment mid-fight and halved everyone's DPS.
- New approach: on combat end we no longer close the segment
  immediately. We defer and only finalize once the WHOLE GROUP is
  out of combat (checking UnitAffectingCombat on each raid/party
  member). While a boss lingers at 0% the group is still in
  combat, so the fight stays in ONE segment — and this needs NO
  encounter events, so it also covers Classic/SoD dungeon bosses
  that fire none. A re-engage before we finalize is treated as a
  continuation. A 20s safety deadline prevents a bugged "stuck in
  combat" member from holding the segment open.
- Kept an ENCOUNTER_START/END guard on top as a second signal for
  raid bosses / MoP.
- Also fixed boss-segment duration: it was finalized as wall-clock
  time (encounter start→end), counting the RP/idle seconds and
  deflating post-kill DPS. It now uses ACTIVE combat time.
- Applies on Classic/TBC/Wrath/MoP/Classic Era. On Retail the
  Blizzard meter (C_DamageMeter) segments natively, so only the
  encounter guard is mirrored there.

4) LAST FIGHT STAYS ON SCREEN AFTER A BOSS
- On MoP the meter jumped to an empty "Waiting for combat" window
  right after a kill. It no longer creates an empty segment on
  encounter end — the boss fight stays up for analysis until the
  next pull. Applied to all flavors.

- All four fixes apply on Classic AND Retail where relevant.

5) OPTIONAL: DPS OVER ACTIVITY TIME
- We never actually tracked per-player active time — DPS/HPS was
  always damage ÷ full segment length, so a late joiner / early
  death / someone who stood idle looked lower than their real
  throughput. We now accumulate each actor's active time, with
  separate idle thresholds for damage (3s) and healing (10s) so
  both DPS and HPS over activity are accurate.
- New setting Settings > Combat > "DPS over Activity Time"
  (default OFF). Off = divide by fight length (Warcraft Logs
  parity, unchanged behavior). On = divide by the player's own
  active time. CLEU path (Classic family).
- The player breakdown header now shows an "Activity %" next to
  DPS so you can see how much of the fight a player was active.

Version 2.5.8
-------------
Fix: Create New Profile did nothing on Classic (report: Furion)

THE BUG
- Settings > Profiles > "Create New Profile": typing a name and
  clicking Create did nothing on Classic, TBC, Wrath, MoP and
  Classic Era.
- Cause: the button called db:CreateProfile(), but that method
  only exists on Retail (it's part of our custom Retail profile
  system). On every other flavor the addon uses stock AceDB-3.0,
  which has no CreateProfile — so the `if db.CreateProfile`
  guard was false and the click silently did nothing.

THE FIX
- The button now falls back to AceDB's SetProfile(name) on those
  clients, which creates the profile on first use (and switches
  to it). Retail keeps using its CreateProfile().
- Added a duplicate-name guard for both backends and a localized
  "Profile already exists" message.

Version 2.5.7
-------------
Retail: Spell Tooltips in the Breakdown Window

THE GAP
- On Retail (Midnight), spells in the player breakdown had NO
  tooltip and NO click reaction at all — hovering a spell like
  "Schwarzer Pfeil" showed nothing. That's because the Retail
  spell list is fed by C_DamageMeter, and only CLEU-sourced
  spells (Classic) had tooltip/detail wiring.

THE FIX
- Retail spells now show a tooltip on hover with everything the
  Blizzard API exposes: Total, DPS/HPS, Share %, Overkill, and
  the Avoidable / Deadly flags. When CLEU cast tracking has data
  (PvE), it also shows Casts and damage-per-cast.
- Captured the extra C_DamageMeter fields (overkillAmount,
  isAvoidable, isDeadly) that were previously thrown away.
- SecretValue-safe: tainted amounts in PvP are abbreviated via
  the Blizzard formatter instead of erroring.

FULL BREAKDOWN ON RETAIL (PvE)
- Our CLEU parser already runs alongside C_DamageMeter in PvE, so
  it has the normal/crit split and min–max that the Blizzard API
  lacks. The Retail spell tooltip now ENRICHES itself with that
  data when available: Hits, Crits (%), Normal avg + range, Crit
  avg + range — the same depth as Classic.
- Totals/DPS/share stay sourced from C_DamageMeter so the tooltip
  still matches the bars exactly; only the extra breakdown lines
  come from CLEU.
- Clicking a Retail spell now opens the full detail panel too,
  whenever that CLEU data exists for the spell.

NOTE
- In PvP (CLEU restricted) only the API fields show — no crit
  split — which is expected. Everything degrades gracefully.

Version 2.5.6
-------------
Expanded Per-Spell Breakdown

- Each ability now tracks NORMAL and CRIT hits separately (count,
  total, min, max each), on top of the existing totals.
- The spell tooltip in the breakdown window (click a player bar,
  then hover a spell) now shows:
    * Casts and damage-per-cast
    * Normal Hits: count / average, and min–max range
    * Critical Hits: count / average, and min–max range
  This makes it obvious how hard your crits hit vs your normal
  hits, and how much each cast is really worth.
- The spell DETAIL panel (click a spell in the breakdown) now
  shows the same expanded grid: Casts, Per Cast, Normal Avg, Crit
  Avg, Normal Range, Crit Range, Average and Max Hit. Healing
  spells get a matching grid (Casts, Per Cast, Average, Overheal,
  Overheal %, Effective %). The stat slots are relabeled per
  damage/healing so each mode reads correctly.
- Data is recorded on the CLEU path (Classic, TBC, Wrath, MoP,
  Classic Era). On Retail the Blizzard meter supplies its own
  per-spell detail; the breakdown lines simply don't show there.
- DoT ticks are bucketed as normal hits (they can't crit), so the
  v2.5.4 crit-rate fix stays consistent.

Version 2.5.5
-------------
Classic: Keep Data on Reload + Font Size Fix (report: Smuglerz)

KEEP DATA ON RELOAD / RELOG
- Segment history was only persisted on Retail — on Classic, TBC,
  Wrath, MoP and Classic Era a /reload or relog wiped every
  segment. Now ALL flavors save fight history to SavedVariables
  and restore it on login/reload.
- New PLAYER_LOGOUT handler does a full flush (including the
  current fight) right before SavedVariables are written, so a
  mid-raid reload keeps everything that's on screen — not just
  completed boss fights.
- Also saved after each combat / boss so nothing is lost even if
  the logout flush is missed.
- New setting Settings > Combat > "Keep Data on Reload" (default
  on) — both Save and Load respect it, so you can turn the whole
  thing off if you prefer a clean slate each session.

CLASSIC/SoD FONT SIZE FIX
- On Classic (notably SoD), bar fonts ignored the user's size
  (e.g. 16pt) after a reload until a settings slider was nudged.
- Cause: early in login the font system isn't ready, and
  SetFont() can silently fail — no error, and GetFont() still
  reports the old font, so our "did it work?" check passed while
  the size hadn't actually changed.
- Fix 1: SafeSetFont now verifies the APPLIED size matches the
  requested one and falls back to the built-in font (which applies
  reliably even early) at the correct size if not.
- Fix 2: Classic re-applies settings shortly after login so the
  chosen font + size stick on the first paint, no slider nudge
  needed.