Modified: Visual Macro Designer
Design modifier, mouseover and cast-sequence macros for your action bar buttons visually, with no macro syntax required.
Modified is a macro designer for WoW: Forever. Open it, click any button on your action bars, and build what the button should do: one spell without a modifier, another with Shift, a heal on a friendly mouseover, a damage spell on an enemy target, a self-cast fallback, or a whole cast sequence. Modified writes the macro, puts it on the button and keeps it up to date. You never type macro syntax, and the editor never lets you build a row that can't fire.
Table of Contents
- Getting Started
- Slash Commands
- The Main Window
- The Action Bar List (left side)
- The Macro Editor (right side)
- Rows: Modifier, Spell and Conditions
- How the Macro Decides What to Cast
- Conflict Protection
- Choosing Spells and Items
- Patterns
- Show All Spell Ranks
- Cast Sequence Mode
- Macro Preview, Length and Warnings
- Apply, Revert and Reset
- How Modified Manages Your Macros
- Settings
- Combat Behavior
- Saved Data
- Examples
- Limitations and Notes
Getting Started
- Put the
Modifiedfolder in yourInterface\AddOnsfolder. - At character select, open AddOns and make sure Modified is ticked.
- In game, type
/modto open the designer. - Click any button on the left, build its rows on the right, and press Apply.
The Modified icon appears in the AddOns list, the window title bar and in front of every Modified chat message.
Slash Commands
| Command | What it does |
|---|---|
/mod |
Opens or closes the designer window. |
/modified |
Same as /mod. |
/mod settings |
Opens Modified's page in Options → AddOns. |
/mod options |
Same as /mod settings. |
/mod sync |
Rebuilds every macro Modified manages right now: recreates missing ones, undoes edits made outside the addon and resets their icons. |
/mod reset |
Moves the window back to the centre of the screen, for example if it ended up off-screen. |
/mod help |
Prints the list of commands in chat. |
You can also close the window with Escape or the X button.
The Main Window
The window has two halves:
- Left: the action bar list. Every action bar, button by button.
- Right: the macro editor. Designs the macro for the button you clicked.
Window behavior:
- Drag the title bar to move the window. Its position is remembered.
- Escape closes it.
- The window updates live when your action bars or macros change.
Top bar:
| Element | What it does |
|---|---|
| Show empty bars | When ticked, bars with no actions on them are listed too. Action Bar 1 is always shown. |
| Modified: X/Y | How many macros Modified manages (X) against your limit from Settings (Y). Turns red at the limit. |
| Slots: X/Y | How many character macro slots are used in total (X) against the game's maximum (Y). Turns red when full. |
| Settings | Opens Modified's page in Options → AddOns. |
The Action Bar List (left side)
Bars are listed in the order the game uses:
| Bar in the list | Action slots |
|---|---|
| Action Bar 1 | 1–12 |
| Action Bar 2 | 61–72 |
| Action Bar 3 | 49–60 |
| Action Bar 4 | 25–36 |
| Action Bar 5 | 37–48 |
| Action Bar 6 | 145–156 (only on clients that have it) |
| Action Bar 7 | 157–168 (only on clients that have it) |
| Action Bar 8 | 169–180 (only on clients that have it) |
| Action Bar 1 – Page 2 | 13–24 |
| Stance / Form Page 1–4 | 73–120 (pages used by stances, forms and stealth) |
Each bar shows its 12 buttons with their real icons.
| What you see | Meaning |
|---|---|
| Gold border with an "M" badge | Modified manages this button. |
| Red border, no badge | A design is saved for this button, but its macro has been moved off it. This is called "detached". |
| Highlight | The button currently open in the editor. |
Hovering a button shows the game's normal tooltip, plus the bar and button number and whether Modified manages it.
Clicking a button opens it in the editor.
The Macro Editor (right side)
When no button is selected, the editor shows the Modified logo and a hint. Once you pick a button, it shows:
Header
- The button's icon and name, and its bar and button number (for example "Action Bar 1, button 4").
- A status in the top-right corner:
- Not managed yet: Modified hasn't written a macro for this button.
- Managed (Mod_4): Modified owns the macro
Mod_4and it's on this button. - Detached: the design exists, but its macro was moved off this button.
- Queued until combat ends: you pressed Apply or Revert in combat, and the change will happen when combat ends.
Row list
Column headers: Modifier · Spell · Target · Reaction · State · Combat, followed by row buttons. Each row is described in the next section.
Buttons and options below the list
| Control | What it does |
|---|---|
| Add modifier | Adds a new row and opens the spell picker for it. You can also drag a spell or item onto this button to add a row with that spell. |
| Patterns... | Opens a menu of ready-made sets of rows. See Patterns. |
| #showtooltip | Adds #showtooltip to the macro, so the button's icon and tooltip follow the spell it would cast right now. On by default. |
| Macro preview | The exact macro text, updated as you edit, with a character counter. |
| Warnings | Problems shown under the preview. See Warnings. |
| Show all spell ranks | Lets you pick specific spell ranks. See Show All Spell Ranks. |
| Cast sequence | Switches this macro to /castsequence mode. See Cast Sequence Mode. |
| Apply | Writes the macro and places it on the button. |
| Revert to original | Puts the button's original spell back and deletes the macro. |
| Reset all | Clears every row and starts over from the button's original spell. |
Rows: Modifier, Spell and Conditions
A row is one "if this, cast that" rule. A button can have as many rows as fit within the macro's 255-character limit, and several rows can share the same modifier.
Each row has these parts, from left to right:
| Part | Options | What it does |
|---|---|---|
| # | – | The row's position. |
| Modifier | None, Shift, Ctrl, Alt, Shift+Ctrl, Shift+Alt, Ctrl+Alt, S+C+A (Shift+Ctrl+Alt) | Which keys must be held for this row. |
| Spell | Any spell or item | The square shows the icon and the name is shown next to it. A fixed rank appears as (R3). |
| Target | Target, Mouseover, Focus, Self, Tgt's Tgt, Cursor | Who the spell is cast on. Cursor places ground-targeted spells at your mouse cursor. |
| Reaction | Any, Friend, Enemy | Only use this row if the unit is friendly (help) or hostile (harm). |
| State | Any, Alive, Dead | Only use this row if the unit is alive (nodead) or dead (dead, for resurrects). |
| Combat | Any, Combat, No comb | Only use this row while you are in combat, or out of combat. |
| ▲ / ▼ | – | Move the row up or down. Greyed out when the move isn't allowed. See Conflict Protection. |
| + | – | Duplicate the row. The copy is adjusted to the nearest combination that doesn't clash. |
| ✕ | – | Delete the row. |
Using the condition buttons:
- Left-click steps to the next option; right-click steps to the previous one.
- Options that would clash with another row are skipped automatically.
- Hover a button to see what the current option means.
- On a row with no spell yet, the condition buttons are dimmed.
Using the spell square:
| Action | Result |
|---|---|
| Left-click | Opens the spell picker. |
| Drag in a spell or item | Uses it for this row. |
| Right-click | Clears the spell. |
| Hover | Shows the spell's or item's tooltip. |
How the Macro Decides What to Cast
Modified writes a single /cast line (or /castsequence in sequence mode). The game checks each row in order and casts the first one that matches.
- Most specific modifier first. Rows are written in this order: Shift+Ctrl+Alt, then the two-key modifiers, then Shift / Ctrl / Alt, and None last.
- The editor groups rows by modifier, with None first. Within a modifier, the order you see is the order the game checks.
- None rows act as the fallback. They don't require "no modifier held", so if you hold Shift and no Shift row matches, the None rows are used.
- Partial matches: a Shift row also fires when you hold Shift+Ctrl, unless you have a Shift+Ctrl row.
- Units that may not exist (Mouseover, Focus, Target's Target) automatically get an
existscheck, so the row is skipped when there's no such unit. If you set Friend or Enemy, that check already implies the unit exists, soexistsis left out to save characters. - Merging (standard mode only): neighbouring rows that cast the same spell are combined into one clause, for example
[@mouseover,help][help] Flash Heal. This saves characters. Cast sequences are never merged, so each context keeps its own place in its sequence. - Items are written as
item:<id>, so they work even if the item name isn't cached. If any row uses an item, the command becomes/use, which also casts spells.
Conflict Protection
Modified doesn't let you build rows that can never fire. Everything you see can actually happen.
What counts as a conflict (standard mode)
- Two rows with the same modifier and identical conditions. Only the first could ever run.
- Two "catch-all" rows on the same modifier. A catch-all row has no conditions that can fail: Target / Self / Cursor, with Any / Any / Any.
How it's enforced
| Action | What happens |
|---|---|
| Changing a field (Modifier, Target, Reaction, State, Combat) | Any value that would clash is skipped. |
| Add modifier, Duplicate and Patterns | They pick the nearest free combination. Reaction changes first, then Target, State, Combat, and Modifier last. |
| Every combination is taken | You get a chat message instead of a broken row. |
Ordering protection
Within a modifier, a broader row is always kept below the narrower rows it would otherwise swallow. For example, "Target · Any" stays below "Mouseover · Friend", and a catch-all always ends up last.
- ▲ / ▼ are greyed out when a move would break this.
- If you change a row so that it becomes broader, it moves down automatically.
Older or edited designs
When a design is loaded, any clash is repaired automatically: the clashing row is moved to the nearest free combination.
Cast sequence mode
In sequence mode, rows may share identical conditions, because that's how a sequence is built. See Cast Sequence Mode.
Choosing Spells and Items
Spell picker
Click any spell square, the Add modifier button, or a sequence step to open the picker next to it.
- It lists your known, non-passive spells from your spellbook, sorted by name.
- Search box: type to filter. Every word must match, so
rejuv 3finds Rejuvenation Rank 3. - Enter picks the first result; Escape closes the picker.
- Hover an entry to see the spell's tooltip.
- The line under the search box tells you which mode the picker is in: "Casts the highest rank you know", "Showing all known ranks", or "Finding spell ranks...".
Drag and drop
- Drag spells from your spellbook, or items from your bags, onto any spell square, sequence step, the + step square or the Add modifier button.
- Items can only be added by dragging.
- Macros can't be placed inside a macro; you'll get a chat message if you try.
- Other kinds of cursor content (mounts, pets and so on) are rejected with a message.
Pattern placeholders (A / B)
- Rows created by a pattern can show a big A or B in the empty square.
- Choosing a spell for one A row fills every empty A row, and the same for B. So you only pick each spell once.
Patterns
Click Patterns... to insert a ready-made set of rows. A and B are the spell placeholders described above.
| Pattern | Rows it adds |
|---|---|
| Mouseover, then target | A on Mouseover → A on Target. |
| Smart heal | A on Mouseover (Friend, Alive) → A on Target (Friend, Alive) → A on Self. |
| Mouseover, friendly target, self | A on Mouseover → A on Target (Friend) → A on Self. Designed for cast sequences: each row runs its own sequence. |
| Smart harm | A on Mouseover (Enemy, Alive) → A on Target (Enemy, Alive). |
| Friend / enemy (target only) | A on Target (Friend) → B on Target (Enemy). |
| Heal friend / hurt enemy | A on Mouseover (Friend, Alive) → B on Mouseover (Enemy, Alive) → A on Target (Friend, Alive) → B on Target (Enemy) → A on Self. The final self-cast means the button never shows a blank tooltip. |
How patterns are inserted:
- Spell A is filled in automatically from the first spell already on the button.
- If the button only has a single catch-all row (such as its original spell) or a single empty row, the pattern replaces it. Otherwise the pattern is added at the end.
- The whole pattern goes on the first modifier where none of its rows clash: None if possible, otherwise the next free one. Chat tells you if it landed on a different modifier.
- After inserting, you can change any row's modifier or conditions as usual.
Show All Spell Ranks
The Show all spell ranks checkbox is at the bottom of the editor. It's off by default and remembered per character.
When it's off:
- Spells are written by name only (
/cast Rejuvenation), so the game always casts your highest known rank.
When it's on:
- Spell picker: every spell is listed as "Rejuvenation (highest)", with each rank you know underneath ("Rejuvenation Rank 3", and so on).
- Picking a rank writes the classic syntax
Rejuvenation(Rank 3), and the row shows Rejuvenation (R3). - Dragging a spell from the spellbook keeps that spell's exact rank.
Other details:
- Rows that already have a fixed rank keep it if you turn the checkbox off later.
- A ranked and an unranked row of the same spell are never merged into one clause.
How ranks are found:
- Modified reads ranks from your spellbook first.
- If the spellbook only shows your top rank, Modified looks up your lower ranks in the background, a small chunk at a time so the game doesn't stutter. The picker shows "Finding spell ranks..." and fills in when it's done.
- This runs once per session, and again after you learn a new spell.
Cast Sequence Mode
Tick Cast sequence at the bottom of the editor to turn this button's macro into a /castsequence macro. Each press casts the next step of the sequence. The setting is saved per macro.
What changes in the editor
- The row list shrinks to 5 visible rows to make room for the sequence panel underneath.
- Each row's spell square selects that row (it's highlighted gold).
- The square shows the first step's icon and a step count.
- The name column shows the steps, for example "Moonfire > Wrath > Wrath".
- Hovering the square lists every step and the reset options.
- Dragging a spell onto a row's square adds it as a step of that row.
- Each row's current spell becomes the first step of its sequence.
The sequence panel
The panel edits the selected row. Its title reads "Steps of row N (Modifier, Target)".
| Control | What it does |
|---|---|
| Step squares (up to 8) | Numbered in cast order. Left-click: choose a different spell. Right-click: remove the step. Drag in a spell or item: replace the step. |
| ◀ / ▶ under each step | Cast earlier / Cast later. Swaps the step with its neighbour. |
| + square | Adds a step at the end (opens the spell picker, or drag a spell onto it). |
| Reset timer (− / +) | Starts the sequence over after this many seconds without pressing the button. "off" means no timer. Range 0–300 seconds; Shift-click changes it by 5. |
| Reset: Target | Starts over when you change target (reset=target). |
| Reset: Combat | Starts over when you leave combat (reset=combat). |
| Reset: Shift / Ctrl / Alt | Starts over when you press the button with that key held. |
Separate sequences per target or modifier
Every row keeps its Modifier, Target, Reaction, State and Combat. Rows with different conditions make separate sequences, and each one remembers its own place. So one button can have a mouseover sequence, a target sequence and a self-cast sequence:
/castsequence [@mouseover,help,nodead] reset=8 Rejuvenation, Regrowth; [help,nodead] reset=8 Rejuvenation, Regrowth; [@player] Rejuvenation, Regrowth
Rows that share a context
In sequence mode, several rows can have identical modifier and conditions. They chain into one sequence, in row order:
- One row's steps run first, then the next row's steps, and so on.
- ▲ / ▼ between rows of the same sequence reorders the sequence.
- Add modifier copies the selected row's context, so each click extends that sequence.
- Duplicate keeps the same context.
- The panel tells you when rows share a sequence, lists which rows they are, and shows the full order (for example "Thorns > Mark of the Wild").
- Reset options belong to the whole sequence. They're stored on its first row, and they stay with the sequence when you reorder or delete rows.
Switching back to standard mode
Unticking Cast sequence returns to normal /cast macros. Each row's first step becomes its spell.
Because standard mode doesn't allow rows with identical conditions, any rows that shared a context are moved to free combinations, and chat tells you how many changed. Tick Cast sequence again before applying if you want the sequence back.
Macro Preview, Length and Warnings
- Preview: the exact text that will be written, updated as you edit.
- Counter:
length/255. WoW macros are limited to 255 characters. The counter turns red above the limit, and Apply is disabled.
Warnings
| Warning | Meaning |
|---|---|
| Too long | Remove a row or a condition to get under 255 characters. |
| Modified is limited to N macros | You've reached your limit from Settings. Revert another button or raise the limit. Only applies to buttons that aren't managed yet. |
| All N character macro slots are in use | Free a slot in /macro. Only applies to buttons that aren't managed yet. |
| Row X never runs | A safety check; it shouldn't appear when you use the editor normally. |
| In combat: Apply will wait until combat ends | Changes are queued until you leave combat. |
Apply, Revert and Reset
Apply
Writes the macro and places it on the button. Apply is greyed out if the macro is empty, too long, or a new macro isn't allowed (your limit is reached or no character slots are free).
- New button: creates a character-specific macro named
Mod_<slot>(for exampleMod_4) and puts it on the button. - Already-managed button: rewrites the existing macro and makes sure it's on the button.
- In combat: the change is queued and happens as soon as combat ends.
- Chat confirms which button was updated.
Revert to original
- If the managed macro is still on the button, it puts back whatever was there before Modified took over: the original spell, item or macro.
- If the button was empty before, it's emptied again.
- Mounts, pets, flyouts and equipment sets can't be put back automatically. Chat asks you to drag them back yourself.
- It then deletes the managed macro and forgets the design.
- In combat, it's queued until combat ends.
Reset all
Clears every row in the editor and puts the button's original spell back as a single None row.
- It also turns
#showtooltipback on. - Nothing changes in game until you press Apply.
How Modified Manages Your Macros
- Names: each managed button gets its own character-specific macro called
Mod_<action slot>. You'll see them in/macroon the character tab. - Icon: every managed macro always uses the default "?" icon. With
#showtooltip, the button still shows the icon of the spell it would cast. If you change the icon in/macro, Modified sets it back to "?" the next time it rewrites the macro. - At login and
/reload(about 3 seconds after loading), Modified:- recreates managed macros that were deleted,
- rewrites each managed macro's text and icon from your saved design, which undoes changes made in
/macro, - checks whether each macro is still on its button. If you moved it, the button is marked detached (red border). It is not put back automatically. Open it and press Apply to place it again.
/mod syncruns the same rebuild at any time.- Spell ranks and old designs: designs saved by older versions of Modified are upgraded automatically when loaded.
Settings
Open Game Menu → Options → AddOns → Modified, click the Settings button in the window, or type /mod settings.
Character macro limit
How many of your character macro slots Modified may use, so the rest stay free for your own macros.
| Property | Value |
|---|---|
| Default | 18 (or the game's maximum, if that's lower) |
| Range | 1 up to the number of character macros the game allows |
| Control | Slider with − / + steppers |
If you lower it below what Modified already uses:
- Existing managed buttons keep working, and you can still edit and re-apply them.
- New buttons can't become managed until Modified is back under the limit. Revert some buttons first.
Options in the window
- Show empty bars (top of the left side): also lists bars with no actions.
- Show all spell ranks (bottom of the editor): see Show All Spell Ranks.
Both are remembered per character.
Options per macro
- #showtooltip: on by default.
- Cast sequence: off by default.
Combat Behavior
WoW doesn't allow addons to create, edit or place macros during combat. Modified handles this for you:
- Apply and Revert pressed in combat are queued. The editor shows "Queued until combat ends", and the change happens as soon as you leave combat. If you press Apply again for the same button before then, only the latest version is applied.
- The login rebuild is delayed until after combat if needed.
- You can open the window and edit designs freely in combat. Only writing the macro waits.
- Modified skips values the game hides during combat, so the window doesn't cause errors mid-fight.
Saved Data
Modified saves its data per character in the ModifiedDB saved variable:
| Saved | What it is |
|---|---|
| Designs | One design per managed button: its rows, spells, conditions, sequence steps and reset options, #showtooltip, cast sequence mode, and the button's original spell for Revert. |
| Show empty bars | The checkbox on the left side. |
| Show all spell ranks | The checkbox at the bottom of the editor. |
| Character macro limit | The setting in Options → AddOns. |
| Window position | Where you last dragged the window. |
Examples
Shift for a different spell
| Row | Modifier | Spell | Target |
|---|---|---|---|
| 1 | None | Fireball | Target |
| 2 | Shift | Frostbolt | Target |
#showtooltip
/cast [mod:shift] Frostbolt; Fireball
Heal friends, hurt enemies, self-cast otherwise
This uses the Heal friend / hurt enemy pattern, with Rejuvenation as A and Moonfire as B.
#showtooltip
/cast [@mouseover,help,nodead] Rejuvenation; [@mouseover,harm,nodead] Moonfire; [help,nodead] Rejuvenation; [harm] Moonfire; [@player] Rejuvenation
A specific rank on Alt
With Show all spell ranks on: None row Healing Touch (highest rank), and an Alt row Healing Touch Rank 3.
#showtooltip
/cast [mod:alt] Healing Touch(Rank 3); Healing Touch
Cast sequence with shared context
With Cast sequence on: two None / Target / Friend rows (Thorns, then Mark of the Wild), reset after 10 seconds or on target change.
#showtooltip
/castsequence [help] reset=10/target Thorns, Mark of the Wild
Separate mouseover, target and self sequences
With Cast sequence on, using the Mouseover, friendly target, self pattern:
#showtooltip
/castsequence [@mouseover,exists] Rejuvenation, Regrowth; [help] Rejuvenation, Regrowth; [@player] Rejuvenation, Regrowth
Limitations and Notes
- Built for WoW: Forever (Interface 16001), and also lists the modern client version (120007).
- 255-character limit: WoW macros can't be longer than 255 characters. Sequences and many conditions use space quickly; watch the counter.
- Character macros only: Modified uses character-specific macro slots, never the account-wide ones.
- Detached buttons: if you drag a managed macro to another button, Modified marks the original button as detached and never moves it back on its own.
- Revert can't put back mounts, pets, flyouts or equipment sets automatically.
- Items can be added by dragging only. The spell picker lists spells.
- Focus and Cursor targeting depend on the game supporting
@focusand@cursorfor your spells. - Spell rank discovery relies on the game reporting rank text such as "Rank 3". English rank names are the most reliable.