Dual Wield Fury Warrior AOE (Detailed Annotations)
About 2 min
Dual Wield Fury Warrior AOE One-Button Clear (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 AOE_DualWield(), bind it to a key.
-- ============ Dual Wield Fury Warrior AOE One-Button Macro [Full Detailed Annotations] ============
-- Execution priority (top to bottom): health potion survival > Bloodrage rage gen > Battle Shout AP buff > Death Wish burst > AOE rotation > auto trinkets in combat
-- Usage: /s S AOE_DualWield()
function AOE_DualWield()
-- ====================== Unified skill, consumable, and trinket ID constant management area ======================
local SPELL_BLOODRAGE = 2687 -- Bloodrage: quickly generate rage, prevents rage starvation
local SPELL_BATTLE_SHOUT = 25289 -- Battle Shout (max rank): party-wide high AP buff, maintain at all times
local SPELL_BLOODTHIRST = 23894 -- Bloodthirst: core filler DPS skill, stable rage consumption
local SPELL_WHIRLWIND = 1680 -- Whirlwind: primary multi-target AOE damage
local SPELL_DEATH_WISH = 12328 -- Death Wish: massively boosts physical damage, burst cooldown
local SPELL_CLEAVE = 20569 -- Cleave: no-CD minor AOE, sustained rage dump when overflowing
local ITEM_SPIDER = 22954 -- Kiss of the Spider: active DPS trinket
local ITEM_SAND = 21647 -- Sandstalker Figurine: active DPS trinket
local ITEM_HEAL_POT = 13446 -- Major Healing Potion: auto-heal survival item at low HP
-- ====================== Batch pre-read all combat states at once to reduce repeated API calls and improve efficiency ======================
local me = GetMeInfo() -- Fetch character HP, max HP, and other base info
local hpPercent = me and (me.health / me.maxHealth * 100) or 100 -- Calculate current HP percentage; default to full HP if no character info
local healPotCD = SCT(ITEM_HEAL_POT) -- Read Major Healing Potion remaining cooldown
local inCombat = IsCombat() -- Check if in combat; trinkets only activate in combat
local rage = Power(1) -- Read current rage into variable for reuse
local brCD = SCT(SPELL_BLOODRAGE) -- Bloodrage remaining cooldown
local dwCD = SCT(SPELL_DEATH_WISH) -- Death Wish remaining cooldown
local btCD = SCT(SPELL_BLOODTHIRST) -- Bloodthirst remaining cooldown
local wwCD = SCT(SPELL_WHIRLWIND) -- Whirlwind remaining cooldown
local shoutLeft = AuraRemainingTime(SPELL_BATTLE_SHOUT) -- Battle Shout buff remaining duration
local spiderCD = SCT(ITEM_SPIDER) -- Kiss of the Spider trinket cooldown
local sandCD = SCT(ITEM_SAND) -- Sandstalker Figurine cooldown
-- ====================== Priority 1: auto-use healing potion when low HP (highest priority — survival first) ======================
-- Condition: own HP below 40% AND Major Healing Potion cooldown is ready
if hpPercent < 40 and healPotCD <= 0 then
M('/use Major Healing Potion') -- Invoke game macro command to use potion
healPotCD = SCT(ITEM_HEAL_POT) -- Refresh potion CD variable immediately after use to prevent repeated consumption in one cycle
end
-- ====================== Priority 2: Bloodrage as rage-generation fallback — prioritize gaining rage when low ======================
-- Condition: rage below 26 AND Bloodrage is off cooldown
if rage < 26 and brCD <= 0 then
S(SPELL_BLOODRAGE)
rage = Power(1) -- Update current rage after casting
brCD = SCT(SPELL_BLOODRAGE) -- Refresh Bloodrage cooldown
end
-- ====================== Priority 3: maintain Battle Shout AP buff ======================
-- Condition: rage above 9 to cover cost AND Battle Shout buff has expired
if rage > 9 and shoutLeft <= 0 then
S(SPELL_BATTLE_SHOUT)
rage = Power(1) -- Update remaining rage after cast
shoutLeft = AuraRemainingTime(SPELL_BATTLE_SHOUT) -- Update buff remaining duration
end
-- ====================== Priority 4: Death Wish burst damage boost ======================
-- Condition: rage above 9 AND Death Wish cooldown is ready
if rage > 9 and dwCD <= 0 then
S(SPELL_DEATH_WISH)
rage = Power(1) -- Update rage after cast
dwCD = SCT(SPELL_DEATH_WISH) -- Refresh Death Wish cooldown variable
end
-- ====================== Priority 5: AOE damage rotation — evaluate Bloodthirst, Whirlwind, Cleave in order ======================
-- Bloodthirst filler: rage above 29 and cooldown ready → cast with priority
if rage > 29 and btCD <= 0 then
S(SPELL_BLOODTHIRST)
rage = Power(1)
btCD = SCT(SPELL_BLOODTHIRST)
end
-- Whirlwind primary multi-target AOE: rage above 24 and off cooldown → cast
if wwCD <= 0 and rage > 24 then
S(SPELL_WHIRLWIND)
rage = Power(1)
wwCD = SCT(SPELL_WHIRLWIND)
end
-- Cleave no-CD rage dump filler: rage above 19 → sustain casting
if rage > 19 then
S(SPELL_CLEAVE)
rage = Power(1)
end
-- ====================== Priority 6: auto-activate both trinkets in combat, refresh cooldowns after each use to avoid repeated triggers ======================
if inCombat then
-- Kiss of the Spider: auto-activate when cooldown is ready
if spiderCD <= 0 then
M('/use Kiss of the Spider')
spiderCD = SCT(ITEM_SPIDER)
end
-- Sandstalker Figurine: auto-activate when cooldown is ready
if sandCD <= 0 then
M('/use Sandstalker Figurine')
sandCD = SCT(ITEM_SAND)
end
end
end