Dual Wield Fury Warrior Boss Fight (Concise Annotations)
About 3 min
Dual Wield Fury Warrior Boss Fight One-Button Macro (Concise 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 Fury_DualWield(), bind it to a key.
-- ============ Dual Wield Fury Warrior One-Button DPS Macro [Concise Annotations] ============
-- Priority: Limited Invulnerability Potion survival > Bloodrage > Battle Shout > Death Wish > DPS skills > trinkets
-- DPS logic: Bloodthirst takes priority — everything makes way for Bloodthirst. At 42 rage, weave Heroic Strike mid-segment for rage dump; at high rage, use Whirlwind for rage dump; fill gaps with 10-rage Hamstring to fish for Flurry procs
-- Multiple anti-aggro safeguards: warriors have no threat reduction tools, so we must minimize aggro. It's highly recommended to have [Sandstalker Figurine] equipped at all times — without it, the one-button macro outputs too much threat
-- Heroic Strike is set to fire at 42 rage instead of 12 specifically to prevent over-aggro — spamming Heroic Strike makes threat uncontrollable
-- Staying alive is the only way to do DPS — don't pull aggro and don't die, that's the #1 priority!
-- Usage: /s S Fury_DualWield()
function Fury_DualWield()
-- Skill/Item ID constant area
local SPELL_BLOODRAGE = 2687 -- Bloodrage: quickly generate rage
local SPELL_BATTLE_SHOUT = 25289 -- Battle Shout (max rank): attack power buff
local SPELL_BLOODTHIRST = 23894 -- Bloodthirst: core single-target DPS skill
local SPELL_WHIRLWIND = 1680 -- Whirlwind: AOE filler for high-rage dump
local SPELL_EXECUTE = 20662 -- Execute: high-damage finisher at low HP
local SPELL_FLURRY_PROC = 7373 -- Hamstring: procs Flurry buff
local AURA_FLURRY = 12970 -- Flurry buff: increases attack speed
local SPELL_DEATH_WISH = 12328 -- Death Wish: burst damage boost
local SPELL_YYDJ = 25286 -- Heroic Strike: syncs with auto-attack for mid-range rage dump
local SPELL_SUNDER = 11597 -- Sunder Armor debuff: open burst at 2+ stacks — 2 stacks means the tank has solid aggro
local ITEM_POTION_INVUL = 3387 -- Limited Invulnerability Potion: low-HP survival
local ITEM_SPIDER = 22954 -- Kiss of the Spider: DPS trinket
local ITEM_SAND = 21647 -- Sandstalker Figurine: threat reduction trinket, the ultimate anti-aggro artifact
-- ========== Batch-read base states ==========
local me = GetMeInfo() -- Fetch character HP and attributes
local inCombat = IsCombat() -- Check if in combat
local rage = Power(1) -- Read current rage
local brCD = SCT(SPELL_BLOODRAGE) -- Bloodrage CD
local btCD = SCT(SPELL_BLOODTHIRST) -- Bloodthirst CD
local wwCD = SCT(SPELL_WHIRLWIND) -- Whirlwind CD
local dwCD = SCT(SPELL_DEATH_WISH) -- Death Wish CD
local potionCD = SCT(ITEM_POTION_INVUL) -- Invul potion CD
local shoutLeft = AuraRemainingTime(SPELL_BATTLE_SHOUT) -- Battle Shout remaining duration
-- 1. In combat, HP below 40% and invul potion ready → auto-drink for survival (highest priority)
if inCombat and potionCD <= 0 then
local hpPercent = me.health / me.maxHealth * 100
if hpPercent < 40 then
M('/use Limited Invulnerability Potion')
potionCD = SCT(ITEM_POTION_INVUL)
end
end
-- 2. Rage below 26 and Bloodrage off CD → use to generate rage
if rage < 26 and brCD <= 0 then
S(SPELL_BLOODRAGE)
rage = Power(1)
brCD = SCT(SPELL_BLOODRAGE)
end
-- 3. Rage > 9 and Battle Shout buff expired → refresh to maintain attack power
if rage > 9 and shoutLeft <= 0 then
S(SPELL_BATTLE_SHOUT)
rage = Power(1)
shoutLeft = AuraRemainingTime(SPELL_BATTLE_SHOUT)
end
-- 4. Single-target DPS rotation: Execute > Bloodthirst > Heroic Strike > Whirlwind
-- Execute: in execute phase, Bloodthirst on CD, rage > 29 → fire Execute first (Bloodthirst priority)
if CanWarriorExecute() and btCD > 0 and rage > 29 then
S(SPELL_EXECUTE)
rage = Power(1)
btCD = SCT(SPELL_BLOODTHIRST)
end
-- Bloodthirst main DPS
if rage > 29 and btCD <= 0 then
S(SPELL_BLOODTHIRST)
rage = Power(1)
btCD = SCT(SPELL_BLOODTHIRST)
end
-- Weave Heroic Strike: fire when auto-attack timer is long or rage overflows past 41
local swingTimer = AttackTime1()
local curRage = rage
if swingTimer > 220 or curRage > 41 then
S(SPELL_YYDJ)
if swingTimer > 220 then
Sleep(1, swingTimer - 220, function()
if curRage > 41 then
S(SPELL_YYDJ)
else
StopCasting()
end
end)
end
end
-- Whirlwind for high-rage dump: Bloodthirst on CD, rage > 66 → fire (Bloodthirst priority)
if wwCD <= 0 and rage > 66 and btCD > 0 then
S(SPELL_WHIRLWIND)
rage = Power(1)
wwCD = SCT(SPELL_WHIRLWIND)
end
-- 5. Target has 2+ Sunder Armor stacks → activate Death Wish burst; placed here to give the tank time to build Sunder, preventing early-burst aggro death
local _, stackNow = TART(SPELL_SUNDER)
if rage > 9 and dwCD <= 0 and stackNow > 1 then
S(SPELL_DEATH_WISH)
rage = Power(1)
dwCD = SCT(SPELL_DEATH_WISH)
end
-- 6. No Flurry buff and Bloodthirst on CD → use Hamstring to refresh attack speed buff (Bloodthirst priority)
local flurryLeft = AuraRemainingTime(AURA_FLURRY)
local flurryActive = flurryLeft > 0
if not flurryActive and rage > 9 and btCD > 0 then
S(SPELL_FLURRY_PROC)
rage = Power(1)
flurryLeft = AuraRemainingTime(AURA_FLURRY)
end
-- 7. Auto-use both trinkets in combat, refresh CD variables after each use
if inCombat then
local spiderCD = SCT(ITEM_SPIDER)
local sandCD = SCT(ITEM_SAND)
-- Target HP below 98% to open Kiss of the Spider, prevents early-burst aggro death
if HTP(0, 98) and spiderCD <= 0 then
M('/use Kiss of the Spider')
spiderCD = SCT(ITEM_SPIDER)
end
-- Sandstalker Figurine has no HP restriction — fire on CD. 3 min cooldown, reduces threat from damage by 70% for 20 seconds after use!!
-- The core artifact for going all-out!!! It's recommended to keep it equipped at all times. Would rather drop Drake Fang Talisman and Slayer's Crest than unequip the Sandstalker!
if sandCD <= 0 then
M('/use Sandstalker Figurine')
sandCD = SCT(ITEM_SAND)
end
end
end