WoW Priest Macros
December 29, 2006 | 22 Comments
Introduction
Using my post on macros, World of Warcraft Forums and a number of other random resources and suggestions, I'll be posting useful macros for each class. Because I play a Priest on Illidan, I'll start with that class first :).
Crowd Control Macros
Shackle version 1
This macro will cast Shackle Undead if the target is hostile. It will then tell the party that you're shacking the target. The stopmacro line will prevent the announcement if the target is not hostile, cutting down on unnecessary spam. However, I think you'll still get a /p message if you attempt to cast shackle undead on a non-valid target. (confirmed for 2.0.1)
-
/cast [harm] Shackle Undead
-
/stopmacro [noharm]
-
/p Shackling %t! DO NOT TOUCH!
Shackle version 2 (Focus Combo)
Allows you to set your focus and bind a spell directly to that focus. You should be able to cast the second spell without ever losing your current target. If used with a heal spell instead of shackle, this should also be very helpful for MT/Raid healing.
-
macro 1:
-
/focus target
-
macro 2:
-
/cast [target=focus,harm] Shackle Undead; [harm] Shackle Undead
-
/stopmacro [target=focus,noharm]
-
/script SendChatMessage(UnitName("focus").." is shackled! DO NOT BREAK!")
Note: if you don't know what /focus target does...well, it allows you to mark a target as a focused target which allows you to target other objects and cast spells on that focus without losing your current target.
Healing Macros
Simple Greater Heal
This simple macro will cast Greater Heal (the highest rank you have) if the target is friendly, and alert the party about whom you're healing. It will stop the announcement if the target is not friendly. (confirmed for 2.0.1)
-
/cast [help] Greater Heal
-
/stopmacro [nohelp]
-
/p Healing %t
Target/Self Heal Macro
This macro checks to see if you have the "alt" key selected - if you do, then it casts Flash Heal on yourself. If you do not, it wil cast Flash Heal on your friendly target. It also announces to the party when you heal a target.
-
/cast [modifier:alt,target=player] Flash Heal; [help] Flash Heal
-
/p Healing %t
A Better Target/Self Healing Macro
Llenyd and Augur wrote this one, which I think is better than the one listed above. It will heal yourself if the target is harmful, otherwise it will heal your target - and announce whomever you're healing, including yourself. The above macro would only announce your targetted healing. (confirmed for 2.0.1)
-
/cast [help] <healing Spell>; [target=player] <healing Spell>
-
/script local n if(UnitIsFriend("player","target")) then n=UnitName("target") else n=UnitName("player") end SendChatMessage("Healing"..n.."in 3 seconds","SAY",nil)
Uber Mouse Wielding Heal Macro
For you uber-mouse wielders out there, Llenyd's macro would:
Cast GH1 on the Broodlord's current target if you click the macro.
Cast Shield on the Broodlord's current target if you right-click the macro.
Cast highest rank FH on the Broodlord's current target if you Mouse Button 4-click the macro.
Cast highest rank GH on the Broodlord's current target if you Mouse Button 5-click the macro.
-
/cast [target=targettarget, button:1] Greater Heal (Rank 1); [target=targettarget, button:2] Power Word: Shield; [target=targettarget, button:4] Flash Heal; [target=targettarget; button:5] Greater Heal
Uber Mouse Wielding Flash Heal Macro
This is similar to the above macro, except that it casts Flash Heal and chooses the targets according to which mouse button you click with.
-
/cast [button:1, help] Flash Heal; [button:1, harm, target=targettarget] Flash Heal; [modifier:alt, target=player] Flash Heal; [button:2, target=party2] Flash Heal; [button:3, target=party3] Flash Heal; [button:4, target=party4] Flash Heal; [button:5, target=party5] Flash Heal
Combat Macros
Space Saving Mind Blast/SW:Pain Macro
This macro uses the new "cast sequence" ability - yay more bar space! When you first click it, it should cast Mind Blast - when you click the button again, it will cast Shadow Word: Pain. The sequence will reset to Mind Blast if the player drops out of combat, or chooses a different target.
-
/castsequence reset=combat/target Mind Blast, Shadow Word: Pain
MindFlay When Not Channeling Macro
Should cast Mind Flay only if you are not currently already channeling Mind Flay. For those "duh" moments. :)
-
/cast [nochanneling:Mind Flay] Mind Flay
Devouring Plague Macro
Good example of the timed reset macro. This macro will, on the first button press, cast Inner Focus. On the second press, it will cast Devouring Plague. The sequence resets after Devouring Plague, or if enough time passes between button presses (170).
-
/castsequence reset=170 Inner Focus, Devouring Plague
Shadowform Heal
For our shadow friends, this macro will drop shadowform on the first click, cast Flash Heal on the second click, and revert you to shadowform on the third click. If you are not in shadowform, it won't do anything.
-
/castsequence [stance:1] Shadowform, Flash Heal, Shadowform
Correct Your Smiting
Casts smite on a harmful target...OR if you target a friendly to heal them, and they're targeting a mob, casts smite on your target's target.
-
/cast [harm] Smite; [target=targettarget, harm] Smite
Troll Berserking/PI/IF Macro
Sirona's Troll Berserking / Power Infusion / Inner Focus -- Smite macro does just what it says. :) If any of the first spells are on cooldown it should give you an error message, but continue on through the other spells. You can also turn this into a healing macro if you change the final spell.
-
/cast Berserking
-
/stopcasting
-
/cast Power Infusion
-
/stopcasting
-
/cast Inner Focus
-
/stopcasting
-
/cast Smite
Misc Macros
Mouseover Dispell
Sylphael's macro (ty, Sylphael!) will cast dispel magic on whatever target your mouse is presently hovering over. So if you bind it to a mouse button and hit that button while hovering over a character, you'll cast dispel on that character.
-
/cast [target=mouseover] Dispel Magic
Instant Shield
This will stop the current spell and cast PW:S on your target if it is friendly, or (if that fails) it will cast PW:S on your target's target.
-
/stopcasting
-
/cast [help] Power Word: Shield; [target=targettarget] Power Word: Shield
Handy Resurrection Macro
Just a simple resurrection macro that announces your casting!
-
/cast [dead] Resurrection
-
/stopmacro [nodead]
-
/script SendChatMessage("Resurrecting "..UnitName("target")..". w00t!")
Top Trinket+PI Macro
This is Tanara's "Top Trinket +PI" macro. Trinket slots will not be a valid term in the "/castsequence" macros - you'll have to specify the item name like the one in italics here. If I remember right, the name is case sensitive but only has to be long enough so that the term isn't ambiguous. For example, "Conjured" could call conjured water or conjured cinnamon roll. You would have to write out to "Conjured Cinn" to get the term non-ambiguous.
The macro is a sequence so that if the trinket was on cooldown, then the Power Infusion wouldn't cast. There's no way to "use spell if item is not on cooldown" in the new scripting language - the developers deliberately removed that functionality. Remember, you'll have to press the button twice (with no failure) to get the Power Infusion spell cast.
-
/castsequence [target=player] Zandalarian Hero Charm, Power Infusion
Spoon's BAM Macro
Spoon's BAM macro (ty Spoon!) should use the Hero Charm if it's not on cooldown, then cast Power Infusion, then cast Inner Focus - all with one click. It differs from the above macro in that there's no cooldown check. If the Hero Charm is on cooldown, you'll just receive an error message but the rest of the spells will execute.
-
/use Zandalarian Hero Charm
-
/stopcasting
-
/cast [target=player] Power Infusion
-
/stopcasting
-
/cast [target=player] Inner Focus
SpaceSaver Macro
Spoon's spacesaver macros - now your low ranked or single-cast spell can be the same button as your high ranked. All you'll have to do is hold the alt key to toggle between them.
-
/cast [modifier:alt] Prayer of Shadow Protection; Shadow Protection
-
/cast [modifier:alt] Greater Heal(Rank 1); Greater Heal
-
/cast [modifier:alt] Holy Nova(Rank 1); Holy Nova
Raid Shield
Pretty simple macro to cast shield on your target if he's in your group and friendly or if your target's target is friendly and in group, or else shield yourself.
-
/cast [raid] Power Word: Shield; [target=targettarget, raid] Power Word: Shield; [target=player] Power Word: Shield
Special thanks to Anaea of Aerie Peak's Priest Macro resource where a number of macros were pilfered :)
World of Warcraft 2.0: Macros
December 22, 2006 | 215 Comments
Contents:
Introduction
So, my retirement from World of Warcraft is over. I've been away for the better part of a year but with the impending Burning Crusade expansion and my wife's continual discussion about WoW with one of her co-workers has given me the longing to wtfpwn some n00bs. I'll be playing my - relatively low-level - Priest on Illidan as my primary PvP (Player vs. Player) character.
I have often been a fan of UI mods and a couple of my favorites are no longer useful with all the updates to the default WoW User Interface...so my attention will be geared more towards efficient mana use to optimize my time in leveling my Undead Shadow Priest. On the WoW UI Forums I stumbled on a good resource for 2.0 macro changes that I'll list.
Note: Since Blizzard likes to prune its forums, posts like Neuro's - who's post I'm quoting - are often lost. This post, while primarily a direct quote is a means of preserving valuable information...hats of too Neuro of the Medivh server for putting this together.
2.0 Macro Changes
(source: Neuro at WoW UI Forums)
In WoW 2.0, macros and addons have drastically changed. Blizzard has installed exciting new additions to the functionality of macros in WoW 2.0, a set of conditional options for /cast, as well as /use, /target, /focus, /assist, /stopmacro, /cancelaura, /userandom, /castrandom, /castsequence,
/click, and the various /pet* slash commands. This post is intended to be a "How-To" guide on using them.
NOTE: While most of the examples given are done using '/cast', these options are available to all the slash commands listed above.
Understand that most current macros are obsolete in 2.0. Just about anything using CastSpellByName() or TargetUnit() is non-functional in combat. In addition, most 'dumb logic' macros do not work anymore. However, you can now replicate the functionality of many popular macros with these new Macro Options.
/cast Command
Currently, using '/cast' is very simple. The command format is '/cast <spellname>' (which casts the highest rank of the listed spell), or '/cast <spellname>(Rank <#>)'. Some examples:
/cast Greater Heal
/cast Arcane Intellect(Rank 3)
In the new system, this format still works just the same, however you can now add options to give more flexibility to your /cast statements. The new command format for '/cast' is: '/cast [<first set of options>] <first spellname>; [<second set of options>] <second spellname> ; [<third set of options>] <third spellname>; ...
The way it works: The first set of options is checked. If they are true, then the first spell is cast. If they are false, the next set of options is evaluated, and if true, the next spell is cast, and so on. However, you must keep in mind that only one spell will be cast. As soon as a set of options evaluates to true, the game will cast the corresponding spell, and that line of the macro will be done.
The current options available to players are:
- help - Evaluates 'true' if target is friendly
- harm - Evaluates 'true' if target is hostile
- combat - Evaluates 'true' if you are in combat.
- stance or stance:# - Evaluates 'true' if you are in a stance, or are in a particular stance (see below)
- stealth - Evaluates 'true' if you are stealthed.
- modifier or modifier:shift|ctrl|alt - Evaluates 'true' if the selected key is held down when the command is executed.
- equipped:
- - Evaluates 'true' if item is equipped. Item can be any valid inventory slot, item class or item subclass.
- target=
- Special option. It changes the target from the default of "target" to any valid unitid. (see below) - actionbar:
- Evaluates 'true' if the current actionbar is the same as the listed one. - pet:
- Evaluates 'true' if the pet exists. Takes pet type (Owl, Bear, Imp) or pet name (Fluffy, MrBigglesworth). With no modifier (i.e. just [pet]) it evaluates 'true' if ANY pet exists. - mounted, swimming, flying - Evaluates 'true' if you are mounted, swimming, or flying, respectively.
- indoors, outdoors - Evaluates 'true' if you are indoors or outdoors, respectively.
- button:< #> - Evaluates 'true' if the selected button was used to 'click' the spell, defaults to 1 (see below).
- channeling:
- Evaluates true if you are channeling the spell listed. With no spell listed, it evaluates true if any spell is being channeled. - exists and dead - Evaluates true if your target is dead, or actually exists.
- party - evaluates true if the target is a member of your party
- raid - evaluates true if the target is a member of your party or raid
- group - evaluates true if you are in a group
- group:party/raid - evaluates true if you are in the specified type of group
Cast Examples
Here are some examples to help:
/cast Greater Heal
Very simple macro which casts Greater Heal on your target.
/cast [help] Greater Heal
One option added. Will cast Greater Heal IF the target is friendly.
/cast [help] Greater Heal; Smite
Second spell added. Since it has no option added to it, it will be cast any time the first option fails.
/cast [help, combat] Flash Heal; [help, nocombat] Greater Heal; Smite
This macro will cast Flash Heal on a friendly target if you (not the target) are in combat. If you are not in combat and the target is friendly, it will cast Greater Heal. If neither of these is true (i.e. the target is not friendly) it will cast Smite.
/cast [help] Greater Heal; [harm, combat] Smite; [harm, nocombat] Mind Flay
This will cast Greater Heal on a friendly target, or Smite if the player is in combat, or Mind Flay if the player is not in combat.
/cast [stealth] Ambush; Backstab
This will cast Ambush if the player is stealthed, Backstab if not.
/cast [nostealth] Backstab; Ambush
Does the exact same thing as above, just in a different way.
/cast [actionbar:1] Greater Heal; [actionbar:2] Smite
Will cast Greater Heal if the current actionbar is #1, Smite if it is #2, nothing if actionbars 3+ are selected
/cast [harm] Polymorph
/stopmacro [noharm]
/p Sheeping %t! DO NOT TOUCH!
This macro will cast Polymorph if the target is hostile, then stop the macro if the target is NOT hostile (i.e. if the polymorph didn't go off). Then it tells the party that it's target has been Sheeped. Note that because of the '/stopmacro' command, if the target was not sheeped, the party would not be sent a tell (thus cutting down on unneccessary spam).
/cast [nopet] Call Pet; Revive Pet
This macro will call your pet if you do not have one, otherwise it attempts to cast Revive Pet.
/cast [pet:owl] Dive; [pet:cat] Dash; [pet] Growl
This macro will cast Dive if you have an owl, Dash if you have a cat, or Growl if you have anything else.
/cast [pet:Voidwalker] Sacrifice; [pet:succubus] Seduction
Will cast Sacrifice if you have a Voidwalker out, Seduction if you have a Succubus.
/use [nomounted,outdoors] Black War Steed Bridle
This will attempt to mount if you are outside and not mounted.
/cast [target=pet,dead] Revive Pet; [nopet] Call Pet; Mend Pet
This will revive your pet if it's dead, call your pet if you don't have him out, or mend your pet.
/cast [group:party] Arcane Brilliance; Arcane Intellect
Will cast AB if you're in a group, or AI if you're not.
/cast [raid] Blessing of Wisdom
Will cast Blessing of Wisdom if your target is in the same raid as you.
Stance Options
Stances work the same way. If no stance number is given, then it evaluates to 'true' if the player is in any stance. (Note that for Warriors, you are ALWAYS in some stance). If a number is given, it checks to see if that form is currently active.
Each class has different numbers for it's stances. Here is a list of stances and their numbers:
Class: Warrior Priest Druid Rogue --------------------------------------------------------------- Stance:1 Battle Shadowform Bear Stealth --------------------------------------------------------------- Stance:2 Defensive Aquatic --------------------------------------------------------------- Stance:3 Berserker Cat --------------------------------------------------------------- Stance:4 Travel --------------------------------------------------------------- Stance:5 Moonkin/Tree ---------------------------------------------------------------
Paladin Auras are no longer treated as Stances by the Macro Option system.
Keep in mind that if you skip a stance (like a Warrior who never does the Defensive Stance quest) then your stance numbers will drop down, i.e. Berserker Stance would be stance 2.
Stance Examples
/cast [nostance] Bear Form
If you are not in a form, this will shift you into bear form.
/cast [stance:1] Overpower; [stance:2] Sunder Armor; [stance:3] Whirlwind
Will cast Overpower in Battle stance, Sunder Armor in Defensive, and Whirlwind in Berserker stance
/cast [stance:1] Growl; [stance:3] Claw
Will cast Growl in Bear form, or Claw in Cat form.
/cast [nostance:3] Cat Form
Will put you into cat form if you are not. If you are currently in Cat form, this will NOT shift you out.
Equipment Option
The [equipped] option also works the same way, but it's a bit trickier. The argument can be either an Inventory Slot (see below), an item type, or an item subtype. For a list of item types and subtypes, check here.
A List of Inventory Slots:
| Two-Hand | Ranged |
| Bag | Chest |
| Shirt | Off Hand |
| Chest | Shoulder |
| Back | Tabard |
| Feet | Thrown (ranged slot items like thrown daggers) |
| Finger | Trinket |
| Hands | Waist |
| Head | One-Hand |
| Held In Off-hand | Main Hand |
| Legs | Off Hand |
| Neck | Wrist |
Equipment Examples
/cast [equipped:Two-Handed Swords] Mortal Strike; Heroic Strike
This will cast Mortal Strike if you are using a 2hand sword.
/cast [equipped:Two-Handed Swords/Two-Handed Maces/Two-Handed Axes/Polearms] Mortal Strike
This uses the '/' modifier to set up an 'or' condition. This macro will cast Mortal Strike if ANY of those types are equipped.
/cast [equipped:Shields] Shield Bash
This will cast Shield Bash if you have a shield equipped.
/cast [equipped:Shields, equipped:Daggers] Shield Slam
This will cast Shield slam only if you have a dagger AND a shield equipped.
/cast [noequipped:Shields, equipped:Off Hand] Rampage
This will cast Rampage if you do NOT have a shield equipped, AND you have something in the Off Hand slot. In theory, this macro will only activate if you are dual-wielding.
Button Options
The option [button:
The default button is 1, the Left Mouse button. Note that when you activate a macro via a keybinding, it treats it like a Left Mouse button click. The numbered buttons are:
- 1 or LeftButton
- 2 or RightButton
- 3 or MiddleButton
- 4 or Button4
- 5 or Button5
... or any of the buttons remapped by the secure state headers.
Button Examples
/cast [button:2,target=player] Flash Heal; [help] Flash Heal
This macro would cast Flash Heal on a friendly target, OR if you clicked it with the right mouse button, it would cast Flash Heal on you.
Target Option
The [target=unit] is a special option. Instead of evaluating to 'true' or 'false', it changes the target of the following spell AND the target of the other options. "Unit" can be any valid unit type, i.e. "player", "target", "targettarget", "party1", "party1target", etc etc. For more on unit types, go here
Keep in mind that every spell has a default target of "target". So, for example:
/cast [help] Greater Heal
is the same as
/cast [target=target, help] Greater Heal
Unless you add in a [target=unit] option, the default will be your current target.
Target Examples
/cast [target=player] Flash Heal
This spell will always cast flash heal on yourself. Note that your current target will be unchanged.
/cast [help] Flash Heal; [target=targettarget] Flash Heal
This will cast Flash heal on your target if it is friendly, OR it will cast Flash Heal on your target's target.
/cast [help, combat] Flash Heal; [help, nocombat] Greater Heal; [target=targettarget, help, combat] Flash Heal; [target=player] Greater Heal
This will either 1) Cast flash heal if the target is friendly and you are in combat, 2) cast greater heal if the target is friendly and you are NOT in combat, 3) cast Flash Heal on your target's target if you are in combat and that unit is friendly, or if none of those conditions is true, it will cast Greater Heal on yourself.
If you use the unitid "none" it acts as if you had NO target. For example:
/cast [target=none] Dispel Magic
This would cast Dispel Magic and then ask for a target, regardless of whom you have targetted currently.
/castsequence Command

This command is new as of 2.0
/castsequence - Casts a predetermines set of spells in sequence (See Below)
- show <spell>- Shows macro feedback for the listed spell
- showtooltip <spell> - Shows tooltip info for the selected spell
Some additional tricks you can do with the options:
- You can add 'no' to the beginning of any option (except target) to invert it, i.e. 'nocombat' will only work if you are NOT in combat.
- Seperating options with a comma ',' will act like an 'and' statement; if both options are true, it executes.
- Seperating arguments within an option with a slash '/' will act like an 'or' statement; if either argument is true, it executes. Note that this works only on the arguments within an option, NOT between the options themselves (So while [stance:1/2] is valid, [combat/help] is not).
- Selecting the '?' Icon in the Macro Editor will force the macro to present the icon of the current spell that spell feedback is being given for.
/castsequence Examples
There's a new command in WoW 2.0, called /castsequence. It allows you to set up a series of spells to cast one after another, on each subsequent click of the macro. The format is:
/castsequence [<options>] reset=<#>/target/combat/alt/shift/ctrl <spell1>, <spell2>, <spell3>
"Huh? Say what?"
It sets up a list of spells, and the first time you click the macro, it casts the first spell on the list. The next time you click it, it will cast the second spell, and so on. When it gets to the end, it goes back to the beginning.
"I'm still not following you."
Ok, lets say you are a mage. Sometimes you need to Frost Nova and Blink away quickly. You can't do them both at the same time, so you set up a sequence to do it!
/castsequence Frost Nova, Blink
And there you have it. The first time you click it, you Frost Nova, then you click again and Blink away.
"And what happens if Frost Nova is on cooldown? Does it Blink instead? Or does it just skip over Frost Nova and do Blink on the next click?"
Neither one. If the spell fails to cast (due to cooldown, out of range, not enough mana, whatever) then the sequence does NOT go to the next spell. The next time you click the macro, it'll try to Frost Nova again. (NOTE: A resist, dodge, parry, etc does NOT count as a failed cast. The spell/ability successfully went off, it just missed.)
"What if I'm not in combat? I don't want to waste a Frost Nova if I'm not actually fighting."
You can still use all the same macro options (however, you cannot set options for each individual spell, only for the whole sequence. Sorry.)
/castsequence [combat] Frost Nova, Blink
"Eh, I was just kidding about that combat stuff. Ok, so what happens if I Frost Nova, and decide not to Blink away? The next time I want to Frost Nova, it'll be stuck on the 'Blink' setting?"
Not a problem. We'll use the new "reset" setting. Since Frost Nova has a cooldown of 24 seconds normally, we'll set the sequence to reset after 24 seconds of non-use.
/castsequence reset=24 Frost Nova, Blink
The first time you click your macro, it will Frost Nova. If you decide not to Blink, after 24 seconds it will reset back to Frost Nova. Since Frost Nova's cooldown also happens to be 24 seconds, it'll be ready to use again. Brilliant!
"So, that reset timer will always reset after 24 seconds no matter what?"
Not quite. It is more of an 'idle timeout' feature. If you don't hit that macro *at all* for the duration of the reset timer, it'll reset. But if you kept spamming the macro, each keypress would refresh the reset timer, even on failed spellcasts. So you couldn't do something like /castsequence reset=30 Blast Wave, Arcane Explosion, Arcane Explosion, Arcane Explosion, Arcane Explosion because it would never reset back to Blast Wave unless you left it alone for 30 seconds straight.
"Ok, that's great and all, but I'm actually a warlock, dude."
Of course you are. Well, as a warlock, I'm sure you cast the same 3 DoTs over and over again. Now you can set a sequence for those and save button space.
/castsequence Corruption, Immolate, Curse of Agony
There you go, now you can just push that button three times and cast all three DoTs.
"But what if it dies before I finish casting all three? I'm stuck at the end of the sequence again, and I don't wanna set no timer!"
That's ok, we can use the other options. If you set 'reset=target' then any time you change targets, it will reset the sequence back to the beginning. You can also set 'reset=combat', and the game will reset your sequence any time you leave combat. If you use the '/' operator (remember it, from earlier?) you can combine reset options!
/castsequence reset=combat/target Corruption, Immolate, Curse of Agony
There, now any time you change targets (like, if the old target is almost dead and you want to start on a new one), or any time you leave combat (perhaps the critter died before you finished casting all the dots), it resets your sequence for you, leaving you ready to start over.
"What if I want to manually reset my sequence, eh?"
Well, you can add in a modifier to do a reset, like so:
/castsequence reset=combat/target/shift Corruption, Immolate, Curse of Agony
Now, if you hold down the shift key while you hit your macro, it will automatically reset the sequence back to the beginning and cast Corruption.
"Ok, great, I think I got it now! Gimme a sec to set my new macros..... done!"
Excellent, I'm glad I could help.
"So... wanna duel?"
Um, no thanks, I don't duel warlocks.
"Bah, you wuss."
Random Example Macros
General Macros:
---------------
/use [target=player] Heavy Netherweave Bandage
This macro will always use Heavy Netherweave Bandages on yourself, regardless of target.
Warrior Macros:
---------------
Intercept/Charge: It either charges/intercepts, or puts you into the correct stance.
/cast [nocombat,stance:1] Charge; [combat,nostance:3] Berserker Stance; [nocombat,nostance:1] Battle Stance; [combat,stance:3] Intercept
Generic Stance Macro: Replace < * Stance Ability> with whatever you want.
/cast [stance:1] <Battle Stance Ability>; [stance:2] <Defense Stance Ability>; [stance:3] <Berserker Stance Ability>
Overpower: A very simple Overpower macro
/cast [stance:1] Overpower; Battle Stance
Mage Macros
---------------
Pyro/Fireball: Casts Pyro if you're not in combat (as an opener), Fireball otherwise.
/cast [nocombat] Pyroblast; Fireball
Polymorph Focus: Will always polymorph your focus target.
/cast [target=focus] Polymorph
Priest Macros
---------------
Greater Heal on current boss target, or on current target.
/cast [target=targettarget, help] Greater Heal; [help] Greater Heal
Hunter Macros
---------------
Feed/Mend Pet based on combat status.
/cast [combat] Mend Pet; [nocombat] Feed Pet
/use [nocombat] <food item>
Conclusion
Creating Macros can greatly improve your game-playing efficiency and with the changes to 2.0...they've made some changes...but by no means have they nerfed it beyond usefulness!
Acknowledgments
I, of course, must acknowledge Neuro from Medivh for compiling this excellent post. In addition, I'll acknowledge his acknowledgments:
I'd like to take this time to give thanks to the following people:
Cogwheel, for helping collect and promote the suggestions of the UI community.Iriel, for always helping clarify and collate information posted on the forum.
Cairenn for pushing so hard to get Mod writers into the BC Beta, and supporting them 100% with feedback and webspace.
To all the Mod Authors and Mod Websites for their wonderful and thankless work to improve the life of the other 99% of the playerbase.
And most importantly, SLOUKEN, the best dev a modding community could ever ask for. Without you, we'd be reduced to the standard interface for all eternity.
Transformers Movie Trailer
December 21, 2006 | 4 Comments
Lately I've noticed increased traffic to my Transformers Teaser Trailer post and became extremely excited. Could this mean another trailer? I spoke with Zach last night and he found it over at Yahoo!
Zach writes:
There seems to be a pretty strong human component to this film which is important to me. Additionally, the trailer indicates a good strong amount of action. This is expected and welcome in a Michael Bay film (see Bad Boys). Finally, I really like how the transformers look. The special effects are spot on.
I find myself convulsing from the sheer excitement I have for this movie. I was a huge Transformers cartoon fan when I was little (remember way back then?) and the toys are still awesome. Causing particular excitement is this (somewhat blurry) shot of Bumblebee...he looks simply awesome:
In the trailer, the lines: "Some have come to save us. Most have come to destroy us." make me super-giddy. The trailer was ballsy and I'm definitely counting down the days till opening night (July 4th, 2007)!
Note: the Decepticon at the top of the post is Blackout.
Sharing Presentations with SlideShare
December 15, 2006 | 1 Comment
SlideShare, a new site for viewing, posting, and commenting on presentations (found via Ajaxian) gives me a warm fuzzy feeling inside! I've seen many presentations posted on blogs (heck, I do it) that point at either Microsoft .PPTs or PDFs. And good lord, how I hate pdf slides.
Its the YouTube for presentations, providing an easy way to browse and post presentations in a community-centric interface. In fact, the SlideShare interface is extremely similar to YouTube in its page structure and its sharable content features (embedding and linking). I dare-say its a copycat. But...a copy-cat that makes me happy. :)
I'll be posting some example slides as soon as I can upload them!...Things seem a bit buggy at SlideShare right now. I'm hoping that they solve that stuff soon...a lot of broken pages/script timeouts. Chances are they weren't prepared for the load that Ajaxian has given them.
UPDATE: Here's the slides I posted a little while back from my database guest lecture.
jQuery 1.0.4 Released
December 13, 2006 | Leave a Comment
John Resig over at jQuery has announced the release of jQuery 1.0.4 to the public! As usual, there are bug fixes...plus a bit more. His focus for this patch was adding improvements to jQuery's Ajax functionality. Below is a list of all the updates:
- Tons of bug fixes (Full List)
- Extensions to $.ajax(): $.ajax accepts additional options: beforeSend, async and processData; returns XMLHttpRequest to allow manual aborting of requests, see docs for details.
Example: Add extra headers to an Ajax request using beforeSend
JavaScript:-
$.ajax({
-
type: "POST",
-
url: "/files/add/",
-
beforeSend: function(xhr) {
-
xhr.setRequestHeader( "Content-type", "text/plain" );
-
},
-
data: "This is the contents of my text file."
-
});
Example: Perform a synchronous Ajax request.
JavaScript:-
// Get the HTML of a web page and save it
-
// to a variable (the browser will freeze until the
-
// entire request is completed).
-
var html = $.ajax({
-
type: "GET",
-
url: "test.html",
-
async: false
-
}).responseText;
-
-
// Add the HTML into the page
-
$("#list").html( html );
Example: Sending a JavaScript object using processData.
JavaScript:-
// The data to send to the server
-
var params = {
-
name: "John",
-
city: "Boston"
-
};
-
-
$.ajax({
-
type: "POST",
-
url: "/user/add/",
-
processData: params
-
});
Example: Aborting an Ajax request after a specific delay in time.
JavaScript:-
// Perform a simple Ajax request
-
var req = $.ajax({
-
type: "GET",
-
url: "/user/list/",
-
success: function(data) {
-
// Do something with the data...
-
// Then remove the request.
-
req = null;
-
}
-
});
-
-
// Wait for 5 seconds
-
setTimeout(function(){
-
// If the request is still running, abort it.
-
if ( req ) req.abort();
-
}, 5000);
-
- AJAX module: The public $.ajax API is now used internally (for $.get/$.post etc.); loading scripts works now much more reliably in all browsers (with the exception of Safari, which is a work in progress).
- New global Ajax handler: ajaxSend - called before an Ajax request is sent.
Example: Add extra headers to all Ajax requests using the ajaxSend event.
JavaScript:-
$(document).ajaxSend(function(xhr){
-
xhr.setRequestHeader("X-Web-Request", "MySite.com");
-
});
-
- Extensions to global Ajax handlers: ajaxSend, ajaxSuccess, ajaxError and ajaxComplete get XMLHttpRequest and settings passed as arguments.
Example: Prevent any POST requests that are sending too much data.
JavaScript:-
$(document).ajaxSend(function(xhr,options){
-
if ( options.type == "POST" && options.data.length> 1024 )
-
xhr.abort();
-
});
Example: Show a special message for requests submitted using an Ajax POST.
JavaScript:-
$("#dataSent").ajaxSend(function(xhr,options){
-
if ( options.type == "POST" )
-
$(this).show();
-
});
-
- Extensions to event handling: pageX and pageY are available in all browsers now. (IE does not provide native pageX/Y).
Example: Have a tooltip follow a user’s mouse around the page.
JavaScript:-
$(document).mousemove(function(e){
-
$("#mousetip").css({
-
top: e.pageY + "px",
-
left: e.pageX + "px"
-
});
-
});
-
- Improved docs: $(String) method has now two separate descriptions, one for selecting elements, one for creating html on-the-fly.
- FX module: Most inline styles added by animations are now removed when the animation is complete, eg. height style when animating height (exception: display styles).
What Code DOESN’T Do In Real Life
December 6, 2006 | 2 Comments
If you're not a programmer, have you ever sat in awe as programmers on "the Big Screen" (*cough* movies *cough*) dazzle you with their uber-typing as they construct 3D blocks of code that animate around the screen and reflect onto the programmer's face? OR if you are a programmer, have you ever watched a movie and wanted to puke due to the inaccuracy of what the movie industry claim programmers do?
Yeah, we work with complex stuff that random passerby don't understand...but holy balls does Hollywood have it wrong.
Matthew Inman at Drivl.com debunks the Hollywood fluff in 10 well thought out and quite humorous points:
- Code does not move
- Code is not green text on a black background
- Code has structure
- Code is not three dimensional
- Code does not make blip noises as it appears on the screen
- Code cannot be cracked by an 8 year old kid in a matter of second
- Not all code is meant to be cracked
- Code isn't just 0100110 010101 10100 011
- People who write code use mice
- Most code is not inherently cross platform
I simply listed the headers of each point, to get the full dose of sweet debunking action check out the full article.
My favorite description of them all has to be the 10th item: Most code is not inherently cross platform which reads:
Remember in Independence Day when whatshisface-math-guy writes a virus that works on both his apple laptop AND an alien mothership? Bullshit!
If real life were like film I'd be able to port wordpress to my toaster using a cat5 cable and a bag of glitter.
Hats off to you Mr. Inman.
Slashdot: Would You Trust RFID-Enabled ATM Cards?
December 6, 2006 | Leave a Comment
Slashdot posted an article on RFID-Enabled ATM Cards by one of its readers, race_k2. What is commonly the case, the comments at Slashdot tend to be more entertaining and occasionally more informative than the article itself. This article is highlighting some of the comments that have stood out to me thus far. But first, here's some quotes from the article:
The Article
race_k2 writes:
"As a regular Slashdot reader I've followed the development and implementation of RFID devices in many ubiquitous areas such as clothing, passports and even people. Given that our environment is becoming increasingly tagged, often without our knowledge or consent, and can be monitored or hacked by anyone with the proper hardware, skills and motivation, I viewed the recent arrival of two new ATM cards containing RFID chips with skepticism. While this feature may bring the increased convenience of speedy checkouts, it is not something I am completely comfortable using and decided that the safety of my personal data was more important than the ability to buy things quickly. The vulnerable nature of RFID security coupled with recent, though unrelated, reports of a Possible Security Flaw In ATMs make me seriously question whether the marriage of wireless data transfer with personal finance is a wise application of technology."
[...]
"My concerns were well received by representatives at Chase and after checking with a supervisor the rep said that a new chip-less card was on its way. On the other hand, the people at HSBC could not fathom why I would not want to have this fantastic new technology in my pocket everywhere I go. The customer service agent said that cards without RFID tags were simply unavailable and I could opt to not use the feature at checkout. The concept of unauthorized reading of the ATM card by a mobile RFID scanner fell on deaf ears and questions regarding the level of security on the RFID ATM card chips were not answered to the technical level that I was hoping for. The stated 'Don't worry, we use encryption' did little to allay my concerns.
Is the unauthorized access of sensitive personal data on an ATM card chip by a home-brew RFID scanner a real possibility? Will we have to worry about the spread of RFID viruses to our back pockets and purses? Finally, are there any passive methods to permanently inactivate an RFID chip without having to resort to its removal or destruction?"
My Thoughts
Immediately upon reading the above article, I was irritated by the fact that these card companies aren't even educating their customer service departments appropriately in order to field questions be people who are genuinely scared (and rightly so) of RFID chips in conjunction with finance. When race_k2 discussed his experience with HSBC, the fact that his questions were whizzing over the rep's head and received dumb, uninformative answers is sad. Perhaps it was that specific representative...but I doubt it.
When companies (and governments) adopt such a risky technology in their product and don't include an opt-out should publicly field questions in a highly visible 'arena' to bring the issues out in the open! This would help the company decide on the appropriate direction they should go with RFID as there may be issues they are avoiding due to ignorance; this would also help the consumers make decisions on the company immediately rather than wasting both the customer's and the company's valuable time.
That's never going to happen...but it'd be nice :D Anyways...on to the comments:
The Comments
The article asked its readers for their opinions on the following questions:
- How safe and secure are the RFID chips that are being embedded in debit and credit cards?
- To add another issue on to the fire: Would you trust RFID technology on your cards?
Here are a couple responses that I found interesting:
These two comments were regarding the disabling of the RFID chips themselves. I'd be curious to know how effective/successful these ideas are.
-
Ice Wewe writes:
Just wrap the card in Tin foil. You can keep the magnetic strip (assuming it still has one) uncovered so that you can still check-out the old way. That's the only non-destructive way I'm aware of for disabling an RFID chip.
-
brunes69 writes:
Nuke itAn RFID chip will fry in seconds in a microwave. It takes much longer than that to affect the plastic. And the magnetic stripe will not be affected at all, until the plastic starts to melt.
Putting the card in the microwave for 3-5 seconds should do the trick. The worst that can happen is you ruin your bank card, so just go to the bank and get another. They don't cost anything.
This post raised my eyebrow:
- value_added writes:
Funny ha ha, yes, but has anyone noticed that many science-fiction movies of recent years have included as a plot device one of the characters embedded with some sort of implant (in the brain, under the skin, etc.) or added to some common item (clothing, watch, pen, etc.) that was carried around? I recently watched Jonathan Demme's The Manchurian Candidate [imdb.com] on cable and it occurred to me that such a scenario doesn't have to involve a conspiracy of the highest order to be successful or involve a high-concept goal; unwitting or passive acceptance would work just fine, and the goal can be mundane but similarly insidious.
My guess is that monitoring technologies in various forms will increasingly become part of our daily lives. RFID chips, for example, seem destined to be everywhere [wikipedia.org], and while it's up to each of us to be as vigilant as the article's poster, the future will play out as a constant game of catch-up and workarounds for the select few in the know. Computers are part of our daily lives but knowledge of them is superficial at best. Should we expect the average person to have an inkling of how other technologies that come in smaller packages work?
Have you scanned yourself, lately?
A comment on security:
- arivanov writes:
Not surprised about HSBC. In fact surprising about some sense from Chase.
HSBC recently forced me to subscribe to the Verified by Visa marketing pseudosecurity garbageshiteware gimmick (the only one of cards I have that actually forced me to do so). During the subscription process I found out that the idiotic subscription interface does not maintain state with most non-mainstream browsers. In fact if you use Konqueror (or play around with your browser a bit) you can cruise through it with flying colours without it asking for verification information, passwords and the like. I was seriously tempted to go all the way and register a few cards for entertainment purposes, but end of the day decided not to.
So I tried to get the wankers which run the "HSBC Goodness Gracious Me" call center to give me a security contact and a reference to report the bugs. Guess what - they neither understood the concept of "Your credit card interface has a major security flaw", not could provide a contact. Still better then Amex though. Under similar circumstances 4 years ago when I tried to contact the Amex security dept with a similar bug they subscribed me to a mandatory 60 days of phone marketing and email marketing for good measure.
Frankly - they have no clue. Banking security at its best. Understanding is not required, BS and ISO numbers are.
And of course, a rather humorous post after a tool posts his opinion:
- The tool: Groo Wanderer writes:
I would, but everyone seems to forget that you can have RFID and a PIN or other second form of ID. I would have no problem as long as there was an OPTION for a second method of authentication to be applied.
Sure, it would cut down on convenience, but only a little, and would more than make up for it in added safety.
- The level-headed responder: writes:
Tell you what, why not post your card details here (including the three digits on the reverse), but NOT THE PIN, and we'll see how many of us can buy something with it.
Willing to stand by your statement? Are you sure you still don't have a problem with other people having access to your card data?
And the comment that is one of my biggest concerns regarding RFID chips in ATM Cards is as follows:
- inviolet writes:
With an RFID-enabled credit card, the credit card company is the first line of defense against fraudulent usage. The customer is only secondarily responsible, and in any event does not lose any cash or interest. So, you can be certain that the security system and the implementation will be sound.
With an RFID-enabled ATM card, all of that is reversed. A fraud will cause the customer to lose his or her cash and interest... and the customer must then fight with the bank to get them back. The bank has only secondarily responsibility, and therefore only secondary incentive, to get the plan right and to maintain the implementation. It's like a config.rc file with the wrong default value: loss-paid-by = customer.
It's a given that few people in any organization (banks or otherwise) actually understand security, encryption, or the very pertinent issue of "identification versus authentication". But even if Chase or whoever has done their research, the incentives for protecting customers from atm fraud are inherently perverse.
Taco Town
December 5, 2006 | 1 Comment
Here's one of my favorite Saturday Night Live commercials: Taco Town.
Simply awesome.
Guest Lecture: Application Design with Databases
December 4, 2006 | 2 Comments
I had the privilege of being a guest speaker at Plymouth State University's Database Management class. The focus of the lecture was regarding Web Application Design and how it relates to database integration. Here are the slides that were handed out and for those curious, here's the topics of discussion:
Topics:
- My Background
- My Project Background
- Application Design Process
- Analysis
- Language Selection
- Database Design
- Interface Design
- Development
- The Sweet Stuff
- Industry
- Where it was
- Where it is
- Where its going
- Stuff I've Learned
- Suggestions





