Track the hidden gold cost of Shield Block.
Warriors pay a per-press tax on their core active mitigation that no other tank class does. Every time you block, your shield has a chance to lose durability — costing you roughly 25 gold per M+ dungeon just for pressing Shield Block.
ShieldTax makes this invisible cost visible (and audible) with a running gold counter and a sound alert every time your shield takes the hit.
Inspired by Kersplode's r/wow post testing 20,000 damage instances to prove warriors pay ~25g extra per dungeon for pressing Shield Block — a finding covered by PC Gamer. ShieldTax makes that invisible cost visible.
- Real-time shield durability tracking during combat
- Accurate gold cost via WoW Tooltip API (
C_TooltipInfo) with formula fallback - Sound effects when your shield loses durability (coin jingle, money bag, auction, level up, or mute)
- On-screen display with Shield Tax title, current content cost, and lifetime total
- Content-type tracking — see your cost breakdown by M+, Raid, Dungeon, and Open World
- Content display filters — toggle which content types show on the frame and count toward the displayed total (data always records)
- Death Tax tracked separately — deaths don't inflate your Shield Block cost
- Dungeon auto-detection with per-dungeon history (last 50)
- Chat reporting — share your Shield Tax with humorous randomized messages
- Milestone announcements at real gold sink thresholds (Master Riding, Wooly Mammoth, Tundra Mammoth, Yak, Brutosaur)
- Minimap button via LibDataBroker (left-click toggles display, right-click for help)
- Data persists through
/reload— resets on fresh login - Warrior-only — silently inactive on other classes
- 12.0 (Midnight) compatible — no CLEU dependency
- Expand to all tank specs (Paladin, DK, DH, Druid, Monk)
- Track total tanking durability cost across all armor slots
- Cross-class comparison
- Download from CurseForge or GitHub Releases
- Copy the
ShieldTax/folder to yourWorld of Warcraft/_retail_/Interface/AddOns/directory - Log in on a Warrior character — the addon activates automatically
Releases are automatically packaged and uploaded when a version tag is pushed.
| Command | Action |
|---|---|
/st |
Toggle display frame |
/st sound [coin|money_open|auction|levelup|none] |
Set sound effect |
/st sound test |
Play current sound |
/st lifetime |
Lifetime stats with content breakdown |
/st content [type] |
View/toggle content-type display filter |
/st stats |
Shield Tax by content type |
/st report [party|guild|say] |
Share Shield Tax in chat |
/st history |
Last 5 dungeon costs |
/st reset |
Reset current content counter |
/st reset all |
Reset ALL data |
/st move / /st lock |
Unlock/lock display position |
/st minimap |
Toggle minimap icon |
/st version |
Show addon version |
/st help |
List all commands |
ShieldTax monitors your shield's durability via the UPDATE_INVENTORY_DURABILITY event. When durability decreases while you're in combat (and you haven't just died), it reads the exact repair cost from the game's Tooltip API (C_TooltipInfo.GetInventoryItem), plays a sound, and adds the cost to your running tally.
Cost calculation: The addon snapshots your shield's repair cost before and after each durability change, then takes the delta. This gives the exact gold cost that the game would charge you at a vendor.
Note: If the Tooltip API is unavailable, the addon falls back to an armor-based formula estimate. Reputation discounts at vendors are not factored in.
- Lua 5.1 (included in the LuaRocks win32 package)
- busted (test framework)
- Visual Studio Build Tools (for compiling busted's native dependencies)
- Install Visual Studio 2022 Build Tools with the "Desktop development with C++" workload
- Download the LuaRocks win32 legacy package (includes Lua 5.1)
- Extract and run
install.bat /Lfrom a Developer Command Prompt for VS 2022 (Run as Administrator) luarocks install busted
cd shield-tax
bustedshield-tax/
├── ShieldTax/ # WoW addon (copy this to Interface/AddOns/)
│ ├── ShieldTax.toc # Addon manifest
│ ├── Core.lua # Init, class guard, slash commands
│ ├── Tracker.lua # Durability monitoring + combat state + content detection
│ ├── CostCalculator.lua # Repair cost via Tooltip API + formula fallback
│ ├── SoundManager.lua # Sound effects + throttle
│ ├── Stats.lua # Session/dungeon/lifetime stats (persisted)
│ ├── Display.lua # On-screen gold counter frame
│ ├── ChatReporter.lua # Chat reports + milestones
│ └── MinimapButton.lua # LibDataBroker minimap icon
├── tests/ # busted tests (not included in addon)
│ ├── wow_api_mock.lua
│ ├── test_tracker.lua
│ ├── test_cost_calculator.lua
│ ├── test_sound_manager.lua
│ ├── test_stats.lua
│ ├── test_display.lua
│ ├── test_core.lua
│ ├── test_chat_reporter.lua
│ └── test_content_types.lua
├── pkgmeta.yaml # CurseForge packager config
├── CHANGELOG.md
└── README.md
1.0.6