The Reason That The Arguments In Favor Of RealID Doing Exactly What Blizzard Wants It To Are Missing The Mark: a play in three acts.

DRAMATIS PERSONAE

BOB, a person who loves flowers.
ALICE, a person who grows flowers.
LINDA, a mutual friend who doesn’t really speak for either of them.

ACT ONE

BOB: Boy, it sure would be nice to have some roses around the house.
ALICE: Growing roses sounds like an interesting idea! I’ll see about it for next year’s garden.
LINDA: I can’t wait to see Alice’s roses!

ACT TWO

BOB: Hey, did you get around to planting those roses?
ALICE: I’m working on it! I think you’ll be really excited when you see them.

ACT THREE

ALICE: Hey Bob, here are your tulips!
BOB: These are great, but I was really looking for roses.
LINDA: Shut up! These are what Alice wanted to grow.
BOB: Okay, but they’re really not what I wanted OR what I asked for.
Alice is silent.
BOB: I guess Alice never actually SAID she was planting roses, and I should be grateful for getting anything at all, but I’m just not as fond of how tulips look.
LINDA: Just don’t use them if they’re not what you wanted.
BOB: That’s not… it doesn’t have to be black and white. I’m just saying, I was hoping for roses, not tulips.
LINDA: Why can’t you get it into your head that you don’t always get what you want?
BOB: Okay then.

Exeunt omnes.

~FIN~

 

You may be aware that I’m a professional web programmer and WordPress theme author. As such, I tend to tinker around with bits and bobs related to web development and WordPress, and occasionally my profession and my hobbies cross paths. In this case, I ended up writing a WordPress plugin for guild websites that displays current recruitment status in a sidebar widget.

You can download WOW Recruitment here. (It’s a ZIP file so that you can upload it directly into WordPress.) The plugin adds a widget to your sidebar options; if you have a widget-aware sidebar (go to Appearance > Widgets to find out), you’ll be able to place it wherever you want in the sidebar. It also has an options page under Settings that allows you to dictate which classes and specs you’re currently recruiting. Normally, the widget will display each spec of a class separately (and in Blizzard’s color for that class). However, if you choose to recruit all specs of a class, the widget will simply display “[Class] (All)”.

I’m distributing the plugin as a ZIP file so that you can upload it straight to WordPress. Just go to the Plugins menu in the dashboard, click Add New, and then go to the Upload link at the top. WordPress will extract the ZIP file for you, and all you’ll have to do is activate the plugin, place the widget on your sidebar, and start drafting! (All of this is explained in the ReadMe file in the ZIP, just in case you don’t bookmark this post.)

Please feel free to download and share WOW Recruitment. Let me know what you think in the comments!

 

Originally posted here on 11/13/08.


Since Blizzard released Achievements in patch 3.0, it’s become more attractive to pick up vast quantities of mounts and vanity pets. However, the more mounts or pets you have, the harder it is for the traditional macros to summon one randomly; /castrandom works well for four or five, but when you have 75 pets you start running into the 255-character limit.

Fortunately, Blizzard also implemented some new API calls in 3.0, among them CallCompanion(). This allows you to summon anything that the game classifies as a Companion – which, at the moment, are vanity pets and mounts. This makes it much easier to summon a random pet or mount.

Here are the macros you’ll need. Copy the text in bold into a new macro and you’ll be all set.

  • For vanity pets: /run c=GetNumCompanions("CRITTER");n=math.random(c);CallCompanion("CRITTER",n);
  • For mounts: /run c=GetNumCompanions("MOUNT");n=math.random(c);CallCompanion("MOUNT",n);

It’s almost too easy…

 

Originally posted on my other blog on 9/14/08. Archives are missing there.


Healing in groups requires three skills: awareness, or the ability to keep track of at least five health bars (and mana bars, if you’re a Draenei like Theande and have an ability that restores mana to your whole group); judgment, or the ability to triage (determining who needs to get healed first); and speed, or the ability to get the heal to the person who needs it quickly. The first is a skill that can be developed (and honed with a well-designed UI). There are addons for the second, although I don’t use them; a priest who has trained her judgment is far more effective than a priest who uses addons. Neither the first nor the second, though, can be improved by the use of macros.

Not so speed. Since patch 2.0, macros have offered a way to significantly increase the speed of healing without sacrificing either of the first two skills. The key is that macros allow you to append modifiers to the spells you cast; although they don’t affect the speed at which the spell is cast, they can significantly improve the speed at which you start casting.

Here’s a sample macro, for Renew:

#showtooltip Renew
/cast [mod:alt,target=player][target=mouseover,help][ ] Renew

To implement this macro, go to your Macros window (of course), create a new macro, use the question-mark icon, and title it Renew. Then paste in the “code” above. The question-mark icon is important because it allows us to change the icon (and tooltip) on the fly; it’s not really used to its full extent here, but it will be later.

The first line of the macro, “#showtooltip Renew”, tells WOW to use the Renew icon for the macro and show the tooltip for your highest rank of Renew when you mouse over the macro’s icon. You can do this with any spell in your spellbook; it doesn’t have to have any connection with what spell the macro actually casts.

The second line is where the power of the macro lives. The basic line is “/cast Renew”. This simply casts the highest rank of Renew in your spellbook. If your macro were simply

#showtooltip Renew
/cast Renew

the macro would, on your keybar, behave exactly the same as if you’d dragged the spell down from your spellbook. It’s the modifiers – the bits in brackets – that make this macro special.

The first modifier is “[mod:alt,target=player]“. The mod: modifier tells the macro what modifier key to look for. In this case, it’s Alt, which is the default self-cast modifier key. When you hold down Alt, this section of the macro goes off. The target= modifier tells the macro what you want it to target when it casts the spell. This becomes even more important in the next section.

This modifier, then, tells the macro “when I’m holding down the Alt key, target me”.

The second modifier is “[target=mouseover,help]“. Again, target= tells the macro what you want it to target when it casts the spell. In this case, target=mouseover means to cast the spell on whatever unit your mouse cursor happens to be hovering over. This can be the character itself (or an NPC), or the character’s portrait if you have the character selected or are in a group. The help modifier tells the macro to only do this if the unit you’ve moused over is one that you can cast helpful spells on. If you’re mousing over an enemy unit, this modifier won’t go off.

This modifier tells the macro “if I have my mouse cursor over a character or character portrait, and it’s friendly, target that character”.

The third modifier is the simplest: “[ ]“, two brackets with a space between them. This is the “default” modifier; it tells the macro “if none of the other modifiers are in effect, do exactly what you would do if I were casting directly from my spellbook”.

Keep in mind that the modifiers go in order; the macro parser will test the first modifier, and if it fires then it’ll ignore the rest. If it doesn’t fire then the parser will move on to the second modifier, and so on. So you have a macro that says “if I’m holding down Alt, cast Renew on me; otherwise, if I have my mouse hovering over a friendly character, cast Renew on that character; otherwise, cast Renew as though you weren’t a macro at all.”

This macro solves a problem I had a lot when I was healing. My tactic was to hit the spell’s hotkey and then click on the portrait of the character I wanted to target; this worked most of the time, but some of the time the cooldown or global cooldown wasn’t up, and instead of just casting, my click would select the character instead. If I didn’t notice this right away, all my heals started going to that character, which was problematic when I’d just wanted to toss a quick Renew on one of the DPS. By switching to mouseovers, I’ve reduced the amount of clicking I need to do almost to zero – and I never need to have anyone in the party targeted, leaving me free to target the mob we’re attacking.

Here’s another macro, which is a little more complex but really does the same thing:

#showtooltip [mod:ctrl]Mass Dispel; Dispel Magic
/cast [mod:alt,target=player][nomod:ctrl,target=mouseover,exists][nomod:ctrl] Dispel Magic;[mod:ctrl]Mass Dispel

This is where #showtooltip shines; it displays different spells in the icon and tooltip of the macro depending on whether I have the Ctrl modifier key held down. The spellcasting line does the same thing; notice the nomod: modifier, which tells the macro parser to use this option unless the specified modifier key is held down. Notice also the exists modifier, which is like help but asks whether there’s any creature or character under your mouse cursor, not just one that’s friendly. Finally, notice the semicolon (;) after “Dispel Magic” in the spellcasting line; you use the semicolon to separate spells. “If any of these modifiers are true, cast spell X; otherwise, cast spell Y.” In this case, we don’t need “[ ]“, because “[nomod:ctrl]” serves the same purpose. (If we had “[ ]“, Mass Dispel would never go off. Alternately, we could put the “[mod:ctrl]Mass Dispel” section first, and then “[ ]” would be appropriate before Dispel Magic instead of “[nomod:ctrl]“.)

 

Originally published here on 4/6/2008.


Yesterday, I wrote up an quick-and-dirty guild roster for my World of Warcraft guild on Boulderfist. There’s no styling at all; it’s just “here, output this table”. But it works just like I want it to: there’s a back-end script that fetches the data from the Armory once every night and feeds it into a mySQL database, and then a front-end page that fetches the data from the mySQL database on demand.

I guess the next step is to style it up and add AJAX; I’ve already got all the data pulled from the database, and it’s not changing (except once a day at midnight), so why not save myself some database calls and have the page update dynamically?

The whole thing has been a nice refresher on PHP (I wrote a very basic roster in PHP a couple months ago, and yesterday’s project was actually built on that, which is why I didn’t just do it in Ruby on Rails, my pet language/framework at the moment) and on web programming. I should do stuff like this more often.