Example: Two-Handed Slam Warrior
Two-Handed Slam Warrior
Using a level 60 two-handed Fury warrior as an example. The core mechanic is monitoring the swing timer and weaving a Slam right after the main-hand auto-attack lands, maximizing the high DPH of two-handed weapons.
Principle:
Bloodthirst → Whirlwind → Slam after swing → Hamstring to dump rageWarning
Requires Heitu version >= 1.11.17. If your stable version is below this, enable Beta Updates in Heitu settings.
Ability Priority:
- Bloodthirst — Highest priority, use on cooldown
- Whirlwind — Second priority, use on cooldown
- Slam — Independent event callback, auto-cast after each main-hand swing ends, rage ≥55. No key press needed — precisely weaves in right after the swing without consuming the swing timer
- Hamstring — Dump rage when above 70 to prevent overflow and proc Flurry
Core technique: Wait for the main-hand swing to land, then instant Slam — Slam does not reset the swing timer.
How to Use
All functionality is contained within a single SlamWar function: the Bloodthirst + Whirlwind + Hamstring priority rotation, plus registering a RegisterOnceEvent callback for Slam after each main-hand swing.
- Open Heitu → Super Macro
- Paste the function code below into the editor
- In-game, use
/s S SlamWar()to invoke the regular rotation - Click the [保存并且同步到游戏] button in the top-right corner
Tips
RegisterOnceEvent is placed inside the SlamWar function so it re-registers on every function call. The event fires once and then auto-deletes, so make SlamWar into a spammable macro — each press re-registers the Slam listener.
Full Code
-- ============ Regular rotation: Bloodthirst, Whirlwind, Hamstring + Slam event ============
-- Make a macro `/s S SlamWar()` and set a hotkey to spam
function SlamWar()
-- ============ Spell ID config (level 60 1.12.1 — modify for other versions) ============
local CFG_BLOODTHIRST = 23881 -- Bloodthirst
local CFG_WHIRLWIND = 1680 -- Whirlwind
local CFG_SLAM = 1464 -- Slam
local CFG_HAMSTRING = 11573 -- Hamstring
local AURA_FLURRY = 12970 -- Flurry aura
-- Thresholds
local CFG_SLAM_MIN_RAGE = 55 -- Minimum rage for Slam
local CFG_VENT_MAX_RAGE = 70 -- Dump rage via Hamstring above this
M('/startattack')
local rage = Power(1)
-- Bloodthirst (highest priority)
if SCT(CFG_BLOODTHIRST) == 0 then
Spell(CFG_BLOODTHIRST)
return
end
-- Whirlwind
if SCT(CFG_WHIRLWIND) == 0 then
Spell(CFG_WHIRLWIND)
return
end
local flurryActive = AuraRemainingTime(AURA_FLURRY) > 0
-- Hamstring (dump rage, proc Flurry)
if not flurryActive and rage > CFG_VENT_MAX_RAGE then
Spell(CFG_HAMSTRING)
end
-- Slam: register a one-shot main-hand swing callback for instant Slam weaving
RegisterOnceEvent("SWING_RESULT_HAND1", function()
if Power(1) >= CFG_SLAM_MIN_RAGE then
Spell(CFG_SLAM)
end
end)
endCustomization
Adjust Slam Rage Threshold
local CFG_SLAM_MIN_RAGE = 50 -- Lower to 50, more aggressive55 rage is the minimum threshold (Slam costs 15 rage, leaves 40 for Bloodthirst/Whirlwind). If you want maximum output, you can lower it to 40.
Adjust Rage Dump Threshold
local CFG_VENT_MAX_RAGE = 80 -- Dump rage earlier to prevent overflowSwitching Versions: Change Spell IDs
Simply modify the CFG_ variables in the configuration section — no changes needed to the function bodies:
-- 3.3.5 version
local CFG_BLOODTHIRST = 23881
local CFG_WHIRLWIND = 1680
local CFG_SLAM = 1464
local CFG_HAMSTRING = 11573
-- 1.12.1 version (Classic)
-- Bloodthirst spell ID may differ — check db.heitu.org
local CFG_BLOODTHIRST = 23885
local CFG_WHIRLWIND = 1680
local CFG_SLAM = 1464
local CFG_HAMSTRING = 11573Single Target Only (No AoE)
Simply remove the Whirlwind section.
Spell IDs by Client Version
The spell IDs below are for 3.3.5. If you are on the 1.12.1 client (level 60 Classic), spell IDs may differ — look them up in the database:
| Skill | 3.3.5 ID | Notes |
|---|---|---|
| Bloodthirst | 23881 | May be 23885 on 1.12.1, verify |
| Whirlwind | 1680 | Same across all versions |
| Slam | 1464 | Same across all versions |
| Hamstring | 11573 | Same across all versions |
Notes
- The regular rotation macro (Bloodthirst/Whirlwind/Hamstring) must be pressed repeatedly
- Slam is auto-cast via
RegisterOnceEvent("SWING_RESULT_HAND1")monitoring main-hand swing events — no manual key press needed - Because
RegisterOnceEventauto-deletes after firing, eachSlamWar()call re-registers it, so the macro needs to be spammed - You need to enable the Mod Model feature in Heitu first; Super Macro will then take effect automatically
- Spell IDs correspond to version 3.3.5 (Bloodthirst=23881, Whirlwind=1680, Slam=1464, Hamstring=11573)
- Spell IDs can be looked up on database sites like db.heitu.org
- You must equip a two-handed weapon in your main hand
FAQ
Slam is not triggering
Check three things:
- Is your rage at or above 55?
- Is the Slam spell ID correct (1464)?
- Is the macro being spammed?
RegisterOnceEventfires once and then expires —SlamWar()must be called again to re-register
How to pause auto Slam
Comment out or delete the RegisterOnceEvent(...) line inside the SlamWar function and save. Uncomment to restore.
Why use Hamstring instead of Heroic Strike at high rage?
Because two-handed weapon speed is slow, using Heroic Strike consumes the rage for your next auto-attack and also triggers the global cooldown. In the current version, the benefit of Slam after auto-attack far outweighs Heroic Strike.