Use Trinket Slot Macro Classic
This will be updated and maintained to remain relevant for Classic. Use the FIND command to skip to specific parts of the thread. The hotkey for this on my Windows computer is ctrl + F. Try this, and punch in the index number of the section you want. TABLE OF CONTENTS. 1.0.0 - Why hunters are awesome 2.0.0 - Macros 2.1.0 - The goal of macros. /use nomod 13 or 14 (whichever number the trinket slot is) /equipslot mod:shift 13 trinket 1 name /equipslot mod:shift 13 trinket 2 name. If you don’t like having to press shift + action bar button, alt and ctrl can work too. I think when I used this type of macro it worked well when I only had a few trinkets I could even use. I am trying to build a macro that refers to my Weapon Swap macro instead of updated each macro every time I obtain a new weapon/shield. I have tried to link my Bash/Block macro back to my weapon swap macro using the /click command to my Macro on the action bar and it won’t fire off.
I was wondering if there is a way to first check if my trinkets are off cooldown and THEN use /use them.
Here is what the problem is.
My macros look BASICALLY something like this.
Problem with this method is when my trinkets are on Cooldown I get bombarded withItem is Not Ready YetandSpell Is Not Ready Yeterror messages, which significantly reduce my casting speed, which is a BIG problem in PVP. You know every failed spell or trinket use trigger a GCD of like 0.5 or more.
I need some way to check if the trinkets are ready before executing the /use command and if they are still on Cooldown, the macro should skip the /use 13, 14 part and proceed directly with the spell-cast.
Here is how I imagine it, USING PSEUDO-CODE to just represent my idea.
Anyone got any idea how to resolve this ? I used the Search function but didn't find anything relevant to my problem.
Warlocks are a class of far too many key bindings and niche spells for niche situations. Having a solid knowledge of macros will help you intelligently combine multiple actions to a single key, increase your responsiveness to emergent situations, and, to an extent, automate tedious tasks.
My goal with this document is not only to list out what I have found to be the most commonly employed warlock macros, but to give you enough information so that you can begin to modify and even write your own macros going forward. For this reason, I strongly encourage you not to simply copy and paste these macros, and instead hope that you try to understand what the syntax means.
This document was originally written for the Classic Warlock Discord. Credits to @Dive#5157, @Anilusion#5842
Macro Basics
The macro editing window can be brought up by typing /m in the chat window. There you can write, edit, and store macros either for your entire account (if the macro is useful for multiple characters) or for just the current character (if you have a class-specific macro, for example).
Create a new macro by clicking “New”. Then you will have to give the macro a name and an icon. Personally, I don’t like text appearing over my skill icons so I tend to name my macros “ “ which is just a press of the spacebar. For the icon I typically suggest using the first icon, the red “?”. This icon is special, because it will adapt to the functionality of the macro. It will automatically attempt to find the appropriate icon based on the action performed by the macro.
First Macros
After you’ve chosen a name and icon for the macro, you must write the functionality of the macro – what will the macro do? In the big box at the bottom of the macro editor window (where it says “Enter Macro Commands”) you can type something as simple as:
/s Hi
Then, if you drag the icon for this macro to an action bar, and press/click it, your character should say “Hi”.
Now try something more useful. Create a macro that has the following command:
/cast Demon Armor
Now you’ve written a macro that will cast the warlock spell Demon Armor for you! You might not think this is very useful, since you could have just had the spell on your action bar in place of the macro. You’d be correct, but this macro’s functionality is more subtle and useful than you think. This macro will automatically use the highest rank of the spell! As you level, you will never need to replace Demon Armor with the new rank; just use this macro and you will automatically have the highest-rank spell available.
A More Useful Macro
Macros are only useful if they save you time, key presses, or action bar slots. Getting the most out of a macro means having a basic knowledge of what a macro can do. Here’s an example:
/cast [@player] Devour Magic
This macro will use the Felhunter’s Devour Magic spell (assuming he is the active summoned demon) on you, even if you have an enemy targeted.
Notice the “@player” inside the square brackets. This is called a conditional and it modifies the nature of the action being performed.
Actions
Most macros are meant to use and/or equip items, cast spells, announce your actions to appropriate chat channels. Here are some of the basic actions a macro can perform:
/cast Cast a spell. Probably going to be your most-used type of macro command.
/stopcasting Interrupts a spellcast. Useful in front of /cast or /use commands, to interrupt your cast and complete your next action faster.
/castsequence Cast several spells in a pre-determined order. You can have the sequence reset upon special circumstances.
/use Use an item, such as health/soul/spellstones, potions, food/water, trinkets, whatever.
/equip Equip an item from your bag. Will induce a 30-second cooldown on items with a Use effect.
/say Self-explanatory
/party Self-explanatory
/raid Self-explanatory
/r Responds to a whisper. Can make a macro that says “Leave me alone I’m watching Asmongold!”
/dismount Takes you off your mount. This is handy to put in front of a /cast macro for your opener spells.
/userandom Uses a random item from a list you specify. The only use I can think for this is to summon a random non-combat pet 😛
/petaggressive Set your demon to aggressive.
/petattack Command your demon to attack.
/petautocasttoggle One button to turn on/off autocast for a specific demon ability.
/petautocaston Turns autocast on for a specific demon ability.
/petautocastoff Turns autocast off for a specific demon ability.
/petfollow Recalls your pet to follow you.
/petpassive Set your pet to aggressive.
/petstay Command your pet to stay in place.
/targetlasttarget Targets your previous target, without having to find their name/unitframe/nameplate/character.
Conditionals
Here is the focus of the guide portion of this document. If you can understand this, you’ll be able to write useful macros for any situation, on any class (though of course you only play Warlock, right?).
You can chain these together to make very nice macros. Mix and match them to suit your needs.
Here are some of the most important conditionals, with a brief description of what they do:
Targeting
Target tags can be chained together as well. For example, @targettargetpettarget will cast at your target’s target’s pet’s target.
- @player Casts the spell towards the player (you) regardless of what you have targeted. Good example being the previously shown Self-Devour macro.
- @pet Casts the spell towards your pet regardless of what you have targeted.
- @targetpet Casts the spell towards your target’s pet regardless of what you have targeted.
- @mouseover Casts the spell towards the unit your cursor is floating over. This is an extremely important modifier for pvp, for two reasons: first, it eliminates the time/hassle of clicking or tab targeting. Second, it doesn’t show which target you are casting your spell towards. Make sure you have important curses, fear, spell lock, etc, on mouseover.
- @cursor Similar to mouseover, but this is for “aimed” abilities with reticules like Rain of Fire, Inferno, and Iron Grenade. With this modifier, you won’t have to activate the ability and then click the location – the spell will automatically cast at the location of your mouse pointer.
- @targettarget Casts at your target’s target. This is pretty useful in PVP; for example, you can fear the target of your healer.
Key Modifiers
These conditionals completely change the function of the macro when a modifier-key is held before pressing the key of the original macro. For example, you might bind the /s Hi macro to the button F. You can add another line to the macro /s [mod:shift] Bye so that when you press Shift + F you say Bye instead of Hi.
IMPORTANT: The modified key combination must be available (not taken by any other action) in order for these macros to work. For example, you would not be able to put a macro on the 1 slot, and then use a shift modifier (resulting in the key press Shift + 1) because Shift + 1 is already bound to Action Page 1 by Blizzard Default. You must unbind the modified key combination to use these.
These are self-explanatory I think, so I won’t note them individually.
- mod:shift
- mod:alt
- mod:ctrl
Demons
These conditionals change the function of the macro depending on which demon you currently have summoned. These are also self-explanatory.
- pet:imp
- pet:voidwalker
- pet:succubus
- pet:felhunter
Misc
These don’t fit nicely into the other sections but they are important in my opinion, so I’ve just thrown them in a pile here. You might find several useful. Several of these really benefit from using the ‘no’ prefix (example: noparty, noharm, noexists)
- worn:item_name_or_slot_number Changes the behavior of the macro if a specific item is equipped (“worn”). This may be useful for Spellstone macros, or engineering trinket macros.
- btn:1 or btn:2 Allows you to make a macro that performs differently depending on left-click (1) or right-click (2). Normally you don’t want to click anything, but for some things it can be okay.
- group:party_or_raid Changes the behavior of the macro depending on whether you are in a party or a raid group.
- party Changes the behavior of the macro if your target is a party member
- raid Changes the behavior of the macro if your target is a raid member
- dead Changes the behavior of the macro if your target is dead
- exists Changes the behavior of the macro if your target exists. Sounds weird, but this is most useful for things that you don’t want to cast unless you have something targetted.
- harm Changes the behavior of the macro if your target is an enemy (someone/something you can attack and that can attack you)
- help Changes the behavior of the macro if your target is friendly (unable to attack you or be attacked by you)
- channeling Changes the behavior of the macro if you are currently channeling a spell (such as Drain Soul, Rain of Fire, etc). Works will with the ‘no’ prefix (nochanneling)
For a full list of macro conditionals, see this article (note that some of these may not work in Classic, as they are written with BfA context): https://wow.gamepedia.com/Macro_conditionals
Other Things
- #showtooltip spell_name This should go at the start of most macros. Adds a tooltip and icon to macros (assuming you use the red ? icon). If you do not put the spell_name, the macro will attempt to figure out what the correct spell should be automatically.
- /stopmacro Stops the execution of the macro past this line. A slightly more advanced command, this can be combined with conditions (such as [pet:imp]) to make more complex macro functionality.
- /script UIErrorsFrame:Hide() Disables the red error messages “Out of range”, “Not in line of sight”, etc. Reduces some visual clutter for macros you are going to spam.
Concrete Examples and Actually Useful Classic Warlock Macros
Leveling Macros
Max Rank Spells
/cast spell_name
- Casts the highest rank of spell_name. Great while leveling, so you never forget to put the new rank of the spell on your bars after training new spells.
Spammable Wand
/castsequence !Shoot,!Shoot
- Starts your Shoot wand ability, and won’t cancel the wanding if you press again. Helps a lot if you like to spam your keys. Note: this will occasionally misbehave. No idea why.
Drain Soul / Delete Shards v1 (easily modifiable)
#showtooltip Drain Soul(Rank 1)
/cast Drain Soul(Rank 1)
/run local bN = GetBagName(4) if bN”Small Soul Pouch” or bN”Soul Pouch” or bN”Box of Souls” then local nS=GetContainerNumSlots(4) PickupContainerItem(4,nS) DeleteCursorItem() end
- The classic “Drain Soul” macro. Casts Rank 1 Drain Soul and deletes a Soul Shard from the last slot of your shard bag, as long as the shard bag is in the left-most slot (furthest from the Backpack). This macro does not recall the pet, since Improved Drain Soul procs from pet killing blows in Classic (on beta, at least). Does not work with the high-level shard bags, to save characters in the macro – but that shouldn’t be an issue as long as you aren’t trying to get Improved Drain Soul buff at level 60! 😛 Note: this version is easily modifiable to include non soulbags, simply replace the bag names with the bag you will be using for shards.
Repair only main hand weapon or wand
/click MerchantRepairItemButton
/click CharacterMainHandSlot or /click CharacterRangedSlot
- When talking to a repair NPC, repairs only your mainhand or wand slot (with one button).
Drain Soul / Delete Shards v2 (smarter)
/use [nochanneling:drain soul]Drain Soul(Rank 1)
/run for i=1,4 do n=GetBagName(i)if n then if n:find(‘[Sl][oca][ulk]’) then if GetContainerNumFreeSlots(i)0 then PickupContainerItem(i,GetContainerNumSlots(i))DeleteCursorItem()break end end end end
- The same as the previous, but you don’t have to have a shard bag in the left-most slot. This will find your shard bag for you! Again, does nothing for non-soul bags.
1-button Grinding
/castsequence reset=target Immolate, Curse of Agony, Corruption, Shoot
- Converts your entire grinding rotation into one button. Modify the spells as it suits you. Can make long grinding sessions a bit similar to playing a retribution paladin. The sequence of spells will reset when you change targets.
Drain Life without canceling itself
#showtooltip Drain Life
/cast [nochanneling:Drain Life] Drain Life
- Allows you to spam Drain Life without interrupting ticks, which reduces the mana efficiency of your spell. Also works for Drain Mana, Drain Soul, Rain of Fire, Hellfire, etc.
Unstuck + Hearthstone Warning
/run a,b=GetItemCooldown(6948)if a+b<GetTime()and GetItemCount(6948)>0 then message(“124cffff0000WARNING: USING HEARTHSTONE!124r”)PlaySoundFile(“SoundcreatureVoljinVoljinAggro01.ogg”)else PlaySound(8585)end
/click HelpFrameCharacterStuckStuck
- Uses your “unstuck”, and makes a popup warning if you are about to use your Hearthstone. Useful for death skips! If you don’t want the popup, you can have a chat message by changing message to print.
XP bar text
/console xpBarText 1
- Enables displaying the numeric value of your XP Bar progress. May need to mouse-over your bar to get it to display the first time.
Stones, Buffs, and Other Party-Support Macros
Soulstone clicking
/cast [button:1] Create Soulstone (Major)
/use [nomod,button:2] Major Soulstone; [mod:shift, @player, button:2] Major Soulstone
- Creates a Major Soulstone on left-click, applies/uses the Soulstone on right-click, and soulstones yourself on shift-right-click. Modify this to suit you.
Self- and Target- Buffing
/cast [mod:shift, @player][] Detect Greater Invisibility
- Casts Detect Greater Invisibility (you can replace this with Underwater Breathing) on your target, unless you press Shift, in which case it will buff yourself instead.
Summon Announcer (raid, party)
#showtooltip
/cast Ritual of Summoning
/run local msg=strjoin(“”,”Summoning “,UnitName(“target”),” to “,GetMinimapZoneText(),”, please assist.”) SendChatMessage(msg,(UnitInRaid(“player”) and “RAID” or “PARTY”))
- Summons your target and announces in raid or party chat (depending on which group type you are in) “Summoning (target) to (zone), please assist.” Feel free to modify the message as you like.
Summon Announcer (say, whisper)
#showtooltip
/cast Ritual of Summoning
/run t=UnitName(“target”) msg=strjoin(” “,”Summoning you to”,GetMinimapZoneText()) SendChatMessage(msg,”WHISPER”,nil,t)
- Summons your target and announces it in /say and whispers the target “Summoning you to (zone), please assist.” Feel free to modify the message as you like.
Curse of Recklessness Rank Control
/cast [group:raid] Curse of Recklessness; Curse of Recklessness(Rank 1)
- Casts maximum-rank Curse of Recklessness if you’re in a raid, Rank 1 Curse of Recklessness if you are not in a raid.
Minimap Tracking Cycler
/castsequence Sense Demons, Find Minerals, Find Herbs
- Changes the currently-tracked objects on your minimap from Demons, to Ore, to Herbs, and back again
Unequip Everything
/script local t={1,3,5,6,7,8,9,10,16,17,18}; for k,v in pairs(t) do PickupInventoryItem(v); PutItemInBackpack(); end
- Removes all your gear. Great for deathskips!
PvP, Items, and Crowd-Control Macros
Use ALL the heals
/use Major Healthstone
/use Greater Healthstone
/use Healthstone
/use Major Healing Potion
/use Greater Healing Potion
/use Healing Potion
/use Furbolg Medicine Pouch
….
- Uses as many healing items as possible, using the largest heal from each category first. Since healthstone does not share a cooldown with potions (and there are other items with their own cooldowns), this macro can look like a Lay On Hands. It’s up to you to decide which items you toss into this macro.
Mouseover spells
/cast [@mouseover,exists] spell_name
- Casts spell_name at your current mouseover target. Does nothing if your mouse is not hovering over a target. Great candidates for this macro would be: Fear, Death Coil, Curse of Tongues, Seduction, Spell Lock, Devour Magic. You may want to add harm to the list of conditions.
Mouseover/target cast toggle
/cast [mod:shift, @mouseover][] spell_name
- Casts spell_name at your current mouseover target if you are holding shift, otherwise casts it at your target. Great candidates for this macro would be: Fear, Death Coil, Curse of Tongues, Seduction, Spell Lock, Devour Magic. You may want to add harm to the list of conditions.
Infernal on cursor
/cast [@cursor] Inferno
- Summons an Infernal at the location of your mouse, without having to click the location.
Rank 1 Rain of Fire on cursor
/cast [@cursor] Rain of Fire(Rank 1)
- Casts Rank 1 Rain of Fire at the location. Great for unstealthing rogues/druids, and interrupting the flag in AB/AV.
Iron Grenade on cursor, with interrupt
/use [@cursor] Iron Grenade
/stopcasting
- Uses an Iron Grenade at the location of the mouse cursor, and interrupts the throw upon a second press. You don’t want to spam this macro! The stopcasting command is useful because enemies will often run out of your previous target circle, and you can stop the grenade from being wasted.
Self trash-buff cycler
/castsequence [@player] Detect Greater Invisibility, Underwater Breathing
- Casts “trash buffs” on yourself with one key press per buff. Great for preventing dispels.
Shadow reflect downranker
/cast [mod:shift] Corruption(Rank 1); Corruption
- Casts a Rank 1 Corruption on yourself when shift is held, very useful against Shadow Reflectors because the DoT can make you immune to CC but deal very little damage. Additionally, you can get instant Shadowbolt casts if you are specced for Nightfall. Other great candidates are Siphon Life (long duration, damage cancels itself out), Curse of Recklessness(Rank 1) (make yourself immune to fear at the cost of some armor).
Totem stomping
/petattack
/petattack [@mana tide totem]
Use Trinket Slot Macro Classic Wow
/petattack [@windfury totem]
/petattack [@tremor totem]
/petattack [@grounding totem]
- Sends your pet to attack, and destroy, shaman totems of high PVP impact. If no totems are found, simply attacks your current target. The totems listed at the bottom of the macro will be attacked first. Add totems to this as you see fit.
Spellstone equip/use/switch back to offhand (need testing)
/use Major Spellstone
/equip name_of_offhand
/equip Major Spellstone
- Equips your spellstone on first press. Another press will use your Spellstone and immediately equips your normal offhand (substitute name_of_offhand for your offhand item). NOTE: If you press this again before the 30-second timer of equipping your Spellstone, the timer will be reset!
Max camera distance
/console cameraDistanceMaxZoomFactor 3.5
- ESets your maximum camera zoom to as far as the game will allow, letting you see much more area around your character. This is extremely helpful while in battlegrounds or questing/grinding in areas of dense PVP, as it helps you detect attackers sooner.
Use equipment slot (for engi gadgets, trinkets, offhands, etc)
#showtooltip
/use number
Uses the item in the slot number number. 1 = helm, 6 = belt, 8 = boots, 17 = offhand, 13 = trinket1, 14 = trinket2. Feel free to add mouseover conditions and such to this!
Pet Macros
Pet-specific binds, with modifier set
#showtooltip
/cast [pet:imp] Fire Shield; [pet:voidwalker] Sacrifice; [pet:succubus] Seduction; [pet:felhunter] Spell Lock;
/cast [pet:imp,mod:shift] Firebolt; [pet:voidwalker,mod:shift] Torment; [pet:succubus,mod:shift] Lash of Pain; [pet:felhunter,mod:shift] Devour Magic;
- Casts a different pet ability depending on which pet you have out. Changes to a second set of abilities when Shift is pressed. The tooltip should update to the correct spell. Modify this to suit your needs.
Devour Magic on mouseover, targeted ally, self
/cast [@mouseover,exists][help][@player] Devour Magic
- Casts Devour Magic at your mouseover target (if there is one), casts Devour Magic at your target if your target is an ally, casts Devour Magic at yourself if you have no mouseover target and your target is not an ally (or you have no target).
Pet Attack Mouse Over, Pet Attack Target, and Pet Return in one
/petfollow
/petattack
/petfollow [@pettarget,exists]
/petattack [@mouseover]
Use Trinket Slot Macro Classic Wow
/script UIErrorsFrame:Clear()
Trinket Slot Macro Classic
- Commands your pet to attack your current mouse-over target. If you do not have a mouse-over target, attacks your current target. Will also command the pet to return if your pet is currently attacking and you have no mouse-over target. If you have a target and a mouse-over target, your pet will begin attacking mouse-over target. Also command pet to follow if pet is initially on “stay”. Suppresses “You don’t have a target.” errors.