Description
FlyableHack (Flying Macro Conditional Fix)
Fixes travel macros that use flyable so they work correctly in every zone — Outland, Azeroth, Battlegrounds, Arenas. No manual changes needed. Just install and forget.
What problem does this solve?
In TBC Classic, the [flyable] macro condition is supposed to let you write one macro that uses Flight Form in zones where flying is allowed, and do something else like use a land mount or Druid Travel Form everywhere else. In practice it's buggy — it often reads as "true" even in non-flyable zones like Azeroth or Battlegrounds, causing your macro to try to cast Flight Form when you can't fly.
FlyableHack fixes this automatically. It watches for zone changes and silently rewrites your macros to use the correct condition for wherever you are.
Examples
Basic travel macro
#showtooltip
/cast [flyable,nocombat] Flight Form; Travel Form
In Outland it uses Flight Form, everywhere else it falls back to Travel Form.
Use different mount depending if zone allows flying
#showtooltip
/cast [flyable] Swift Green Hawkstrider; Great Green Elekk
All-in-one Druid movement macro
#showtooltip
/cast [mod] !Cat Form
/cast [mod] Dash
/stopmacro [mod]
/cast [swimming] Aquatic Form; [indoors] Cat Form
/cast [flyable,nocombat] Flight Form; Travel Form
/cast [outdoors] Travel Form
/cancelform [indoors,noform:3]
This is what I use to keep all my movement (instant cast shapeshift based) options on one button:
- Flight Form is the default action, but if you are already in flight form will switch you to Travel Form.
- If you are in a non flying zone, then Travel Form is the default option.
- Squatic Form in Water
- Cat Form indoors
- Cat Form a Dash if you hold a modifier like SHIFT or CTRL.
Probabaly won't suit everyone, but if you like to keybind everything and want the minimum number of buttons, something like this can help.
Installation
Install from CurseForge or manually:
- Download and extract the zip
- Copy the
FlyableHackfolder toWorld of Warcraft\_classic_\Interface\AddOns\ - Log in and type
/reload(or just relog)
That's it — no configuration needed.
Commands
/fhor/flyable— Manually trigger a patch of all your macros/fh status— Show which macros are being managed and what zone you're in
Notes
- Only touches macros that contain
flyableornoflyable— all other macros are left completely alone. - Works with both global macros and character-specific macros.
- When you open the macro editor your macros are temporarily restored to their original
flyable/noflyableform so they're readable. They get re-patched when you close the editor.
Troubleshooting
Macros not patching?
- Run
/fh statusto check if your macros were detected - Run
/fhto force a manual patch - Make sure the word
flyableappears in the macro body - Try
/reloadto refresh everything - If still broken, post your exact macro and which zone you were in on the CurseForge comments page
Getting a character limit warning?
- WoW macros have a 255-character limit. The patched version of your macro is slightly longer than the original, and your macro is too close to the limit to patch safely.
- Shorten the macro a little and it will patch automatically on your next zone change.
How it works (technical)
When you zone into a non-flyable area (Azeroth, a Battleground, an Arena), the addon replaces flyable with known:0 (always false — spell 0 is invalid and no player will ever know it) and noflyable with noknown:0 (always true, same reason). This causes macros to skip the Flight Form line and fall through to the correct option.
When you zone back into Outland, both replacements are reversed back to flyable and noflyable, restoring the original behaviour.
noflyable is always replaced before flyable to avoid substring corruption (noflyable contains the word flyable). Likewise on restore, known:0 is replaced before noknown:0 since it contains it as a substring.
Example of what happens under the hood:
Your macro (as you write it):
/cast [flyable,nomod,nocombat] Flight Form; Travel Form
While you're in Azeroth / BG / Arena (modified by the addon):
/cast [known:0,nomod,nocombat] Flight Form; Travel Form
Back in Outland (restored to original):
/cast [flyable,nomod,nocombat] Flight Form; Travel Form
You never need to touch your macros manually — the addon handles all of this in the background.
Version History
1.0.7 - Fixed issue with the WOW API call getBattlefieldStatus(1) returning true for some time after leaving a BGs, another bug that needed a workaround.
1.0.6 - Changed replacement conditions to use known:0/noknown:0 (invalid spell ID that no player will ever know). This eliminates any risk of collision with legitimate macro conditions that use @player,exists.
1.0.4 - Added support for noflyable — the inverse of flyable. In non-flyable zones, noflyable is replaced with @player,exists (always true), so conditions using noflyable evaluate correctly everywhere.
1.0.3 - Fixed issue with macros not being set back to flyable when editing macros in any zone type.
1.0.2 - Added support for character-specific macros, not just global ones. Thanks to ghunor for the report and fix suggestion.
1.0.1 - Fixed issue with macro icons not updating correctly after patching.
1.0.0 - Initial release.


