TBC tank avoidance / crush cap tracker — tells you at a glance if you're uncrushable (102.4% Miss + Dodge + Parry + Block) and crit-immune (5.6% anti-crit cap). Breakdown, raid-buff projection, anti-crit goal, and the math you'd otherwise pull out of a spreadsheet.
Target client: World of Warcraft — The Burning Crusade Classic Anniversary Edition (2.5.5, Interface
20505). Available on GitHub Releases, CurseForge, and Wago.
In TBC, tanks avoid Crushing Blows by reaching 102.4% total avoidance against a raid boss (+3 levels). The total is Miss + Dodge + Parry + Block, each adjusted for the boss's level, each affected by gear, talents, and an assortment of raid buffs that don't come from your own character. Adding all those pieces up correctly — and knowing whether you'll still be over the line after someone inevitably forgets to rebuff — is annoying enough that most tanks either use a clunky WeakAura or do the math on alt-tabbed spreadsheets.
UncrushableHelper puts the answer on screen with none of that: a clean floating window that shows your current total against the cap, the per-component breakdown, and a checklist of the raid buffs that feed into the calculation — auto-detected when active, togglable for planning.
- Real-time avoidance breakdown — Miss + Dodge + Parry + Block vs +3 boss, updated on every
COMBAT_RATING_UPDATE,UNIT_AURA,PLAYER_EQUIPMENT_CHANGED, and talent change. - Mode picked by capability, not class — any class can use the addon:
- Block mode (shield equipped): shows
UNCRUSHABLE(green) orCRUSHABLE — short by X.XX%(red) against the 102.4% cap. - Druid mode (any druid): Defense Skill and Armor goals instead of a cap verdict.
- Informational (no shield, non-druid): breakdown only, no verdict — the cap is unreachable without block.
- Block mode (shield equipped): shows
- Component breakdown — see exactly which stat is holding you back.
- Raid-buff checklist, curated — Blessing of Kings, Mark / Gift of the Wild, Flask of Fortification, Elixir of Major Agility, Scroll of Agility. Only buffs that measurably affect the avoidance total are on the list (see ADR 0002 for what was deliberately excluded). Active buffs are auto-detected (locked on, green); missing buffs can be ticked as "planned" (blue) for pre-pull checks.
- Personal cooldowns (paladin & warrior with shield) — Holy Shield (+30% block) and Shield Block (+75% block) track in their own section with the same semantics as raid buffs. Auto-detected when active, togglable as planned so you can check "am I uncrushable if I keep Holy Shield rolling?" without cycling rotations. Holy Shield's projected delta also accounts for Libram of Repentance (+5.3% block) when equipped in the ranged slot. Hidden entirely for classes or specs that can't use these cooldowns.
- Anti-crit cap tracking (any tank: druid, warrior with shield, paladin with shield) — separate from the 102.4% uncrushable cap, this is the
5.6%of crit reduction needed vs a +3 boss to be crit-immune. The window shows a single header line (Anti-crit goal: 5.60% needed ✓ OKorshort by X.XX%); hovering it surfaces a tooltip with the per-source breakdown — defense skill above 350, Resilience rating, and Survival of the Fittest (druids only). Particularly relevant for tanks running PvP gear in early raid phases, where Resilience can offset a few points of missing defense skill — see ADR 0004 for the math and the TBC-vs-WotLK note on Resilience applying vs PvE. - Validated formulas — the defender-side combat-table math (0.04% per weapon-skill deficit applied equally to Miss / Dodge / Parry / Block) is verified against four independent sources: magey/tbc-warrior wiki plus three open-source TBC server implementations (TrinityTBC, CMangos-TBC, AzerothCore). See ADR 0003 for the evidence trail.
- Floating window — draggable, position persists per-character, ESC to close, optional click-outside-to-close.
- Minimap icon — via LibDBIcon. Left-click toggles the window, right-click opens settings.
Available on CurseForge and Wago. Install via the CurseForge app, the Wago app, or WowUp (multi-source).
- Download the latest
UncrushableHelper-vX.Y.Z.zipfrom the Releases page. - Extract the
UncrushableHelper/folder into your AddOns directory:<WoW install>\_anniversary_\Interface\AddOns\ - Launch WoW. Enable the addon in the AddOns menu if needed.
/reloadin-game.
- Click the minimap icon → toggle the main window.
- Right-click the minimap icon → open settings.
/uh→ toggle the main window./uh debug→ print a snapshot (values, formulas, detected buffs) to chat./uh config→ open settings./uh reset→ re-center the main window.- ESC → close the main window.
- Click a buff checkbox while the buff is missing → mark it as "planned" for pre-pull checklists.
- Target label at the top: static
Target: Raid boss (+3). The addon always calculates against a +3 raid boss — the only TBC scenario where crushing blows exist, and therefore the only one where the 102.4% cap is meaningful. - Big number: your total avoidance vs the +3 boss, including any planned buffs you've toggled. Green
UNCRUSHABLE/ redCRUSHABLE — short by X.XX%when a shield is equipped; gold for druids and shieldless characters (no verdict applies). - Subtitle (blue): when you have planned buffs toggled, shows
Including N planned buffs. The live value is one hover away on the title tooltip. - Breakdown: Miss / Dodge / Parry / Block, each showing the projected value for the target. Rows affected by a planned buff render in blue. Hover any row for the
Live / Planned / Projectedsplit. - Raid buffs: one row per tracked buff. Green check +
(active)= applied to you right now (contribution already in the live numbers). Blue check +(planned)= in your checklist (contribution simulated and added to the projection). Click to toggle planned. - Personal cooldowns (only shown for paladin or warrior with a shield): separate sub-section below the raid buffs. Holy Shield (paladin) and Shield Block (warrior) appear here with the same active / planned semantics. When a paladin casts Holy Shield mid-fight the row flips from planned to active and the projected bump retracts — its contribution is already baked into the live Block chance the game reports.
- Anti-crit goal (any tank): a single header line between the breakdown and the raid buffs, showing the
5.6%of crit reduction needed vs a +3 boss. GreenOKwhen the sum hits the target, redshort by X.XX%when it doesn't. Hover for a tooltip with the per-source breakdown (defense skill above 350, Survival of the Fittest if druid, Resilience rating). Hidden for non-tank characters.
Druids cannot block, so reaching 102.4% is impractical. Instead, the window surfaces the anti-crit goal described above — defense skill, Survival of the Fittest, and Resilience all stack toward the 5.6% target. The legacy 415 pure-defense target is still one valid path, but tanks running PvP gear with Resilience can hit the cap with less defense skill.
The Block row is rendered as n/a. Miss/Dodge/Parry still sum, but no UNCRUSHABLE verdict is shown because the goal is different.
Open the window on a rogue, hunter, mage, or a paladin in Ret with a 2H and you get the breakdown without a verdict — useful for reference, but the 102.4% cap isn't reachable without block chance, so we don't pretend it is.
Against a +3 raid boss, the addon sums the four character-sheet avoidance values and compares against the 102.4% cap:
miss = 5 + (defenseSkill − 350) × 0.04
dodge = GetDodgeChance()
parry = GetParryChance()
block = GetBlockChance() (only when a shield is equipped)
total = miss + dodge + parry + block
uncrushable = total ≥ 102.4
The 102.4% target already absorbs the 2.4% the server removes via weapon-skill-deficit penalties at combat-roll time (0.2% per level × 3 levels = 0.6% per component × 4 components = 2.4%). So the sum above is compared directly against 102.4% with no further adjustment. This matches the convention every peer tank addon and TBC theorycrafter uses; see ADR 0003 for the full derivation, cross-check against five independent sources, and the history of why an earlier version of this addon double-counted the penalty.
When planned buffs are toggled, the primary number shifts to reflect the projected post-buff state (Flask of Fortification's +10 Defense Rating is exact; agility-based buffs use a per-class AGI_PER_DODGE_PCT table; Blessing of Kings uses UnitStat × 0.1). The live value stays accessible via the title hover tooltip. See docs/adr/0002 for the reasoning.
Horizontal layers — one file per responsibility:
| File | Role |
|---|---|
Classes.lua |
Static data (classes, constants, tracked aura spellIds) |
Calc.lua |
Pure snapshot computation |
Aura.lua |
Active-buff detection + planned-buff storage |
Core.lua |
Event frame, SavedVariables, slash commands |
UI.lua |
Main floating frame + LDB + LibDBIcon |
Settings.lua |
Settings panel |
See docs/adr/0001 for why this structure was chosen over Vertical Slice Architecture.
See CONTRIBUTING.md for the full workflow — branch naming, commit format, in-game iteration, releasing.
- Lua 5.1 (the version WoW's client runs)
- LibStub
- CallbackHandler-1.0
- LibDataBroker-1.1
- LibDBIcon-1.0
- BigWigs Packager for release automation
Open an issue on GitHub if you spot something off — /uh debug gives me the context I need.
If this addon saves you from being crushed in front of the whole raid, consider buying me a coffee. Entirely optional — the addon is free and stays free.
When tipping, you can optionally leave your in-game name + server (or GitHub handle) and I'll add you to a supporters list in the next release. Anonymous tips are just as welcome.
MIT © mikarregui

