promotional bannermobile promotional banner

BetterTargetHud

(BTH) is a high-fidelity, lightweight Target HUD designed to provide critical combat information directly on the player's target frame.

File Details

BetterTargetHud

  • B
  • Feb 9, 2026
  • 6.12 MB
  • 9
  • 12.0.1+1
  • Retail

File Name

BetterTargetHud.zip

Supported Versions

  • 12.0.1
  • 12.0.0

BetterTargetHud Change Log

(Revisions 20.55 – 20.67)
New Features: Profile System
Profile Management Tab: Added a dedicated "Profiles" tab in the Interface Options. This allows users to create, copy, delete, and reset profiles (e.g., specific layouts for "Tanking" vs "Healing") using standard AceDB functionality.

Per-Character Defaults: The addon now defaults to character-specific profiles (true flag in AceDB:New), ensuring that layout changes on one character do not accidentally overwrite another unless explicitly copied.

Critical Fixes (Class Power Engine)
Restored Stagger Bar (Monk): Fixed a critical bug where oUF was intercepting and discarding Stagger events. Events are now registered directly on the CustomClassPower widget, completely bypassing oUF's filter.

Restored Devourer Engine (Demon Hunter): Re-implemented the specific "River & Ghost" geometry for Spec 3 (Devourer). The bar now correctly visualizes Soul Fragments and the Void Metamorphosis transformation.

Event Architecture Overhaul: All Class Power events (UNIT_AURA, UNIT_POWER_UPDATE, etc.) are now handled by a dedicated script on the widget itself. This prevents "nil" errors and ensures updates fire reliably for complex specs like Arcane Mages and Evokers.

Warrior Scrub: Removed the experimental "Whirlwind Stack" tracker after in-game testing confirmed the API reports 0 stacks during combat.

Core & Systems
Visibility "Gatekeeper" Fix: Added explicit Show() calls in Modules.lua and Core.lua. This prevents the Class Power container from getting stuck in a hidden state after a profile switch or UI reload.

Live Config Updates: Fixed the "Point Size" slider in Options. It now uses a fallback update call, so you see the points resize immediately as you drag the slider.

Chat Spam Removed: Silenced the debug message that printed the profile name to Chat Frame 1 every time a setting was changed.

Options & Defaults
Visual Tweaks: Changed the default Point Size to 15 (was 14) and Spacing to 1 (was 2) to better match the new high-fidelity rendering.

12.0 API Compliance: All new code strictly adheres to the Midnight API standards (e.g., C_UnitAuras, GetSafeStacks), ensuring "Zero Taint" performance.

(v20.0 - v20.21) – The 12.0 API & Private Aura Stability
Critical Fix (Secret Values): Resolved a hard crash in the 12.0 environment caused by scanning player auras.

Issue: The WoW 12.0 client flags certain auras as "Private/Secret". Attempting to compare their spellId or name in a Lua loop triggers a security violation (attempt to compare field 'spellId' (a secret value)).

Solution: Implemented GetSafeStacks() which uses direct ID lookup exclusively, bypassing unsafe iteration loops entirely.

Combat Stability Protocol: Addressed the issue where Soul Fragments (1245577) are classified as a Private Aura during combat.

Behavior: The API returns nil or [SECRET] for these fragments in combat to prevent automation.

Fallback: The addon now detects this restricted state and gracefully defaults the "Ghost Bar" to 0 stacks in combat (hiding it), rather than crashing the UI. The feature remains fully active out-of-combat for preparation.

Rendering Engine Hardening:

Zero Taint: Removed all :Show() and :Hide() calls from the UpdateClassPower runtime loop. Visibility is now controlled strictly via SetAlpha(0/1) to prevent "Action Blocked" errors on Protected Frames.

Unconditional Geometry: The "Ghost Bar" no longer uses conditional logic to draw. It always calculates geometry; if the width is 0, it is invisible. This removes logic branching that could stall the renderer.

(v17.0 - v19.5) – The "River & Ghost" Engine (Demon Hunter)
Feature (Void Metamorphosis): Implemented a "River" style reveal animation for Demon Hunters (Spec 3).

Logic: Unlike standard combo points, this bar acts as a continuous resource meter that fills smoothly from 0 to 50 based on Void Metamorphosis stacks.

Feature (The "Ghost Bar"): Created a predictive overlay for Soul Fragments.

Visual: A semi-transparent blue bar that extends beyond the current resource (River) to show potential resources if nearby fragments are consumed.

Layering: Utilized a 3-layer Z-Index system: Background (Empty) → Ghost (Prediction) → River (Actual).

Refinement: Added "Glow" state support. When the resource caps (50/50), the bar pulses with a high-intensity texture overlay.

(v14.0 - v16.5) – Advanced Class Mechanics
Death Knight (Rune Sorting):

Logic: Implemented RuneComparison logic to sort Runes based on their "Ready" state and cooldown duration. Runes now visually fill from Left to Right regardless of their internal ID.

Visuals: Added "Swipe" texture support (Circular Cooldowns) for replenishing runes.

Monk (Stagger Bar):

Complex Rendering: Created a split-texture reveal system. The Stagger bar is composed of two distinct textures that rotate and reveal independently to support the non-linear progression of the Stagger mechanic.

Coloring: Added dynamic vertex coloring (Green → Yellow → Red) based on Stagger % vs Max Health.

Evoker (Essence):

Logic: Adapted the "Reveal" engine to support Essence regeneration, allowing for partial fills (charging) alongside full point generation.

(v12.0 - v13.5) – The "Reveal" Mode Update
New Architecture: Split the Class Power rendering into two distinct modes:

Discrete Mode: Standard icons (Combo Points, Holy Power, Soul Shards) that toggle on/off.

Reveal Mode: A continuous texture mask that expands/contracts to reveal the underlying art (Arcane Charges, Essence).

Math: Implemented GetRotatedUVs to calculate texture coordinates in real-time, allowing textures to "fill" without distorting or stretching the image.

(v10.0 - v11.5) – Class Power Initialization
Core Module: detached the class resource logic from the standard oUF element to create ClassPower.lua.

Configuration: Built the ClassConfigs database, allowing every class to have unique:

Textures/Atlases (e.g., ComboPoints-ComboPoint, Warlock-ReadyShard).

Colors (RGBA values).

Scales & Spacing (Pixel-perfect alignment).

Support Added: Rogue (Combo Points), Druid (Combo Points/Mana), Paladin (Holy Power), Warlock (Soul Shards), Mage (Arcane Charges).

(v7.7 - v9.5)
1. Visual Overhaul ("Souls Mode")
Custom Asset Support: Replaced fallback Blizzard textures with specific support for custom .png assets located in the Media folder.

Filigree Integration: Implemented a wide-aspect ratio rendering container (512x128) to support the "Bat Wing" style bar cap without distortion.

Transparency Fixes: Resolved issues where assets rendered as black or white boxes by eliminating "fake" transparency layers.

2. The "Strata Sandwich" Rendering Engine
3D Portrait Layering: Solved the issue of 3D models appearing on top of the UI.

New Rendering Hierarchy: Established a strict Z-Index stack to ensure the "Blood on Glass" effect works properly:

Top (DIALOG): RingFrame (Blood/Gore overlay).

Upper Middle (HIGH): PortraitFrame (The 3D Model).

Lower Middle (MEDIUM +20): ArtFrame (Filigree/Wings - Sits on top of the health bar).

Bottom (MEDIUM +1): HealthBar (Standard Status Bar).

3. Progressive Visuals
Dynamic Gore System: Implemented logic to swap the Ring texture based on target health percentage.

100-50%: Clean Iron Ring.

49-20%: Cracked/Bloodied Ring.

<20%: Gore-Drenched Ring.

Safe-Check Logic: Uses the visual status bar value rather than protected API calls to ensure stability during combat.

4. Zone Automation Module
Auto-Switching: Added logic to detect the current instance type (raid, pvp, party, world) and automatically load a specific User Profile.

Smart Combat Queue: If the player zones in while in combat, the addon now "queues" the profile switch and executes it immediately after combat ends (PLAYER_REGEN_ENABLED), preventing UI errors.

Migration Safety: Added ValidateProfile() to auto-inject default automation settings into existing user profiles, preventing nil index crashes.

5. Options & UX Enhancements
Global Positioning: Added X Offset and Y Offset sliders to the General tab, allowing the entire HUD cluster to be moved pixel-by-pixel without breaking internal anchors.

Automation GUI: Added a dedicated "Automation" tab to the settings menu with toggles and dropdowns for every zone type.

Menu Restoration: Fixed a regression where complex Text Tag validators and Injectors were briefly removed; full functionality has been restored.

v4.9 – "Sexy Mode" & Final Polish (Current)
Feature: Renamed "Thin Mode" to "Thin Mode (Sexy)".

Polish: Finalized "Smart Restore" logic to ensure disabling Thin Mode returns the bar exactly to its previous custom height and text layout.

v4.7 - v4.8 – The Style Update
Feature: Introduced "Thin Mode", a preset that overrides the bar height to a sleek 8px (mimicking Details!).

Logic: Implemented a Non-Destructive Save/Restore System. Enabling Thin Mode snapshots the user's layout; disabling it restores the original height and text positions.

Safety: Added logic to automatically force text elements anchored "Inside" to "Above" when Thin Mode is active to prevent visual clipping.

v4.4 - v4.6 – Advanced Coloring Logic
Feature: Added Health Gradient support (smooth Green → Yellow → Red transition based on health %).

UX: Replaced confusing override checkboxes with Explicit Color Mode Dropdowns:

Player Mode: Choose between Class Color, Health Gradient, or Custom.

NPC Mode: Choose between Health Gradient or Custom.

Fix: Resolved conflicts where enabling Class Colors would accidentally disable custom settings for NPCs.

v4.2 - v4.3 – Visual Fidelity
Fix: Removed the RenderFrame.lua dependency which was causing a "White Bar" glitch by conflicting with oUF’s internal rendering.

Polish: Added Smart Anchor Padding. Text elements anchored to the "Outside" (Left/Right) now automatically apply a 2-5px offset so they don't touch the bar border by default.

v4.0 - v4.1 – The Real-Time Engine
Major Fix: Solved the "Reload UI" requirement. Implemented UpdateAllElements("RefreshUnit") to force the oUF engine to redraw health, power, and tags instantly when settings are changed.

UX: Removed the manual "Redraw" button as it became obsolete.

v3.0 - v3.6 – Customization & Tags
Feature: Integration of Ace3 Configuration Libraries.

Feature: Added the Tag Injector system, allowing users to build complex text strings (e.g., [name] [level] [curhp]) via dropdown menus without needing to know the code.

Feature: Added Execute Markers, allowing overlays at 20% and 35% health for specific classes.

v1.0 - v2.0 – Inception
Core: Established the addon using the oUF Framework for lightweight unit handling.

Visuals: Basic health bar, name text, and a draggable/lockable anchor frame.