The Priest In Question

Tuesday, February 5, 2008

Embrace the Shadows: The First Choice

Embrace the Shadows will be a guide of sorts through creating, levelling, and playing a Shadow Priest. I'll be making the assumption that you are not making your new character on a server with higher levelled mains, so I won't go into twinking or AHing expensive gear. (Talk to Og for that. =P ).

The first choice you'll be facing on your quest to become one of the darkened few will be that of race. Now, obviously, I'm going to tell you to choose Troll. Best dance, best jokes, best language, etc. We're amazing, I know. =P

To be honest, of all classes, choice of race matters most for Priests. This is because in addition to racial abilities shared by all members of a given race, priests have class racials. Now, between that and the hybrid nature of the priest class, each race needs a bit of an introduction.

Alliance (BOO!)-
Human - Humans have pretty lackluster class racials. Feedback is a short-duration personal buff that burns mana from attackers who hit the priest with spells and Desperate Prayer is a self-only instant cast heal on a ten minute cooldown. The Human racials however, are pretty good for PvE healing priests, specifically The Human Spirit which passively increases Spirit by 5%. Diplomacy is also nice, increasing reputation gain by 10% which makes the hardcore TBC rep grinds slightly less daunting. For Shadow Priests, Humans are a subpar choice for race. Desperate Prayer is a Holy Spell and therefore not castable in Shadowform, and Feedback is generally bad for all types of priests, although the shadow damage component is somewhat nice for it's ability to proc Shadow Weaving and Blackout on the spellcaster who hit you. If you have to be Alliance, I'd suggest a different race.
Dwarf - Prior to TBC, Dwarves were the race for a PvE healing priest. While they share Desperate Prayer with the Humans, Fear Ward was what made Dwarves so sought after. However, in patch 2.3, Fear Ward was changed to a trainable priest spell and in it's place Dwarves were given Chastise, a Holy Spell that incapacitates the target for 2 seconds. Dwarven Stoneform, shared by all Dwarves, is a strong spell for PvP. It removes all poisons, diseases, and bleeds and makes the dwarf immune to them for 8 seconds. For a PvP Shadow Priest, Dwarves would be a solid choice, but for PvE, there are better.
Draenei - Draenei are one of my recommended races for a PvE Shadowpriest. This is because of two things. First, they have a 1% hit aura with spells which lowers the need for hit rating even further. More importantly though is one of their class racials, Symbol of Hope, which returns about 1000 mana to everyone in your party over 15 seconds. With those two racials, Draenei are a solid choice for casual raiding. Not having to aim for gear with lots of hit rating on it and being able to supplement a low +dmg Vampiric Touch with SoH make draenei very strong at early raid gear levels. In addition to SoH and the hit aura, Draenei get Gift of the Naaru, a free renew on a 3 minute cooldown, and Chastise, which they share with the dwarves.
Night Elf - I never thought I'd say this, but I'm recommending that new PvE Shadow Priests who plan on raiding end game content choose Night Elves. At the Tier 6 level (and even late Tier 5), a Night Elf shadow priest will always out damage any of the other alliance races because of their once worthless class racial, Starshards. Starshards previous to patch 2.3 was a joke. A channeled Arcane spell that did barely any damage, its only use was to draw an Interrupt to allow a PvP priest to cast Shadow/Holy spells safely. After the patch however, Starshards has been changed to an instant cast DoT with a 15 second duration and a 30 second cooldown. This free damage alone is worth more from a pure PvE standpoint than any of the other race's spells. Not to mention Shadowmeld, the Night Elf racial which allows for stationary stealth, which is amazing for people who find themselves going AFK frequently in dangerous areas. All these points actually completely overshadow the new and improved Elune's Grace, which lowers chance to be hit by melee and ranged attacks by 20% (Previously, this was an increased chance to dodge, which let Warriors go to town on Night Elf priests).

Undead - With Will of the Forsaken, the undead racial which removes fear, charm, and sleep effects, in addition to Devouring Plague, a high-cost DoT that returns health equal to damage dealt, the Forsaken are a strong choice for PvP Shadow Priests. Their other class racial is Touch of Weakness, which is also more PvP-focused. It is a self-buff that causes the first person to attack the priest to take a small amount of shadow damage and be afflicted by a debuff reducing damage caused by 35 for 2 minutes. The damage reduction isn't that great, but the shadow damage component, like Feedback, can proc Shadow Weaving and Blackout.
Blood Elf - Like Draenei for the Alliance, I believe Blood Elf is an moderately good choice for a Kara-level raider. Mana Tap/Arcane Torrent (Blood Elf racials) allow for a small burst of free mana every few minutes. For class racials, Blood Elves got kind of gypped. Consume Magic is another possible method for Blood Elves to get some free mana, but it removes a random buff on the priest in exchange for a small amount of mana. Now, if you get lucky and consume a renew with only 1 tick left, then great, but just as likely is consuming your Prayer of Fortitude and losing an expensive buff and gaining not even as much mana as it costs to cast. They also share Touch of Weakness with the Undead. Overall, Blood Elves are a mediocre choice for either PvP or PvE.
Troll - Easily the best race in the game, there is no reason to ever not be a troll. Seriously though, I personally recommend Trolls as the best race for pure PvE Shadow Priests. The key here is the Troll racial, Beserking. Beserking increases haste by up to 30% based on health at the time of casting. A timely Shadow Word: Death can drop your health just long enough to pop Beserking and your trinket for a nice bit of burst on a boss fight. Troll's priest racials aren't amazing for PvE, but are pretty nice defensively for PvP. Shadowgaurd is a shaman's lightning shield, only with shadow damage and therefore chance to proc Shadow Weaving and Blackout (I'd also like to note that on some PvE fights, Shadowgaurd can give you free dps on the boss because AoE spells will proc Shadowgaurd on the boss). Their other priest racial is Hex of Weakness, which is the same debuff as applied by Touch of Weakness, but targettable and which also reduces effectiveness of heals on the target by 20%.

Phew, that was longer than I expected! To wrap it all up, I'll just restate my recommendations for PvP and PvE per faction. In my opinion, Alliance PvPers should choose Dwarf while PvEers should choose Night Elf and Horde PvPers should choose Undead with PvEers choosing Troll. However, I'll be the first to tell you to never choose a race that you'll hate specifically because of powerful racial abilities. You'll never have fun with your priest if you rolled a Night Elf even though you hate the race with a passion just because of a few dps increase in 70 levels and 3 tiers of dungeons.

Saturday, February 2, 2008

Blog-roll, please...

So I recently got my first bit of blog related email and it was from someone I for whom I have a high amount of respect. He made a request of me, and I've decided to go ahead and do it.

This post is some really jury-rigged Javascript/CSS to make a collapsible blogroll work in Blogspot. I understand you funky Wordpress people actually have plugins and whatnot to make blogroll-ing easy, but us Blogspotters have very little other than a straight-up list to work with. The basic list isn't even that nice looking either.

I'll start by saying that I wrote this mainly to keep myself from completely forgetting how to mess with Javascript and CSS. To that end, I ignored a few shortcuts I could probably have made in order to stick with those two methods of showing/hiding content. This led to a messy but workable solution that I'm happy with myself, but could be complex for others to try to adapt. If you're interested in what's going on in that little sidebar and would like to emulate it, you're welcome to read on.

The Idea
A few weeks back I looked at Trollin's Big List O'Blogs and was irritated that I found myself checking and reading tons of blogs every day (sometimes multiple times per day...) and yet on my own blog, I didn't mention any of them. Now obviously, to correct this, I could just link to every single one of the blogs I read. However, I worked at my school for two and a half years building/maintaining a few very intricate ASP-based websites, so I'm a bit of a stickler for clean-looking pages, so a list of blogs a mile long wasn't sounding great to me.

So does that mean I have to exclude some blogs from my blogroll? No, unacceptable. I couldn't bring myself to read a blog, be entertained by it, and not link to it. It's just not in my character.

I noticed that Kestrel has an awesome little category thing going on in his blogroll. He's got little expandable sections for 5-star blogs, priest blogs, druid blogs, etc. I love it. It's the perfect solution to my problem. I can link to all the blogs I read and not have my sidebar be 12 miles long.

However, Kestrel uses Wordpress and that category thing is probably a plugin. Blogspot is not quite hip to the plugin craze, so I'm going to have to come up with something to make it work. I notice Blogspot allows CSS/Javascript in it's little container-based configuration screen (Blogspotters, you know what I'm talking about. Others... be thankful you don't). With that allowance, along comes...

The Brainstorm
CSS has a nifty little attribute that can be attached to absolutely any object called "display". Many of you that have messed with themes and/or skins have probably seen it. It has more than a few uses, but one of them easiest is simply to hide content by changing the display attribute's value to "none". If "display:none" is set, then whatever is inside that object is invisible on the page.

This is the part where it gets confusing so if you don't want to read about my geeky HTML ramblings, skip the rest of this and jump to the "Solution" section a little ways down. For anyone who enjoys HTML and tricking it into doing fun things, please, read on.

The question is, how do you change the display attribute of the links that you are showing and hiding when the reader opens the page and looks at the blogroll? In comes Javascript. Javascript can get kind of crazy (I know as much if not more than most), but it does have it's uses, and I found one. What Javascript lets me do is write a set of instructions that are performed under certain circumstances (a method, or function).

So now I know how I'm going to show/hide links based on category, but how do I set up categories? Well, at the beginning of the whole thing, I decided I was going to stick with HTML/CSS/Javascript for the entire process of getting this blogroll to work. To that end, there's only one place to store information about a tag, and that's in it's class. The class of a tag is a little definition of what kind of information is held inside the tag. For example, the class of the tag that holds your whole sidebar likely has something to do with "sidebar" and your About Me section is probably in a tag with "About" in it's class. Well, in this case, I'm going to make the classes of my link tags be really weird. I'm going to set up shortened versions of my categories and append them on to the end of the class name for the blogroll so that the Javascript can figure out what categories a link is in. I know that was hard to comprehend, I can't really come up with words to explain it very well. It's easier to understand with an example. In my case, I'm dividing my blogs up into class categories, so my "shortened categories" are like "dru" for druid, "pri" for priest, "lock" for warlock, etc. I also used "star" for recommended reading and "misc" for miscellaneous types. An example of the class name I used is "blogroll-pri-star" for a blog about priests that I happen to recommend as a good blog. Each category is divided by a hyphen so that the Javascript can easily search for the category in the class name.

Okay, so all the long-winded geek-babble is over. I apologize to anyone who was interested in my blogroll but didn't need/want to read any of that. With no further ado, I present

The Solution
All the links in my blogroll are contained inside DIV tags. DIVs are standard wrapper tags that I use to attach the display:hidden and class elements as needed. The standard format for any link in my blogroll is:

<div class="blogrolljs-[categories]">
<a href="[website]">[title of blog]</a>

For example, my entry for the aforementioned Kestrel's Aerie looks like this:

<div class="blogrolljs-star-pri-hunt-rog">
<a href="">Kestrel's Aerie</a>

Note the "[categories]" has been replaced with "star-pri-rog-hunt". This means that it's a Recommended Blog that includes Priests, Rogues, and Hunters. It's possible to append as many categories as you want to one link in this manner and the link will show up in each category.

Now, all those category names mean nothing without the buttons that show each category. This is because it's the buttons that actually define the categories and their "shortened" versions. The top row of my buttons looks like this:

<img src="all.png" title="All Blogs" onclick="changeDiv('blogrolljs','All Blogs')"/>
<img src="star.png" title="Recommended Reading" onclick="changeDiv('star','Recommended Reading')"/>
<img src="misc.png" title="Miscellaneous Blogs" onclick="changeDiv('misc','Miscellaneous Blogs')"/>
<img src="dru.png" title="Druid Blogs" onclick="changeDiv('dru','Druid Blogs')"/>
<img src="hunt.png" title="Hunter Blogs" onclick="changeDiv('hunt','Hunter Blogs')"/>
<img src="mage.png" title="Mage Blogs" onclick="changeDiv('mage','Mage Blogs')"/>

They're all basically images. The src attribute works exactly as normal, you put in the location of your image, self-hosted, imagebucket, blogspot-hosted, however you want. The title attribute is the text that comes up if someone hovers their mouse over the image. The onclick attribute is the Javascript. It points to the method called "changeDiv" that I wrote (and will show in a second). Inside the parentheses are two pieces of information. The first is the shortened version of the category that I used in the class names for the links. This has to be exact, and it doesn't include hyphens or anything. The category linked for the "All" button just tells the method to show all the blogs in a long list. Each of the other category buttons will show only the blogs who's class name contains the category listed. The second piece of information is the title for the category. Basically, what it says at the top of the list after you click on it.

The title is filled in by the Javascript into a special Div that I created to hold it. Basically, after the buttons for the categories but before you start listing blogs, include this Div:

<div id="blogroll-title"></div>

It's just an empty Div that the Javascript will automatically fill with the title based on the title given in the button's link.

Last but not least, the actual Javascript code I whipped up to hide/show the links by category.

<script type="text/javascript">
function changeDiv(name,title)
var d = document.getElementsByTagName('DIV');
for(var i=0;i<d.length;i++){
if(d[i].className.indexOf('blogrolljs') != -1){
if(d[i].className.indexOf(name) != -1){
d[i].style.display = '';
d[i].style.display = 'none';

So yeah, that's it. It doesn't look that long (it really isn't), but it does just what it should. It searches through all the Divs on the page, then when it finds a Div that's part of your blog roll it checks to see if it's in the category that's supposed to be shown. If it isn't, it gets hidden. If it is, it gets shown. At the end of the method, it changes the text of the Title Div to be the title that is given to it in the image button.

That about wraps it up. When I was asked to share my blogroll, I didn't originally plan to write this much about it, but I'm a little proud of what I did. More-so since at least one person likes it. =P.

If you have a WoW-blog and want to copy this, you're welcome to. Just put a little note somewhere that says I made it. That's all I ask.

Also, if you want to use it, but this was too in depth geek-wise and not in depth enough how-to-wise, then please tell me in the comments or in an email and I can write up a "How To: Trollin's Blogroll" post with steps you can follow.

EDIT: Woops! Thanks to Perpetuus Mos Guild for catching my error. I completely forgot to mention that you'll want to put something like:

<script type="text/javascript">
changeDiv('star','Recommended Reading');

At the end of the blogroll so that when the page loads, it automatically shows one of the categories instead of the whole list.