Fury Tank One-Button Threat (Detailed Annotations)
June 23, 2026About 4 min
Fury Tank One-Button Threat Macro (Detailed Annotations)
Step 1: Open the Heitu client → click "Super Macro" → create a new macro → paste the code below.
Step 2: Create a regular macro in-game with /s S FuryTank_Main(), bind it to a key.
-- ============ Fury Tank One-Button Threat Macro [234T Off-Tank] Fury Warrior Talent + Defensive Stance ============
-- Usage: /s S FuryTank_Main()
-- Execution priority (top to bottom): HP-based dynamic off-hand weapon swap > low-HP Lifegiving Gem trinket > low-HP Stone Shield Potion survival > auto dual DPS trinkets > Bloodrage rage gen > Battle Shout refresh for AP buff > Death Wish burst (HP>54%) > Taunt to snap threat (target's target not self) > Demoralizing Shout after 2 Sunder stacks > maintain 5x Sunder Armor > Revenge rage dump > Bloodthirst filler > Heroic Strike rage dump > Cleave rage dump
-- Core strategy: Prioritize dynamic off-hand/shield weapon swap based on HP. Use Lifegiving Gem to top up HP. Multiple low-HP survival mechanisms: ≤40% HP auto-switch to shield for damage reduction; >40% HP auto-switch back to dual-wield DPS. Bloodrage then refresh Battle Shout to maintain AP. Only activate Death Wish when HP > 54%. Auto-Taunt when threat is lost and rage is sufficient. At 2 Sunder stacks with Demoralize debuff <2s remaining, auto-refresh Demoralizing Shout. Priority stacks 5x Sunder Armor for stable threat. Only use Cleave at rage > 74 for heavy rage dump. Auto dual DPS trinkets in combat to boost threat and survivability.
-- Shield Wall and Challenging Shout are NOT included — use manually as needed
function FuryTank_Main()
-- ====================== [Unified Constant Definition Area] Centralized management of skills, potions, trinkets, and equipment IDs for easy tuning ======================
-- Rage generation and party buff skills
local SPELL_BLOODRAGE = 2687 -- Bloodrage: quickly generate rage, prevents rage starvation from using threat skills
local SPELL_BATTLE_SHOUT = 25289 -- Battle Shout (max rank): high AP boosts threat damage, maintain at all times
local SPELL_DEATH_WISH = 12328 -- Death Wish: activate when HP>54%, rage>9, CD≤0 for burst
local SPELL_TAUNT = 355 -- Taunt: force target when not targeting self, rage>9 required
-- Core threat/debuff skills
local SPELL_SUNDER_ARMOR = 11597 -- Sunder Armor: 5 stack cap, core threat source, maintain throughout
local SPELL_REVENGE = 11601 -- Revenge: high threat value, dump rage immediately when triggered
local SPELL_DEMORALIZE = 11556 -- Demoralizing Shout: refresh when target has 2 Sunder stacks and debuff <2s remaining
-- DPS rage dump skills
local SPELL_BLOODTHIRST = 23894 -- Bloodthirst: stable filler damage/threat
local SPELL_HEROIC_STRIKE= 25286 -- Heroic Strike: medium-high rage dump, increases single-hit threat
local SPELL_CLEAVE = 20569 -- Cleave: high rage overflow dump, rage>74, AoE supplemental threat
-- Survival consumables/trinkets
local ITEM_STONE_SHIELD = 13455 -- Greater Stone Shield Potion: auto-use at HP<31%, physical damage reduction
local ITEM_LIFE_GEM = 19341 -- Lifegiving Gem: auto-activate at HP<36%, large-heal survival trinket
-- Active DPS trinkets
local ITEM_SPIDER = 22954 -- Kiss of the Spider: AP/haste trinket, auto-activate in combat
local ITEM_BUG_BADGE = 21670 -- Badge of the Swarmguard: survival/threat trinket, auto-activate in combat
-- Equipment ID constants
local OFF_WEAPON_DOOM = 23044 -- Harbinger of Doom off-hand weapon ID, switch to dual-wield when HP>40%
local SHIELD_AQ40 = 21269 -- Blessed Qiraji Bulwark shield ID, auto-switch off-hand to shield when HP≤40%
-- ====================== [Combat State Batch Pre-read Area] Read all states at once to reduce repeated API calls and improve efficiency ======================
local me = GetMeInfo()
local inCombat = IsCombat() -- Check if in combat; potions, trinkets, and gear swaps only work in combat
local rage = Power(1) -- Current rage
local brCD = SCT(SPELL_BLOODRAGE) -- Bloodrage cooldown
local shoutLeft = AuraRemainingTime(SPELL_BATTLE_SHOUT) -- Self Battle Shout buff remaining ms
local tauntCD = SCT(SPELL_TAUNT) -- Taunt cooldown
local dwCD = SCT(SPELL_DEATH_WISH) -- Death Wish cooldown
local demoralizeCD = SCT(SPELL_DEMORALIZE) -- Demoralizing Shout cooldown
local demoralizeDebuffDur,_ = TART(SPELL_DEMORALIZE) -- Target Demoralizing Shout debuff remaining ms
local btCD = SCT(SPELL_BLOODTHIRST) -- Bloodthirst cooldown
local spiderCD = SCT(ITEM_SPIDER) -- Kiss of the Spider cooldown
local bugBadgeCD = SCT(ITEM_BUG_BADGE) -- Badge of the Swarmguard cooldown
local sunderDur, sunderStack = TART(SPELL_SUNDER_ARMOR) -- Current Sunder Armor remaining duration and stack count
local stonePotionCD = SCT(ITEM_STONE_SHIELD) -- Greater Stone Shield Potion cooldown
local lifeGemCD = SCT(ITEM_LIFE_GEM) -- Lifegiving Gem trinket cooldown
local hpPercent = me and (me.health / me.maxHealth * 100) or 100 -- Current HP percentage
local isTargetSelf = TTIS() -- TTIS() shorthand: is target's target targeting self?
-- ====================== [Priority 1: HP-based dynamic off-hand swap — ≤40% switch to shield, >40% back to dual-wield] ======================
if inCombat then
if hpPercent <= 40 then
M('/equipslot 17 item:' .. SHIELD_AQ40)
elseif hpPercent > 40 then
M('/equipslot 17 item:' .. OFF_WEAPON_DOOM)
end
end
-- ====================== [Priority 2: HP<36% in combat, Lifegiving Gem CD≤0 auto-activate to top off HP] ======================
if inCombat and lifeGemCD <= 0 then
if hpPercent < 36 then
M('/use Lifegiving Gem')
lifeGemCD = SCT(ITEM_LIFE_GEM)
end
end
-- ====================== [Priority 3: HP<31% in combat, Stone Shield Potion CD≤0 auto-drink for damage reduction survival] ======================
if inCombat and stonePotionCD <= 0 then
if hpPercent < 31 then
M('/use Greater Stone Shield Potion')
stonePotionCD = SCT(ITEM_STONE_SHIELD)
end
end
-- ====================== [Priority 4: Auto-activate dual DPS trinkets in combat to boost threat output] (Use trinket manager addon for top slot rotation, leave bottom slot for Lifegiving Gem) ======================
if inCombat then
-- Kiss of the Spider CD≤0 auto-activate
if spiderCD <= 0 then
M('/use Kiss of the Spider')
spiderCD = SCT(ITEM_SPIDER)
end
-- Badge of the Swarmguard CD≤0 auto-activate
if bugBadgeCD <= 0 then
M('/use Badge of the Swarmguard')
bugBadgeCD = SCT(ITEM_BUG_BADGE)
end
end
-- ====================== [Priority 5: Bloodrage CD≤0 fallback rage gen — no rage means no threat] ======================
if brCD <= 0 then
S(SPELL_BLOODRAGE)
rage = Power(1)
brCD = SCT(SPELL_BLOODRAGE)
end
-- ====================== [Priority 6: Self Battle Shout buff <2s remaining, rage>9 auto-refresh to maintain AP] ======================
if inCombat and shoutLeft < 2000 and rage > 9 then
S(SPELL_BATTLE_SHOUT)
rage = Power(1)
end
-- ====================== [Priority 7: HP>54, rage>9, Death Wish CD≤0 activate — skip at low HP to avoid vulnerability] ======================
if hpPercent > 54 and rage > 9 and dwCD <= 0 then
S(SPELL_DEATH_WISH)
rage = Power(1)
dwCD = SCT(SPELL_DEATH_WISH)
end
-- ====================== [Priority 8: Target's target is not self, rage>9, Taunt CD≤0 → immediately Taunt to reclaim threat] ======================
if inCombat and not isTargetSelf and rage > 9 and tauntCD <= 0 then
S(SPELL_TAUNT)
tauntCD = SCT(SPELL_TAUNT)
end
-- ====================== [Priority 9: Target at 2 Sunder stacks, Demoralize debuff <2s, rage>9, Demoralize CD≤0 → refresh Demoralizing Shout] ======================
if inCombat and sunderStack == 2 and demoralizeDebuffDur < 2000 and rage > 9 and demoralizeCD <= 0 then
S(SPELL_DEMORALIZE)
rage = Power(1)
demoralizeCD = SCT(SPELL_DEMORALIZE)
end
-- ====================== [Priority 10: Sunder Armor stacks not yet 5 / remaining duration <3s, rage>14 → refresh to cap at 5 stacks] ======================
if (sunderStack < 5 or sunderDur < 3000) and rage > 14 then
S(SPELL_SUNDER_ARMOR)
rage = Power(1)
sunderDur, sunderStack = TART(SPELL_SUNDER_ARMOR)
end
-- ====================== [Priority 11: Revenge CD≤0 triggered priority dump, rage>4, high threat value, no cooldown — fire immediately] ======================
if CanDefensiveStrike() and SCT(SPELL_REVENGE) <= 0 and rage > 4 then
Spell(SPELL_REVENGE)
rage = Power(1)
end
-- ====================== [Priority 12: Rage>29, Bloodthirst CD≤0 filler — stable sustained threat damage] ======================
if rage > 29 and btCD <= 0 then
S(SPELL_BLOODTHIRST)
rage = Power(1)
btCD = SCT(SPELL_BLOODTHIRST)
end
-- ====================== [Priority 13: Rage>41 use Heroic Strike — dual fast weapons don't need weave timing, fire when conditions met] ======================
if rage > 41 then
S(SPELL_HEROIC_STRIKE)
rage = Power(1)
end
-- ====================== [Priority 14: Rage>74 Cleave for large rage dump — high-end fallback rage dump] ======================
if rage > 74 then
S(SPELL_CLEAVE)
rage = Power(1)
end
end