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.3

  • R
  • Apr 8, 2026
  • 226.20 KB
  • 470
  • 12.0.5+7
  • Classic + 4

File Name

EpicDamageMeter.zip

Supported Versions

  • 12.0.5
  • 12.0.1
  • 5.5.3
  • 4.4.2
  • 3.80.0
  • 3.4.5
  • 2.5.5
  • 1.15.8

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

Version 2.3
-------------
Bug Fixes
- Fixed crash spam "attempt to compare local 'str' (a secret string value tainted)" in Parser_Classic.lua:96
  (safeStr() now uses issecretvalue() to bail out before comparing tainted WoW 12.0 strings)
- Fixed Settings crash "attempt to call upvalue 'setValue' (a nil value)" — Minimap Icon toggle on Retail
  was missing the tooltip nil arg, causing the getter to land in the tooltip slot and setValue to be nil
- Removed "Enable Addon" toggle from Settings (the addon is always enabled when loaded)

Settings Panel Redesign (visual only — no functional changes)
- Larger, more readable section headers with bottom divider line and breathing room between groups
- Section titles now use mixed case + larger 12pt outlined font (was 9pt uppercase)
- Sidebar nav: bigger tabs (42px), larger icons + labels, animated hover state, glow + accent strip on selected
- Title bar redesigned: 42px tall, gradient accent glow line, logo dot, separate subtitle
- Reset Data / Reload UI buttons larger and more polished (32px, gradient hover)
- Slightly wider panel (820x620) for better content density
- Row heights and label fonts bumped for readability (toggles 28px, sliders 42px, dropdowns 30px, colors 28px)
- Softer alternating row backgrounds — less visual noise
- Universal row hover highlight on every row (toggle/slider/dropdown/color/dual)
- Each row has a subtle blue left-edge accent that ties section content together visually
- Larger toggle switches (34x16) and color swatches (40x18)
- Color swatches now glow with accent border on hover
- Dropdown buttons highlight with accent border on hover
- Slider value labels now outlined for better visibility
- Wider dropdowns (180px) with more legible 10pt text

Version 2.2
-------------
Profile System
- Simplified profile UI (Details-style: dropdown switch, create, copy, delete — no collapsible sections)
- Profiles now save/restore window position, size, scale and display mode per instance
- Multiple windows fully supported: each window remembers its own layout per profile
- Fixed "Profile not found" error (dropdown passed array index instead of profile name)
- Reset Profile preserves window positions

Font System
- Font Face and Font Style changes now trigger a confirmation popup + UI reload (required for WoW to apply)
- Font validation: only fonts that actually render text are shown in the dropdown
- Runtime font discovery from Blizzard font objects (WoW 12.0+ compatible — no more hardcoded broken paths)
- Fonts apply correctly to all bars including new bars created during combat (cached font system)
- Removed broken font registrations (2002, Morpheus, Skurri paths that no longer exist in TWW)

Names & Display
- Fixed names not showing on bars (dirty-check was skipping name updates when values unchanged)
- Fixed realm names showing on bars ("Player-Realm" now correctly stripped to "Player")
- Fixed special characters in names breaking color formatting (switched from string.format %s to concatenation)
- NickTag nickname support (Details-compatible — shows nicknames set in Details, configurable toggle)

Pets
- Merge Pet Damage option now only available on Classic/TBC/Wrath/MoP (toggle ON/OFF)
- Retail always merges pet damage (Blizzard's C_DamageMeter API pre-merges pets — cannot be separated)
- Classic: pet damage correctly merged into owner or shown separately depending on setting

Graph
- Graph v3: Premium visual redesign with layered glow effects, live pulse dot, gradient fills, bottom info bar
- Graph now reads data directly from the tracker (same data source as bars — fixes Retail SecretValue issue)
- Graph data buffer uses batch trim instead of repeated table.remove (performance fix)

Data Persistence
- Fixed damage data disappearing after combat ends (C_DamageMeter sync no longer zeroes out segment when API returns empty)
- Damage bars now persist between fights, only reset when new combat begins

Stability & Internals
- Removed all debug print() statements from production code (converted to Utils.Debug)
- Profile errors now show popup dialogs instead of chat messages
- Profile success messages removed (silent operation)
- Database nil guards: safe instance info lookup, timeline nil check
- Database timeline buffer uses batch trim (same as Graph)
- DetailWindow C_DamageMeter API calls wrapped in pcall (prevents errors on expired sessions)
- Font test FontString reused instead of leaking a new one each time
- Event registration wrapped in SafeRegisterEvent with debug logging on failure
- WotLK Reforged support (new TOC file, Interface: 30800)
- TOC versions updated to 2.2 across all game versions

Version 2.1
-------------
- Fixed window width/height not applying on login (ApplySettings now called after UI initialize)
- All font SetFont calls protected with pcall fallback (prevents broken text on invalid font paths)

Version 2.0
-------------
- Unified addon: Single folder supports Retail (12.0.1), Classic (1.15.8), TBC Anniversary (2.5.5), MoP Classic (5.5.3)
- Multi-TOC architecture with runtime API detection
- Retail WoW 12.0 support: C_DamageMeter API integration with Secret Values handling
- Real-time combat data display on Retail (renders directly from C_DamageMeter during combat)
- Fixed font, font size, and font flag changes not applying to bars
- Fixed Show Percent toggle not working
- Fixed Show Rank toggle not working
- Fixed graph not displaying data on Retail (now queries C_DamageMeter for totals)
- Fixed window scale not applying on reload (value saved but not rendered — reported on TBCA)
- Scale now saved per-character and re-applied in ApplySettings
- Fixed Current/Overall tabs both showing overall data
- Fixed combat timer stuck at 0:01
- Fixed left-click toggle window not working
- Fixed combat duration not accumulating across multiple combat phases
- Show Fight Duration toggle now works in status bar
- Separated DPS from Damage Done display (DPS shows per-second + percent, Damage Done shows total + DPS)
- Separated HPS from Healing Done display (same distinction)
- Fixed sorting not updating during combat (insertion sort with per-comparison pcall for secret values)
- Detail window opens on bar click with spell breakdown
- Mouseover tooltips on bars showing DPS/HPS and top abilities
- Graph anchors to main window instead of UIParent
- Graph collects data during combat even when hidden
- Isolated Ace3 libraries (-EDM suffix) for all clients
- Updated Twitch link to twitch.tv/JugoBetrugoTV
- Removed interface version from config display
- Performance: Rewrote Retail combat rendering to use GetCombatSessionFromType (1 API call for all players)
- Performance: Eliminated per-player roster building and per-GUID API queries (40→1 calls in BGs)
- Performance: Uses amountPerSecond from API for DPS/HPS (no manual division needed)
- Performance: Uses session.maxAmount + SetMinMaxValues for secret-safe bar proportions
- Performance: Spec icons from API (specIconID, NeverSecret) instead of generic class icons
- Performance: isLocalPlayer (NeverSecret) for player highlight instead of UnitName comparison
- Performance: Dirty-check rendering (skip GPU calls when bar data unchanged)
- Performance: Cached settings per update cycle (avoid per-bar profile lookups)
- Performance: Insertion sort for secret values during combat (per-comparison pcall)
- Performance: Roster cache with 3s TTL (avoid rebuilding raid roster every tick)
- Performance: Minimum 0.5s refresh rate clamp (prevents excessive update frequency)
- Performance: LayoutBars skip when bar count/scroll/height unchanged
- Performance: Color/texture updates only on class or rank change
- Performance: Name text updates only on actor name change
- Performance: Icon texture updates only on class change
- Performance: C_Timer polyfill, bit-lib compatibility, tainted value detection

Version 1.1.0
-------------
- Added multi-client support (Retail, Classic Era, MoP Remix)
- Interface versions: 110207 (Retail), 11508 (Classic), 50503 (MoP)
- Fixed Damage Taken mode to correctly show damage received
- Fixed DPS display calculations
- Improved click handler for damage bars
- Enhanced graph smoothing with Catmull-Rom spline interpolation
- Performance optimizations:
  - Localized globals across all modules for faster lookups
  - Added UI update throttling (100ms) to reduce CPU usage
  - Implemented table reuse to reduce garbage collection
  - Pre-computed bit masks for flag checks
  - Added class color caching

Version 1.0.0
-------------
- Initial release
- Real-time damage and healing tracking
- Beautiful graph visualization with animations
- Skin system support
- Detail window with spell breakdown
- Minimap button integration
- Combat segment tracking