Don’t get me wrong – Star Wars: The Old Republic gets a lot of things right. The voice acting, companions system, storylines, and combat are top-notch (although I’m pretty sure the Republic Trooper’s basic intro storyline was lifted from Die Hard 2). But there are a lot of things SWTOR gets wrong too – aspects of the game that very, very nearly break it.

  • No way to disable auto-self-cast. If you use a healing ability or a buff and you don’t have a friendly target selected, the ability gets used on you. Period. This is merely frustrating in solo play – for instance, when you’re trying to heal a tank companion – but it’s nearly game-breaking in groups, since of the many ways MMOs have given us to heal people, “1) manually select heal target. 2) cast healing spell.” is the least efficient and most clumsy.
  • Very limited ways to see your target’s target. This is largely a tank-focused complaint; it’s very difficult to see what your target has selected as its target. (It’s true that there’s a circle on the ground under your target’s target, but that becomes almost impossible to locate when you have more than three participants in a fight.) Not being able to tell what your target is targeting makes it exponentially more difficult to make sure you’re keeping aggro on everything – again, especially in large melees, when you can’t necessarily tell which direction each mob is facing.
  • No way to rearrange the user interface. Largely a matter of preference, yes, but this makes my list because by default, the chat box overlaps the left-hand action bar on a widescreen monitor. Ugh.
  • Poor event-collision detection. Here’s what I mean: during combat, you see that your tank companion is handily dealing with all of the creatures attacking you, so – since the quest calls for you to search the corpse at your feet – you decide to get that done with while your tank is finishing off the rest of the NPCs. You right-click the corpse, wait for the “Gathering…” bar to complete, and then, when it finishes, you get an error message: “Cannot perform this action while fighting.” The game doesn’t check when you start the action; it doesn’t check during the action; it only checks at the end of the action. This means that it’s not only possible but easy to waste quite a bit of time mistakenly gathering during combat because the game won’t tell you you can’t until the gathering “cast” is over. But this leads into…
  • Prohibiting user actions during combat. User actions like gathering from nodes, opening chests, or interacting with quest objects. This comes very close to actively encouraging griefing and node-stealing – because if you’re fighting the mobs around a node and someone else decides to come and gather it, there’s literally nothing you can do about it except ask them to please not. The game will not let you let the tank deal with the mobs so you can pick up the Dielectric Stem or open the Security Chest.
  • An Auction House system that borders on actively hostile to players. Want to buy something from the auction house? I hope you can guess which broad category BioWare’s decided to place it in, and then what narrow category it goes in within the broad category – because you can’t even search by name until you’ve selected a primary and a secondary category. This not only makes buying difficult, it makes selling difficult, because it adds unnecessary extra steps to the process of finding out what the current average price is. (It’s especially difficult for selling because very often the seller’s reaction is “I don’t know what the hell kind of item it is, I just want to see what I can get for it!”.)
  • And finally, no same-sex romance options. Really, BioWare? You thought this would fly?

A final note, by the way: I’ve seen people saying “well, you can’t expect SWTOR to have all the features in it at launch that WOW has seven years in.” While I disagree – the state of gaming is the state of gaming regardless of whether the game was released in 2004 or this year, and you don’t judge a car company’s new line against the Model T – I’m not comparing these features with WOW, to be honest.

I’m comparing them with Rift.

And Rift got them right at launch, nearly a year before SWTOR shipped. (Even the last one! Check out Kira Thanos and Uriel Chuluun. ♥) This stuff is ridiculous, BioWare. Fix it.

Anything I’ve missed or forgotten? Leave a comment and remind me!

 

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!

 

The RSS2 feed is working again. This means that if you had subscribed to this blog’s feed but were not seeing my posts in your favorite blog reader, you should be seeing them again. If you’re not seeing them, please leave me a note.

 

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.